Class: Racc::LocationPointer

Inherits:
Object
  • Object
show all
Defined in:
lib/racc/grammar.rb

Overview

A set of rule and position in it’s RHS. Note that the number of pointers is more than rule’s RHS array, because pointer points right edge of the final symbol when reducing.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rule, i, sym) ⇒ LocationPointer

Returns a new instance of LocationPointer.



809
810
811
812
813
814
815
# File 'lib/racc/grammar.rb', line 809

def initialize(rule, i, sym)
  @rule   = rule
  @index  = i
  @symbol = sym
  @ident  = @rule.hash + i
  @reduce = sym.nil?
end

Instance Attribute Details

#identObject (readonly) Also known as: hash

Returns the value of attribute ident.



823
824
825
# File 'lib/racc/grammar.rb', line 823

def ident
  @ident
end

#indexObject (readonly)

Returns the value of attribute index.



818
819
820
# File 'lib/racc/grammar.rb', line 818

def index
  @index
end

#reduceObject (readonly) Also known as: reduce?

Returns the value of attribute reduce.



825
826
827
# File 'lib/racc/grammar.rb', line 825

def reduce
  @reduce
end

#ruleObject (readonly)

Returns the value of attribute rule.



817
818
819
# File 'lib/racc/grammar.rb', line 817

def rule
  @rule
end

#symbolObject (readonly) Also known as: dereference

Returns the value of attribute symbol.



819
820
821
# File 'lib/racc/grammar.rb', line 819

def symbol
  @symbol
end

Instance Method Details

#before(len) ⇒ Object



851
852
853
# File 'lib/racc/grammar.rb', line 851

def before(len)
  @rule.ptrs[@index - len] or ptr_bug!
end

#eql?(ot) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


835
836
837
# File 'lib/racc/grammar.rb', line 835

def eql?(ot)
  @hash == ot.hash
end

#head?Boolean

Returns:

  • (Boolean)


841
842
843
# File 'lib/racc/grammar.rb', line 841

def head?
  @index == 0
end

#nextObject Also known as: increment



845
846
847
# File 'lib/racc/grammar.rb', line 845

def next
  @rule.ptrs[@index + 1] or ptr_bug!
end

#to_sObject Also known as: inspect



828
829
830
831
# File 'lib/racc/grammar.rb', line 828

def to_s
  sprintf('(%d,%d %s)',
          @rule.ident, @index, (reduce?() ? '#' : @symbol.to_s))
end