2012-05-16 85 views
1

我正在編譯彙編編譯器,並且我希望我的程序通過給他2個參數開始: - 包含代碼的源文件(.c) - 將包含程序集的目標文件由編譯器生成的代碼。 啓動示例:./compiler sum_test.c result.asmYacc文件解析

這個實際上有效:echo「int main(){int a; int b; int c; a = 2; b = 3; c = a + b;}「| ./compiler

但我真的想從文件中讀取代碼。

我無法解析的所有內容關閉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

我不確定是否有其他問題,但您需要刪除行yyin = stdin;。它覆蓋了您打開的文件的文件指針。