2014-09-26 2 views
0

В настоящее время я работаю на простом языке с парсером, используя JavaCC, Eclipse и JTB. Я делаю это для обучения. Когда я бегу .java файл, он дает мне следующую ошибку:Ошибка «Encountered», которой не должно быть

Encountered " "var" "var "" at line 2, column 5. 
Was expecting: ":" ... 

Но когда я смотрю через мой код не существует такой вещи, в строке 2 ?? !! Я знаю, что эта ошибка не должна быть там я отладка из-за предыдущую ошибку в течение 2-х часов, как сейчас ...

РЕДАКТИРОВАНИЯ это мой лексема код, который включает в себя «вар»:

TOKEN : 
{ 
    < REQUIRE: "require" > 
| < IF: "if" > 
| < WHILE:"while" > 
| < VAR:"var" > 
| < STOP:"stop" > 
| < EXEC:"exec" > 
| < ELSE:"else" > 
} 

и это определение правила для "вара":

void VariableDeclaration():{} 
{ 

    "var" VariableName() "=" MathExpression() "." 
} 

void VariableAssign():{} 
{ 
    VariableName() "=" MathExpression() "." 
} 

Надеется, что это помогает :)

+1

Можете вставить код, который вы хотите прочитать? По крайней мере, первый бит? – Pokechu22

+0

@ Pokechu22 первые строки? sure – ANON

+0

Появляется ошибка, потому что парсер столкнулся с токеном «var», когда ожидал один из множества токенов, который не включает «var». Если вам нужен лучший ответ, вам придется опубликовать как текст ввода, так и соответствующую часть грамматики. Если вы включите отладку парсера, вы точно увидите, что происходит для вас. –

ответ

0

Это сообщение об ошибке было выведено, потому что синтаксический анализатор столкнулся с символьной последовательностью «var», которая была распознана как токен, который не был в состоянии ожидания в момент, когда он был обнаружен. Один из приемлемых видов токенов связан с символьной последовательностью «:».

Короче говоря, последовательность токенов не была такой, какой был на языке, описанном грамматикой.

Если вы хотите узнать больше, задайте новый вопрос. Например. Учитывая эту грамматику ..., почему этот вход ..., в результате чего генератор генерируемого JavaCC-сервера выдает это сообщение об ошибке .... Но прежде чем вы перейдете к копированию больших грамматик в стек обмена, вы должны (а) попытаться решить проблему самостоятельно - например, с помощью превосходных параметров отладки JavaCC - и (b) довести проблему до минимального неудачного примера.

+0

фактически все функции/ключевые слова описаны в грамматике в виде одного токена, но это только дает мне ошибку на «var», которая используется для определения – ANON

+0

Я добавил грамматику – ANON