从官方网站上下载了python3.7.9的源代码,准备这几天看一下python的语法分析器。
本来我以为会有很多东西,没想到打开了parser这个文件夹之后,发现才有14个文件(c语言的文件),其中有2个头文件,12个源文件。
注:阅读这一部分的源码,搭配《编译原理》更佳。
我准备从自顶向下的顺序进行分析:
文件包含关系
1.头文件
- parser.h 定义了几个语法分析器有关的数据结构,以栈的形式存储语法分析器
- tokenizer.h 里面主要写了一个结构体tok_state ,记录着源代码(你写的python代码)的很多东西
2.源文件
- acceler.c 语法分析器加速模块
- bitset.c 被解析器使用的bitset原语
- firstsets.c FIRST集的代码实现(详见《编译原理》4.4.2)
- grammar.c 语法实现
- grammar1.c 被parser所需要的语法子程序
- listnode.c 在文件(stdout,即输出)中列举一些节点
- metagrammar.c 定义了一堆变量,暂没看懂啥意思。
- myreadline.c 获取输入的地方,调用的ReadConsoleW这个API来获取输入
- node.c 语法分析树节点实现
- parser.c 语法分析器实现
- parsetok.c 语法分析与词法分析的沟通桥梁
- tokenizer.c 词法分析器
有些文件解释的不是很理想,但是并无伤大雅,接下来我会更深入的分析里面的函数与数据结构。
接下来供上结构图,仅包含parser中的文件。
版权归原作者 nebit 所有, 如有侵权,请联系我们删除。