![]() |
1
3
不知道你为什么要在你的lexer里做那样的分析。 可能应该使用词汇分析将输入流分离为词汇标记(数字、行更改、关键字等)。它是解析阶段,应该执行该级别的分析,包括typedef等的表查找。 这就是我将lexx和yacc(我选择的工具)之间的职责分离的方式。 |
![]() |
2
2
用 some help 从戴夫比兹利(ply的创造者),我的问题解决了。
其思想是使用特殊的子规则并在其中执行操作。在我的案例中,我将
|
![]() |
3
1
我认为您需要将ID是否是typeID的检查从c lexer.py移到c_parser.py。 正如您所说的,由于解析器正在寻找1个令牌,所以您不能在lexer中做出这个决定。 相反,更改您的解析器来检查ID,看看它们在声明中是否是typeID,如果不是,则生成一个错误。 正如Pax Diablo在他出色的回答中所说的那样,lexer/tokenizer的工作不是做出关于token的那种决定。这就是解析器的工作。 |