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(); }