|
|
|
|
Here is what the expression parser produces for output, from the test cases supplied from the Parser's main method: Starting parse on [1+2*3/4]... Token: [Number] 1.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 2.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [MULTIPLY] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 3.0 In factor... In subfactor... In subexpression... In atom... Token: [DIVIDE] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 4.0 In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [1+2*3/4] : 2.5 Result of '1+2*3/4' = 2.5 Starting parse on [ 1 + 2 * 3]... Token: [Number] 1.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 2.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [MULTIPLY] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 3.0 In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [ 1 + 2 * 3] : 7.0 Result of ' 1 + 2 * 3' = 7.0 Starting parse on [3^3]... Token: [Number] 3.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [EXPONENTIATION] Back in subexpression... Back in subfactor... Back in factor... Token: [Number] 3.0 In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [3^3] : 27.0 Result of '3^3' = 27.0 Starting parse on [(1 + 2) * 3]... Token: [OPEN_PAREN] In expression... In term... In factor... In subfactor... In subexpression... Token: [Number] 1.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 2.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [CLOSE_PAREN] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Back in subexpression... Token: [MULTIPLY] Back in subfactor... Back in factor... Back in term... Token: [Number] 3.0 In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [(1 + 2) * 3] : 9.0 Result of '(1 + 2) * 3' = 9.0 Starting parse on [53%5]... Token: [Number] 53.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [REMAINDER] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 5.0 In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [53%5] : 3.0 Result of '53%5' = 3.0 Starting parse on [72^0]... Token: [Number] 72.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [EXPONENTIATION] Back in subexpression... Back in subfactor... Back in factor... Token: [Number] 0.0 In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Value of [72^0] : 1.0 Result of '72^0' = 1.0 Starting parse on [+5 + -6 * -(3 * 4)]... Token: [PLUS] In expression... In term... In factor... In subfactor... Token: [Number] 5.0 In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] -6.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [MULTIPLY] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [MINUS] In factor... In subfactor... Token: [OPEN_PAREN] In subexpression... Token: [Number] 3.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [MULTIPLY] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 4.0 In factor... In subfactor... In subexpression... In atom... Token: [CLOSE_PAREN] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Back in subexpression... Token: [END_OF_INPUT] Back in subfactor... Back in factor... Back in term... Back in expression... Value of [+5 + -6 * -(3 * 4)] : 77.0 Result of '+5 + -6 * -(3 * 4)' = 77.0 Starting parse on [ X + 1]... >>> Unsupported feature: Variable name X + 1 ^ Starting parse on [11 - 6 7]... Token: [Number] 11.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [MINUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 6.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [Number] 7.0 Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... >>> Unexpected token after end of expression: Token NUMBER [7.0] Offset: 0 11 - 6 7 ^ Starting parse on [ 3 - +(2 + 4 ]... Token: [Number] 3.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [MINUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [PLUS] In term... In factor... In subfactor... Token: [OPEN_PAREN] In subexpression... Token: [Number] 2.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 4.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Back in subexpression... >>> Unbalanced parentheses 3 - +(2 + 4 ^ Starting parse on [4 + 5/0]... Token: [Number] 4.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [PLUS] Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Token: [Number] 5.0 In term... In factor... In subfactor... In subexpression... In atom... Token: [DIVIDE] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [Number] 0.0 In factor... In subfactor... In subexpression... In atom... Token: [END_OF_INPUT] Back in subexpression... Back in subfactor... Back in factor... Back in term... >>> Division by zero attempted 4 + 5/0 ^ Starting parse on [10 ** 8]... Token: [Number] 10.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [MULTIPLY] Back in subexpression... Back in subfactor... Back in factor... Back in term... Token: [MULTIPLY] In factor... In subfactor... In subexpression... In atom... >>> Unexpected token encountered Token MULTIPLY [*] Offset: 0 10 ** 8 ^ Starting parse on [(10-5)*9)]... Token: [OPEN_PAREN] In expression... In term... In factor... In subfactor... In subexpression... Token: [Number] 10.0 In expression... In term... In factor... In subfactor... In subexpression... In atom... Token: [Number] -5.0 Back in subexpression... Back in subfactor... Back in factor... Back in term... Back in expression... Back in subexpression... >>> Unbalanced parentheses (10-5)*9) ^ Starting parse on [/8]... Token: [DIVIDE] In expression... In term... In factor... In subfactor... In subexpression... In atom... >>> Unexpected token encountered Token DIVIDE [/] Offset: 0 /8 ^ |
| The page was last updated February 19, 2008 |