Created
January 25, 2018 13:44
-
-
Save survivorm/a37b4048ebd9d1b02673036ca8097034 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*** STATES *** | |
State 0:S' | |
0: S' = . E STOP {} | |
1: E = . E + E {), -, +, *, STOP, /, ^} | |
2: E = . E - E {), -, +, *, STOP, /, ^} | |
3: E = . E * E {), -, +, *, STOP, /, ^} | |
4: E = . E / E {), -, +, *, STOP, /, ^} | |
5: E = . E ^ E {), -, +, *, STOP, /, ^} | |
6: E = . ( E ) {), -, +, *, STOP, /, ^} | |
7: E = . number {), -, +, *, STOP, /, ^} | |
GOTO: | |
E->1 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 1:E | |
0: S' = E . STOP {} | |
1: E = E . + E {), -, +, *, STOP, /, ^} | |
2: E = E . - E {), -, +, *, STOP, /, ^} | |
3: E = E . * E {), -, +, *, STOP, /, ^} | |
4: E = E . / E {), -, +, *, STOP, /, ^} | |
5: E = E . ^ E {), -, +, *, STOP, /, ^} | |
ACTIONS: | |
+->SHIFT:5, -->SHIFT:6, *->SHIFT:7, /->SHIFT:8, ^->SHIFT:9, STOP->ACCEPT | |
State 2:( | |
6: E = ( . E ) {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), +, *, -, /, ^} | |
2: E = . E - E {), +, *, -, /, ^} | |
3: E = . E * E {), +, *, -, /, ^} | |
4: E = . E / E {), +, *, -, /, ^} | |
5: E = . E ^ E {), +, *, -, /, ^} | |
6: E = . ( E ) {), +, *, -, /, ^} | |
7: E = . number {), +, *, -, /, ^} | |
GOTO: | |
E->10 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 3:number | |
7: E = number . {), -, +, *, STOP, /, ^} | |
ACTIONS: | |
)->REDUCE:7, -->REDUCE:7, +->REDUCE:7, *->REDUCE:7, /->REDUCE:7, ^->REDUCE:7, STOP->REDUCE:7 | |
State 4:STOP | |
0: S' = E STOP . {} | |
ACTIONS: | |
State 5:+ | |
1: E = E + . E {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), STOP, +, *, -, /, ^} | |
2: E = . E - E {), STOP, +, *, -, /, ^} | |
3: E = . E * E {), STOP, +, *, -, /, ^} | |
4: E = . E / E {), STOP, +, *, -, /, ^} | |
5: E = . E ^ E {), STOP, +, *, -, /, ^} | |
6: E = . ( E ) {), STOP, +, *, -, /, ^} | |
7: E = . number {), STOP, +, *, -, /, ^} | |
GOTO: | |
E->11 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 6:- | |
2: E = E - . E {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), STOP, +, *, -, /, ^} | |
2: E = . E - E {), STOP, +, *, -, /, ^} | |
3: E = . E * E {), STOP, +, *, -, /, ^} | |
4: E = . E / E {), STOP, +, *, -, /, ^} | |
5: E = . E ^ E {), STOP, +, *, -, /, ^} | |
6: E = . ( E ) {), STOP, +, *, -, /, ^} | |
7: E = . number {), STOP, +, *, -, /, ^} | |
GOTO: | |
E->12 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 7:* | |
3: E = E * . E {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), STOP, +, *, -, /, ^} | |
2: E = . E - E {), STOP, +, *, -, /, ^} | |
3: E = . E * E {), STOP, +, *, -, /, ^} | |
4: E = . E / E {), STOP, +, *, -, /, ^} | |
5: E = . E ^ E {), STOP, +, *, -, /, ^} | |
6: E = . ( E ) {), STOP, +, *, -, /, ^} | |
7: E = . number {), STOP, +, *, -, /, ^} | |
GOTO: | |
E->13 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 8:/ | |
4: E = E / . E {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), STOP, +, *, -, /, ^} | |
2: E = . E - E {), STOP, +, *, -, /, ^} | |
3: E = . E * E {), STOP, +, *, -, /, ^} | |
4: E = . E / E {), STOP, +, *, -, /, ^} | |
5: E = . E ^ E {), STOP, +, *, -, /, ^} | |
6: E = . ( E ) {), STOP, +, *, -, /, ^} | |
7: E = . number {), STOP, +, *, -, /, ^} | |
GOTO: | |
E->14 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 9:^ | |
5: E = E ^ . E {), -, +, *, STOP, /, ^} | |
1: E = . E + E {), STOP, +, *, -, /, ^} | |
2: E = . E - E {), STOP, +, *, -, /, ^} | |
3: E = . E * E {), STOP, +, *, -, /, ^} | |
4: E = . E / E {), STOP, +, *, -, /, ^} | |
5: E = . E ^ E {), STOP, +, *, -, /, ^} | |
6: E = . ( E ) {), STOP, +, *, -, /, ^} | |
7: E = . number {), STOP, +, *, -, /, ^} | |
GOTO: | |
E->15 | |
ACTIONS: | |
(->SHIFT:2, number->SHIFT:3 | |
State 10:E | |
6: E = ( E . ) {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), +, *, -, /, ^} | |
2: E = E . - E {), +, *, -, /, ^} | |
3: E = E . * E {), +, *, -, /, ^} | |
4: E = E . / E {), +, *, -, /, ^} | |
5: E = E . ^ E {), +, *, -, /, ^} | |
ACTIONS: | |
)->SHIFT:16, +->SHIFT:5, -->SHIFT:6, *->SHIFT:7, /->SHIFT:8, ^->SHIFT:9 | |
State 11:E | |
1: E = E + E . {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), STOP, +, *, -, /, ^} | |
2: E = E . - E {), STOP, +, *, -, /, ^} | |
3: E = E . * E {), STOP, +, *, -, /, ^} | |
4: E = E . / E {), STOP, +, *, -, /, ^} | |
5: E = E . ^ E {), STOP, +, *, -, /, ^} | |
ACTIONS: | |
+->REDUCE:1, -->REDUCE:1, *->SHIFT:7, /->SHIFT:8, ^->SHIFT:9, )->REDUCE:1, STOP->REDUCE:1 | |
State 12:E | |
2: E = E - E . {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), STOP, +, *, -, /, ^} | |
2: E = E . - E {), STOP, +, *, -, /, ^} | |
3: E = E . * E {), STOP, +, *, -, /, ^} | |
4: E = E . / E {), STOP, +, *, -, /, ^} | |
5: E = E . ^ E {), STOP, +, *, -, /, ^} | |
ACTIONS: | |
+->REDUCE:2, -->REDUCE:2, *->SHIFT:7, /->SHIFT:8, ^->SHIFT:9, )->REDUCE:2, STOP->REDUCE:2 | |
State 13:E | |
3: E = E * E . {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), STOP, +, *, -, /, ^} | |
2: E = E . - E {), STOP, +, *, -, /, ^} | |
3: E = E . * E {), STOP, +, *, -, /, ^} | |
4: E = E . / E {), STOP, +, *, -, /, ^} | |
5: E = E . ^ E {), STOP, +, *, -, /, ^} | |
ACTIONS: | |
+->REDUCE:3, -->REDUCE:3, *->REDUCE:3, /->REDUCE:3, ^->SHIFT:9, )->REDUCE:3, STOP->REDUCE:3 | |
State 14:E | |
4: E = E / E . {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), STOP, +, *, -, /, ^} | |
2: E = E . - E {), STOP, +, *, -, /, ^} | |
3: E = E . * E {), STOP, +, *, -, /, ^} | |
4: E = E . / E {), STOP, +, *, -, /, ^} | |
5: E = E . ^ E {), STOP, +, *, -, /, ^} | |
ACTIONS: | |
+->REDUCE:4, -->REDUCE:4, *->REDUCE:4, /->REDUCE:4, ^->SHIFT:9, )->REDUCE:4, STOP->REDUCE:4 | |
State 15:E | |
5: E = E ^ E . {), -, +, *, STOP, /, ^} | |
1: E = E . + E {), STOP, +, *, -, /, ^} | |
2: E = E . - E {), STOP, +, *, -, /, ^} | |
3: E = E . * E {), STOP, +, *, -, /, ^} | |
4: E = E . / E {), STOP, +, *, -, /, ^} | |
5: E = E . ^ E {), STOP, +, *, -, /, ^} | |
ACTIONS: | |
+->REDUCE:5, -->REDUCE:5, *->REDUCE:5, /->REDUCE:5, ^->SHIFT:9, )->REDUCE:5, STOP->REDUCE:5 | |
State 16:) | |
6: E = ( E ) . {), -, +, *, STOP, /, ^} | |
ACTIONS: | |
)->REDUCE:6, -->REDUCE:6, +->REDUCE:6, *->REDUCE:6, /->REDUCE:6, ^->REDUCE:6, STOP->REDUCE:6 | |
*** PARSING STARTED | |
Current state: | |
Skipping whitespaces: '' | |
New position: (1, 0) | |
Layout content: '' | |
Context: *34 + 4.6 / | |
Tokens expected: ( or number | |
Token ahead: <number(34)> | |
Shift: 3 "34" at position (1, 0) | |
Action result = type:<type 'float'> value:34.0 | |
Current state: 3 | |
Skipping whitespaces: ' ' | |
New position: (1, 3) | |
Layout content: ' ' | |
Context: 34 *+ 4.6 / 2 | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:34.0 | |
Current state: 1 | |
Context: 34 *+ 4.6 / 2 | |
Tokens expected: + or - or * or / or ^ or STOP | |
Token ahead: <+(+)> | |
Shift: 5 "+" at position (1, 3) | |
No action defined for '+'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'+' | |
Current state: 5 | |
Skipping whitespaces: ' ' | |
New position: (1, 5) | |
Layout content: ' ' | |
Context: 34 + *4.6 / 2 * | |
Tokens expected: ( or number | |
Token ahead: <number(4.6)> | |
Shift: 3 "4.6" at position (1, 5) | |
Action result = type:<type 'float'> value:4.6 | |
Current state: 3 | |
Skipping whitespaces: ' ' | |
New position: (1, 9) | |
Layout content: ' ' | |
Context: 34 + 4.6 */ 2 * 4^2^ | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: </(/)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:4.6 | |
Current state: 11 | |
Context: 34 + 4.6 */ 2 * 4^2^ | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: </(/)> | |
Shift: 8 "/" at position (1, 9) | |
No action defined for '/'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'/' | |
Current state: 8 | |
Skipping whitespaces: ' ' | |
New position: (1, 11) | |
Layout content: ' ' | |
Context: 4 + 4.6 / *2 * 4^2^2 | |
Tokens expected: ( or number | |
Token ahead: <number(2)> | |
Shift: 3 "2" at position (1, 11) | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 3 | |
Skipping whitespaces: ' ' | |
New position: (1, 13) | |
Layout content: ' ' | |
Context: + 4.6 / 2 ** 4^2^2 + | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: <*(*)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 14 | |
Context: + 4.6 / 2 ** 4^2^2 + | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <*(*)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:2.3 | |
Current state: 11 | |
Context: + 4.6 / 2 ** 4^2^2 + | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <*(*)> | |
Shift: 7 "*" at position (1, 13) | |
No action defined for '*'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'*' | |
Current state: 7 | |
Skipping whitespaces: ' ' | |
New position: (1, 15) | |
Layout content: ' ' | |
Context: 4.6 / 2 * *4^2^2 + 78 | |
Tokens expected: ( or number | |
Token ahead: <number(4)> | |
Shift: 3 "4" at position (1, 15) | |
Action result = type:<type 'float'> value:4.0 | |
Current state: 3 | |
Skipping whitespaces: '' | |
New position: (1, 16) | |
Layout content: '' | |
Context: .6 / 2 * 4*^2^2 + 78 | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: <^(^)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:4.0 | |
Current state: 13 | |
Context: .6 / 2 * 4*^2^2 + 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <^(^)> | |
Shift: 9 "^" at position (1, 16) | |
No action defined for '^'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'^' | |
Current state: 9 | |
Skipping whitespaces: '' | |
New position: (1, 17) | |
Layout content: '' | |
Context: 6 / 2 * 4^*2^2 + 78 | |
Tokens expected: ( or number | |
Token ahead: <number(2)> | |
Shift: 3 "2" at position (1, 17) | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 3 | |
Skipping whitespaces: '' | |
New position: (1, 18) | |
Layout content: '' | |
Context: / 2 * 4^2*^2 + 78 | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: <^(^)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 15 | |
Context: / 2 * 4^2*^2 + 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <^(^)> | |
Shift: 9 "^" at position (1, 18) | |
No action defined for '^'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'^' | |
Current state: 9 | |
Skipping whitespaces: '' | |
New position: (1, 19) | |
Layout content: '' | |
Context: / 2 * 4^2^*2 + 78 | |
Tokens expected: ( or number | |
Token ahead: <number(2)> | |
Shift: 3 "2" at position (1, 19) | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 3 | |
Skipping whitespaces: ' ' | |
New position: (1, 21) | |
Layout content: ' ' | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:2.0 | |
Current state: 15 | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:4.0 | |
Current state: 15 | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:256.0 | |
Current state: 13 | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:588.8 | |
Current state: 11 | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: <+(+)> | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:622.8 | |
Current state: 1 | |
Context: 2 * 4^2^2 *+ 78 | |
Tokens expected: + or - or * or / or ^ or STOP | |
Token ahead: <+(+)> | |
Shift: 5 "+" at position (1, 21) | |
No action defined for '+'. Result is matched string. | |
Action result = type:<type 'unicode'> value:u'+' | |
Current state: 5 | |
Skipping whitespaces: ' ' | |
New position: (1, 23) | |
Layout content: ' ' | |
Context: * 4^2^2 + *78 | |
Tokens expected: ( or number | |
Token ahead: <number(78)> | |
Shift: 3 "78" at position (1, 23) | |
Action result = type:<type 'float'> value:78.0 | |
Current state: 3 | |
Skipping whitespaces: '' | |
New position: (1, 25) | |
Layout content: '' | |
Context: 4^2^2 + 78* | |
Tokens expected: ) or - or + or * or / or ^ or STOP | |
Token ahead: | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:78.0 | |
Current state: 11 | |
Context: 4^2^2 + 78* | |
Tokens expected: + or - or * or / or ^ or ) or STOP | |
Token ahead: | |
Reducing by prod '%s'. | |
Action result = type:<type 'float'> value:700.8 | |
Current state: 1 | |
Context: 4^2^2 + 78* | |
Tokens expected: + or - or * or / or ^ or STOP | |
Token ahead: | |
SUCCESS!!! | |
('Result = ', 700.8) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment