C# ANTLR4 右关联警告

C# ANTLR4 right-associative warning

鉴于我在 C# 构建目标中的简单语法:

grammar Expr;

prog: stmt+ EOF;
stmt: expr NEWLINE+;

expr:
    expr '^' <assoc=right> expr # Power
|   expr ('*'|'/') expr         # Mult
|   expr ('+'|'-') expr         # Add
|   REAL                        # Real
|   '(' expr ')'                # Paren
;

NEWLINE : '\r\n';
REAL     : [0-9]+'.'[0-9]+ ;

我继续收到 C# 编译器警告,指出 "Warning 1 rule 'expr' contains an 'assoc' terminal option in an unrecognized location"

谁能建议我应该在哪里指示指数的右结合性?这是我在许多示例中看​​到的方式。

答案是将标记提示放在规则的左侧,而不是像我在许多示例中看​​到的那样紧跟在运算符之后:

expr:
<assoc=right> expr '^'  expr    # Power
|   expr ('*'|'/') expr         # Mult
...
;