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.



891
892
893
894
895
896
897
# File '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

Instance Attribute Details

#identObject (readonly) Also known as: hash

Returns the value of attribute ident.



905
906
907
# File 'lib/racc/grammar.rb', line 905

def ident
  @ident
end

#indexObject (readonly)

Returns the value of attribute index.



900
901
902
# File 'lib/racc/grammar.rb', line 900

def index
  @index
end

#reduceObject (readonly) Also known as: reduce?

Returns the value of attribute reduce.



907
908
909
# File 'lib/racc/grammar.rb', line 907

def reduce
  @reduce
end

#ruleObject (readonly)

Returns the value of attribute rule.



899
900
901
# File 'lib/racc/grammar.rb', line 899

def rule
  @rule
end

#symbolObject (readonly) Also known as: dereference

Returns the value of attribute symbol.



901
902
903
# File 'lib/racc/grammar.rb', line 901

def symbol
  @symbol
end

Instance Method Details

#before(len) ⇒ Object



933
934
935
# File 'lib/racc/grammar.rb', line 933

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

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

Returns:

  • (Boolean)


917
918
919
# File 'lib/racc/grammar.rb', line 917

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

#head?Boolean

Returns:

  • (Boolean)


923
924
925
# File 'lib/racc/grammar.rb', line 923

def head?
  @index == 0
end

#nextObject Also known as: increment



927
928
929
# File 'lib/racc/grammar.rb', line 927

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

#to_sObject Also known as: inspect



910
911
912
913
# File 'lib/racc/grammar.rb', line 910

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