Antlr C 解析器能否从无效 token 中恢复

标签 c antlr

我开发了一个 Antlr3.4 语法,它生成一个 AST 供以后解析。生成的解析器使用 Antlr 的 C 接口(interface)。当解析器遇到意外标记时,它会添加

"Tree Error Node" to the AST token stream and continues on processing input. (Internally "Tree Error Node" represents ANTLR3_TOKEN_INVALID.)

当我将解析器的输出传递给 AST 解析器时,它在 “树错误节点” 处停止。有没有办法处理 AST 流中的无效标记?

我正在使用:

  • libantlr3c-3.4
  • antlr3.4

最佳答案

我发现您可以覆盖树适配器方法“errorNode”以发出用户指定的 token 。然后可以在 AST 解析器中处理该标记。

关于Antlr C 解析器能否从无效 token 中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15218468/

相关文章:

c - 将下一行的参数传递给 C 程序

c - gcc: 输入错误

java - ANTLR Ubuntu Java Makefile

c# - 替换 ANTLR 中标记的文本

c - 为什么插入函数总是追加在链表的末尾?

c - 用空格查找并替换数组中的制表符?

c - 删除c中链表中最后一项的问题

antlr - 在 ANTRL 重写器语法的 StringTemplate 中使用 $ 作为分隔符

c - ANTLR3 C 目标 - 解析器返回 'misses' 根元素

java - 解析java源文件,然后使用ANTLR4修改原始源