Class: Nydp::Invocation::Invocation_SYM_LEX_LEX_LEX

Inherits:
Base
  • Object
show all
Defined in:
lib/nydp/function_invocation.rb

Instance Method Summary collapse

Methods inherited from Base

#handle, #inspect, #lexical_reach, #source, #to_s

Methods included from Helper

#cons, #list, #literal?, #pair?, #sig, #sym, #sym?

Methods included from Converter

#n2r, #r2n

Constructor Details

#initialize(expr, src) ⇒ Invocation_SYM_LEX_LEX_LEX

Returns a new instance of Invocation_SYM_LEX_LEX_LEX.



233
234
235
236
237
238
239
# File 'lib/nydp/function_invocation.rb', line 233

def initialize expr, src
  super expr, src
  @sym = expr.car
  @lex_0 = expr.cdr.car
  @lex_1 = expr.cdr.cdr.car
  @lex_2 = expr.cdr.cdr.cdr.car
end

Instance Method Details

#execute(vm) ⇒ Object



241
242
243
244
245
246
247
248
249
# File 'lib/nydp/function_invocation.rb', line 241

def execute vm
#        Invocation.sig self.class.name
  a0 = @lex_0.value(vm.current_context)
  a1 = @lex_1.value(vm.current_context)
  a2 = @lex_2.value(vm.current_context)
  @sym.value.invoke_4 vm, a0, a1, a2
rescue StandardError => e
  handle e, @sym.value, :invoke_4, a0, a1, a2
end