Class: Yadriggy::EvalAlgebra
- Inherits:
-
Eval
- Object
- Eval
- Yadriggy::EvalAlgebra
show all
- Defined in:
- lib/yadriggy/algebra.rb
Overview
Instance Method Summary
collapse
Methods inherited from Eval
#astree, #being_end, #evaluate, #identifier_or_call
Constructor Details
#initialize(algebra) ⇒ EvalAlgebra
265
266
267
|
# File 'lib/yadriggy/algebra.rb', line 265
def initialize(algebra)
@algebra = algebra
end
|
Instance Method Details
#array(expr) ⇒ Object
325
326
327
|
# File 'lib/yadriggy/algebra.rb', line 325
def array(expr)
@algebra.array(expr.elements.map {|e| evaluate(e)})
end
|
#array_ref(expr) ⇒ Object
361
362
363
364
|
# File 'lib/yadriggy/algebra.rb', line 361
def array_ref(expr)
@algebra.array_ref(evaluate(expr.array),
expr.indexes.map {|e| evaluate(e) })
end
|
#array_ref_field(expr) ⇒ Object
366
367
368
369
|
# File 'lib/yadriggy/algebra.rb', line 366
def array_ref_field(expr)
@algebra.array_ref_field(evaluate(expr.array),
expr.indexes.map {|e| evaluate(e) })
end
|
#assign(expr) ⇒ Object
357
358
359
|
# File 'lib/yadriggy/algebra.rb', line 357
def assign(expr)
@algebra.assign(evaluate(expr.left), expr.op, evaluate(expr.right))
end
|
#begin_end(expr) ⇒ Object
443
444
445
446
447
448
449
450
|
# File 'lib/yadriggy/algebra.rb', line 443
def begin_end(expr)
@algebra.begin_end(lambda { evaluate(expr.body) },
if expr.rescue.nil?
nil
else
lambda { evaluate(expr.rescue) }
end)
end
|
#binary(expr) ⇒ Object
349
350
351
|
# File 'lib/yadriggy/algebra.rb', line 349
def binary(expr)
@algebra.binary(evaluate(expr.left), expr.op, evaluate(expr.right))
end
|
#block(expr) ⇒ Object
421
422
423
424
425
426
|
# File 'lib/yadriggy/algebra.rb', line 421
def block(expr)
@algebra.block(expr.params, expr.optionals, expr.rest_of_params,
expr.params_after_rest, expr.keywords,
expr.rest_of_keywords,
expr.block_param, lambda { evaluate(expr.body) })
end
|
#break_out(expr) ⇒ Object
413
414
415
|
# File 'lib/yadriggy/algebra.rb', line 413
def break_out(expr)
@algebra.break_out(expr.op, expr.values.map {|e| evaluate(e) })
end
|
#call(expr) ⇒ Object
375
376
377
378
379
380
|
# File 'lib/yadriggy/algebra.rb', line 375
def call(expr)
@algebra.call(evaluate(expr.receiver), expr.op, expr.name,
expr.args.map {|e| evaluate(e) },
evaluate(expr.block_arg),
lambda { evaluate(expr.block) })
end
|
#class_def(expr) ⇒ Object
473
474
475
476
477
478
479
480
481
|
# File 'lib/yadriggy/algebra.rb', line 473
def class_def(expr)
@algebra.class_def(expr.name, expr.superclass,
lambda { evaluate(expr.body) },
if expr.rescue.nil?
nil
else
lambda { evaluate(expr.rescue) }
end)
end
|
#command(expr) ⇒ Object
382
383
384
385
386
387
|
# File 'lib/yadriggy/algebra.rb', line 382
def command(expr)
@algebra.command(evaluate(expr.receiver), expr.op, expr.name,
expr.args.map {|e| evaluate(e) },
evaluate(expr.block_arg),
lambda { evaluate(expr.block) })
end
|
#conditional(expr) ⇒ Object
389
390
391
392
393
394
395
396
397
398
399
400
401
|
# File 'lib/yadriggy/algebra.rb', line 389
def conditional(expr)
@algebra.conditional(expr.op, evaluate(expr.cond),
lambda { evaluate(expr.then) },
expr.all_elsif.map do |e|
[lambda { evaluate(e[0]) },
lambda { evaluate(e[1]) }]
end,
if expr.else.nil?
nil
else
lambda { evaluate(expr.else) }
end)
end
|
#const(expr) ⇒ Object
285
286
287
|
# File 'lib/yadriggy/algebra.rb', line 285
def const(expr)
@algebra.const(expr.name, expr.line_no, expr.column)
end
|
#const_path_field(expr) ⇒ Object
341
342
343
|
# File 'lib/yadriggy/algebra.rb', line 341
def const_path_field(expr)
@algebra.const_path_field(expr.scope, expr.name)
end
|
#const_path_ref(expr) ⇒ Object
337
338
339
|
# File 'lib/yadriggy/algebra.rb', line 337
def const_path_ref(expr)
@algebra.const_path_ref(expr.scope, expr.name)
end
|
#define(expr) ⇒ Object
452
453
454
455
456
457
458
459
460
461
462
|
# File 'lib/yadriggy/algebra.rb', line 452
def define(expr)
@algebra.define(expr.name, expr.params, expr.optionals,
expr.rest_of_params, expr.params_after_rest,
expr.keywords, expr.rest_of_keywords,
expr.block_param, lambda { evaluate(expr.body) },
if expr.rescue.nil?
nil
else
lambda { evaluate(expr.rescue) }
end)
end
|
#dots(expr) ⇒ Object
353
354
355
|
# File 'lib/yadriggy/algebra.rb', line 353
def dots(expr)
@algebra.dots(evaluate(expr.left), expr.op, evaluate(expr.right))
end
|
#exprs(expr) ⇒ Object
315
316
317
318
319
|
# File 'lib/yadriggy/algebra.rb', line 315
def exprs(expr)
expr.expressions.inject(nil) do |result, e|
@algebra.exprs(result, evaluate(e))
end
end
|
#for_loop(expr) ⇒ Object
408
409
410
411
|
# File 'lib/yadriggy/algebra.rb', line 408
def for_loop(expr)
@algebra.for_loop(expr.vars, evaluate(expr.set),
lambda { evaluate(expr.body) })
end
|
#global_variable(expr) ⇒ Object
297
298
299
|
# File 'lib/yadriggy/algebra.rb', line 297
def global_variable(expr)
@algebra.global_variable(expr.name, expr.line_no, expr.column)
end
|
#hash(expr) ⇒ Object
371
372
373
|
# File 'lib/yadriggy/algebra.rb', line 371
def hash(expr)
@algebra.hash(expr.pairs.map {|p| p.map {|e| evaluate(e) }})
end
|
#identifier(expr) ⇒ Object
277
278
279
|
# File 'lib/yadriggy/algebra.rb', line 277
def identifier(expr)
@algebra.identifier(expr.name, expr.line_no, expr.column)
end
|
#instance_variable(expr) ⇒ Object
301
302
303
|
# File 'lib/yadriggy/algebra.rb', line 301
def instance_variable(expr)
@algebra.instance_variable(expr.name, expr.line_no, expr.column)
end
|
#label(expr) ⇒ Object
289
290
291
|
# File 'lib/yadriggy/algebra.rb', line 289
def label(expr)
@algebra.label(expr.name, expr.line_no, expr.column)
end
|
#lambda_expr(expr) ⇒ Object
428
429
430
431
432
433
|
# File 'lib/yadriggy/algebra.rb', line 428
def lambda_expr(expr)
@algebra.lambda_expr(expr.params, expr.optionals, expr.rest_of_params,
expr.params_after_rest, expr.keywords,
expr.rest_of_keywords,
expr.block_param, lambda { evaluate(expr.body) })
end
|
#loop(expr) ⇒ Object
403
404
405
406
|
# File 'lib/yadriggy/algebra.rb', line 403
def loop(expr)
@algebra.loop(expr.op, lambda { evaluate(expr.cond) },
lambda { evaluate(expr.body) })
end
|
#module_def(expr) ⇒ Object
464
465
466
467
468
469
470
471
|
# File 'lib/yadriggy/algebra.rb', line 464
def module_def(expr)
@algebra.module_def(expr.name, lambda { evaluate(expr.body) },
if expr.rescue.nil?
nil
else
lambda { evaluate(expr.rescue) }
end)
end
|
#name(expr) ⇒ Object
273
274
275
|
# File 'lib/yadriggy/algebra.rb', line 273
def name(expr)
raise 'should never happen'
end
|
#nil_value(expr) ⇒ Object
269
270
271
|
# File 'lib/yadriggy/algebra.rb', line 269
def nil_value(expr)
@algebra.nil_value
end
|
#number(expr) ⇒ Object
311
312
313
|
# File 'lib/yadriggy/algebra.rb', line 311
def number(expr)
@algebra.number(expr.value, expr.line_no, expr.column)
end
|
#paren(expr) ⇒ Object
321
322
323
|
# File 'lib/yadriggy/algebra.rb', line 321
def paren(expr)
@algebra.paren(evaluate(expr.expression))
end
|
#program(expr) ⇒ Object
493
494
495
|
# File 'lib/yadriggy/algebra.rb', line 493
def program(expr)
@algebra.program(evaluate(expr.elements))
end
|
#rescue_end(expr) ⇒ Object
435
436
437
438
439
440
441
|
# File 'lib/yadriggy/algebra.rb', line 435
def rescue_end(expr)
@algebra.rescue_end(expr.types, expr.parameter,
lambda { evaluate(expr.body) },
lambda { evaluate(expr.nested_rescue) },
lambda { evaluate(expr.else) },
lambda { evaluate(expr.ensure) })
end
|
#reserved(expr) ⇒ Object
281
282
283
|
# File 'lib/yadriggy/algebra.rb', line 281
def reserved(expr)
@algebra.reserved(expr.name, expr.line_no, expr.column)
end
|
#return_values(expr) ⇒ Object
417
418
419
|
# File 'lib/yadriggy/algebra.rb', line 417
def return_values(expr)
@algebra.return_values(expr.values.map {|e| evaluate(e) })
end
|
#singular_class_def(expr) ⇒ Object
483
484
485
486
487
488
489
490
491
|
# File 'lib/yadriggy/algebra.rb', line 483
def singular_class_def(expr)
@algebra.singular_class_def(expr.name,
lambda { evaluate(expr.body) },
if expr.rescue.nil?
nil
else
lambda { evaluate(expr.rescue) }
end)
end
|
#string_interpolation(expr) ⇒ Object
329
330
331
|
# File 'lib/yadriggy/algebra.rb', line 329
def string_interpolation(expr)
@algebra.string_interpolation(expr.contents.map {|e| evaluate(e) })
end
|
#string_literal(expr) ⇒ Object
333
334
335
|
# File 'lib/yadriggy/algebra.rb', line 333
def string_literal(expr)
@algebra.string_literal(expr.value, expr.line_no, expr.column)
end
|
#super_method(expr) ⇒ Object
309
|
# File 'lib/yadriggy/algebra.rb', line 309
def super_method(expr) @algebra.super_method end
|
#symbol(expr) ⇒ Object
293
294
295
|
# File 'lib/yadriggy/algebra.rb', line 293
def symbol(expr)
@algebra.symbol(expr.name, expr.line_no, expr.column)
end
|
#unary(expr) ⇒ Object
345
346
347
|
# File 'lib/yadriggy/algebra.rb', line 345
def unary(expr)
@algebra.unary(expr.op, evaluate(expr.operand))
end
|
#variable_call(expr) ⇒ Object
305
306
307
|
# File 'lib/yadriggy/algebra.rb', line 305
def variable_call(expr)
@algebra.variable_call(expr.name, expr.line_no, expr.column)
end
|