分析脚本块时发生java ANTLR语法错误
我试图在ANTLR中创建一个语法,如下所示
grammar EPL2;
standard_rule:
'STANDARD' 'RULE' ':'
'FILTER' SCRIPT
'SINK' SCRIPT;
SCRIPT
: '{' SCRIPT_ATOM* '}'
;
fragment SCRIPT_ATOM
: ~[{}]
| '"' ( ~('"') )* '"'
| '//' ~[\r\n]*
| SCRIPT
;
MultiLineComment
: '/*' .*? '*/' -> channel(HIDDEN)
;
SingleLineComment
: '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN)
;
SPACES
: [ \u000B\t\r\n] -> channel(HIDDEN)
;
当我针对以下输入运行语法时:
STANDARD RULE:
FILTER { data.get("abc") == "a"; }
SINK { data.get("xyz") > 10 ;}
我得到这个错误: 第3行:36不匹配的输入“”应为“接收器”
我正在使用IntelliJ插件来可视化解析树和层次结构。我可以看到第二个脚本与第一个脚本相连,如下图所示
当我关闭括号(})时,解析器应该前进到sink子句,但这并没有发生
如果我在第二个字符串({a”)中添加一个开括号或闭括号,则scond 脚本显示正确
我不知道我做错了什么,有什么线索吗
共 (0) 个答案