Select Git revision
raytracer.cpython-34.pyc
-
Benjamin Koltes authoredBenjamin Koltes authored
Expression.py 723 B
from typing import Union
from Operators import Operator
Term: type = float
Token: type = Union[Operator, Term]
class OperatorExpression:
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:
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]