112 : m_Optype( aOptype ), m_Priority( 0 )
118 std::vector<double> values;
119 std::vector<OP_CODE> optype;
121 double curr_value = 0.0;
122 int extra_priority = 0;
124 for(
unsigned ii = 0; ii < aExp.size(); ii++ )
140 optype.emplace_back( prm );
141 optype.back().m_Priority += extra_priority;
148 if( optype.size() < 2 )
151 OP_CODE& previous_optype = optype[optype.size() - 2];
153 if( optype.back().m_Priority > previous_optype.m_Priority )
157 double op2 = values.back();
166 switch( optype.back().m_Optype )
169 values.push_back( op1+op2 );
173 values.push_back( op1-op2 );
177 values.push_back( op1*op2 );
181 values.push_back( op1/op2 );
196 if( values.size() > optype.size() )
200 optype.insert( optype.begin(), OP_CODE(
POPVALUE ) );
202 wxASSERT( values.size() == optype.size() );
204 for(
unsigned idx = 0; idx < values.size(); idx++ )
206 curr_value = values[idx];
208 switch( optype[idx].m_Optype )
wxString result
Test unit parsing edge cases and error handling.