Class: Racc::Rule
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/racc/grammar.rb |
Class Method Summary
- .new(target, syms, act) ⇒ Rule constructor
Instance Attribute Summary
- #accept? ⇒ Boolean readonly
- #action readonly
- #empty? ⇒ Boolean readonly
- #hash rw
- #hash=(n) rw
- #ident rw
- #null=(n) writeonly
- #precedence rw
- #precedence=(sym) rw
- #ptrs readonly
- #specified_prec rw
- #symbols readonly
- #target rw
- #useless=(u) writeonly
Instance Method Summary
Constructor Details
.new(target, syms, act) ⇒ Rule
Instance Attribute Details
#accept? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/racc/grammar.rb', line 709
def accept? if tok = @symbols[-1] tok.anchor? else false end end
#action (readonly)
[ GitHub ]# File 'lib/racc/grammar.rb', line 627
attr_reader :action
#empty? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/racc/grammar.rb', line 701
def empty? @symbols.empty? end
#hash (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 645
attr_reader :hash
#hash=(n) (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 648
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
#ident (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 643
attr_accessor :ident
#null=(n) (writeonly)
[ GitHub ]# File 'lib/racc/grammar.rb', line 680
def null=(n) @null = n end
#precedence (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 658
def precedence @specified_prec || @precedence end
#precedence=(sym) (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 662
def precedence=(sym) @precedence ||= sym end
#ptrs (readonly)
[ GitHub ]# File 'lib/racc/grammar.rb', line 646
attr_reader :ptrs
#specified_prec (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 677
attr_accessor :specified_prec
#symbols (readonly)
[ GitHub ]# File 'lib/racc/grammar.rb', line 626
attr_reader :symbols
#target (rw)
[ GitHub ]# File 'lib/racc/grammar.rb', line 625
attr_accessor :target
#useless=(u) (writeonly)
[ GitHub ]# File 'lib/racc/grammar.rb', line 683
def useless=(u) @useless = u end
Instance Method Details
#==(other)
[ GitHub ]# File 'lib/racc/grammar.rb', line 689
def ==(other) other.kind_of?(Rule) and @ident == other.ident end
#[](idx)
[ GitHub ]# File 'lib/racc/grammar.rb', line 693
def [](idx) @symbols[idx] end
#each(&block)
[ GitHub ]# File 'lib/racc/grammar.rb', line 717
def each(&block) @symbols.each(&block) end
#each_rule {|_self| ... }
# File 'lib/racc/grammar.rb', line 638
def each_rule(&block) yield self @alternatives.each(&block) end
#inspect
[ GitHub ]# File 'lib/racc/grammar.rb', line 685
def inspect "#<Racc::Rule id=#{@ident} (#{@target})>" end
#nullable? ⇒ Boolean
# File 'lib/racc/grammar.rb', line 679
def nullable?() @null end
#prec(sym, &block)
[ GitHub ]# 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
#replace(src, dest)
[ GitHub ]# File 'lib/racc/grammar.rb', line 721
def replace(src, dest) @target = dest @symbols = @symbols.map {|s| s == src ? dest : s } end
#rule
[ GitHub ]# File 'lib/racc/grammar.rb', line 634
def rule self end
#size
[ GitHub ]# File 'lib/racc/grammar.rb', line 697
def size @symbols.size end
#to_s
[ GitHub ]# File 'lib/racc/grammar.rb', line 705
def to_s "#<rule#{@ident}>" end
#useless? ⇒ Boolean
(writeonly)
# File 'lib/racc/grammar.rb', line 682
def useless?() @useless end
#|(x)
[ GitHub ]# File 'lib/racc/grammar.rb', line 629
def |(x) @alternatives.push x.rule self end