0

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

4

1 回答 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 回答