2015-04-08 14 views
-1

当我打字java AssignStatement为什么我在解析语句时从使用javacc工具的用户输入错误的结果?

a=10+20*30 

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

语法检查失败

如何通过采取从用户或输入文件呢?下面是我的源代码:

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() ")" 
} 

回答

2

令牌经理抛出一个异常,因为没有令牌可以用字母“a”开始。

+0

我做了以下更正,因为你告诉我,现在我收到以下错误,我无法找到我的AssignStatement.jj文件中我输入后:C:\ javaccprog \ AssignStatement> java AssignStatement“a = 10 + 20 * 30“错误来自Syntex检查第1行第1列的failedLexical错误。遇到:”\“”(34),在:“ –

相关问题