我希望我的flex / yacc程序能够像它已经做的那样做,但我想稍微修改一下。如果我在我的.l文件中放置一个main(),并且让它做同样的事情,好像我没有添加一个main(),那么代码会是什么样的?
答案 0 :(得分:1)
您可以按照正常情况生成代码,然后复制“普通主”。
但是,由于标准解析器期望从stdin输入,因此main()
中您应该做的就是调用yyparse()
根据'lex& yacc'(第211页)标准主要是:
main(ac, av)
{
yyparse();
return 0;
}
第96页有一个更完整的示例,它通过这种类型的代码设置输入和输出:
extern FILE *yyin, *yyout;
yyin = fopen(infile,"r");
if( yyin == NULL ) /* handle error */
yyout = fopen(outfile,"w")
/* error handling agian */
yyparse();
/* post processing */
exit(0);