Flex编译文件(lex.yy.c)无法找到头/依赖项并编译奇怪



我正在尝试用Flex编译一个小型词法分析器应用程序。lex.yy.c文件确实生成了,但是当我在Visual Studio中将它添加到我的项目中时,它会产生数十个错误,声称无法识别我在其中定义的结构和函数一个相关的头。

这个头#包含在我发送给Flex的文件中。

此外,当我试图找出这些错误时,似乎有些错误的起源在Flex Scripts txt文件,我用来在第一时间生成lex.yy.c或其他与我的项目无关的文件,如flexskeleton .cc

为什么它试图编译不相关的文件?我正在使用Windows 7和Visual Studio 10。

这是我发送给Flex的文件的简短版本:

%{
#include <stdio.h>
#include "TokenInterface.h"
int lineCounter = 0;
%}
DIGIT   [0-9]
LETTER [a-zA-Z] 
%%
"START_PROG" 
{
storeTokenInList(yytext, lineCounter, START_PROG);
fprintf(yyout,"nSTART_PROG: %sn",mostRecentToken->lexema);
return;
}                                                               
"END_PROG"          
{
storeTokenInList(yytext, lineCounter, END_PROG);
fprintf(yyout,"nEND_PROG: %sn",mostRecentToken->lexema);
return;
 }                                                           %%     
void main(int argc, char* argv[])
{
token* mostRecentToken;
createEmptyTokenList();
yyin = fopen("c:\Flex\input.txt","r");
yyout = fopen("c:\Flex\output.txt","w");
yylex();
mostRecentToken = backToken();
while (mostRecentToken->tokenType != EOF)
{
    yylex();
    mostRecentToken = backToken();
}
printf("Flex Out.n");
}

我的错误如下:

变量mostRecentToken在main函数中声明。它也在Flex脚本中使用,但是Flex不知道main函数中声明的任何变量。

我用yytext替换了脚本中的mostRecentToken,瞧。

再次感谢大家:)

最新更新