我有一些关于 C 目标中树语法的 antlr3 的问题。
我几乎完成了我的解释器(函数、变量、布尔和数学表达式还可以),并且我保留了最困难的语句(如 if、switch 等)
1)我想解释一个简单的循环语句:
repeat: ^(REPEAT DIGIT stmt);
我看过很多例子,但没有关于 tree walker 的例子(这里只有一个带有宏 MARK() / REWIND(m) + @init / @after 但不起作用的主题(我有 antlr 错误:“偏移量为 0 的意外节点“))。我如何用 C 解释这个语句?
2)同样的问题,一个简单的 if 语句:
if: ^(IF condition stmt elseifstmt* elsestmt?);
问题是如果条件为假则跳过该语句并测试其他 elseif/else 语句。
3)我有一些可以停止脚本的语句(如“break”或“exit”)。如何打断树行者并跳过以下标记?
4) 当检测到词法分析器或解析器错误时,antlr 返回错误。但我想制作我自制的错误消息。如何获得解析器崩溃的行号?
问我是否需要更多详细信息。
非常感谢你(我为我糟糕的英语道歉)