gpt4 book ai didi

Antlr4 - 隐式定义

转载 作者:行者123 更新时间:2023-12-05 00:22:25 26 4
gpt4 key购买 nike

我正在尝试创建一个简单的现在只有整数算术表达式解析器。现在我有:

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;

规则 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: '-'

我正在使用 Eclipse 和 Antlr4 插件。我尝试将自己定位在 antlr4-book 中给出的 cymbol 语法上。

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

最佳答案

自己发现的:

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

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

关于Antlr4 - 隐式定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29946570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com