Antlr4-隐式定义

Antlr4-隐式定义,antlr,antlr4,Antlr,Antlr4,我正在尝试创建一个简单的、目前仅限使用的整数算术表达式解析器。目前我有: grammar MyExpr; input: (expr NEWLINE)+; expr: '(' expr ')' | '-' expr | <assoc = right> expr '^' expr | expr ('*' | '/') expr | expr ('+' | '-') expr | ID '(' ExpressionList? ')' |

我正在尝试创建一个简单的、目前仅限使用的整数算术表达式解析器。目前我有:

grammar MyExpr;

input: (expr NEWLINE)+;


expr: '(' expr ')'
    | '-' expr
    | <assoc = right> expr '^' expr
    | expr ('*' | '/') expr
    | expr ('+' | '-') expr
    | ID '(' ExpressionList? ')'
    | INT;

ExpressionList : expr (',' expr)*; 


ID : [a-zA-Z]+;
INT : DIGIT+;
DIGIT: [0-9];
NEWLINE : '\r'?'\n';
WS : [\t]+ -> skip;
我正在使用Eclipse和Antlr4插件。我试图根据antlr4书中给出的cymbol语法来确定自己的方向


有人能告诉我我的小语法出了什么问题吗?

我自己发现的:

以大写字母开头的规则参考Lexer规则。所以我所要做的就是将我的ExpressionList重命名为ExpressionList

也许有一天其他人会发现这很有用;)

error(160): MyExpr.g4:14:17: reference to parser rule expr in lexer rule ExpressionList
error(126): MyExpr.g4:7:6: cannot create implicit token for string literal in non-combined grammar: '-'