我正在编写一个c to汇编编译器,我希望我的程序一开始就给他两个参数:-包含代码的源文件(.c) -将包含编译器生成的汇编代码的目标文件。启动示例:./compiler sum_test.c result.asm
这实际上是有效的: echo "int main(){int;int;int;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;
}如果你能帮我,那就太好了,谢谢。
发布于 2012-05-17 01:55:32
我不确定是否有任何其他问题,但您需要删除行yyin = stdin;。它会覆盖您打开的文件的文件指针。
https://stackoverflow.com/questions/10623599
复制相似问题