我正在研究野牛手册中给出的 mfcalc 示例的改进版本,您可以在此处找到代码。
我一直在尝试使用 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 from 重新定义stdin
为常规文件,发出提示信息,在 yyin 上执行解析器,读取 yyout 的输出并打印到屏幕。但这不能正常工作,我只得到一个空行。当我证明我得到的程序时:
[mfcalc]: 3 + 4
[mfcalc]:
此外,未显示错误代码。有什么想法可以解决这个问题吗?
提前致谢。