1Created by PLY version 3.11 (http://www.dabeaz.com/ply)
2
3Grammar
4
5Rule 0     S' -> statement
6Rule 1     statement -> NAME EQUALS expression
7Rule 2     statement -> expression
8Rule 3     expression -> expression PLUS expression
9Rule 4     expression -> expression MINUS expression
10Rule 5     expression -> expression TIMES expression
11Rule 6     expression -> expression DIVIDE expression
12Rule 7     expression -> MINUS expression
13Rule 8     expression -> LPAREN expression RPAREN
14Rule 9     expression -> NUMBER
15Rule 10    expression -> NAME
16
17Terminals, with rules where they appear
18
19DIVIDE               : 6
20EQUALS               : 1
21LPAREN               : 8
22MINUS                : 4 7
23NAME                 : 1 10
24NUMBER               : 9
25PLUS                 : 3
26RPAREN               : 8
27TIMES                : 5
28error                :
29
30Nonterminals, with rules where they appear
31
32expression           : 1 2 3 3 4 4 5 5 6 6 7 8
33statement            : 0
34
35Parsing method: LALR
36
37state 0
38
39    (0) S' -> . statement
40    (1) statement -> . NAME EQUALS expression
41    (2) statement -> . expression
42    (3) expression -> . expression PLUS expression
43    (4) expression -> . expression MINUS expression
44    (5) expression -> . expression TIMES expression
45    (6) expression -> . expression DIVIDE expression
46    (7) expression -> . MINUS expression
47    (8) expression -> . LPAREN expression RPAREN
48    (9) expression -> . NUMBER
49    (10) expression -> . NAME
50
51    NAME            shift and go to state 4
52    MINUS           shift and go to state 1
53    LPAREN          shift and go to state 3
54    NUMBER          shift and go to state 2
55
56    statement                      shift and go to state 5
57    expression                     shift and go to state 6
58
59state 1
60
61    (7) expression -> MINUS . expression
62    (3) expression -> . expression PLUS expression
63    (4) expression -> . expression MINUS expression
64    (5) expression -> . expression TIMES expression
65    (6) expression -> . expression DIVIDE expression
66    (7) expression -> . MINUS expression
67    (8) expression -> . LPAREN expression RPAREN
68    (9) expression -> . NUMBER
69    (10) expression -> . NAME
70
71    MINUS           shift and go to state 1
72    LPAREN          shift and go to state 3
73    NUMBER          shift and go to state 2
74    NAME            shift and go to state 7
75
76    expression                     shift and go to state 8
77
78state 2
79
80    (9) expression -> NUMBER .
81
82    PLUS            reduce using rule 9 (expression -> NUMBER .)
83    MINUS           reduce using rule 9 (expression -> NUMBER .)
84    TIMES           reduce using rule 9 (expression -> NUMBER .)
85    DIVIDE          reduce using rule 9 (expression -> NUMBER .)
86    $end            reduce using rule 9 (expression -> NUMBER .)
87    RPAREN          reduce using rule 9 (expression -> NUMBER .)
88
89
90state 3
91
92    (8) expression -> LPAREN . expression RPAREN
93    (3) expression -> . expression PLUS expression
94    (4) expression -> . expression MINUS expression
95    (5) expression -> . expression TIMES expression
96    (6) expression -> . expression DIVIDE expression
97    (7) expression -> . MINUS expression
98    (8) expression -> . LPAREN expression RPAREN
99    (9) expression -> . NUMBER
100    (10) expression -> . NAME
101
102    MINUS           shift and go to state 1
103    LPAREN          shift and go to state 3
104    NUMBER          shift and go to state 2
105    NAME            shift and go to state 7
106
107    expression                     shift and go to state 9
108
109state 4
110
111    (1) statement -> NAME . EQUALS expression
112    (10) expression -> NAME .
113
114    EQUALS          shift and go to state 10
115    PLUS            reduce using rule 10 (expression -> NAME .)
116    MINUS           reduce using rule 10 (expression -> NAME .)
117    TIMES           reduce using rule 10 (expression -> NAME .)
118    DIVIDE          reduce using rule 10 (expression -> NAME .)
119    $end            reduce using rule 10 (expression -> NAME .)
120
121
122state 5
123
124    (0) S' -> statement .
125
126
127
128state 6
129
130    (2) statement -> expression .
131    (3) expression -> expression . PLUS expression
132    (4) expression -> expression . MINUS expression
133    (5) expression -> expression . TIMES expression
134    (6) expression -> expression . DIVIDE expression
135
136    $end            reduce using rule 2 (statement -> expression .)
137    PLUS            shift and go to state 11
138    MINUS           shift and go to state 12
139    TIMES           shift and go to state 14
140    DIVIDE          shift and go to state 13
141
142
143state 7
144
145    (10) expression -> NAME .
146
147    PLUS            reduce using rule 10 (expression -> NAME .)
148    MINUS           reduce using rule 10 (expression -> NAME .)
149    TIMES           reduce using rule 10 (expression -> NAME .)
150    DIVIDE          reduce using rule 10 (expression -> NAME .)
151    $end            reduce using rule 10 (expression -> NAME .)
152    RPAREN          reduce using rule 10 (expression -> NAME .)
153
154
155state 8
156
157    (7) expression -> MINUS expression .
158    (3) expression -> expression . PLUS expression
159    (4) expression -> expression . MINUS expression
160    (5) expression -> expression . TIMES expression
161    (6) expression -> expression . DIVIDE expression
162
163    PLUS            reduce using rule 7 (expression -> MINUS expression .)
164    MINUS           reduce using rule 7 (expression -> MINUS expression .)
165    TIMES           reduce using rule 7 (expression -> MINUS expression .)
166    DIVIDE          reduce using rule 7 (expression -> MINUS expression .)
167    $end            reduce using rule 7 (expression -> MINUS expression .)
168    RPAREN          reduce using rule 7 (expression -> MINUS expression .)
169
170  ! PLUS            [ shift and go to state 11 ]
171  ! MINUS           [ shift and go to state 12 ]
172  ! TIMES           [ shift and go to state 14 ]
173  ! DIVIDE          [ shift and go to state 13 ]
174
175
176state 9
177
178    (8) expression -> LPAREN expression . RPAREN
179    (3) expression -> expression . PLUS expression
180    (4) expression -> expression . MINUS expression
181    (5) expression -> expression . TIMES expression
182    (6) expression -> expression . DIVIDE expression
183
184    RPAREN          shift and go to state 15
185    PLUS            shift and go to state 11
186    MINUS           shift and go to state 12
187    TIMES           shift and go to state 14
188    DIVIDE          shift and go to state 13
189
190
191state 10
192
193    (1) statement -> NAME EQUALS . expression
194    (3) expression -> . expression PLUS expression
195    (4) expression -> . expression MINUS expression
196    (5) expression -> . expression TIMES expression
197    (6) expression -> . expression DIVIDE expression
198    (7) expression -> . MINUS expression
199    (8) expression -> . LPAREN expression RPAREN
200    (9) expression -> . NUMBER
201    (10) expression -> . NAME
202
203    MINUS           shift and go to state 1
204    LPAREN          shift and go to state 3
205    NUMBER          shift and go to state 2
206    NAME            shift and go to state 7
207
208    expression                     shift and go to state 16
209
210state 11
211
212    (3) expression -> expression PLUS . expression
213    (3) expression -> . expression PLUS expression
214    (4) expression -> . expression MINUS expression
215    (5) expression -> . expression TIMES expression
216    (6) expression -> . expression DIVIDE expression
217    (7) expression -> . MINUS expression
218    (8) expression -> . LPAREN expression RPAREN
219    (9) expression -> . NUMBER
220    (10) expression -> . NAME
221
222    MINUS           shift and go to state 1
223    LPAREN          shift and go to state 3
224    NUMBER          shift and go to state 2
225    NAME            shift and go to state 7
226
227    expression                     shift and go to state 17
228
229state 12
230
231    (4) expression -> expression MINUS . expression
232    (3) expression -> . expression PLUS expression
233    (4) expression -> . expression MINUS expression
234    (5) expression -> . expression TIMES expression
235    (6) expression -> . expression DIVIDE expression
236    (7) expression -> . MINUS expression
237    (8) expression -> . LPAREN expression RPAREN
238    (9) expression -> . NUMBER
239    (10) expression -> . NAME
240
241    MINUS           shift and go to state 1
242    LPAREN          shift and go to state 3
243    NUMBER          shift and go to state 2
244    NAME            shift and go to state 7
245
246    expression                     shift and go to state 18
247
248state 13
249
250    (6) expression -> expression DIVIDE . expression
251    (3) expression -> . expression PLUS expression
252    (4) expression -> . expression MINUS expression
253    (5) expression -> . expression TIMES expression
254    (6) expression -> . expression DIVIDE expression
255    (7) expression -> . MINUS expression
256    (8) expression -> . LPAREN expression RPAREN
257    (9) expression -> . NUMBER
258    (10) expression -> . NAME
259
260    MINUS           shift and go to state 1
261    LPAREN          shift and go to state 3
262    NUMBER          shift and go to state 2
263    NAME            shift and go to state 7
264
265    expression                     shift and go to state 19
266
267state 14
268
269    (5) expression -> expression TIMES . expression
270    (3) expression -> . expression PLUS expression
271    (4) expression -> . expression MINUS expression
272    (5) expression -> . expression TIMES expression
273    (6) expression -> . expression DIVIDE expression
274    (7) expression -> . MINUS expression
275    (8) expression -> . LPAREN expression RPAREN
276    (9) expression -> . NUMBER
277    (10) expression -> . NAME
278
279    MINUS           shift and go to state 1
280    LPAREN          shift and go to state 3
281    NUMBER          shift and go to state 2
282    NAME            shift and go to state 7
283
284    expression                     shift and go to state 20
285
286state 15
287
288    (8) expression -> LPAREN expression RPAREN .
289
290    PLUS            reduce using rule 8 (expression -> LPAREN expression RPAREN .)
291    MINUS           reduce using rule 8 (expression -> LPAREN expression RPAREN .)
292    TIMES           reduce using rule 8 (expression -> LPAREN expression RPAREN .)
293    DIVIDE          reduce using rule 8 (expression -> LPAREN expression RPAREN .)
294    $end            reduce using rule 8 (expression -> LPAREN expression RPAREN .)
295    RPAREN          reduce using rule 8 (expression -> LPAREN expression RPAREN .)
296
297
298state 16
299
300    (1) statement -> NAME EQUALS expression .
301    (3) expression -> expression . PLUS expression
302    (4) expression -> expression . MINUS expression
303    (5) expression -> expression . TIMES expression
304    (6) expression -> expression . DIVIDE expression
305
306    $end            reduce using rule 1 (statement -> NAME EQUALS expression .)
307    PLUS            shift and go to state 11
308    MINUS           shift and go to state 12
309    TIMES           shift and go to state 14
310    DIVIDE          shift and go to state 13
311
312
313state 17
314
315    (3) expression -> expression PLUS expression .
316    (3) expression -> expression . PLUS expression
317    (4) expression -> expression . MINUS expression
318    (5) expression -> expression . TIMES expression
319    (6) expression -> expression . DIVIDE expression
320
321    PLUS            reduce using rule 3 (expression -> expression PLUS expression .)
322    MINUS           reduce using rule 3 (expression -> expression PLUS expression .)
323    $end            reduce using rule 3 (expression -> expression PLUS expression .)
324    RPAREN          reduce using rule 3 (expression -> expression PLUS expression .)
325    TIMES           shift and go to state 14
326    DIVIDE          shift and go to state 13
327
328  ! TIMES           [ reduce using rule 3 (expression -> expression PLUS expression .) ]
329  ! DIVIDE          [ reduce using rule 3 (expression -> expression PLUS expression .) ]
330  ! PLUS            [ shift and go to state 11 ]
331  ! MINUS           [ shift and go to state 12 ]
332
333
334state 18
335
336    (4) expression -> expression MINUS expression .
337    (3) expression -> expression . PLUS expression
338    (4) expression -> expression . MINUS expression
339    (5) expression -> expression . TIMES expression
340    (6) expression -> expression . DIVIDE expression
341
342    PLUS            reduce using rule 4 (expression -> expression MINUS expression .)
343    MINUS           reduce using rule 4 (expression -> expression MINUS expression .)
344    $end            reduce using rule 4 (expression -> expression MINUS expression .)
345    RPAREN          reduce using rule 4 (expression -> expression MINUS expression .)
346    TIMES           shift and go to state 14
347    DIVIDE          shift and go to state 13
348
349  ! TIMES           [ reduce using rule 4 (expression -> expression MINUS expression .) ]
350  ! DIVIDE          [ reduce using rule 4 (expression -> expression MINUS expression .) ]
351  ! PLUS            [ shift and go to state 11 ]
352  ! MINUS           [ shift and go to state 12 ]
353
354
355state 19
356
357    (6) expression -> expression DIVIDE expression .
358    (3) expression -> expression . PLUS expression
359    (4) expression -> expression . MINUS expression
360    (5) expression -> expression . TIMES expression
361    (6) expression -> expression . DIVIDE expression
362
363    PLUS            reduce using rule 6 (expression -> expression DIVIDE expression .)
364    MINUS           reduce using rule 6 (expression -> expression DIVIDE expression .)
365    TIMES           reduce using rule 6 (expression -> expression DIVIDE expression .)
366    DIVIDE          reduce using rule 6 (expression -> expression DIVIDE expression .)
367    $end            reduce using rule 6 (expression -> expression DIVIDE expression .)
368    RPAREN          reduce using rule 6 (expression -> expression DIVIDE expression .)
369
370  ! PLUS            [ shift and go to state 11 ]
371  ! MINUS           [ shift and go to state 12 ]
372  ! TIMES           [ shift and go to state 14 ]
373  ! DIVIDE          [ shift and go to state 13 ]
374
375
376state 20
377
378    (5) expression -> expression TIMES expression .
379    (3) expression -> expression . PLUS expression
380    (4) expression -> expression . MINUS expression
381    (5) expression -> expression . TIMES expression
382    (6) expression -> expression . DIVIDE expression
383
384    PLUS            reduce using rule 5 (expression -> expression TIMES expression .)
385    MINUS           reduce using rule 5 (expression -> expression TIMES expression .)
386    TIMES           reduce using rule 5 (expression -> expression TIMES expression .)
387    DIVIDE          reduce using rule 5 (expression -> expression TIMES expression .)
388    $end            reduce using rule 5 (expression -> expression TIMES expression .)
389    RPAREN          reduce using rule 5 (expression -> expression TIMES expression .)
390
391  ! PLUS            [ shift and go to state 11 ]
392  ! MINUS           [ shift and go to state 12 ]
393  ! TIMES           [ shift and go to state 14 ]
394  ! DIVIDE          [ shift and go to state 13 ]
395
396