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