мы только начинаем использовать flex для создания лексера для проекта, но мы не можем понять, как заставить его работать. Я копирую пример кода, приведенный в руководствах, и пытаюсь запустить flex ++ с файлом tut в качестве аргумента, однако каждый раз получаю сообщение об ошибке. например
входной файл (calc.l)
%name Scanner
%define IOSTREAM
DIGIT [0-9]
DIGIT1 [1-9]
%%
"+" { cout << "operator <" << yytext[0] << ">" << endl; }
"-" { cout << "operator <" << yytext[0] << ">" << endl; }
"=" { cout << "operator <" << yytext[0] << ">" << endl; }
{DIGIT1}{DIGIT}* { cout << " number <" << yytext << ">" << endl; }
. { cout << " UNKNOWN <" << yytext[0] << ">" << endl; }
%%
int main(int argc, char ** argv)
{
Scanner scanner;
scanner.yylex();
return 0;
}
с этим кодом я получаю
flex ++ calc.l
calc.l: 1: недопустимый символ:% {{1} } calc.l: 1: раздел обработки неизвестных ошибок 1
calc.l: 1: раздел обработки неизвестных ошибок 1
calc.l: 1: раздел обработки неизвестных ошибок 1
calc.l: 2: нераспознанная директива '%'
может ли кто-нибудь помочь мне понять, что я здесь делаю не так? ура