我試圖實現flex和bison當這個循環返回了核心轉儲時的段錯誤 第一個文件工作正常但下一個文件崩潰並打印到終端分段錯誤中。flex bison和yyparse的分割錯誤
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("./Corpus")) != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
if ((strcmp(ent->d_name,".") != 0) && (strcmp(ent->d_name,"..") != 0))
{
printf("%s\n",ent->d_name);
yyin = fopen(ent->d_name,"r");
yyparse();
}
}
closedir (dir);
}
else
{
// could not open directory
perror ("");
return EXIT_FAILURE;
}
詞法分析器和解析器是有狀態的,您不能只是簡單地切換文件並開始解析該文件。相反,我建議您閱讀[FLEX手冊](http://flex.sourceforge.net/manual/),其中包含有關如何切換文件的示例。 –
但我用它不是在一個循環中,它的工作。 – HatemB
「但我用它不是在一個循環中,它的工作原理」。這意味着什麼。野牛和彎曲不是在考慮這種用法的情況下建立的。你需要跳過幾圈才能讓他們第二次工作。 –