2015-04-08 1 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 "Ошибка Came Syntex проверка failedLexical error в строке 1, столбец 1. Обнаружен:" \ "" (34), после: " –

Смежные вопросы