mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
bpo-40939: Remove the old parser (GH-20768)
This commit removes the old parser, the deprecated parser module, the old parser compatibility flags and environment variables and all associated support code and documentation.
This commit is contained in:
parent
311110abcd
commit
1ed83adb0e
53 changed files with 24447 additions and 35978 deletions
46
Parser/string_parser.h
Normal file
46
Parser/string_parser.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
#ifndef STRINGS_H
|
||||
#define STRINGS_H
|
||||
|
||||
#include <Python.h>
|
||||
#include <Python-ast.h>
|
||||
#include "pegen.h"
|
||||
|
||||
#define EXPRLIST_N_CACHED 64
|
||||
|
||||
typedef struct {
|
||||
/* Incrementally build an array of expr_ty, so be used in an
|
||||
asdl_seq. Cache some small but reasonably sized number of
|
||||
expr_ty's, and then after that start dynamically allocating,
|
||||
doubling the number allocated each time. Note that the f-string
|
||||
f'{0}a{1}' contains 3 expr_ty's: 2 FormattedValue's, and one
|
||||
Constant for the literal 'a'. So you add expr_ty's about twice as
|
||||
fast as you add expressions in an f-string. */
|
||||
|
||||
Py_ssize_t allocated; /* Number we've allocated. */
|
||||
Py_ssize_t size; /* Number we've used. */
|
||||
expr_ty *p; /* Pointer to the memory we're actually
|
||||
using. Will point to 'data' until we
|
||||
start dynamically allocating. */
|
||||
expr_ty data[EXPRLIST_N_CACHED];
|
||||
} ExprList;
|
||||
|
||||
/* The FstringParser is designed to add a mix of strings and
|
||||
f-strings, and concat them together as needed. Ultimately, it
|
||||
generates an expr_ty. */
|
||||
typedef struct {
|
||||
PyObject *last_str;
|
||||
ExprList expr_list;
|
||||
int fmode;
|
||||
} FstringParser;
|
||||
|
||||
void _PyPegen_FstringParser_Init(FstringParser *);
|
||||
int _PyPegen_parsestr(Parser *, int *, int *, PyObject **,
|
||||
const char **, Py_ssize_t *, Token *);
|
||||
int _PyPegen_FstringParser_ConcatFstring(Parser *, FstringParser *, const char **,
|
||||
const char *, int, int, Token *, Token *,
|
||||
Token *);
|
||||
int _PyPegen_FstringParser_ConcatAndDel(FstringParser *, PyObject *);
|
||||
expr_ty _PyPegen_FstringParser_Finish(Parser *, FstringParser *, Token *, Token *);
|
||||
void _PyPegen_FstringParser_Dealloc(FstringParser *);
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue