C#ANTLR4右关联警告

时间:2017-05-14 11:09:04

标签: c# antlr4

鉴于我在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#编译器警告,指出“警告1规则'expr'在无法识别的位置包含'assoc'终端选项”

任何人都可以建议我应该指出指数的右关联性吗?这是我在很多例子中看到它的方式。

1 个答案:

答案 0 :(得分:2)

答案是将标记提示放在规则的上,而不是在操作符之后,正如我在许多示例中看​​到的那样:

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