5 * 3 + 4 ... => 19 (['*'], ['5', '3']) [on '+'] (['+'], ['15', '4']) [on eval] 5 + 3 * 4 ... => 17 (['+', '*'], ['5', '3', '4']) [on eval] (['+'], ['5', '12']) 5 + 3 + 4 ... => 12 (['+'], ['5', '3']) [on second '+'] (['+'], ['8', '4']) [on eval] 1 + 3 * ( 1 + 3 * 4 ) ... => 40 (['+', '*', '(', '+', '*'], ['1', '3', '1', '3', '4']) [on ')'] (['+', '*', '(', '+'], ['1', '3', '1', '12']) (['+', '*'], ['1', '3', '13']) [on eval] (['+'], ['1', '39']) 1 + 3 * ( 1 + 3 * 4 ... => *ERROR* (['+', '*', '(', '+', '*'], ['1', '3', '1', '3', '4']) (['+', '*', '(', '+'], ['1', '3', '1', '12']) (['+', '*', '('], ['1', '3', '13']) (['+', '*'], ['1', '*ERROR*']) (['+'], ['*ERROR*']) (['+'], ['*ERROR*', '*ERROR*'])