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                   Assert_kind=18, Import_kind=19, ImportFrom_kind=20,
183                   Global_kind=21, Nonlocal_kind=22, Expr_kind=23, Pass_kind=24,
184                   Break_kind=25, Continue_kind=26};
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             expr_ty test;
300             expr_ty msg;
301         } Assert;
302 
303         struct {
304             asdl_alias_seq *names;
305         } Import;
306 
307         struct {
308             identifier module;
309             asdl_alias_seq *names;
310             int level;
311         } ImportFrom;
312 
313         struct {
314             asdl_identifier_seq *names;
315         } Global;
316 
317         struct {
318             asdl_identifier_seq *names;
319         } Nonlocal;
320 
321         struct {
322             expr_ty value;
323         } Expr;
324 
325     } v;
326     int lineno;
327     int col_offset;
328     int end_lineno;
329     int end_col_offset;
330 };
331 
332 enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_kind=4,
333                   Lambda_kind=5, IfExp_kind=6, Dict_kind=7, Set_kind=8,
334                   ListComp_kind=9, SetComp_kind=10, DictComp_kind=11,
335                   GeneratorExp_kind=12, Await_kind=13, Yield_kind=14,
336                   YieldFrom_kind=15, Compare_kind=16, Call_kind=17,
337                   FormattedValue_kind=18, JoinedStr_kind=19, Constant_kind=20,
338                   Attribute_kind=21, Subscript_kind=22, Starred_kind=23,
339                   Name_kind=24, List_kind=25, Tuple_kind=26, Slice_kind=27};
340 struct _expr {
341     enum _expr_kind kind;
342     union {
343         struct {
344             boolop_ty op;
345             asdl_expr_seq *values;
346         } BoolOp;
347 
348         struct {
349             expr_ty target;
350             expr_ty value;
351         } NamedExpr;
352 
353         struct {
354             expr_ty left;
355             operator_ty op;
356             expr_ty right;
357         } BinOp;
358 
359         struct {
360             unaryop_ty op;
361             expr_ty operand;
362         } UnaryOp;
363 
364         struct {
365             arguments_ty args;
366             expr_ty body;
367         } Lambda;
368 
369         struct {
370             expr_ty test;
371             expr_ty body;
372             expr_ty orelse;
373         } IfExp;
374 
375         struct {
376             asdl_expr_seq *keys;
377             asdl_expr_seq *values;
378         } Dict;
379 
380         struct {
381             asdl_expr_seq *elts;
382         } Set;
383 
384         struct {
385             expr_ty elt;
386             asdl_comprehension_seq *generators;
387         } ListComp;
388 
389         struct {
390             expr_ty elt;
391             asdl_comprehension_seq *generators;
392         } SetComp;
393 
394         struct {
395             expr_ty key;
396             expr_ty value;
397             asdl_comprehension_seq *generators;
398         } DictComp;
399 
400         struct {
401             expr_ty elt;
402             asdl_comprehension_seq *generators;
403         } GeneratorExp;
404 
405         struct {
406             expr_ty value;
407         } Await;
408 
409         struct {
410             expr_ty value;
411         } Yield;
412 
413         struct {
414             expr_ty value;
415         } YieldFrom;
416 
417         struct {
418             expr_ty left;
419             asdl_int_seq *ops;
420             asdl_expr_seq *comparators;
421         } Compare;
422 
423         struct {
424             expr_ty func;
425             asdl_expr_seq *args;
426             asdl_keyword_seq *keywords;
427         } Call;
428 
429         struct {
430             expr_ty value;
431             int conversion;
432             expr_ty format_spec;
433         } FormattedValue;
434 
435         struct {
436             asdl_expr_seq *values;
437         } JoinedStr;
438 
439         struct {
440             constant value;
441             string kind;
442         } Constant;
443 
444         struct {
445             expr_ty value;
446             identifier attr;
447             expr_context_ty ctx;
448         } Attribute;
449 
450         struct {
451             expr_ty value;
452             expr_ty slice;
453             expr_context_ty ctx;
454         } Subscript;
455 
456         struct {
457             expr_ty value;
458             expr_context_ty ctx;
459         } Starred;
460 
461         struct {
462             identifier id;
463             expr_context_ty ctx;
464         } Name;
465 
466         struct {
467             asdl_expr_seq *elts;
468             expr_context_ty ctx;
469         } List;
470 
471         struct {
472             asdl_expr_seq *elts;
473             expr_context_ty ctx;
474         } Tuple;
475 
476         struct {
477             expr_ty lower;
478             expr_ty upper;
479             expr_ty step;
480         } Slice;
481 
482     } v;
483     int lineno;
484     int col_offset;
485     int end_lineno;
486     int end_col_offset;
487 };
488 
489 struct _comprehension {
490     expr_ty target;
491     expr_ty iter;
492     asdl_expr_seq *ifs;
493     int is_async;
494 };
495 
496 enum _excepthandler_kind {ExceptHandler_kind=1};
497 struct _excepthandler {
498     enum _excepthandler_kind kind;
499     union {
500         struct {
501             expr_ty type;
502             identifier name;
503             asdl_stmt_seq *body;
504         } ExceptHandler;
505 
506     } v;
507     int lineno;
508     int col_offset;
509     int end_lineno;
510     int end_col_offset;
511 };
512 
513 struct _arguments {
514     asdl_arg_seq *posonlyargs;
515     asdl_arg_seq *args;
516     arg_ty vararg;
517     asdl_arg_seq *kwonlyargs;
518     asdl_expr_seq *kw_defaults;
519     arg_ty kwarg;
520     asdl_expr_seq *defaults;
521 };
522 
523 struct _arg {
524     identifier arg;
525     expr_ty annotation;
526     string type_comment;
527     int lineno;
528     int col_offset;
529     int end_lineno;
530     int end_col_offset;
531 };
532 
533 struct _keyword {
534     identifier arg;
535     expr_ty value;
536     int lineno;
537     int col_offset;
538     int end_lineno;
539     int end_col_offset;
540 };
541 
542 struct _alias {
543     identifier name;
544     identifier asname;
545     int lineno;
546     int col_offset;
547     int end_lineno;
548     int end_col_offset;
549 };
550 
551 struct _withitem {
552     expr_ty context_expr;
553     expr_ty optional_vars;
554 };
555 
556 struct _match_case {
557     pattern_ty pattern;
558     expr_ty guard;
559     asdl_stmt_seq *body;
560 };
561 
562 enum _pattern_kind {MatchValue_kind=1, MatchSingleton_kind=2,
563                      MatchSequence_kind=3, MatchMapping_kind=4,
564                      MatchClass_kind=5, MatchStar_kind=6, MatchAs_kind=7,
565                      MatchOr_kind=8};
566 struct _pattern {
567     enum _pattern_kind kind;
568     union {
569         struct {
570             expr_ty value;
571         } MatchValue;
572 
573         struct {
574             constant value;
575         } MatchSingleton;
576 
577         struct {
578             asdl_pattern_seq *patterns;
579         } MatchSequence;
580 
581         struct {
582             asdl_expr_seq *keys;
583             asdl_pattern_seq *patterns;
584             identifier rest;
585         } MatchMapping;
586 
587         struct {
588             expr_ty cls;
589             asdl_pattern_seq *patterns;
590             asdl_identifier_seq *kwd_attrs;
591             asdl_pattern_seq *kwd_patterns;
592         } MatchClass;
593 
594         struct {
595             identifier name;
596         } MatchStar;
597 
598         struct {
599             pattern_ty pattern;
600             identifier name;
601         } MatchAs;
602 
603         struct {
604             asdl_pattern_seq *patterns;
605         } MatchOr;
606 
607     } v;
608     int lineno;
609     int col_offset;
610     int end_lineno;
611     int end_col_offset;
612 };
613 
614 enum _type_ignore_kind {TypeIgnore_kind=1};
615 struct _type_ignore {
616     enum _type_ignore_kind kind;
617     union {
618         struct {
619             int lineno;
620             string tag;
621         } TypeIgnore;
622 
623     } v;
624 };
625 
626 
627 // Note: these macros affect function definitions, not only call sites.
628 mod_ty _PyAST_Module(asdl_stmt_seq * body, asdl_type_ignore_seq * type_ignores,
629                      PyArena *arena);
630 mod_ty _PyAST_Interactive(asdl_stmt_seq * body, PyArena *arena);
631 mod_ty _PyAST_Expression(expr_ty body, PyArena *arena);
632 mod_ty _PyAST_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena
633                            *arena);
634 stmt_ty _PyAST_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
635                            body, asdl_expr_seq * decorator_list, expr_ty
636                            returns, string type_comment, int lineno, int
637                            col_offset, int end_lineno, int end_col_offset,
638                            PyArena *arena);
639 stmt_ty _PyAST_AsyncFunctionDef(identifier name, arguments_ty args,
640                                 asdl_stmt_seq * body, asdl_expr_seq *
641                                 decorator_list, expr_ty returns, string
642                                 type_comment, int lineno, int col_offset, int
643                                 end_lineno, int end_col_offset, PyArena *arena);
644 stmt_ty _PyAST_ClassDef(identifier name, asdl_expr_seq * bases,
645                         asdl_keyword_seq * keywords, asdl_stmt_seq * body,
646                         asdl_expr_seq * decorator_list, int lineno, int
647                         col_offset, int end_lineno, int end_col_offset, PyArena
648                         *arena);
649 stmt_ty _PyAST_Return(expr_ty value, int lineno, int col_offset, int
650                       end_lineno, int end_col_offset, PyArena *arena);
651 stmt_ty _PyAST_Delete(asdl_expr_seq * targets, int lineno, int col_offset, int
652                       end_lineno, int end_col_offset, PyArena *arena);
653 stmt_ty _PyAST_Assign(asdl_expr_seq * targets, expr_ty value, string
654                       type_comment, int lineno, int col_offset, int end_lineno,
655                       int end_col_offset, PyArena *arena);
656 stmt_ty _PyAST_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
657                          lineno, int col_offset, int end_lineno, int
658                          end_col_offset, PyArena *arena);
659 stmt_ty _PyAST_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int
660                          simple, int lineno, int col_offset, int end_lineno,
661                          int end_col_offset, PyArena *arena);
662 stmt_ty _PyAST_For(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
663                    asdl_stmt_seq * orelse, string type_comment, int lineno, int
664                    col_offset, int end_lineno, int end_col_offset, PyArena
665                    *arena);
666 stmt_ty _PyAST_AsyncFor(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
667                         asdl_stmt_seq * orelse, string type_comment, int
668                         lineno, int col_offset, int end_lineno, int
669                         end_col_offset, PyArena *arena);
670 stmt_ty _PyAST_While(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq *
671                      orelse, int lineno, int col_offset, int end_lineno, int
672                      end_col_offset, PyArena *arena);
673 stmt_ty _PyAST_If(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse,
674                   int lineno, int col_offset, int end_lineno, int
675                   end_col_offset, PyArena *arena);
676 stmt_ty _PyAST_With(asdl_withitem_seq * items, asdl_stmt_seq * body, string
677                     type_comment, int lineno, int col_offset, int end_lineno,
678                     int end_col_offset, PyArena *arena);
679 stmt_ty _PyAST_AsyncWith(asdl_withitem_seq * items, asdl_stmt_seq * body,
680                          string type_comment, int lineno, int col_offset, int
681                          end_lineno, int end_col_offset, PyArena *arena);
682 stmt_ty _PyAST_Match(expr_ty subject, asdl_match_case_seq * cases, int lineno,
683                      int col_offset, int end_lineno, int end_col_offset,
684                      PyArena *arena);
685 stmt_ty _PyAST_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset,
686                      int end_lineno, int end_col_offset, PyArena *arena);
687 stmt_ty _PyAST_Try(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
688                    asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int
689                    lineno, int col_offset, int end_lineno, int end_col_offset,
690                    PyArena *arena);
691 stmt_ty _PyAST_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset,
692                       int end_lineno, int end_col_offset, PyArena *arena);
693 stmt_ty _PyAST_Import(asdl_alias_seq * names, int lineno, int col_offset, int
694                       end_lineno, int end_col_offset, PyArena *arena);
695 stmt_ty _PyAST_ImportFrom(identifier module, asdl_alias_seq * names, int level,
696                           int lineno, int col_offset, int end_lineno, int
697                           end_col_offset, PyArena *arena);
698 stmt_ty _PyAST_Global(asdl_identifier_seq * names, int lineno, int col_offset,
699                       int end_lineno, int end_col_offset, PyArena *arena);
700 stmt_ty _PyAST_Nonlocal(asdl_identifier_seq * names, int lineno, int
701                         col_offset, int end_lineno, int end_col_offset, PyArena
702                         *arena);
703 stmt_ty _PyAST_Expr(expr_ty value, int lineno, int col_offset, int end_lineno,
704                     int end_col_offset, PyArena *arena);
705 stmt_ty _PyAST_Pass(int lineno, int col_offset, int end_lineno, int
706                     end_col_offset, PyArena *arena);
707 stmt_ty _PyAST_Break(int lineno, int col_offset, int end_lineno, int
708                      end_col_offset, PyArena *arena);
709 stmt_ty _PyAST_Continue(int lineno, int col_offset, int end_lineno, int
710                         end_col_offset, PyArena *arena);
711 expr_ty _PyAST_BoolOp(boolop_ty op, asdl_expr_seq * values, int lineno, int
712                       col_offset, int end_lineno, int end_col_offset, PyArena
713                       *arena);
714 expr_ty _PyAST_NamedExpr(expr_ty target, expr_ty value, int lineno, int
715                          col_offset, int end_lineno, int end_col_offset,
716                          PyArena *arena);
717 expr_ty _PyAST_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno,
718                      int col_offset, int end_lineno, int end_col_offset,
719                      PyArena *arena);
720 expr_ty _PyAST_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int
721                        col_offset, int end_lineno, int end_col_offset, PyArena
722                        *arena);
723 expr_ty _PyAST_Lambda(arguments_ty args, expr_ty body, int lineno, int
724                       col_offset, int end_lineno, int end_col_offset, PyArena
725                       *arena);
726 expr_ty _PyAST_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno,
727                      int col_offset, int end_lineno, int end_col_offset,
728                      PyArena *arena);
729 expr_ty _PyAST_Dict(asdl_expr_seq * keys, asdl_expr_seq * values, int lineno,
730                     int col_offset, int end_lineno, int end_col_offset, PyArena
731                     *arena);
732 expr_ty _PyAST_Set(asdl_expr_seq * elts, int lineno, int col_offset, int
733                    end_lineno, int end_col_offset, PyArena *arena);
734 expr_ty _PyAST_ListComp(expr_ty elt, asdl_comprehension_seq * generators, int
735                         lineno, int col_offset, int end_lineno, int
736                         end_col_offset, PyArena *arena);
737 expr_ty _PyAST_SetComp(expr_ty elt, asdl_comprehension_seq * generators, int
738                        lineno, int col_offset, int end_lineno, int
739                        end_col_offset, PyArena *arena);
740 expr_ty _PyAST_DictComp(expr_ty key, expr_ty value, asdl_comprehension_seq *
741                         generators, int lineno, int col_offset, int end_lineno,
742                         int end_col_offset, PyArena *arena);
743 expr_ty _PyAST_GeneratorExp(expr_ty elt, asdl_comprehension_seq * generators,
744                             int lineno, int col_offset, int end_lineno, int
745                             end_col_offset, PyArena *arena);
746 expr_ty _PyAST_Await(expr_ty value, int lineno, int col_offset, int end_lineno,
747                      int end_col_offset, PyArena *arena);
748 expr_ty _PyAST_Yield(expr_ty value, int lineno, int col_offset, int end_lineno,
749                      int end_col_offset, PyArena *arena);
750 expr_ty _PyAST_YieldFrom(expr_ty value, int lineno, int col_offset, int
751                          end_lineno, int end_col_offset, PyArena *arena);
752 expr_ty _PyAST_Compare(expr_ty left, asdl_int_seq * ops, asdl_expr_seq *
753                        comparators, int lineno, int col_offset, int end_lineno,
754                        int end_col_offset, PyArena *arena);
755 expr_ty _PyAST_Call(expr_ty func, asdl_expr_seq * args, asdl_keyword_seq *
756                     keywords, int lineno, int col_offset, int end_lineno, int
757                     end_col_offset, PyArena *arena);
758 expr_ty _PyAST_FormattedValue(expr_ty value, int conversion, expr_ty
759                               format_spec, int lineno, int col_offset, int
760                               end_lineno, int end_col_offset, PyArena *arena);
761 expr_ty _PyAST_JoinedStr(asdl_expr_seq * values, int lineno, int col_offset,
762                          int end_lineno, int end_col_offset, PyArena *arena);
763 expr_ty _PyAST_Constant(constant value, string kind, int lineno, int
764                         col_offset, int end_lineno, int end_col_offset, PyArena
765                         *arena);
766 expr_ty _PyAST_Attribute(expr_ty value, identifier attr, expr_context_ty ctx,
767                          int lineno, int col_offset, int end_lineno, int
768                          end_col_offset, PyArena *arena);
769 expr_ty _PyAST_Subscript(expr_ty value, expr_ty slice, expr_context_ty ctx, int
770                          lineno, int col_offset, int end_lineno, int
771                          end_col_offset, PyArena *arena);
772 expr_ty _PyAST_Starred(expr_ty value, expr_context_ty ctx, int lineno, int
773                        col_offset, int end_lineno, int end_col_offset, PyArena
774                        *arena);
775 expr_ty _PyAST_Name(identifier id, expr_context_ty ctx, int lineno, int
776                     col_offset, int end_lineno, int end_col_offset, PyArena
777                     *arena);
778 expr_ty _PyAST_List(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
779                     col_offset, int end_lineno, int end_col_offset, PyArena
780                     *arena);
781 expr_ty _PyAST_Tuple(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
782                      col_offset, int end_lineno, int end_col_offset, PyArena
783                      *arena);
784 expr_ty _PyAST_Slice(expr_ty lower, expr_ty upper, expr_ty step, int lineno,
785                      int col_offset, int end_lineno, int end_col_offset,
786                      PyArena *arena);
787 comprehension_ty _PyAST_comprehension(expr_ty target, expr_ty iter,
788                                       asdl_expr_seq * ifs, int is_async,
789                                       PyArena *arena);
790 excepthandler_ty _PyAST_ExceptHandler(expr_ty type, identifier name,
791                                       asdl_stmt_seq * body, int lineno, int
792                                       col_offset, int end_lineno, int
793                                       end_col_offset, PyArena *arena);
794 arguments_ty _PyAST_arguments(asdl_arg_seq * posonlyargs, asdl_arg_seq * args,
795                               arg_ty vararg, asdl_arg_seq * kwonlyargs,
796                               asdl_expr_seq * kw_defaults, arg_ty kwarg,
797                               asdl_expr_seq * defaults, PyArena *arena);
798 arg_ty _PyAST_arg(identifier arg, expr_ty annotation, string type_comment, int
799                   lineno, int col_offset, int end_lineno, int end_col_offset,
800                   PyArena *arena);
801 keyword_ty _PyAST_keyword(identifier arg, expr_ty value, int lineno, int
802                           col_offset, int end_lineno, int end_col_offset,
803                           PyArena *arena);
804 alias_ty _PyAST_alias(identifier name, identifier asname, int lineno, int
805                       col_offset, int end_lineno, int end_col_offset, PyArena
806                       *arena);
807 withitem_ty _PyAST_withitem(expr_ty context_expr, expr_ty optional_vars,
808                             PyArena *arena);
809 match_case_ty _PyAST_match_case(pattern_ty pattern, expr_ty guard,
810                                 asdl_stmt_seq * body, PyArena *arena);
811 pattern_ty _PyAST_MatchValue(expr_ty value, int lineno, int col_offset, int
812                              end_lineno, int end_col_offset, PyArena *arena);
813 pattern_ty _PyAST_MatchSingleton(constant value, int lineno, int col_offset,
814                                  int end_lineno, int end_col_offset, PyArena
815                                  *arena);
816 pattern_ty _PyAST_MatchSequence(asdl_pattern_seq * patterns, int lineno, int
817                                 col_offset, int end_lineno, int end_col_offset,
818                                 PyArena *arena);
819 pattern_ty _PyAST_MatchMapping(asdl_expr_seq * keys, asdl_pattern_seq *
820                                patterns, identifier rest, int lineno, int
821                                col_offset, int end_lineno, int end_col_offset,
822                                PyArena *arena);
823 pattern_ty _PyAST_MatchClass(expr_ty cls, asdl_pattern_seq * patterns,
824                              asdl_identifier_seq * kwd_attrs, asdl_pattern_seq
825                              * kwd_patterns, int lineno, int col_offset, int
826                              end_lineno, int end_col_offset, PyArena *arena);
827 pattern_ty _PyAST_MatchStar(identifier name, int lineno, int col_offset, int
828                             end_lineno, int end_col_offset, PyArena *arena);
829 pattern_ty _PyAST_MatchAs(pattern_ty pattern, identifier name, int lineno, int
830                           col_offset, int end_lineno, int end_col_offset,
831                           PyArena *arena);
832 pattern_ty _PyAST_MatchOr(asdl_pattern_seq * patterns, int lineno, int
833                           col_offset, int end_lineno, int end_col_offset,
834                           PyArena *arena);
835 type_ignore_ty _PyAST_TypeIgnore(int lineno, string tag, PyArena *arena);
836 
837 
838 PyObject* PyAST_mod2obj(mod_ty t);
839 mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
840 int PyAST_Check(PyObject* obj);
841 
842 extern int _PyAST_Validate(mod_ty);
843 
844 /* _PyAST_ExprAsUnicode is defined in ast_unparse.c */
845 extern PyObject* _PyAST_ExprAsUnicode(expr_ty);
846 
847 /* Return the borrowed reference to the first literal string in the
848    sequence of statements or NULL if it doesn't start from a literal string.
849    Doesn't set exception. */
850 extern PyObject* _PyAST_GetDocString(asdl_stmt_seq *);
851 
852 #ifdef __cplusplus
853 }
854 #endif
855 #endif /* !Py_INTERNAL_AST_H */
856