4

lex/yacc (flex/bison) を使用しているときにメッセージ/プロンプトを表示する方法を見つけようとしています。

たとえば、メインは次のようになります。

int main(int argc, char *argv[])
{
    yyparse();
}

どちらが yacc を呼び出し、どちらが yylex() を呼び出します。これにより、STDIN で待機する空白行が生成されます。のようなメッセージを表示するにはどうすればよいですか...

メッセージ $ _

それ以外の

_

アンダースコアはカーソル位置を表し、STDIN からの入力を待機しています...

言及するのを忘れていましたが、プロンプトを繰り返し出力したいと思います...そのため、毎回 lex/yacc が stdin からの入力を要求する前に..

4

1 に答える 1

8

理解した。yacc ファイルにアクションとして統合する必要がありました。

私の鉱山は次のようになります。

int main(int argc, char *argv[])
{
    prompt();
    yyparse();
}

そして、私の yacc ファイル (.y) は次のようになります...

ステーション
     : /* 空の */
     | | stmnt 何でも { do_something(); 促す(); }
     ;

そのため、stmnt (トップレベル) を解析するたびに、後でプロンプトが表示されます。

于 2009-04-18T23:11:38.767 に答える