class Racc::LocationPointer

规则及其 RHS 中的位置的集合。请注意,指针的数量多于规则的 RHS 数组,因为指针指向归约时最后一个符号的右边缘。

属性

dereference[R]
hash[R]
ident[R]
index[R]
reduce[R]
reduce?[R]
rule[R]
symbol[R]

公共类方法

new(rule, i, sym) 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 891
def initialize(rule, i, sym)
  @rule   = rule
  @index  = i
  @symbol = sym
  @ident  = @rule.hash + i
  @reduce = sym.nil?
end

公共实例方法

==(ot)
别名为: eql?
before(len) 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 933
def before(len)
  @rule.ptrs[@index - len] or ptr_bug!
end
eql?(ot) 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 917
def eql?(ot)
  @hash == ot.hash
end
也别名为: ==
head?() 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 923
def head?
  @index == 0
end
increment()
别名为: next
inspect()
别名为: to_s
next() 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 927
def next
  @rule.ptrs[@index + 1] or ptr_bug!
end
也别名为: increment
to_s() 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 910
def to_s
  sprintf('(%d,%d %s)',
          @rule.ident, @index, (reduce?() ? '#' : @symbol.to_s))
end
也别名为: inspect

私有实例方法

ptr_bug!() 点击以切换源代码
# File racc-1.8.1/lib/racc/grammar.rb, line 939
def ptr_bug!
  raise "racc: fatal: pointer not exist: self: #{to_s}"
end