Home | History | Annotate | Download | only in Parser

Lines Matching refs:emit

89     def emit(self, s, depth, reflow=True):

122 self.emit(s, depth)
123 self.emit("", depth)
128 self.emit(s, depth)
129 self.emit("", depth)
134 self.emit(s, depth)
135 self.emit("", depth)
153 def emit(s, depth=depth):
154 self.emit(s % sys._getframe(1).f_locals, depth)
160 emit("enum _%(name)s_kind {" + ", ".join(enum) + "};")
162 emit("struct _%(name)s {")
163 emit("enum _%(name)s_kind kind;", depth + 1)
164 emit("union {", depth + 1)
167 emit("} v;", depth + 1)
172 emit("%s %s;" % (type, field.name), depth + 1);
173 emit("};")
174 emit("")
178 self.emit("struct {", depth)
181 self.emit("} %s;" % cons.name, depth)
182 self.emit("", depth)
194 self.emit("asdl_int_seq *%(name)s;" % locals(), depth)
196 self.emit("asdl_seq *%(name)s;" % locals(), depth)
198 self.emit("%(ctype)s %(name)s;" % locals(), depth)
201 self.emit("struct _%(name)s {" % locals(), depth)
204 self.emit("};", depth)
205 self.emit("", depth)
269 self.emit("#define %s(%s) _Py_%s(%s)" % (name, margs, name, margs), 0,
271 self.emit("%s _Py_%s(%s);" % (ctype, name, argstr), False)
282 def emit(s, depth=0, reflow=True):
283 self.emit(s, depth, reflow)
290 self.emit("%s" % ctype, 0)
291 emit("%s(%s)" % (name, argstr))
292 emit("{")
293 emit("%s p;" % ctype, 1)
297 emit("if (!%s) {" % argname, 1)
298 emit("PyErr_SetString(PyExc_ValueError,", 2)
300 emit(' "%s");' % msg,
302 emit('return NULL;', 2)
303 emit('}', 1)
305 emit("p = (%s)PyArena_Malloc(arena, sizeof(*p));" % ctype, 1);
306 emit("if (!p)", 1)
307 emit("return NULL;", 2)
312 emit("return p;", 1)
313 emit("}")
314 emit("")
317 def emit(s, depth=0, reflow=True):
318 self.emit(s, depth, reflow)
319 emit("p->kind = %s_kind;" % name, 1)
321 emit("p->v.%s.%s = %s;" % (name, argname, argname), 1)
323 emit("p->%s = %s;" % (argname, argname), 1)
326 def emit(s, depth=0, reflow=True):
327 self.emit(s, depth, reflow)
329 emit("p->%s = %s;" % (argname, argname), 1)
358 self.emit(code % (name, get_c_type(name)), 0)
366 self.emit("int", 0)
367 self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
368 self.emit("{", 0)
369 self.emit("PyObject* tmp = NULL;", 1)
370 self.emit("int isinstance;", 1)
371 self.emit("", 0)
374 self.emit("", 0)
375 self.emit("tmp = PyObject_Repr(obj);", 1)
377 self.emit("if (tmp == NULL) goto failed;", 1)
380 self.emit(format % error, 1, reflow=False)
381 self.emit("failed:", 0)
382 self.emit("Py_XDECREF(tmp);", 1)
383 self.emit("return 1;", 1)
384 self.emit("}", 0)
385 self.emit("", 0)
392 self.emit(line % (t.name,), 1)
393 self.emit("if (isinstance == -1) {", 1)
394 self.emit("return 1;", 2)
395 self.emit("}", 1)
396 self.emit("if (isinstance) {", 1)
397 self.emit("*out = %s;" % t.name, 2)
398 self.emit("return 0;", 2)
399 self.emit("}", 1)
409 self.emit("", 0)
411 self.emit("if (obj == Py_None) {", 1)
412 self.emit("*out = NULL;", 2)
413 self.emit("return 0;", 2)
414 self.emit("}", 1)
419 self.emit(line % (t.name,), 1)
420 self.emit("if (isinstance == -1) {", 1)
421 self.emit("return 1;", 2)
422 self.emit("}", 1)
423 self.emit("if (isinstance) {", 1)
426 self.emit("", 0)
430 self.emit("*out = %s(%s);" % (t.name, self.buildArgs(args)), 2)
431 self.emit("if (*out == NULL) goto failed;", 2)
432 self.emit("return 0;", 2)
433 self.emit("}", 1)
438 self.emit("%s %s;" % (ctype, a.name), 1)
448 self.emit("int", 0)
449 self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
450 self.emit("{", 0)
451 self.emit("PyObject* tmp = NULL;", 1)
454 self.emit("", 0)
458 self.emit("*out = %s(%s);" % (name, self.buildArgs(args)), 1)
459 self.emit("return 0;", 1)
460 self.emit("failed:", 0)
461 self.emit("Py_XDECREF(tmp);", 1)
462 self.emit("return 1;", 1)
463 self.emit("}", 0)
464 self.emit("", 0)
470 self.emit("asdl_int_seq* %s;" % field.name, depth)
472 self.emit("asdl_seq* %s;" % field.name, depth)
475 self.emit("%s %s;" % (ctype, field.name), depth)
490 self.emit("if (PyObject_HasAttrString(obj, \"%s\")) {" % field.name, depth)
491 self.emit("int res;", depth+1)
493 self.emit("Py_ssize_t len;", depth+1)
494 self.emit("Py_ssize_t i;", depth+1)
495 self.emit("tmp = PyObject_GetAttrString(obj, \"%s\");" % field.name, depth+1)
496 self.emit("if (tmp == NULL) goto failed;", depth+1)
498 self.emit("if (!PyList_Check(tmp)) {", depth+1)
499 self.emit("PyErr_Format(PyExc_TypeError, \"%s field \\\"%s\\\" must "
503 self.emit("goto failed;", depth+2)
504 self.emit("}", depth+1)
505 self.emit("len = PyList_GET_SIZE(tmp);", depth+1)
507 self.emit("%s = asdl_int_seq_new(len, arena);" % field.name, depth+1)
509 self.emit("%s = asdl_seq_new(len, arena);" % field.name, depth+1)
510 self.emit("if (%s == NULL) goto failed;" % field.name, depth+1)
511 self.emit("for (i = 0; i < len; i++) {", depth+1)
512 self.emit("%s value;" % ctype, depth+2)
513 self.emit("res = obj2ast_%s(PyList_GET_ITEM(tmp, i), &value, arena);" %
515 self.emit("if (res != 0) goto failed;", depth+2)
516 self.emit("asdl_seq_SET(%s, i, value);" % field.name, depth+2)
517 self.emit("}", depth+1)
519 self.emit("res = obj2ast_%s(tmp, &%s, arena);" %
521 self.emit("if (res != 0) goto failed;", depth+1)
523 self.emit("Py_XDECREF(tmp);", depth+1)
524 self.emit("tmp = NULL;", depth+1)
525 self.emit("} else {", depth)
529 self.emit(format % message, depth+1, reflow=False)
530 self.emit("return 1;", depth+1)
533 self.emit("%s = 0;" % field.name, depth+1)
535 self.emit("%s = NULL;" % field.name, depth+1)
538 self.emit("}", depth)
545 self.emit("static int marshal_write_%s(PyObject **, int *, %s);"
554 self.emit("static PyTypeObject *%s_type;" % name, 0)
555 self.emit("static PyObject* ast2obj_%s(void*);" % name, 0)
557 self.emit("static char *%s_fields[]={" % name,0)
559 self.emit('"%s",' % f.name, 1)
560 self.emit("};", 0)
563 self.emit("static PyTypeObject *%s_type;" % name, 0)
565 self.emit("static char *%s_attributes[] = {" % name, 0)
567 self.emit('"%s",' % a.name, 1)
568 self.emit("};", 0)
576 self.emit("static PyObject *%s;" % tnames, 0)
577 self.emit("static PyObject* ast2obj_%s(%s);" % (name, ptype), 0)
582 self.emit("static PyTypeObject *%s_type;" % cons.name, 0)
584 self.emit("static char *%s_fields[]={" % cons.name, 0)
586 self.emit('"%s",' % t.name, 1)
587 self.emit("};",0)
592 self.emit("""
859 self.emit("static int init_types(void)",0)
860 self.emit("{", 0)
861 self.emit("static int initialized;", 1)
862 self.emit("if (initialized) return 1;", 1)
863 self.emit("if (add_ast_fields() < 0) return 0;", 1)
866 self.emit("initialized = 1;", 1)
867 self.emit("return 1;", 1);
868 self.emit("}", 0)
875 self.emit('%s_type = make_type("%s", &AST_type, %s, %d);' %
877 self.emit("if (!%s_type) return 0;" % name, 1)
880 self.emit('%s_type = make_type("%s", &AST_type, NULL, 0);' %
882 self.emit("if (!%s_type) return 0;" % name, 1)
884 self.emit("if (!add_attributes(%s_type, %s_attributes, %d)) return 0;" %
887 self.emit("if (!add_attributes(%s_type, NULL, 0)) return 0;" % name, 1)
897 self.emit('%s_type = make_type("%s", %s_type, %s, %d);' %
899 self.emit("if (!%s_type) return 0;" % cons.name, 1)
901 self.emit("%s_singleton = PyType_GenericNew(%s_type, NULL, NULL);" %
903 self.emit("if (!%s_singleton) return 0;" % cons.name, 1)
912 self.emit("PyMODINIT_FUNC", 0)
913 self.emit("init_ast(void)", 0)
914 self.emit("{", 0)
915 self.emit("PyObject *m, *d;", 1)
916 self.emit("if (!init_types()) return;", 1)
917 self.emit('m = Py_InitModule3("_ast", NULL, NULL);', 1)
918 self.emit("if (!m) return;", 1)
919 self.emit("d = PyModule_GetDict(m);", 1)
920 self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return;', 1)
921 self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
922 self.emit("return;", 2)
924 self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
926 self.emit("return;", 2)
929 self.emit("}", 0)
943 self.emit('if (PyDict_SetItemString(d, "%s", (PyObject*)%s_type) < 0) return;' % (name, name), 1)
966 CODE = '''Very simple, always emit this static code. Overide CODE'''
969 self.emit(self.CODE, 0, reflow=False)
976 self.emit("PyObject*", 0)
977 self.emit("ast2obj_%s(void* _o)" % (name), 0)
978 self.emit("{", 0)
979 self.emit("%s o = (%s)_o;" % (ctype, ctype), 1)
980 self.emit("PyObject *result = NULL, *value = NULL;", 1)
981 self.emit('if (!o) {', 1)
982 self.emit("Py_INCREF(Py_None);", 2)
983 self.emit('return Py_None;', 2)
984 self.emit("}", 1)
985 self.emit('', 0)
988 self.emit("return result;", 1)
989 self.emit("failed:", 0)
990 self.emit("Py_XDECREF(value);", 1)
991 self.emit("Py_XDECREF(result);", 1)
992 self.emit("return NULL;", 1)
993 self.emit("}", 0)
994 self.emit("", 0)
1001 self.emit("switch (o->kind) {", 1)
1005 self.emit("}", 1)
1007 self.emit("value = ast2obj_%s(o->%s);" % (a.type, a.name), 1)
1008 self.emit("if (!value) goto failed;", 1)
1009 self.emit('if (PyObject_SetAttrString(result, "%s", value) < 0)' % a.name, 1)
1010 self.emit('goto failed;', 2)
1011 self.emit('Py_DECREF(value);', 1)
1015 self.emit("PyObject* ast2obj_%s(%s_ty o)" % (name, name), 0)
1016 self.emit("{", 0)
1017 self.emit("switch(o) {", 1)
1019 self.emit("case %s:" % t.name, 2)
1020 self.emit("Py_INCREF(%s_singleton);" % t.name, 3)
1021 self.emit("return %s_singleton;" % t.name, 3)
1022 self.emit("default:" % name, 2)
1023 self.emit('/* should never happen, but just in case ... */', 3)
1025 self.emit(code, 3, reflow=False)
1026 self.emit("return NULL;", 3)
1027 self.emit("}", 1)
1028 self.emit("}", 0)
1032 self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % name, 1);
1033 self.emit("if (!result) return NULL;", 1)
1039 self.emit("case %s_kind:" % cons.name, 1)
1040 self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % cons.name, 2);
1041 self.emit("if (!result) goto failed;", 2)
1044 self.emit("break;", 2)
1047 def emit(s, d):
1048 self.emit(s, depth + d)
1054 emit("if (!value) goto failed;", 0)
1055 emit('if (PyObject_SetAttrString(result, "%s", value) == -1)' % field.name, 0)
1056 emit("goto failed;", 1)
1057 emit("Py_DECREF(value);", 0)
1059 def emitSeq(self, field, value, depth, emit):
1060 emit("seq = %s;" % value, 0)
1061 emit("n = asdl_seq_LEN(seq);", 0)
1062 emit("value = PyList_New(n);", 0)
1063 emit("if (!value) goto failed;", 0)
1064 emit("for (i = 0; i < n; i++) {", 0)
1066 emit("if (!value1) goto failed;", 1)
1067 emit("PyList_SET_ITEM(value, i, value1);", 1)
1068 emit("value1 = NULL;", 1)
1069 emit("}", 0)
1077 self.emit("{", depth)
1078 self.emit("int i, n = asdl_seq_LEN(%s);" % value, depth+1)
1079 self.emit("value = PyList_New(n);", depth+1)
1080 self.emit("if (!value) goto failed;", depth+1)
1081 self.emit("for(i = 0; i < n; i++)", depth+1)
1083 self.emit("PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(%s, i)));" % value,
1085 self.emit("}", depth)
1087 self.emit("value = ast2obj_list(%s, ast2obj_%s);" % (value, field.type), depth)
1090 self.emit("value = ast2obj_%s(%s);" % (field.type, value), depth, reflow=False)
1142 v.emit("", 0)