is displayed in the entry field on pressing "eval,the rest is evaluated (( )( + ))and the final result ( is shown this result in the entry field itself becomes the left operand of future operator entered keys" [result (['+''*''(''+''*'][' '' '' '' '' '](['+''*''(''+'][' '' '' '' '](['+''*'][' '' '' '](['+'][' '' '][on ')'[displays " "[on 'eval'in factany temporary result can be used againif we keep pressing an operator button without typing new operandsit' reapplied to the result of the prior press--the value in the entry field is pushed twice and applied to itself each time press many times after entering to see how this works ( ***on the first *it pushes and the on the next *it pushes again from the entry fieldpops and evaluates the stacked ( )pushes back and displays the resultand pushes the new and on each following *it pushes the currently displayed result and evaluates againcomputing successive squares figure - shows how the two stacks look at their highest level while scanning the expression in the prior example trace on each reductionthe top operator is applied to the top two operands and the result is pushed back for the operator below because of the way the two stacks are usedthe effect is similar to converting the expression to string of the form + * (+ * and evaluating it right to left in other casesthoughparts of the expression are evaluated and displayed as temporary results along the wayso it' not simply string conversion process figure - evaluation stacks ( finallythe next example' string triggers an error pycalc is casual about error handling many errors are made impossible by the algorithm itselfbut things such as unmatched parentheses still trip up the evaluator instead of trying to detect all possible error cases explicitlya general try statement in the reduce method is used to catch them allexpression errorsnumeric errorsundefined name errorssyntax errorsand so on text and language