diff options
Diffstat (limited to 'Parser/action_helpers.c')
| -rw-r--r-- | Parser/action_helpers.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c index 2411da2..7786124 100644 --- a/Parser/action_helpers.c +++ b/Parser/action_helpers.c @@ -1350,6 +1350,25 @@ _PyPegen_joined_str(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b p->arena); } +expr_ty _PyPegen_decoded_constant_from_token(Parser* p, Token* tok) { + Py_ssize_t bsize; + char* bstr; + if (PyBytes_AsStringAndSize(tok->bytes, &bstr, &bsize) == -1) { + return NULL; + } + PyObject* str = _PyPegen_decode_string(p, 0, bstr, bsize, tok); + if (str == NULL) { + return NULL; + } + if (_PyArena_AddPyObject(p->arena, str) < 0) { + Py_DECREF(str); + return NULL; + } + return _PyAST_Constant(str, NULL, tok->lineno, tok->col_offset, + tok->end_lineno, tok->end_col_offset, + p->arena); +} + expr_ty _PyPegen_constant_from_token(Parser* p, Token* tok) { char* bstr = PyBytes_AsString(tok->bytes); if (bstr == NULL) { |
