diff options
| author | 2023-07-23 15:28:55 +0800 | |
|---|---|---|
| committer | 2023-07-23 15:28:55 +0800 | |
| commit | 8e79582d3a340ede3337759c5be06234689ccf4e (patch) | |
| tree | 4808937a5da1248c03d3d8ee2f0e2f569ed05bb2 /psi/interpreter.py | |
| parent | dfa7eb4530d4b4062db8427a5b1b32ea5af7fb40 (diff) | |
| download | TRPGNivis-8e79582d3a340ede3337759c5be06234689ccf4e.tar.gz TRPGNivis-8e79582d3a340ede3337759c5be06234689ccf4e.zip | |
😎BREAKING CHANGES
Diffstat (limited to 'psi/interpreter.py')
| -rw-r--r-- | psi/interpreter.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/psi/interpreter.py b/psi/interpreter.py index e69de29..f98a777 100644 --- a/psi/interpreter.py +++ b/psi/interpreter.py @@ -0,0 +1,26 @@ +from psi.lexer import Token + + +__all__ = ['Interpreter'] + +class Interpreter: + def __init__(self, ast): + self.ast = ast + + def interpret(self): + return self.interpret_expr(self.ast) + + def interpret_expr(self, node): + if isinstance(node, Token): + return node.value + elif isinstance(node, list): + for expr in node: + result = self.interpret_expr(expr) + if result is not None: + return result + + def interpret_condition(self, node): + variable = self.interpret_expr(node[0]) + value = self.interpret_expr(node[2]) + + return variable == value |
