gpt4 book ai didi

python - PLY:C 解析器中的 token 移位问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:28 24 4
gpt4 key购买 nike

我正在使用 PLY 编写 C 语言解析器,最近遇到了一个问题。这段代码:

typedef int my_type;
my_type x;

是正确的 C 代码,因为 my_type 被定义为之前的类型被这样使用。我通过在被词法分析器用来区分类型和类型的解析器简单的标识符。

但是,虽然类型声明规则以 SEMI(';' 标记)结尾,但 PLY 在决定完成第一行之前将第二行的标记 my_type 移开。因此,我没有机会将类型符号表中的更新传递给词法分析器,它将 my_type 视为标识符而不是类型。

有任何修复的想法吗?

完整代码位于:http://code.google.com/p/pycparser/source/browse/trunk/src/c_parser.py不确定如何从中创建一个较小的示例。

编辑:

问题解决了。请参阅下面我的解决方案。

最佳答案

不确定为什么要在词法分析器中进行这种级别的分析。

可能应该使用词法分析将输入流分离为词法标记(数字、换行符、关键字等)。解析阶段应该进行该级别的分析,包括 typedef 的表查找等。

这就是我一直将 lexx 和 yacc(我选择的工具)之间的职责分开的方式。

关于python - PLY:C 解析器中的 token 移位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/108009/

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