我希望我的 flex/yacc 程序做和它已经做的一样的事情,但我想稍微修改一下。如果我要在我的 .l 文件中放置一个 main(),并让它做与我没有添加 main() 一样的事情,那么代码会是什么样子?
问问题
228 次
1 回答
1
您可以按照正常方式生成代码,然后复制您的“正常主程序”。
但是由于标准解析器期望来自标准输入的输入,所以您需要做的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);
于 2009-12-06T05:01:05.070 回答