diff --git a/lib/propane/grammar.rb b/lib/propane/grammar.rb index 113f7c8..f14f230 100644 --- a/lib/propane/grammar.rb +++ b/lib/propane/grammar.rb @@ -44,7 +44,7 @@ class Propane elsif sliced = input.slice!(/\A(\S+)\s*->\s*(.*?)(?:;|<<\n(.*?)^>>\n)/m) rule_name, components, code = $1, $2, $3 components = components.strip.split(/\s+/) - @rules << Rule.new(rule_name, components, code, line_number) + @rules << Rule.new(rule_name, components, code, line_number, @rules.size) else if input.size > 25 input = input.slice(0..20) + "..." diff --git a/lib/propane/rule.rb b/lib/propane/rule.rb index a06147e..7778a12 100644 --- a/lib/propane/rule.rb +++ b/lib/propane/rule.rb @@ -10,6 +10,10 @@ class Propane # User code associated with the rule. attr_reader :code + # @return [Integer] + # Rule ID. + attr_reader :id + # @return [Integer] # Line number where the rule was defined in the input grammar. attr_reader :line_number @@ -28,10 +32,13 @@ class Propane # User code associated with the rule. # @param line_number [Integer] # Line number where the rule was defined in the input grammar. - def initialize(name, components, code, line_number) + # @param id [Integer] + # Rule ID. + def initialize(name, components, code, line_number, id) @name = name @components = components @code = code + @id = id @line_number = line_number end