mirror of
https://github.com/Alvin-Zilverstand/femcode.git
synced 2026-04-22 03:06:18 +02:00
19 lines
503 B
Python
19 lines
503 B
Python
|
|
class Interpreter:
|
||
|
|
def __init__(self, ast):
|
||
|
|
self.ast = ast
|
||
|
|
|
||
|
|
def interpret(self):
|
||
|
|
for node in self.ast:
|
||
|
|
self.visit(node)
|
||
|
|
|
||
|
|
def visit(self, node):
|
||
|
|
method_name = f'visit_{type(node).__name__}'
|
||
|
|
method = getattr(self, method_name, self.no_visit_method)
|
||
|
|
return method(node)
|
||
|
|
|
||
|
|
def no_visit_method(self, node):
|
||
|
|
raise Exception(f'No visit_{type(node).__name__} method defined')
|
||
|
|
|
||
|
|
def visit_Print(self, node):
|
||
|
|
print(node.value)
|