lib/lrama/grammar.rb in lrama-0.6.1 vs lib/lrama/grammar.rb in lrama-0.6.2
- old
+ new
@@ -22,11 +22,11 @@
attr_accessor :union, :expect,
:printers, :error_tokens,
:lex_param, :parse_param, :initial_action,
:symbols, :types,
:rules, :rule_builders,
- :sym_to_rules
+ :sym_to_rules, :no_stdlib
def initialize(rule_counter)
@rule_counter = rule_counter
# Code defined by "%code"
@@ -43,10 +43,11 @@
@eof_symbol = nil
@error_symbol = nil
@undef_symbol = nil
@accept_symbol = nil
@aux = Auxiliary.new
+ @no_stdlib = false
append_special_symbols
end
def add_percent_code(id:, code:)
@@ -134,10 +135,18 @@
def add_parameterizing_rule(rule)
@parameterizing_rule_resolver.add_parameterizing_rule(rule)
end
+ def parameterizing_rules
+ @parameterizing_rule_resolver.rules
+ end
+
+ def insert_before_parameterizing_rules(rules)
+ @parameterizing_rule_resolver.rules = rules + @parameterizing_rule_resolver.rules
+ end
+
def prologue_first_lineno=(prologue_first_lineno)
@aux.prologue_first_lineno = prologue_first_lineno
end
def prologue=(prologue)
@@ -232,10 +241,10 @@
private
def compute_nullable
@rules.each do |rule|
case
- when rule.rhs.empty?
+ when rule.empty_rule?
rule.nullable = true
when rule.rhs.any?(&:term)
rule.nullable = false
else
# noop