From 8e79582d3a340ede3337759c5be06234689ccf4e Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Sun, 23 Jul 2023 15:28:55 +0800 Subject: 😎BREAKING CHANGES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- psi/interpreter.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'psi/interpreter.py') 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 -- cgit v1.2.3-70-g09d2