summaryrefslogtreecommitdiffstats
path: root/Parser/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'Parser/parser.c')
-rw-r--r--Parser/parser.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/Parser/parser.c b/Parser/parser.c
index 2ce84cd..61da37d 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -149,12 +149,10 @@ classify(parser_state *ps, int type, char *str)
strcmp(l->lb_str, s) != 0)
continue;
#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
- if (!(ps->p_flags & CO_FUTURE_WITH_STATEMENT)) {
- if (s[0] == 'w' && strcmp(s, "with") == 0)
- break; /* not a keyword yet */
- else if (s[0] == 'a' && strcmp(s, "as") == 0)
- break; /* not a keyword yet */
- }
+ if (ps->p_flags & CO_FUTURE_PRINT_FUNCTION &&
+ s[0] == 'p' && strcmp(s, "print") == 0) {
+ break; /* no longer a keyword */
+ }
#endif
D(printf("It's a keyword\n"));
return n - i;
@@ -208,6 +206,10 @@ future_hack(parser_state *ps)
strcmp(STR(CHILD(cch, 0)), "with_statement") == 0) {
ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
break;
+ } else if (NCH(cch) >= 1 && TYPE(CHILD(cch, 0)) == NAME &&
+ strcmp(STR(CHILD(cch, 0)), "print_function") == 0) {
+ ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
+ break;
}
}
}