lib/lrama/grammar.rb in lrama-0.5.10 vs lib/lrama/grammar.rb in lrama-0.5.11

- old
+ new

@@ -7,13 +7,13 @@ require "lrama/grammar/printer" require "lrama/grammar/reference" require "lrama/grammar/rule" require "lrama/grammar/rule_builder" require "lrama/grammar/symbol" +require "lrama/grammar/type" require "lrama/grammar/union" require "lrama/lexer" -require "lrama/type" module Lrama # Grammar is the result of parsing an input grammar file class Grammar attr_reader :percent_codes, :eof_symbol, :error_symbol, :undef_symbol, :accept_symbol, :aux @@ -146,11 +146,11 @@ end def prepare normalize_rules collect_symbols - replace_token_with_symbol + set_lhs_and_rhs fill_symbol_number fill_default_precedence fill_sym_to_rules fill_nterm_type fill_symbol_printer @@ -389,10 +389,15 @@ builder.rules.each do |rule| add_nterm(id: rule._lhs) @rules << rule end + builder.parameterizing_rules.each do |rule| + add_nterm(id: rule._lhs, tag: rule.lhs_tag) + @rules << rule + end + builder.midrule_action_rules.each do |rule| add_nterm(id: rule._lhs) end end end @@ -482,10 +487,10 @@ nterm_token_id += 1 end end end - def replace_token_with_symbol + def set_lhs_and_rhs @rules.each do |rule| rule.lhs = token_to_symbol(rule._lhs) if rule._lhs rule.rhs = rule._rhs.map do |t| token_to_symbol(t)