Java Antlr4不';在一个简单的语法中找不到任何可行的输入字符串替代方法
我是Antlr的新手,我必须创建一些语法来解析项目中用户指定的规则和公式。我已经编写了最难的一个包含条件语句的语句,但是对于第二个比第一个更容易的语句,我没有其他可行的输入选项。 我的语法是一个简单的语法,如下所示:Java Antlr4不';在一个简单的语法中找不到任何可行的输入字符串替代方法,java,parsing,antlr4,Java,Parsing,Antlr4,我是Antlr的新手,我必须创建一些语法来解析项目中用户指定的规则和公式。我已经编写了最难的一个包含条件语句的语句,但是对于第二个比第一个更容易的语句,我没有其他可行的输入选项。 我的语法是一个简单的语法,如下所示: grammar PmntIdntfrTmpExp; start : statement | statement start ; statement : assignment ; assignment : id
grammar PmntIdntfrTmpExp;
start
: statement
| statement start
;
statement
: assignment
;
assignment
: id '=' addStmt
;
addStmt
: addStmt '+' mulStmt
| addStmt '-' mulStmt
| mulStmt
;
mulStmt
: mulStmt '*' terminal
| mulStmt '/' terminal
| mulStmt '^' terminal
| terminal
;
terminal
: '('addStmt')'
| id
| number
;
id
: '@fild'(Digit)+
;
number
: Digit+ ('.' Digit+)?
;
Digit
: '0'..'9'
;
WS
: [ \t\r\n]+ -> skip
;
但是当我想解析一个简单的字符串,比如下面的赋值
@fild76 = @fild12 + @fild43
我犯了这个错误
line 1:27 no viable alternative at input '@fild76=@fild12+@fild43'
我想知道是否有人能帮我纠正这个错误。我不知道你的语法为什么会失败,但这似乎是打破它的第一条规则: 替换:
start
: statement
| statement start
;
在语法上是等价的
start
: statement+
;
不会发出错误