Java Antlr4不';在一个简单的语法中找不到任何可行的输入字符串替代方法

Java Antlr4不';在一个简单的语法中找不到任何可行的输入字符串替代方法,java,parsing,antlr4,Java,Parsing,Antlr4,我是Antlr的新手,我必须创建一些语法来解析项目中用户指定的规则和公式。我已经编写了最难的一个包含条件语句的语句,但是对于第二个比第一个更容易的语句,我没有其他可行的输入选项。 我的语法是一个简单的语法,如下所示: grammar PmntIdntfrTmpExp; start : statement | statement start ; statement : assignment ; assignment : id

我是Antlr的新手,我必须创建一些语法来解析项目中用户指定的规则和公式。我已经编写了最难的一个包含条件语句的语句,但是对于第二个比第一个更容易的语句,我没有其他可行的输入选项。 我的语法是一个简单的语法,如下所示:

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+
  ;
不会发出错误