Select Git revision
buildEmotionModel.ipynb
-
Timothé Boulet authoredTimothé Boulet authored
expression.py 1000 B
"""
Expression module defines the structure of an expression.
"""
from typing import Union
from calculator.operators import Operator
Term: type = float
Token: type = Union[Operator, Term]
class OperatorExpression:
"""
OperatorExpression class is an expression that contains an operator and two sub-expressions.
"""
def __init__(self, operator: Operator, left, right):
self.operator = operator
self.left = left
self.right = right
def __repr__(self):
return f"({self.left} {self.operator} {self.right})"
def __call__(self) -> Term:
return self.operator(self.left(), self.right())
class TermExpression:
"""
TermExpression class is an expression that contains a single term.
"""
def __init__(self, value: Term):
self.value = value
def __repr__(self):
return str(self.value)
def __call__(self) -> Term:
return self.value
Expression: type = Union[OperatorExpression, TermExpression]