antlr4 - 如何忽略ANTLR4中的其余语句
问题描述
我有以下类似 C 的文档:
//...
some_var = 4 + 3; // 1.
another_var = some var + 2; // 2.
yet_another_var = 42; // 3.
; // 4.
//...
这个语法片段:
block: statement+;
statement: assignment | empty_statement;
assignment: /* more assignment stuff */ ';';
empty_statement: ';';
语句 2 包含错误;使用 DefaultErrorStrategy 会导致解析树看到语句 2,并在解析树中对其进行了一些修改。相反,我想报告错误,然后忽略语句的其余部分,将其视为empty_statement
. statement
或者,在尝试处理 a 时,我可以在语法本身和/或错误策略中使用一些技巧来解决单个失败的匹配block
吗?
解决方案
您可以尝试使用以下语法:
block: statement+;
statement: assignment | empty_statement | error_alt;
assignment: /* more assignment stuff */ ';';
empty_statement: ';';
error_alt: ~';'+ ';'
在树遍历期间,您可以在每个error_alt
.
推荐阅读
- node.js - Mongoose 计数使用聚合嵌入数组元素
- swift - 如何在 Swift 中删除添加的快捷方式?
- perl - 使用 perl Win32::OLE 在 word 文档中插入图片
- python - server_socket.bind(sa) 失败
- r - 为什么我不能在分组数据 r 上创建汇总统计?
- vue.js - 使用 Jest 和 vue-utils 测试 Vue 组件
- python - 使用pandas合并excel文件数据
- react-native - 反应原生。滚动到 ScrollView 内的元素的最佳方式
- c# - Dynamics 365 Online - v9 更新后从外部批次更新机会时出错
- python - 无法弄清楚这段代码有什么问题[python 3x]