Esempio n. 1
0
int COperatorToken::consume(char aChar, CScanner& aScanner) {
  int result=0;
  mTextValue=aChar;  
  while((validOperator(mTextValue)) && (kNoError==result)){
    result=aScanner.getChar(aChar);
    mTextValue+=aChar;
  }
  if(kNoError==result) {
    mTextValue.Truncate(mTextValue.Length()-1);
    aScanner.push(aChar);
  }
  return result;
};
 int evalRPN(vector<string>& tokens) {
     if (tokens.empty()) return 0;
     stack<int> st;
     for (string c : tokens) {
         if (!validOperator(c)) {
             st.push(stoi(c));
         } else {
             int y = st.top();
             st.pop();
             int x = st.top();
             st.pop();
             st.push(eval(x, y, c));
         }
     }
     return st.top();
 }