gpt4 book ai didi

ANTLR4:实现 C 语言(如包含文件处理)的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 08:41:36 33 4
gpt4 key购买 nike

我正在为实时语言 OpenPEARL 实现一个词法分析器/解析器。为了更好地构建我的测试套件,我想实现一个类似于 C/C++ 的包含文件处理。解析器本身使用访问者。实现这一点的最佳方法是什么?在实例化嵌套解析器时,我关心的一件事是,包含的文件不需要包含完整的程序,具体取决于它包含的位置。

干杯

马塞尔

最佳答案

我不能代表 ANTLR,但一般来说,它在词法分析器中实现了一个类似 C 的预处理器。

您可以通过输入流的堆栈来实现此目的,堆栈的基础是源文件。您从堆栈顶部的流读取输入。

当词法分析器中遇到包含时,新的流被推送到堆栈顶部,并继续读取(现在从新流开始)。当流遇到 EOF 时,弹出堆栈并继续;如果堆栈为空,则词法分析器发出 EOF 标记。

您可以滥用这些流来实现宏。在宏调用时,只需推送一个代表宏主体的新流。当遇到宏参数名称时,推送提供给相应宏的参数的流。

关于ANTLR4:实现 C 语言(如包含文件处理)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710645/

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