-
Notifications
You must be signed in to change notification settings - Fork 0
/
parser.out
611 lines (460 loc) · 16.6 KB
/
parser.out
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
Created by PLY version 3.11 (http://www.dabeaz.com/ply)
Unused terminals:
ABSTRACT
AND
ARROW
ASSERT
BOOLEAN
BREAK
BYTE
CASE
CATCH
CHAR
CLASS
COMMA
CONST
CONTINUE
DECREMENT
DEFAULT
DOT
DOUBLE
ELSE
ENUM
EQ
EXTENDS
FALSE
FINAL
FINALLY
FLOAT
FOR
GE
GT
IF
IMPLEMENTS
IMPORT
INCREMENT
INSTANCEOF
INT
INTERFACE
LE
LONG
LT
MOD
NATIVE
NE
NEW
NOT
NULL
OR
PACKAGE
PRIVATE
PROTECTED
PUBLIC
RETURN
SHORT
STATIC
STRICTFP
STRING
SUPER
SWITCH
SYNCHRONIZED
THIS
THROW
THROWS
TRANSIENT
TRUE
TRY
VOID
VOLATILE
Grammar
Rule 0 S' -> looping_construct
Rule 1 looping_construct -> do_while_loop
Rule 2 looping_construct -> empty
Rule 3 do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON
Rule 4 statements -> statement
Rule 5 statements -> statements statement
Rule 6 statement -> ID ASSIGN expression SEMICOLON
Rule 7 statement -> empty
Rule 8 expression -> term
Rule 9 expression -> expression PLUS term
Rule 10 expression -> expression MINUS term
Rule 11 term -> factor
Rule 12 term -> term TIMES factor
Rule 13 term -> term DIVIDE factor
Rule 14 factor -> ID
Rule 15 factor -> NUMBER
Rule 16 factor -> LPAREN expression RPAREN
Rule 17 empty -> <empty>
Terminals, with rules where they appear
ABSTRACT :
AND :
ARROW :
ASSERT :
ASSIGN : 6
BOOLEAN :
BREAK :
BYTE :
CASE :
CATCH :
CHAR :
CLASS :
COMMA :
CONST :
CONTINUE :
DECREMENT :
DEFAULT :
DIVIDE : 13
DO : 3
DOT :
DOUBLE :
ELSE :
ENUM :
EQ :
EXTENDS :
FALSE :
FINAL :
FINALLY :
FLOAT :
FOR :
GE :
GT :
ID : 6 14
IF :
IMPLEMENTS :
IMPORT :
INCREMENT :
INSTANCEOF :
INT :
INTERFACE :
LBRACE : 3
LE :
LONG :
LPAREN : 3 16
LT :
MINUS : 10
MOD :
NATIVE :
NE :
NEW :
NOT :
NULL :
NUMBER : 15
OR :
PACKAGE :
PLUS : 9
PRIVATE :
PROTECTED :
PUBLIC :
RBRACE : 3
RETURN :
RPAREN : 3 16
SEMICOLON : 3 6
SHORT :
STATIC :
STRICTFP :
STRING :
SUPER :
SWITCH :
SYNCHRONIZED :
THIS :
THROW :
THROWS :
TIMES : 12
TRANSIENT :
TRUE :
TRY :
VOID :
VOLATILE :
WHILE : 3
error :
Nonterminals, with rules where they appear
do_while_loop : 1
empty : 2 7
expression : 3 6 9 10 16
factor : 11 12 13
looping_construct : 0
statement : 4 5
statements : 3 5
term : 8 9 10 12 13
Parsing method: LALR
state 0
(0) S' -> . looping_construct
(1) looping_construct -> . do_while_loop
(2) looping_construct -> . empty
(3) do_while_loop -> . DO LBRACE statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON
(17) empty -> .
DO shift and go to state 4
$end reduce using rule 17 (empty -> .)
looping_construct shift and go to state 1
do_while_loop shift and go to state 2
empty shift and go to state 3
state 1
(0) S' -> looping_construct .
state 2
(1) looping_construct -> do_while_loop .
$end reduce using rule 1 (looping_construct -> do_while_loop .)
state 3
(2) looping_construct -> empty .
$end reduce using rule 2 (looping_construct -> empty .)
state 4
(3) do_while_loop -> DO . LBRACE statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON
LBRACE shift and go to state 5
state 5
(3) do_while_loop -> DO LBRACE . statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON
(4) statements -> . statement
(5) statements -> . statements statement
(6) statement -> . ID ASSIGN expression SEMICOLON
(7) statement -> . empty
(17) empty -> .
! shift/reduce conflict for ID resolved as shift
ID shift and go to state 8
RBRACE reduce using rule 17 (empty -> .)
! ID [ reduce using rule 17 (empty -> .) ]
statements shift and go to state 6
statement shift and go to state 7
empty shift and go to state 9
state 6
(3) do_while_loop -> DO LBRACE statements . RBRACE WHILE LPAREN expression RPAREN SEMICOLON
(5) statements -> statements . statement
(6) statement -> . ID ASSIGN expression SEMICOLON
(7) statement -> . empty
(17) empty -> .
! shift/reduce conflict for RBRACE resolved as shift
! shift/reduce conflict for ID resolved as shift
RBRACE shift and go to state 10
ID shift and go to state 8
! RBRACE [ reduce using rule 17 (empty -> .) ]
! ID [ reduce using rule 17 (empty -> .) ]
statement shift and go to state 11
empty shift and go to state 9
state 7
(4) statements -> statement .
RBRACE reduce using rule 4 (statements -> statement .)
ID reduce using rule 4 (statements -> statement .)
state 8
(6) statement -> ID . ASSIGN expression SEMICOLON
ASSIGN shift and go to state 12
state 9
(7) statement -> empty .
RBRACE reduce using rule 7 (statement -> empty .)
ID reduce using rule 7 (statement -> empty .)
state 10
(3) do_while_loop -> DO LBRACE statements RBRACE . WHILE LPAREN expression RPAREN SEMICOLON
WHILE shift and go to state 13
state 11
(5) statements -> statements statement .
RBRACE reduce using rule 5 (statements -> statements statement .)
ID reduce using rule 5 (statements -> statements statement .)
state 12
(6) statement -> ID ASSIGN . expression SEMICOLON
(8) expression -> . term
(9) expression -> . expression PLUS term
(10) expression -> . expression MINUS term
(11) term -> . factor
(12) term -> . term TIMES factor
(13) term -> . term DIVIDE factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
expression shift and go to state 15
term shift and go to state 16
factor shift and go to state 17
state 13
(3) do_while_loop -> DO LBRACE statements RBRACE WHILE . LPAREN expression RPAREN SEMICOLON
LPAREN shift and go to state 20
state 14
(14) factor -> ID .
TIMES reduce using rule 14 (factor -> ID .)
DIVIDE reduce using rule 14 (factor -> ID .)
SEMICOLON reduce using rule 14 (factor -> ID .)
PLUS reduce using rule 14 (factor -> ID .)
MINUS reduce using rule 14 (factor -> ID .)
RPAREN reduce using rule 14 (factor -> ID .)
state 15
(6) statement -> ID ASSIGN expression . SEMICOLON
(9) expression -> expression . PLUS term
(10) expression -> expression . MINUS term
SEMICOLON shift and go to state 21
PLUS shift and go to state 22
MINUS shift and go to state 23
state 16
(8) expression -> term .
(12) term -> term . TIMES factor
(13) term -> term . DIVIDE factor
SEMICOLON reduce using rule 8 (expression -> term .)
PLUS reduce using rule 8 (expression -> term .)
MINUS reduce using rule 8 (expression -> term .)
RPAREN reduce using rule 8 (expression -> term .)
TIMES shift and go to state 24
DIVIDE shift and go to state 25
state 17
(11) term -> factor .
TIMES reduce using rule 11 (term -> factor .)
DIVIDE reduce using rule 11 (term -> factor .)
SEMICOLON reduce using rule 11 (term -> factor .)
PLUS reduce using rule 11 (term -> factor .)
MINUS reduce using rule 11 (term -> factor .)
RPAREN reduce using rule 11 (term -> factor .)
state 18
(15) factor -> NUMBER .
TIMES reduce using rule 15 (factor -> NUMBER .)
DIVIDE reduce using rule 15 (factor -> NUMBER .)
SEMICOLON reduce using rule 15 (factor -> NUMBER .)
PLUS reduce using rule 15 (factor -> NUMBER .)
MINUS reduce using rule 15 (factor -> NUMBER .)
RPAREN reduce using rule 15 (factor -> NUMBER .)
state 19
(16) factor -> LPAREN . expression RPAREN
(8) expression -> . term
(9) expression -> . expression PLUS term
(10) expression -> . expression MINUS term
(11) term -> . factor
(12) term -> . term TIMES factor
(13) term -> . term DIVIDE factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
expression shift and go to state 26
term shift and go to state 16
factor shift and go to state 17
state 20
(3) do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN . expression RPAREN SEMICOLON
(8) expression -> . term
(9) expression -> . expression PLUS term
(10) expression -> . expression MINUS term
(11) term -> . factor
(12) term -> . term TIMES factor
(13) term -> . term DIVIDE factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
expression shift and go to state 27
term shift and go to state 16
factor shift and go to state 17
state 21
(6) statement -> ID ASSIGN expression SEMICOLON .
RBRACE reduce using rule 6 (statement -> ID ASSIGN expression SEMICOLON .)
ID reduce using rule 6 (statement -> ID ASSIGN expression SEMICOLON .)
state 22
(9) expression -> expression PLUS . term
(11) term -> . factor
(12) term -> . term TIMES factor
(13) term -> . term DIVIDE factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
term shift and go to state 28
factor shift and go to state 17
state 23
(10) expression -> expression MINUS . term
(11) term -> . factor
(12) term -> . term TIMES factor
(13) term -> . term DIVIDE factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
term shift and go to state 29
factor shift and go to state 17
state 24
(12) term -> term TIMES . factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
factor shift and go to state 30
state 25
(13) term -> term DIVIDE . factor
(14) factor -> . ID
(15) factor -> . NUMBER
(16) factor -> . LPAREN expression RPAREN
ID shift and go to state 14
NUMBER shift and go to state 18
LPAREN shift and go to state 19
factor shift and go to state 31
state 26
(16) factor -> LPAREN expression . RPAREN
(9) expression -> expression . PLUS term
(10) expression -> expression . MINUS term
RPAREN shift and go to state 32
PLUS shift and go to state 22
MINUS shift and go to state 23
state 27
(3) do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN expression . RPAREN SEMICOLON
(9) expression -> expression . PLUS term
(10) expression -> expression . MINUS term
RPAREN shift and go to state 33
PLUS shift and go to state 22
MINUS shift and go to state 23
state 28
(9) expression -> expression PLUS term .
(12) term -> term . TIMES factor
(13) term -> term . DIVIDE factor
SEMICOLON reduce using rule 9 (expression -> expression PLUS term .)
PLUS reduce using rule 9 (expression -> expression PLUS term .)
MINUS reduce using rule 9 (expression -> expression PLUS term .)
RPAREN reduce using rule 9 (expression -> expression PLUS term .)
TIMES shift and go to state 24
DIVIDE shift and go to state 25
state 29
(10) expression -> expression MINUS term .
(12) term -> term . TIMES factor
(13) term -> term . DIVIDE factor
SEMICOLON reduce using rule 10 (expression -> expression MINUS term .)
PLUS reduce using rule 10 (expression -> expression MINUS term .)
MINUS reduce using rule 10 (expression -> expression MINUS term .)
RPAREN reduce using rule 10 (expression -> expression MINUS term .)
TIMES shift and go to state 24
DIVIDE shift and go to state 25
state 30
(12) term -> term TIMES factor .
TIMES reduce using rule 12 (term -> term TIMES factor .)
DIVIDE reduce using rule 12 (term -> term TIMES factor .)
SEMICOLON reduce using rule 12 (term -> term TIMES factor .)
PLUS reduce using rule 12 (term -> term TIMES factor .)
MINUS reduce using rule 12 (term -> term TIMES factor .)
RPAREN reduce using rule 12 (term -> term TIMES factor .)
state 31
(13) term -> term DIVIDE factor .
TIMES reduce using rule 13 (term -> term DIVIDE factor .)
DIVIDE reduce using rule 13 (term -> term DIVIDE factor .)
SEMICOLON reduce using rule 13 (term -> term DIVIDE factor .)
PLUS reduce using rule 13 (term -> term DIVIDE factor .)
MINUS reduce using rule 13 (term -> term DIVIDE factor .)
RPAREN reduce using rule 13 (term -> term DIVIDE factor .)
state 32
(16) factor -> LPAREN expression RPAREN .
TIMES reduce using rule 16 (factor -> LPAREN expression RPAREN .)
DIVIDE reduce using rule 16 (factor -> LPAREN expression RPAREN .)
SEMICOLON reduce using rule 16 (factor -> LPAREN expression RPAREN .)
PLUS reduce using rule 16 (factor -> LPAREN expression RPAREN .)
MINUS reduce using rule 16 (factor -> LPAREN expression RPAREN .)
RPAREN reduce using rule 16 (factor -> LPAREN expression RPAREN .)
state 33
(3) do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN expression RPAREN . SEMICOLON
SEMICOLON shift and go to state 34
state 34
(3) do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON .
$end reduce using rule 3 (do_while_loop -> DO LBRACE statements RBRACE WHILE LPAREN expression RPAREN SEMICOLON .)
WARNING:
WARNING: Conflicts:
WARNING:
WARNING: shift/reduce conflict for ID in state 5 resolved as shift
WARNING: shift/reduce conflict for RBRACE in state 6 resolved as shift
WARNING: shift/reduce conflict for ID in state 6 resolved as shift