flex自动生成的文件不能用?

时间:2011-05-27 11:57:49

标签: c++ visual-studio-2008 flex-lexer lexer

我正在使用flex lexer作为我的编译器项目的词法分析器,我有这个函数来更改词法分析器输入流,如下所示:

.L

void initLexer(string code) {
    lineNumber = 1;
    columnNumber = 0;
    currentStringIndex = 0;
    yy_delete_buffer(YY_CURRENT_BUFFER);
    YY_BUFFER_STATE my_string_buffer = yy_scan_string("sh");
    yy_switch_to_buffer(my_string_buffer);
}

我正在使用以下选项来生成合适的例程

%option nounput 
%option nomain nodefault
%option noyywrap
%option warn
%option c++

在我运行flex lexer工具并获得自动生成的cpp文件之后,我尝试构建我的项目但它无法识别

error C2065: 'yy_current_buffer' : undeclared identifier    
error C3861: 'yy_delete_buffer': identifier not found   
error C3861: 'yy_scan_string': identifier not found 
error C3861: 'yy_switch_to_buffer': identifier not found    

为什么?我该怎么办?

1 个答案:

答案 0 :(得分:1)

我对此问题的解决方案 - 我使用了MinGW包中的flex