Python源码太复杂了...
今天看了下对.py文件的parse, 云里雾里的
py文件是最简单的, 在python的交互式窗口 import这个模块
a = 10 print(a)
开始分析,堆栈如图
把 static node * parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret, int *flags) 展开 for (;;) { char *a, *b; int type; size_t len; char *str; int col_offset; type = PyTokenizer_Get(tok, &a, &b); .... if (len > 0) strncpy(str, a, len); str[len] = ' '; .... if (a >= tok->line_start) col_offset = a - tok->line_start; else col_offset = -1; PyParser_AddToken(ps, (int)type, str, tok->lineno, col_offset, &(err_ret->expected)) break; } }
str 依次为
a = 10 print ( a )
这个
PyParser_AddToken
是干啥的?