flex を使用してプロジェクトのレクサーを構築し始めたばかりですが、それを機能させる方法がわかりません。チュートリアルにあるサンプル コードをコピーし、tut ファイルを引数として flex++ を実行しようとしましたが、毎回エラーが発生します。例えば
入力ファイル(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: 認識されない '%' ディレクティブ
誰かが私がここで間違っていることを理解するのを手伝ってくれますか? 乾杯