我想生成C代码。我不会从输入文件中读取,一次一行(例如,编译器可能)。相反,我会在用户输入到达时解析它,一次一行。
我更愿意检测和处理词法分析器/解析器中的错误输入,例如
/* lexer tokens */
foo : "FOO";
bar : "BAR";
baz : "BAZ";
/* grammar*/
grammar : foo "=" BAZ
| foo "=" BAR
| <some non-existent Antrl-else> : {printf(stderr, "bad input\n");}
;
好的,如果我无法在词法分析器/解析器中捕获它,似乎我需要使用displayRecognitionError()
但是如何?
有人能指出一个非常简单的例子,它生成C代码并显示无效输入的错误处理吗?
谢谢!
好的,赏金,yippee!
但仅限于真实,有效的代码,真实有效的代码。没有“使用方法X()”没有wxample。
答案 0 :(得分:7)
您最有可能寻找的是displayRecognitionError()
功能。在您感兴趣的情况下调用此函数,它是C运行时的一部分。
如果您想查看如何使用此功能的示例,请查看this mailing list post。虽然这段代码混合了C和C ++,但您应该能够从中找到所需的内容。
答案 1 :(得分:5)
在Java中处理识别异常将是这样的:
grammar X;
// ...
@rulecatch{
catch(RecognitionException rex) {
// do something
}
}
// parser rules
// lexer rules
换句话说,只需在@rulecatch{ ... }
块中添加一些自定义C代码。