Class: Racc::LocationPointer
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
-
#ident ⇒ Object
(also: #hash)
readonly
Returns the value of attribute ident.
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#reduce ⇒ Object
(also: #reduce?)
readonly
Returns the value of attribute reduce.
-
#rule ⇒ Object
readonly
Returns the value of attribute rule.
-
#symbol ⇒ Object
(also: #dereference)
readonly
Returns the value of attribute symbol.
Instance Method Summary collapse
- #before(len) ⇒ Object
- #eql?(ot) ⇒ Boolean (also: #==)
- #head? ⇒ Boolean
-
#initialize(rule, i, sym) ⇒ LocationPointer
constructor
A new instance of LocationPointer.
- #next ⇒ Object (also: #increment)
- #to_s ⇒ Object (also: #inspect)
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
#ident ⇒ Object (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 |
#index ⇒ Object (readonly)
Returns the value of attribute index.
818 819 820 |
# File 'lib/racc/grammar.rb', line 818 def index @index end |
#reduce ⇒ Object (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 |
#rule ⇒ Object (readonly)
Returns the value of attribute rule.
817 818 819 |
# File 'lib/racc/grammar.rb', line 817 def rule @rule end |
#symbol ⇒ Object (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: ==
835 836 837 |
# File 'lib/racc/grammar.rb', line 835 def eql?(ot) @hash == ot.hash end |
#head? ⇒ Boolean
841 842 843 |
# File 'lib/racc/grammar.rb', line 841 def head? @index == 0 end |
#next ⇒ Object 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_s ⇒ Object 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 |