0


python语法分析器(parser)源码阅读(一)

从官方网站上下载了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中的文件。

标签: python 编译器

本文转载自: https://blog.csdn.net/Trouble_Im_in/article/details/119222775
版权归原作者 nebit 所有, 如有侵权,请联系我们删除。

“python语法分析器(parser)源码阅读(一)”的评论:

还没有评论