2012-05-16 4 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

하지만 실제로 파일에서 코드를 읽고 싶습니다. 내가 STDIN에 sum_test.c을 모든 콘텐츠를 구문 분석하는 데 문제가 있어요

, 입력에 대한 내 프로그램 GET의 붙어 기다리의 .. 여기

내 주요 기능이며, 내가 뭘하려 :

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;을 삭제해야합니다. 열어 본 파일의 파일 포인터를 덮어 쓰는 것입니다.