处理Lexer / Parser中的无效输入

时间:2009-12-10 07:12:50

标签: antlr antlr3

所以,我正在解析Hayes调制解调器的AT命令。不是从文件中读取,而是作为char *传递(我正在使用C)。

1)如果我得到一些我完全不认识的东西会怎样?我该如何处理? 2)如果我有类似

的内容怎么办?
my_token: "cmd param=" ("value_1" | "value_2");

并收到“param”的无效值?

我看到一些建议让后端程序(在C中)处理它,但这对我来说是不利的。尽可能早地抓住问题,这是我的座右铭。

有没有办法在词法分析器/解析器规则中捕获“else”条件?

提前致谢...

2 个答案:

答案 0 :(得分:1)

就是这样:你的解析器和词法分析器的全部意义是如果你得到错误的输入就会爆炸,然后你就会发现爆炸并向用户提供一个漂亮的错误信息。

答案 1 :(得分:0)

我认为你正在寻找Custom Syntax Error Recovery来嵌入你的语法。

修改

我没有使用过ANTLR和C(或单独使用C),所以请谨慎使用此建议! :)

查看页面:http://www.antlr.org/api/C/using.html,可能是底部的部分,实施自定义方法就是您所追求的目标。

HTH