@@ -15,6 +15,7 @@ def recursive_dereferencer(var, builder):
1515 else :
1616 raise TypeError (f"Unsupported type for dereferencing: { var .type } " )
1717
18+
1819def handle_binary_op (rval , module , builder , var_name , local_sym_tab , map_sym_tab , func ):
1920 print (module )
2021 left = rval .left
@@ -24,7 +25,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
2425 # Handle left operand
2526 if isinstance (left , ast .Name ):
2627 if left .id in local_sym_tab :
27- left = recursive_dereferencer (local_sym_tab [left .id ], builder )
28+ left = recursive_dereferencer (local_sym_tab [left .id ][ 0 ] , builder )
2829 else :
2930 raise SyntaxError (f"Undefined variable: { left .id } " )
3031 elif isinstance (left , ast .Constant ):
@@ -34,7 +35,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
3435
3536 if isinstance (right , ast .Name ):
3637 if right .id in local_sym_tab :
37- right = recursive_dereferencer (local_sym_tab [right .id ], builder )
38+ right = recursive_dereferencer (local_sym_tab [right .id ][ 0 ] , builder )
3839 else :
3940 raise SyntaxError (f"Undefined variable: { right .id } " )
4041 elif isinstance (right , ast .Constant ):
@@ -46,36 +47,36 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
4647
4748 if isinstance (op , ast .Add ):
4849 builder .store (builder .add (left , right ),
49- local_sym_tab [var_name ])
50+ local_sym_tab [var_name ][ 0 ] )
5051 elif isinstance (op , ast .Sub ):
5152 builder .store (builder .sub (left , right ),
52- local_sym_tab [var_name ])
53+ local_sym_tab [var_name ][ 0 ] )
5354 elif isinstance (op , ast .Mult ):
5455 builder .store (builder .mul (left , right ),
55- local_sym_tab [var_name ])
56+ local_sym_tab [var_name ][ 0 ] )
5657 elif isinstance (op , ast .Div ):
5758 builder .store (builder .sdiv (left , right ),
58- local_sym_tab [var_name ])
59+ local_sym_tab [var_name ][ 0 ] )
5960 elif isinstance (op , ast .Mod ):
6061 builder .store (builder .srem (left , right ),
61- local_sym_tab [var_name ])
62+ local_sym_tab [var_name ][ 0 ] )
6263 elif isinstance (op , ast .LShift ):
6364 builder .store (builder .shl (left , right ),
64- local_sym_tab [var_name ])
65+ local_sym_tab [var_name ][ 0 ] )
6566 elif isinstance (op , ast .RShift ):
6667 builder .store (builder .lshr (left , right ),
67- local_sym_tab [var_name ])
68+ local_sym_tab [var_name ][ 0 ] )
6869 elif isinstance (op , ast .BitOr ):
6970 builder .store (builder .or_ (left , right ),
70- local_sym_tab [var_name ])
71+ local_sym_tab [var_name ][ 0 ] )
7172 elif isinstance (op , ast .BitXor ):
7273 builder .store (builder .xor (left , right ),
73- local_sym_tab [var_name ])
74+ local_sym_tab [var_name ][ 0 ] )
7475 elif isinstance (op , ast .BitAnd ):
7576 builder .store (builder .and_ (left , right ),
76- local_sym_tab [var_name ])
77+ local_sym_tab [var_name ][ 0 ] )
7778 elif isinstance (op , ast .FloorDiv ):
7879 builder .store (builder .udiv (left , right ),
79- local_sym_tab [var_name ])
80+ local_sym_tab [var_name ][ 0 ] )
8081 else :
8182 raise SyntaxError ("Unsupported binary operation" )
0 commit comments