Перечитывая вопрос, я думаю, что есть проблема терминологии. Правило равно
{boolean} {yylval.booleanval = strdup(yytext); if(err==1){printf("\t\t\t\t\t\t");}; return BOOLEAN;}
Как и все правила, это правило состоит из * pattern "и действия. Шаблон {boolean}
состоит только из раскрытия макроса. После раскрытия макроса строка больше не может быть распознана как правило из-за случайных пробелов в определении макроса, как я объяснил в исходном ответе ниже:
Как указано в сообщении об ошибке, проблема заключается в шаблоне в строке 22 вашего гибкого файла, который содержит расширение макроса boolean
:
boolean "True" | "False"
Шаблоны Flex не должны содержать пробелов без кавычек, независимо от того, были ли они введены напрямую или через макрос.
Если вы настаиваете на использовании макроса, это может быть:
boolean True|False
Хотя ничто не мешает вам вставить шаблон непосредственно в правило:
True|False {yylval.booleanval = strdup(yytext); if(err==1){printf("\t\t\t\t\t\t");}; return BOOLEAN;}