void CConParser::getLabeledBrackets(const CSentenceParsed &parse_tree, CStack<CLabeledBracket> &brackets) { std::vector<CLabeledBracket> vec; unsigned i; unsigned begin, end; unsigned long constituent; brackets.clear(); for (i=0; i<parse_tree.nodes.size(); ++i) { const CCFGTreeNode &node = parse_tree.nodes[i]; if (!node.is_constituent) { begin = node.token; end = begin; } else { begin = vec[node.left_child].begin; if (node.right_child == -1) end = vec[node.left_child].end; else end = vec[node.right_child].end; } #ifdef NO_TEMP_CONSTITUENT constituent = node.constituent; #else constituent = CConstituent::encodeTmp(node.constituent.code(), node.temp); #endif vec.push_back(CLabeledBracket(begin, end, constituent)); if (node.is_constituent) brackets.push(vec.back()); } //for }