flex创建的默认main()是什么样的?

时间:2009-12-06 04:14:41

标签: yacc lexical-analysis

我希望我的flex / yacc程序能够像它已经做的那样做,但我想稍微修改一下。如果我在我的.l文件中放置一个main(),并且让它做同样的事情,好像我没有添加一个main(),那么代码会是什么样的?

1 个答案:

答案 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);