class ABNF::Parser::Compiler::RuleList

Attributes

rulename[RW]

Public Instance Methods

c_nl(token) click to toggle source
# File lib/abnf/parser/compiler/rule_list.rb, line 7
def c_nl token
end
coerce_alternation(rule) click to toggle source
# File lib/abnf/parser/compiler/rule_list.rb, line 10
def coerce_alternation rule
  if rule.is_a? Rules::Alternation
    rule
  else
    Rules::Alternation.new [rule], rule.abnf
  end
end
handle_rule(name, rule) click to toggle source
# File lib/abnf/parser/compiler/rule_list.rb, line 18
def handle_rule name, rule
  actual_rule = rule.inner_rule

  if rule.operator == '=/'
    original_rule = coerce_alternation rule_list[name]
    new_rule = coerce_alternation actual_rule

    alternatives = original_rule.alternatives + new_rule.alternatives
    abnf = alternatives.map &:abnf
    abnf *= ' / '
    actual_rule = Rules::Alternation.new alternatives, abnf
  end

  rule_list[name] = actual_rule
end
rule_list() click to toggle source
# File lib/abnf/parser/compiler/rule_list.rb, line 34
def rule_list
  compiler.rule_list
end