In Files

  • ruby-3.1.2/lib/racc/grammar.rb

Files

Class/Module Index [+]

Quicksearch

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 ruby-3.1.2/lib/racc/grammar.rb, line 608
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 ruby-3.1.2/lib/racc/grammar.rb, line 687
def ==(other)
  other.kind_of?(Rule) and @ident == other.ident
end
            
[](idx) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 691
def [](idx)
  @symbols[idx]
end
            
accept?() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 707
def accept?
  if tok = @symbols[-1]
    tok.anchor?
  else
    false
  end
end
            
each(&block) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 715
def each(&block)
  @symbols.each(&block)
end
            
each_rule(&block) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 636
def each_rule(&block)
  yield self
  @alternatives.each(&block)
end
            
empty?() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 699
def empty?
  @symbols.empty?
end
            
hash=(n) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 646
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 ruby-3.1.2/lib/racc/grammar.rb, line 683
def inspect
  "#<Racc::Rule id=#{@ident} (#{@target})>"
end
            
null=(n) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 678
def null=(n)    @null = n end
            
nullable?() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 677
def nullable?() @null end
            
prec(sym, &block) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 664
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 ruby-3.1.2/lib/racc/grammar.rb, line 656
def precedence
  @specified_prec || @precedence
end
            
precedence=(sym) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 660
def precedence=(sym)
  @precedence ||= sym
end
            
replace(src, dest) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 719
def replace(src, dest)
  @target = dest
  @symbols = @symbols.map {|s| s == src ? dest : s }
end
            
rule() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 632
def rule
  self
end
            
size() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 695
def size
  @symbols.size
end
            
to_s() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 703
def to_s
  "#<rule#{@ident}>"
end
            
useless=(u) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 681
def useless=(u) @useless = u end
            
useless?() click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 680
def useless?()  @useless end
            
|(x) click to toggle source
 
               # File ruby-3.1.2/lib/racc/grammar.rb, line 627
def |(x)
  @alternatives.push x.rule
  self
end