【发布时间】:2015-04-16 12:17:43
【问题描述】:
我已经制作了一个将与 ANTLR4 一起使用的语法,其表达式定义如下:
// Expressions
Expr : Integer # Expr_Integer
| Float # Expr_Float
| Double # Expr_Double
| String # Expr_String
| Variable # Expr_Variable
| FuncCall # Expr_FuncCall
| Expr Op_Infix Expr # Expr_Infix
| Op_Prefix Expr # Expr_Prefix
| Expr Op_Postfix # Expr_Postfix
| Expr 'is' Id # Expr_Is
| 'this' # Expr_This
| Expr '?' Expr ':' Expr # Expr_Ternary
| '(' Expr ')' # Expr_Bracketed
;
我添加了标签,以便在分析生成的语法树时可以轻松区分不同的表达式类型。但是,ANTLR4 对上述每一行(不包括带有注释的行)都会抛出以下错误:
error(50): Ash.g4:88:19: syntax error: '#' came as a complete surprise to me while looking for lexer rule element
第 88 行是最终规则替代 ('(' Expr ')')
我查看了documentation 和各种在线示例,我的语法似乎是正确的。
什么可能导致错误被抛出?
【问题讨论】: