rooq37

Backup ParseExpression v1

Nov 16th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. void CTree::vParseExpression(string sText) {
  2.     vector <string> items;
  3.     int i = 0;
  4.     string sTemp = "";
  5.     while (i <= (sText.size())) {
  6.         if (sText[i] != ' ') {
  7.             sTemp += sText[i];
  8.             i++;
  9.         }
  10.         else {
  11.             while (i + 1 <= sText.size() && sText[i + 1] == ' ') {
  12.                 i++;
  13.             }
  14.             items.push_back(sTemp);
  15.             sTemp = "";
  16.             i++;
  17.         }
  18.         if (i == sText.size()) {
  19.             items.push_back(sTemp);
  20.         }
  21.     }
  22.    
  23.     for (int i = 0; i < items.size(); i++) {
  24.         //cout << items[i] << ", ";
  25.     }
  26.     //cout << endl;
  27.    
  28.     int iIndex = 1;
  29.     pRoot = new CNode(items[0], NULL);
  30.     CNode * pCurrentNode = pRoot;
  31.     CNode * pTempNode;
  32.     while (iIndex < items.size()) {
  33.         if (iIsOperator(pCurrentNode->sGetValue()) >= 1 && iIsOperator(pCurrentNode->sGetValue()) <= 4) {
  34.             if (pCurrentNode->pvGetChildren()->size() < 2) {
  35.                 pTempNode = new CNode(items[iIndex++], pCurrentNode);
  36.                 pCurrentNode->vAddChild(pTempNode);
  37.                 pCurrentNode = pTempNode;
  38.             }
  39.             else {
  40.                 if (pCurrentNode->pGetParent() == NULL) {
  41.                     cout << "Pomijam" << endl;
  42.                     iIndex++;
  43.                 }
  44.                 else pCurrentNode = pCurrentNode->pGetParent();
  45.             }
  46.         }
  47.         else if (iIsOperator(pCurrentNode->sGetValue()) >= 5 && iIsOperator(pCurrentNode->sGetValue()) <= 6) {
  48.             if (pCurrentNode->pvGetChildren()->size() < 1) {
  49.                 pTempNode = new CNode(items[iIndex++], pCurrentNode);
  50.                 pCurrentNode->vAddChild(pTempNode);
  51.                 pCurrentNode = pTempNode;
  52.             }
  53.             else {
  54.                 if (pCurrentNode->pGetParent() == NULL) {
  55.                     cout << "Pomijam" << endl;
  56.                     iIndex++;
  57.                 }else pCurrentNode = pCurrentNode->pGetParent();
  58.             }
  59.         }else if (iIsOperator(pCurrentNode->sGetValue()) == 0) {
  60.             if (pCurrentNode->pGetParent() == NULL) {
  61.                 cout << "Pomijam" << endl;
  62.                 iIndex++;
  63.             }
  64.             else pCurrentNode = pCurrentNode->pGetParent();
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment