我们刚刚开始使用 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: bad character: % calc.l:1: 未知错误处理部分1
calc.l:1: 未知错误处理部分1
calc.l:1: 未知错误处理部分1
calc.l :2: 无法识别的 '%' 指令
谁能帮我理解我在这里做错了什么?干杯