Python源码学习七 .py文件的解释

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

是干啥的?

原文地址:https://www.cnblogs.com/pangblog/p/3402403.html