Мы только начинаем использовать 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: неверный символ:% calc.l: 1: секция обработки неизвестных ошибок 1
calc.l: 1: секция обработки неизвестных ошибок 1
calc.l: 1: секция обработки неизвестных ошибок 1
calc.l: 2: нераспознанная директива '%'
Может кто-нибудь помочь мне понять, что я здесь делаю неправильно?веселит