class KPeg::RuleReference

Attributes

arguments[R]
rule_name[R]

Public Class Methods

new(name, grammar=nil, args=nil) click to toggle source
Calls superclass method KPeg::Operator::new
# File lib/kpeg/grammar.rb, line 389
def initialize(name, grammar=nil, args=nil)
  super()
  @rule_name = name
  @grammar = grammar
  @arguments = args
end

Public Instance Methods

==(obj) click to toggle source
Calls superclass method
# File lib/kpeg/grammar.rb, line 412
def ==(obj)
  case obj
  when RuleReference
    @rule_name == obj.rule_name and @arguments == obj.arguments
  else
    super
  end
end
inspect() click to toggle source
# File lib/kpeg/grammar.rb, line 421
def inspect
  if @arguments
    body = "#{@rule_name} #{@arguments}"
  else
    body = @rule_name
  end
  inspect_type "ref", body
end
match(x) click to toggle source
# File lib/kpeg/grammar.rb, line 398
def match(x)
  if @grammar and @grammar != x.grammar
    x.switch_grammar(@grammar) do
      rule = @grammar.find(@rule_name)
      raise "Unknown rule: '#{@rule_name}'" unless rule
      x.apply rule
    end
  else
    rule = x.grammar.find(@rule_name)
    raise "Unknown rule: '#{@rule_name}'" unless rule
    x.apply rule
  end
end