GCC говорит "синтаксическая ошибка перед числовой константой" в сгенерированном заголовочном файле от bison
Когда я компилирую свой .y файл с парсером bison.y-d-t, а затем включить парсер.вкладка.файл h в моем файле flex, gcc говорит " Ошибка: синтаксическая ошибка перед числовой константой.- Это ссылка на строку 32, которая является первой строкой в перечислении yytokentype.
enum yytokentype {
BREAK = 258,
... }
Ошибка касается строки " BREAK = 258."Я честно не знаю, почему это происходит-я действительно хотел бы использовать сгенерированный yylval, и он мне нужен из этого заголовочного файла. Даже если я объявлю yytokentype, как это в моем flex файл, я бы получил ту же ошибку. Может, я что-то делаю не так?
2 ответа:
Определяется ли
BREAK
где-то еще в вашем коде? Я получаю аналогичную ошибку из следующего примера игрушки:#define BREAK 10 enum yytokentype { BREAK = 258 };
Пример сборки:
$ cc -c file.c file.c:4: error: expected identifier before numeric constant
Предположительно BREAK уже определен где-то в выходном файле flex, поэтому после запуска препроцессора вы получаете оператор типа 99 = 258 или что-то в этом роде. Попробуйте посмотреть на выходные данные
cpp yy.lex.c
илиgcc -E yy.lex.c
. Я посмотрел в выходной файл изгибаться, но не нашел сорваться куда-нибудь в нем, только YY_BREAK.