Add evaluators for logic operators 'and' and 'or'

This commit is contained in:
Bartłomiej Pluta
2019-07-13 21:35:00 +02:00
parent b6983df2d3
commit 78ea26ea08
2 changed files with 26 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
from smnp.runtime.evaluator import Evaluator
from smnp.runtime.evaluators.expression import expressionEvaluator
from smnp.type.model import Type
class AndEvaluator(Evaluator):
@classmethod
def evaluator(cls, node, environment):
left = expressionEvaluator(doAssert=True)(node.left, environment).value
right = expressionEvaluator(doAssert=True)(node.right, environment).value
return Type.bool(left.value and right.value)
class OrEvaluator(Evaluator):
@classmethod
def evaluator(cls, node, environment):
left = expressionEvaluator(doAssert=True)(node.left, environment).value
right = expressionEvaluator(doAssert=True)(node.right, environment).value
return Type.bool(left.value or right.value)