Skip to content

Commit 36e474e

Browse files
committed
py/compile: Combine or_test and and_test compile functions.
1 parent 1a7109d commit 36e474e

2 files changed

Lines changed: 4 additions & 11 deletions

File tree

py/compile.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,7 +2024,8 @@ STATIC void compile_lambdef(compiler_t *comp, mp_parse_node_struct_t *pns) {
20242024
compile_funcdef_lambdef(comp, this_scope, pns->nodes[0], PN_varargslist);
20252025
}
20262026

2027-
STATIC void compile_or_and_test(compiler_t *comp, mp_parse_node_struct_t *pns, bool cond) {
2027+
STATIC void compile_or_and_test(compiler_t *comp, mp_parse_node_struct_t *pns) {
2028+
bool cond = MP_PARSE_NODE_STRUCT_KIND(pns) == PN_or_test;
20282029
uint l_end = comp_next_label(comp);
20292030
int n = MP_PARSE_NODE_STRUCT_NUM_NODES(pns);
20302031
for (int i = 0; i < n; i += 1) {
@@ -2036,14 +2037,6 @@ STATIC void compile_or_and_test(compiler_t *comp, mp_parse_node_struct_t *pns, b
20362037
EMIT_ARG(label_assign, l_end);
20372038
}
20382039

2039-
STATIC void compile_or_test(compiler_t *comp, mp_parse_node_struct_t *pns) {
2040-
compile_or_and_test(comp, pns, true);
2041-
}
2042-
2043-
STATIC void compile_and_test(compiler_t *comp, mp_parse_node_struct_t *pns) {
2044-
compile_or_and_test(comp, pns, false);
2045-
}
2046-
20472040
STATIC void compile_not_test_2(compiler_t *comp, mp_parse_node_struct_t *pns) {
20482041
compile_node(comp, pns->nodes[0]);
20492042
EMIT_ARG(unary_op, MP_UNARY_OP_NOT);

py/grammar.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@ DEF_RULE(lambdef_nocond, c(lambdef), and_blank(4), tok(KW_LAMBDA), opt_rule(vara
231231
// power: atom_expr ['**' factor]
232232
// atom_expr: 'await' atom trailer* | atom trailer*
233233

234-
DEF_RULE(or_test, c(or_test), list, rule(and_test), tok(KW_OR))
235-
DEF_RULE(and_test, c(and_test), list, rule(not_test), tok(KW_AND))
234+
DEF_RULE(or_test, c(or_and_test), list, rule(and_test), tok(KW_OR))
235+
DEF_RULE(and_test, c(or_and_test), list, rule(not_test), tok(KW_AND))
236236
DEF_RULE_NC(not_test, or(2), rule(not_test_2), rule(comparison))
237237
DEF_RULE(not_test_2, c(not_test_2), and(2), tok(KW_NOT), rule(not_test))
238238
DEF_RULE(comparison, c(comparison), list, rule(expr), rule(comp_op))

0 commit comments

Comments
 (0)