bisonを使用してファイル(ICのピン接続リストを含む)の解析を行うGUIプログラムがあります。入力ファイルは次のようになります->
3 = NAND2(1, 2)
6 = NAND2(4, 5)
8 = NAND2(9, 10)
11 = NAND2(12, 13)
そして(簡略化された)文法は次のようなものです->
start : spec { cout << "Parse Complete!"; }
;
spec : '{' expr_list '}'
;
expr_list : expr_list expr | expr
;
expr : INT '=' FUNC '(' args ')' { /*WANT TO INSERT ACTION HERE */ }
;
上記の場所で、アクションを実行したい-解析された値をコンテナに挿入する(a map
)。bisonによって生成されたファイルはですが.cpp
、それ以外の場合は実際にはCです。必要なヘッダーファイルを簡単にインクルードできます。また、非メンバー関数(などcout
)を簡単に呼び出すこともできます。
私の質問は-(コンテナタイプの)オブジェクトに値を挿入するにはどうすればよいですか?文法ファイル内にオブジェクトを作成できますが、それを返すにはどうすればよいですか?
もう1つの方法は、GUIコードで(コンテナータイプの)オブジェクトを作成し、これをパーサーに渡すことです。
いずれかの方法を実現する方法を教えてください。