diff options
Diffstat (limited to 'Parser')
-rw-r--r-- | Parser/pegen/pegen.c | 12 | ||||
-rw-r--r-- | Parser/pegen/pegen.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c index 44198ab..0b70c95 100644 --- a/Parser/pegen/pegen.c +++ b/Parser/pegen/pegen.c @@ -640,6 +640,16 @@ _PyPegen_is_memoized(Parser *p, int type, void *pres) return 0; } + +int +_PyPegen_lookahead_with_name(int positive, expr_ty (func)(Parser *), Parser *p) +{ + int mark = p->mark; + void *res = func(p); + p->mark = mark; + return (res != NULL) == positive; +} + int _PyPegen_lookahead_with_string(int positive, void *(func)(Parser *, const char *), Parser *p, const char *arg) @@ -663,7 +673,7 @@ int _PyPegen_lookahead(int positive, void *(func)(Parser *), Parser *p) { int mark = p->mark; - void *res = func(p); + void *res = (void*)func(p); p->mark = mark; return (res != NULL) == positive; } diff --git a/Parser/pegen/pegen.h b/Parser/pegen/pegen.h index 5acd988..a20ec4a 100644 --- a/Parser/pegen/pegen.h +++ b/Parser/pegen/pegen.h @@ -85,6 +85,7 @@ int _PyPegen_insert_memo(Parser *p, int mark, int type, void *node); int _PyPegen_update_memo(Parser *p, int mark, int type, void *node); int _PyPegen_is_memoized(Parser *p, int type, void *pres); +int _PyPegen_lookahead_with_name(int, expr_ty (func)(Parser *), Parser *); int _PyPegen_lookahead_with_string(int, void *(func)(Parser *, const char *), Parser *, const char *); int _PyPegen_lookahead_with_int(int, Token *(func)(Parser *, int), Parser *, int); int _PyPegen_lookahead(int, void *(func)(Parser *), Parser *); |