aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/psi/interpreter.py
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2023-09-27 17:31:16 +0800
committer简律纯 <i@jyunko.cn>2023-09-27 17:31:16 +0800
commitba4129933cdb6d91e695b2de900b8753652ec385 (patch)
treec520d508bf50cd22ea3123840f4aff77f148256b /src/psi/interpreter.py
parent3ad303968524f6dc57b7d5900e33963c77342552 (diff)
downloadTRPGNivis-ba4129933cdb6d91e695b2de900b8753652ec385.tar.gz
TRPGNivis-ba4129933cdb6d91e695b2de900b8753652ec385.zip
feat(pyproject): 优化python包管理结构
Diffstat (limited to 'src/psi/interpreter.py')
-rw-r--r--src/psi/interpreter.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/psi/interpreter.py b/src/psi/interpreter.py
new file mode 100644
index 0000000..f98a777
--- /dev/null
+++ b/src/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