gpt4 book ai didi

c++ - Flex 编译文件 (lex.yy.c) 找不到 header /依赖项并且编译异常

转载 作者:行者123 更新时间:2023-11-30 18:03:26 24 4
gpt4 key购买 nike

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

此 header 已#include 包含在我发送给 Flex 的文件中。

此外,当我尝试解决这些错误时,似乎某些错误的根源在于我首先用来生成 lex.yy.c 的 Flex Scripts txt 文件或与我的项目无关的其他文件,例如 flexskel.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: %s\n",mostRecentToken->lexema);
return;
}
"END_PROG"
{
storeTokenInList(yytext, lineCounter, END_PROG);
fprintf(yyout,"\nEND_PROG: %s\n",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在主函数中声明。它也用在 Flex 脚本中,但 Flex 不知道主函数中声明的任何变量。

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

再次感谢大家:)

关于c++ - Flex 编译文件 (lex.yy.c) 找不到 header /依赖项并且编译异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com