Class: Depager::LALR::Action

Inherits:
AdvancedParser show all
Defined in:
lib/depager/parser.rb

Constant Summary

Constants inherited from Parser

Parser::ACC

Instance Attribute Summary

Attributes inherited from AdvancedParser

#basis, #decorator_index

Instance Method Summary collapse

Methods inherited from AdvancedParser

#accept, #error, #reduce, #shift

Methods inherited from Parser

#accept, #action_table, #defred_after_shift_table, #defred_table, #error, #goto_table, #int_to_nonterm, #int_to_term, #lex, #nonterm_to_int, #parse, #reduce, #reduce_table, #shift, #term_to_int

Constructor Details

#initialize(inside) ⇒ Action

Returns a new instance of Action.



248
249
250
251
# File 'lib/depager/parser.rb', line 248

def initialize(inside)
  super
  @_arguments = []
end

Instance Method Details

#after_reduceObject



262
263
264
265
266
# File 'lib/depager/parser.rb', line 262

def after_reduce
  method = on_reduce[-action_value]
  result = method ? send(method, @_arguments) : nil
  stack[stack.size - 2][decorator_index] = result
end

#before_reduceObject



253
254
255
256
257
258
259
260
# File 'lib/depager/parser.rb', line 253

def before_reduce
  @_arguments = []
  n = reduce_table[-action_value][1]
  n.times do |i|
    v = stack[stack.size - (2 * (i + 1))]
    @_arguments[n - i - 1] = v[1] == :NT ? v[decorator_index] : v[1]
  end
end

#on_reduceObject



246
# File 'lib/depager/parser.rb', line 246

def on_reduce; end