2016-10-25 8 views
0

Когда я попытался скомпилировать его, используя ключевое слово сделать это дает мне ошибку:Преждевременный конец файла Лекса

premature end of file in lex.l file in line no 17.

%option noyywrap 
%{ 
    #include "grammer.tab.h" 
%} 
name  ([0-9]) 
whitespace [ \r\t\v\f] 
linefeed \n 
%% 
{name}   { return NAME; } 
":"   { return COLON; } 
"->"   { return RIGHT_ARROW; } 
"{"   { return LEFT_BRACE;} 
"}"   { return RIGHT_BRACE;} 
";"   { return SEMICOLON;} 
{whitespace} 
{linefeed}  ++yylineno; 
%% 

Так кто-то любезно помочь мне.

enter image description here

Ошибка: -

This is the error that the is shown

Хвост: - enter image description here

+0

Как выглядит этот файл? –

+0

эта ошибка возникла, когда я скомпилировал файл make –

+0

Да, да, это так. Но заявив, что у вас есть ошибка, и просить исправить это не подходит для переполнения стека. Если вы можете предоставить ошибку или Makefile, это будет гораздо более полезно. –

ответ

0

Вы обычно получаете эту ошибку от Лекса (или Flex), когда последняя строка не прекращается по новая линия.

Для устранения ошибки просто поместите пустую строку в конец файла.

(То же самое верно и для YACC/зубров)

Я также отметить, у Вас есть недостающий действие для шаблона {whitespace}. Я предлагаю вам попробовать:

{whitespace}   ; /* No action */ 
%% 
/* End of the file */ 
+0

Это не работает даже тогда. –

+0

все еще дает такую ​​же ошибку. –

+0

Я загрузил изображение ошибки добросердечно и, пожалуйста, сообщите об ошибке в коде –