使用g ++编译flex程序时出错

时间:2014-03-21 07:59:08

标签: c++ token lex flex-lexer

这是我的简单lex文件,里面有main函数。 我想用g ++编译它。

%{
    #include <iostream>
    %}
    %%
    [ \t] ;
    [0-9]+\.[0-9]+ { cout << "Found a floating-point number:" << yytext << endl; }
    [0-9]+  { cout << "Found an integer:" << yytext << endl; }
    [a-zA-Z0-9]+ { cout << "Found a string: " << yytext << endl; }
    %%
    main() {
        // lex through the input:
        yylex();
    }

我在终端上运行以下命令 lex ex1.l

g ++ lex.yy.c -lfl -o scanner

我收到以下错误

error

1 个答案:

答案 0 :(得分:1)

cout位于std命名空间中。您需要将其称为

std::cout

同样适用于endl

注意,你可以说

using std::cout;
using std::endl;

在使用coutendl名称之前的某个地方。在执行此操作时,您应该注意不存在名称冲突的可能性。在有限的范围内使用它,而不是在头文件中使用它。