int Bchart:: headPosFromItems(Item* lhs, Items& rhs) { int ansPriority = 9999; ECString lhsString(lhs->term()->name()); if(lhsString == "") lhsString = "S1"; int pos = -1; int ans = -1; Items::iterator ii = rhs.begin(); Item *subi; for( ; ii != rhs.end() ; ii++ ) { subi = (*ii); pos++; const Term* trm = subi->term(); int nextPriority = 12; if(trm) { ECString rhsString(subi->term()->name()); if(subi->term() == Term::stopTerm) continue; nextPriority = headPriority(lhsString, rhsString, ansPriority); } if(nextPriority <= ansPriority) { ans = pos; ansPriority = nextPriority; } } return ans; }
int headPosFromTree(InputTree* tree) { int ansPriority = 10; ECString lhsString(tree->term()); if(lhsString == "") lhsString = "S1"; int pos = -1; int ans = -1; ConstInputTreesIter subTreeIter = tree->subTrees().begin(); InputTree *subTree; for( ; subTreeIter != tree->subTrees().end() ; subTreeIter++ ) { subTree = *subTreeIter; pos++; ECString rhsString(subTree->term()); int nextPriority = headPriority(lhsString, rhsString, ansPriority); if(nextPriority <= ansPriority) { ans = pos; ansPriority = nextPriority; } } return ans; }