#include "Python.h"#include "code.h"#include "Python-ast.h"#include "symtable.h"#include "clinic/symtablemodule.c.h"/*[clinic input]module _symtable[clinic start generated code]*//*[clinic end generated code: output=da39a3ee5e6b4b0d input=f4685845a7100605]*//*[clinic input]_symtable.symtablestr: strfilename: object(converter='PyUnicode_FSDecoder')startstr: str/Return symbol and scope dictionaries used internally by compiler.[clinic start generated code]*/static PyObject *_symtable_symtable_impl(PyObject *module, const char *str,PyObject *filename, const char *startstr)/*[clinic end generated code: output=914b369c9b785956 input=6c615e84d5f408e3]*/{struct symtable *st;PyObject *t;int start;if (strcmp(startstr, "exec") == 0)start = Py_file_input;else if (strcmp(startstr, "eval") == 0)start = Py_eval_input;else if (strcmp(startstr, "single") == 0)start = Py_single_input;else {PyErr_SetString(PyExc_ValueError,"symtable() arg 3 must be 'exec' or 'eval' or 'single'");Py_DECREF(filename);return NULL;}st = Py_SymtableStringObject(str, filename, start);Py_DECREF(filename);if (st == NULL)return NULL;t = (PyObject *)st->st_top;Py_INCREF(t);PyMem_Free((void *)st->st_future);PySymtable_Free(st);return t;}static PyMethodDef symtable_methods[] = {_SYMTABLE_SYMTABLE_METHODDEF{NULL, NULL} /* sentinel */};static struct PyModuleDef symtablemodule = {PyModuleDef_HEAD_INIT,"_symtable",NULL,-1,symtable_methods,NULL,NULL,NULL,NULL};PyMODINIT_FUNCPyInit__symtable(void){PyObject *m;if (PyType_Ready(&PySTEntry_Type) < 0)return NULL;m = PyModule_Create(&symtablemodule);if (m == NULL)return NULL;PyModule_AddIntMacro(m, USE);PyModule_AddIntMacro(m, DEF_GLOBAL);PyModule_AddIntMacro(m, DEF_LOCAL);PyModule_AddIntMacro(m, DEF_PARAM);PyModule_AddIntMacro(m, DEF_FREE);PyModule_AddIntMacro(m, DEF_FREE_CLASS);PyModule_AddIntMacro(m, DEF_IMPORT);PyModule_AddIntMacro(m, DEF_BOUND);PyModule_AddIntMacro(m, DEF_ANNOT);PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock);PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock);PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock);PyModule_AddIntMacro(m, LOCAL);PyModule_AddIntMacro(m, GLOBAL_EXPLICIT);PyModule_AddIntMacro(m, GLOBAL_IMPLICIT);PyModule_AddIntMacro(m, FREE);PyModule_AddIntMacro(m, CELL);PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFFSET);PyModule_AddIntMacro(m, SCOPE_MASK);if (PyErr_Occurred()) {Py_DECREF(m);m = 0;}return m;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。