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] = '\0'; ....
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
(
a
)
这个
PyParser_AddToken
是干啥的?