我对 C++ 还是有点陌生,所以请耐心等待。我正在为一种名为 Core 的假设语言实现解释器,该语言由 BNF 语法描述。到目前为止,我已经实现了一个标记器,它给了我一个很好的代表核心程序的标记队列。我现在正在编写 Parser/Executer,它从标记器获取输出并使用它使用递归下降解析来填充 ParseTree 类的对象(我必须设计)。我了解如何做到这一点的基础知识,但在实现 ParseTree 类时遇到了麻烦。Core BNF 描述的产品通常有 2-5 个终端/非终端符号,但有些可能多达 20 个,所以我需要一个 n 叉树,其中每个节点可以有不同数量的子节点。
我想 ParseTree 类不一定需要使用树来实现它的实现,但这似乎是最有意义的(是否有可能更好/更容易的不同数据结构?)。我不知道 STL 中有任何符合我需要的容器。我查看了 Boost 属性树,但据我所知,这也不起作用。如果可能的话,我宁愿不要重新发明轮子并从头开始实现一棵树。此外,我无法使用除了 Boost 之外的任何外部库。实现我的 ParseTree 的最佳方法是什么?我可以使用任何好的预制树实现吗?