blob: b9232b1d4630743a7582fb8d664ebc19b62bcd01 [file] [log] [blame]
Thomas Wouterscf297e42007-02-23 15:07:44 +00001/* 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
20typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5,
Serhiy Storchakad8b3a982019-03-05 20:42:06 +020021 Param=6 } expr_context_ty;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000022
23typedef struct _slice *slice_ty;
24
25typedef enum _boolop { And=1, Or=2 } boolop_ty;
26
Benjamin Petersond51374e2014-04-09 23:55:56 -040027typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7,
28 LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12,
29 FloorDiv=13 } operator_ty;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000030
31typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
32
33typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8,
34 In=9, NotIn=10 } cmpop_ty;
35
36typedef struct _comprehension *comprehension_ty;
37
38typedef struct _excepthandler *excepthandler_ty;
39
40typedef struct _arguments *arguments_ty;
41
Neal Norwitzc1505362006-12-28 06:47:50 +000042typedef struct _arg *arg_ty;
43
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000044typedef struct _keyword *keyword_ty;
45
46typedef struct _alias *alias_ty;
47
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -050048typedef struct _withitem *withitem_ty;
49
Guido van Rossumdcfcd142019-01-31 03:40:27 -080050typedef struct _type_ignore *type_ignore_ty;
51
Neal Norwitz7b5a6042005-11-13 19:14:20 +000052
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000053enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
Guido van Rossumdcfcd142019-01-31 03:40:27 -080054 FunctionType_kind=4, Suite_kind=5};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000055struct _mod {
Victor Stinnerce72e1c2013-07-27 00:00:36 +020056 enum _mod_kind kind;
57 union {
58 struct {
59 asdl_seq *body;
Guido van Rossumdcfcd142019-01-31 03:40:27 -080060 asdl_seq *type_ignores;
Victor Stinnerce72e1c2013-07-27 00:00:36 +020061 } Module;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +030062
Victor Stinnerce72e1c2013-07-27 00:00:36 +020063 struct {
64 asdl_seq *body;
65 } Interactive;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +030066
Victor Stinnerce72e1c2013-07-27 00:00:36 +020067 struct {
68 expr_ty body;
69 } Expression;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +030070
Victor Stinnerce72e1c2013-07-27 00:00:36 +020071 struct {
Guido van Rossumdcfcd142019-01-31 03:40:27 -080072 asdl_seq *argtypes;
73 expr_ty returns;
74 } FunctionType;
75
76 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +020077 asdl_seq *body;
78 } Suite;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +030079
Victor Stinnerce72e1c2013-07-27 00:00:36 +020080 } v;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000081};
82
Yury Selivanov75445082015-05-11 22:57:16 -040083enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3,
84 Return_kind=4, Delete_kind=5, Assign_kind=6,
Yury Selivanovf8cb8a12016-09-08 20:50:03 -070085 AugAssign_kind=7, AnnAssign_kind=8, For_kind=9,
86 AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13,
87 AsyncWith_kind=14, Raise_kind=15, Try_kind=16,
88 Assert_kind=17, Import_kind=18, ImportFrom_kind=19,
89 Global_kind=20, Nonlocal_kind=21, Expr_kind=22, Pass_kind=23,
90 Break_kind=24, Continue_kind=25};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000091struct _stmt {
Victor Stinnerce72e1c2013-07-27 00:00:36 +020092 enum _stmt_kind kind;
93 union {
94 struct {
95 identifier name;
96 arguments_ty args;
97 asdl_seq *body;
98 asdl_seq *decorator_list;
99 expr_ty returns;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800100 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200101 } FunctionDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300102
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200103 struct {
104 identifier name;
Yury Selivanov75445082015-05-11 22:57:16 -0400105 arguments_ty args;
106 asdl_seq *body;
107 asdl_seq *decorator_list;
108 expr_ty returns;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800109 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400110 } AsyncFunctionDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300111
Yury Selivanov75445082015-05-11 22:57:16 -0400112 struct {
113 identifier name;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200114 asdl_seq *bases;
115 asdl_seq *keywords;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200116 asdl_seq *body;
117 asdl_seq *decorator_list;
118 } ClassDef;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300119
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200120 struct {
121 expr_ty value;
122 } Return;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300123
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200124 struct {
125 asdl_seq *targets;
126 } Delete;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300127
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200128 struct {
129 asdl_seq *targets;
130 expr_ty value;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800131 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200132 } Assign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300133
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200134 struct {
135 expr_ty target;
136 operator_ty op;
137 expr_ty value;
138 } AugAssign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300139
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200140 struct {
141 expr_ty target;
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700142 expr_ty annotation;
143 expr_ty value;
144 int simple;
145 } AnnAssign;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300146
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700147 struct {
148 expr_ty target;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200149 expr_ty iter;
150 asdl_seq *body;
151 asdl_seq *orelse;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800152 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200153 } For;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300154
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200155 struct {
Yury Selivanov75445082015-05-11 22:57:16 -0400156 expr_ty target;
157 expr_ty iter;
158 asdl_seq *body;
159 asdl_seq *orelse;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800160 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400161 } AsyncFor;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300162
Yury Selivanov75445082015-05-11 22:57:16 -0400163 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200164 expr_ty test;
165 asdl_seq *body;
166 asdl_seq *orelse;
167 } While;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300168
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200169 struct {
170 expr_ty test;
171 asdl_seq *body;
172 asdl_seq *orelse;
173 } If;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300174
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200175 struct {
176 asdl_seq *items;
177 asdl_seq *body;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800178 string type_comment;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200179 } With;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300180
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200181 struct {
Yury Selivanov75445082015-05-11 22:57:16 -0400182 asdl_seq *items;
183 asdl_seq *body;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800184 string type_comment;
Yury Selivanov75445082015-05-11 22:57:16 -0400185 } AsyncWith;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300186
Yury Selivanov75445082015-05-11 22:57:16 -0400187 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200188 expr_ty exc;
189 expr_ty cause;
190 } Raise;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300191
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200192 struct {
193 asdl_seq *body;
194 asdl_seq *handlers;
195 asdl_seq *orelse;
196 asdl_seq *finalbody;
197 } Try;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300198
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200199 struct {
200 expr_ty test;
201 expr_ty msg;
202 } Assert;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300203
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200204 struct {
205 asdl_seq *names;
206 } Import;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300207
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200208 struct {
209 identifier module;
210 asdl_seq *names;
211 int level;
212 } ImportFrom;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300213
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200214 struct {
215 asdl_seq *names;
216 } Global;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300217
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200218 struct {
219 asdl_seq *names;
220 } Nonlocal;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300221
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200222 struct {
223 expr_ty value;
224 } Expr;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300225
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200226 } v;
227 int lineno;
228 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000229 int end_lineno;
230 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000231};
232
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700233enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_kind=4,
234 Lambda_kind=5, IfExp_kind=6, Dict_kind=7, Set_kind=8,
235 ListComp_kind=9, SetComp_kind=10, DictComp_kind=11,
236 GeneratorExp_kind=12, Await_kind=13, Yield_kind=14,
237 YieldFrom_kind=15, Compare_kind=16, Call_kind=17,
238 FormattedValue_kind=18, JoinedStr_kind=19, Constant_kind=20,
239 Attribute_kind=21, Subscript_kind=22, Starred_kind=23,
240 Name_kind=24, List_kind=25, Tuple_kind=26};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000241struct _expr {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200242 enum _expr_kind kind;
243 union {
244 struct {
245 boolop_ty op;
246 asdl_seq *values;
247 } BoolOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300248
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200249 struct {
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700250 expr_ty target;
251 expr_ty value;
252 } NamedExpr;
253
254 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200255 expr_ty left;
256 operator_ty op;
257 expr_ty right;
258 } BinOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300259
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200260 struct {
261 unaryop_ty op;
262 expr_ty operand;
263 } UnaryOp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300264
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200265 struct {
266 arguments_ty args;
267 expr_ty body;
268 } Lambda;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300269
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200270 struct {
271 expr_ty test;
272 expr_ty body;
273 expr_ty orelse;
274 } IfExp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300275
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200276 struct {
277 asdl_seq *keys;
278 asdl_seq *values;
279 } Dict;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300280
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200281 struct {
282 asdl_seq *elts;
283 } Set;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300284
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200285 struct {
286 expr_ty elt;
287 asdl_seq *generators;
288 } ListComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300289
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200290 struct {
291 expr_ty elt;
292 asdl_seq *generators;
293 } SetComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300294
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200295 struct {
296 expr_ty key;
297 expr_ty value;
298 asdl_seq *generators;
299 } DictComp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300300
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200301 struct {
302 expr_ty elt;
303 asdl_seq *generators;
304 } GeneratorExp;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300305
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200306 struct {
307 expr_ty value;
Yury Selivanov75445082015-05-11 22:57:16 -0400308 } Await;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300309
Yury Selivanov75445082015-05-11 22:57:16 -0400310 struct {
311 expr_ty value;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200312 } Yield;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300313
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200314 struct {
315 expr_ty value;
316 } YieldFrom;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300317
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200318 struct {
319 expr_ty left;
320 asdl_int_seq *ops;
321 asdl_seq *comparators;
322 } Compare;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300323
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200324 struct {
325 expr_ty func;
326 asdl_seq *args;
327 asdl_seq *keywords;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200328 } Call;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300329
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200330 struct {
Eric V. Smith235a6f02015-09-19 14:51:32 -0400331 expr_ty value;
332 int conversion;
333 expr_ty format_spec;
334 } FormattedValue;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300335
Eric V. Smith235a6f02015-09-19 14:51:32 -0400336 struct {
337 asdl_seq *values;
338 } JoinedStr;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300339
Eric V. Smith235a6f02015-09-19 14:51:32 -0400340 struct {
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100341 constant value;
Guido van Rossum10f8ce62019-03-13 13:00:46 -0700342 string kind;
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100343 } Constant;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300344
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100345 struct {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200346 expr_ty value;
347 identifier attr;
348 expr_context_ty ctx;
349 } Attribute;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300350
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200351 struct {
352 expr_ty value;
353 slice_ty slice;
354 expr_context_ty ctx;
355 } Subscript;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300356
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200357 struct {
358 expr_ty value;
359 expr_context_ty ctx;
360 } Starred;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300361
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200362 struct {
363 identifier id;
364 expr_context_ty ctx;
365 } Name;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300366
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200367 struct {
368 asdl_seq *elts;
369 expr_context_ty ctx;
370 } List;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300371
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200372 struct {
373 asdl_seq *elts;
374 expr_context_ty ctx;
375 } Tuple;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300376
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200377 } v;
378 int lineno;
379 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000380 int end_lineno;
381 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000382};
383
Georg Brandl52318d62006-09-06 07:06:08 +0000384enum _slice_kind {Slice_kind=1, ExtSlice_kind=2, Index_kind=3};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000385struct _slice {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200386 enum _slice_kind kind;
387 union {
388 struct {
389 expr_ty lower;
390 expr_ty upper;
391 expr_ty step;
392 } Slice;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300393
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200394 struct {
395 asdl_seq *dims;
396 } ExtSlice;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300397
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200398 struct {
399 expr_ty value;
400 } Index;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300401
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200402 } v;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000403};
404
405struct _comprehension {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200406 expr_ty target;
407 expr_ty iter;
408 asdl_seq *ifs;
Yury Selivanov52c4e7c2016-09-09 10:36:01 -0700409 int is_async;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000410};
411
Neal Norwitzad74aa82008-03-31 05:14:30 +0000412enum _excepthandler_kind {ExceptHandler_kind=1};
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000413struct _excepthandler {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200414 enum _excepthandler_kind kind;
415 union {
416 struct {
417 expr_ty type;
418 identifier name;
419 asdl_seq *body;
420 } ExceptHandler;
Serhiy Storchaka5d84cb32017-09-15 06:28:22 +0300421
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200422 } v;
423 int lineno;
424 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000425 int end_lineno;
426 int end_col_offset;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000427};
428
429struct _arguments {
Pablo Galindo8c77b8c2019-04-29 13:36:57 +0100430 asdl_seq *posonlyargs;
Pablo Galindocd6e83b2019-07-15 01:32:18 +0200431 asdl_seq *args;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200432 arg_ty vararg;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200433 asdl_seq *kwonlyargs;
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200434 asdl_seq *kw_defaults;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200435 arg_ty kwarg;
436 asdl_seq *defaults;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000437};
438
Neal Norwitzc1505362006-12-28 06:47:50 +0000439struct _arg {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200440 identifier arg;
441 expr_ty annotation;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800442 string type_comment;
Victor Stinneree4b59c2013-07-27 00:01:35 +0200443 int lineno;
444 int col_offset;
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000445 int end_lineno;
446 int end_col_offset;
Neal Norwitzc1505362006-12-28 06:47:50 +0000447};
448
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000449struct _keyword {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200450 identifier arg;
451 expr_ty value;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000452};
453
454struct _alias {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200455 identifier name;
456 identifier asname;
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000457};
458
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500459struct _withitem {
Victor Stinnerce72e1c2013-07-27 00:00:36 +0200460 expr_ty context_expr;
461 expr_ty optional_vars;
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500462};
463
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800464enum _type_ignore_kind {TypeIgnore_kind=1};
465struct _type_ignore {
466 enum _type_ignore_kind kind;
467 union {
468 struct {
469 int lineno;
Michael J. Sullivan933e1502019-05-22 07:54:20 -0700470 string tag;
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800471 } TypeIgnore;
472
473 } v;
474};
475
Neal Norwitz7b5a6042005-11-13 19:14:20 +0000476
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000477// Note: these macros affect function definitions, not only call sites.
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800478#define Module(a0, a1, a2) _Py_Module(a0, a1, a2)
479mod_ty _Py_Module(asdl_seq * body, asdl_seq * type_ignores, PyArena *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000480#define Interactive(a0, a1) _Py_Interactive(a0, a1)
481mod_ty _Py_Interactive(asdl_seq * body, PyArena *arena);
482#define Expression(a0, a1) _Py_Expression(a0, a1)
483mod_ty _Py_Expression(expr_ty body, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800484#define FunctionType(a0, a1, a2) _Py_FunctionType(a0, a1, a2)
485mod_ty _Py_FunctionType(asdl_seq * argtypes, expr_ty returns, PyArena *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000486#define Suite(a0, a1) _Py_Suite(a0, a1)
487mod_ty _Py_Suite(asdl_seq * body, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800488#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)
Thomas Woutersb2137042007-02-01 18:02:27 +0000489stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body,
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800490 asdl_seq * decorator_list, expr_ty returns, string
491 type_comment, int lineno, int col_offset, int
492 end_lineno, int end_col_offset, PyArena *arena);
493#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)
Yury Selivanov75445082015-05-11 22:57:16 -0400494stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq *
495 body, asdl_seq * decorator_list, expr_ty returns,
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800496 string type_comment, int lineno, int col_offset,
497 int end_lineno, int end_col_offset, PyArena
498 *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000499#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Guido van Rossum52cc1d82007-03-18 15:41:51 +0000500stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords,
Serhiy Storchaka73cbe7a2018-05-29 12:04:55 +0300501 asdl_seq * body, asdl_seq * decorator_list, int lineno,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000502 int col_offset, int end_lineno, int end_col_offset,
503 PyArena *arena);
504#define Return(a0, a1, a2, a3, a4, a5) _Py_Return(a0, a1, a2, a3, a4, a5)
505stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, int end_lineno,
506 int end_col_offset, PyArena *arena);
507#define Delete(a0, a1, a2, a3, a4, a5) _Py_Delete(a0, a1, a2, a3, a4, a5)
508stmt_ty _Py_Delete(asdl_seq * targets, int lineno, int col_offset, int
509 end_lineno, int end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800510#define Assign(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Assign(a0, a1, a2, a3, a4, a5, a6, a7)
511stmt_ty _Py_Assign(asdl_seq * targets, expr_ty value, string type_comment, int
512 lineno, int col_offset, int end_lineno, int end_col_offset,
513 PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000514#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 +0000515stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000516 lineno, int col_offset, int end_lineno, int
517 end_col_offset, PyArena *arena);
518#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 -0700519stmt_ty _Py_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000520 simple, int lineno, int col_offset, int end_lineno, int
521 end_col_offset, PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800522#define For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Thomas Woutersb2137042007-02-01 18:02:27 +0000523stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq *
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800524 orelse, string type_comment, int lineno, int col_offset, int
525 end_lineno, int end_col_offset, PyArena *arena);
526#define AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
Yury Selivanov75445082015-05-11 22:57:16 -0400527stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq *
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800528 orelse, string type_comment, int lineno, int col_offset,
529 int end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000530#define While(a0, a1, a2, a3, a4, a5, a6, a7) _Py_While(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000531stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000532 int col_offset, int end_lineno, int end_col_offset, PyArena
533 *arena);
534#define If(a0, a1, a2, a3, a4, a5, a6, a7) _Py_If(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000535stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000536 int col_offset, int end_lineno, int end_col_offset, PyArena
537 *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800538#define With(a0, a1, a2, a3, a4, a5, a6, a7) _Py_With(a0, a1, a2, a3, a4, a5, a6, a7)
539stmt_ty _Py_With(asdl_seq * items, asdl_seq * body, string type_comment, int
540 lineno, int col_offset, int end_lineno, int end_col_offset,
541 PyArena *arena);
542#define AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7)
543stmt_ty _Py_AsyncWith(asdl_seq * items, asdl_seq * body, string type_comment,
544 int lineno, int col_offset, int end_lineno, int
545 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000546#define Raise(a0, a1, a2, a3, a4, a5, a6) _Py_Raise(a0, a1, a2, a3, a4, a5, a6)
547stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, int
548 end_lineno, int end_col_offset, PyArena *arena);
549#define Try(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_Try(a0, a1, a2, a3, a4, a5, a6, a7, a8)
Benjamin Peterson43af12b2011-05-29 11:43:10 -0500550stmt_ty _Py_Try(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000551 asdl_seq * finalbody, int lineno, int col_offset, int
552 end_lineno, int end_col_offset, PyArena *arena);
553#define Assert(a0, a1, a2, a3, a4, a5, a6) _Py_Assert(a0, a1, a2, a3, a4, a5, a6)
554stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, int
555 end_lineno, int end_col_offset, PyArena *arena);
556#define Import(a0, a1, a2, a3, a4, a5) _Py_Import(a0, a1, a2, a3, a4, a5)
557stmt_ty _Py_Import(asdl_seq * names, int lineno, int col_offset, int
558 end_lineno, int end_col_offset, PyArena *arena);
559#define ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000560stmt_ty _Py_ImportFrom(identifier module, asdl_seq * names, int level, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000561 lineno, int col_offset, int end_lineno, int
562 end_col_offset, PyArena *arena);
563#define Global(a0, a1, a2, a3, a4, a5) _Py_Global(a0, a1, a2, a3, a4, a5)
564stmt_ty _Py_Global(asdl_seq * names, int lineno, int col_offset, int
565 end_lineno, int end_col_offset, PyArena *arena);
566#define Nonlocal(a0, a1, a2, a3, a4, a5) _Py_Nonlocal(a0, a1, a2, a3, a4, a5)
567stmt_ty _Py_Nonlocal(asdl_seq * names, int lineno, int col_offset, int
568 end_lineno, int end_col_offset, PyArena *arena);
569#define Expr(a0, a1, a2, a3, a4, a5) _Py_Expr(a0, a1, a2, a3, a4, a5)
570stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, int end_lineno, int
571 end_col_offset, PyArena *arena);
572#define Pass(a0, a1, a2, a3, a4) _Py_Pass(a0, a1, a2, a3, a4)
573stmt_ty _Py_Pass(int lineno, int col_offset, int end_lineno, int
574 end_col_offset, PyArena *arena);
575#define Break(a0, a1, a2, a3, a4) _Py_Break(a0, a1, a2, a3, a4)
576stmt_ty _Py_Break(int lineno, int col_offset, int end_lineno, int
577 end_col_offset, PyArena *arena);
578#define Continue(a0, a1, a2, a3, a4) _Py_Continue(a0, a1, a2, a3, a4)
579stmt_ty _Py_Continue(int lineno, int col_offset, int end_lineno, int
580 end_col_offset, PyArena *arena);
581#define BoolOp(a0, a1, a2, a3, a4, a5, a6) _Py_BoolOp(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000582expr_ty _Py_BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000583 int end_lineno, int end_col_offset, PyArena *arena);
Emily Morehouse8f59ee02019-01-24 16:49:56 -0700584#define NamedExpr(a0, a1, a2, a3, a4, a5, a6) _Py_NamedExpr(a0, a1, a2, a3, a4, a5, a6)
585expr_ty _Py_NamedExpr(expr_ty target, expr_ty value, int lineno, int
586 col_offset, int end_lineno, int end_col_offset, PyArena
587 *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000588#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 +0000589expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000590 col_offset, int end_lineno, int end_col_offset, PyArena
591 *arena);
592#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 +0000593expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000594 int end_lineno, int end_col_offset, PyArena *arena);
595#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 +0000596expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset,
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000597 int end_lineno, int end_col_offset, PyArena *arena);
598#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 +0000599expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000600 col_offset, int end_lineno, int end_col_offset, PyArena
601 *arena);
602#define Dict(a0, a1, a2, a3, a4, a5, a6) _Py_Dict(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000603expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000604 col_offset, int end_lineno, int end_col_offset, PyArena
605 *arena);
606#define Set(a0, a1, a2, a3, a4, a5) _Py_Set(a0, a1, a2, a3, a4, a5)
607expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, int end_lineno,
608 int end_col_offset, PyArena *arena);
609#define ListComp(a0, a1, a2, a3, a4, a5, a6) _Py_ListComp(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000610expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000611 col_offset, int end_lineno, int end_col_offset, PyArena
Victor Stinnerf2c1aa12016-01-26 00:40:57 +0100612 *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000613#define SetComp(a0, a1, a2, a3, a4, a5, a6) _Py_SetComp(a0, a1, a2, a3, a4, a5, a6)
614expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int
615 col_offset, int end_lineno, int end_col_offset, PyArena
616 *arena);
617#define DictComp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_DictComp(a0, a1, a2, a3, a4, a5, a6, a7)
618expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int
619 lineno, int col_offset, int end_lineno, int
620 end_col_offset, PyArena *arena);
621#define GeneratorExp(a0, a1, a2, a3, a4, a5, a6) _Py_GeneratorExp(a0, a1, a2, a3, a4, a5, a6)
622expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int
623 col_offset, int end_lineno, int end_col_offset,
624 PyArena *arena);
625#define Await(a0, a1, a2, a3, a4, a5) _Py_Await(a0, a1, a2, a3, a4, a5)
626expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, int end_lineno,
627 int end_col_offset, PyArena *arena);
628#define Yield(a0, a1, a2, a3, a4, a5) _Py_Yield(a0, a1, a2, a3, a4, a5)
629expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, int end_lineno,
630 int end_col_offset, PyArena *arena);
631#define YieldFrom(a0, a1, a2, a3, a4, a5) _Py_YieldFrom(a0, a1, a2, a3, a4, a5)
632expr_ty _Py_YieldFrom(expr_ty value, int lineno, int col_offset, int
633 end_lineno, int end_col_offset, PyArena *arena);
634#define Compare(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Compare(a0, a1, a2, a3, a4, a5, a6, a7)
635expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators,
636 int lineno, int col_offset, int end_lineno, int
637 end_col_offset, PyArena *arena);
638#define Call(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Call(a0, a1, a2, a3, a4, a5, a6, a7)
639expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int
640 lineno, int col_offset, int end_lineno, int end_col_offset,
641 PyArena *arena);
Eric V. Smith6f6ff8a2019-05-27 15:31:52 -0400642#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 +0000643expr_ty _Py_FormattedValue(expr_ty value, int conversion, expr_ty format_spec,
Eric V. Smith6f6ff8a2019-05-27 15:31:52 -0400644 int lineno, int col_offset, int end_lineno, int
645 end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000646#define JoinedStr(a0, a1, a2, a3, a4, a5) _Py_JoinedStr(a0, a1, a2, a3, a4, a5)
647expr_ty _Py_JoinedStr(asdl_seq * values, int lineno, int col_offset, int
648 end_lineno, int end_col_offset, PyArena *arena);
Guido van Rossum10f8ce62019-03-13 13:00:46 -0700649#define Constant(a0, a1, a2, a3, a4, a5, a6) _Py_Constant(a0, a1, a2, a3, a4, a5, a6)
650expr_ty _Py_Constant(constant value, string kind, int lineno, int col_offset,
651 int end_lineno, int end_col_offset, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000652#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 +0000653expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000654 lineno, int col_offset, int end_lineno, int
655 end_col_offset, PyArena *arena);
656#define Subscript(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Subscript(a0, a1, a2, a3, a4, a5, a6, a7)
Thomas Woutersb2137042007-02-01 18:02:27 +0000657expr_ty _Py_Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000658 lineno, int col_offset, int end_lineno, int
659 end_col_offset, PyArena *arena);
660#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 +0000661expr_ty _Py_Starred(expr_ty value, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000662 col_offset, int end_lineno, int end_col_offset, PyArena
663 *arena);
664#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 +0000665expr_ty _Py_Name(identifier id, expr_context_ty ctx, 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 List(a0, a1, a2, a3, a4, a5, a6) _Py_List(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000669expr_ty _Py_List(asdl_seq * elts, expr_context_ty ctx, 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 Tuple(a0, a1, a2, a3, a4, a5, a6) _Py_Tuple(a0, a1, a2, a3, a4, a5, a6)
Thomas Woutersb2137042007-02-01 18:02:27 +0000673expr_ty _Py_Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000674 col_offset, int end_lineno, int end_col_offset, PyArena
675 *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000676#define Slice(a0, a1, a2, a3) _Py_Slice(a0, a1, a2, a3)
677slice_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena);
678#define ExtSlice(a0, a1) _Py_ExtSlice(a0, a1)
679slice_ty _Py_ExtSlice(asdl_seq * dims, PyArena *arena);
680#define Index(a0, a1) _Py_Index(a0, a1)
681slice_ty _Py_Index(expr_ty value, PyArena *arena);
Yury Selivanov52c4e7c2016-09-09 10:36:01 -0700682#define comprehension(a0, a1, a2, a3, a4) _Py_comprehension(a0, a1, a2, a3, a4)
Thomas Woutersb2137042007-02-01 18:02:27 +0000683comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_seq *
Yury Selivanov52c4e7c2016-09-09 10:36:01 -0700684 ifs, int is_async, PyArena *arena);
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000685#define ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7)
Neal Norwitzad74aa82008-03-31 05:14:30 +0000686excepthandler_ty _Py_ExceptHandler(expr_ty type, identifier name, asdl_seq *
Ivan Levkivskyi9932a222019-01-22 11:18:22 +0000687 body, int lineno, int col_offset, int
688 end_lineno, int end_col_offset, PyArena
Thomas Woutersb2137042007-02-01 18:02:27 +0000689 *arena);
Pablo Galindo8c77b8c2019-04-29 13:36:57 +0100690#define arguments(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arguments(a0, a1, a2, a3, a4, a5, a6, a7)
Pablo Galindocd6e83b2019-07-15 01:32:18 +0200691arguments_ty _Py_arguments(asdl_seq * posonlyargs, asdl_seq * args, arg_ty
Pablo Galindo8c77b8c2019-04-29 13:36:57 +0100692 vararg, asdl_seq * kwonlyargs, asdl_seq *
693 kw_defaults, arg_ty kwarg, asdl_seq * defaults,
694 PyArena *arena);
Guido van Rossumdcfcd142019-01-31 03:40:27 -0800695#define arg(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arg(a0, a1, a2, a3, a4, a5, a6, a7)
696arg_ty _Py_arg(identifier arg, expr_ty annotation, string type_comment, int
697 lineno, int col_offset, int end_lineno, int end_col_offset,
698 PyArena *arena);
Thomas Woutersb2137042007-02-01 18:02:27 +0000699#define keyword(a0, a1, a2) _Py_keyword(a0, a1, a2)
700keyword_ty _Py_keyword(identifier arg, expr_ty value, PyArena *arena);
701#define alias(a0, a1, a2) _Py_alias(a0, a1, a2)
702alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena);
Benjamin Petersonbf1bbc12011-05-27 13:58:08 -0500703#define withitem(a0, a1, a2) _Py_withitem(a0, a1, a2)
704withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena
705 *arena);
Michael J. Sullivan933e1502019-05-22 07:54:20 -0700706#define TypeIgnore(a0, a1, a2) _Py_TypeIgnore(a0, a1, a2)
707type_ignore_ty _Py_TypeIgnore(int lineno, string tag, PyArena *arena);
Neal Norwitz7b5a6042005-11-13 19:14:20 +0000708
Martin v. Löwisbd260da2006-02-26 19:42:26 +0000709PyObject* PyAST_mod2obj(mod_ty t);
Neal Norwitzdb4115f2008-03-31 04:20:05 +0000710mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
Martin v. Löwis618dc5e2008-03-30 20:03:44 +0000711int PyAST_Check(PyObject* obj);
Zackery Spytz421a72a2019-09-12 03:27:14 -0600712#endif /* !Py_LIMITED_API */
Victor Stinner5f2df882018-11-12 00:56:19 +0100713
714#ifdef __cplusplus
715}
716#endif
717#endif /* !Py_PYTHON_AST_H */