Class: Racc::Rule

Inherits:
Object show all
Defined in:
lib/racc/grammar.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target, syms, act) ⇒ Rule

Returns a new instance of Rule.



610
611
612
613
614
615
616
617
618
619
620
621
622
623
# File 'lib/racc/grammar.rb', line 610

def initialize(target, syms, act)
  @target = target
  @symbols = syms
  @action = act
  @alternatives = []

  @ident = nil
  @hash = nil
  @ptrs = nil
  @precedence = nil
  @specified_prec = nil
  @null = nil
  @useless = nil
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



627
628
629
# File 'lib/racc/grammar.rb', line 627

def action
  @action
end

#hashObject

Returns the value of attribute hash.



645
646
647
# File 'lib/racc/grammar.rb', line 645

def hash
  @hash
end

#identObject

Returns the value of attribute ident.



643
644
645
# File 'lib/racc/grammar.rb', line 643

def ident
  @ident
end

#ptrsObject (readonly)

Returns the value of attribute ptrs.



646
647
648
# File 'lib/racc/grammar.rb', line 646

def ptrs
  @ptrs
end

#specified_precObject

Returns the value of attribute specified_prec.



677
678
679
# File 'lib/racc/grammar.rb', line 677

def specified_prec
  @specified_prec
end

#symbolsObject (readonly)

Returns the value of attribute symbols.



626
627
628
# File 'lib/racc/grammar.rb', line 626

def symbols
  @symbols
end

#targetObject

Returns the value of attribute target.



625
626
627
# File 'lib/racc/grammar.rb', line 625

def target
  @target
end

Instance Method Details

#==(other) ⇒ Object



689
690
691
# File 'lib/racc/grammar.rb', line 689

def ==(other)
  other.kind_of?(Rule) and @ident == other.ident
end

#[](idx) ⇒ Object



693
694
695
# File 'lib/racc/grammar.rb', line 693

def [](idx)
  @symbols[idx]
end

#accept?Boolean

Returns:

  • (Boolean)


709
710
711
712
713
714
715
# File 'lib/racc/grammar.rb', line 709

def accept?
  if tok = @symbols[-1]
    tok.anchor?
  else
    false
  end
end

#each(&block) ⇒ Object



717
718
719
# File 'lib/racc/grammar.rb', line 717

def each(&block)
  @symbols.each(&block)
end

#each_rule {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Racc::Rule)

    the object that the method was called on



638
639
640
641
# File 'lib/racc/grammar.rb', line 638

def each_rule(&block)
  yield self
  @alternatives.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


701
702
703
# File 'lib/racc/grammar.rb', line 701

def empty?
  @symbols.empty?
end

#inspectObject



685
686
687
# File 'lib/racc/grammar.rb', line 685

def inspect
  "#<Racc::Rule id=#{@ident} (#{@target})>"
end

#null=(n) ⇒ Object



680
# File 'lib/racc/grammar.rb', line 680

def null=(n)    @null = n end

#nullable?Boolean

Returns:

  • (Boolean)


679
# File 'lib/racc/grammar.rb', line 679

def nullable?() @null end

#prec(sym, &block) ⇒ Object



666
667
668
669
670
671
672
673
674
675
# File 'lib/racc/grammar.rb', line 666

def prec(sym, &block)
  @specified_prec = sym
  if block
    unless @action.empty?
      raise CompileError, 'both of rule action block and prec block given'
    end
    @action = UserAction.proc(block)
  end
  self
end

#precedenceObject



658
659
660
# File 'lib/racc/grammar.rb', line 658

def precedence
  @specified_prec || @precedence
end

#precedence=(sym) ⇒ Object



662
663
664
# File 'lib/racc/grammar.rb', line 662

def precedence=(sym)
  @precedence ||= sym
end

#replace(src, dest) ⇒ Object



721
722
723
724
# File 'lib/racc/grammar.rb', line 721

def replace(src, dest)
  @target = dest
  @symbols = @symbols.map {|s| s == src ? dest : s }
end

#ruleObject



634
635
636
# File 'lib/racc/grammar.rb', line 634

def rule
  self
end

#sizeObject



697
698
699
# File 'lib/racc/grammar.rb', line 697

def size
  @symbols.size
end

#to_sObject



705
706
707
# File 'lib/racc/grammar.rb', line 705

def to_s
  "#<rule#{@ident}>"
end

#useless=(u) ⇒ Object



683
# File 'lib/racc/grammar.rb', line 683

def useless=(u) @useless = u end

#useless?Boolean

Returns:

  • (Boolean)


682
# File 'lib/racc/grammar.rb', line 682

def useless?()  @useless end

#|(x) ⇒ Object



629
630
631
632
# File 'lib/racc/grammar.rb', line 629

def |(x)
  @alternatives.push x.rule
  self
end