gpt4 book ai didi

python - Zephyr ASDL(抽象语法描述语言)

转载 作者:太空狗 更新时间:2023-10-29 17:49:04 26 4
gpt4 key购买 nike

问题:

什么是 Zephyr ASDL,它与词法分析器和解析器生成器等其他编译器技术有何关系?

(如果您相当完整,我将不胜感激,但是当它变得相当技术时,请指向其他在线引用,因为我对编译器的大部分了解都来自玩 yacc 和 flex,用 C 编写一个简单的最大 munch 词法分析器,并在网上查找和阅读资料)

问题背景:

我一直在阅读 http://docs.python.org/devguide/compiler.html我遇到了以下行:

The specification of the AST nodes is specified using the Zephyr Abstract Syntax Definition Language (ASDL).

我按照底部的引文找到: http://www.cs.princeton.edu/research/techreps/TR-554-97 .

我第一次阅读这篇文章时相当困惑,我希望在再次尝试之前能够先更好地理解 ASDL 的目的(在编译过程的上下文中)。

最佳答案

词法分析器和解析器生成器接受词素和语法的描述,并生成实现相应工件的代码。 Lex 需要一个正则表达式来描述记号。解析器生成器采用各种扩展 BNF 符号。

您引用的论文非常清楚恕我直言:ASDL 是一种用于抽象描述一组树节点(它们的类型和签名)的小语言。使用这种语言,可以编写(并且该论文的作者这样做了)一种工具,将这些描述转换为您需要实现树以与解析器一起使用的记录类型集。所以 ADSL 有点像正则表达式和 BNF,因为它的目的是提供给代码生成器,生成编译器的一部分。

一个广泛的观点是,编译器是一种非常容易理解的技术,并且应该能够根据对不同部分的描述来生成它们。 Regex/BNF/ADSL 是解析阶段必不可少的关键。

理想情况下,您会喜欢目标指令集的描述语言、流分析、从抽象树到目标指令集的翻译(您提到的最大咀嚼),以及描述优化的方法。然后为每个部分使用相应的工具,您可以从“规范”构建整个编译器。有实际上在这方面已经做了很多工作;人们已经单独或一起完成了所有这些工作。毫不奇怪,其中一些来自普林斯顿以前的“Zephyr”项目(似乎那里的 Zephyr 网站现在已经死了),其目标就是做这种事情。

无论如何,请尝试在 Google 学术搜索下查找“编译器生成器”。

关于python - Zephyr ASDL(抽象语法描述语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com