0

入力ファイルから yacc プログラムに入力をリダイレクトするとき、ファイルの解析が終了した後、yacc パーサーが行ったことの要約を出力するようにします。キーボードから入力してからCtrl+を押すと、同じことをしたいと思いDます。それを行う方法はありますか?

4

2 に答える 2

0

文法では、関数を呼び出すことができます関数は3番目の部分にあるべきです

FIRST PART

%%
second PART

GRAMMAR {  CALL YOUR FUNCTION();}
GRAMMAR2 VAR1 VAR2 VAR3 {CALL YOUR FUNCTION2($1,$2,$3);}

%%
third PART

YOUR FUNCTION(){}
YOUR FUNCTION2(int c, char*y , int z){}

 int main (void) {
}
    void yyerror (char *s) {fprintf (stderr, "%s\n", s);} 

あなたの関数は、あなたが与えたパラメータによって関数を呼び出す場所から、文法もあなたが望むものを印刷することができます

于 2016-06-11T21:03:22.943 に答える
-4

私の問題の解決策は、.y ファイルに関数 yywrap() を作成することであることがわかりました。この関数は、yacc が EOF に遭遇したときに実行されます。これは、入力ファイルの終わりか、ユーザーが Ctrl-D を押したときです。これが解決策です。

于 2009-12-06T07:42:51.817 に答える