2021-03-23 20:51:50 -03:00
|
|
|
#ifndef Py_INTERNAL_COMPILE_H
|
|
|
|
#define Py_INTERNAL_COMPILE_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
|
|
#endif
|
|
|
|
|
2021-03-23 22:23:01 -03:00
|
|
|
struct _arena; // Type defined in pycore_pyarena.h
|
|
|
|
struct _mod; // Type defined in pycore_ast.h
|
2021-03-23 20:51:50 -03:00
|
|
|
|
|
|
|
// Export the symbol for test_peg_generator (built as a library)
|
|
|
|
PyAPI_FUNC(PyCodeObject*) _PyAST_Compile(
|
|
|
|
struct _mod *mod,
|
|
|
|
PyObject *filename,
|
|
|
|
PyCompilerFlags *flags,
|
|
|
|
int optimize,
|
2021-03-23 22:23:01 -03:00
|
|
|
struct _arena *arena);
|
2022-11-02 12:13:07 -03:00
|
|
|
|
|
|
|
int _PyFuture_FromAST(
|
2021-03-23 20:51:50 -03:00
|
|
|
struct _mod * mod,
|
2022-11-02 12:13:07 -03:00
|
|
|
PyObject *filename,
|
|
|
|
PyFutureFeatures* futures);
|
2021-03-23 20:51:50 -03:00
|
|
|
|
|
|
|
extern PyObject* _Py_Mangle(PyObject *p, PyObject *name);
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int optimize;
|
|
|
|
int ff_features;
|
2021-04-25 07:38:00 -03:00
|
|
|
|
|
|
|
int recursion_depth; /* current recursion depth */
|
|
|
|
int recursion_limit; /* recursion limit */
|
2021-03-23 20:51:50 -03:00
|
|
|
} _PyASTOptimizeState;
|
|
|
|
|
|
|
|
extern int _PyAST_Optimize(
|
|
|
|
struct _mod *,
|
2021-03-23 22:23:01 -03:00
|
|
|
struct _arena *arena,
|
2021-03-23 20:51:50 -03:00
|
|
|
_PyASTOptimizeState *state);
|
|
|
|
|
2022-08-24 07:02:53 -03:00
|
|
|
/* Access compiler internals for unit testing */
|
2022-11-14 09:56:40 -04:00
|
|
|
|
|
|
|
PyAPI_FUNC(PyObject*) _PyCompile_CodeGen(
|
|
|
|
PyObject *ast,
|
|
|
|
PyObject *filename,
|
|
|
|
PyCompilerFlags *flags,
|
|
|
|
int optimize);
|
|
|
|
|
2022-08-24 07:02:53 -03:00
|
|
|
PyAPI_FUNC(PyObject*) _PyCompile_OptimizeCfg(
|
|
|
|
PyObject *instructions,
|
|
|
|
PyObject *consts);
|
|
|
|
|
2021-03-23 20:51:50 -03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !Py_INTERNAL_COMPILE_H */
|