为什么我在解析语句时使用 javacc 工具从用户那里获取输入时得到错误的结果?

Why i am getting wrong result on taking input from user using javacc tool while parsing a statement?

当我打字时java AssignStatement

a=10+20*30 

它要求我再输入一个语句,之后我得到了

Syntax checking failed

那么如何从用户或文件中获取输入呢?这是我的源代码:

PARSER_BEGIN(AssignStatement)

public class AssignStatement      
{                              
  public static void main(String s[])        
  {
    try
    {
      AssignStatement as=new AssignStatement(System.in);
      as.StartSymbol();
      System.out.println("Syntax checking successfully");
    }
    catch(Throwable e)
    {
     System.out.println("Syntex checking failed");
     e.getMessage();
    }
  }
}

PARSER_END(AssignStatement)

 SKIP: {"" | "\t" | "\n" | "\r" }
 TOKEN:{ "(" | ")" | "+" | "*" | ":="| <NUM: (["0"-"9"])+> | <ID:(["0"-"9"])+>
       }

 void StartSymbol(): {}
 {
      (AStmt())*<EOF>
 }

 void AStmt(): {}
 { 
  LOOKAHEAD(2) <ID> "=" AStmt() 
  | Term() ("+" Term())*
 }

 void Term(): {}
 {
  Factor() ("*" Factor())*
 }

 void Factor(): {}
 {
  <NUM> 
  | <ID> 
  | "(" AStmt() ")"
 }

令牌管理器抛出异常,因为令牌不能以字母 "a" 开头。