1 /* File automatically generated by Parser/asdl_c.py. */
7 This module must be committed separately after each AST grammar change;
8 The __version__ number is set to the revision number of the commit
9 containing the grammar change.
13 #include "Python-ast.h"
15 static PyTypeObject AST_type
;
16 static PyTypeObject
*mod_type
;
17 static PyObject
* ast2obj_mod(void*);
18 static PyTypeObject
*Module_type
;
19 static char *Module_fields
[]={
22 static PyTypeObject
*Interactive_type
;
23 static char *Interactive_fields
[]={
26 static PyTypeObject
*Expression_type
;
27 static char *Expression_fields
[]={
30 static PyTypeObject
*Suite_type
;
31 static char *Suite_fields
[]={
34 static PyTypeObject
*stmt_type
;
35 static char *stmt_attributes
[] = {
39 static PyObject
* ast2obj_stmt(void*);
40 static PyTypeObject
*FunctionDef_type
;
41 static char *FunctionDef_fields
[]={
47 static PyTypeObject
*ClassDef_type
;
48 static char *ClassDef_fields
[]={
54 static PyTypeObject
*Return_type
;
55 static char *Return_fields
[]={
58 static PyTypeObject
*Delete_type
;
59 static char *Delete_fields
[]={
62 static PyTypeObject
*Assign_type
;
63 static char *Assign_fields
[]={
67 static PyTypeObject
*AugAssign_type
;
68 static char *AugAssign_fields
[]={
73 static PyTypeObject
*Print_type
;
74 static char *Print_fields
[]={
79 static PyTypeObject
*For_type
;
80 static char *For_fields
[]={
86 static PyTypeObject
*While_type
;
87 static char *While_fields
[]={
92 static PyTypeObject
*If_type
;
93 static char *If_fields
[]={
98 static PyTypeObject
*With_type
;
99 static char *With_fields
[]={
104 static PyTypeObject
*Raise_type
;
105 static char *Raise_fields
[]={
110 static PyTypeObject
*TryExcept_type
;
111 static char *TryExcept_fields
[]={
116 static PyTypeObject
*TryFinally_type
;
117 static char *TryFinally_fields
[]={
121 static PyTypeObject
*Assert_type
;
122 static char *Assert_fields
[]={
126 static PyTypeObject
*Import_type
;
127 static char *Import_fields
[]={
130 static PyTypeObject
*ImportFrom_type
;
131 static char *ImportFrom_fields
[]={
136 static PyTypeObject
*Exec_type
;
137 static char *Exec_fields
[]={
142 static PyTypeObject
*Global_type
;
143 static char *Global_fields
[]={
146 static PyTypeObject
*Expr_type
;
147 static char *Expr_fields
[]={
150 static PyTypeObject
*Pass_type
;
151 static PyTypeObject
*Break_type
;
152 static PyTypeObject
*Continue_type
;
153 static PyTypeObject
*expr_type
;
154 static char *expr_attributes
[] = {
158 static PyObject
* ast2obj_expr(void*);
159 static PyTypeObject
*BoolOp_type
;
160 static char *BoolOp_fields
[]={
164 static PyTypeObject
*BinOp_type
;
165 static char *BinOp_fields
[]={
170 static PyTypeObject
*UnaryOp_type
;
171 static char *UnaryOp_fields
[]={
175 static PyTypeObject
*Lambda_type
;
176 static char *Lambda_fields
[]={
180 static PyTypeObject
*IfExp_type
;
181 static char *IfExp_fields
[]={
186 static PyTypeObject
*Dict_type
;
187 static char *Dict_fields
[]={
191 static PyTypeObject
*ListComp_type
;
192 static char *ListComp_fields
[]={
196 static PyTypeObject
*GeneratorExp_type
;
197 static char *GeneratorExp_fields
[]={
201 static PyTypeObject
*Yield_type
;
202 static char *Yield_fields
[]={
205 static PyTypeObject
*Compare_type
;
206 static char *Compare_fields
[]={
211 static PyTypeObject
*Call_type
;
212 static char *Call_fields
[]={
219 static PyTypeObject
*Repr_type
;
220 static char *Repr_fields
[]={
223 static PyTypeObject
*Num_type
;
224 static char *Num_fields
[]={
227 static PyTypeObject
*Str_type
;
228 static char *Str_fields
[]={
231 static PyTypeObject
*Attribute_type
;
232 static char *Attribute_fields
[]={
237 static PyTypeObject
*Subscript_type
;
238 static char *Subscript_fields
[]={
243 static PyTypeObject
*Name_type
;
244 static char *Name_fields
[]={
248 static PyTypeObject
*List_type
;
249 static char *List_fields
[]={
253 static PyTypeObject
*Tuple_type
;
254 static char *Tuple_fields
[]={
258 static PyTypeObject
*expr_context_type
;
259 static PyObject
*Load_singleton
, *Store_singleton
, *Del_singleton
,
260 *AugLoad_singleton
, *AugStore_singleton
, *Param_singleton
;
261 static PyObject
* ast2obj_expr_context(expr_context_ty
);
262 static PyTypeObject
*Load_type
;
263 static PyTypeObject
*Store_type
;
264 static PyTypeObject
*Del_type
;
265 static PyTypeObject
*AugLoad_type
;
266 static PyTypeObject
*AugStore_type
;
267 static PyTypeObject
*Param_type
;
268 static PyTypeObject
*slice_type
;
269 static PyObject
* ast2obj_slice(void*);
270 static PyTypeObject
*Ellipsis_type
;
271 static PyTypeObject
*Slice_type
;
272 static char *Slice_fields
[]={
277 static PyTypeObject
*ExtSlice_type
;
278 static char *ExtSlice_fields
[]={
281 static PyTypeObject
*Index_type
;
282 static char *Index_fields
[]={
285 static PyTypeObject
*boolop_type
;
286 static PyObject
*And_singleton
, *Or_singleton
;
287 static PyObject
* ast2obj_boolop(boolop_ty
);
288 static PyTypeObject
*And_type
;
289 static PyTypeObject
*Or_type
;
290 static PyTypeObject
*operator_type
;
291 static PyObject
*Add_singleton
, *Sub_singleton
, *Mult_singleton
,
292 *Div_singleton
, *Mod_singleton
, *Pow_singleton
, *LShift_singleton
,
293 *RShift_singleton
, *BitOr_singleton
, *BitXor_singleton
, *BitAnd_singleton
,
295 static PyObject
* ast2obj_operator(operator_ty
);
296 static PyTypeObject
*Add_type
;
297 static PyTypeObject
*Sub_type
;
298 static PyTypeObject
*Mult_type
;
299 static PyTypeObject
*Div_type
;
300 static PyTypeObject
*Mod_type
;
301 static PyTypeObject
*Pow_type
;
302 static PyTypeObject
*LShift_type
;
303 static PyTypeObject
*RShift_type
;
304 static PyTypeObject
*BitOr_type
;
305 static PyTypeObject
*BitXor_type
;
306 static PyTypeObject
*BitAnd_type
;
307 static PyTypeObject
*FloorDiv_type
;
308 static PyTypeObject
*unaryop_type
;
309 static PyObject
*Invert_singleton
, *Not_singleton
, *UAdd_singleton
,
311 static PyObject
* ast2obj_unaryop(unaryop_ty
);
312 static PyTypeObject
*Invert_type
;
313 static PyTypeObject
*Not_type
;
314 static PyTypeObject
*UAdd_type
;
315 static PyTypeObject
*USub_type
;
316 static PyTypeObject
*cmpop_type
;
317 static PyObject
*Eq_singleton
, *NotEq_singleton
, *Lt_singleton
, *LtE_singleton
,
318 *Gt_singleton
, *GtE_singleton
, *Is_singleton
, *IsNot_singleton
, *In_singleton
,
320 static PyObject
* ast2obj_cmpop(cmpop_ty
);
321 static PyTypeObject
*Eq_type
;
322 static PyTypeObject
*NotEq_type
;
323 static PyTypeObject
*Lt_type
;
324 static PyTypeObject
*LtE_type
;
325 static PyTypeObject
*Gt_type
;
326 static PyTypeObject
*GtE_type
;
327 static PyTypeObject
*Is_type
;
328 static PyTypeObject
*IsNot_type
;
329 static PyTypeObject
*In_type
;
330 static PyTypeObject
*NotIn_type
;
331 static PyTypeObject
*comprehension_type
;
332 static PyObject
* ast2obj_comprehension(void*);
333 static char *comprehension_fields
[]={
338 static PyTypeObject
*excepthandler_type
;
339 static char *excepthandler_attributes
[] = {
343 static PyObject
* ast2obj_excepthandler(void*);
344 static PyTypeObject
*ExceptHandler_type
;
345 static char *ExceptHandler_fields
[]={
350 static PyTypeObject
*arguments_type
;
351 static PyObject
* ast2obj_arguments(void*);
352 static char *arguments_fields
[]={
358 static PyTypeObject
*keyword_type
;
359 static PyObject
* ast2obj_keyword(void*);
360 static char *keyword_fields
[]={
364 static PyTypeObject
*alias_type
;
365 static PyObject
* ast2obj_alias(void*);
366 static char *alias_fields
[]={
373 ast_type_init(PyObject
*self
, PyObject
*args
, PyObject
*kw
)
375 Py_ssize_t i
, numfields
= 0;
377 PyObject
*key
, *value
, *fields
;
378 fields
= PyObject_GetAttrString((PyObject
*)Py_TYPE(self
), "_fields");
382 numfields
= PySequence_Size(fields
);
386 res
= 0; /* if no error occurs, this stays 0 to the end */
387 if (PyTuple_GET_SIZE(args
) > 0) {
388 if (numfields
!= PyTuple_GET_SIZE(args
)) {
389 PyErr_Format(PyExc_TypeError
, "%.400s constructor takes %s"
390 "%zd positional argument%s",
391 Py_TYPE(self
)->tp_name
,
392 numfields
== 0 ? "" : "either 0 or ",
393 numfields
, numfields
== 1 ? "" : "s");
397 for (i
= 0; i
< PyTuple_GET_SIZE(args
); i
++) {
398 /* cannot be reached when fields is NULL */
399 PyObject
*name
= PySequence_GetItem(fields
, i
);
404 res
= PyObject_SetAttr(self
, name
, PyTuple_GET_ITEM(args
, i
));
411 i
= 0; /* needed by PyDict_Next */
412 while (PyDict_Next(kw
, &i
, &key
, &value
)) {
413 res
= PyObject_SetAttr(self
, key
, value
);
423 /* Pickling support */
425 ast_type_reduce(PyObject
*self
, PyObject
*unused
)
428 PyObject
*dict
= PyObject_GetAttrString(self
, "__dict__");
430 if (PyErr_ExceptionMatches(PyExc_AttributeError
))
436 res
= Py_BuildValue("O()O", Py_TYPE(self
), dict
);
440 return Py_BuildValue("O()", Py_TYPE(self
));
443 static PyMethodDef ast_type_methods
[] = {
444 {"__reduce__", ast_type_reduce
, METH_NOARGS
, NULL
},
448 static PyTypeObject AST_type
= {
449 PyVarObject_HEAD_INIT(&PyType_Type
, 0)
459 0, /* tp_as_number */
460 0, /* tp_as_sequence */
461 0, /* tp_as_mapping */
465 PyObject_GenericGetAttr
, /* tp_getattro */
466 PyObject_GenericSetAttr
, /* tp_setattro */
467 0, /* tp_as_buffer */
468 Py_TPFLAGS_DEFAULT
| Py_TPFLAGS_BASETYPE
, /* tp_flags */
472 0, /* tp_richcompare */
473 0, /* tp_weaklistoffset */
476 ast_type_methods
, /* tp_methods */
481 0, /* tp_descr_get */
482 0, /* tp_descr_set */
483 0, /* tp_dictoffset */
484 (initproc
)ast_type_init
, /* tp_init */
485 PyType_GenericAlloc
, /* tp_alloc */
486 PyType_GenericNew
, /* tp_new */
487 PyObject_Del
, /* tp_free */
491 static PyTypeObject
* make_type(char *type
, PyTypeObject
* base
, char**fields
, int num_fields
)
493 PyObject
*fnames
, *result
;
495 fnames
= PyTuple_New(num_fields
);
496 if (!fnames
) return NULL
;
497 for (i
= 0; i
< num_fields
; i
++) {
498 PyObject
*field
= PyString_FromString(fields
[i
]);
503 PyTuple_SET_ITEM(fnames
, i
, field
);
505 result
= PyObject_CallFunction((PyObject
*)&PyType_Type
, "s(O){sOss}",
506 type
, base
, "_fields", fnames
, "__module__", "_ast");
508 return (PyTypeObject
*)result
;
511 static int add_attributes(PyTypeObject
* type
, char**attrs
, int num_fields
)
514 PyObject
*s
, *l
= PyTuple_New(num_fields
);
516 for(i
= 0; i
< num_fields
; i
++) {
517 s
= PyString_FromString(attrs
[i
]);
522 PyTuple_SET_ITEM(l
, i
, s
);
524 result
= PyObject_SetAttrString((PyObject
*)type
, "_attributes", l
) >= 0;
529 /* Conversion AST -> Python */
531 static PyObject
* ast2obj_list(asdl_seq
*seq
, PyObject
* (*func
)(void*))
533 int i
, n
= asdl_seq_LEN(seq
);
534 PyObject
*result
= PyList_New(n
);
538 for (i
= 0; i
< n
; i
++) {
539 value
= func(asdl_seq_GET(seq
, i
));
544 PyList_SET_ITEM(result
, i
, value
);
549 static PyObject
* ast2obj_object(void *o
)
553 Py_INCREF((PyObject
*)o
);
556 #define ast2obj_identifier ast2obj_object
557 #define ast2obj_string ast2obj_object
558 static PyObject
* ast2obj_bool(bool b
)
560 return PyBool_FromLong(b
);
563 static PyObject
* ast2obj_int(long b
)
565 return PyInt_FromLong(b
);
568 /* Conversion Python -> AST */
570 static int obj2ast_object(PyObject
* obj
, PyObject
** out
, PyArena
* arena
)
575 PyArena_AddPyObject(arena
, obj
);
581 #define obj2ast_identifier obj2ast_object
582 #define obj2ast_string obj2ast_object
584 static int obj2ast_int(PyObject
* obj
, int* out
, PyArena
* arena
)
587 if (!PyInt_Check(obj
) && !PyLong_Check(obj
)) {
588 PyObject
*s
= PyObject_Repr(obj
);
589 if (s
== NULL
) return 1;
590 PyErr_Format(PyExc_ValueError
, "invalid integer value: %.400s",
591 PyString_AS_STRING(s
));
596 i
= (int)PyLong_AsLong(obj
);
597 if (i
== -1 && PyErr_Occurred())
603 static int obj2ast_bool(PyObject
* obj
, bool* out
, PyArena
* arena
)
605 if (!PyBool_Check(obj
)) {
606 PyObject
*s
= PyObject_Repr(obj
);
607 if (s
== NULL
) return 1;
608 PyErr_Format(PyExc_ValueError
, "invalid boolean value: %.400s",
609 PyString_AS_STRING(s
));
614 *out
= (obj
== Py_True
);
618 static int add_ast_fields(void)
620 PyObject
*empty_tuple
, *d
;
621 if (PyType_Ready(&AST_type
) < 0)
623 d
= AST_type
.tp_dict
;
624 empty_tuple
= PyTuple_New(0);
626 PyDict_SetItemString(d
, "_fields", empty_tuple
) < 0 ||
627 PyDict_SetItemString(d
, "_attributes", empty_tuple
) < 0) {
628 Py_XDECREF(empty_tuple
);
631 Py_DECREF(empty_tuple
);
636 static int init_types(void)
638 static int initialized
;
639 if (initialized
) return 1;
640 if (add_ast_fields() < 0) return 0;
641 mod_type
= make_type("mod", &AST_type
, NULL
, 0);
642 if (!mod_type
) return 0;
643 if (!add_attributes(mod_type
, NULL
, 0)) return 0;
644 Module_type
= make_type("Module", mod_type
, Module_fields
, 1);
645 if (!Module_type
) return 0;
646 Interactive_type
= make_type("Interactive", mod_type
,
647 Interactive_fields
, 1);
648 if (!Interactive_type
) return 0;
649 Expression_type
= make_type("Expression", mod_type
, Expression_fields
,
651 if (!Expression_type
) return 0;
652 Suite_type
= make_type("Suite", mod_type
, Suite_fields
, 1);
653 if (!Suite_type
) return 0;
654 stmt_type
= make_type("stmt", &AST_type
, NULL
, 0);
655 if (!stmt_type
) return 0;
656 if (!add_attributes(stmt_type
, stmt_attributes
, 2)) return 0;
657 FunctionDef_type
= make_type("FunctionDef", stmt_type
,
658 FunctionDef_fields
, 4);
659 if (!FunctionDef_type
) return 0;
660 ClassDef_type
= make_type("ClassDef", stmt_type
, ClassDef_fields
, 4);
661 if (!ClassDef_type
) return 0;
662 Return_type
= make_type("Return", stmt_type
, Return_fields
, 1);
663 if (!Return_type
) return 0;
664 Delete_type
= make_type("Delete", stmt_type
, Delete_fields
, 1);
665 if (!Delete_type
) return 0;
666 Assign_type
= make_type("Assign", stmt_type
, Assign_fields
, 2);
667 if (!Assign_type
) return 0;
668 AugAssign_type
= make_type("AugAssign", stmt_type
, AugAssign_fields
, 3);
669 if (!AugAssign_type
) return 0;
670 Print_type
= make_type("Print", stmt_type
, Print_fields
, 3);
671 if (!Print_type
) return 0;
672 For_type
= make_type("For", stmt_type
, For_fields
, 4);
673 if (!For_type
) return 0;
674 While_type
= make_type("While", stmt_type
, While_fields
, 3);
675 if (!While_type
) return 0;
676 If_type
= make_type("If", stmt_type
, If_fields
, 3);
677 if (!If_type
) return 0;
678 With_type
= make_type("With", stmt_type
, With_fields
, 3);
679 if (!With_type
) return 0;
680 Raise_type
= make_type("Raise", stmt_type
, Raise_fields
, 3);
681 if (!Raise_type
) return 0;
682 TryExcept_type
= make_type("TryExcept", stmt_type
, TryExcept_fields
, 3);
683 if (!TryExcept_type
) return 0;
684 TryFinally_type
= make_type("TryFinally", stmt_type
, TryFinally_fields
,
686 if (!TryFinally_type
) return 0;
687 Assert_type
= make_type("Assert", stmt_type
, Assert_fields
, 2);
688 if (!Assert_type
) return 0;
689 Import_type
= make_type("Import", stmt_type
, Import_fields
, 1);
690 if (!Import_type
) return 0;
691 ImportFrom_type
= make_type("ImportFrom", stmt_type
, ImportFrom_fields
,
693 if (!ImportFrom_type
) return 0;
694 Exec_type
= make_type("Exec", stmt_type
, Exec_fields
, 3);
695 if (!Exec_type
) return 0;
696 Global_type
= make_type("Global", stmt_type
, Global_fields
, 1);
697 if (!Global_type
) return 0;
698 Expr_type
= make_type("Expr", stmt_type
, Expr_fields
, 1);
699 if (!Expr_type
) return 0;
700 Pass_type
= make_type("Pass", stmt_type
, NULL
, 0);
701 if (!Pass_type
) return 0;
702 Break_type
= make_type("Break", stmt_type
, NULL
, 0);
703 if (!Break_type
) return 0;
704 Continue_type
= make_type("Continue", stmt_type
, NULL
, 0);
705 if (!Continue_type
) return 0;
706 expr_type
= make_type("expr", &AST_type
, NULL
, 0);
707 if (!expr_type
) return 0;
708 if (!add_attributes(expr_type
, expr_attributes
, 2)) return 0;
709 BoolOp_type
= make_type("BoolOp", expr_type
, BoolOp_fields
, 2);
710 if (!BoolOp_type
) return 0;
711 BinOp_type
= make_type("BinOp", expr_type
, BinOp_fields
, 3);
712 if (!BinOp_type
) return 0;
713 UnaryOp_type
= make_type("UnaryOp", expr_type
, UnaryOp_fields
, 2);
714 if (!UnaryOp_type
) return 0;
715 Lambda_type
= make_type("Lambda", expr_type
, Lambda_fields
, 2);
716 if (!Lambda_type
) return 0;
717 IfExp_type
= make_type("IfExp", expr_type
, IfExp_fields
, 3);
718 if (!IfExp_type
) return 0;
719 Dict_type
= make_type("Dict", expr_type
, Dict_fields
, 2);
720 if (!Dict_type
) return 0;
721 ListComp_type
= make_type("ListComp", expr_type
, ListComp_fields
, 2);
722 if (!ListComp_type
) return 0;
723 GeneratorExp_type
= make_type("GeneratorExp", expr_type
,
724 GeneratorExp_fields
, 2);
725 if (!GeneratorExp_type
) return 0;
726 Yield_type
= make_type("Yield", expr_type
, Yield_fields
, 1);
727 if (!Yield_type
) return 0;
728 Compare_type
= make_type("Compare", expr_type
, Compare_fields
, 3);
729 if (!Compare_type
) return 0;
730 Call_type
= make_type("Call", expr_type
, Call_fields
, 5);
731 if (!Call_type
) return 0;
732 Repr_type
= make_type("Repr", expr_type
, Repr_fields
, 1);
733 if (!Repr_type
) return 0;
734 Num_type
= make_type("Num", expr_type
, Num_fields
, 1);
735 if (!Num_type
) return 0;
736 Str_type
= make_type("Str", expr_type
, Str_fields
, 1);
737 if (!Str_type
) return 0;
738 Attribute_type
= make_type("Attribute", expr_type
, Attribute_fields
, 3);
739 if (!Attribute_type
) return 0;
740 Subscript_type
= make_type("Subscript", expr_type
, Subscript_fields
, 3);
741 if (!Subscript_type
) return 0;
742 Name_type
= make_type("Name", expr_type
, Name_fields
, 2);
743 if (!Name_type
) return 0;
744 List_type
= make_type("List", expr_type
, List_fields
, 2);
745 if (!List_type
) return 0;
746 Tuple_type
= make_type("Tuple", expr_type
, Tuple_fields
, 2);
747 if (!Tuple_type
) return 0;
748 expr_context_type
= make_type("expr_context", &AST_type
, NULL
, 0);
749 if (!expr_context_type
) return 0;
750 if (!add_attributes(expr_context_type
, NULL
, 0)) return 0;
751 Load_type
= make_type("Load", expr_context_type
, NULL
, 0);
752 if (!Load_type
) return 0;
753 Load_singleton
= PyType_GenericNew(Load_type
, NULL
, NULL
);
754 if (!Load_singleton
) return 0;
755 Store_type
= make_type("Store", expr_context_type
, NULL
, 0);
756 if (!Store_type
) return 0;
757 Store_singleton
= PyType_GenericNew(Store_type
, NULL
, NULL
);
758 if (!Store_singleton
) return 0;
759 Del_type
= make_type("Del", expr_context_type
, NULL
, 0);
760 if (!Del_type
) return 0;
761 Del_singleton
= PyType_GenericNew(Del_type
, NULL
, NULL
);
762 if (!Del_singleton
) return 0;
763 AugLoad_type
= make_type("AugLoad", expr_context_type
, NULL
, 0);
764 if (!AugLoad_type
) return 0;
765 AugLoad_singleton
= PyType_GenericNew(AugLoad_type
, NULL
, NULL
);
766 if (!AugLoad_singleton
) return 0;
767 AugStore_type
= make_type("AugStore", expr_context_type
, NULL
, 0);
768 if (!AugStore_type
) return 0;
769 AugStore_singleton
= PyType_GenericNew(AugStore_type
, NULL
, NULL
);
770 if (!AugStore_singleton
) return 0;
771 Param_type
= make_type("Param", expr_context_type
, NULL
, 0);
772 if (!Param_type
) return 0;
773 Param_singleton
= PyType_GenericNew(Param_type
, NULL
, NULL
);
774 if (!Param_singleton
) return 0;
775 slice_type
= make_type("slice", &AST_type
, NULL
, 0);
776 if (!slice_type
) return 0;
777 if (!add_attributes(slice_type
, NULL
, 0)) return 0;
778 Ellipsis_type
= make_type("Ellipsis", slice_type
, NULL
, 0);
779 if (!Ellipsis_type
) return 0;
780 Slice_type
= make_type("Slice", slice_type
, Slice_fields
, 3);
781 if (!Slice_type
) return 0;
782 ExtSlice_type
= make_type("ExtSlice", slice_type
, ExtSlice_fields
, 1);
783 if (!ExtSlice_type
) return 0;
784 Index_type
= make_type("Index", slice_type
, Index_fields
, 1);
785 if (!Index_type
) return 0;
786 boolop_type
= make_type("boolop", &AST_type
, NULL
, 0);
787 if (!boolop_type
) return 0;
788 if (!add_attributes(boolop_type
, NULL
, 0)) return 0;
789 And_type
= make_type("And", boolop_type
, NULL
, 0);
790 if (!And_type
) return 0;
791 And_singleton
= PyType_GenericNew(And_type
, NULL
, NULL
);
792 if (!And_singleton
) return 0;
793 Or_type
= make_type("Or", boolop_type
, NULL
, 0);
794 if (!Or_type
) return 0;
795 Or_singleton
= PyType_GenericNew(Or_type
, NULL
, NULL
);
796 if (!Or_singleton
) return 0;
797 operator_type
= make_type("operator", &AST_type
, NULL
, 0);
798 if (!operator_type
) return 0;
799 if (!add_attributes(operator_type
, NULL
, 0)) return 0;
800 Add_type
= make_type("Add", operator_type
, NULL
, 0);
801 if (!Add_type
) return 0;
802 Add_singleton
= PyType_GenericNew(Add_type
, NULL
, NULL
);
803 if (!Add_singleton
) return 0;
804 Sub_type
= make_type("Sub", operator_type
, NULL
, 0);
805 if (!Sub_type
) return 0;
806 Sub_singleton
= PyType_GenericNew(Sub_type
, NULL
, NULL
);
807 if (!Sub_singleton
) return 0;
808 Mult_type
= make_type("Mult", operator_type
, NULL
, 0);
809 if (!Mult_type
) return 0;
810 Mult_singleton
= PyType_GenericNew(Mult_type
, NULL
, NULL
);
811 if (!Mult_singleton
) return 0;
812 Div_type
= make_type("Div", operator_type
, NULL
, 0);
813 if (!Div_type
) return 0;
814 Div_singleton
= PyType_GenericNew(Div_type
, NULL
, NULL
);
815 if (!Div_singleton
) return 0;
816 Mod_type
= make_type("Mod", operator_type
, NULL
, 0);
817 if (!Mod_type
) return 0;
818 Mod_singleton
= PyType_GenericNew(Mod_type
, NULL
, NULL
);
819 if (!Mod_singleton
) return 0;
820 Pow_type
= make_type("Pow", operator_type
, NULL
, 0);
821 if (!Pow_type
) return 0;
822 Pow_singleton
= PyType_GenericNew(Pow_type
, NULL
, NULL
);
823 if (!Pow_singleton
) return 0;
824 LShift_type
= make_type("LShift", operator_type
, NULL
, 0);
825 if (!LShift_type
) return 0;
826 LShift_singleton
= PyType_GenericNew(LShift_type
, NULL
, NULL
);
827 if (!LShift_singleton
) return 0;
828 RShift_type
= make_type("RShift", operator_type
, NULL
, 0);
829 if (!RShift_type
) return 0;
830 RShift_singleton
= PyType_GenericNew(RShift_type
, NULL
, NULL
);
831 if (!RShift_singleton
) return 0;
832 BitOr_type
= make_type("BitOr", operator_type
, NULL
, 0);
833 if (!BitOr_type
) return 0;
834 BitOr_singleton
= PyType_GenericNew(BitOr_type
, NULL
, NULL
);
835 if (!BitOr_singleton
) return 0;
836 BitXor_type
= make_type("BitXor", operator_type
, NULL
, 0);
837 if (!BitXor_type
) return 0;
838 BitXor_singleton
= PyType_GenericNew(BitXor_type
, NULL
, NULL
);
839 if (!BitXor_singleton
) return 0;
840 BitAnd_type
= make_type("BitAnd", operator_type
, NULL
, 0);
841 if (!BitAnd_type
) return 0;
842 BitAnd_singleton
= PyType_GenericNew(BitAnd_type
, NULL
, NULL
);
843 if (!BitAnd_singleton
) return 0;
844 FloorDiv_type
= make_type("FloorDiv", operator_type
, NULL
, 0);
845 if (!FloorDiv_type
) return 0;
846 FloorDiv_singleton
= PyType_GenericNew(FloorDiv_type
, NULL
, NULL
);
847 if (!FloorDiv_singleton
) return 0;
848 unaryop_type
= make_type("unaryop", &AST_type
, NULL
, 0);
849 if (!unaryop_type
) return 0;
850 if (!add_attributes(unaryop_type
, NULL
, 0)) return 0;
851 Invert_type
= make_type("Invert", unaryop_type
, NULL
, 0);
852 if (!Invert_type
) return 0;
853 Invert_singleton
= PyType_GenericNew(Invert_type
, NULL
, NULL
);
854 if (!Invert_singleton
) return 0;
855 Not_type
= make_type("Not", unaryop_type
, NULL
, 0);
856 if (!Not_type
) return 0;
857 Not_singleton
= PyType_GenericNew(Not_type
, NULL
, NULL
);
858 if (!Not_singleton
) return 0;
859 UAdd_type
= make_type("UAdd", unaryop_type
, NULL
, 0);
860 if (!UAdd_type
) return 0;
861 UAdd_singleton
= PyType_GenericNew(UAdd_type
, NULL
, NULL
);
862 if (!UAdd_singleton
) return 0;
863 USub_type
= make_type("USub", unaryop_type
, NULL
, 0);
864 if (!USub_type
) return 0;
865 USub_singleton
= PyType_GenericNew(USub_type
, NULL
, NULL
);
866 if (!USub_singleton
) return 0;
867 cmpop_type
= make_type("cmpop", &AST_type
, NULL
, 0);
868 if (!cmpop_type
) return 0;
869 if (!add_attributes(cmpop_type
, NULL
, 0)) return 0;
870 Eq_type
= make_type("Eq", cmpop_type
, NULL
, 0);
871 if (!Eq_type
) return 0;
872 Eq_singleton
= PyType_GenericNew(Eq_type
, NULL
, NULL
);
873 if (!Eq_singleton
) return 0;
874 NotEq_type
= make_type("NotEq", cmpop_type
, NULL
, 0);
875 if (!NotEq_type
) return 0;
876 NotEq_singleton
= PyType_GenericNew(NotEq_type
, NULL
, NULL
);
877 if (!NotEq_singleton
) return 0;
878 Lt_type
= make_type("Lt", cmpop_type
, NULL
, 0);
879 if (!Lt_type
) return 0;
880 Lt_singleton
= PyType_GenericNew(Lt_type
, NULL
, NULL
);
881 if (!Lt_singleton
) return 0;
882 LtE_type
= make_type("LtE", cmpop_type
, NULL
, 0);
883 if (!LtE_type
) return 0;
884 LtE_singleton
= PyType_GenericNew(LtE_type
, NULL
, NULL
);
885 if (!LtE_singleton
) return 0;
886 Gt_type
= make_type("Gt", cmpop_type
, NULL
, 0);
887 if (!Gt_type
) return 0;
888 Gt_singleton
= PyType_GenericNew(Gt_type
, NULL
, NULL
);
889 if (!Gt_singleton
) return 0;
890 GtE_type
= make_type("GtE", cmpop_type
, NULL
, 0);
891 if (!GtE_type
) return 0;
892 GtE_singleton
= PyType_GenericNew(GtE_type
, NULL
, NULL
);
893 if (!GtE_singleton
) return 0;
894 Is_type
= make_type("Is", cmpop_type
, NULL
, 0);
895 if (!Is_type
) return 0;
896 Is_singleton
= PyType_GenericNew(Is_type
, NULL
, NULL
);
897 if (!Is_singleton
) return 0;
898 IsNot_type
= make_type("IsNot", cmpop_type
, NULL
, 0);
899 if (!IsNot_type
) return 0;
900 IsNot_singleton
= PyType_GenericNew(IsNot_type
, NULL
, NULL
);
901 if (!IsNot_singleton
) return 0;
902 In_type
= make_type("In", cmpop_type
, NULL
, 0);
903 if (!In_type
) return 0;
904 In_singleton
= PyType_GenericNew(In_type
, NULL
, NULL
);
905 if (!In_singleton
) return 0;
906 NotIn_type
= make_type("NotIn", cmpop_type
, NULL
, 0);
907 if (!NotIn_type
) return 0;
908 NotIn_singleton
= PyType_GenericNew(NotIn_type
, NULL
, NULL
);
909 if (!NotIn_singleton
) return 0;
910 comprehension_type
= make_type("comprehension", &AST_type
,
911 comprehension_fields
, 3);
912 if (!comprehension_type
) return 0;
913 excepthandler_type
= make_type("excepthandler", &AST_type
, NULL
, 0);
914 if (!excepthandler_type
) return 0;
915 if (!add_attributes(excepthandler_type
, excepthandler_attributes
, 2))
917 ExceptHandler_type
= make_type("ExceptHandler", excepthandler_type
,
918 ExceptHandler_fields
, 3);
919 if (!ExceptHandler_type
) return 0;
920 arguments_type
= make_type("arguments", &AST_type
, arguments_fields
, 4);
921 if (!arguments_type
) return 0;
922 keyword_type
= make_type("keyword", &AST_type
, keyword_fields
, 2);
923 if (!keyword_type
) return 0;
924 alias_type
= make_type("alias", &AST_type
, alias_fields
, 2);
925 if (!alias_type
) return 0;
930 static int obj2ast_mod(PyObject
* obj
, mod_ty
* out
, PyArena
* arena
);
931 static int obj2ast_stmt(PyObject
* obj
, stmt_ty
* out
, PyArena
* arena
);
932 static int obj2ast_expr(PyObject
* obj
, expr_ty
* out
, PyArena
* arena
);
933 static int obj2ast_expr_context(PyObject
* obj
, expr_context_ty
* out
, PyArena
*
935 static int obj2ast_slice(PyObject
* obj
, slice_ty
* out
, PyArena
* arena
);
936 static int obj2ast_boolop(PyObject
* obj
, boolop_ty
* out
, PyArena
* arena
);
937 static int obj2ast_operator(PyObject
* obj
, operator_ty
* out
, PyArena
* arena
);
938 static int obj2ast_unaryop(PyObject
* obj
, unaryop_ty
* out
, PyArena
* arena
);
939 static int obj2ast_cmpop(PyObject
* obj
, cmpop_ty
* out
, PyArena
* arena
);
940 static int obj2ast_comprehension(PyObject
* obj
, comprehension_ty
* out
, PyArena
*
942 static int obj2ast_excepthandler(PyObject
* obj
, excepthandler_ty
* out
, PyArena
*
944 static int obj2ast_arguments(PyObject
* obj
, arguments_ty
* out
, PyArena
* arena
);
945 static int obj2ast_keyword(PyObject
* obj
, keyword_ty
* out
, PyArena
* arena
);
946 static int obj2ast_alias(PyObject
* obj
, alias_ty
* out
, PyArena
* arena
);
949 Module(asdl_seq
* body
, PyArena
*arena
)
952 p
= (mod_ty
)PyArena_Malloc(arena
, sizeof(*p
));
955 p
->kind
= Module_kind
;
956 p
->v
.Module
.body
= body
;
961 Interactive(asdl_seq
* body
, PyArena
*arena
)
964 p
= (mod_ty
)PyArena_Malloc(arena
, sizeof(*p
));
967 p
->kind
= Interactive_kind
;
968 p
->v
.Interactive
.body
= body
;
973 Expression(expr_ty body
, PyArena
*arena
)
977 PyErr_SetString(PyExc_ValueError
,
978 "field body is required for Expression");
981 p
= (mod_ty
)PyArena_Malloc(arena
, sizeof(*p
));
984 p
->kind
= Expression_kind
;
985 p
->v
.Expression
.body
= body
;
990 Suite(asdl_seq
* body
, PyArena
*arena
)
993 p
= (mod_ty
)PyArena_Malloc(arena
, sizeof(*p
));
996 p
->kind
= Suite_kind
;
997 p
->v
.Suite
.body
= body
;
1002 FunctionDef(identifier name
, arguments_ty args
, asdl_seq
* body
, asdl_seq
*
1003 decorator_list
, int lineno
, int col_offset
, PyArena
*arena
)
1007 PyErr_SetString(PyExc_ValueError
,
1008 "field name is required for FunctionDef");
1012 PyErr_SetString(PyExc_ValueError
,
1013 "field args is required for FunctionDef");
1016 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1019 p
->kind
= FunctionDef_kind
;
1020 p
->v
.FunctionDef
.name
= name
;
1021 p
->v
.FunctionDef
.args
= args
;
1022 p
->v
.FunctionDef
.body
= body
;
1023 p
->v
.FunctionDef
.decorator_list
= decorator_list
;
1025 p
->col_offset
= col_offset
;
1030 ClassDef(identifier name
, asdl_seq
* bases
, asdl_seq
* body
, asdl_seq
*
1031 decorator_list
, int lineno
, int col_offset
, PyArena
*arena
)
1035 PyErr_SetString(PyExc_ValueError
,
1036 "field name is required for ClassDef");
1039 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1042 p
->kind
= ClassDef_kind
;
1043 p
->v
.ClassDef
.name
= name
;
1044 p
->v
.ClassDef
.bases
= bases
;
1045 p
->v
.ClassDef
.body
= body
;
1046 p
->v
.ClassDef
.decorator_list
= decorator_list
;
1048 p
->col_offset
= col_offset
;
1053 Return(expr_ty value
, int lineno
, int col_offset
, PyArena
*arena
)
1056 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1059 p
->kind
= Return_kind
;
1060 p
->v
.Return
.value
= value
;
1062 p
->col_offset
= col_offset
;
1067 Delete(asdl_seq
* targets
, int lineno
, int col_offset
, PyArena
*arena
)
1070 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1073 p
->kind
= Delete_kind
;
1074 p
->v
.Delete
.targets
= targets
;
1076 p
->col_offset
= col_offset
;
1081 Assign(asdl_seq
* targets
, expr_ty value
, int lineno
, int col_offset
, PyArena
1086 PyErr_SetString(PyExc_ValueError
,
1087 "field value is required for Assign");
1090 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1093 p
->kind
= Assign_kind
;
1094 p
->v
.Assign
.targets
= targets
;
1095 p
->v
.Assign
.value
= value
;
1097 p
->col_offset
= col_offset
;
1102 AugAssign(expr_ty target
, operator_ty op
, expr_ty value
, int lineno
, int
1103 col_offset
, PyArena
*arena
)
1107 PyErr_SetString(PyExc_ValueError
,
1108 "field target is required for AugAssign");
1112 PyErr_SetString(PyExc_ValueError
,
1113 "field op is required for AugAssign");
1117 PyErr_SetString(PyExc_ValueError
,
1118 "field value is required for AugAssign");
1121 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1124 p
->kind
= AugAssign_kind
;
1125 p
->v
.AugAssign
.target
= target
;
1126 p
->v
.AugAssign
.op
= op
;
1127 p
->v
.AugAssign
.value
= value
;
1129 p
->col_offset
= col_offset
;
1134 Print(expr_ty dest
, asdl_seq
* values
, bool nl
, int lineno
, int col_offset
,
1138 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1141 p
->kind
= Print_kind
;
1142 p
->v
.Print
.dest
= dest
;
1143 p
->v
.Print
.values
= values
;
1146 p
->col_offset
= col_offset
;
1151 For(expr_ty target
, expr_ty iter
, asdl_seq
* body
, asdl_seq
* orelse
, int
1152 lineno
, int col_offset
, PyArena
*arena
)
1156 PyErr_SetString(PyExc_ValueError
,
1157 "field target is required for For");
1161 PyErr_SetString(PyExc_ValueError
,
1162 "field iter is required for For");
1165 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1169 p
->v
.For
.target
= target
;
1170 p
->v
.For
.iter
= iter
;
1171 p
->v
.For
.body
= body
;
1172 p
->v
.For
.orelse
= orelse
;
1174 p
->col_offset
= col_offset
;
1179 While(expr_ty test
, asdl_seq
* body
, asdl_seq
* orelse
, int lineno
, int
1180 col_offset
, PyArena
*arena
)
1184 PyErr_SetString(PyExc_ValueError
,
1185 "field test is required for While");
1188 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1191 p
->kind
= While_kind
;
1192 p
->v
.While
.test
= test
;
1193 p
->v
.While
.body
= body
;
1194 p
->v
.While
.orelse
= orelse
;
1196 p
->col_offset
= col_offset
;
1201 If(expr_ty test
, asdl_seq
* body
, asdl_seq
* orelse
, int lineno
, int
1202 col_offset
, PyArena
*arena
)
1206 PyErr_SetString(PyExc_ValueError
,
1207 "field test is required for If");
1210 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1214 p
->v
.If
.test
= test
;
1215 p
->v
.If
.body
= body
;
1216 p
->v
.If
.orelse
= orelse
;
1218 p
->col_offset
= col_offset
;
1223 With(expr_ty context_expr
, expr_ty optional_vars
, asdl_seq
* body
, int lineno
,
1224 int col_offset
, PyArena
*arena
)
1227 if (!context_expr
) {
1228 PyErr_SetString(PyExc_ValueError
,
1229 "field context_expr is required for With");
1232 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1235 p
->kind
= With_kind
;
1236 p
->v
.With
.context_expr
= context_expr
;
1237 p
->v
.With
.optional_vars
= optional_vars
;
1238 p
->v
.With
.body
= body
;
1240 p
->col_offset
= col_offset
;
1245 Raise(expr_ty type
, expr_ty inst
, expr_ty tback
, int lineno
, int col_offset
,
1249 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1252 p
->kind
= Raise_kind
;
1253 p
->v
.Raise
.type
= type
;
1254 p
->v
.Raise
.inst
= inst
;
1255 p
->v
.Raise
.tback
= tback
;
1257 p
->col_offset
= col_offset
;
1262 TryExcept(asdl_seq
* body
, asdl_seq
* handlers
, asdl_seq
* orelse
, int lineno
,
1263 int col_offset
, PyArena
*arena
)
1266 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1269 p
->kind
= TryExcept_kind
;
1270 p
->v
.TryExcept
.body
= body
;
1271 p
->v
.TryExcept
.handlers
= handlers
;
1272 p
->v
.TryExcept
.orelse
= orelse
;
1274 p
->col_offset
= col_offset
;
1279 TryFinally(asdl_seq
* body
, asdl_seq
* finalbody
, int lineno
, int col_offset
,
1283 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1286 p
->kind
= TryFinally_kind
;
1287 p
->v
.TryFinally
.body
= body
;
1288 p
->v
.TryFinally
.finalbody
= finalbody
;
1290 p
->col_offset
= col_offset
;
1295 Assert(expr_ty test
, expr_ty msg
, int lineno
, int col_offset
, PyArena
*arena
)
1299 PyErr_SetString(PyExc_ValueError
,
1300 "field test is required for Assert");
1303 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1306 p
->kind
= Assert_kind
;
1307 p
->v
.Assert
.test
= test
;
1308 p
->v
.Assert
.msg
= msg
;
1310 p
->col_offset
= col_offset
;
1315 Import(asdl_seq
* names
, int lineno
, int col_offset
, PyArena
*arena
)
1318 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1321 p
->kind
= Import_kind
;
1322 p
->v
.Import
.names
= names
;
1324 p
->col_offset
= col_offset
;
1329 ImportFrom(identifier module
, asdl_seq
* names
, int level
, int lineno
, int
1330 col_offset
, PyArena
*arena
)
1333 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1336 p
->kind
= ImportFrom_kind
;
1337 p
->v
.ImportFrom
.module
= module
;
1338 p
->v
.ImportFrom
.names
= names
;
1339 p
->v
.ImportFrom
.level
= level
;
1341 p
->col_offset
= col_offset
;
1346 Exec(expr_ty body
, expr_ty globals
, expr_ty locals
, int lineno
, int col_offset
,
1351 PyErr_SetString(PyExc_ValueError
,
1352 "field body is required for Exec");
1355 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1358 p
->kind
= Exec_kind
;
1359 p
->v
.Exec
.body
= body
;
1360 p
->v
.Exec
.globals
= globals
;
1361 p
->v
.Exec
.locals
= locals
;
1363 p
->col_offset
= col_offset
;
1368 Global(asdl_seq
* names
, int lineno
, int col_offset
, PyArena
*arena
)
1371 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1374 p
->kind
= Global_kind
;
1375 p
->v
.Global
.names
= names
;
1377 p
->col_offset
= col_offset
;
1382 Expr(expr_ty value
, int lineno
, int col_offset
, PyArena
*arena
)
1386 PyErr_SetString(PyExc_ValueError
,
1387 "field value is required for Expr");
1390 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1393 p
->kind
= Expr_kind
;
1394 p
->v
.Expr
.value
= value
;
1396 p
->col_offset
= col_offset
;
1401 Pass(int lineno
, int col_offset
, PyArena
*arena
)
1404 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1407 p
->kind
= Pass_kind
;
1409 p
->col_offset
= col_offset
;
1414 Break(int lineno
, int col_offset
, PyArena
*arena
)
1417 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1420 p
->kind
= Break_kind
;
1422 p
->col_offset
= col_offset
;
1427 Continue(int lineno
, int col_offset
, PyArena
*arena
)
1430 p
= (stmt_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1433 p
->kind
= Continue_kind
;
1435 p
->col_offset
= col_offset
;
1440 BoolOp(boolop_ty op
, asdl_seq
* values
, int lineno
, int col_offset
, PyArena
1445 PyErr_SetString(PyExc_ValueError
,
1446 "field op is required for BoolOp");
1449 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1452 p
->kind
= BoolOp_kind
;
1453 p
->v
.BoolOp
.op
= op
;
1454 p
->v
.BoolOp
.values
= values
;
1456 p
->col_offset
= col_offset
;
1461 BinOp(expr_ty left
, operator_ty op
, expr_ty right
, int lineno
, int col_offset
,
1466 PyErr_SetString(PyExc_ValueError
,
1467 "field left is required for BinOp");
1471 PyErr_SetString(PyExc_ValueError
,
1472 "field op is required for BinOp");
1476 PyErr_SetString(PyExc_ValueError
,
1477 "field right is required for BinOp");
1480 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1483 p
->kind
= BinOp_kind
;
1484 p
->v
.BinOp
.left
= left
;
1486 p
->v
.BinOp
.right
= right
;
1488 p
->col_offset
= col_offset
;
1493 UnaryOp(unaryop_ty op
, expr_ty operand
, int lineno
, int col_offset
, PyArena
1498 PyErr_SetString(PyExc_ValueError
,
1499 "field op is required for UnaryOp");
1503 PyErr_SetString(PyExc_ValueError
,
1504 "field operand is required for UnaryOp");
1507 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1510 p
->kind
= UnaryOp_kind
;
1511 p
->v
.UnaryOp
.op
= op
;
1512 p
->v
.UnaryOp
.operand
= operand
;
1514 p
->col_offset
= col_offset
;
1519 Lambda(arguments_ty args
, expr_ty body
, int lineno
, int col_offset
, PyArena
1524 PyErr_SetString(PyExc_ValueError
,
1525 "field args is required for Lambda");
1529 PyErr_SetString(PyExc_ValueError
,
1530 "field body is required for Lambda");
1533 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1536 p
->kind
= Lambda_kind
;
1537 p
->v
.Lambda
.args
= args
;
1538 p
->v
.Lambda
.body
= body
;
1540 p
->col_offset
= col_offset
;
1545 IfExp(expr_ty test
, expr_ty body
, expr_ty orelse
, int lineno
, int col_offset
,
1550 PyErr_SetString(PyExc_ValueError
,
1551 "field test is required for IfExp");
1555 PyErr_SetString(PyExc_ValueError
,
1556 "field body is required for IfExp");
1560 PyErr_SetString(PyExc_ValueError
,
1561 "field orelse is required for IfExp");
1564 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1567 p
->kind
= IfExp_kind
;
1568 p
->v
.IfExp
.test
= test
;
1569 p
->v
.IfExp
.body
= body
;
1570 p
->v
.IfExp
.orelse
= orelse
;
1572 p
->col_offset
= col_offset
;
1577 Dict(asdl_seq
* keys
, asdl_seq
* values
, int lineno
, int col_offset
, PyArena
1581 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1584 p
->kind
= Dict_kind
;
1585 p
->v
.Dict
.keys
= keys
;
1586 p
->v
.Dict
.values
= values
;
1588 p
->col_offset
= col_offset
;
1593 ListComp(expr_ty elt
, asdl_seq
* generators
, int lineno
, int col_offset
,
1598 PyErr_SetString(PyExc_ValueError
,
1599 "field elt is required for ListComp");
1602 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1605 p
->kind
= ListComp_kind
;
1606 p
->v
.ListComp
.elt
= elt
;
1607 p
->v
.ListComp
.generators
= generators
;
1609 p
->col_offset
= col_offset
;
1614 GeneratorExp(expr_ty elt
, asdl_seq
* generators
, int lineno
, int col_offset
,
1619 PyErr_SetString(PyExc_ValueError
,
1620 "field elt is required for GeneratorExp");
1623 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1626 p
->kind
= GeneratorExp_kind
;
1627 p
->v
.GeneratorExp
.elt
= elt
;
1628 p
->v
.GeneratorExp
.generators
= generators
;
1630 p
->col_offset
= col_offset
;
1635 Yield(expr_ty value
, int lineno
, int col_offset
, PyArena
*arena
)
1638 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1641 p
->kind
= Yield_kind
;
1642 p
->v
.Yield
.value
= value
;
1644 p
->col_offset
= col_offset
;
1649 Compare(expr_ty left
, asdl_int_seq
* ops
, asdl_seq
* comparators
, int lineno
,
1650 int col_offset
, PyArena
*arena
)
1654 PyErr_SetString(PyExc_ValueError
,
1655 "field left is required for Compare");
1658 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1661 p
->kind
= Compare_kind
;
1662 p
->v
.Compare
.left
= left
;
1663 p
->v
.Compare
.ops
= ops
;
1664 p
->v
.Compare
.comparators
= comparators
;
1666 p
->col_offset
= col_offset
;
1671 Call(expr_ty func
, asdl_seq
* args
, asdl_seq
* keywords
, expr_ty starargs
,
1672 expr_ty kwargs
, int lineno
, int col_offset
, PyArena
*arena
)
1676 PyErr_SetString(PyExc_ValueError
,
1677 "field func is required for Call");
1680 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1683 p
->kind
= Call_kind
;
1684 p
->v
.Call
.func
= func
;
1685 p
->v
.Call
.args
= args
;
1686 p
->v
.Call
.keywords
= keywords
;
1687 p
->v
.Call
.starargs
= starargs
;
1688 p
->v
.Call
.kwargs
= kwargs
;
1690 p
->col_offset
= col_offset
;
1695 Repr(expr_ty value
, int lineno
, int col_offset
, PyArena
*arena
)
1699 PyErr_SetString(PyExc_ValueError
,
1700 "field value is required for Repr");
1703 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1706 p
->kind
= Repr_kind
;
1707 p
->v
.Repr
.value
= value
;
1709 p
->col_offset
= col_offset
;
1714 Num(object n
, int lineno
, int col_offset
, PyArena
*arena
)
1718 PyErr_SetString(PyExc_ValueError
,
1719 "field n is required for Num");
1722 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1728 p
->col_offset
= col_offset
;
1733 Str(string s
, int lineno
, int col_offset
, PyArena
*arena
)
1737 PyErr_SetString(PyExc_ValueError
,
1738 "field s is required for Str");
1741 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1747 p
->col_offset
= col_offset
;
1752 Attribute(expr_ty value
, identifier attr
, expr_context_ty ctx
, int lineno
, int
1753 col_offset
, PyArena
*arena
)
1757 PyErr_SetString(PyExc_ValueError
,
1758 "field value is required for Attribute");
1762 PyErr_SetString(PyExc_ValueError
,
1763 "field attr is required for Attribute");
1767 PyErr_SetString(PyExc_ValueError
,
1768 "field ctx is required for Attribute");
1771 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1774 p
->kind
= Attribute_kind
;
1775 p
->v
.Attribute
.value
= value
;
1776 p
->v
.Attribute
.attr
= attr
;
1777 p
->v
.Attribute
.ctx
= ctx
;
1779 p
->col_offset
= col_offset
;
1784 Subscript(expr_ty value
, slice_ty slice
, expr_context_ty ctx
, int lineno
, int
1785 col_offset
, PyArena
*arena
)
1789 PyErr_SetString(PyExc_ValueError
,
1790 "field value is required for Subscript");
1794 PyErr_SetString(PyExc_ValueError
,
1795 "field slice is required for Subscript");
1799 PyErr_SetString(PyExc_ValueError
,
1800 "field ctx is required for Subscript");
1803 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1806 p
->kind
= Subscript_kind
;
1807 p
->v
.Subscript
.value
= value
;
1808 p
->v
.Subscript
.slice
= slice
;
1809 p
->v
.Subscript
.ctx
= ctx
;
1811 p
->col_offset
= col_offset
;
1816 Name(identifier id
, expr_context_ty ctx
, int lineno
, int col_offset
, PyArena
1821 PyErr_SetString(PyExc_ValueError
,
1822 "field id is required for Name");
1826 PyErr_SetString(PyExc_ValueError
,
1827 "field ctx is required for Name");
1830 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1833 p
->kind
= Name_kind
;
1835 p
->v
.Name
.ctx
= ctx
;
1837 p
->col_offset
= col_offset
;
1842 List(asdl_seq
* elts
, expr_context_ty ctx
, int lineno
, int col_offset
, PyArena
1847 PyErr_SetString(PyExc_ValueError
,
1848 "field ctx is required for List");
1851 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1854 p
->kind
= List_kind
;
1855 p
->v
.List
.elts
= elts
;
1856 p
->v
.List
.ctx
= ctx
;
1858 p
->col_offset
= col_offset
;
1863 Tuple(asdl_seq
* elts
, expr_context_ty ctx
, int lineno
, int col_offset
, PyArena
1868 PyErr_SetString(PyExc_ValueError
,
1869 "field ctx is required for Tuple");
1872 p
= (expr_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1875 p
->kind
= Tuple_kind
;
1876 p
->v
.Tuple
.elts
= elts
;
1877 p
->v
.Tuple
.ctx
= ctx
;
1879 p
->col_offset
= col_offset
;
1884 Ellipsis(PyArena
*arena
)
1887 p
= (slice_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1890 p
->kind
= Ellipsis_kind
;
1895 Slice(expr_ty lower
, expr_ty upper
, expr_ty step
, PyArena
*arena
)
1898 p
= (slice_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1901 p
->kind
= Slice_kind
;
1902 p
->v
.Slice
.lower
= lower
;
1903 p
->v
.Slice
.upper
= upper
;
1904 p
->v
.Slice
.step
= step
;
1909 ExtSlice(asdl_seq
* dims
, PyArena
*arena
)
1912 p
= (slice_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1915 p
->kind
= ExtSlice_kind
;
1916 p
->v
.ExtSlice
.dims
= dims
;
1921 Index(expr_ty value
, PyArena
*arena
)
1925 PyErr_SetString(PyExc_ValueError
,
1926 "field value is required for Index");
1929 p
= (slice_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1932 p
->kind
= Index_kind
;
1933 p
->v
.Index
.value
= value
;
1938 comprehension(expr_ty target
, expr_ty iter
, asdl_seq
* ifs
, PyArena
*arena
)
1942 PyErr_SetString(PyExc_ValueError
,
1943 "field target is required for comprehension");
1947 PyErr_SetString(PyExc_ValueError
,
1948 "field iter is required for comprehension");
1951 p
= (comprehension_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1961 ExceptHandler(expr_ty type
, expr_ty name
, asdl_seq
* body
, int lineno
, int
1962 col_offset
, PyArena
*arena
)
1965 p
= (excepthandler_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1968 p
->kind
= ExceptHandler_kind
;
1969 p
->v
.ExceptHandler
.type
= type
;
1970 p
->v
.ExceptHandler
.name
= name
;
1971 p
->v
.ExceptHandler
.body
= body
;
1973 p
->col_offset
= col_offset
;
1978 arguments(asdl_seq
* args
, identifier vararg
, identifier kwarg
, asdl_seq
*
1979 defaults
, PyArena
*arena
)
1982 p
= (arguments_ty
)PyArena_Malloc(arena
, sizeof(*p
));
1988 p
->defaults
= defaults
;
1993 keyword(identifier arg
, expr_ty value
, PyArena
*arena
)
1997 PyErr_SetString(PyExc_ValueError
,
1998 "field arg is required for keyword");
2002 PyErr_SetString(PyExc_ValueError
,
2003 "field value is required for keyword");
2006 p
= (keyword_ty
)PyArena_Malloc(arena
, sizeof(*p
));
2015 alias(identifier name
, identifier asname
, PyArena
*arena
)
2019 PyErr_SetString(PyExc_ValueError
,
2020 "field name is required for alias");
2023 p
= (alias_ty
)PyArena_Malloc(arena
, sizeof(*p
));
2033 ast2obj_mod(void* _o
)
2035 mod_ty o
= (mod_ty
)_o
;
2036 PyObject
*result
= NULL
, *value
= NULL
;
2044 result
= PyType_GenericNew(Module_type
, NULL
, NULL
);
2045 if (!result
) goto failed
;
2046 value
= ast2obj_list(o
->v
.Module
.body
, ast2obj_stmt
);
2047 if (!value
) goto failed
;
2048 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2052 case Interactive_kind
:
2053 result
= PyType_GenericNew(Interactive_type
, NULL
, NULL
);
2054 if (!result
) goto failed
;
2055 value
= ast2obj_list(o
->v
.Interactive
.body
, ast2obj_stmt
);
2056 if (!value
) goto failed
;
2057 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2061 case Expression_kind
:
2062 result
= PyType_GenericNew(Expression_type
, NULL
, NULL
);
2063 if (!result
) goto failed
;
2064 value
= ast2obj_expr(o
->v
.Expression
.body
);
2065 if (!value
) goto failed
;
2066 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2071 result
= PyType_GenericNew(Suite_type
, NULL
, NULL
);
2072 if (!result
) goto failed
;
2073 value
= ast2obj_list(o
->v
.Suite
.body
, ast2obj_stmt
);
2074 if (!value
) goto failed
;
2075 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2088 ast2obj_stmt(void* _o
)
2090 stmt_ty o
= (stmt_ty
)_o
;
2091 PyObject
*result
= NULL
, *value
= NULL
;
2098 case FunctionDef_kind
:
2099 result
= PyType_GenericNew(FunctionDef_type
, NULL
, NULL
);
2100 if (!result
) goto failed
;
2101 value
= ast2obj_identifier(o
->v
.FunctionDef
.name
);
2102 if (!value
) goto failed
;
2103 if (PyObject_SetAttrString(result
, "name", value
) == -1)
2106 value
= ast2obj_arguments(o
->v
.FunctionDef
.args
);
2107 if (!value
) goto failed
;
2108 if (PyObject_SetAttrString(result
, "args", value
) == -1)
2111 value
= ast2obj_list(o
->v
.FunctionDef
.body
, ast2obj_stmt
);
2112 if (!value
) goto failed
;
2113 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2116 value
= ast2obj_list(o
->v
.FunctionDef
.decorator_list
,
2118 if (!value
) goto failed
;
2119 if (PyObject_SetAttrString(result
, "decorator_list", value
) ==
2125 result
= PyType_GenericNew(ClassDef_type
, NULL
, NULL
);
2126 if (!result
) goto failed
;
2127 value
= ast2obj_identifier(o
->v
.ClassDef
.name
);
2128 if (!value
) goto failed
;
2129 if (PyObject_SetAttrString(result
, "name", value
) == -1)
2132 value
= ast2obj_list(o
->v
.ClassDef
.bases
, ast2obj_expr
);
2133 if (!value
) goto failed
;
2134 if (PyObject_SetAttrString(result
, "bases", value
) == -1)
2137 value
= ast2obj_list(o
->v
.ClassDef
.body
, ast2obj_stmt
);
2138 if (!value
) goto failed
;
2139 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2142 value
= ast2obj_list(o
->v
.ClassDef
.decorator_list
,
2144 if (!value
) goto failed
;
2145 if (PyObject_SetAttrString(result
, "decorator_list", value
) ==
2151 result
= PyType_GenericNew(Return_type
, NULL
, NULL
);
2152 if (!result
) goto failed
;
2153 value
= ast2obj_expr(o
->v
.Return
.value
);
2154 if (!value
) goto failed
;
2155 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2160 result
= PyType_GenericNew(Delete_type
, NULL
, NULL
);
2161 if (!result
) goto failed
;
2162 value
= ast2obj_list(o
->v
.Delete
.targets
, ast2obj_expr
);
2163 if (!value
) goto failed
;
2164 if (PyObject_SetAttrString(result
, "targets", value
) == -1)
2169 result
= PyType_GenericNew(Assign_type
, NULL
, NULL
);
2170 if (!result
) goto failed
;
2171 value
= ast2obj_list(o
->v
.Assign
.targets
, ast2obj_expr
);
2172 if (!value
) goto failed
;
2173 if (PyObject_SetAttrString(result
, "targets", value
) == -1)
2176 value
= ast2obj_expr(o
->v
.Assign
.value
);
2177 if (!value
) goto failed
;
2178 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2182 case AugAssign_kind
:
2183 result
= PyType_GenericNew(AugAssign_type
, NULL
, NULL
);
2184 if (!result
) goto failed
;
2185 value
= ast2obj_expr(o
->v
.AugAssign
.target
);
2186 if (!value
) goto failed
;
2187 if (PyObject_SetAttrString(result
, "target", value
) == -1)
2190 value
= ast2obj_operator(o
->v
.AugAssign
.op
);
2191 if (!value
) goto failed
;
2192 if (PyObject_SetAttrString(result
, "op", value
) == -1)
2195 value
= ast2obj_expr(o
->v
.AugAssign
.value
);
2196 if (!value
) goto failed
;
2197 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2202 result
= PyType_GenericNew(Print_type
, NULL
, NULL
);
2203 if (!result
) goto failed
;
2204 value
= ast2obj_expr(o
->v
.Print
.dest
);
2205 if (!value
) goto failed
;
2206 if (PyObject_SetAttrString(result
, "dest", value
) == -1)
2209 value
= ast2obj_list(o
->v
.Print
.values
, ast2obj_expr
);
2210 if (!value
) goto failed
;
2211 if (PyObject_SetAttrString(result
, "values", value
) == -1)
2214 value
= ast2obj_bool(o
->v
.Print
.nl
);
2215 if (!value
) goto failed
;
2216 if (PyObject_SetAttrString(result
, "nl", value
) == -1)
2221 result
= PyType_GenericNew(For_type
, NULL
, NULL
);
2222 if (!result
) goto failed
;
2223 value
= ast2obj_expr(o
->v
.For
.target
);
2224 if (!value
) goto failed
;
2225 if (PyObject_SetAttrString(result
, "target", value
) == -1)
2228 value
= ast2obj_expr(o
->v
.For
.iter
);
2229 if (!value
) goto failed
;
2230 if (PyObject_SetAttrString(result
, "iter", value
) == -1)
2233 value
= ast2obj_list(o
->v
.For
.body
, ast2obj_stmt
);
2234 if (!value
) goto failed
;
2235 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2238 value
= ast2obj_list(o
->v
.For
.orelse
, ast2obj_stmt
);
2239 if (!value
) goto failed
;
2240 if (PyObject_SetAttrString(result
, "orelse", value
) == -1)
2245 result
= PyType_GenericNew(While_type
, NULL
, NULL
);
2246 if (!result
) goto failed
;
2247 value
= ast2obj_expr(o
->v
.While
.test
);
2248 if (!value
) goto failed
;
2249 if (PyObject_SetAttrString(result
, "test", value
) == -1)
2252 value
= ast2obj_list(o
->v
.While
.body
, ast2obj_stmt
);
2253 if (!value
) goto failed
;
2254 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2257 value
= ast2obj_list(o
->v
.While
.orelse
, ast2obj_stmt
);
2258 if (!value
) goto failed
;
2259 if (PyObject_SetAttrString(result
, "orelse", value
) == -1)
2264 result
= PyType_GenericNew(If_type
, NULL
, NULL
);
2265 if (!result
) goto failed
;
2266 value
= ast2obj_expr(o
->v
.If
.test
);
2267 if (!value
) goto failed
;
2268 if (PyObject_SetAttrString(result
, "test", value
) == -1)
2271 value
= ast2obj_list(o
->v
.If
.body
, ast2obj_stmt
);
2272 if (!value
) goto failed
;
2273 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2276 value
= ast2obj_list(o
->v
.If
.orelse
, ast2obj_stmt
);
2277 if (!value
) goto failed
;
2278 if (PyObject_SetAttrString(result
, "orelse", value
) == -1)
2283 result
= PyType_GenericNew(With_type
, NULL
, NULL
);
2284 if (!result
) goto failed
;
2285 value
= ast2obj_expr(o
->v
.With
.context_expr
);
2286 if (!value
) goto failed
;
2287 if (PyObject_SetAttrString(result
, "context_expr", value
) == -1)
2290 value
= ast2obj_expr(o
->v
.With
.optional_vars
);
2291 if (!value
) goto failed
;
2292 if (PyObject_SetAttrString(result
, "optional_vars", value
) ==
2296 value
= ast2obj_list(o
->v
.With
.body
, ast2obj_stmt
);
2297 if (!value
) goto failed
;
2298 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2303 result
= PyType_GenericNew(Raise_type
, NULL
, NULL
);
2304 if (!result
) goto failed
;
2305 value
= ast2obj_expr(o
->v
.Raise
.type
);
2306 if (!value
) goto failed
;
2307 if (PyObject_SetAttrString(result
, "type", value
) == -1)
2310 value
= ast2obj_expr(o
->v
.Raise
.inst
);
2311 if (!value
) goto failed
;
2312 if (PyObject_SetAttrString(result
, "inst", value
) == -1)
2315 value
= ast2obj_expr(o
->v
.Raise
.tback
);
2316 if (!value
) goto failed
;
2317 if (PyObject_SetAttrString(result
, "tback", value
) == -1)
2321 case TryExcept_kind
:
2322 result
= PyType_GenericNew(TryExcept_type
, NULL
, NULL
);
2323 if (!result
) goto failed
;
2324 value
= ast2obj_list(o
->v
.TryExcept
.body
, ast2obj_stmt
);
2325 if (!value
) goto failed
;
2326 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2329 value
= ast2obj_list(o
->v
.TryExcept
.handlers
,
2330 ast2obj_excepthandler
);
2331 if (!value
) goto failed
;
2332 if (PyObject_SetAttrString(result
, "handlers", value
) == -1)
2335 value
= ast2obj_list(o
->v
.TryExcept
.orelse
, ast2obj_stmt
);
2336 if (!value
) goto failed
;
2337 if (PyObject_SetAttrString(result
, "orelse", value
) == -1)
2341 case TryFinally_kind
:
2342 result
= PyType_GenericNew(TryFinally_type
, NULL
, NULL
);
2343 if (!result
) goto failed
;
2344 value
= ast2obj_list(o
->v
.TryFinally
.body
, ast2obj_stmt
);
2345 if (!value
) goto failed
;
2346 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2349 value
= ast2obj_list(o
->v
.TryFinally
.finalbody
, ast2obj_stmt
);
2350 if (!value
) goto failed
;
2351 if (PyObject_SetAttrString(result
, "finalbody", value
) == -1)
2356 result
= PyType_GenericNew(Assert_type
, NULL
, NULL
);
2357 if (!result
) goto failed
;
2358 value
= ast2obj_expr(o
->v
.Assert
.test
);
2359 if (!value
) goto failed
;
2360 if (PyObject_SetAttrString(result
, "test", value
) == -1)
2363 value
= ast2obj_expr(o
->v
.Assert
.msg
);
2364 if (!value
) goto failed
;
2365 if (PyObject_SetAttrString(result
, "msg", value
) == -1)
2370 result
= PyType_GenericNew(Import_type
, NULL
, NULL
);
2371 if (!result
) goto failed
;
2372 value
= ast2obj_list(o
->v
.Import
.names
, ast2obj_alias
);
2373 if (!value
) goto failed
;
2374 if (PyObject_SetAttrString(result
, "names", value
) == -1)
2378 case ImportFrom_kind
:
2379 result
= PyType_GenericNew(ImportFrom_type
, NULL
, NULL
);
2380 if (!result
) goto failed
;
2381 value
= ast2obj_identifier(o
->v
.ImportFrom
.module
);
2382 if (!value
) goto failed
;
2383 if (PyObject_SetAttrString(result
, "module", value
) == -1)
2386 value
= ast2obj_list(o
->v
.ImportFrom
.names
, ast2obj_alias
);
2387 if (!value
) goto failed
;
2388 if (PyObject_SetAttrString(result
, "names", value
) == -1)
2391 value
= ast2obj_int(o
->v
.ImportFrom
.level
);
2392 if (!value
) goto failed
;
2393 if (PyObject_SetAttrString(result
, "level", value
) == -1)
2398 result
= PyType_GenericNew(Exec_type
, NULL
, NULL
);
2399 if (!result
) goto failed
;
2400 value
= ast2obj_expr(o
->v
.Exec
.body
);
2401 if (!value
) goto failed
;
2402 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2405 value
= ast2obj_expr(o
->v
.Exec
.globals
);
2406 if (!value
) goto failed
;
2407 if (PyObject_SetAttrString(result
, "globals", value
) == -1)
2410 value
= ast2obj_expr(o
->v
.Exec
.locals
);
2411 if (!value
) goto failed
;
2412 if (PyObject_SetAttrString(result
, "locals", value
) == -1)
2417 result
= PyType_GenericNew(Global_type
, NULL
, NULL
);
2418 if (!result
) goto failed
;
2419 value
= ast2obj_list(o
->v
.Global
.names
, ast2obj_identifier
);
2420 if (!value
) goto failed
;
2421 if (PyObject_SetAttrString(result
, "names", value
) == -1)
2426 result
= PyType_GenericNew(Expr_type
, NULL
, NULL
);
2427 if (!result
) goto failed
;
2428 value
= ast2obj_expr(o
->v
.Expr
.value
);
2429 if (!value
) goto failed
;
2430 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2435 result
= PyType_GenericNew(Pass_type
, NULL
, NULL
);
2436 if (!result
) goto failed
;
2439 result
= PyType_GenericNew(Break_type
, NULL
, NULL
);
2440 if (!result
) goto failed
;
2443 result
= PyType_GenericNew(Continue_type
, NULL
, NULL
);
2444 if (!result
) goto failed
;
2447 value
= ast2obj_int(o
->lineno
);
2448 if (!value
) goto failed
;
2449 if (PyObject_SetAttrString(result
, "lineno", value
) < 0)
2452 value
= ast2obj_int(o
->col_offset
);
2453 if (!value
) goto failed
;
2454 if (PyObject_SetAttrString(result
, "col_offset", value
) < 0)
2465 ast2obj_expr(void* _o
)
2467 expr_ty o
= (expr_ty
)_o
;
2468 PyObject
*result
= NULL
, *value
= NULL
;
2476 result
= PyType_GenericNew(BoolOp_type
, NULL
, NULL
);
2477 if (!result
) goto failed
;
2478 value
= ast2obj_boolop(o
->v
.BoolOp
.op
);
2479 if (!value
) goto failed
;
2480 if (PyObject_SetAttrString(result
, "op", value
) == -1)
2483 value
= ast2obj_list(o
->v
.BoolOp
.values
, ast2obj_expr
);
2484 if (!value
) goto failed
;
2485 if (PyObject_SetAttrString(result
, "values", value
) == -1)
2490 result
= PyType_GenericNew(BinOp_type
, NULL
, NULL
);
2491 if (!result
) goto failed
;
2492 value
= ast2obj_expr(o
->v
.BinOp
.left
);
2493 if (!value
) goto failed
;
2494 if (PyObject_SetAttrString(result
, "left", value
) == -1)
2497 value
= ast2obj_operator(o
->v
.BinOp
.op
);
2498 if (!value
) goto failed
;
2499 if (PyObject_SetAttrString(result
, "op", value
) == -1)
2502 value
= ast2obj_expr(o
->v
.BinOp
.right
);
2503 if (!value
) goto failed
;
2504 if (PyObject_SetAttrString(result
, "right", value
) == -1)
2509 result
= PyType_GenericNew(UnaryOp_type
, NULL
, NULL
);
2510 if (!result
) goto failed
;
2511 value
= ast2obj_unaryop(o
->v
.UnaryOp
.op
);
2512 if (!value
) goto failed
;
2513 if (PyObject_SetAttrString(result
, "op", value
) == -1)
2516 value
= ast2obj_expr(o
->v
.UnaryOp
.operand
);
2517 if (!value
) goto failed
;
2518 if (PyObject_SetAttrString(result
, "operand", value
) == -1)
2523 result
= PyType_GenericNew(Lambda_type
, NULL
, NULL
);
2524 if (!result
) goto failed
;
2525 value
= ast2obj_arguments(o
->v
.Lambda
.args
);
2526 if (!value
) goto failed
;
2527 if (PyObject_SetAttrString(result
, "args", value
) == -1)
2530 value
= ast2obj_expr(o
->v
.Lambda
.body
);
2531 if (!value
) goto failed
;
2532 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2537 result
= PyType_GenericNew(IfExp_type
, NULL
, NULL
);
2538 if (!result
) goto failed
;
2539 value
= ast2obj_expr(o
->v
.IfExp
.test
);
2540 if (!value
) goto failed
;
2541 if (PyObject_SetAttrString(result
, "test", value
) == -1)
2544 value
= ast2obj_expr(o
->v
.IfExp
.body
);
2545 if (!value
) goto failed
;
2546 if (PyObject_SetAttrString(result
, "body", value
) == -1)
2549 value
= ast2obj_expr(o
->v
.IfExp
.orelse
);
2550 if (!value
) goto failed
;
2551 if (PyObject_SetAttrString(result
, "orelse", value
) == -1)
2556 result
= PyType_GenericNew(Dict_type
, NULL
, NULL
);
2557 if (!result
) goto failed
;
2558 value
= ast2obj_list(o
->v
.Dict
.keys
, ast2obj_expr
);
2559 if (!value
) goto failed
;
2560 if (PyObject_SetAttrString(result
, "keys", value
) == -1)
2563 value
= ast2obj_list(o
->v
.Dict
.values
, ast2obj_expr
);
2564 if (!value
) goto failed
;
2565 if (PyObject_SetAttrString(result
, "values", value
) == -1)
2570 result
= PyType_GenericNew(ListComp_type
, NULL
, NULL
);
2571 if (!result
) goto failed
;
2572 value
= ast2obj_expr(o
->v
.ListComp
.elt
);
2573 if (!value
) goto failed
;
2574 if (PyObject_SetAttrString(result
, "elt", value
) == -1)
2577 value
= ast2obj_list(o
->v
.ListComp
.generators
,
2578 ast2obj_comprehension
);
2579 if (!value
) goto failed
;
2580 if (PyObject_SetAttrString(result
, "generators", value
) == -1)
2584 case GeneratorExp_kind
:
2585 result
= PyType_GenericNew(GeneratorExp_type
, NULL
, NULL
);
2586 if (!result
) goto failed
;
2587 value
= ast2obj_expr(o
->v
.GeneratorExp
.elt
);
2588 if (!value
) goto failed
;
2589 if (PyObject_SetAttrString(result
, "elt", value
) == -1)
2592 value
= ast2obj_list(o
->v
.GeneratorExp
.generators
,
2593 ast2obj_comprehension
);
2594 if (!value
) goto failed
;
2595 if (PyObject_SetAttrString(result
, "generators", value
) == -1)
2600 result
= PyType_GenericNew(Yield_type
, NULL
, NULL
);
2601 if (!result
) goto failed
;
2602 value
= ast2obj_expr(o
->v
.Yield
.value
);
2603 if (!value
) goto failed
;
2604 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2609 result
= PyType_GenericNew(Compare_type
, NULL
, NULL
);
2610 if (!result
) goto failed
;
2611 value
= ast2obj_expr(o
->v
.Compare
.left
);
2612 if (!value
) goto failed
;
2613 if (PyObject_SetAttrString(result
, "left", value
) == -1)
2617 int i
, n
= asdl_seq_LEN(o
->v
.Compare
.ops
);
2618 value
= PyList_New(n
);
2619 if (!value
) goto failed
;
2620 for(i
= 0; i
< n
; i
++)
2621 PyList_SET_ITEM(value
, i
, ast2obj_cmpop((cmpop_ty
)asdl_seq_GET(o
->v
.Compare
.ops
, i
)));
2623 if (!value
) goto failed
;
2624 if (PyObject_SetAttrString(result
, "ops", value
) == -1)
2627 value
= ast2obj_list(o
->v
.Compare
.comparators
, ast2obj_expr
);
2628 if (!value
) goto failed
;
2629 if (PyObject_SetAttrString(result
, "comparators", value
) == -1)
2634 result
= PyType_GenericNew(Call_type
, NULL
, NULL
);
2635 if (!result
) goto failed
;
2636 value
= ast2obj_expr(o
->v
.Call
.func
);
2637 if (!value
) goto failed
;
2638 if (PyObject_SetAttrString(result
, "func", value
) == -1)
2641 value
= ast2obj_list(o
->v
.Call
.args
, ast2obj_expr
);
2642 if (!value
) goto failed
;
2643 if (PyObject_SetAttrString(result
, "args", value
) == -1)
2646 value
= ast2obj_list(o
->v
.Call
.keywords
, ast2obj_keyword
);
2647 if (!value
) goto failed
;
2648 if (PyObject_SetAttrString(result
, "keywords", value
) == -1)
2651 value
= ast2obj_expr(o
->v
.Call
.starargs
);
2652 if (!value
) goto failed
;
2653 if (PyObject_SetAttrString(result
, "starargs", value
) == -1)
2656 value
= ast2obj_expr(o
->v
.Call
.kwargs
);
2657 if (!value
) goto failed
;
2658 if (PyObject_SetAttrString(result
, "kwargs", value
) == -1)
2663 result
= PyType_GenericNew(Repr_type
, NULL
, NULL
);
2664 if (!result
) goto failed
;
2665 value
= ast2obj_expr(o
->v
.Repr
.value
);
2666 if (!value
) goto failed
;
2667 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2672 result
= PyType_GenericNew(Num_type
, NULL
, NULL
);
2673 if (!result
) goto failed
;
2674 value
= ast2obj_object(o
->v
.Num
.n
);
2675 if (!value
) goto failed
;
2676 if (PyObject_SetAttrString(result
, "n", value
) == -1)
2681 result
= PyType_GenericNew(Str_type
, NULL
, NULL
);
2682 if (!result
) goto failed
;
2683 value
= ast2obj_string(o
->v
.Str
.s
);
2684 if (!value
) goto failed
;
2685 if (PyObject_SetAttrString(result
, "s", value
) == -1)
2689 case Attribute_kind
:
2690 result
= PyType_GenericNew(Attribute_type
, NULL
, NULL
);
2691 if (!result
) goto failed
;
2692 value
= ast2obj_expr(o
->v
.Attribute
.value
);
2693 if (!value
) goto failed
;
2694 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2697 value
= ast2obj_identifier(o
->v
.Attribute
.attr
);
2698 if (!value
) goto failed
;
2699 if (PyObject_SetAttrString(result
, "attr", value
) == -1)
2702 value
= ast2obj_expr_context(o
->v
.Attribute
.ctx
);
2703 if (!value
) goto failed
;
2704 if (PyObject_SetAttrString(result
, "ctx", value
) == -1)
2708 case Subscript_kind
:
2709 result
= PyType_GenericNew(Subscript_type
, NULL
, NULL
);
2710 if (!result
) goto failed
;
2711 value
= ast2obj_expr(o
->v
.Subscript
.value
);
2712 if (!value
) goto failed
;
2713 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2716 value
= ast2obj_slice(o
->v
.Subscript
.slice
);
2717 if (!value
) goto failed
;
2718 if (PyObject_SetAttrString(result
, "slice", value
) == -1)
2721 value
= ast2obj_expr_context(o
->v
.Subscript
.ctx
);
2722 if (!value
) goto failed
;
2723 if (PyObject_SetAttrString(result
, "ctx", value
) == -1)
2728 result
= PyType_GenericNew(Name_type
, NULL
, NULL
);
2729 if (!result
) goto failed
;
2730 value
= ast2obj_identifier(o
->v
.Name
.id
);
2731 if (!value
) goto failed
;
2732 if (PyObject_SetAttrString(result
, "id", value
) == -1)
2735 value
= ast2obj_expr_context(o
->v
.Name
.ctx
);
2736 if (!value
) goto failed
;
2737 if (PyObject_SetAttrString(result
, "ctx", value
) == -1)
2742 result
= PyType_GenericNew(List_type
, NULL
, NULL
);
2743 if (!result
) goto failed
;
2744 value
= ast2obj_list(o
->v
.List
.elts
, ast2obj_expr
);
2745 if (!value
) goto failed
;
2746 if (PyObject_SetAttrString(result
, "elts", value
) == -1)
2749 value
= ast2obj_expr_context(o
->v
.List
.ctx
);
2750 if (!value
) goto failed
;
2751 if (PyObject_SetAttrString(result
, "ctx", value
) == -1)
2756 result
= PyType_GenericNew(Tuple_type
, NULL
, NULL
);
2757 if (!result
) goto failed
;
2758 value
= ast2obj_list(o
->v
.Tuple
.elts
, ast2obj_expr
);
2759 if (!value
) goto failed
;
2760 if (PyObject_SetAttrString(result
, "elts", value
) == -1)
2763 value
= ast2obj_expr_context(o
->v
.Tuple
.ctx
);
2764 if (!value
) goto failed
;
2765 if (PyObject_SetAttrString(result
, "ctx", value
) == -1)
2770 value
= ast2obj_int(o
->lineno
);
2771 if (!value
) goto failed
;
2772 if (PyObject_SetAttrString(result
, "lineno", value
) < 0)
2775 value
= ast2obj_int(o
->col_offset
);
2776 if (!value
) goto failed
;
2777 if (PyObject_SetAttrString(result
, "col_offset", value
) < 0)
2787 PyObject
* ast2obj_expr_context(expr_context_ty o
)
2791 Py_INCREF(Load_singleton
);
2792 return Load_singleton
;
2794 Py_INCREF(Store_singleton
);
2795 return Store_singleton
;
2797 Py_INCREF(Del_singleton
);
2798 return Del_singleton
;
2800 Py_INCREF(AugLoad_singleton
);
2801 return AugLoad_singleton
;
2803 Py_INCREF(AugStore_singleton
);
2804 return AugStore_singleton
;
2806 Py_INCREF(Param_singleton
);
2807 return Param_singleton
;
2809 /* should never happen, but just in case ... */
2810 PyErr_Format(PyExc_SystemError
, "unknown expr_context found");
2815 ast2obj_slice(void* _o
)
2817 slice_ty o
= (slice_ty
)_o
;
2818 PyObject
*result
= NULL
, *value
= NULL
;
2826 result
= PyType_GenericNew(Ellipsis_type
, NULL
, NULL
);
2827 if (!result
) goto failed
;
2830 result
= PyType_GenericNew(Slice_type
, NULL
, NULL
);
2831 if (!result
) goto failed
;
2832 value
= ast2obj_expr(o
->v
.Slice
.lower
);
2833 if (!value
) goto failed
;
2834 if (PyObject_SetAttrString(result
, "lower", value
) == -1)
2837 value
= ast2obj_expr(o
->v
.Slice
.upper
);
2838 if (!value
) goto failed
;
2839 if (PyObject_SetAttrString(result
, "upper", value
) == -1)
2842 value
= ast2obj_expr(o
->v
.Slice
.step
);
2843 if (!value
) goto failed
;
2844 if (PyObject_SetAttrString(result
, "step", value
) == -1)
2849 result
= PyType_GenericNew(ExtSlice_type
, NULL
, NULL
);
2850 if (!result
) goto failed
;
2851 value
= ast2obj_list(o
->v
.ExtSlice
.dims
, ast2obj_slice
);
2852 if (!value
) goto failed
;
2853 if (PyObject_SetAttrString(result
, "dims", value
) == -1)
2858 result
= PyType_GenericNew(Index_type
, NULL
, NULL
);
2859 if (!result
) goto failed
;
2860 value
= ast2obj_expr(o
->v
.Index
.value
);
2861 if (!value
) goto failed
;
2862 if (PyObject_SetAttrString(result
, "value", value
) == -1)
2874 PyObject
* ast2obj_boolop(boolop_ty o
)
2878 Py_INCREF(And_singleton
);
2879 return And_singleton
;
2881 Py_INCREF(Or_singleton
);
2882 return Or_singleton
;
2884 /* should never happen, but just in case ... */
2885 PyErr_Format(PyExc_SystemError
, "unknown boolop found");
2889 PyObject
* ast2obj_operator(operator_ty o
)
2893 Py_INCREF(Add_singleton
);
2894 return Add_singleton
;
2896 Py_INCREF(Sub_singleton
);
2897 return Sub_singleton
;
2899 Py_INCREF(Mult_singleton
);
2900 return Mult_singleton
;
2902 Py_INCREF(Div_singleton
);
2903 return Div_singleton
;
2905 Py_INCREF(Mod_singleton
);
2906 return Mod_singleton
;
2908 Py_INCREF(Pow_singleton
);
2909 return Pow_singleton
;
2911 Py_INCREF(LShift_singleton
);
2912 return LShift_singleton
;
2914 Py_INCREF(RShift_singleton
);
2915 return RShift_singleton
;
2917 Py_INCREF(BitOr_singleton
);
2918 return BitOr_singleton
;
2920 Py_INCREF(BitXor_singleton
);
2921 return BitXor_singleton
;
2923 Py_INCREF(BitAnd_singleton
);
2924 return BitAnd_singleton
;
2926 Py_INCREF(FloorDiv_singleton
);
2927 return FloorDiv_singleton
;
2929 /* should never happen, but just in case ... */
2930 PyErr_Format(PyExc_SystemError
, "unknown operator found");
2934 PyObject
* ast2obj_unaryop(unaryop_ty o
)
2938 Py_INCREF(Invert_singleton
);
2939 return Invert_singleton
;
2941 Py_INCREF(Not_singleton
);
2942 return Not_singleton
;
2944 Py_INCREF(UAdd_singleton
);
2945 return UAdd_singleton
;
2947 Py_INCREF(USub_singleton
);
2948 return USub_singleton
;
2950 /* should never happen, but just in case ... */
2951 PyErr_Format(PyExc_SystemError
, "unknown unaryop found");
2955 PyObject
* ast2obj_cmpop(cmpop_ty o
)
2959 Py_INCREF(Eq_singleton
);
2960 return Eq_singleton
;
2962 Py_INCREF(NotEq_singleton
);
2963 return NotEq_singleton
;
2965 Py_INCREF(Lt_singleton
);
2966 return Lt_singleton
;
2968 Py_INCREF(LtE_singleton
);
2969 return LtE_singleton
;
2971 Py_INCREF(Gt_singleton
);
2972 return Gt_singleton
;
2974 Py_INCREF(GtE_singleton
);
2975 return GtE_singleton
;
2977 Py_INCREF(Is_singleton
);
2978 return Is_singleton
;
2980 Py_INCREF(IsNot_singleton
);
2981 return IsNot_singleton
;
2983 Py_INCREF(In_singleton
);
2984 return In_singleton
;
2986 Py_INCREF(NotIn_singleton
);
2987 return NotIn_singleton
;
2989 /* should never happen, but just in case ... */
2990 PyErr_Format(PyExc_SystemError
, "unknown cmpop found");
2995 ast2obj_comprehension(void* _o
)
2997 comprehension_ty o
= (comprehension_ty
)_o
;
2998 PyObject
*result
= NULL
, *value
= NULL
;
3004 result
= PyType_GenericNew(comprehension_type
, NULL
, NULL
);
3005 if (!result
) return NULL
;
3006 value
= ast2obj_expr(o
->target
);
3007 if (!value
) goto failed
;
3008 if (PyObject_SetAttrString(result
, "target", value
) == -1)
3011 value
= ast2obj_expr(o
->iter
);
3012 if (!value
) goto failed
;
3013 if (PyObject_SetAttrString(result
, "iter", value
) == -1)
3016 value
= ast2obj_list(o
->ifs
, ast2obj_expr
);
3017 if (!value
) goto failed
;
3018 if (PyObject_SetAttrString(result
, "ifs", value
) == -1)
3029 ast2obj_excepthandler(void* _o
)
3031 excepthandler_ty o
= (excepthandler_ty
)_o
;
3032 PyObject
*result
= NULL
, *value
= NULL
;
3039 case ExceptHandler_kind
:
3040 result
= PyType_GenericNew(ExceptHandler_type
, NULL
, NULL
);
3041 if (!result
) goto failed
;
3042 value
= ast2obj_expr(o
->v
.ExceptHandler
.type
);
3043 if (!value
) goto failed
;
3044 if (PyObject_SetAttrString(result
, "type", value
) == -1)
3047 value
= ast2obj_expr(o
->v
.ExceptHandler
.name
);
3048 if (!value
) goto failed
;
3049 if (PyObject_SetAttrString(result
, "name", value
) == -1)
3052 value
= ast2obj_list(o
->v
.ExceptHandler
.body
, ast2obj_stmt
);
3053 if (!value
) goto failed
;
3054 if (PyObject_SetAttrString(result
, "body", value
) == -1)
3059 value
= ast2obj_int(o
->lineno
);
3060 if (!value
) goto failed
;
3061 if (PyObject_SetAttrString(result
, "lineno", value
) < 0)
3064 value
= ast2obj_int(o
->col_offset
);
3065 if (!value
) goto failed
;
3066 if (PyObject_SetAttrString(result
, "col_offset", value
) < 0)
3077 ast2obj_arguments(void* _o
)
3079 arguments_ty o
= (arguments_ty
)_o
;
3080 PyObject
*result
= NULL
, *value
= NULL
;
3086 result
= PyType_GenericNew(arguments_type
, NULL
, NULL
);
3087 if (!result
) return NULL
;
3088 value
= ast2obj_list(o
->args
, ast2obj_expr
);
3089 if (!value
) goto failed
;
3090 if (PyObject_SetAttrString(result
, "args", value
) == -1)
3093 value
= ast2obj_identifier(o
->vararg
);
3094 if (!value
) goto failed
;
3095 if (PyObject_SetAttrString(result
, "vararg", value
) == -1)
3098 value
= ast2obj_identifier(o
->kwarg
);
3099 if (!value
) goto failed
;
3100 if (PyObject_SetAttrString(result
, "kwarg", value
) == -1)
3103 value
= ast2obj_list(o
->defaults
, ast2obj_expr
);
3104 if (!value
) goto failed
;
3105 if (PyObject_SetAttrString(result
, "defaults", value
) == -1)
3116 ast2obj_keyword(void* _o
)
3118 keyword_ty o
= (keyword_ty
)_o
;
3119 PyObject
*result
= NULL
, *value
= NULL
;
3125 result
= PyType_GenericNew(keyword_type
, NULL
, NULL
);
3126 if (!result
) return NULL
;
3127 value
= ast2obj_identifier(o
->arg
);
3128 if (!value
) goto failed
;
3129 if (PyObject_SetAttrString(result
, "arg", value
) == -1)
3132 value
= ast2obj_expr(o
->value
);
3133 if (!value
) goto failed
;
3134 if (PyObject_SetAttrString(result
, "value", value
) == -1)
3145 ast2obj_alias(void* _o
)
3147 alias_ty o
= (alias_ty
)_o
;
3148 PyObject
*result
= NULL
, *value
= NULL
;
3154 result
= PyType_GenericNew(alias_type
, NULL
, NULL
);
3155 if (!result
) return NULL
;
3156 value
= ast2obj_identifier(o
->name
);
3157 if (!value
) goto failed
;
3158 if (PyObject_SetAttrString(result
, "name", value
) == -1)
3161 value
= ast2obj_identifier(o
->asname
);
3162 if (!value
) goto failed
;
3163 if (PyObject_SetAttrString(result
, "asname", value
) == -1)
3175 obj2ast_mod(PyObject
* obj
, mod_ty
* out
, PyArena
* arena
)
3177 PyObject
* tmp
= NULL
;
3181 if (obj
== Py_None
) {
3185 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Module_type
);
3186 if (isinstance
== -1) {
3192 if (PyObject_HasAttrString(obj
, "body")) {
3196 tmp
= PyObject_GetAttrString(obj
, "body");
3197 if (tmp
== NULL
) goto failed
;
3198 if (!PyList_Check(tmp
)) {
3199 PyErr_Format(PyExc_TypeError
, "Module field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3202 len
= PyList_GET_SIZE(tmp
);
3203 body
= asdl_seq_new(len
, arena
);
3204 if (body
== NULL
) goto failed
;
3205 for (i
= 0; i
< len
; i
++) {
3207 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3208 if (res
!= 0) goto failed
;
3209 asdl_seq_SET(body
, i
, value
);
3214 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Module");
3217 *out
= Module(body
, arena
);
3218 if (*out
== NULL
) goto failed
;
3221 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Interactive_type
);
3222 if (isinstance
== -1) {
3228 if (PyObject_HasAttrString(obj
, "body")) {
3232 tmp
= PyObject_GetAttrString(obj
, "body");
3233 if (tmp
== NULL
) goto failed
;
3234 if (!PyList_Check(tmp
)) {
3235 PyErr_Format(PyExc_TypeError
, "Interactive field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3238 len
= PyList_GET_SIZE(tmp
);
3239 body
= asdl_seq_new(len
, arena
);
3240 if (body
== NULL
) goto failed
;
3241 for (i
= 0; i
< len
; i
++) {
3243 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3244 if (res
!= 0) goto failed
;
3245 asdl_seq_SET(body
, i
, value
);
3250 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Interactive");
3253 *out
= Interactive(body
, arena
);
3254 if (*out
== NULL
) goto failed
;
3257 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Expression_type
);
3258 if (isinstance
== -1) {
3264 if (PyObject_HasAttrString(obj
, "body")) {
3266 tmp
= PyObject_GetAttrString(obj
, "body");
3267 if (tmp
== NULL
) goto failed
;
3268 res
= obj2ast_expr(tmp
, &body
, arena
);
3269 if (res
!= 0) goto failed
;
3273 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Expression");
3276 *out
= Expression(body
, arena
);
3277 if (*out
== NULL
) goto failed
;
3280 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Suite_type
);
3281 if (isinstance
== -1) {
3287 if (PyObject_HasAttrString(obj
, "body")) {
3291 tmp
= PyObject_GetAttrString(obj
, "body");
3292 if (tmp
== NULL
) goto failed
;
3293 if (!PyList_Check(tmp
)) {
3294 PyErr_Format(PyExc_TypeError
, "Suite field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3297 len
= PyList_GET_SIZE(tmp
);
3298 body
= asdl_seq_new(len
, arena
);
3299 if (body
== NULL
) goto failed
;
3300 for (i
= 0; i
< len
; i
++) {
3302 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3303 if (res
!= 0) goto failed
;
3304 asdl_seq_SET(body
, i
, value
);
3309 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Suite");
3312 *out
= Suite(body
, arena
);
3313 if (*out
== NULL
) goto failed
;
3317 tmp
= PyObject_Repr(obj
);
3318 if (tmp
== NULL
) goto failed
;
3319 PyErr_Format(PyExc_TypeError
, "expected some sort of mod, but got %.400s", PyString_AS_STRING(tmp
));
3326 obj2ast_stmt(PyObject
* obj
, stmt_ty
* out
, PyArena
* arena
)
3328 PyObject
* tmp
= NULL
;
3334 if (obj
== Py_None
) {
3338 if (PyObject_HasAttrString(obj
, "lineno")) {
3340 tmp
= PyObject_GetAttrString(obj
, "lineno");
3341 if (tmp
== NULL
) goto failed
;
3342 res
= obj2ast_int(tmp
, &lineno
, arena
);
3343 if (res
!= 0) goto failed
;
3347 PyErr_SetString(PyExc_TypeError
, "required field \"lineno\" missing from stmt");
3350 if (PyObject_HasAttrString(obj
, "col_offset")) {
3352 tmp
= PyObject_GetAttrString(obj
, "col_offset");
3353 if (tmp
== NULL
) goto failed
;
3354 res
= obj2ast_int(tmp
, &col_offset
, arena
);
3355 if (res
!= 0) goto failed
;
3359 PyErr_SetString(PyExc_TypeError
, "required field \"col_offset\" missing from stmt");
3362 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)FunctionDef_type
);
3363 if (isinstance
== -1) {
3370 asdl_seq
* decorator_list
;
3372 if (PyObject_HasAttrString(obj
, "name")) {
3374 tmp
= PyObject_GetAttrString(obj
, "name");
3375 if (tmp
== NULL
) goto failed
;
3376 res
= obj2ast_identifier(tmp
, &name
, arena
);
3377 if (res
!= 0) goto failed
;
3381 PyErr_SetString(PyExc_TypeError
, "required field \"name\" missing from FunctionDef");
3384 if (PyObject_HasAttrString(obj
, "args")) {
3386 tmp
= PyObject_GetAttrString(obj
, "args");
3387 if (tmp
== NULL
) goto failed
;
3388 res
= obj2ast_arguments(tmp
, &args
, arena
);
3389 if (res
!= 0) goto failed
;
3393 PyErr_SetString(PyExc_TypeError
, "required field \"args\" missing from FunctionDef");
3396 if (PyObject_HasAttrString(obj
, "body")) {
3400 tmp
= PyObject_GetAttrString(obj
, "body");
3401 if (tmp
== NULL
) goto failed
;
3402 if (!PyList_Check(tmp
)) {
3403 PyErr_Format(PyExc_TypeError
, "FunctionDef field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3406 len
= PyList_GET_SIZE(tmp
);
3407 body
= asdl_seq_new(len
, arena
);
3408 if (body
== NULL
) goto failed
;
3409 for (i
= 0; i
< len
; i
++) {
3411 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3412 if (res
!= 0) goto failed
;
3413 asdl_seq_SET(body
, i
, value
);
3418 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from FunctionDef");
3421 if (PyObject_HasAttrString(obj
, "decorator_list")) {
3425 tmp
= PyObject_GetAttrString(obj
, "decorator_list");
3426 if (tmp
== NULL
) goto failed
;
3427 if (!PyList_Check(tmp
)) {
3428 PyErr_Format(PyExc_TypeError
, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3431 len
= PyList_GET_SIZE(tmp
);
3432 decorator_list
= asdl_seq_new(len
, arena
);
3433 if (decorator_list
== NULL
) goto failed
;
3434 for (i
= 0; i
< len
; i
++) {
3436 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3437 if (res
!= 0) goto failed
;
3438 asdl_seq_SET(decorator_list
, i
, value
);
3443 PyErr_SetString(PyExc_TypeError
, "required field \"decorator_list\" missing from FunctionDef");
3446 *out
= FunctionDef(name
, args
, body
, decorator_list
, lineno
,
3448 if (*out
== NULL
) goto failed
;
3451 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)ClassDef_type
);
3452 if (isinstance
== -1) {
3459 asdl_seq
* decorator_list
;
3461 if (PyObject_HasAttrString(obj
, "name")) {
3463 tmp
= PyObject_GetAttrString(obj
, "name");
3464 if (tmp
== NULL
) goto failed
;
3465 res
= obj2ast_identifier(tmp
, &name
, arena
);
3466 if (res
!= 0) goto failed
;
3470 PyErr_SetString(PyExc_TypeError
, "required field \"name\" missing from ClassDef");
3473 if (PyObject_HasAttrString(obj
, "bases")) {
3477 tmp
= PyObject_GetAttrString(obj
, "bases");
3478 if (tmp
== NULL
) goto failed
;
3479 if (!PyList_Check(tmp
)) {
3480 PyErr_Format(PyExc_TypeError
, "ClassDef field \"bases\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3483 len
= PyList_GET_SIZE(tmp
);
3484 bases
= asdl_seq_new(len
, arena
);
3485 if (bases
== NULL
) goto failed
;
3486 for (i
= 0; i
< len
; i
++) {
3488 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3489 if (res
!= 0) goto failed
;
3490 asdl_seq_SET(bases
, i
, value
);
3495 PyErr_SetString(PyExc_TypeError
, "required field \"bases\" missing from ClassDef");
3498 if (PyObject_HasAttrString(obj
, "body")) {
3502 tmp
= PyObject_GetAttrString(obj
, "body");
3503 if (tmp
== NULL
) goto failed
;
3504 if (!PyList_Check(tmp
)) {
3505 PyErr_Format(PyExc_TypeError
, "ClassDef field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3508 len
= PyList_GET_SIZE(tmp
);
3509 body
= asdl_seq_new(len
, arena
);
3510 if (body
== NULL
) goto failed
;
3511 for (i
= 0; i
< len
; i
++) {
3513 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3514 if (res
!= 0) goto failed
;
3515 asdl_seq_SET(body
, i
, value
);
3520 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from ClassDef");
3523 if (PyObject_HasAttrString(obj
, "decorator_list")) {
3527 tmp
= PyObject_GetAttrString(obj
, "decorator_list");
3528 if (tmp
== NULL
) goto failed
;
3529 if (!PyList_Check(tmp
)) {
3530 PyErr_Format(PyExc_TypeError
, "ClassDef field \"decorator_list\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3533 len
= PyList_GET_SIZE(tmp
);
3534 decorator_list
= asdl_seq_new(len
, arena
);
3535 if (decorator_list
== NULL
) goto failed
;
3536 for (i
= 0; i
< len
; i
++) {
3538 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3539 if (res
!= 0) goto failed
;
3540 asdl_seq_SET(decorator_list
, i
, value
);
3545 PyErr_SetString(PyExc_TypeError
, "required field \"decorator_list\" missing from ClassDef");
3548 *out
= ClassDef(name
, bases
, body
, decorator_list
, lineno
,
3550 if (*out
== NULL
) goto failed
;
3553 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Return_type
);
3554 if (isinstance
== -1) {
3560 if (PyObject_HasAttrString(obj
, "value")) {
3562 tmp
= PyObject_GetAttrString(obj
, "value");
3563 if (tmp
== NULL
) goto failed
;
3564 res
= obj2ast_expr(tmp
, &value
, arena
);
3565 if (res
!= 0) goto failed
;
3571 *out
= Return(value
, lineno
, col_offset
, arena
);
3572 if (*out
== NULL
) goto failed
;
3575 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Delete_type
);
3576 if (isinstance
== -1) {
3582 if (PyObject_HasAttrString(obj
, "targets")) {
3586 tmp
= PyObject_GetAttrString(obj
, "targets");
3587 if (tmp
== NULL
) goto failed
;
3588 if (!PyList_Check(tmp
)) {
3589 PyErr_Format(PyExc_TypeError
, "Delete field \"targets\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3592 len
= PyList_GET_SIZE(tmp
);
3593 targets
= asdl_seq_new(len
, arena
);
3594 if (targets
== NULL
) goto failed
;
3595 for (i
= 0; i
< len
; i
++) {
3597 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3598 if (res
!= 0) goto failed
;
3599 asdl_seq_SET(targets
, i
, value
);
3604 PyErr_SetString(PyExc_TypeError
, "required field \"targets\" missing from Delete");
3607 *out
= Delete(targets
, lineno
, col_offset
, arena
);
3608 if (*out
== NULL
) goto failed
;
3611 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Assign_type
);
3612 if (isinstance
== -1) {
3619 if (PyObject_HasAttrString(obj
, "targets")) {
3623 tmp
= PyObject_GetAttrString(obj
, "targets");
3624 if (tmp
== NULL
) goto failed
;
3625 if (!PyList_Check(tmp
)) {
3626 PyErr_Format(PyExc_TypeError
, "Assign field \"targets\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3629 len
= PyList_GET_SIZE(tmp
);
3630 targets
= asdl_seq_new(len
, arena
);
3631 if (targets
== NULL
) goto failed
;
3632 for (i
= 0; i
< len
; i
++) {
3634 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3635 if (res
!= 0) goto failed
;
3636 asdl_seq_SET(targets
, i
, value
);
3641 PyErr_SetString(PyExc_TypeError
, "required field \"targets\" missing from Assign");
3644 if (PyObject_HasAttrString(obj
, "value")) {
3646 tmp
= PyObject_GetAttrString(obj
, "value");
3647 if (tmp
== NULL
) goto failed
;
3648 res
= obj2ast_expr(tmp
, &value
, arena
);
3649 if (res
!= 0) goto failed
;
3653 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Assign");
3656 *out
= Assign(targets
, value
, lineno
, col_offset
, arena
);
3657 if (*out
== NULL
) goto failed
;
3660 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)AugAssign_type
);
3661 if (isinstance
== -1) {
3669 if (PyObject_HasAttrString(obj
, "target")) {
3671 tmp
= PyObject_GetAttrString(obj
, "target");
3672 if (tmp
== NULL
) goto failed
;
3673 res
= obj2ast_expr(tmp
, &target
, arena
);
3674 if (res
!= 0) goto failed
;
3678 PyErr_SetString(PyExc_TypeError
, "required field \"target\" missing from AugAssign");
3681 if (PyObject_HasAttrString(obj
, "op")) {
3683 tmp
= PyObject_GetAttrString(obj
, "op");
3684 if (tmp
== NULL
) goto failed
;
3685 res
= obj2ast_operator(tmp
, &op
, arena
);
3686 if (res
!= 0) goto failed
;
3690 PyErr_SetString(PyExc_TypeError
, "required field \"op\" missing from AugAssign");
3693 if (PyObject_HasAttrString(obj
, "value")) {
3695 tmp
= PyObject_GetAttrString(obj
, "value");
3696 if (tmp
== NULL
) goto failed
;
3697 res
= obj2ast_expr(tmp
, &value
, arena
);
3698 if (res
!= 0) goto failed
;
3702 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from AugAssign");
3705 *out
= AugAssign(target
, op
, value
, lineno
, col_offset
, arena
);
3706 if (*out
== NULL
) goto failed
;
3709 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Print_type
);
3710 if (isinstance
== -1) {
3718 if (PyObject_HasAttrString(obj
, "dest")) {
3720 tmp
= PyObject_GetAttrString(obj
, "dest");
3721 if (tmp
== NULL
) goto failed
;
3722 res
= obj2ast_expr(tmp
, &dest
, arena
);
3723 if (res
!= 0) goto failed
;
3729 if (PyObject_HasAttrString(obj
, "values")) {
3733 tmp
= PyObject_GetAttrString(obj
, "values");
3734 if (tmp
== NULL
) goto failed
;
3735 if (!PyList_Check(tmp
)) {
3736 PyErr_Format(PyExc_TypeError
, "Print field \"values\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3739 len
= PyList_GET_SIZE(tmp
);
3740 values
= asdl_seq_new(len
, arena
);
3741 if (values
== NULL
) goto failed
;
3742 for (i
= 0; i
< len
; i
++) {
3744 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3745 if (res
!= 0) goto failed
;
3746 asdl_seq_SET(values
, i
, value
);
3751 PyErr_SetString(PyExc_TypeError
, "required field \"values\" missing from Print");
3754 if (PyObject_HasAttrString(obj
, "nl")) {
3756 tmp
= PyObject_GetAttrString(obj
, "nl");
3757 if (tmp
== NULL
) goto failed
;
3758 res
= obj2ast_bool(tmp
, &nl
, arena
);
3759 if (res
!= 0) goto failed
;
3763 PyErr_SetString(PyExc_TypeError
, "required field \"nl\" missing from Print");
3766 *out
= Print(dest
, values
, nl
, lineno
, col_offset
, arena
);
3767 if (*out
== NULL
) goto failed
;
3770 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)For_type
);
3771 if (isinstance
== -1) {
3780 if (PyObject_HasAttrString(obj
, "target")) {
3782 tmp
= PyObject_GetAttrString(obj
, "target");
3783 if (tmp
== NULL
) goto failed
;
3784 res
= obj2ast_expr(tmp
, &target
, arena
);
3785 if (res
!= 0) goto failed
;
3789 PyErr_SetString(PyExc_TypeError
, "required field \"target\" missing from For");
3792 if (PyObject_HasAttrString(obj
, "iter")) {
3794 tmp
= PyObject_GetAttrString(obj
, "iter");
3795 if (tmp
== NULL
) goto failed
;
3796 res
= obj2ast_expr(tmp
, &iter
, arena
);
3797 if (res
!= 0) goto failed
;
3801 PyErr_SetString(PyExc_TypeError
, "required field \"iter\" missing from For");
3804 if (PyObject_HasAttrString(obj
, "body")) {
3808 tmp
= PyObject_GetAttrString(obj
, "body");
3809 if (tmp
== NULL
) goto failed
;
3810 if (!PyList_Check(tmp
)) {
3811 PyErr_Format(PyExc_TypeError
, "For field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3814 len
= PyList_GET_SIZE(tmp
);
3815 body
= asdl_seq_new(len
, arena
);
3816 if (body
== NULL
) goto failed
;
3817 for (i
= 0; i
< len
; i
++) {
3819 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3820 if (res
!= 0) goto failed
;
3821 asdl_seq_SET(body
, i
, value
);
3826 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from For");
3829 if (PyObject_HasAttrString(obj
, "orelse")) {
3833 tmp
= PyObject_GetAttrString(obj
, "orelse");
3834 if (tmp
== NULL
) goto failed
;
3835 if (!PyList_Check(tmp
)) {
3836 PyErr_Format(PyExc_TypeError
, "For field \"orelse\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3839 len
= PyList_GET_SIZE(tmp
);
3840 orelse
= asdl_seq_new(len
, arena
);
3841 if (orelse
== NULL
) goto failed
;
3842 for (i
= 0; i
< len
; i
++) {
3844 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3845 if (res
!= 0) goto failed
;
3846 asdl_seq_SET(orelse
, i
, value
);
3851 PyErr_SetString(PyExc_TypeError
, "required field \"orelse\" missing from For");
3854 *out
= For(target
, iter
, body
, orelse
, lineno
, col_offset
,
3856 if (*out
== NULL
) goto failed
;
3859 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)While_type
);
3860 if (isinstance
== -1) {
3868 if (PyObject_HasAttrString(obj
, "test")) {
3870 tmp
= PyObject_GetAttrString(obj
, "test");
3871 if (tmp
== NULL
) goto failed
;
3872 res
= obj2ast_expr(tmp
, &test
, arena
);
3873 if (res
!= 0) goto failed
;
3877 PyErr_SetString(PyExc_TypeError
, "required field \"test\" missing from While");
3880 if (PyObject_HasAttrString(obj
, "body")) {
3884 tmp
= PyObject_GetAttrString(obj
, "body");
3885 if (tmp
== NULL
) goto failed
;
3886 if (!PyList_Check(tmp
)) {
3887 PyErr_Format(PyExc_TypeError
, "While field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3890 len
= PyList_GET_SIZE(tmp
);
3891 body
= asdl_seq_new(len
, arena
);
3892 if (body
== NULL
) goto failed
;
3893 for (i
= 0; i
< len
; i
++) {
3895 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3896 if (res
!= 0) goto failed
;
3897 asdl_seq_SET(body
, i
, value
);
3902 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from While");
3905 if (PyObject_HasAttrString(obj
, "orelse")) {
3909 tmp
= PyObject_GetAttrString(obj
, "orelse");
3910 if (tmp
== NULL
) goto failed
;
3911 if (!PyList_Check(tmp
)) {
3912 PyErr_Format(PyExc_TypeError
, "While field \"orelse\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3915 len
= PyList_GET_SIZE(tmp
);
3916 orelse
= asdl_seq_new(len
, arena
);
3917 if (orelse
== NULL
) goto failed
;
3918 for (i
= 0; i
< len
; i
++) {
3920 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3921 if (res
!= 0) goto failed
;
3922 asdl_seq_SET(orelse
, i
, value
);
3927 PyErr_SetString(PyExc_TypeError
, "required field \"orelse\" missing from While");
3930 *out
= While(test
, body
, orelse
, lineno
, col_offset
, arena
);
3931 if (*out
== NULL
) goto failed
;
3934 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)If_type
);
3935 if (isinstance
== -1) {
3943 if (PyObject_HasAttrString(obj
, "test")) {
3945 tmp
= PyObject_GetAttrString(obj
, "test");
3946 if (tmp
== NULL
) goto failed
;
3947 res
= obj2ast_expr(tmp
, &test
, arena
);
3948 if (res
!= 0) goto failed
;
3952 PyErr_SetString(PyExc_TypeError
, "required field \"test\" missing from If");
3955 if (PyObject_HasAttrString(obj
, "body")) {
3959 tmp
= PyObject_GetAttrString(obj
, "body");
3960 if (tmp
== NULL
) goto failed
;
3961 if (!PyList_Check(tmp
)) {
3962 PyErr_Format(PyExc_TypeError
, "If field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3965 len
= PyList_GET_SIZE(tmp
);
3966 body
= asdl_seq_new(len
, arena
);
3967 if (body
== NULL
) goto failed
;
3968 for (i
= 0; i
< len
; i
++) {
3970 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3971 if (res
!= 0) goto failed
;
3972 asdl_seq_SET(body
, i
, value
);
3977 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from If");
3980 if (PyObject_HasAttrString(obj
, "orelse")) {
3984 tmp
= PyObject_GetAttrString(obj
, "orelse");
3985 if (tmp
== NULL
) goto failed
;
3986 if (!PyList_Check(tmp
)) {
3987 PyErr_Format(PyExc_TypeError
, "If field \"orelse\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
3990 len
= PyList_GET_SIZE(tmp
);
3991 orelse
= asdl_seq_new(len
, arena
);
3992 if (orelse
== NULL
) goto failed
;
3993 for (i
= 0; i
< len
; i
++) {
3995 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
3996 if (res
!= 0) goto failed
;
3997 asdl_seq_SET(orelse
, i
, value
);
4002 PyErr_SetString(PyExc_TypeError
, "required field \"orelse\" missing from If");
4005 *out
= If(test
, body
, orelse
, lineno
, col_offset
, arena
);
4006 if (*out
== NULL
) goto failed
;
4009 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)With_type
);
4010 if (isinstance
== -1) {
4014 expr_ty context_expr
;
4015 expr_ty optional_vars
;
4018 if (PyObject_HasAttrString(obj
, "context_expr")) {
4020 tmp
= PyObject_GetAttrString(obj
, "context_expr");
4021 if (tmp
== NULL
) goto failed
;
4022 res
= obj2ast_expr(tmp
, &context_expr
, arena
);
4023 if (res
!= 0) goto failed
;
4027 PyErr_SetString(PyExc_TypeError
, "required field \"context_expr\" missing from With");
4030 if (PyObject_HasAttrString(obj
, "optional_vars")) {
4032 tmp
= PyObject_GetAttrString(obj
, "optional_vars");
4033 if (tmp
== NULL
) goto failed
;
4034 res
= obj2ast_expr(tmp
, &optional_vars
, arena
);
4035 if (res
!= 0) goto failed
;
4039 optional_vars
= NULL
;
4041 if (PyObject_HasAttrString(obj
, "body")) {
4045 tmp
= PyObject_GetAttrString(obj
, "body");
4046 if (tmp
== NULL
) goto failed
;
4047 if (!PyList_Check(tmp
)) {
4048 PyErr_Format(PyExc_TypeError
, "With field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4051 len
= PyList_GET_SIZE(tmp
);
4052 body
= asdl_seq_new(len
, arena
);
4053 if (body
== NULL
) goto failed
;
4054 for (i
= 0; i
< len
; i
++) {
4056 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4057 if (res
!= 0) goto failed
;
4058 asdl_seq_SET(body
, i
, value
);
4063 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from With");
4066 *out
= With(context_expr
, optional_vars
, body
, lineno
,
4068 if (*out
== NULL
) goto failed
;
4071 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Raise_type
);
4072 if (isinstance
== -1) {
4080 if (PyObject_HasAttrString(obj
, "type")) {
4082 tmp
= PyObject_GetAttrString(obj
, "type");
4083 if (tmp
== NULL
) goto failed
;
4084 res
= obj2ast_expr(tmp
, &type
, arena
);
4085 if (res
!= 0) goto failed
;
4091 if (PyObject_HasAttrString(obj
, "inst")) {
4093 tmp
= PyObject_GetAttrString(obj
, "inst");
4094 if (tmp
== NULL
) goto failed
;
4095 res
= obj2ast_expr(tmp
, &inst
, arena
);
4096 if (res
!= 0) goto failed
;
4102 if (PyObject_HasAttrString(obj
, "tback")) {
4104 tmp
= PyObject_GetAttrString(obj
, "tback");
4105 if (tmp
== NULL
) goto failed
;
4106 res
= obj2ast_expr(tmp
, &tback
, arena
);
4107 if (res
!= 0) goto failed
;
4113 *out
= Raise(type
, inst
, tback
, lineno
, col_offset
, arena
);
4114 if (*out
== NULL
) goto failed
;
4117 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)TryExcept_type
);
4118 if (isinstance
== -1) {
4126 if (PyObject_HasAttrString(obj
, "body")) {
4130 tmp
= PyObject_GetAttrString(obj
, "body");
4131 if (tmp
== NULL
) goto failed
;
4132 if (!PyList_Check(tmp
)) {
4133 PyErr_Format(PyExc_TypeError
, "TryExcept field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4136 len
= PyList_GET_SIZE(tmp
);
4137 body
= asdl_seq_new(len
, arena
);
4138 if (body
== NULL
) goto failed
;
4139 for (i
= 0; i
< len
; i
++) {
4141 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4142 if (res
!= 0) goto failed
;
4143 asdl_seq_SET(body
, i
, value
);
4148 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from TryExcept");
4151 if (PyObject_HasAttrString(obj
, "handlers")) {
4155 tmp
= PyObject_GetAttrString(obj
, "handlers");
4156 if (tmp
== NULL
) goto failed
;
4157 if (!PyList_Check(tmp
)) {
4158 PyErr_Format(PyExc_TypeError
, "TryExcept field \"handlers\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4161 len
= PyList_GET_SIZE(tmp
);
4162 handlers
= asdl_seq_new(len
, arena
);
4163 if (handlers
== NULL
) goto failed
;
4164 for (i
= 0; i
< len
; i
++) {
4165 excepthandler_ty value
;
4166 res
= obj2ast_excepthandler(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4167 if (res
!= 0) goto failed
;
4168 asdl_seq_SET(handlers
, i
, value
);
4173 PyErr_SetString(PyExc_TypeError
, "required field \"handlers\" missing from TryExcept");
4176 if (PyObject_HasAttrString(obj
, "orelse")) {
4180 tmp
= PyObject_GetAttrString(obj
, "orelse");
4181 if (tmp
== NULL
) goto failed
;
4182 if (!PyList_Check(tmp
)) {
4183 PyErr_Format(PyExc_TypeError
, "TryExcept field \"orelse\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4186 len
= PyList_GET_SIZE(tmp
);
4187 orelse
= asdl_seq_new(len
, arena
);
4188 if (orelse
== NULL
) goto failed
;
4189 for (i
= 0; i
< len
; i
++) {
4191 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4192 if (res
!= 0) goto failed
;
4193 asdl_seq_SET(orelse
, i
, value
);
4198 PyErr_SetString(PyExc_TypeError
, "required field \"orelse\" missing from TryExcept");
4201 *out
= TryExcept(body
, handlers
, orelse
, lineno
, col_offset
,
4203 if (*out
== NULL
) goto failed
;
4206 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)TryFinally_type
);
4207 if (isinstance
== -1) {
4212 asdl_seq
* finalbody
;
4214 if (PyObject_HasAttrString(obj
, "body")) {
4218 tmp
= PyObject_GetAttrString(obj
, "body");
4219 if (tmp
== NULL
) goto failed
;
4220 if (!PyList_Check(tmp
)) {
4221 PyErr_Format(PyExc_TypeError
, "TryFinally field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4224 len
= PyList_GET_SIZE(tmp
);
4225 body
= asdl_seq_new(len
, arena
);
4226 if (body
== NULL
) goto failed
;
4227 for (i
= 0; i
< len
; i
++) {
4229 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4230 if (res
!= 0) goto failed
;
4231 asdl_seq_SET(body
, i
, value
);
4236 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from TryFinally");
4239 if (PyObject_HasAttrString(obj
, "finalbody")) {
4243 tmp
= PyObject_GetAttrString(obj
, "finalbody");
4244 if (tmp
== NULL
) goto failed
;
4245 if (!PyList_Check(tmp
)) {
4246 PyErr_Format(PyExc_TypeError
, "TryFinally field \"finalbody\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4249 len
= PyList_GET_SIZE(tmp
);
4250 finalbody
= asdl_seq_new(len
, arena
);
4251 if (finalbody
== NULL
) goto failed
;
4252 for (i
= 0; i
< len
; i
++) {
4254 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4255 if (res
!= 0) goto failed
;
4256 asdl_seq_SET(finalbody
, i
, value
);
4261 PyErr_SetString(PyExc_TypeError
, "required field \"finalbody\" missing from TryFinally");
4264 *out
= TryFinally(body
, finalbody
, lineno
, col_offset
, arena
);
4265 if (*out
== NULL
) goto failed
;
4268 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Assert_type
);
4269 if (isinstance
== -1) {
4276 if (PyObject_HasAttrString(obj
, "test")) {
4278 tmp
= PyObject_GetAttrString(obj
, "test");
4279 if (tmp
== NULL
) goto failed
;
4280 res
= obj2ast_expr(tmp
, &test
, arena
);
4281 if (res
!= 0) goto failed
;
4285 PyErr_SetString(PyExc_TypeError
, "required field \"test\" missing from Assert");
4288 if (PyObject_HasAttrString(obj
, "msg")) {
4290 tmp
= PyObject_GetAttrString(obj
, "msg");
4291 if (tmp
== NULL
) goto failed
;
4292 res
= obj2ast_expr(tmp
, &msg
, arena
);
4293 if (res
!= 0) goto failed
;
4299 *out
= Assert(test
, msg
, lineno
, col_offset
, arena
);
4300 if (*out
== NULL
) goto failed
;
4303 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Import_type
);
4304 if (isinstance
== -1) {
4310 if (PyObject_HasAttrString(obj
, "names")) {
4314 tmp
= PyObject_GetAttrString(obj
, "names");
4315 if (tmp
== NULL
) goto failed
;
4316 if (!PyList_Check(tmp
)) {
4317 PyErr_Format(PyExc_TypeError
, "Import field \"names\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4320 len
= PyList_GET_SIZE(tmp
);
4321 names
= asdl_seq_new(len
, arena
);
4322 if (names
== NULL
) goto failed
;
4323 for (i
= 0; i
< len
; i
++) {
4325 res
= obj2ast_alias(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4326 if (res
!= 0) goto failed
;
4327 asdl_seq_SET(names
, i
, value
);
4332 PyErr_SetString(PyExc_TypeError
, "required field \"names\" missing from Import");
4335 *out
= Import(names
, lineno
, col_offset
, arena
);
4336 if (*out
== NULL
) goto failed
;
4339 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)ImportFrom_type
);
4340 if (isinstance
== -1) {
4348 if (PyObject_HasAttrString(obj
, "module")) {
4350 tmp
= PyObject_GetAttrString(obj
, "module");
4351 if (tmp
== NULL
) goto failed
;
4352 res
= obj2ast_identifier(tmp
, &module
, arena
);
4353 if (res
!= 0) goto failed
;
4359 if (PyObject_HasAttrString(obj
, "names")) {
4363 tmp
= PyObject_GetAttrString(obj
, "names");
4364 if (tmp
== NULL
) goto failed
;
4365 if (!PyList_Check(tmp
)) {
4366 PyErr_Format(PyExc_TypeError
, "ImportFrom field \"names\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4369 len
= PyList_GET_SIZE(tmp
);
4370 names
= asdl_seq_new(len
, arena
);
4371 if (names
== NULL
) goto failed
;
4372 for (i
= 0; i
< len
; i
++) {
4374 res
= obj2ast_alias(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4375 if (res
!= 0) goto failed
;
4376 asdl_seq_SET(names
, i
, value
);
4381 PyErr_SetString(PyExc_TypeError
, "required field \"names\" missing from ImportFrom");
4384 if (PyObject_HasAttrString(obj
, "level")) {
4386 tmp
= PyObject_GetAttrString(obj
, "level");
4387 if (tmp
== NULL
) goto failed
;
4388 res
= obj2ast_int(tmp
, &level
, arena
);
4389 if (res
!= 0) goto failed
;
4395 *out
= ImportFrom(module
, names
, level
, lineno
, col_offset
,
4397 if (*out
== NULL
) goto failed
;
4400 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Exec_type
);
4401 if (isinstance
== -1) {
4409 if (PyObject_HasAttrString(obj
, "body")) {
4411 tmp
= PyObject_GetAttrString(obj
, "body");
4412 if (tmp
== NULL
) goto failed
;
4413 res
= obj2ast_expr(tmp
, &body
, arena
);
4414 if (res
!= 0) goto failed
;
4418 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Exec");
4421 if (PyObject_HasAttrString(obj
, "globals")) {
4423 tmp
= PyObject_GetAttrString(obj
, "globals");
4424 if (tmp
== NULL
) goto failed
;
4425 res
= obj2ast_expr(tmp
, &globals
, arena
);
4426 if (res
!= 0) goto failed
;
4432 if (PyObject_HasAttrString(obj
, "locals")) {
4434 tmp
= PyObject_GetAttrString(obj
, "locals");
4435 if (tmp
== NULL
) goto failed
;
4436 res
= obj2ast_expr(tmp
, &locals
, arena
);
4437 if (res
!= 0) goto failed
;
4443 *out
= Exec(body
, globals
, locals
, lineno
, col_offset
, arena
);
4444 if (*out
== NULL
) goto failed
;
4447 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Global_type
);
4448 if (isinstance
== -1) {
4454 if (PyObject_HasAttrString(obj
, "names")) {
4458 tmp
= PyObject_GetAttrString(obj
, "names");
4459 if (tmp
== NULL
) goto failed
;
4460 if (!PyList_Check(tmp
)) {
4461 PyErr_Format(PyExc_TypeError
, "Global field \"names\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4464 len
= PyList_GET_SIZE(tmp
);
4465 names
= asdl_seq_new(len
, arena
);
4466 if (names
== NULL
) goto failed
;
4467 for (i
= 0; i
< len
; i
++) {
4469 res
= obj2ast_identifier(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4470 if (res
!= 0) goto failed
;
4471 asdl_seq_SET(names
, i
, value
);
4476 PyErr_SetString(PyExc_TypeError
, "required field \"names\" missing from Global");
4479 *out
= Global(names
, lineno
, col_offset
, arena
);
4480 if (*out
== NULL
) goto failed
;
4483 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Expr_type
);
4484 if (isinstance
== -1) {
4490 if (PyObject_HasAttrString(obj
, "value")) {
4492 tmp
= PyObject_GetAttrString(obj
, "value");
4493 if (tmp
== NULL
) goto failed
;
4494 res
= obj2ast_expr(tmp
, &value
, arena
);
4495 if (res
!= 0) goto failed
;
4499 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Expr");
4502 *out
= Expr(value
, lineno
, col_offset
, arena
);
4503 if (*out
== NULL
) goto failed
;
4506 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Pass_type
);
4507 if (isinstance
== -1) {
4512 *out
= Pass(lineno
, col_offset
, arena
);
4513 if (*out
== NULL
) goto failed
;
4516 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Break_type
);
4517 if (isinstance
== -1) {
4522 *out
= Break(lineno
, col_offset
, arena
);
4523 if (*out
== NULL
) goto failed
;
4526 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Continue_type
);
4527 if (isinstance
== -1) {
4532 *out
= Continue(lineno
, col_offset
, arena
);
4533 if (*out
== NULL
) goto failed
;
4537 tmp
= PyObject_Repr(obj
);
4538 if (tmp
== NULL
) goto failed
;
4539 PyErr_Format(PyExc_TypeError
, "expected some sort of stmt, but got %.400s", PyString_AS_STRING(tmp
));
4546 obj2ast_expr(PyObject
* obj
, expr_ty
* out
, PyArena
* arena
)
4548 PyObject
* tmp
= NULL
;
4554 if (obj
== Py_None
) {
4558 if (PyObject_HasAttrString(obj
, "lineno")) {
4560 tmp
= PyObject_GetAttrString(obj
, "lineno");
4561 if (tmp
== NULL
) goto failed
;
4562 res
= obj2ast_int(tmp
, &lineno
, arena
);
4563 if (res
!= 0) goto failed
;
4567 PyErr_SetString(PyExc_TypeError
, "required field \"lineno\" missing from expr");
4570 if (PyObject_HasAttrString(obj
, "col_offset")) {
4572 tmp
= PyObject_GetAttrString(obj
, "col_offset");
4573 if (tmp
== NULL
) goto failed
;
4574 res
= obj2ast_int(tmp
, &col_offset
, arena
);
4575 if (res
!= 0) goto failed
;
4579 PyErr_SetString(PyExc_TypeError
, "required field \"col_offset\" missing from expr");
4582 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)BoolOp_type
);
4583 if (isinstance
== -1) {
4590 if (PyObject_HasAttrString(obj
, "op")) {
4592 tmp
= PyObject_GetAttrString(obj
, "op");
4593 if (tmp
== NULL
) goto failed
;
4594 res
= obj2ast_boolop(tmp
, &op
, arena
);
4595 if (res
!= 0) goto failed
;
4599 PyErr_SetString(PyExc_TypeError
, "required field \"op\" missing from BoolOp");
4602 if (PyObject_HasAttrString(obj
, "values")) {
4606 tmp
= PyObject_GetAttrString(obj
, "values");
4607 if (tmp
== NULL
) goto failed
;
4608 if (!PyList_Check(tmp
)) {
4609 PyErr_Format(PyExc_TypeError
, "BoolOp field \"values\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4612 len
= PyList_GET_SIZE(tmp
);
4613 values
= asdl_seq_new(len
, arena
);
4614 if (values
== NULL
) goto failed
;
4615 for (i
= 0; i
< len
; i
++) {
4617 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4618 if (res
!= 0) goto failed
;
4619 asdl_seq_SET(values
, i
, value
);
4624 PyErr_SetString(PyExc_TypeError
, "required field \"values\" missing from BoolOp");
4627 *out
= BoolOp(op
, values
, lineno
, col_offset
, arena
);
4628 if (*out
== NULL
) goto failed
;
4631 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)BinOp_type
);
4632 if (isinstance
== -1) {
4640 if (PyObject_HasAttrString(obj
, "left")) {
4642 tmp
= PyObject_GetAttrString(obj
, "left");
4643 if (tmp
== NULL
) goto failed
;
4644 res
= obj2ast_expr(tmp
, &left
, arena
);
4645 if (res
!= 0) goto failed
;
4649 PyErr_SetString(PyExc_TypeError
, "required field \"left\" missing from BinOp");
4652 if (PyObject_HasAttrString(obj
, "op")) {
4654 tmp
= PyObject_GetAttrString(obj
, "op");
4655 if (tmp
== NULL
) goto failed
;
4656 res
= obj2ast_operator(tmp
, &op
, arena
);
4657 if (res
!= 0) goto failed
;
4661 PyErr_SetString(PyExc_TypeError
, "required field \"op\" missing from BinOp");
4664 if (PyObject_HasAttrString(obj
, "right")) {
4666 tmp
= PyObject_GetAttrString(obj
, "right");
4667 if (tmp
== NULL
) goto failed
;
4668 res
= obj2ast_expr(tmp
, &right
, arena
);
4669 if (res
!= 0) goto failed
;
4673 PyErr_SetString(PyExc_TypeError
, "required field \"right\" missing from BinOp");
4676 *out
= BinOp(left
, op
, right
, lineno
, col_offset
, arena
);
4677 if (*out
== NULL
) goto failed
;
4680 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)UnaryOp_type
);
4681 if (isinstance
== -1) {
4688 if (PyObject_HasAttrString(obj
, "op")) {
4690 tmp
= PyObject_GetAttrString(obj
, "op");
4691 if (tmp
== NULL
) goto failed
;
4692 res
= obj2ast_unaryop(tmp
, &op
, arena
);
4693 if (res
!= 0) goto failed
;
4697 PyErr_SetString(PyExc_TypeError
, "required field \"op\" missing from UnaryOp");
4700 if (PyObject_HasAttrString(obj
, "operand")) {
4702 tmp
= PyObject_GetAttrString(obj
, "operand");
4703 if (tmp
== NULL
) goto failed
;
4704 res
= obj2ast_expr(tmp
, &operand
, arena
);
4705 if (res
!= 0) goto failed
;
4709 PyErr_SetString(PyExc_TypeError
, "required field \"operand\" missing from UnaryOp");
4712 *out
= UnaryOp(op
, operand
, lineno
, col_offset
, arena
);
4713 if (*out
== NULL
) goto failed
;
4716 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Lambda_type
);
4717 if (isinstance
== -1) {
4724 if (PyObject_HasAttrString(obj
, "args")) {
4726 tmp
= PyObject_GetAttrString(obj
, "args");
4727 if (tmp
== NULL
) goto failed
;
4728 res
= obj2ast_arguments(tmp
, &args
, arena
);
4729 if (res
!= 0) goto failed
;
4733 PyErr_SetString(PyExc_TypeError
, "required field \"args\" missing from Lambda");
4736 if (PyObject_HasAttrString(obj
, "body")) {
4738 tmp
= PyObject_GetAttrString(obj
, "body");
4739 if (tmp
== NULL
) goto failed
;
4740 res
= obj2ast_expr(tmp
, &body
, arena
);
4741 if (res
!= 0) goto failed
;
4745 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from Lambda");
4748 *out
= Lambda(args
, body
, lineno
, col_offset
, arena
);
4749 if (*out
== NULL
) goto failed
;
4752 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)IfExp_type
);
4753 if (isinstance
== -1) {
4761 if (PyObject_HasAttrString(obj
, "test")) {
4763 tmp
= PyObject_GetAttrString(obj
, "test");
4764 if (tmp
== NULL
) goto failed
;
4765 res
= obj2ast_expr(tmp
, &test
, arena
);
4766 if (res
!= 0) goto failed
;
4770 PyErr_SetString(PyExc_TypeError
, "required field \"test\" missing from IfExp");
4773 if (PyObject_HasAttrString(obj
, "body")) {
4775 tmp
= PyObject_GetAttrString(obj
, "body");
4776 if (tmp
== NULL
) goto failed
;
4777 res
= obj2ast_expr(tmp
, &body
, arena
);
4778 if (res
!= 0) goto failed
;
4782 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from IfExp");
4785 if (PyObject_HasAttrString(obj
, "orelse")) {
4787 tmp
= PyObject_GetAttrString(obj
, "orelse");
4788 if (tmp
== NULL
) goto failed
;
4789 res
= obj2ast_expr(tmp
, &orelse
, arena
);
4790 if (res
!= 0) goto failed
;
4794 PyErr_SetString(PyExc_TypeError
, "required field \"orelse\" missing from IfExp");
4797 *out
= IfExp(test
, body
, orelse
, lineno
, col_offset
, arena
);
4798 if (*out
== NULL
) goto failed
;
4801 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Dict_type
);
4802 if (isinstance
== -1) {
4809 if (PyObject_HasAttrString(obj
, "keys")) {
4813 tmp
= PyObject_GetAttrString(obj
, "keys");
4814 if (tmp
== NULL
) goto failed
;
4815 if (!PyList_Check(tmp
)) {
4816 PyErr_Format(PyExc_TypeError
, "Dict field \"keys\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4819 len
= PyList_GET_SIZE(tmp
);
4820 keys
= asdl_seq_new(len
, arena
);
4821 if (keys
== NULL
) goto failed
;
4822 for (i
= 0; i
< len
; i
++) {
4824 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4825 if (res
!= 0) goto failed
;
4826 asdl_seq_SET(keys
, i
, value
);
4831 PyErr_SetString(PyExc_TypeError
, "required field \"keys\" missing from Dict");
4834 if (PyObject_HasAttrString(obj
, "values")) {
4838 tmp
= PyObject_GetAttrString(obj
, "values");
4839 if (tmp
== NULL
) goto failed
;
4840 if (!PyList_Check(tmp
)) {
4841 PyErr_Format(PyExc_TypeError
, "Dict field \"values\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4844 len
= PyList_GET_SIZE(tmp
);
4845 values
= asdl_seq_new(len
, arena
);
4846 if (values
== NULL
) goto failed
;
4847 for (i
= 0; i
< len
; i
++) {
4849 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4850 if (res
!= 0) goto failed
;
4851 asdl_seq_SET(values
, i
, value
);
4856 PyErr_SetString(PyExc_TypeError
, "required field \"values\" missing from Dict");
4859 *out
= Dict(keys
, values
, lineno
, col_offset
, arena
);
4860 if (*out
== NULL
) goto failed
;
4863 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)ListComp_type
);
4864 if (isinstance
== -1) {
4869 asdl_seq
* generators
;
4871 if (PyObject_HasAttrString(obj
, "elt")) {
4873 tmp
= PyObject_GetAttrString(obj
, "elt");
4874 if (tmp
== NULL
) goto failed
;
4875 res
= obj2ast_expr(tmp
, &elt
, arena
);
4876 if (res
!= 0) goto failed
;
4880 PyErr_SetString(PyExc_TypeError
, "required field \"elt\" missing from ListComp");
4883 if (PyObject_HasAttrString(obj
, "generators")) {
4887 tmp
= PyObject_GetAttrString(obj
, "generators");
4888 if (tmp
== NULL
) goto failed
;
4889 if (!PyList_Check(tmp
)) {
4890 PyErr_Format(PyExc_TypeError
, "ListComp field \"generators\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4893 len
= PyList_GET_SIZE(tmp
);
4894 generators
= asdl_seq_new(len
, arena
);
4895 if (generators
== NULL
) goto failed
;
4896 for (i
= 0; i
< len
; i
++) {
4897 comprehension_ty value
;
4898 res
= obj2ast_comprehension(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4899 if (res
!= 0) goto failed
;
4900 asdl_seq_SET(generators
, i
, value
);
4905 PyErr_SetString(PyExc_TypeError
, "required field \"generators\" missing from ListComp");
4908 *out
= ListComp(elt
, generators
, lineno
, col_offset
, arena
);
4909 if (*out
== NULL
) goto failed
;
4912 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)GeneratorExp_type
);
4913 if (isinstance
== -1) {
4918 asdl_seq
* generators
;
4920 if (PyObject_HasAttrString(obj
, "elt")) {
4922 tmp
= PyObject_GetAttrString(obj
, "elt");
4923 if (tmp
== NULL
) goto failed
;
4924 res
= obj2ast_expr(tmp
, &elt
, arena
);
4925 if (res
!= 0) goto failed
;
4929 PyErr_SetString(PyExc_TypeError
, "required field \"elt\" missing from GeneratorExp");
4932 if (PyObject_HasAttrString(obj
, "generators")) {
4936 tmp
= PyObject_GetAttrString(obj
, "generators");
4937 if (tmp
== NULL
) goto failed
;
4938 if (!PyList_Check(tmp
)) {
4939 PyErr_Format(PyExc_TypeError
, "GeneratorExp field \"generators\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
4942 len
= PyList_GET_SIZE(tmp
);
4943 generators
= asdl_seq_new(len
, arena
);
4944 if (generators
== NULL
) goto failed
;
4945 for (i
= 0; i
< len
; i
++) {
4946 comprehension_ty value
;
4947 res
= obj2ast_comprehension(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
4948 if (res
!= 0) goto failed
;
4949 asdl_seq_SET(generators
, i
, value
);
4954 PyErr_SetString(PyExc_TypeError
, "required field \"generators\" missing from GeneratorExp");
4957 *out
= GeneratorExp(elt
, generators
, lineno
, col_offset
, arena
);
4958 if (*out
== NULL
) goto failed
;
4961 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Yield_type
);
4962 if (isinstance
== -1) {
4968 if (PyObject_HasAttrString(obj
, "value")) {
4970 tmp
= PyObject_GetAttrString(obj
, "value");
4971 if (tmp
== NULL
) goto failed
;
4972 res
= obj2ast_expr(tmp
, &value
, arena
);
4973 if (res
!= 0) goto failed
;
4979 *out
= Yield(value
, lineno
, col_offset
, arena
);
4980 if (*out
== NULL
) goto failed
;
4983 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Compare_type
);
4984 if (isinstance
== -1) {
4990 asdl_seq
* comparators
;
4992 if (PyObject_HasAttrString(obj
, "left")) {
4994 tmp
= PyObject_GetAttrString(obj
, "left");
4995 if (tmp
== NULL
) goto failed
;
4996 res
= obj2ast_expr(tmp
, &left
, arena
);
4997 if (res
!= 0) goto failed
;
5001 PyErr_SetString(PyExc_TypeError
, "required field \"left\" missing from Compare");
5004 if (PyObject_HasAttrString(obj
, "ops")) {
5008 tmp
= PyObject_GetAttrString(obj
, "ops");
5009 if (tmp
== NULL
) goto failed
;
5010 if (!PyList_Check(tmp
)) {
5011 PyErr_Format(PyExc_TypeError
, "Compare field \"ops\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5014 len
= PyList_GET_SIZE(tmp
);
5015 ops
= asdl_int_seq_new(len
, arena
);
5016 if (ops
== NULL
) goto failed
;
5017 for (i
= 0; i
< len
; i
++) {
5019 res
= obj2ast_cmpop(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5020 if (res
!= 0) goto failed
;
5021 asdl_seq_SET(ops
, i
, value
);
5026 PyErr_SetString(PyExc_TypeError
, "required field \"ops\" missing from Compare");
5029 if (PyObject_HasAttrString(obj
, "comparators")) {
5033 tmp
= PyObject_GetAttrString(obj
, "comparators");
5034 if (tmp
== NULL
) goto failed
;
5035 if (!PyList_Check(tmp
)) {
5036 PyErr_Format(PyExc_TypeError
, "Compare field \"comparators\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5039 len
= PyList_GET_SIZE(tmp
);
5040 comparators
= asdl_seq_new(len
, arena
);
5041 if (comparators
== NULL
) goto failed
;
5042 for (i
= 0; i
< len
; i
++) {
5044 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5045 if (res
!= 0) goto failed
;
5046 asdl_seq_SET(comparators
, i
, value
);
5051 PyErr_SetString(PyExc_TypeError
, "required field \"comparators\" missing from Compare");
5054 *out
= Compare(left
, ops
, comparators
, lineno
, col_offset
,
5056 if (*out
== NULL
) goto failed
;
5059 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Call_type
);
5060 if (isinstance
== -1) {
5070 if (PyObject_HasAttrString(obj
, "func")) {
5072 tmp
= PyObject_GetAttrString(obj
, "func");
5073 if (tmp
== NULL
) goto failed
;
5074 res
= obj2ast_expr(tmp
, &func
, arena
);
5075 if (res
!= 0) goto failed
;
5079 PyErr_SetString(PyExc_TypeError
, "required field \"func\" missing from Call");
5082 if (PyObject_HasAttrString(obj
, "args")) {
5086 tmp
= PyObject_GetAttrString(obj
, "args");
5087 if (tmp
== NULL
) goto failed
;
5088 if (!PyList_Check(tmp
)) {
5089 PyErr_Format(PyExc_TypeError
, "Call field \"args\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5092 len
= PyList_GET_SIZE(tmp
);
5093 args
= asdl_seq_new(len
, arena
);
5094 if (args
== NULL
) goto failed
;
5095 for (i
= 0; i
< len
; i
++) {
5097 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5098 if (res
!= 0) goto failed
;
5099 asdl_seq_SET(args
, i
, value
);
5104 PyErr_SetString(PyExc_TypeError
, "required field \"args\" missing from Call");
5107 if (PyObject_HasAttrString(obj
, "keywords")) {
5111 tmp
= PyObject_GetAttrString(obj
, "keywords");
5112 if (tmp
== NULL
) goto failed
;
5113 if (!PyList_Check(tmp
)) {
5114 PyErr_Format(PyExc_TypeError
, "Call field \"keywords\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5117 len
= PyList_GET_SIZE(tmp
);
5118 keywords
= asdl_seq_new(len
, arena
);
5119 if (keywords
== NULL
) goto failed
;
5120 for (i
= 0; i
< len
; i
++) {
5122 res
= obj2ast_keyword(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5123 if (res
!= 0) goto failed
;
5124 asdl_seq_SET(keywords
, i
, value
);
5129 PyErr_SetString(PyExc_TypeError
, "required field \"keywords\" missing from Call");
5132 if (PyObject_HasAttrString(obj
, "starargs")) {
5134 tmp
= PyObject_GetAttrString(obj
, "starargs");
5135 if (tmp
== NULL
) goto failed
;
5136 res
= obj2ast_expr(tmp
, &starargs
, arena
);
5137 if (res
!= 0) goto failed
;
5143 if (PyObject_HasAttrString(obj
, "kwargs")) {
5145 tmp
= PyObject_GetAttrString(obj
, "kwargs");
5146 if (tmp
== NULL
) goto failed
;
5147 res
= obj2ast_expr(tmp
, &kwargs
, arena
);
5148 if (res
!= 0) goto failed
;
5154 *out
= Call(func
, args
, keywords
, starargs
, kwargs
, lineno
,
5156 if (*out
== NULL
) goto failed
;
5159 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Repr_type
);
5160 if (isinstance
== -1) {
5166 if (PyObject_HasAttrString(obj
, "value")) {
5168 tmp
= PyObject_GetAttrString(obj
, "value");
5169 if (tmp
== NULL
) goto failed
;
5170 res
= obj2ast_expr(tmp
, &value
, arena
);
5171 if (res
!= 0) goto failed
;
5175 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Repr");
5178 *out
= Repr(value
, lineno
, col_offset
, arena
);
5179 if (*out
== NULL
) goto failed
;
5182 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Num_type
);
5183 if (isinstance
== -1) {
5189 if (PyObject_HasAttrString(obj
, "n")) {
5191 tmp
= PyObject_GetAttrString(obj
, "n");
5192 if (tmp
== NULL
) goto failed
;
5193 res
= obj2ast_object(tmp
, &n
, arena
);
5194 if (res
!= 0) goto failed
;
5198 PyErr_SetString(PyExc_TypeError
, "required field \"n\" missing from Num");
5201 *out
= Num(n
, lineno
, col_offset
, arena
);
5202 if (*out
== NULL
) goto failed
;
5205 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Str_type
);
5206 if (isinstance
== -1) {
5212 if (PyObject_HasAttrString(obj
, "s")) {
5214 tmp
= PyObject_GetAttrString(obj
, "s");
5215 if (tmp
== NULL
) goto failed
;
5216 res
= obj2ast_string(tmp
, &s
, arena
);
5217 if (res
!= 0) goto failed
;
5221 PyErr_SetString(PyExc_TypeError
, "required field \"s\" missing from Str");
5224 *out
= Str(s
, lineno
, col_offset
, arena
);
5225 if (*out
== NULL
) goto failed
;
5228 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Attribute_type
);
5229 if (isinstance
== -1) {
5235 expr_context_ty ctx
;
5237 if (PyObject_HasAttrString(obj
, "value")) {
5239 tmp
= PyObject_GetAttrString(obj
, "value");
5240 if (tmp
== NULL
) goto failed
;
5241 res
= obj2ast_expr(tmp
, &value
, arena
);
5242 if (res
!= 0) goto failed
;
5246 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Attribute");
5249 if (PyObject_HasAttrString(obj
, "attr")) {
5251 tmp
= PyObject_GetAttrString(obj
, "attr");
5252 if (tmp
== NULL
) goto failed
;
5253 res
= obj2ast_identifier(tmp
, &attr
, arena
);
5254 if (res
!= 0) goto failed
;
5258 PyErr_SetString(PyExc_TypeError
, "required field \"attr\" missing from Attribute");
5261 if (PyObject_HasAttrString(obj
, "ctx")) {
5263 tmp
= PyObject_GetAttrString(obj
, "ctx");
5264 if (tmp
== NULL
) goto failed
;
5265 res
= obj2ast_expr_context(tmp
, &ctx
, arena
);
5266 if (res
!= 0) goto failed
;
5270 PyErr_SetString(PyExc_TypeError
, "required field \"ctx\" missing from Attribute");
5273 *out
= Attribute(value
, attr
, ctx
, lineno
, col_offset
, arena
);
5274 if (*out
== NULL
) goto failed
;
5277 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Subscript_type
);
5278 if (isinstance
== -1) {
5284 expr_context_ty ctx
;
5286 if (PyObject_HasAttrString(obj
, "value")) {
5288 tmp
= PyObject_GetAttrString(obj
, "value");
5289 if (tmp
== NULL
) goto failed
;
5290 res
= obj2ast_expr(tmp
, &value
, arena
);
5291 if (res
!= 0) goto failed
;
5295 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Subscript");
5298 if (PyObject_HasAttrString(obj
, "slice")) {
5300 tmp
= PyObject_GetAttrString(obj
, "slice");
5301 if (tmp
== NULL
) goto failed
;
5302 res
= obj2ast_slice(tmp
, &slice
, arena
);
5303 if (res
!= 0) goto failed
;
5307 PyErr_SetString(PyExc_TypeError
, "required field \"slice\" missing from Subscript");
5310 if (PyObject_HasAttrString(obj
, "ctx")) {
5312 tmp
= PyObject_GetAttrString(obj
, "ctx");
5313 if (tmp
== NULL
) goto failed
;
5314 res
= obj2ast_expr_context(tmp
, &ctx
, arena
);
5315 if (res
!= 0) goto failed
;
5319 PyErr_SetString(PyExc_TypeError
, "required field \"ctx\" missing from Subscript");
5322 *out
= Subscript(value
, slice
, ctx
, lineno
, col_offset
, arena
);
5323 if (*out
== NULL
) goto failed
;
5326 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Name_type
);
5327 if (isinstance
== -1) {
5332 expr_context_ty ctx
;
5334 if (PyObject_HasAttrString(obj
, "id")) {
5336 tmp
= PyObject_GetAttrString(obj
, "id");
5337 if (tmp
== NULL
) goto failed
;
5338 res
= obj2ast_identifier(tmp
, &id
, arena
);
5339 if (res
!= 0) goto failed
;
5343 PyErr_SetString(PyExc_TypeError
, "required field \"id\" missing from Name");
5346 if (PyObject_HasAttrString(obj
, "ctx")) {
5348 tmp
= PyObject_GetAttrString(obj
, "ctx");
5349 if (tmp
== NULL
) goto failed
;
5350 res
= obj2ast_expr_context(tmp
, &ctx
, arena
);
5351 if (res
!= 0) goto failed
;
5355 PyErr_SetString(PyExc_TypeError
, "required field \"ctx\" missing from Name");
5358 *out
= Name(id
, ctx
, lineno
, col_offset
, arena
);
5359 if (*out
== NULL
) goto failed
;
5362 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)List_type
);
5363 if (isinstance
== -1) {
5368 expr_context_ty ctx
;
5370 if (PyObject_HasAttrString(obj
, "elts")) {
5374 tmp
= PyObject_GetAttrString(obj
, "elts");
5375 if (tmp
== NULL
) goto failed
;
5376 if (!PyList_Check(tmp
)) {
5377 PyErr_Format(PyExc_TypeError
, "List field \"elts\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5380 len
= PyList_GET_SIZE(tmp
);
5381 elts
= asdl_seq_new(len
, arena
);
5382 if (elts
== NULL
) goto failed
;
5383 for (i
= 0; i
< len
; i
++) {
5385 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5386 if (res
!= 0) goto failed
;
5387 asdl_seq_SET(elts
, i
, value
);
5392 PyErr_SetString(PyExc_TypeError
, "required field \"elts\" missing from List");
5395 if (PyObject_HasAttrString(obj
, "ctx")) {
5397 tmp
= PyObject_GetAttrString(obj
, "ctx");
5398 if (tmp
== NULL
) goto failed
;
5399 res
= obj2ast_expr_context(tmp
, &ctx
, arena
);
5400 if (res
!= 0) goto failed
;
5404 PyErr_SetString(PyExc_TypeError
, "required field \"ctx\" missing from List");
5407 *out
= List(elts
, ctx
, lineno
, col_offset
, arena
);
5408 if (*out
== NULL
) goto failed
;
5411 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Tuple_type
);
5412 if (isinstance
== -1) {
5417 expr_context_ty ctx
;
5419 if (PyObject_HasAttrString(obj
, "elts")) {
5423 tmp
= PyObject_GetAttrString(obj
, "elts");
5424 if (tmp
== NULL
) goto failed
;
5425 if (!PyList_Check(tmp
)) {
5426 PyErr_Format(PyExc_TypeError
, "Tuple field \"elts\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5429 len
= PyList_GET_SIZE(tmp
);
5430 elts
= asdl_seq_new(len
, arena
);
5431 if (elts
== NULL
) goto failed
;
5432 for (i
= 0; i
< len
; i
++) {
5434 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5435 if (res
!= 0) goto failed
;
5436 asdl_seq_SET(elts
, i
, value
);
5441 PyErr_SetString(PyExc_TypeError
, "required field \"elts\" missing from Tuple");
5444 if (PyObject_HasAttrString(obj
, "ctx")) {
5446 tmp
= PyObject_GetAttrString(obj
, "ctx");
5447 if (tmp
== NULL
) goto failed
;
5448 res
= obj2ast_expr_context(tmp
, &ctx
, arena
);
5449 if (res
!= 0) goto failed
;
5453 PyErr_SetString(PyExc_TypeError
, "required field \"ctx\" missing from Tuple");
5456 *out
= Tuple(elts
, ctx
, lineno
, col_offset
, arena
);
5457 if (*out
== NULL
) goto failed
;
5461 tmp
= PyObject_Repr(obj
);
5462 if (tmp
== NULL
) goto failed
;
5463 PyErr_Format(PyExc_TypeError
, "expected some sort of expr, but got %.400s", PyString_AS_STRING(tmp
));
5470 obj2ast_expr_context(PyObject
* obj
, expr_context_ty
* out
, PyArena
* arena
)
5472 PyObject
* tmp
= NULL
;
5475 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Load_type
);
5476 if (isinstance
== -1) {
5483 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Store_type
);
5484 if (isinstance
== -1) {
5491 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Del_type
);
5492 if (isinstance
== -1) {
5499 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)AugLoad_type
);
5500 if (isinstance
== -1) {
5507 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)AugStore_type
);
5508 if (isinstance
== -1) {
5515 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Param_type
);
5516 if (isinstance
== -1) {
5524 tmp
= PyObject_Repr(obj
);
5525 if (tmp
== NULL
) goto failed
;
5526 PyErr_Format(PyExc_TypeError
, "expected some sort of expr_context, but got %.400s", PyString_AS_STRING(tmp
));
5533 obj2ast_slice(PyObject
* obj
, slice_ty
* out
, PyArena
* arena
)
5535 PyObject
* tmp
= NULL
;
5539 if (obj
== Py_None
) {
5543 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Ellipsis_type
);
5544 if (isinstance
== -1) {
5549 *out
= Ellipsis(arena
);
5550 if (*out
== NULL
) goto failed
;
5553 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Slice_type
);
5554 if (isinstance
== -1) {
5562 if (PyObject_HasAttrString(obj
, "lower")) {
5564 tmp
= PyObject_GetAttrString(obj
, "lower");
5565 if (tmp
== NULL
) goto failed
;
5566 res
= obj2ast_expr(tmp
, &lower
, arena
);
5567 if (res
!= 0) goto failed
;
5573 if (PyObject_HasAttrString(obj
, "upper")) {
5575 tmp
= PyObject_GetAttrString(obj
, "upper");
5576 if (tmp
== NULL
) goto failed
;
5577 res
= obj2ast_expr(tmp
, &upper
, arena
);
5578 if (res
!= 0) goto failed
;
5584 if (PyObject_HasAttrString(obj
, "step")) {
5586 tmp
= PyObject_GetAttrString(obj
, "step");
5587 if (tmp
== NULL
) goto failed
;
5588 res
= obj2ast_expr(tmp
, &step
, arena
);
5589 if (res
!= 0) goto failed
;
5595 *out
= Slice(lower
, upper
, step
, arena
);
5596 if (*out
== NULL
) goto failed
;
5599 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)ExtSlice_type
);
5600 if (isinstance
== -1) {
5606 if (PyObject_HasAttrString(obj
, "dims")) {
5610 tmp
= PyObject_GetAttrString(obj
, "dims");
5611 if (tmp
== NULL
) goto failed
;
5612 if (!PyList_Check(tmp
)) {
5613 PyErr_Format(PyExc_TypeError
, "ExtSlice field \"dims\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5616 len
= PyList_GET_SIZE(tmp
);
5617 dims
= asdl_seq_new(len
, arena
);
5618 if (dims
== NULL
) goto failed
;
5619 for (i
= 0; i
< len
; i
++) {
5621 res
= obj2ast_slice(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5622 if (res
!= 0) goto failed
;
5623 asdl_seq_SET(dims
, i
, value
);
5628 PyErr_SetString(PyExc_TypeError
, "required field \"dims\" missing from ExtSlice");
5631 *out
= ExtSlice(dims
, arena
);
5632 if (*out
== NULL
) goto failed
;
5635 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Index_type
);
5636 if (isinstance
== -1) {
5642 if (PyObject_HasAttrString(obj
, "value")) {
5644 tmp
= PyObject_GetAttrString(obj
, "value");
5645 if (tmp
== NULL
) goto failed
;
5646 res
= obj2ast_expr(tmp
, &value
, arena
);
5647 if (res
!= 0) goto failed
;
5651 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from Index");
5654 *out
= Index(value
, arena
);
5655 if (*out
== NULL
) goto failed
;
5659 tmp
= PyObject_Repr(obj
);
5660 if (tmp
== NULL
) goto failed
;
5661 PyErr_Format(PyExc_TypeError
, "expected some sort of slice, but got %.400s", PyString_AS_STRING(tmp
));
5668 obj2ast_boolop(PyObject
* obj
, boolop_ty
* out
, PyArena
* arena
)
5670 PyObject
* tmp
= NULL
;
5673 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)And_type
);
5674 if (isinstance
== -1) {
5681 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Or_type
);
5682 if (isinstance
== -1) {
5690 tmp
= PyObject_Repr(obj
);
5691 if (tmp
== NULL
) goto failed
;
5692 PyErr_Format(PyExc_TypeError
, "expected some sort of boolop, but got %.400s", PyString_AS_STRING(tmp
));
5699 obj2ast_operator(PyObject
* obj
, operator_ty
* out
, PyArena
* arena
)
5701 PyObject
* tmp
= NULL
;
5704 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Add_type
);
5705 if (isinstance
== -1) {
5712 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Sub_type
);
5713 if (isinstance
== -1) {
5720 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Mult_type
);
5721 if (isinstance
== -1) {
5728 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Div_type
);
5729 if (isinstance
== -1) {
5736 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Mod_type
);
5737 if (isinstance
== -1) {
5744 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Pow_type
);
5745 if (isinstance
== -1) {
5752 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)LShift_type
);
5753 if (isinstance
== -1) {
5760 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)RShift_type
);
5761 if (isinstance
== -1) {
5768 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)BitOr_type
);
5769 if (isinstance
== -1) {
5776 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)BitXor_type
);
5777 if (isinstance
== -1) {
5784 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)BitAnd_type
);
5785 if (isinstance
== -1) {
5792 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)FloorDiv_type
);
5793 if (isinstance
== -1) {
5801 tmp
= PyObject_Repr(obj
);
5802 if (tmp
== NULL
) goto failed
;
5803 PyErr_Format(PyExc_TypeError
, "expected some sort of operator, but got %.400s", PyString_AS_STRING(tmp
));
5810 obj2ast_unaryop(PyObject
* obj
, unaryop_ty
* out
, PyArena
* arena
)
5812 PyObject
* tmp
= NULL
;
5815 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Invert_type
);
5816 if (isinstance
== -1) {
5823 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Not_type
);
5824 if (isinstance
== -1) {
5831 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)UAdd_type
);
5832 if (isinstance
== -1) {
5839 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)USub_type
);
5840 if (isinstance
== -1) {
5848 tmp
= PyObject_Repr(obj
);
5849 if (tmp
== NULL
) goto failed
;
5850 PyErr_Format(PyExc_TypeError
, "expected some sort of unaryop, but got %.400s", PyString_AS_STRING(tmp
));
5857 obj2ast_cmpop(PyObject
* obj
, cmpop_ty
* out
, PyArena
* arena
)
5859 PyObject
* tmp
= NULL
;
5862 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Eq_type
);
5863 if (isinstance
== -1) {
5870 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)NotEq_type
);
5871 if (isinstance
== -1) {
5878 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Lt_type
);
5879 if (isinstance
== -1) {
5886 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)LtE_type
);
5887 if (isinstance
== -1) {
5894 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Gt_type
);
5895 if (isinstance
== -1) {
5902 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)GtE_type
);
5903 if (isinstance
== -1) {
5910 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)Is_type
);
5911 if (isinstance
== -1) {
5918 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)IsNot_type
);
5919 if (isinstance
== -1) {
5926 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)In_type
);
5927 if (isinstance
== -1) {
5934 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)NotIn_type
);
5935 if (isinstance
== -1) {
5943 tmp
= PyObject_Repr(obj
);
5944 if (tmp
== NULL
) goto failed
;
5945 PyErr_Format(PyExc_TypeError
, "expected some sort of cmpop, but got %.400s", PyString_AS_STRING(tmp
));
5952 obj2ast_comprehension(PyObject
* obj
, comprehension_ty
* out
, PyArena
* arena
)
5954 PyObject
* tmp
= NULL
;
5959 if (PyObject_HasAttrString(obj
, "target")) {
5961 tmp
= PyObject_GetAttrString(obj
, "target");
5962 if (tmp
== NULL
) goto failed
;
5963 res
= obj2ast_expr(tmp
, &target
, arena
);
5964 if (res
!= 0) goto failed
;
5968 PyErr_SetString(PyExc_TypeError
, "required field \"target\" missing from comprehension");
5971 if (PyObject_HasAttrString(obj
, "iter")) {
5973 tmp
= PyObject_GetAttrString(obj
, "iter");
5974 if (tmp
== NULL
) goto failed
;
5975 res
= obj2ast_expr(tmp
, &iter
, arena
);
5976 if (res
!= 0) goto failed
;
5980 PyErr_SetString(PyExc_TypeError
, "required field \"iter\" missing from comprehension");
5983 if (PyObject_HasAttrString(obj
, "ifs")) {
5987 tmp
= PyObject_GetAttrString(obj
, "ifs");
5988 if (tmp
== NULL
) goto failed
;
5989 if (!PyList_Check(tmp
)) {
5990 PyErr_Format(PyExc_TypeError
, "comprehension field \"ifs\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
5993 len
= PyList_GET_SIZE(tmp
);
5994 ifs
= asdl_seq_new(len
, arena
);
5995 if (ifs
== NULL
) goto failed
;
5996 for (i
= 0; i
< len
; i
++) {
5998 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
5999 if (res
!= 0) goto failed
;
6000 asdl_seq_SET(ifs
, i
, value
);
6005 PyErr_SetString(PyExc_TypeError
, "required field \"ifs\" missing from comprehension");
6008 *out
= comprehension(target
, iter
, ifs
, arena
);
6016 obj2ast_excepthandler(PyObject
* obj
, excepthandler_ty
* out
, PyArena
* arena
)
6018 PyObject
* tmp
= NULL
;
6024 if (obj
== Py_None
) {
6028 if (PyObject_HasAttrString(obj
, "lineno")) {
6030 tmp
= PyObject_GetAttrString(obj
, "lineno");
6031 if (tmp
== NULL
) goto failed
;
6032 res
= obj2ast_int(tmp
, &lineno
, arena
);
6033 if (res
!= 0) goto failed
;
6037 PyErr_SetString(PyExc_TypeError
, "required field \"lineno\" missing from excepthandler");
6040 if (PyObject_HasAttrString(obj
, "col_offset")) {
6042 tmp
= PyObject_GetAttrString(obj
, "col_offset");
6043 if (tmp
== NULL
) goto failed
;
6044 res
= obj2ast_int(tmp
, &col_offset
, arena
);
6045 if (res
!= 0) goto failed
;
6049 PyErr_SetString(PyExc_TypeError
, "required field \"col_offset\" missing from excepthandler");
6052 isinstance
= PyObject_IsInstance(obj
, (PyObject
*)ExceptHandler_type
);
6053 if (isinstance
== -1) {
6061 if (PyObject_HasAttrString(obj
, "type")) {
6063 tmp
= PyObject_GetAttrString(obj
, "type");
6064 if (tmp
== NULL
) goto failed
;
6065 res
= obj2ast_expr(tmp
, &type
, arena
);
6066 if (res
!= 0) goto failed
;
6072 if (PyObject_HasAttrString(obj
, "name")) {
6074 tmp
= PyObject_GetAttrString(obj
, "name");
6075 if (tmp
== NULL
) goto failed
;
6076 res
= obj2ast_expr(tmp
, &name
, arena
);
6077 if (res
!= 0) goto failed
;
6083 if (PyObject_HasAttrString(obj
, "body")) {
6087 tmp
= PyObject_GetAttrString(obj
, "body");
6088 if (tmp
== NULL
) goto failed
;
6089 if (!PyList_Check(tmp
)) {
6090 PyErr_Format(PyExc_TypeError
, "ExceptHandler field \"body\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
6093 len
= PyList_GET_SIZE(tmp
);
6094 body
= asdl_seq_new(len
, arena
);
6095 if (body
== NULL
) goto failed
;
6096 for (i
= 0; i
< len
; i
++) {
6098 res
= obj2ast_stmt(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
6099 if (res
!= 0) goto failed
;
6100 asdl_seq_SET(body
, i
, value
);
6105 PyErr_SetString(PyExc_TypeError
, "required field \"body\" missing from ExceptHandler");
6108 *out
= ExceptHandler(type
, name
, body
, lineno
, col_offset
,
6110 if (*out
== NULL
) goto failed
;
6114 tmp
= PyObject_Repr(obj
);
6115 if (tmp
== NULL
) goto failed
;
6116 PyErr_Format(PyExc_TypeError
, "expected some sort of excepthandler, but got %.400s", PyString_AS_STRING(tmp
));
6123 obj2ast_arguments(PyObject
* obj
, arguments_ty
* out
, PyArena
* arena
)
6125 PyObject
* tmp
= NULL
;
6131 if (PyObject_HasAttrString(obj
, "args")) {
6135 tmp
= PyObject_GetAttrString(obj
, "args");
6136 if (tmp
== NULL
) goto failed
;
6137 if (!PyList_Check(tmp
)) {
6138 PyErr_Format(PyExc_TypeError
, "arguments field \"args\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
6141 len
= PyList_GET_SIZE(tmp
);
6142 args
= asdl_seq_new(len
, arena
);
6143 if (args
== NULL
) goto failed
;
6144 for (i
= 0; i
< len
; i
++) {
6146 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
6147 if (res
!= 0) goto failed
;
6148 asdl_seq_SET(args
, i
, value
);
6153 PyErr_SetString(PyExc_TypeError
, "required field \"args\" missing from arguments");
6156 if (PyObject_HasAttrString(obj
, "vararg")) {
6158 tmp
= PyObject_GetAttrString(obj
, "vararg");
6159 if (tmp
== NULL
) goto failed
;
6160 res
= obj2ast_identifier(tmp
, &vararg
, arena
);
6161 if (res
!= 0) goto failed
;
6167 if (PyObject_HasAttrString(obj
, "kwarg")) {
6169 tmp
= PyObject_GetAttrString(obj
, "kwarg");
6170 if (tmp
== NULL
) goto failed
;
6171 res
= obj2ast_identifier(tmp
, &kwarg
, arena
);
6172 if (res
!= 0) goto failed
;
6178 if (PyObject_HasAttrString(obj
, "defaults")) {
6182 tmp
= PyObject_GetAttrString(obj
, "defaults");
6183 if (tmp
== NULL
) goto failed
;
6184 if (!PyList_Check(tmp
)) {
6185 PyErr_Format(PyExc_TypeError
, "arguments field \"defaults\" must be a list, not a %.200s", tmp
->ob_type
->tp_name
);
6188 len
= PyList_GET_SIZE(tmp
);
6189 defaults
= asdl_seq_new(len
, arena
);
6190 if (defaults
== NULL
) goto failed
;
6191 for (i
= 0; i
< len
; i
++) {
6193 res
= obj2ast_expr(PyList_GET_ITEM(tmp
, i
), &value
, arena
);
6194 if (res
!= 0) goto failed
;
6195 asdl_seq_SET(defaults
, i
, value
);
6200 PyErr_SetString(PyExc_TypeError
, "required field \"defaults\" missing from arguments");
6203 *out
= arguments(args
, vararg
, kwarg
, defaults
, arena
);
6211 obj2ast_keyword(PyObject
* obj
, keyword_ty
* out
, PyArena
* arena
)
6213 PyObject
* tmp
= NULL
;
6217 if (PyObject_HasAttrString(obj
, "arg")) {
6219 tmp
= PyObject_GetAttrString(obj
, "arg");
6220 if (tmp
== NULL
) goto failed
;
6221 res
= obj2ast_identifier(tmp
, &arg
, arena
);
6222 if (res
!= 0) goto failed
;
6226 PyErr_SetString(PyExc_TypeError
, "required field \"arg\" missing from keyword");
6229 if (PyObject_HasAttrString(obj
, "value")) {
6231 tmp
= PyObject_GetAttrString(obj
, "value");
6232 if (tmp
== NULL
) goto failed
;
6233 res
= obj2ast_expr(tmp
, &value
, arena
);
6234 if (res
!= 0) goto failed
;
6238 PyErr_SetString(PyExc_TypeError
, "required field \"value\" missing from keyword");
6241 *out
= keyword(arg
, value
, arena
);
6249 obj2ast_alias(PyObject
* obj
, alias_ty
* out
, PyArena
* arena
)
6251 PyObject
* tmp
= NULL
;
6255 if (PyObject_HasAttrString(obj
, "name")) {
6257 tmp
= PyObject_GetAttrString(obj
, "name");
6258 if (tmp
== NULL
) goto failed
;
6259 res
= obj2ast_identifier(tmp
, &name
, arena
);
6260 if (res
!= 0) goto failed
;
6264 PyErr_SetString(PyExc_TypeError
, "required field \"name\" missing from alias");
6267 if (PyObject_HasAttrString(obj
, "asname")) {
6269 tmp
= PyObject_GetAttrString(obj
, "asname");
6270 if (tmp
== NULL
) goto failed
;
6271 res
= obj2ast_identifier(tmp
, &asname
, arena
);
6272 if (res
!= 0) goto failed
;
6278 *out
= alias(name
, asname
, arena
);
6290 if (!init_types()) return;
6291 m
= Py_InitModule3("_ast", NULL
, NULL
);
6293 d
= PyModule_GetDict(m
);
6294 if (PyDict_SetItemString(d
, "AST", (PyObject
*)&AST_type
) < 0) return;
6295 if (PyModule_AddIntConstant(m
, "PyCF_ONLY_AST", PyCF_ONLY_AST
) < 0)
6297 if (PyModule_AddStringConstant(m
, "__version__", "73421") < 0)
6299 if (PyDict_SetItemString(d
, "mod", (PyObject
*)mod_type
) < 0) return;
6300 if (PyDict_SetItemString(d
, "Module", (PyObject
*)Module_type
) < 0)
6302 if (PyDict_SetItemString(d
, "Interactive", (PyObject
*)Interactive_type
)
6304 if (PyDict_SetItemString(d
, "Expression", (PyObject
*)Expression_type
) <
6306 if (PyDict_SetItemString(d
, "Suite", (PyObject
*)Suite_type
) < 0) return;
6307 if (PyDict_SetItemString(d
, "stmt", (PyObject
*)stmt_type
) < 0) return;
6308 if (PyDict_SetItemString(d
, "FunctionDef", (PyObject
*)FunctionDef_type
)
6310 if (PyDict_SetItemString(d
, "ClassDef", (PyObject
*)ClassDef_type
) < 0)
6312 if (PyDict_SetItemString(d
, "Return", (PyObject
*)Return_type
) < 0)
6314 if (PyDict_SetItemString(d
, "Delete", (PyObject
*)Delete_type
) < 0)
6316 if (PyDict_SetItemString(d
, "Assign", (PyObject
*)Assign_type
) < 0)
6318 if (PyDict_SetItemString(d
, "AugAssign", (PyObject
*)AugAssign_type
) <
6320 if (PyDict_SetItemString(d
, "Print", (PyObject
*)Print_type
) < 0) return;
6321 if (PyDict_SetItemString(d
, "For", (PyObject
*)For_type
) < 0) return;
6322 if (PyDict_SetItemString(d
, "While", (PyObject
*)While_type
) < 0) return;
6323 if (PyDict_SetItemString(d
, "If", (PyObject
*)If_type
) < 0) return;
6324 if (PyDict_SetItemString(d
, "With", (PyObject
*)With_type
) < 0) return;
6325 if (PyDict_SetItemString(d
, "Raise", (PyObject
*)Raise_type
) < 0) return;
6326 if (PyDict_SetItemString(d
, "TryExcept", (PyObject
*)TryExcept_type
) <
6328 if (PyDict_SetItemString(d
, "TryFinally", (PyObject
*)TryFinally_type
) <
6330 if (PyDict_SetItemString(d
, "Assert", (PyObject
*)Assert_type
) < 0)
6332 if (PyDict_SetItemString(d
, "Import", (PyObject
*)Import_type
) < 0)
6334 if (PyDict_SetItemString(d
, "ImportFrom", (PyObject
*)ImportFrom_type
) <
6336 if (PyDict_SetItemString(d
, "Exec", (PyObject
*)Exec_type
) < 0) return;
6337 if (PyDict_SetItemString(d
, "Global", (PyObject
*)Global_type
) < 0)
6339 if (PyDict_SetItemString(d
, "Expr", (PyObject
*)Expr_type
) < 0) return;
6340 if (PyDict_SetItemString(d
, "Pass", (PyObject
*)Pass_type
) < 0) return;
6341 if (PyDict_SetItemString(d
, "Break", (PyObject
*)Break_type
) < 0) return;
6342 if (PyDict_SetItemString(d
, "Continue", (PyObject
*)Continue_type
) < 0)
6344 if (PyDict_SetItemString(d
, "expr", (PyObject
*)expr_type
) < 0) return;
6345 if (PyDict_SetItemString(d
, "BoolOp", (PyObject
*)BoolOp_type
) < 0)
6347 if (PyDict_SetItemString(d
, "BinOp", (PyObject
*)BinOp_type
) < 0) return;
6348 if (PyDict_SetItemString(d
, "UnaryOp", (PyObject
*)UnaryOp_type
) < 0)
6350 if (PyDict_SetItemString(d
, "Lambda", (PyObject
*)Lambda_type
) < 0)
6352 if (PyDict_SetItemString(d
, "IfExp", (PyObject
*)IfExp_type
) < 0) return;
6353 if (PyDict_SetItemString(d
, "Dict", (PyObject
*)Dict_type
) < 0) return;
6354 if (PyDict_SetItemString(d
, "ListComp", (PyObject
*)ListComp_type
) < 0)
6356 if (PyDict_SetItemString(d
, "GeneratorExp",
6357 (PyObject
*)GeneratorExp_type
) < 0) return;
6358 if (PyDict_SetItemString(d
, "Yield", (PyObject
*)Yield_type
) < 0) return;
6359 if (PyDict_SetItemString(d
, "Compare", (PyObject
*)Compare_type
) < 0)
6361 if (PyDict_SetItemString(d
, "Call", (PyObject
*)Call_type
) < 0) return;
6362 if (PyDict_SetItemString(d
, "Repr", (PyObject
*)Repr_type
) < 0) return;
6363 if (PyDict_SetItemString(d
, "Num", (PyObject
*)Num_type
) < 0) return;
6364 if (PyDict_SetItemString(d
, "Str", (PyObject
*)Str_type
) < 0) return;
6365 if (PyDict_SetItemString(d
, "Attribute", (PyObject
*)Attribute_type
) <
6367 if (PyDict_SetItemString(d
, "Subscript", (PyObject
*)Subscript_type
) <
6369 if (PyDict_SetItemString(d
, "Name", (PyObject
*)Name_type
) < 0) return;
6370 if (PyDict_SetItemString(d
, "List", (PyObject
*)List_type
) < 0) return;
6371 if (PyDict_SetItemString(d
, "Tuple", (PyObject
*)Tuple_type
) < 0) return;
6372 if (PyDict_SetItemString(d
, "expr_context",
6373 (PyObject
*)expr_context_type
) < 0) return;
6374 if (PyDict_SetItemString(d
, "Load", (PyObject
*)Load_type
) < 0) return;
6375 if (PyDict_SetItemString(d
, "Store", (PyObject
*)Store_type
) < 0) return;
6376 if (PyDict_SetItemString(d
, "Del", (PyObject
*)Del_type
) < 0) return;
6377 if (PyDict_SetItemString(d
, "AugLoad", (PyObject
*)AugLoad_type
) < 0)
6379 if (PyDict_SetItemString(d
, "AugStore", (PyObject
*)AugStore_type
) < 0)
6381 if (PyDict_SetItemString(d
, "Param", (PyObject
*)Param_type
) < 0) return;
6382 if (PyDict_SetItemString(d
, "slice", (PyObject
*)slice_type
) < 0) return;
6383 if (PyDict_SetItemString(d
, "Ellipsis", (PyObject
*)Ellipsis_type
) < 0)
6385 if (PyDict_SetItemString(d
, "Slice", (PyObject
*)Slice_type
) < 0) return;
6386 if (PyDict_SetItemString(d
, "ExtSlice", (PyObject
*)ExtSlice_type
) < 0)
6388 if (PyDict_SetItemString(d
, "Index", (PyObject
*)Index_type
) < 0) return;
6389 if (PyDict_SetItemString(d
, "boolop", (PyObject
*)boolop_type
) < 0)
6391 if (PyDict_SetItemString(d
, "And", (PyObject
*)And_type
) < 0) return;
6392 if (PyDict_SetItemString(d
, "Or", (PyObject
*)Or_type
) < 0) return;
6393 if (PyDict_SetItemString(d
, "operator", (PyObject
*)operator_type
) < 0)
6395 if (PyDict_SetItemString(d
, "Add", (PyObject
*)Add_type
) < 0) return;
6396 if (PyDict_SetItemString(d
, "Sub", (PyObject
*)Sub_type
) < 0) return;
6397 if (PyDict_SetItemString(d
, "Mult", (PyObject
*)Mult_type
) < 0) return;
6398 if (PyDict_SetItemString(d
, "Div", (PyObject
*)Div_type
) < 0) return;
6399 if (PyDict_SetItemString(d
, "Mod", (PyObject
*)Mod_type
) < 0) return;
6400 if (PyDict_SetItemString(d
, "Pow", (PyObject
*)Pow_type
) < 0) return;
6401 if (PyDict_SetItemString(d
, "LShift", (PyObject
*)LShift_type
) < 0)
6403 if (PyDict_SetItemString(d
, "RShift", (PyObject
*)RShift_type
) < 0)
6405 if (PyDict_SetItemString(d
, "BitOr", (PyObject
*)BitOr_type
) < 0) return;
6406 if (PyDict_SetItemString(d
, "BitXor", (PyObject
*)BitXor_type
) < 0)
6408 if (PyDict_SetItemString(d
, "BitAnd", (PyObject
*)BitAnd_type
) < 0)
6410 if (PyDict_SetItemString(d
, "FloorDiv", (PyObject
*)FloorDiv_type
) < 0)
6412 if (PyDict_SetItemString(d
, "unaryop", (PyObject
*)unaryop_type
) < 0)
6414 if (PyDict_SetItemString(d
, "Invert", (PyObject
*)Invert_type
) < 0)
6416 if (PyDict_SetItemString(d
, "Not", (PyObject
*)Not_type
) < 0) return;
6417 if (PyDict_SetItemString(d
, "UAdd", (PyObject
*)UAdd_type
) < 0) return;
6418 if (PyDict_SetItemString(d
, "USub", (PyObject
*)USub_type
) < 0) return;
6419 if (PyDict_SetItemString(d
, "cmpop", (PyObject
*)cmpop_type
) < 0) return;
6420 if (PyDict_SetItemString(d
, "Eq", (PyObject
*)Eq_type
) < 0) return;
6421 if (PyDict_SetItemString(d
, "NotEq", (PyObject
*)NotEq_type
) < 0) return;
6422 if (PyDict_SetItemString(d
, "Lt", (PyObject
*)Lt_type
) < 0) return;
6423 if (PyDict_SetItemString(d
, "LtE", (PyObject
*)LtE_type
) < 0) return;
6424 if (PyDict_SetItemString(d
, "Gt", (PyObject
*)Gt_type
) < 0) return;
6425 if (PyDict_SetItemString(d
, "GtE", (PyObject
*)GtE_type
) < 0) return;
6426 if (PyDict_SetItemString(d
, "Is", (PyObject
*)Is_type
) < 0) return;
6427 if (PyDict_SetItemString(d
, "IsNot", (PyObject
*)IsNot_type
) < 0) return;
6428 if (PyDict_SetItemString(d
, "In", (PyObject
*)In_type
) < 0) return;
6429 if (PyDict_SetItemString(d
, "NotIn", (PyObject
*)NotIn_type
) < 0) return;
6430 if (PyDict_SetItemString(d
, "comprehension",
6431 (PyObject
*)comprehension_type
) < 0) return;
6432 if (PyDict_SetItemString(d
, "excepthandler",
6433 (PyObject
*)excepthandler_type
) < 0) return;
6434 if (PyDict_SetItemString(d
, "ExceptHandler",
6435 (PyObject
*)ExceptHandler_type
) < 0) return;
6436 if (PyDict_SetItemString(d
, "arguments", (PyObject
*)arguments_type
) <
6438 if (PyDict_SetItemString(d
, "keyword", (PyObject
*)keyword_type
) < 0)
6440 if (PyDict_SetItemString(d
, "alias", (PyObject
*)alias_type
) < 0) return;
6444 PyObject
* PyAST_mod2obj(mod_ty t
)
6447 return ast2obj_mod(t
);
6450 /* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
6451 mod_ty
PyAST_obj2mod(PyObject
* ast
, PyArena
* arena
, int mode
)
6454 PyObject
*req_type
[] = {(PyObject
*)Module_type
, (PyObject
*)Expression_type
,
6455 (PyObject
*)Interactive_type
};
6456 char *req_name
[] = {"Module", "Expression", "Interactive"};
6458 assert(0 <= mode
&& mode
<= 2);
6462 isinstance
= PyObject_IsInstance(ast
, req_type
[mode
]);
6463 if (isinstance
== -1)
6466 PyErr_Format(PyExc_TypeError
, "expected %s node, got %.400s",
6467 req_name
[mode
], Py_TYPE(ast
)->tp_name
);
6470 if (obj2ast_mod(ast
, &res
, arena
) != 0)
6476 int PyAST_Check(PyObject
* obj
)
6479 return PyObject_IsInstance(obj
, (PyObject
*)&AST_type
);