Ошибка неверного символа Flex ++ и многое другое. новинка для flex

мы только начинаем использовать 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: нераспознанная директива '%'

может ли кто-нибудь помочь мне понять, что я здесь делаю не так? ура

7
задан lesmana 6 May 2013 в 11:52
поделиться