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, #identifier_or_call
Constructor Details
#initialize(algebra) ⇒ EvalAlgebra
275
276
277
|
# File 'lib/yadriggy/algebra.rb', line 275
def initialize(algebra)
@algebra = algebra
end
|
Instance Method Details
#array(expr) ⇒ Object
343
344
345
|
# File 'lib/yadriggy/algebra.rb', line 343
def array(expr)
@algebra.array(expr.elements.map {|e| evaluate(e)})
end
|
#array_ref(expr) ⇒ Object
389
390
391
392
|
# File 'lib/yadriggy/algebra.rb', line 389
def array_ref(expr)
@algebra.array_ref(evaluate(expr.array),
expr.indexes.map {|e| evaluate(e) })
end
|
#array_ref_field(expr) ⇒ Object
394
395
396
397
|
# File 'lib/yadriggy/algebra.rb', line 394
def array_ref_field(expr)
@algebra.array_ref_field(evaluate(expr.array),
expr.indexes.map {|e| evaluate(e) })
end
|
#assign(expr) ⇒ Object
375
376
377
378
379
380
381
382
383
384
385
386
387
|
# File 'lib/yadriggy/algebra.rb', line 375
def assign(expr)
right = if expr.right.is_a?(Array)
expr.right.map {|e| evaluate(e) }
else
evaluate(expr.right)
end
left = if expr.left.is_a?(Array)
expr.left.map {|e| evaluate(e) }
else
evaluate(expr.left)
end
@algebra.assign(left, expr.op, right)
end
|
#begin_end(expr) ⇒ Object
471
472
473
474
475
476
477
478
|
# File 'lib/yadriggy/algebra.rb', line 471
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
367
368
369
|
# File 'lib/yadriggy/algebra.rb', line 367
def binary(expr)
@algebra.binary(evaluate(expr.left), expr.op, evaluate(expr.right))
end
|
#block(expr) ⇒ Object
449
450
451
452
453
454
|
# File 'lib/yadriggy/algebra.rb', line 449
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
441
442
443
|
# File 'lib/yadriggy/algebra.rb', line 441
def break_out(expr)
@algebra.break_out(expr.op, expr.values.map {|e| evaluate(e) })
end
|
#call(expr) ⇒ Object
403
404
405
406
407
408
|
# File 'lib/yadriggy/algebra.rb', line 403
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
501
502
503
504
505
506
507
508
509
|
# File 'lib/yadriggy/algebra.rb', line 501
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
410
411
412
413
414
415
|
# File 'lib/yadriggy/algebra.rb', line 410
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
417
418
419
420
421
422
423
424
425
426
427
428
429
|
# File 'lib/yadriggy/algebra.rb', line 417
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
303
304
305
|
# File 'lib/yadriggy/algebra.rb', line 303
def const(expr)
@algebra.const(expr.name, expr.line_no, expr.column)
end
|
#const_path_field(expr) ⇒ Object
359
360
361
|
# File 'lib/yadriggy/algebra.rb', line 359
def const_path_field(expr)
@algebra.const_path_field(expr.scope, expr.name)
end
|
#const_path_ref(expr) ⇒ Object
355
356
357
|
# File 'lib/yadriggy/algebra.rb', line 355
def const_path_ref(expr)
@algebra.const_path_ref(expr.scope, expr.name)
end
|
#define(expr) ⇒ Object
480
481
482
483
484
485
486
487
488
489
490
|
# File 'lib/yadriggy/algebra.rb', line 480
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
371
372
373
|
# File 'lib/yadriggy/algebra.rb', line 371
def dots(expr)
@algebra.dots(evaluate(expr.left), expr.op, evaluate(expr.right))
end
|
#evaluate(expr) ⇒ Object
279
280
281
282
283
284
285
|
# File 'lib/yadriggy/algebra.rb', line 279
def evaluate(expr)
if expr.nil?
nil_value(nil)
else
expr.accept(self)
end
end
|
#exprs(expr) ⇒ Object
333
334
335
336
337
|
# File 'lib/yadriggy/algebra.rb', line 333
def exprs(expr)
expr.expressions.inject(nil) do |result, e|
@algebra.exprs(result, evaluate(e))
end
end
|
#for_loop(expr) ⇒ Object
436
437
438
439
|
# File 'lib/yadriggy/algebra.rb', line 436
def for_loop(expr)
@algebra.for_loop(expr.vars, evaluate(expr.set),
lambda { evaluate(expr.body) })
end
|
#global_variable(expr) ⇒ Object
315
316
317
|
# File 'lib/yadriggy/algebra.rb', line 315
def global_variable(expr)
@algebra.global_variable(expr.name, expr.line_no, expr.column)
end
|
#hash(expr) ⇒ Object
399
400
401
|
# File 'lib/yadriggy/algebra.rb', line 399
def hash(expr)
@algebra.hash(expr.pairs.map {|p| p.map {|e| evaluate(e) }})
end
|
#identifier(expr) ⇒ Object
295
296
297
|
# File 'lib/yadriggy/algebra.rb', line 295
def identifier(expr)
@algebra.identifier(expr.name, expr.line_no, expr.column)
end
|
#instance_variable(expr) ⇒ Object
319
320
321
|
# File 'lib/yadriggy/algebra.rb', line 319
def instance_variable(expr)
@algebra.instance_variable(expr.name, expr.line_no, expr.column)
end
|
#label(expr) ⇒ Object
307
308
309
|
# File 'lib/yadriggy/algebra.rb', line 307
def label(expr)
@algebra.label(expr.name, expr.line_no, expr.column)
end
|
#lambda_expr(expr) ⇒ Object
456
457
458
459
460
461
|
# File 'lib/yadriggy/algebra.rb', line 456
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
431
432
433
434
|
# File 'lib/yadriggy/algebra.rb', line 431
def loop(expr)
@algebra.loop(expr.op, lambda { evaluate(expr.cond) },
lambda { evaluate(expr.body) })
end
|
#module_def(expr) ⇒ Object
492
493
494
495
496
497
498
499
|
# File 'lib/yadriggy/algebra.rb', line 492
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
291
292
293
|
# File 'lib/yadriggy/algebra.rb', line 291
def name(expr)
raise 'should never happen'
end
|
#nil_value(expr) ⇒ Object
287
288
289
|
# File 'lib/yadriggy/algebra.rb', line 287
def nil_value(expr)
@algebra.nil_value
end
|
#number(expr) ⇒ Object
329
330
331
|
# File 'lib/yadriggy/algebra.rb', line 329
def number(expr)
@algebra.number(expr.value, expr.line_no, expr.column)
end
|
#paren(expr) ⇒ Object
339
340
341
|
# File 'lib/yadriggy/algebra.rb', line 339
def paren(expr)
@algebra.paren(evaluate(expr.expression))
end
|
#program(expr) ⇒ Object
521
522
523
|
# File 'lib/yadriggy/algebra.rb', line 521
def program(expr)
@algebra.program(evaluate(expr.elements))
end
|
#rescue_end(expr) ⇒ Object
463
464
465
466
467
468
469
|
# File 'lib/yadriggy/algebra.rb', line 463
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
299
300
301
|
# File 'lib/yadriggy/algebra.rb', line 299
def reserved(expr)
@algebra.reserved(expr.name, expr.line_no, expr.column)
end
|
#return_values(expr) ⇒ Object
445
446
447
|
# File 'lib/yadriggy/algebra.rb', line 445
def return_values(expr)
@algebra.return_values(expr.values.map {|e| evaluate(e) })
end
|
#singular_class_def(expr) ⇒ Object
511
512
513
514
515
516
517
518
519
|
# File 'lib/yadriggy/algebra.rb', line 511
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
347
348
349
|
# File 'lib/yadriggy/algebra.rb', line 347
def string_interpolation(expr)
@algebra.string_interpolation(expr.contents.map {|e| evaluate(e) })
end
|
#string_literal(expr) ⇒ Object
351
352
353
|
# File 'lib/yadriggy/algebra.rb', line 351
def string_literal(expr)
@algebra.string_literal(expr.value, expr.line_no, expr.column)
end
|
#super_method(expr) ⇒ Object
327
|
# File 'lib/yadriggy/algebra.rb', line 327
def super_method(expr) @algebra.super_method end
|
#symbol(expr) ⇒ Object
311
312
313
|
# File 'lib/yadriggy/algebra.rb', line 311
def symbol(expr)
@algebra.symbol(expr.name, expr.line_no, expr.column)
end
|
#unary(expr) ⇒ Object
363
364
365
|
# File 'lib/yadriggy/algebra.rb', line 363
def unary(expr)
@algebra.unary(expr.op, evaluate(expr.operand))
end
|
#variable_call(expr) ⇒ Object
323
324
325
|
# File 'lib/yadriggy/algebra.rb', line 323
def variable_call(expr)
@algebra.variable_call(expr.name, expr.line_no, expr.column)
end
|