鉴于我在 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]+ ;
Run Code Online (Sandbox Code Playgroud)
我继续收到 C# 编译器警告,指出“警告 1 规则 'expr' 在无法识别的位置包含一个 'assoc' 终端选项”
谁能建议我应该在哪里指示指数的右结合性?这是我在许多示例中看到的完成方式。
答案是将标签提示放置在规则的左侧,而不是像我在许多示例中看到的那样紧接在运算符之后:
expr:
<assoc=right> expr '^' expr # Power
| expr ('*'|'/') expr # Mult
...
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |