私はまだC++に少し慣れていないので、我慢してください。私は BNF 文法で記述された Core と呼ばれる仮想言語のインタープリターを実装しています。ここまでで、コア プログラムを表すトークンのキューを作成するトークナイザーを実装しました。現在、トークナイザーからの出力を取得し、それを使用して、再帰降下解析を使用して ParseTree クラス (これを設計する必要があります) のオブジェクトを設定するパーサー/実行プログラムを作成中です。これを行う方法の基本は理解していますが、ParseTree クラスの実装に問題があります。コア BNF で記述されたプロダクションには、通常 2 ~ 5 個の終端/非終端記号がありますが、最大 20 個あるものもあるため、各ノードが異なる数の子を持つことができる n-ary ツリーが必要です。
ParseTree クラスは必ずしもその実装にツリーを使用する必要はないと思いますが、それが最も理にかなっているようです (より良い/簡単な別のデータ構造はありますか?)。私が必要とするものに適合するSTLのコンテナを認識していません。Boost プロパティ ツリーを見てきましたが、どちらも機能しないことがわかります。可能であれば、車輪を再発明してツリーをゼロから実装することは避けたいと思います。また、Boost 以外の外部ライブラリを使用できないという制約もあります。私の ParseTree を実装する最良の方法は何ですか? 使用できる事前に作成されたツリーの実装はありますか?