gpt4 book ai didi

c - 将 Flex 和 Bison 生成的 yyparse() 嵌入到用 C 语言编写的 CLI 程序中

转载 作者:行者123 更新时间:2023-11-30 14:21:06 30 4
gpt4 key购买 nike

我正在研究 bison 手册中给出的 mfcalc 示例的改进版本,您可以找到代码 here .

我一直在尝试使用 main.c 文件中的 yyparse() ,实际上代码可以正常工作

int main (int argc, char const *argv[]) {
init_table ();
return yyparse ();
}

但我想添加一个提示,所以我写了

int main (int argc, char const *argv[]) {
char command[101];
FILE *fp;
init_table ();

while (1) {
printf ("[mfcalc]: "); /*prompt*/
memset (command, 0x00, sizeof(command));
fgets (command, 100, stdin);
fp = fopen("command.txt", "w+");
fprintf(fp, "%s", command);
yyin = fp;
yyparse ();
fscanf (yyout, "%s", output);
printf ("%s\n", output);
fclose (fp);
}
}

这就是,将 yyin 从 stdin 重新定义为常规文件,放入提示消息,在 yyin 上执行解析器,从 yyout 读取输出并打印到屏幕。但这不能正常工作,我只得到一个空行。当我证明这个程序时,我得到:

[mfcalc]: 3 + 4

[mfcalc]:

此外,错误代码也不会显示。有什么想法可以解决这个问题吗?

提前致谢。

最佳答案

我还没有编译它,但在阅读你的代码后我认为问题可能出在文件上。写入后文件指针位于文件末尾,因此 yyparse 没有输入。您可以使用 fseek 和 fsetpos 来修复它。

关于c - 将 Flex 和 Bison 生成的 yyparse() 嵌入到用 C 语言编写的 CLI 程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928137/

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