File tree Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change 1+ from nodes import *
2+ from values import Number
3+
4+ class Interpreter :
5+ def visit (self , node ):
6+ method_name = f'visit_{ type (node ).__name__ } '
7+ method = getattr (self , method_name )
8+ return method (node )
9+
10+ def visit_NumberNode (self , node ):
11+ return Number (node .value )
12+
13+ def visit_AddNode (self , node ):
14+ return Number (self .visit (node .node_a ).value + self .visit (node .node_b ).value )
15+
16+ def visit_MinusNode (self , node ):
17+ return Number (self .visit (node .node_a ).value - self .visit (node .node_b ).value )
18+
19+ def visit_MultiplyNode (self , node ):
20+ return Number (self .visit (node .node_a ).value * self .visit (node .node_b ).value )
21+
22+ def visit_DivideNode (self , node ):
23+ try :
24+ return Number (self .visit (node .node_a ).value / self .visit (node .node_b ).value )
25+ except :
26+ raise Exception ("Runtime math error" )
You can’t perform that action at this time.
0 commit comments