==(other)
click to toggle source
def ==(other)
other.kind_of?(Rule) and @ident == other.ident
end
[](idx)
click to toggle source
def [](idx)
@symbols[idx]
end
accept?()
click to toggle source
def accept?
if tok = @symbols[-1]
tok.anchor?
else
false
end
end
each(&block)
click to toggle source
def each(&block)
@symbols.each(&block)
end
each_rule(&block)
click to toggle source
def each_rule(&block)
yield self
@alternatives.each(&block)
end
empty?()
click to toggle source
def empty?
@symbols.empty?
end
hash=(n)
click to toggle source
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
def inspect
"#<Racc::Rule id=#{@ident} (#{@target})>"
end
null=(n)
click to toggle source
def null=(n) @null = n end
nullable?()
click to toggle source
def nullable?() @null end
prec(sym, &block)
click to toggle source
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
def precedence
@specified_prec || @precedence
end
precedence=(sym)
click to toggle source
def precedence=(sym)
@precedence ||= sym
end
replace(src, dest)
click to toggle source
def replace(src, dest)
@target = dest
@symbols = @symbols.map {|s| s == src ? dest : s }
end
rule()
click to toggle source
size()
click to toggle source
def size
@symbols.size
end
to_s()
click to toggle source
def to_s
"#<rule#{@ident}>"
end
useless=(u)
click to toggle source
def useless=(u) @useless = u end
useless?()
click to toggle source
def useless?() @useless end
|(x)
click to toggle source
def |(x)
@alternatives.push x.rule
self
end