flex/yacc プログラムに、既に行っていることと同じことをさせたいのですが、少し変更したいと思っています。main() を .l ファイルに入れ、main() を追加しなかった場合と同じことを行うとしたら、コードはどのようになりますか?
1 に答える
1
通常どおりコードを生成してから、「通常のメイン」をコピーできます。
しかし、標準のパーサーは stdin からの入力を想定しているため、必要なのmain()
は呼び出しだけです。yyparse()
「lex & yacc」(211 ページ) によると、標準の main は次のとおりです。
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 に答える