antlr - 在生成 C 代码时寻求非常简单的 ANTLR 错误处理示例

标签 antlr antlr3

我想生成 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!

但仅适用于真实、有效的答案,以及真实、有效的代码。没有 wxample 就没有“使用方法 X()”。

最佳答案

您最有可能寻找的是 displayRecognitionError() 功能。该函数在您感兴趣的情况下被调用,并且是 C 运行时的一部分。

如果您想查看如何使用此功能的示例,请查看 this mailing list post .尽管此代码混合了 C 和 C++,但您应该能够从中计算出您需要的内容。

关于antlr - 在生成 C 代码时寻求非常简单的 ANTLR 错误处理示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003705/

相关文章:

antlr - 如何解决这种有歧义的语法?

java - 如何在 ANTLR 3 树解析器中表达多个节点

unicode - 如何在 Antlr 中指定需要超过四个十六进制数字的 unicode 文字?

parsing - Xtext 可以用于解析通用编程语言吗?

c - 如何使用 ANTLR3C 生成介绍性识别器?

error-handling - ANTLR : how to extract error messages when build fails

java - ANTLR 中的递归处理规则

c - 解析多个 C 源文件

java - 使用ANTLR(或任何其他工具)编写术语重写解析器/表达式评估器

antlr - 替换 ANTLR 中的 token