Class: MathEngine::Evaluators::Calculate
- Inherits:
-
Object
- Object
- MathEngine::Evaluators::Calculate
- Defined in:
- lib/evaluators/calculate.rb
Instance Method Summary collapse
- #addition(node) ⇒ Object
- #assignment(node) ⇒ Object
- #division(node) ⇒ Object
- #exponent(node) ⇒ Object
- #expression(node) ⇒ Object
- #function_call(node) ⇒ Object
- #identifier(node) ⇒ Object
-
#initialize(context) ⇒ Calculate
constructor
A new instance of Calculate.
- #literal_number(node) ⇒ Object
- #modulus(node) ⇒ Object
- #multiplication(node) ⇒ Object
- #parameters(node) ⇒ Object
- #subtraction(node) ⇒ Object
Constructor Details
#initialize(context) ⇒ Calculate
Returns a new instance of Calculate.
4 5 6 |
# File 'lib/evaluators/calculate.rb', line 4 def initialize(context) @context = context end |
Instance Method Details
#addition(node) ⇒ Object
26 27 28 |
# File 'lib/evaluators/calculate.rb', line 26 def addition(node) node.left.evaluate(self) + node.right.evaluate(self) end |
#assignment(node) ⇒ Object
20 21 22 23 24 |
# File 'lib/evaluators/calculate.rb', line 20 def assignment(node) result = node.right.evaluate(self) @context.set(node.left.value, result) result end |
#division(node) ⇒ Object
38 39 40 |
# File 'lib/evaluators/calculate.rb', line 38 def division(node) node.left.evaluate(self) / node.right.evaluate(self) end |
#exponent(node) ⇒ Object
42 43 44 |
# File 'lib/evaluators/calculate.rb', line 42 def exponent(node) node.left.evaluate(self) ** node.right.evaluate(self) end |
#expression(node) ⇒ Object
12 13 14 |
# File 'lib/evaluators/calculate.rb', line 12 def expression(node) node.left.evaluate(self) end |
#function_call(node) ⇒ Object
50 51 52 53 |
# File 'lib/evaluators/calculate.rb', line 50 def function_call(node) parameters = node.right ? node.right.to_a.collect { |p| p.evaluate(self) } : [] @context.call(node.left, *parameters) end |
#identifier(node) ⇒ Object
16 17 18 |
# File 'lib/evaluators/calculate.rb', line 16 def identifier(node) @context.get node.value end |
#literal_number(node) ⇒ Object
8 9 10 |
# File 'lib/evaluators/calculate.rb', line 8 def literal_number(node) node.value end |
#modulus(node) ⇒ Object
46 47 48 |
# File 'lib/evaluators/calculate.rb', line 46 def modulus(node) node.left.evaluate(self) % node.right.evaluate(self) end |
#multiplication(node) ⇒ Object
34 35 36 |
# File 'lib/evaluators/calculate.rb', line 34 def multiplication(node) node.left.evaluate(self) * node.right.evaluate(self) end |
#parameters(node) ⇒ Object
55 56 57 |
# File 'lib/evaluators/calculate.rb', line 55 def parameters(node) node.left.evaluate(self) end |
#subtraction(node) ⇒ Object
30 31 32 |
# File 'lib/evaluators/calculate.rb', line 30 def subtraction(node) node.left.evaluate(self) - node.right.evaluate(self) end |