Class: Evaluator
- Inherits:
-
Object
- Object
- Evaluator
- Defined in:
- lib/quecto_calc/evaluator.rb
Overview
Evaluates expression from the abstract syntax tree.
Instance Method Summary collapse
-
#initialize(consts = {}) ⇒ Evaluator
constructor
Initialize an evaluator instance.
- #method_missing(_method_name, node) ⇒ Object
- #respond_to_missing? ⇒ Boolean
- #visit(node) ⇒ Object
Constructor Details
#initialize(consts = {}) ⇒ Evaluator
Initialize an evaluator instance.
15 16 17 |
# File 'lib/quecto_calc/evaluator.rb', line 15 def initialize(consts = {}) @consts = consts end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(_method_name, node) ⇒ Object
34 35 36 37 |
# File 'lib/quecto_calc/evaluator.rb', line 34 def method_missing(_method_name, node) error_msg = "unsupported node type: #{node.class}. Plase check parser's output for correct node types." raise NoMethodError, error_msg end |
Instance Method Details
#respond_to_missing? ⇒ Boolean
39 40 41 |
# File 'lib/quecto_calc/evaluator.rb', line 39 def respond_to_missing?(*) true end |
#visit(node) ⇒ Object
22 23 24 25 |
# File 'lib/quecto_calc/evaluator.rb', line 22 def visit(node) method_name = "_visit_#{node.class}" send(method_name, node) end |