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