1 // File automatically generated by Parser/asdl_c.py.
2 
3 #ifndef Py_INTERNAL_AST_H
4 #define Py_INTERNAL_AST_H
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 #ifndef Py_BUILD_CORE
10 #  error "this header requires Py_BUILD_CORE define"
11 #endif
12 
13 #include "pycore_asdl.h"
14 
15 typedef struct _mod *mod_ty;
16 
17 typedef struct _stmt *stmt_ty;
18 
19 typedef struct _expr *expr_ty;
20 
21 typedef enum _expr_context { Load=1, Store=2, Del=3 } expr_context_ty;
22 
23 typedef enum _boolop { And=1, Or=2 } boolop_ty;
24 
25 typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7,
26                          LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12,
27                          FloorDiv=13 } operator_ty;
28 
29 typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
30 
31 typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8,
32                       In=9, NotIn=10 } cmpop_ty;
33 
34 typedef struct _comprehension *comprehension_ty;
35 
36 typedef struct _excepthandler *excepthandler_ty;
37 
38 typedef struct _arguments *arguments_ty;
39 
40 typedef struct _arg *arg_ty;
41 
42 typedef struct _keyword *keyword_ty;
43 
44 typedef struct _alias *alias_ty;
45 
46 typedef struct _withitem *withitem_ty;
47 
48 typedef struct _match_case *match_case_ty;
49 
50 typedef struct _pattern *pattern_ty;
51 
52 typedef struct _type_ignore *type_ignore_ty;
53 
54 
55 typedef struct {
56     _ASDL_SEQ_HEAD
57     mod_ty typed_elements[1];
58 } asdl_mod_seq;
59 
60 asdl_mod_seq *_Py_asdl_mod_seq_new(Py_ssize_t size, PyArena *arena);
61 
62 typedef struct {
63     _ASDL_SEQ_HEAD
64     stmt_ty typed_elements[1];
65 } asdl_stmt_seq;
66 
67 asdl_stmt_seq *_Py_asdl_stmt_seq_new(Py_ssize_t size, PyArena *arena);
68 
69 typedef struct {
70     _ASDL_SEQ_HEAD
71     expr_ty typed_elements[1];
72 } asdl_expr_seq;
73 
74 asdl_expr_seq *_Py_asdl_expr_seq_new(Py_ssize_t size, PyArena *arena);
75 
76 typedef struct {
77     _ASDL_SEQ_HEAD
78     comprehension_ty typed_elements[1];
79 } asdl_comprehension_seq;
80 
81 asdl_comprehension_seq *_Py_asdl_comprehension_seq_new(Py_ssize_t size, PyArena
82                                                        *arena);
83 
84 typedef struct {
85     _ASDL_SEQ_HEAD
86     excepthandler_ty typed_elements[1];
87 } asdl_excepthandler_seq;
88 
89 asdl_excepthandler_seq *_Py_asdl_excepthandler_seq_new(Py_ssize_t size, PyArena
90                                                        *arena);
91 
92 typedef struct {
93     _ASDL_SEQ_HEAD
94     arguments_ty typed_elements[1];
95 } asdl_arguments_seq;
96 
97 asdl_arguments_seq *_Py_asdl_arguments_seq_new(Py_ssize_t size, PyArena *arena);
98 
99 typedef struct {
100     _ASDL_SEQ_HEAD
101     arg_ty typed_elements[1];
102 } asdl_arg_seq;
103 
104 asdl_arg_seq *_Py_asdl_arg_seq_new(Py_ssize_t size, PyArena *arena);
105 
106 typedef struct {
107     _ASDL_SEQ_HEAD
108     keyword_ty typed_elements[1];
109 } asdl_keyword_seq;
110 
111 asdl_keyword_seq *_Py_asdl_keyword_seq_new(Py_ssize_t size, PyArena *arena);
112 
113 typedef struct {
114     _ASDL_SEQ_HEAD
115     alias_ty typed_elements[1];
116 } asdl_alias_seq;
117 
118 asdl_alias_seq *_Py_asdl_alias_seq_new(Py_ssize_t size, PyArena *arena);
119 
120 typedef struct {
121     _ASDL_SEQ_HEAD
122     withitem_ty typed_elements[1];
123 } asdl_withitem_seq;
124 
125 asdl_withitem_seq *_Py_asdl_withitem_seq_new(Py_ssize_t size, PyArena *arena);
126 
127 typedef struct {
128     _ASDL_SEQ_HEAD
129     match_case_ty typed_elements[1];
130 } asdl_match_case_seq;
131 
132 asdl_match_case_seq *_Py_asdl_match_case_seq_new(Py_ssize_t size, PyArena
133                                                  *arena);
134 
135 typedef struct {
136     _ASDL_SEQ_HEAD
137     pattern_ty typed_elements[1];
138 } asdl_pattern_seq;
139 
140 asdl_pattern_seq *_Py_asdl_pattern_seq_new(Py_ssize_t size, PyArena *arena);
141 
142 typedef struct {
143     _ASDL_SEQ_HEAD
144     type_ignore_ty typed_elements[1];
145 } asdl_type_ignore_seq;
146 
147 asdl_type_ignore_seq *_Py_asdl_type_ignore_seq_new(Py_ssize_t size, PyArena
148                                                    *arena);
149 
150 
151 enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
152                  FunctionType_kind=4};
153 struct _mod {
154     enum _mod_kind kind;
155     union {
156         struct {
157             asdl_stmt_seq *body;
158             asdl_type_ignore_seq *type_ignores;
159         } Module;
160 
161         struct {
162             asdl_stmt_seq *body;
163         } Interactive;
164 
165         struct {
166             expr_ty body;
167         } Expression;
168 
169         struct {
170             asdl_expr_seq *argtypes;
171             expr_ty returns;
172         } FunctionType;
173 
174     } v;
175 };
176 
177 enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3,
178                   Return_kind=4, Delete_kind=5, Assign_kind=6,
179                   AugAssign_kind=7, AnnAssign_kind=8, For_kind=9,
180                   AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13,
181                   AsyncWith_kind=14, Match_kind=15, Raise_kind=16, Try_kind=17,
182                   TryStar_kind=18, Assert_kind=19, Import_kind=20,
183                   ImportFrom_kind=21, Global_kind=22, Nonlocal_kind=23,
184                   Expr_kind=24, Pass_kind=25, Break_kind=26, Continue_kind=27};
185 struct _stmt {
186     enum _stmt_kind kind;
187     union {
188         struct {
189             identifier name;
190             arguments_ty args;
191             asdl_stmt_seq *body;
192             asdl_expr_seq *decorator_list;
193             expr_ty returns;
194             string type_comment;
195         } FunctionDef;
196 
197         struct {
198             identifier name;
199             arguments_ty args;
200             asdl_stmt_seq *body;
201             asdl_expr_seq *decorator_list;
202             expr_ty returns;
203             string type_comment;
204         } AsyncFunctionDef;
205 
206         struct {
207             identifier name;
208             asdl_expr_seq *bases;
209             asdl_keyword_seq *keywords;
210             asdl_stmt_seq *body;
211             asdl_expr_seq *decorator_list;
212         } ClassDef;
213 
214         struct {
215             expr_ty value;
216         } Return;
217 
218         struct {
219             asdl_expr_seq *targets;
220         } Delete;
221 
222         struct {
223             asdl_expr_seq *targets;
224             expr_ty value;
225             string type_comment;
226         } Assign;
227 
228         struct {
229             expr_ty target;
230             operator_ty op;
231             expr_ty value;
232         } AugAssign;
233 
234         struct {
235             expr_ty target;
236             expr_ty annotation;
237             expr_ty value;
238             int simple;
239         } AnnAssign;
240 
241         struct {
242             expr_ty target;
243             expr_ty iter;
244             asdl_stmt_seq *body;
245             asdl_stmt_seq *orelse;
246             string type_comment;
247         } For;
248 
249         struct {
250             expr_ty target;
251             expr_ty iter;
252             asdl_stmt_seq *body;
253             asdl_stmt_seq *orelse;
254             string type_comment;
255         } AsyncFor;
256 
257         struct {
258             expr_ty test;
259             asdl_stmt_seq *body;
260             asdl_stmt_seq *orelse;
261         } While;
262 
263         struct {
264             expr_ty test;
265             asdl_stmt_seq *body;
266             asdl_stmt_seq *orelse;
267         } If;
268 
269         struct {
270             asdl_withitem_seq *items;
271             asdl_stmt_seq *body;
272             string type_comment;
273         } With;
274 
275         struct {
276             asdl_withitem_seq *items;
277             asdl_stmt_seq *body;
278             string type_comment;
279         } AsyncWith;
280 
281         struct {
282             expr_ty subject;
283             asdl_match_case_seq *cases;
284         } Match;
285 
286         struct {
287             expr_ty exc;
288             expr_ty cause;
289         } Raise;
290 
291         struct {
292             asdl_stmt_seq *body;
293             asdl_excepthandler_seq *handlers;
294             asdl_stmt_seq *orelse;
295             asdl_stmt_seq *finalbody;
296         } Try;
297 
298         struct {
299             asdl_stmt_seq *body;
300             asdl_excepthandler_seq *handlers;
301             asdl_stmt_seq *orelse;
302             asdl_stmt_seq *finalbody;
303         } TryStar;
304 
305         struct {
306             expr_ty test;
307             expr_ty msg;
308         } Assert;
309 
310         struct {
311             asdl_alias_seq *names;
312         } Import;
313 
314         struct {
315             identifier module;
316             asdl_alias_seq *names;
317             int level;
318         } ImportFrom;
319 
320         struct {
321             asdl_identifier_seq *names;
322         } Global;
323 
324         struct {
325             asdl_identifier_seq *names;
326         } Nonlocal;
327 
328         struct {
329             expr_ty value;
330         } Expr;
331 
332     } v;
333     int lineno;
334     int col_offset;
335     int end_lineno;
336     int end_col_offset;
337 };
338 
339 enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_kind=4,
340                   Lambda_kind=5, IfExp_kind=6, Dict_kind=7, Set_kind=8,
341                   ListComp_kind=9, SetComp_kind=10, DictComp_kind=11,
342                   GeneratorExp_kind=12, Await_kind=13, Yield_kind=14,
343                   YieldFrom_kind=15, Compare_kind=16, Call_kind=17,
344                   FormattedValue_kind=18, JoinedStr_kind=19, Constant_kind=20,
345                   Attribute_kind=21, Subscript_kind=22, Starred_kind=23,
346                   Name_kind=24, List_kind=25, Tuple_kind=26, Slice_kind=27};
347 struct _expr {
348     enum _expr_kind kind;
349     union {
350         struct {
351             boolop_ty op;
352             asdl_expr_seq *values;
353         } BoolOp;
354 
355         struct {
356             expr_ty target;
357             expr_ty value;
358         } NamedExpr;
359 
360         struct {
361             expr_ty left;
362             operator_ty op;
363             expr_ty right;
364         } BinOp;
365 
366         struct {
367             unaryop_ty op;
368             expr_ty operand;
369         } UnaryOp;
370 
371         struct {
372             arguments_ty args;
373             expr_ty body;
374         } Lambda;
375 
376         struct {
377             expr_ty test;
378             expr_ty body;
379             expr_ty orelse;
380         } IfExp;
381 
382         struct {
383             asdl_expr_seq *keys;
384             asdl_expr_seq *values;
385         } Dict;
386 
387         struct {
388             asdl_expr_seq *elts;
389         } Set;
390 
391         struct {
392             expr_ty elt;
393             asdl_comprehension_seq *generators;
394         } ListComp;
395 
396         struct {
397             expr_ty elt;
398             asdl_comprehension_seq *generators;
399         } SetComp;
400 
401         struct {
402             expr_ty key;
403             expr_ty value;
404             asdl_comprehension_seq *generators;
405         } DictComp;
406 
407         struct {
408             expr_ty elt;
409             asdl_comprehension_seq *generators;
410         } GeneratorExp;
411 
412         struct {
413             expr_ty value;
414         } Await;
415 
416         struct {
417             expr_ty value;
418         } Yield;
419 
420         struct {
421             expr_ty value;
422         } YieldFrom;
423 
424         struct {
425             expr_ty left;
426             asdl_int_seq *ops;
427             asdl_expr_seq *comparators;
428         } Compare;
429 
430         struct {
431             expr_ty func;
432             asdl_expr_seq *args;
433             asdl_keyword_seq *keywords;
434         } Call;
435 
436         struct {
437             expr_ty value;
438             int conversion;
439             expr_ty format_spec;
440         } FormattedValue;
441 
442         struct {
443             asdl_expr_seq *values;
444         } JoinedStr;
445 
446         struct {
447             constant value;
448             string kind;
449         } Constant;
450 
451         struct {
452             expr_ty value;
453             identifier attr;
454             expr_context_ty ctx;
455         } Attribute;
456 
457         struct {
458             expr_ty value;
459             expr_ty slice;
460             expr_context_ty ctx;
461         } Subscript;
462 
463         struct {
464             expr_ty value;
465             expr_context_ty ctx;
466         } Starred;
467 
468         struct {
469             identifier id;
470             expr_context_ty ctx;
471         } Name;
472 
473         struct {
474             asdl_expr_seq *elts;
475             expr_context_ty ctx;
476         } List;
477 
478         struct {
479             asdl_expr_seq *elts;
480             expr_context_ty ctx;
481         } Tuple;
482 
483         struct {
484             expr_ty lower;
485             expr_ty upper;
486             expr_ty step;
487         } Slice;
488 
489     } v;
490     int lineno;
491     int col_offset;
492     int end_lineno;
493     int end_col_offset;
494 };
495 
496 struct _comprehension {
497     expr_ty target;
498     expr_ty iter;
499     asdl_expr_seq *ifs;
500     int is_async;
501 };
502 
503 enum _excepthandler_kind {ExceptHandler_kind=1};
504 struct _excepthandler {
505     enum _excepthandler_kind kind;
506     union {
507         struct {
508             expr_ty type;
509             identifier name;
510             asdl_stmt_seq *body;
511         } ExceptHandler;
512 
513     } v;
514     int lineno;
515     int col_offset;
516     int end_lineno;
517     int end_col_offset;
518 };
519 
520 struct _arguments {
521     asdl_arg_seq *posonlyargs;
522     asdl_arg_seq *args;
523     arg_ty vararg;
524     asdl_arg_seq *kwonlyargs;
525     asdl_expr_seq *kw_defaults;
526     arg_ty kwarg;
527     asdl_expr_seq *defaults;
528 };
529 
530 struct _arg {
531     identifier arg;
532     expr_ty annotation;
533     string type_comment;
534     int lineno;
535     int col_offset;
536     int end_lineno;
537     int end_col_offset;
538 };
539 
540 struct _keyword {
541     identifier arg;
542     expr_ty value;
543     int lineno;
544     int col_offset;
545     int end_lineno;
546     int end_col_offset;
547 };
548 
549 struct _alias {
550     identifier name;
551     identifier asname;
552     int lineno;
553     int col_offset;
554     int end_lineno;
555     int end_col_offset;
556 };
557 
558 struct _withitem {
559     expr_ty context_expr;
560     expr_ty optional_vars;
561 };
562 
563 struct _match_case {
564     pattern_ty pattern;
565     expr_ty guard;
566     asdl_stmt_seq *body;
567 };
568 
569 enum _pattern_kind {MatchValue_kind=1, MatchSingleton_kind=2,
570                      MatchSequence_kind=3, MatchMapping_kind=4,
571                      MatchClass_kind=5, MatchStar_kind=6, MatchAs_kind=7,
572                      MatchOr_kind=8};
573 struct _pattern {
574     enum _pattern_kind kind;
575     union {
576         struct {
577             expr_ty value;
578         } MatchValue;
579 
580         struct {
581             constant value;
582         } MatchSingleton;
583 
584         struct {
585             asdl_pattern_seq *patterns;
586         } MatchSequence;
587 
588         struct {
589             asdl_expr_seq *keys;
590             asdl_pattern_seq *patterns;
591             identifier rest;
592         } MatchMapping;
593 
594         struct {
595             expr_ty cls;
596             asdl_pattern_seq *patterns;
597             asdl_identifier_seq *kwd_attrs;
598             asdl_pattern_seq *kwd_patterns;
599         } MatchClass;
600 
601         struct {
602             identifier name;
603         } MatchStar;
604 
605         struct {
606             pattern_ty pattern;
607             identifier name;
608         } MatchAs;
609 
610         struct {
611             asdl_pattern_seq *patterns;
612         } MatchOr;
613 
614     } v;
615     int lineno;
616     int col_offset;
617     int end_lineno;
618     int end_col_offset;
619 };
620 
621 enum _type_ignore_kind {TypeIgnore_kind=1};
622 struct _type_ignore {
623     enum _type_ignore_kind kind;
624     union {
625         struct {
626             int lineno;
627             string tag;
628         } TypeIgnore;
629 
630     } v;
631 };
632 
633 
634 // Note: these macros affect function definitions, not only call sites.
635 mod_ty _PyAST_Module(asdl_stmt_seq * body, asdl_type_ignore_seq * type_ignores,
636                      PyArena *arena);
637 mod_ty _PyAST_Interactive(asdl_stmt_seq * body, PyArena *arena);
638 mod_ty _PyAST_Expression(expr_ty body, PyArena *arena);
639 mod_ty _PyAST_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena
640                            *arena);
641 stmt_ty _PyAST_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
642                            body, asdl_expr_seq * decorator_list, expr_ty
643                            returns, string type_comment, int lineno, int
644                            col_offset, int end_lineno, int end_col_offset,
645                            PyArena *arena);
646 stmt_ty _PyAST_AsyncFunctionDef(identifier name, arguments_ty args,
647                                 asdl_stmt_seq * body, asdl_expr_seq *
648                                 decorator_list, expr_ty returns, string
649                                 type_comment, int lineno, int col_offset, int
650                                 end_lineno, int end_col_offset, PyArena *arena);
651 stmt_ty _PyAST_ClassDef(identifier name, asdl_expr_seq * bases,
652                         asdl_keyword_seq * keywords, asdl_stmt_seq * body,
653                         asdl_expr_seq * decorator_list, int lineno, int
654                         col_offset, int end_lineno, int end_col_offset, PyArena
655                         *arena);
656 stmt_ty _PyAST_Return(expr_ty value, int lineno, int col_offset, int
657                       end_lineno, int end_col_offset, PyArena *arena);
658 stmt_ty _PyAST_Delete(asdl_expr_seq * targets, int lineno, int col_offset, int
659                       end_lineno, int end_col_offset, PyArena *arena);
660 stmt_ty _PyAST_Assign(asdl_expr_seq * targets, expr_ty value, string
661                       type_comment, int lineno, int col_offset, int end_lineno,
662                       int end_col_offset, PyArena *arena);
663 stmt_ty _PyAST_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
664                          lineno, int col_offset, int end_lineno, int
665                          end_col_offset, PyArena *arena);
666 stmt_ty _PyAST_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int
667                          simple, int lineno, int col_offset, int end_lineno,
668                          int end_col_offset, PyArena *arena);
669 stmt_ty _PyAST_For(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
670                    asdl_stmt_seq * orelse, string type_comment, int lineno, int
671                    col_offset, int end_lineno, int end_col_offset, PyArena
672                    *arena);
673 stmt_ty _PyAST_AsyncFor(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
674                         asdl_stmt_seq * orelse, string type_comment, int
675                         lineno, int col_offset, int end_lineno, int
676                         end_col_offset, PyArena *arena);
677 stmt_ty _PyAST_While(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq *
678                      orelse, int lineno, int col_offset, int end_lineno, int
679                      end_col_offset, PyArena *arena);
680 stmt_ty _PyAST_If(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse,
681                   int lineno, int col_offset, int end_lineno, int
682                   end_col_offset, PyArena *arena);
683 stmt_ty _PyAST_With(asdl_withitem_seq * items, asdl_stmt_seq * body, string
684                     type_comment, int lineno, int col_offset, int end_lineno,
685                     int end_col_offset, PyArena *arena);
686 stmt_ty _PyAST_AsyncWith(asdl_withitem_seq * items, asdl_stmt_seq * body,
687                          string type_comment, int lineno, int col_offset, int
688                          end_lineno, int end_col_offset, PyArena *arena);
689 stmt_ty _PyAST_Match(expr_ty subject, asdl_match_case_seq * cases, int lineno,
690                      int col_offset, int end_lineno, int end_col_offset,
691                      PyArena *arena);
692 stmt_ty _PyAST_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset,
693                      int end_lineno, int end_col_offset, PyArena *arena);
694 stmt_ty _PyAST_Try(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
695                    asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int
696                    lineno, int col_offset, int end_lineno, int end_col_offset,
697                    PyArena *arena);
698 stmt_ty _PyAST_TryStar(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
699                        asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int
700                        lineno, int col_offset, int end_lineno, int
701                        end_col_offset, PyArena *arena);
702 stmt_ty _PyAST_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset,
703                       int end_lineno, int end_col_offset, PyArena *arena);
704 stmt_ty _PyAST_Import(asdl_alias_seq * names, int lineno, int col_offset, int
705                       end_lineno, int end_col_offset, PyArena *arena);
706 stmt_ty _PyAST_ImportFrom(identifier module, asdl_alias_seq * names, int level,
707                           int lineno, int col_offset, int end_lineno, int
708                           end_col_offset, PyArena *arena);
709 stmt_ty _PyAST_Global(asdl_identifier_seq * names, int lineno, int col_offset,
710                       int end_lineno, int end_col_offset, PyArena *arena);
711 stmt_ty _PyAST_Nonlocal(asdl_identifier_seq * names, int lineno, int
712                         col_offset, int end_lineno, int end_col_offset, PyArena
713                         *arena);
714 stmt_ty _PyAST_Expr(expr_ty value, int lineno, int col_offset, int end_lineno,
715                     int end_col_offset, PyArena *arena);
716 stmt_ty _PyAST_Pass(int lineno, int col_offset, int end_lineno, int
717                     end_col_offset, PyArena *arena);
718 stmt_ty _PyAST_Break(int lineno, int col_offset, int end_lineno, int
719                      end_col_offset, PyArena *arena);
720 stmt_ty _PyAST_Continue(int lineno, int col_offset, int end_lineno, int
721                         end_col_offset, PyArena *arena);
722 expr_ty _PyAST_BoolOp(boolop_ty op, asdl_expr_seq * values, int lineno, int
723                       col_offset, int end_lineno, int end_col_offset, PyArena
724                       *arena);
725 expr_ty _PyAST_NamedExpr(expr_ty target, expr_ty value, int lineno, int
726                          col_offset, int end_lineno, int end_col_offset,
727                          PyArena *arena);
728 expr_ty _PyAST_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno,
729                      int col_offset, int end_lineno, int end_col_offset,
730                      PyArena *arena);
731 expr_ty _PyAST_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int
732                        col_offset, int end_lineno, int end_col_offset, PyArena
733                        *arena);
734 expr_ty _PyAST_Lambda(arguments_ty args, expr_ty body, int lineno, int
735                       col_offset, int end_lineno, int end_col_offset, PyArena
736                       *arena);
737 expr_ty _PyAST_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno,
738                      int col_offset, int end_lineno, int end_col_offset,
739                      PyArena *arena);
740 expr_ty _PyAST_Dict(asdl_expr_seq * keys, asdl_expr_seq * values, int lineno,
741                     int col_offset, int end_lineno, int end_col_offset, PyArena
742                     *arena);
743 expr_ty _PyAST_Set(asdl_expr_seq * elts, int lineno, int col_offset, int
744                    end_lineno, int end_col_offset, PyArena *arena);
745 expr_ty _PyAST_ListComp(expr_ty elt, asdl_comprehension_seq * generators, int
746                         lineno, int col_offset, int end_lineno, int
747                         end_col_offset, PyArena *arena);
748 expr_ty _PyAST_SetComp(expr_ty elt, asdl_comprehension_seq * generators, int
749                        lineno, int col_offset, int end_lineno, int
750                        end_col_offset, PyArena *arena);
751 expr_ty _PyAST_DictComp(expr_ty key, expr_ty value, asdl_comprehension_seq *
752                         generators, int lineno, int col_offset, int end_lineno,
753                         int end_col_offset, PyArena *arena);
754 expr_ty _PyAST_GeneratorExp(expr_ty elt, asdl_comprehension_seq * generators,
755                             int lineno, int col_offset, int end_lineno, int
756                             end_col_offset, PyArena *arena);
757 expr_ty _PyAST_Await(expr_ty value, int lineno, int col_offset, int end_lineno,
758                      int end_col_offset, PyArena *arena);
759 expr_ty _PyAST_Yield(expr_ty value, int lineno, int col_offset, int end_lineno,
760                      int end_col_offset, PyArena *arena);
761 expr_ty _PyAST_YieldFrom(expr_ty value, int lineno, int col_offset, int
762                          end_lineno, int end_col_offset, PyArena *arena);
763 expr_ty _PyAST_Compare(expr_ty left, asdl_int_seq * ops, asdl_expr_seq *
764                        comparators, int lineno, int col_offset, int end_lineno,
765                        int end_col_offset, PyArena *arena);
766 expr_ty _PyAST_Call(expr_ty func, asdl_expr_seq * args, asdl_keyword_seq *
767                     keywords, int lineno, int col_offset, int end_lineno, int
768                     end_col_offset, PyArena *arena);
769 expr_ty _PyAST_FormattedValue(expr_ty value, int conversion, expr_ty
770                               format_spec, int lineno, int col_offset, int
771                               end_lineno, int end_col_offset, PyArena *arena);
772 expr_ty _PyAST_JoinedStr(asdl_expr_seq * values, int lineno, int col_offset,
773                          int end_lineno, int end_col_offset, PyArena *arena);
774 expr_ty _PyAST_Constant(constant value, string kind, int lineno, int
775                         col_offset, int end_lineno, int end_col_offset, PyArena
776                         *arena);
777 expr_ty _PyAST_Attribute(expr_ty value, identifier attr, expr_context_ty ctx,
778                          int lineno, int col_offset, int end_lineno, int
779                          end_col_offset, PyArena *arena);
780 expr_ty _PyAST_Subscript(expr_ty value, expr_ty slice, expr_context_ty ctx, int
781                          lineno, int col_offset, int end_lineno, int
782                          end_col_offset, PyArena *arena);
783 expr_ty _PyAST_Starred(expr_ty value, expr_context_ty ctx, int lineno, int
784                        col_offset, int end_lineno, int end_col_offset, PyArena
785                        *arena);
786 expr_ty _PyAST_Name(identifier id, expr_context_ty ctx, int lineno, int
787                     col_offset, int end_lineno, int end_col_offset, PyArena
788                     *arena);
789 expr_ty _PyAST_List(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
790                     col_offset, int end_lineno, int end_col_offset, PyArena
791                     *arena);
792 expr_ty _PyAST_Tuple(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
793                      col_offset, int end_lineno, int end_col_offset, PyArena
794                      *arena);
795 expr_ty _PyAST_Slice(expr_ty lower, expr_ty upper, expr_ty step, int lineno,
796                      int col_offset, int end_lineno, int end_col_offset,
797                      PyArena *arena);
798 comprehension_ty _PyAST_comprehension(expr_ty target, expr_ty iter,
799                                       asdl_expr_seq * ifs, int is_async,
800                                       PyArena *arena);
801 excepthandler_ty _PyAST_ExceptHandler(expr_ty type, identifier name,
802                                       asdl_stmt_seq * body, int lineno, int
803                                       col_offset, int end_lineno, int
804                                       end_col_offset, PyArena *arena);
805 arguments_ty _PyAST_arguments(asdl_arg_seq * posonlyargs, asdl_arg_seq * args,
806                               arg_ty vararg, asdl_arg_seq * kwonlyargs,
807                               asdl_expr_seq * kw_defaults, arg_ty kwarg,
808                               asdl_expr_seq * defaults, PyArena *arena);
809 arg_ty _PyAST_arg(identifier arg, expr_ty annotation, string type_comment, int
810                   lineno, int col_offset, int end_lineno, int end_col_offset,
811                   PyArena *arena);
812 keyword_ty _PyAST_keyword(identifier arg, expr_ty value, int lineno, int
813                           col_offset, int end_lineno, int end_col_offset,
814                           PyArena *arena);
815 alias_ty _PyAST_alias(identifier name, identifier asname, int lineno, int
816                       col_offset, int end_lineno, int end_col_offset, PyArena
817                       *arena);
818 withitem_ty _PyAST_withitem(expr_ty context_expr, expr_ty optional_vars,
819                             PyArena *arena);
820 match_case_ty _PyAST_match_case(pattern_ty pattern, expr_ty guard,
821                                 asdl_stmt_seq * body, PyArena *arena);
822 pattern_ty _PyAST_MatchValue(expr_ty value, int lineno, int col_offset, int
823                              end_lineno, int end_col_offset, PyArena *arena);
824 pattern_ty _PyAST_MatchSingleton(constant value, int lineno, int col_offset,
825                                  int end_lineno, int end_col_offset, PyArena
826                                  *arena);
827 pattern_ty _PyAST_MatchSequence(asdl_pattern_seq * patterns, int lineno, int
828                                 col_offset, int end_lineno, int end_col_offset,
829                                 PyArena *arena);
830 pattern_ty _PyAST_MatchMapping(asdl_expr_seq * keys, asdl_pattern_seq *
831                                patterns, identifier rest, int lineno, int
832                                col_offset, int end_lineno, int end_col_offset,
833                                PyArena *arena);
834 pattern_ty _PyAST_MatchClass(expr_ty cls, asdl_pattern_seq * patterns,
835                              asdl_identifier_seq * kwd_attrs, asdl_pattern_seq
836                              * kwd_patterns, int lineno, int col_offset, int
837                              end_lineno, int end_col_offset, PyArena *arena);
838 pattern_ty _PyAST_MatchStar(identifier name, int lineno, int col_offset, int
839                             end_lineno, int end_col_offset, PyArena *arena);
840 pattern_ty _PyAST_MatchAs(pattern_ty pattern, identifier name, int lineno, int
841                           col_offset, int end_lineno, int end_col_offset,
842                           PyArena *arena);
843 pattern_ty _PyAST_MatchOr(asdl_pattern_seq * patterns, int lineno, int
844                           col_offset, int end_lineno, int end_col_offset,
845                           PyArena *arena);
846 type_ignore_ty _PyAST_TypeIgnore(int lineno, string tag, PyArena *arena);
847 
848 
849 PyObject* PyAST_mod2obj(mod_ty t);
850 mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
851 int PyAST_Check(PyObject* obj);
852 
853 extern int _PyAST_Validate(mod_ty);
854 
855 /* _PyAST_ExprAsUnicode is defined in ast_unparse.c */
856 extern PyObject* _PyAST_ExprAsUnicode(expr_ty);
857 
858 /* Return the borrowed reference to the first literal string in the
859    sequence of statements or NULL if it doesn't start from a literal string.
860    Doesn't set exception. */
861 extern PyObject* _PyAST_GetDocString(asdl_stmt_seq *);
862 
863 #ifdef __cplusplus
864 }
865 #endif
866 #endif /* !Py_INTERNAL_AST_H */
867