123456789_123456789_123456789_123456789_123456789_

Class: Racc::LocationPointer

Relationships & Source Files
Inherits: Object
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.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(rule, i, sym) ⇒ LocationPointer

[ GitHub ]

  
# 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

#dereference (readonly)

Alias for #symbol.

[ GitHub ]

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

alias dereference symbol

#hash (readonly)

Alias for #ident.

[ GitHub ]

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

alias hash ident

#head?Boolean (readonly)

[ GitHub ]

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

def head?
  @index == 0
end

#ident (readonly) Also known as: #hash

[ GitHub ]

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

attr_reader :ident

#index (readonly)

[ GitHub ]

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

attr_reader :index

#reduce? (readonly)

Alias for #reduce.

[ GitHub ]

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

alias reduce? reduce

#rule (readonly)

[ GitHub ]

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

attr_reader :rule

#symbol (readonly) Also known as: #dereference

[ GitHub ]

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

attr_reader :symbol

Instance Method Details

#==(ot)

Alias for #eql?.

[ GitHub ]

  
# File 'lib/racc/grammar.rb', line 921

alias == eql?

#before(len)

[ GitHub ]

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

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

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

[ GitHub ]

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

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

#increment

Alias for #next.

[ GitHub ]

  
# File 'lib/racc/grammar.rb', line 931

alias increment next

#inspect

Alias for #to_s.

[ GitHub ]

  
# File 'lib/racc/grammar.rb', line 915

alias inspect to_s

#next Also known as: #increment

[ GitHub ]

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

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

#ptr_bug! (private)

[ GitHub ]

  
# File 'lib/racc/grammar.rb', line 939

def ptr_bug!
  raise "racc: fatal: pointer not exist: self: #{to_s}"
end

#reduce (readonly) Also known as: #reduce?

[ GitHub ]

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

attr_reader :reduce

#to_s Also known as: #inspect

[ GitHub ]

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

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