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
print
(
a
)
這個
PyParser_AddToken
是幹啥的?