【发布时间】:2015-02-17 10:56:03
【问题描述】:
我正在为解释器制作解析树。这是我树中节点的代码:
struct rtok {
std::string type;
std::string val;
};
struct rnode {
rtok tok;
vector<rnode> child;
} node;
vector<rnode> ptree;
树一直有效,直到我尝试在“node.child”上使用“push_back()”,即node.child[0].push_back();
“rtok”只是我为存储令牌而制作的自定义结构,我只是为了使示例更完整而包含它。
我认为node.child[0].push_back(); 不起作用的原因是因为保存解析树的基向量(ptree)只有一维。所以我的问题是,有没有办法让 C++ 根据需要动态向ptree 向量添加新维度?
--编辑--
我省略了向向量添加新节点的功能:
void add_term(rtok tok) {
rnode n;
n.tok = tok;
ptree.back().child.push_back(n);
}
【问题讨论】:
标签: c++ vector compiler-construction interpreter abstract-syntax-tree