From 416db85a296ae77329e959e95e236204a5757d77 Mon Sep 17 00:00:00 2001 From: dm1sh Date: Tue, 17 Oct 2023 23:02:00 +0300 Subject: [PATCH] Added math constants to Parser evaluator --- parser/parser/constants.py | 6 ++++++ parser/parser/parser.py | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 parser/parser/constants.py diff --git a/parser/parser/constants.py b/parser/parser/constants.py new file mode 100644 index 0000000..6b7b711 --- /dev/null +++ b/parser/parser/constants.py @@ -0,0 +1,6 @@ +import numpy as np + +CONSTANTS = { + "e": np.e, + "pi": np.pi, +} diff --git a/parser/parser/parser.py b/parser/parser/parser.py index 71eaa1c..4619e53 100644 --- a/parser/parser/parser.py +++ b/parser/parser/parser.py @@ -1,5 +1,3 @@ -from collections.abc import Mapping - from .expression import BinaryExpression, Expression, UnaryExpression, ValueExpression from .operation import ( BraceOperation, @@ -10,6 +8,7 @@ from .operation import ( ) from .tokenizer import Token, Tokenizer from .types import ValueType +from .constants import CONSTANTS class Parser: @@ -64,7 +63,8 @@ class Parser: self.__debug_expr = repr(self.val_stack) - def evaluate(self, variables: Mapping[str, ValueType]): + def evaluate(self, variables: dict[str, ValueType]): + variables |= CONSTANTS return self._evaluator(variables) def do_one(self):