有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

分析脚本块时发生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插件来可视化解析树和层次结构。我可以看到第二个脚本与第一个脚本相连,如下图所示

Hierarchy

当我关闭括号(})时,解析器应该前进到sink子句,但这并没有发生

如果我在第二个字符串({a”)中添加一个开括号或闭括号,则scond 脚本显示正确

enter image description here

我不知道我做错了什么,有什么线索吗


共 (0) 个答案