@@ -2132,48 +2132,29 @@ STATIC void compile_and_expr(compiler_t *comp, mp_parse_node_struct_t *pns) {
21322132 c_binary_op (comp , pns , MP_BINARY_OP_AND );
21332133}
21342134
2135- STATIC void compile_shift_expr (compiler_t * comp , mp_parse_node_struct_t * pns ) {
2136- int num_nodes = MP_PARSE_NODE_STRUCT_NUM_NODES (pns );
2137- compile_node (comp , pns -> nodes [0 ]);
2138- for (int i = 1 ; i + 1 < num_nodes ; i += 2 ) {
2139- compile_node (comp , pns -> nodes [i + 1 ]);
2140- if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_DBL_LESS )) {
2141- EMIT_ARG (binary_op , MP_BINARY_OP_LSHIFT );
2142- } else {
2143- assert (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_DBL_MORE )); // should be
2144- EMIT_ARG (binary_op , MP_BINARY_OP_RSHIFT );
2145- }
2146- }
2147- }
2148-
2149- STATIC void compile_arith_expr (compiler_t * comp , mp_parse_node_struct_t * pns ) {
2135+ STATIC void compile_term (compiler_t * comp , mp_parse_node_struct_t * pns ) {
21502136 int num_nodes = MP_PARSE_NODE_STRUCT_NUM_NODES (pns );
21512137 compile_node (comp , pns -> nodes [0 ]);
21522138 for (int i = 1 ; i + 1 < num_nodes ; i += 2 ) {
21532139 compile_node (comp , pns -> nodes [i + 1 ]);
21542140 if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_PLUS )) {
21552141 EMIT_ARG (binary_op , MP_BINARY_OP_ADD );
2156- } else {
2157- assert (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_MINUS )); // should be
2142+ } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_MINUS )) {
21582143 EMIT_ARG (binary_op , MP_BINARY_OP_SUBTRACT );
2159- }
2160- }
2161- }
2162-
2163- STATIC void compile_term (compiler_t * comp , mp_parse_node_struct_t * pns ) {
2164- int num_nodes = MP_PARSE_NODE_STRUCT_NUM_NODES (pns );
2165- compile_node (comp , pns -> nodes [0 ]);
2166- for (int i = 1 ; i + 1 < num_nodes ; i += 2 ) {
2167- compile_node (comp , pns -> nodes [i + 1 ]);
2168- if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_STAR )) {
2144+ } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_STAR )) {
21692145 EMIT_ARG (binary_op , MP_BINARY_OP_MULTIPLY );
21702146 } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_DBL_SLASH )) {
21712147 EMIT_ARG (binary_op , MP_BINARY_OP_FLOOR_DIVIDE );
21722148 } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_SLASH )) {
21732149 EMIT_ARG (binary_op , MP_BINARY_OP_TRUE_DIVIDE );
2174- } else {
2175- assert (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_PERCENT )); // should be
2150+ } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_PERCENT )) {
21762151 EMIT_ARG (binary_op , MP_BINARY_OP_MODULO );
2152+ } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_DBL_LESS )) {
2153+ EMIT_ARG (binary_op , MP_BINARY_OP_LSHIFT );
2154+ } else if (MP_PARSE_NODE_IS_TOKEN_KIND (pns -> nodes [i ], MP_TOKEN_OP_DBL_MORE )) {
2155+ EMIT_ARG (binary_op , MP_BINARY_OP_RSHIFT );
2156+ } else {
2157+ assert (false);
21772158 }
21782159 }
21792160}
0 commit comments