ошибка при компиляции lex.yy.c с g ++ - PullRequest
0 голосов
/ 10 января 2012

Я написал файлы Bison, Flex и C ++. Компиляция bisoon и flex прошла. Но когда я пытаюсь скомпилировать файлы c и cpp:
g ++ * .cpp * .c, я получаю странную ошибку: lex.yy.c: 479: ошибка: ожидается `; ' перед "статичным" и когда я открыл файл lex.yy.c, я вижу код, который был автоматически создан flex. Это часть кода вокруг строки 479, строка 479 выделена жирным шрифтом:

using namespace std;
using namespace output
#line 465 "lex.yy.c"

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap YY_PROTO(( void ));
#else
extern int yywrap YY_PROTO(( void ));
#endif
#endif

#ifndef YY_NO_UNPUT

static void yyunput YY_PROTO ((int c, char * buf_ptr)); # ENDIF

#ifndef yytext_ptr
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif

Я понятия не имею, что делать. Пожалуйста, помогите мне.

спасибо

1 Ответ

0 голосов
/ 10 января 2012

Вы не должны пытаться исправить ошибку в файле, сгенерированном lex, вместо этого вам нужно проверить спецификации lex на наличие ошибок.

UPDATE:

Возможное место для поиска источника такой ошибки - раздел кода пользователя спецификации lex. Как отмечается в комментариях, LEX не проверяет код, который он генерирует из спецификации.

...