我开发了一个 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/