class Racc::Rule

Attributes

action[R]
hash[R]
ident[RW]
ptrs[R]
specified_prec[RW]
symbols[R]
target[RW]

Public Class Methods

new(target, syms, act) click to toggle source
# File racc/grammar.rb, line 603
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

Public Instance Methods

==(other) click to toggle source
# File racc/grammar.rb, line 682
def ==(other)
  other.kind_of?(Rule) and @ident == other.ident
end
[](idx) click to toggle source
# File racc/grammar.rb, line 686
def [](idx)
  @symbols[idx]
end
accept?() click to toggle source
# File racc/grammar.rb, line 702
def accept?
  if tok = @symbols[-1]
    tok.anchor?
  else
    false
  end
end
each(&block) click to toggle source
# File racc/grammar.rb, line 710
def each(&block)
  @symbols.each(&block)
end
each_rule() { |self| ... } click to toggle source
# File racc/grammar.rb, line 631
def each_rule(&block)
  yield self
  @alternatives.each(&block)
end
empty?() click to toggle source
# File racc/grammar.rb, line 694
def empty?
  @symbols.empty?
end
hash=(n) click to toggle source
# File racc/grammar.rb, line 641
def hash=(n)
  @hash = n
  ptrs = []
  @symbols.each_with_index do |sym, idx|
    ptrs.push LocationPointer.new(self, idx, sym)
  end
  ptrs.push LocationPointer.new(self, @symbols.size, nil)
  @ptrs = ptrs
end
inspect() click to toggle source
# File racc/grammar.rb, line 678
def inspect
  "#<Racc::Rule id=#{@ident} (#{@target})>"
end
null=(n) click to toggle source
# File racc/grammar.rb, line 673
def null=(n)    @null = n end
nullable?() click to toggle source
# File racc/grammar.rb, line 672
def nullable?() @null end
prec(sym, &block) click to toggle source
# File racc/grammar.rb, line 659
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
precedence() click to toggle source
# File racc/grammar.rb, line 651
def precedence
  @specified_prec || @precedence
end
precedence=(sym) click to toggle source
# File racc/grammar.rb, line 655
def precedence=(sym)
  @precedence ||= sym
end
replace(src, dest) click to toggle source
# File racc/grammar.rb, line 714
def replace(src, dest)
  @target = dest
  @symbols = @symbols.map {|s| s == src ? dest : s }
end
rule() click to toggle source
# File racc/grammar.rb, line 627
def rule
  self
end
size() click to toggle source
# File racc/grammar.rb, line 690
def size
  @symbols.size
end
to_s() click to toggle source
# File racc/grammar.rb, line 698
def to_s
  "#<rule#{@ident}>"
end
useless=(u) click to toggle source
# File racc/grammar.rb, line 676
def useless=(u) @useless = u end
useless?() click to toggle source
# File racc/grammar.rb, line 675
def useless?()  @useless end
|(x) click to toggle source
# File racc/grammar.rb, line 622
def |(x)
  @alternatives.push x.rule
  self
end