I guess this would be more efficient:
for(pos=0;pos<expr.length();pos++){
const char curr = expr[pos];
switch(curr){
case ':':
OperatorParse('+');break;
case '+':
case '-':
case '*':
case '/':
case '^':
OperatorParse(curr); break;
case '(':
LeftParse(0, pos); break;
case '{':
LeftParse(1, pos); break;
case '[':
LeftParse(2, pos); break;
case ')':
case '}':
case ']':
RightParse(); break;
default:
std::cerr << "Ignored: " << curr << " (" << (int)curr << ")" << std::endl;
}
}
for(pos=0;pos<expr.length();pos++){
const char curr = expr[pos];
switch(curr){
case ':':
OperatorParse('+');break;
case '+':
case '-':
case '*':
case '/':
case '^':
OperatorParse(curr); break;
case '(':
LeftParse(0, pos); break;
case '{':
LeftParse(1, pos); break;
case '[':
LeftParse(2, pos); break;
case ')':
case '}':
case ']':
RightParse(); break;
default:
std::cerr << "Ignored: " << curr << " (" << (int)curr << ")" << std::endl;
}
}
To copy to clipboard, switch view to plain text mode
This way you'll know exactly what happens at each moment.
Bookmarks