They could be very helpful. But this is still possible by removing all the whitespace and going through the infix expression one character at a time. If you find an operand, you throw it at the end of your prefix expression string. If it's an open parenthesis, you push it on the stack. When you find an operator, you push it on the stack if the stack is empty...if it's not empty, you pop every operator of greater or equal precedence (stop when an operator of lower precedence is found, another open parenthesis is found, or the stack is empty) and throw them onto the end of your prefix string...and THEN you can push your operator on the stack. If you find the close parenthesis, you just pop the operators off the stack until you find its matching open parenthesis. Finally, if you hit the end of the infix expression, you just pop everything off the stack and throw it at the end of your prefix string. But that's just converting infix notation to prefix notation using a stack. The fun part comes when you evaluate the expression. Now that your expression is in prefix notation, it should be easier to evaluate it using whatever algorithm you come up with. One last thing, you don't necessarily have to use stacks, there are quite a few ways of accomplishing this...and it may have been a mouth full, so I could try to explain this by writing pseudocode if needed. There are a lot of resources on this topic, too.
<Aoi-chan> everyone's first vi session. ^C^C^X^X^X^XquitqQ!qdammit[esc]qwertyuiopasdfghjkl;:xwhat