バイソンのマニュアルに記載されている 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]:
また、エラーコードは表示されません。これを解決するためのアイデアはありますか?
前もって感謝します。