Java 如何在ANTLR中多次调用同一规则?

Java 如何在ANTLR中多次调用同一规则?,java,parsing,antlr,antlr4,Java,Parsing,Antlr,Antlr4,我的语法与下面的语法相似 E returns [String vals] : E '+' E {$vals = $E.vals+$E.vals}| E '-' E {$vals = $E.vals+$E.vals} 我想访问两个不同的“E”值,但无法访问。 我想区分3个“E”规则,一个是基本规则,另2个是被调用的规则 我正在创建一个语法,我将使用它来计算某些表达式 运算符“+”和“-”是一些仲裁运算符。若要在操作中引用同一规则的多个用法,可以向它们添加标签,如下所示: e1=

我的语法与下面的语法相似

E returns [String vals] : 
    E '+' E {$vals = $E.vals+$E.vals}|
    E '-' E {$vals = $E.vals+$E.vals}
我想访问两个不同的“E”值,但无法访问。 我想区分3个“E”规则,一个是基本规则,另2个是被调用的规则

我正在创建一个语法,我将使用它来计算某些表达式


运算符“+”和“-”是一些仲裁运算符。

若要在操作中引用同一规则的多个用法,可以向它们添加标签,如下所示:

e1=exp op=('+'|'-') e2=exp {
  // code that uses $e1 and $e2
}

这个片段与你的实际语法有多相似?它有很多与你的问题无关的问题(
E
是一个lexer规则,没有任何意义;您的操作是表达式,而它们应该是语句;没有声明的返回值;
+
-
具有不同的优先级;字符串没有
-
运算符,而
+
运算符不会执行您想要的操作)@sepp2k我的实际语法与此非常不同,实际上为了简单起见,我抽象了我的语法,以便突出显示我的实际需求。返回类型、优先级和其他事项由我处理。非常感谢,这正是我需要的。