Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CTree::vParseExpression(string sText) {
- vector <string> items;
- int i = 0;
- string sTemp = "";
- while (i <= (sText.size())) {
- if (sText[i] != ' ') {
- sTemp += sText[i];
- i++;
- }
- else {
- while (i + 1 <= sText.size() && sText[i + 1] == ' ') {
- i++;
- }
- items.push_back(sTemp);
- sTemp = "";
- i++;
- }
- if (i == sText.size()) {
- items.push_back(sTemp);
- }
- }
- for (int i = 0; i < items.size(); i++) {
- //cout << items[i] << ", ";
- }
- //cout << endl;
- int iIndex = 1;
- pRoot = new CNode(items[0], NULL);
- CNode * pCurrentNode = pRoot;
- CNode * pTempNode;
- while (iIndex < items.size()) {
- if (iIsOperator(pCurrentNode->sGetValue()) >= 1 && iIsOperator(pCurrentNode->sGetValue()) <= 4) {
- if (pCurrentNode->pvGetChildren()->size() < 2) {
- pTempNode = new CNode(items[iIndex++], pCurrentNode);
- pCurrentNode->vAddChild(pTempNode);
- pCurrentNode = pTempNode;
- }
- else {
- if (pCurrentNode->pGetParent() == NULL) {
- cout << "Pomijam" << endl;
- iIndex++;
- }
- else pCurrentNode = pCurrentNode->pGetParent();
- }
- }
- else if (iIsOperator(pCurrentNode->sGetValue()) >= 5 && iIsOperator(pCurrentNode->sGetValue()) <= 6) {
- if (pCurrentNode->pvGetChildren()->size() < 1) {
- pTempNode = new CNode(items[iIndex++], pCurrentNode);
- pCurrentNode->vAddChild(pTempNode);
- pCurrentNode = pTempNode;
- }
- else {
- if (pCurrentNode->pGetParent() == NULL) {
- cout << "Pomijam" << endl;
- iIndex++;
- }else pCurrentNode = pCurrentNode->pGetParent();
- }
- }else if (iIsOperator(pCurrentNode->sGetValue()) == 0) {
- if (pCurrentNode->pGetParent() == NULL) {
- cout << "Pomijam" << endl;
- iIndex++;
- }
- else pCurrentNode = pCurrentNode->pGetParent();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment