2016-05-20 15 views
0

私は成功しバイソンとsintax.tab.hhsitax.tab.ccを生成し、次のコマンドを使用してlex.yy.ccを生成するlex.lに含まれています:bisonのyyparse()の使い方は?

bison -d sintax.yy 
flex lexer.l 

と私はsyntax.yylexer.l Iドンで、単純なパーサーの3つのに対応するファイルを、持っています最後の部分にC++コードを入れないでください。これは正しいですか?

私はこれらのファイルを私が取り組んでいる別のプロジェクトで使いたいので、どうやってこれを行うのか分かりません。 Iすることができますどのように別のクラスで宣言された私自身の方法では

  1. は、パーサーの入力を指定するには、定義された文字列になるだろうか?
  2. パーサを別の文字列で再起動しますか?

答えて

0

これは、レクサーが入力を処理するので、実際には単なるレックス(フレックス)の質問です。

フレックスを使用すると、関数を使用することができます。

yyrestart(FILE * input_file) 
yy_scan_string(const char * string) 
yy_scan_buffer(const char * buffer, size_t size) 

が標準入力以外のソースに入力を切り替えるには(yyparseを呼び出す前に、これらを呼び出します)。また、複数のバッファをすぐに作成し、解析の途中で切り替えるために使うことができる "バッファ"機能があります( 'include'のようなものを扱うのに便利です)。

the flex documentation