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.



812
813
814
815
816
817
818
# File 'lib/racc/grammar.rb', line 812

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.



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

def ident
  @ident
end

#indexObject (readonly)

Returns the value of attribute index.



821
822
823
# File 'lib/racc/grammar.rb', line 821

def index
  @index
end

#reduceObject (readonly) Also known as: reduce?

Returns the value of attribute reduce.



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

def reduce
  @reduce
end

#ruleObject (readonly)

Returns the value of attribute rule.



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

def rule
  @rule
end

#symbolObject (readonly) Also known as: dereference

Returns the value of attribute symbol.



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

def symbol
  @symbol
end

Instance Method Details

#before(len) ⇒ Object



854
855
856
# File 'lib/racc/grammar.rb', line 854

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

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

Returns:

  • (Boolean)


838
839
840
# File 'lib/racc/grammar.rb', line 838

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

#head?Boolean

Returns:

  • (Boolean)


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

def head?
  @index == 0
end

#nextObject Also known as: increment



848
849
850
# File 'lib/racc/grammar.rb', line 848

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

#to_sObject Also known as: inspect



831
832
833
834
# File 'lib/racc/grammar.rb', line 831

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