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 に答える