1

我正在为汇编编译器制作 ac,我希望我的程序从给他 2 个参数开始: - 包含代码的源文件 (.c) - 包含编译器生成的汇编代码的目标文件。启动示例:./compiler sum_test.c result.asm

这实际上有效: echo "int main(){int a; int b; int c; a = 2; b=3; c=a+b;}" | ./编译器

但我真的很想从文件中读取代码。

我无法将 sum_test.c 中的所有内容解析为 STDIN,我的程序卡住并等待输入..

这是我的主要功能和我尝试过的:

   int main(int argc, char** argv)
{

   extern FILE * yyin;
   yyin = fopen( argv[1], "r");
   yyin = stdin;

  labelVrai = labelFaux = labelFin = labelDebut = labelSuite = labelWhileDebut = labelWhileFin = n_labels = labelN_else = 0;
  dico_global = dictionnaire_create();
  dico_local = creer_piledico();

  if ( yyparse() != 0 )
    { fprintf(stderr,"Syntaxe incorrecte\n"); return 1; }

  dictionnaire_destroy(dico_global);
  destroy_piledico(dico_local);
  return 0;
}

如果你能帮助我,那就太好了,谢谢。

4

1 回答 1

4

我不确定是否还有其他问题,但您需要删除该行yyin = stdin;。它正在覆盖您打开的文件的文件指针。

于 2012-05-16T17:55:31.777 回答