Class: KPeg::RuleReference

Inherits:
Operator show all
Defined in:
lib/kpeg/grammar.rb

Instance Attribute Summary collapse

Attributes inherited from Operator

#action

Instance Method Summary collapse

Methods inherited from Operator

#detect_tags, #inspect_type, #prune_values, #set_action, #|

Constructor Details

#initialize(name, grammar = nil) ⇒ RuleReference

Returns a new instance of RuleReference.



392
393
394
395
396
# File 'lib/kpeg/grammar.rb', line 392

def initialize(name, grammar=nil)
  super()
  @rule_name = name
  @grammar = grammar
end

Instance Attribute Details

#rule_nameObject (readonly)

Returns the value of attribute rule_name.



398
399
400
# File 'lib/kpeg/grammar.rb', line 398

def rule_name
  @rule_name
end

Instance Method Details

#==(obj) ⇒ Object



414
415
416
417
418
419
420
421
# File 'lib/kpeg/grammar.rb', line 414

def ==(obj)
  case obj
  when RuleReference
    @rule_name == obj.rule_name
  else
    super
  end
end

#inspectObject



423
424
425
# File 'lib/kpeg/grammar.rb', line 423

def inspect
  inspect_type "ref", @rule_name
end

#match(x) ⇒ Object



400
401
402
403
404
405
406
407
408
409
410
411
412
# File 'lib/kpeg/grammar.rb', line 400

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