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我的实际语法与此非常不同,实际上为了简单起见,我抽象了我的语法,以便突出显示我的实际需求。返回类型、优先级和其他事项由我处理。非常感谢,这正是我需要的。