Class: Nydp::FunctionInvocation
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Helper
cons, list, literal?, pair?, sig, sym, sym?
Methods included from Converter
#n2r, #r2n
Constructor Details
#initialize(function_instruction, argument_instructions, source, sig = nil) ⇒ FunctionInvocation
Returns a new instance of FunctionInvocation.
327
328
329
330
|
# File 'lib/nydp/function_invocation.rb', line 327
def initialize function_instruction, argument_instructions, source, sig=nil
@function_instruction, @argument_instructions, @source = function_instruction, argument_instructions, source
@sig = sig
end
|
Instance Attribute Details
#argument_instructions ⇒ Object
Returns the value of attribute argument_instructions.
293
294
295
|
# File 'lib/nydp/function_invocation.rb', line 293
def argument_instructions
@argument_instructions
end
|
#function_instruction ⇒ Object
Returns the value of attribute function_instruction.
293
294
295
|
# File 'lib/nydp/function_invocation.rb', line 293
def function_instruction
@function_instruction
end
|
Class Method Details
.build(expression, bindings) ⇒ Object
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
# File 'lib/nydp/function_invocation.rb', line 299
def self.build expression, bindings
compiled = Compiler.compile_each(expression, bindings)
invocation_sig = compiled.map { |x| sig x }.join("_")
cname = "Invocation_#{invocation_sig}"
exists = Invocation::SIGS.include? "Nydp::Invocation::#{cname}"
if exists
return Nydp::Invocation.const_get(cname).new(compiled, expression)
end
invocation = cons case expression.size
when 1
Invocation::Invocation_1.new(compiled, expression)
when 2
Invocation::Invocation_2.new(compiled, expression)
when 3
Invocation::Invocation_3.new(compiled, expression)
when 4
Invocation::Invocation_4.new(compiled, expression)
else
Invocation::Invocation_N.new(expression.size, compiled, expression)
end
new invocation, compiled, expression, cname
end
|
Instance Method Details
#execute(vm) ⇒ Object
332
333
334
335
336
|
# File 'lib/nydp/function_invocation.rb', line 332
def execute vm
vm.push_ctx_instructions function_instruction
vm.push_ctx_instructions argument_instructions
end
|
338
|
# File 'lib/nydp/function_invocation.rb', line 338
def inspect ; @function_instruction.inspect ; end
|
#lexical_reach(n) ⇒ Object
295
296
297
|
# File 'lib/nydp/function_invocation.rb', line 295
def lexical_reach n
function_instruction.car.lexical_reach(n)
end
|
339
|
# File 'lib/nydp/function_invocation.rb', line 339
def to_s ; @source.to_s ; end
|