0

flex/yacc プログラムに、既に行っていることと同じことをさせたいのですが、少し変更したいと思っています。main() を .l ファイルに入れ、main() を追加しなかった場合と同じことを行うとしたら、コードはどのようになりますか?

4

1 に答える 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 に答える