プロジェクトで、ファイル構造のパーサーコードを生成しようとしてflexいます。bison主なプログラミング言語はC++であり、プロジェクトは主に並列で実行されるオブジェクト指向設計に基づいています。
生成されたパーサーはCコードであり、再入可能ではないとflex聞きました。bisonグーグル、見つけflex++てbisonc++。残念ながら、始めるための簡単なチュートリアルはありません。ほとんどの例はに基づいていbison/flexます。bison/flex一部の人々は、どういうわけかパーサーをC++コードに統合しました。彼らは「トリッキー」であるはずです...
とのドキュメントは私flex++とbisonc++を助けません。チュートリアルと例、それらはすべてstdinから入力を取得し、stdoutにいくつかのメッセージを出力します。
パーサーに次の機能が必要です。
- パーサーは、通常の方法で定義されたC ++クラスである必要があります(ヘッダーとcppファイル)
- パーサーは、
std::stringまたはstd::stringstreamまたはnullで終了するのいずれかからデータを受信しますchar*。
とても混乱しています。または使用する必要がありますflex++/bisonc++かflex/bison?そして、上記の条件を満たす方法でそれを行うにはどうすればよいですか?