blob: fc9f65c97a22967183175ecbe58c10c525eb6cf2 [file] [log] [blame]
Victor Stinner5cf47822020-11-02 22:03:28 +01001// File automatically generated by Parser/asdl_c.py.
Jeremy Hylton3e0055f2005-10-20 19:59:25 +00002
Victor Stinner5f2df882018-11-12 00:56:19 +01003#ifndef Py_PYTHON_AST_H
4#define Py_PYTHON_AST_H
5#ifdef __cplusplus
6extern "C" {
7#endif
8
Zackery Spytz421a72a2019-09-12 03:27:14 -06009#ifndef Py_LIMITED_API
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000010#include "asdl.h"
11
Victor Stinner3bb183d2018-11-22 18:38:38 +010012#undef Yield /* undefine macro conflicting with <winbase.h> */
Victor Stinner5f2df882018-11-12 00:56:19 +010013
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000014typedef struct _mod *mod_ty;
15
16typedef struct _stmt *stmt_ty;
17
18typedef struct _expr *expr_ty;
19
Serhiy Storchaka6b975982020-03-17 23:41:08 +020020typedef enum _expr_context { Load=1, Store=2, Del=3 } expr_context_ty;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000021
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000022typedef enum _boolop { And=1, Or=2 } boolop_ty;
23
Benjamin Petersond51374e2014-04-09 23:55:56 -040024typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7,
25 LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12,
26 FloorDiv=13 } operator_ty;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000027
28typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
29
30typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8,
31 In=9, NotIn=10 } cmpop_ty;
32
33typedef struct _comprehension *comprehension_ty;
34
35typedef struct _excepthandler *excepthandler_ty;
36
37typedef struct _arguments *arguments_ty;
38
Neal Norwitzc1505362006-12-28 06:47:50 +000039typedef struct _arg *arg_ty;
40
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000041typedef struct _keyword *keyword_ty;
42
43typedef struct _alias *alias_ty;
44
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -050045typedef struct _withitem *withitem_ty;
46
Guido van Rossumdcfcd142019-01-31 03:40:27 -080047typedef struct _type_ignore *type_ignore_ty;
48
Neal Norwitz7b5a6042005-11-13 19:14:20 +000049
Pablo Galindoa5634c42020-09-16 19:42:00 +010050typedef struct {
51 _ASDL_SEQ_HEAD
52 mod_ty typed_elements[1];
53} asdl_mod_seq;
54
55asdl_mod_seq *_Py_asdl_mod_seq_new(Py_ssize_t size, PyArena *arena);
56
57typedef struct {
58 _ASDL_SEQ_HEAD
59 stmt_ty typed_elements[1];
60} asdl_stmt_seq;
61
62asdl_stmt_seq *_Py_asdl_stmt_seq_new(Py_ssize_t size, PyArena *arena);
63
64typedef struct {
65 _ASDL_SEQ_HEAD
66 expr_ty typed_elements[1];
67} asdl_expr_seq;
68
69asdl_expr_seq *_Py_asdl_expr_seq_new(Py_ssize_t size, PyArena *arena);
70
71typedef struct {
72 _ASDL_SEQ_HEAD
73 comprehension_ty typed_elements[1];
74} asdl_comprehension_seq;
75
76asdl_comprehension_seq *_Py_asdl_comprehension_seq_new(Py_ssize_t size, PyArena
77 *arena);
78
79typedef struct {
80 _ASDL_SEQ_HEAD
81 excepthandler_ty typed_elements[1];
82} asdl_excepthandler_seq;
83
84asdl_excepthandler_seq *_Py_asdl_excepthandler_seq_new(Py_ssize_t size, PyArena
85 *arena);
86
87typedef struct {
88 _ASDL_SEQ_HEAD
89 arguments_ty typed_elements[1];
90} asdl_arguments_seq;
91
92asdl_arguments_seq *_Py_asdl_arguments_seq_new(Py_ssize_t size, PyArena *arena);
93
94typedef struct {
95 _ASDL_SEQ_HEAD
96 arg_ty typed_elements[1];
97} asdl_arg_seq;
98
99asdl_arg_seq *_Py_asdl_arg_seq_new(Py_ssize_t size, PyArena *arena);
100
101typedef struct {
102 _ASDL_SEQ_HEAD
103 keyword_ty typed_elements[1];
104} asdl_keyword_seq;
105
106asdl_keyword_seq *_Py_asdl_keyword_seq_new(Py_ssize_t size, PyArena *arena);
107
108typedef struct {
109 _ASDL_SEQ_HEAD
110 alias_ty typed_elements[1];
111} asdl_alias_seq;
112
113asdl_alias_seq *_Py_asdl_alias_seq_new(Py_ssize_t size, PyArena *arena);
114
115typedef struct {
116 _ASDL_SEQ_HEAD
117 withitem_ty typed_elements[1];
118} asdl_withitem_seq;
119
120asdl_withitem_seq *_Py_asdl_withitem_seq_new(Py_ssize_t size, PyArena *arena);
121
122typedef struct {
123 _ASDL_SEQ_HEAD
124 type_ignore_ty typed_elements[1];
125} asdl_type_ignore_seq;
126
127asdl_type_ignore_seq *_Py_asdl_type_ignore_seq_new(Py_ssize_t size, PyArena
128 *arena);
129
130
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000131enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
Batuhan Taşkayad82e4692020-03-04 19:16:47 +0300132 FunctionType_kind=4};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000133struct _mod {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200134 enum _mod_kind kind;
135 union {
136 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100137 asdl_stmt_seq *body;
138 asdl_type_ignore_seq *type_ignores;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200139 } Module;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300140
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200141 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100142 asdl_stmt_seq *body;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200143 } Interactive;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300144
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200145 struct {
146 expr_ty body;
147 } Expression;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300148
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200149 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100150 asdl_expr_seq *argtypes;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800151 expr_ty returns;
152 } FunctionType;
153
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200154 } v;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000155};
156
Yury Selivanov75445082015-05-11 22:57:16 -0400157enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3,
158 Return_kind=4, Delete_kind=5, Assign_kind=6,
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700159 AugAssign_kind=7, AnnAssign_kind=8, For_kind=9,
160 AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13,
161 AsyncWith_kind=14, Raise_kind=15, Try_kind=16,
162 Assert_kind=17, Import_kind=18, ImportFrom_kind=19,
163 Global_kind=20, Nonlocal_kind=21, Expr_kind=22, Pass_kind=23,
164 Break_kind=24, Continue_kind=25};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000165struct _stmt {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200166 enum _stmt_kind kind;
167 union {
168 struct {
169 identifier name;
170 arguments_ty args;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100171 asdl_stmt_seq *body;
172 asdl_expr_seq *decorator_list;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200173 expr_ty returns;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800174 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200175 } FunctionDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300176
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200177 struct {
178 identifier name;
Yury Selivanov75445082015-05-11 22:57:16 -0400179 arguments_ty args;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100180 asdl_stmt_seq *body;
181 asdl_expr_seq *decorator_list;
Yury Selivanov75445082015-05-11 22:57:16 -0400182 expr_ty returns;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800183 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400184 } AsyncFunctionDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300185
Yury Selivanov75445082015-05-11 22:57:16 -0400186 struct {
187 identifier name;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100188 asdl_expr_seq *bases;
189 asdl_keyword_seq *keywords;
190 asdl_stmt_seq *body;
191 asdl_expr_seq *decorator_list;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200192 } ClassDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300193
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200194 struct {
195 expr_ty value;
196 } Return;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300197
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200198 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100199 asdl_expr_seq *targets;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200200 } Delete;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300201
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200202 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100203 asdl_expr_seq *targets;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200204 expr_ty value;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800205 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200206 } Assign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300207
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200208 struct {
209 expr_ty target;
210 operator_ty op;
211 expr_ty value;
212 } AugAssign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300213
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200214 struct {
215 expr_ty target;
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700216 expr_ty annotation;
217 expr_ty value;
218 int simple;
219 } AnnAssign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300220
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700221 struct {
222 expr_ty target;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200223 expr_ty iter;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100224 asdl_stmt_seq *body;
225 asdl_stmt_seq *orelse;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800226 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200227 } For;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300228
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200229 struct {
Yury Selivanov75445082015-05-11 22:57:16 -0400230 expr_ty target;
231 expr_ty iter;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100232 asdl_stmt_seq *body;
233 asdl_stmt_seq *orelse;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800234 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400235 } AsyncFor;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300236
Yury Selivanov75445082015-05-11 22:57:16 -0400237 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200238 expr_ty test;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100239 asdl_stmt_seq *body;
240 asdl_stmt_seq *orelse;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200241 } While;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300242
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200243 struct {
244 expr_ty test;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100245 asdl_stmt_seq *body;
246 asdl_stmt_seq *orelse;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200247 } If;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300248
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200249 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100250 asdl_withitem_seq *items;
251 asdl_stmt_seq *body;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800252 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200253 } With;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300254
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200255 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100256 asdl_withitem_seq *items;
257 asdl_stmt_seq *body;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800258 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400259 } AsyncWith;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300260
Yury Selivanov75445082015-05-11 22:57:16 -0400261 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200262 expr_ty exc;
263 expr_ty cause;
264 } Raise;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300265
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200266 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100267 asdl_stmt_seq *body;
268 asdl_excepthandler_seq *handlers;
269 asdl_stmt_seq *orelse;
270 asdl_stmt_seq *finalbody;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200271 } Try;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300272
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200273 struct {
274 expr_ty test;
275 expr_ty msg;
276 } Assert;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300277
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200278 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100279 asdl_alias_seq *names;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200280 } Import;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300281
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200282 struct {
283 identifier module;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100284 asdl_alias_seq *names;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200285 int level;
286 } ImportFrom;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300287
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200288 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100289 asdl_identifier_seq *names;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200290 } Global;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300291
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200292 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100293 asdl_identifier_seq *names;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200294 } Nonlocal;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300295
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200296 struct {
297 expr_ty value;
298 } Expr;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300299
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200300 } v;
301 int lineno;
302 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000303 int end_lineno;
304 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000305};
306
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700307enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_kind=4,
308 Lambda_kind=5, IfExp_kind=6, Dict_kind=7, Set_kind=8,
309 ListComp_kind=9, SetComp_kind=10, DictComp_kind=11,
310 GeneratorExp_kind=12, Await_kind=13, Yield_kind=14,
311 YieldFrom_kind=15, Compare_kind=16, Call_kind=17,
312 FormattedValue_kind=18, JoinedStr_kind=19, Constant_kind=20,
313 Attribute_kind=21, Subscript_kind=22, Starred_kind=23,
Serhiy Storchaka13d52c22020-03-10 18:52:34 +0200314 Name_kind=24, List_kind=25, Tuple_kind=26, Slice_kind=27};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000315struct _expr {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200316 enum _expr_kind kind;
317 union {
318 struct {
319 boolop_ty op;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100320 asdl_expr_seq *values;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200321 } BoolOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300322
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200323 struct {
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700324 expr_ty target;
325 expr_ty value;
326 } NamedExpr;
327
328 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200329 expr_ty left;
330 operator_ty op;
331 expr_ty right;
332 } BinOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300333
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200334 struct {
335 unaryop_ty op;
336 expr_ty operand;
337 } UnaryOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300338
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200339 struct {
340 arguments_ty args;
341 expr_ty body;
342 } Lambda;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300343
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200344 struct {
345 expr_ty test;
346 expr_ty body;
347 expr_ty orelse;
348 } IfExp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300349
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200350 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100351 asdl_expr_seq *keys;
352 asdl_expr_seq *values;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200353 } Dict;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300354
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200355 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100356 asdl_expr_seq *elts;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200357 } Set;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300358
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200359 struct {
360 expr_ty elt;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100361 asdl_comprehension_seq *generators;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200362 } ListComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300363
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200364 struct {
365 expr_ty elt;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100366 asdl_comprehension_seq *generators;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200367 } SetComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300368
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200369 struct {
370 expr_ty key;
371 expr_ty value;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100372 asdl_comprehension_seq *generators;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200373 } DictComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300374
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200375 struct {
376 expr_ty elt;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100377 asdl_comprehension_seq *generators;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200378 } GeneratorExp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300379
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200380 struct {
381 expr_ty value;
Yury Selivanov75445082015-05-11 22:57:16 -0400382 } Await;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300383
Yury Selivanov75445082015-05-11 22:57:16 -0400384 struct {
385 expr_ty value;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200386 } Yield;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300387
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200388 struct {
389 expr_ty value;
390 } YieldFrom;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300391
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200392 struct {
393 expr_ty left;
394 asdl_int_seq *ops;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100395 asdl_expr_seq *comparators;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200396 } Compare;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300397
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200398 struct {
399 expr_ty func;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100400 asdl_expr_seq *args;
401 asdl_keyword_seq *keywords;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200402 } Call;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300403
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200404 struct {
Eric V. Smith235a6f02015-09-19 14:51:32 -0400405 expr_ty value;
406 int conversion;
407 expr_ty format_spec;
408 } FormattedValue;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300409
Eric V. Smith235a6f02015-09-19 14:51:32 -0400410 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100411 asdl_expr_seq *values;
Eric V. Smith235a6f02015-09-19 14:51:32 -0400412 } JoinedStr;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300413
Eric V. Smith235a6f02015-09-19 14:51:32 -0400414 struct {
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100415 constant value;
Guido van Rossum10f8ce62019-03-13 13:00:46 -0700416 string kind;
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100417 } Constant;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300418
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100419 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200420 expr_ty value;
421 identifier attr;
422 expr_context_ty ctx;
423 } Attribute;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300424
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200425 struct {
426 expr_ty value;
Serhiy Storchaka13d52c22020-03-10 18:52:34 +0200427 expr_ty slice;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200428 expr_context_ty ctx;
429 } Subscript;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300430
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200431 struct {
432 expr_ty value;
433 expr_context_ty ctx;
434 } Starred;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300435
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200436 struct {
437 identifier id;
438 expr_context_ty ctx;
439 } Name;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300440
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200441 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100442 asdl_expr_seq *elts;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200443 expr_context_ty ctx;
444 } List;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300445
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200446 struct {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100447 asdl_expr_seq *elts;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200448 expr_context_ty ctx;
449 } Tuple;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300450
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200451 struct {
452 expr_ty lower;
453 expr_ty upper;
454 expr_ty step;
455 } Slice;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300456
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200457 } v;
Serhiy Storchaka13d52c22020-03-10 18:52:34 +0200458 int lineno;
459 int col_offset;
460 int end_lineno;
461 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000462};
463
464struct _comprehension {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200465 expr_ty target;
466 expr_ty iter;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100467 asdl_expr_seq *ifs;
Yury Selivanov52c4e7c2016-09-09 10:36:01 -0700468 int is_async;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000469};
470
Neal Norwitzad74aa82008-03-31 05:14:30 +0000471enum _excepthandler_kind {ExceptHandler_kind=1};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000472struct _excepthandler {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200473 enum _excepthandler_kind kind;
474 union {
475 struct {
476 expr_ty type;
477 identifier name;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100478 asdl_stmt_seq *body;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200479 } ExceptHandler;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300480
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200481 } v;
482 int lineno;
483 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000484 int end_lineno;
485 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000486};
487
488struct _arguments {
Pablo Galindoa5634c42020-09-16 19:42:00 +0100489 asdl_arg_seq *posonlyargs;
490 asdl_arg_seq *args;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200491 arg_ty vararg;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100492 asdl_arg_seq *kwonlyargs;
493 asdl_expr_seq *kw_defaults;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200494 arg_ty kwarg;
Pablo Galindoa5634c42020-09-16 19:42:00 +0100495 asdl_expr_seq *defaults;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000496};
497
Neal Norwitzc1505362006-12-28 06:47:50 +0000498struct _arg {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200499 identifier arg;
500 expr_ty annotation;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800501 string type_comment;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200502 int lineno;
503 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000504 int end_lineno;
505 int end_col_offset;
Neal Norwitzc1505362006-12-28 06:47:50 +0000506};
507
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000508struct _keyword {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200509 identifier arg;
510 expr_ty value;
Pablo Galindo168660b2020-04-02 00:47:39 +0100511 int lineno;
512 int col_offset;
513 int end_lineno;
514 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000515};
516
517struct _alias {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200518 identifier name;
519 identifier asname;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000520};
521
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500522struct _withitem {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200523 expr_ty context_expr;
524 expr_ty optional_vars;
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500525};
526
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800527enum _type_ignore_kind {TypeIgnore_kind=1};
528struct _type_ignore {
529 enum _type_ignore_kind kind;
530 union {
531 struct {
532 int lineno;
Michael J. Sullivan933e1502019-05-22 07:54:20 -0700533 string tag;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800534 } TypeIgnore;
535
536 } v;
537};
538
Neal Norwitz7b5a6042005-11-13 19:14:20 +0000539
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000540// Note: these macros affect function definitions, not only call sites.
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800541#define Module(a0, a1, a2) _Py_Module(a0, a1, a2)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100542mod_ty _Py_Module(asdl_stmt_seq * body, asdl_type_ignore_seq * type_ignores,
543 PyArena *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000544#define Interactive(a0, a1) _Py_Interactive(a0, a1)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100545mod_ty _Py_Interactive(asdl_stmt_seq * body, PyArena *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000546#define Expression(a0, a1) _Py_Expression(a0, a1)
547mod_ty _Py_Expression(expr_ty body, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800548#define FunctionType(a0, a1, a2) _Py_FunctionType(a0, a1, a2)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100549mod_ty _Py_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena
550 *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800551#define FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100552stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
553 body, asdl_expr_seq * decorator_list, expr_ty returns,
554 string type_comment, int lineno, int col_offset, int
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800555 end_lineno, int end_col_offset, PyArena *arena);
556#define AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) _Py_AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100557stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_stmt_seq
558 * body, asdl_expr_seq * decorator_list, expr_ty
559 returns, string type_comment, int lineno, int
560 col_offset, int end_lineno, int end_col_offset,
561 PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000562#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100563stmt_ty _Py_ClassDef(identifier name, asdl_expr_seq * bases, asdl_keyword_seq *
564 keywords, asdl_stmt_seq * body, asdl_expr_seq *
565 decorator_list, int lineno, int col_offset, int
566 end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000567#define Return(a0, a1, a2, a3, a4, a5) _Py_Return(a0, a1, a2, a3, a4, a5)
568stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, int end_lineno,
569 int end_col_offset, PyArena *arena);
570#define Delete(a0, a1, a2, a3, a4, a5) _Py_Delete(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100571stmt_ty _Py_Delete(asdl_expr_seq * targets, int lineno, int col_offset, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000572 end_lineno, int end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800573#define Assign(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Assign(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100574stmt_ty _Py_Assign(asdl_expr_seq * targets, expr_ty value, string type_comment,
575 int lineno, int col_offset, int end_lineno, int
576 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000577#define AugAssign(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AugAssign(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000578stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000579 lineno, int col_offset, int end_lineno, int
580 end_col_offset, PyArena *arena);
581#define AnnAssign(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_AnnAssign(a0, a1, a2, a3, a4, a5, a6, a7, a8)
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700582stmt_ty _Py_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000583 simple, int lineno, int col_offset, int end_lineno, int
584 end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800585#define For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100586stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
587 asdl_stmt_seq * orelse, string type_comment, int lineno, int
588 col_offset, int end_lineno, int end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800589#define AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100590stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
591 asdl_stmt_seq * orelse, string type_comment, int lineno,
592 int col_offset, int end_lineno, int end_col_offset,
593 PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000594#define While(a0, a1, a2, a3, a4, a5, a6, a7) _Py_While(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100595stmt_ty _Py_While(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse,
596 int lineno, int col_offset, int end_lineno, int
597 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000598#define If(a0, a1, a2, a3, a4, a5, a6, a7) _Py_If(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100599stmt_ty _Py_If(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse, int
600 lineno, int col_offset, int end_lineno, int end_col_offset,
601 PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800602#define With(a0, a1, a2, a3, a4, a5, a6, a7) _Py_With(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100603stmt_ty _Py_With(asdl_withitem_seq * items, asdl_stmt_seq * body, string
604 type_comment, int lineno, int col_offset, int end_lineno, int
605 end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800606#define AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100607stmt_ty _Py_AsyncWith(asdl_withitem_seq * items, asdl_stmt_seq * body, string
608 type_comment, int lineno, int col_offset, int end_lineno,
609 int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000610#define Raise(a0, a1, a2, a3, a4, a5, a6) _Py_Raise(a0, a1, a2, a3, a4, a5, a6)
611stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, int
612 end_lineno, int end_col_offset, PyArena *arena);
613#define Try(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_Try(a0, a1, a2, a3, a4, a5, a6, a7, a8)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100614stmt_ty _Py_Try(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
615 asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int lineno,
616 int col_offset, int end_lineno, int end_col_offset, PyArena
617 *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000618#define Assert(a0, a1, a2, a3, a4, a5, a6) _Py_Assert(a0, a1, a2, a3, a4, a5, a6)
619stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, int
620 end_lineno, int end_col_offset, PyArena *arena);
621#define Import(a0, a1, a2, a3, a4, a5) _Py_Import(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100622stmt_ty _Py_Import(asdl_alias_seq * names, int lineno, int col_offset, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000623 end_lineno, int end_col_offset, PyArena *arena);
624#define ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100625stmt_ty _Py_ImportFrom(identifier module, asdl_alias_seq * names, int level,
626 int lineno, int col_offset, int end_lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000627 end_col_offset, PyArena *arena);
628#define Global(a0, a1, a2, a3, a4, a5) _Py_Global(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100629stmt_ty _Py_Global(asdl_identifier_seq * names, int lineno, int col_offset, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000630 end_lineno, int end_col_offset, PyArena *arena);
631#define Nonlocal(a0, a1, a2, a3, a4, a5) _Py_Nonlocal(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100632stmt_ty _Py_Nonlocal(asdl_identifier_seq * names, int lineno, int col_offset,
633 int end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000634#define Expr(a0, a1, a2, a3, a4, a5) _Py_Expr(a0, a1, a2, a3, a4, a5)
635stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, int end_lineno, int
636 end_col_offset, PyArena *arena);
637#define Pass(a0, a1, a2, a3, a4) _Py_Pass(a0, a1, a2, a3, a4)
638stmt_ty _Py_Pass(int lineno, int col_offset, int end_lineno, int
639 end_col_offset, PyArena *arena);
640#define Break(a0, a1, a2, a3, a4) _Py_Break(a0, a1, a2, a3, a4)
641stmt_ty _Py_Break(int lineno, int col_offset, int end_lineno, int
642 end_col_offset, PyArena *arena);
643#define Continue(a0, a1, a2, a3, a4) _Py_Continue(a0, a1, a2, a3, a4)
644stmt_ty _Py_Continue(int lineno, int col_offset, int end_lineno, int
645 end_col_offset, PyArena *arena);
646#define BoolOp(a0, a1, a2, a3, a4, a5, a6) _Py_BoolOp(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100647expr_ty _Py_BoolOp(boolop_ty op, asdl_expr_seq * values, int lineno, int
648 col_offset, int end_lineno, int end_col_offset, PyArena
649 *arena);
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700650#define NamedExpr(a0, a1, a2, a3, a4, a5, a6) _Py_NamedExpr(a0, a1, a2, a3, a4, a5, a6)
651expr_ty _Py_NamedExpr(expr_ty target, expr_ty value, int lineno, int
652 col_offset, int end_lineno, int end_col_offset, PyArena
653 *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000654#define BinOp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_BinOp(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000655expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000656 col_offset, int end_lineno, int end_col_offset, PyArena
657 *arena);
658#define UnaryOp(a0, a1, a2, a3, a4, a5, a6) _Py_UnaryOp(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000659expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000660 int end_lineno, int end_col_offset, PyArena *arena);
661#define Lambda(a0, a1, a2, a3, a4, a5, a6) _Py_Lambda(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000662expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000663 int end_lineno, int end_col_offset, PyArena *arena);
664#define IfExp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_IfExp(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000665expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000666 col_offset, int end_lineno, int end_col_offset, PyArena
667 *arena);
668#define Dict(a0, a1, a2, a3, a4, a5, a6) _Py_Dict(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100669expr_ty _Py_Dict(asdl_expr_seq * keys, asdl_expr_seq * values, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000670 col_offset, int end_lineno, int end_col_offset, PyArena
671 *arena);
672#define Set(a0, a1, a2, a3, a4, a5) _Py_Set(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100673expr_ty _Py_Set(asdl_expr_seq * elts, int lineno, int col_offset, int
674 end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000675#define ListComp(a0, a1, a2, a3, a4, a5, a6) _Py_ListComp(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100676expr_ty _Py_ListComp(expr_ty elt, asdl_comprehension_seq * generators, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000677 lineno, int col_offset, int end_lineno, int
678 end_col_offset, PyArena *arena);
Pablo Galindoa5634c42020-09-16 19:42:00 +0100679#define SetComp(a0, a1, a2, a3, a4, a5, a6) _Py_SetComp(a0, a1, a2, a3, a4, a5, a6)
680expr_ty _Py_SetComp(expr_ty elt, asdl_comprehension_seq * generators, int
681 lineno, int col_offset, int end_lineno, int end_col_offset,
682 PyArena *arena);
683#define DictComp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_DictComp(a0, a1, a2, a3, a4, a5, a6, a7)
684expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_comprehension_seq *
685 generators, int lineno, int col_offset, int end_lineno,
686 int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000687#define GeneratorExp(a0, a1, a2, a3, a4, a5, a6) _Py_GeneratorExp(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100688expr_ty _Py_GeneratorExp(expr_ty elt, asdl_comprehension_seq * generators, int
689 lineno, int col_offset, int end_lineno, int
690 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000691#define Await(a0, a1, a2, a3, a4, a5) _Py_Await(a0, a1, a2, a3, a4, a5)
692expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, int end_lineno,
693 int end_col_offset, PyArena *arena);
694#define Yield(a0, a1, a2, a3, a4, a5) _Py_Yield(a0, a1, a2, a3, a4, a5)
695expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, int end_lineno,
696 int end_col_offset, PyArena *arena);
697#define YieldFrom(a0, a1, a2, a3, a4, a5) _Py_YieldFrom(a0, a1, a2, a3, a4, a5)
698expr_ty _Py_YieldFrom(expr_ty value, int lineno, int col_offset, int
699 end_lineno, int end_col_offset, PyArena *arena);
700#define Compare(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Compare(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100701expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_expr_seq *
702 comparators, int lineno, int col_offset, int end_lineno,
703 int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000704#define Call(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Call(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100705expr_ty _Py_Call(expr_ty func, asdl_expr_seq * args, asdl_keyword_seq *
706 keywords, int lineno, int col_offset, int end_lineno, int
707 end_col_offset, PyArena *arena);
Eric V. Smith6f6ff8a2019-05-27 15:31:52 -0400708#define FormattedValue(a0, a1, a2, a3, a4, a5, a6, a7) _Py_FormattedValue(a0, a1, a2, a3, a4, a5, a6, a7)
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000709expr_ty _Py_FormattedValue(expr_ty value, int conversion, expr_ty format_spec,
Eric V. Smith6f6ff8a2019-05-27 15:31:52 -0400710 int lineno, int col_offset, int end_lineno, int
711 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000712#define JoinedStr(a0, a1, a2, a3, a4, a5) _Py_JoinedStr(a0, a1, a2, a3, a4, a5)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100713expr_ty _Py_JoinedStr(asdl_expr_seq * values, int lineno, int col_offset, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000714 end_lineno, int end_col_offset, PyArena *arena);
Guido van Rossum10f8ce62019-03-13 13:00:46 -0700715#define Constant(a0, a1, a2, a3, a4, a5, a6) _Py_Constant(a0, a1, a2, a3, a4, a5, a6)
716expr_ty _Py_Constant(constant value, string kind, int lineno, int col_offset,
717 int end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000718#define Attribute(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Attribute(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000719expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000720 lineno, int col_offset, int end_lineno, int
721 end_col_offset, PyArena *arena);
722#define Subscript(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Subscript(a0, a1, a2, a3, a4, a5, a6, a7)
Serhiy Storchaka13d52c22020-03-10 18:52:34 +0200723expr_ty _Py_Subscript(expr_ty value, expr_ty slice, expr_context_ty ctx, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000724 lineno, int col_offset, int end_lineno, int
725 end_col_offset, PyArena *arena);
726#define Starred(a0, a1, a2, a3, a4, a5, a6) _Py_Starred(a0, a1, a2, a3, a4, a5, a6)
Guido van Rossum0368b722007-05-11 16:50:42 +0000727expr_ty _Py_Starred(expr_ty value, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000728 col_offset, int end_lineno, int end_col_offset, PyArena
729 *arena);
730#define Name(a0, a1, a2, a3, a4, a5, a6) _Py_Name(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000731expr_ty _Py_Name(identifier id, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000732 col_offset, int end_lineno, int end_col_offset, PyArena
733 *arena);
734#define List(a0, a1, a2, a3, a4, a5, a6) _Py_List(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100735expr_ty _Py_List(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000736 col_offset, int end_lineno, int end_col_offset, PyArena
737 *arena);
738#define Tuple(a0, a1, a2, a3, a4, a5, a6) _Py_Tuple(a0, a1, a2, a3, a4, a5, a6)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100739expr_ty _Py_Tuple(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000740 col_offset, int end_lineno, int end_col_offset, PyArena
741 *arena);
Serhiy Storchaka13d52c22020-03-10 18:52:34 +0200742#define Slice(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Slice(a0, a1, a2, a3, a4, a5, a6, a7)
743expr_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, int lineno, int
744 col_offset, int end_lineno, int end_col_offset, PyArena
745 *arena);
Yury Selivanov52c4e7c2016-09-09 10:36:01 -0700746#define comprehension(a0, a1, a2, a3, a4) _Py_comprehension(a0, a1, a2, a3, a4)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100747comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_expr_seq
748 * ifs, int is_async, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000749#define ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100750excepthandler_ty _Py_ExceptHandler(expr_ty type, identifier name, asdl_stmt_seq
751 * body, int lineno, int col_offset, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000752 end_lineno, int end_col_offset, PyArena
Thomas Woutersb2137042007-02-01 18:02:27 +0000753 *arena);
Pablo Galindo8c77b8c2019-04-29 13:36:57 +0100754#define arguments(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arguments(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindoa5634c42020-09-16 19:42:00 +0100755arguments_ty _Py_arguments(asdl_arg_seq * posonlyargs, asdl_arg_seq * args,
756 arg_ty vararg, asdl_arg_seq * kwonlyargs,
757 asdl_expr_seq * kw_defaults, arg_ty kwarg,
758 asdl_expr_seq * defaults, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800759#define arg(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arg(a0, a1, a2, a3, a4, a5, a6, a7)
760arg_ty _Py_arg(identifier arg, expr_ty annotation, string type_comment, int
761 lineno, int col_offset, int end_lineno, int end_col_offset,
762 PyArena *arena);
Pablo Galindo168660b2020-04-02 00:47:39 +0100763#define keyword(a0, a1, a2, a3, a4, a5, a6) _Py_keyword(a0, a1, a2, a3, a4, a5, a6)
764keyword_ty _Py_keyword(identifier arg, expr_ty value, int lineno, int
765 col_offset, int end_lineno, int end_col_offset, PyArena
766 *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000767#define alias(a0, a1, a2) _Py_alias(a0, a1, a2)
768alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena);
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500769#define withitem(a0, a1, a2) _Py_withitem(a0, a1, a2)
770withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena
771 *arena);
Michael J. Sullivan933e1502019-05-22 07:54:20 -0700772#define TypeIgnore(a0, a1, a2) _Py_TypeIgnore(a0, a1, a2)
773type_ignore_ty _Py_TypeIgnore(int lineno, string tag, PyArena *arena);
Neal Norwitz7b5a6042005-11-13 19:14:20 +0000774
Martin v. Löwisbd260da2006-02-26 19:42:26 +0000775PyObject* PyAST_mod2obj(mod_ty t);
Neal Norwitzdb4115f2008-03-31 04:20:05 +0000776mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
Martin v. Löwis618dc5e2008-03-30 20:03:44 +0000777int PyAST_Check(PyObject* obj);
Zackery Spytz421a72a2019-09-12 03:27:14 -0600778#endif /* !Py_LIMITED_API */
Victor Stinner5f2df882018-11-12 00:56:19 +0100779
780#ifdef __cplusplus
781}
782#endif
783#endif /* !Py_PYTHON_AST_H */