Python语法是如何生成的,解释器又是如何理解它的

4 投票
2 回答
872 浏览
提问于 2025-04-16 05:12

我想知道Python语言的语法是怎么生成的,以及解释器是如何理解这些语法的。

在Python中,文件graminit.c似乎是用来实现语法的,但我不是很明白里面的内容。

更广泛地说,生成语法的不同方法有哪些?在Perl、Python和Lua等语言中,语法的实现有什么不同吗?

2 个回答

2

实现词法分析和语法解析的方法有很多,关键在于识别出模式以及它们是如何组合在一起的。有一些非常不错的Python库可以用来做这件事,从纯Python到用C语言封装的都有。特别是Pyparsing,里面有很多很好的例子。值得注意的是,找到一个纯粹的EBNF/BNF解析器有点困难——用Python代码写一个解析器并不算太糟,但这离原始语法规则还有一步之遥,这可能对你来说很重要。

8

语法通常都是类似的形式:常见的有巴科斯-诺尔形式(BNF)。

而词法分析器和解析器的形式可以差别很大。

词法分析器的工作是把输入的文件拆分成一个个小的单元,叫做“标记”。解析器则利用语法规则来检查这些标记的顺序是否符合规定。

通常,最后的结果是一个抽象语法树(AST),这个树可以用来生成你想要的东西,比如字节码或汇编代码。

撰写回答