-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparser.out
4408 lines (3515 loc) · 171 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
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Created by PLY version 3.9 (http://www.dabeaz.com/ply)
Grammar
Rule 0 S' -> programa
Rule 1 programa -> prog ID SEMICOLON vars eramain funcs main bloque
Rule 2 prog -> PROGRAM
Rule 3 eramain -> empty
Rule 4 main -> MAIN
Rule 5 condicion -> IF LPAREN expresion RPAREN gotoF estatutobloque masbloque
Rule 6 estatutobloque -> estatuto
Rule 7 estatutobloque -> bloque
Rule 8 gotoF -> empty
Rule 9 bloque -> LBRACKET masestatuto RBRACKET
Rule 10 masbloque -> ELSE goto estatutobloque
Rule 11 masbloque -> empty
Rule 12 goto -> empty
Rule 13 ciclo -> while LPAREN expresion RPAREN gotoF estatutobloque goto
Rule 14 while -> WHILE
Rule 15 escritura -> print LPAREN listaprint RPAREN SEMICOLON
Rule 16 print -> PRINT
Rule 17 listaprint -> expresion masprint
Rule 18 masprint -> addQPP listaprint
Rule 19 masprint -> empty
Rule 20 addQPP -> COMMA
Rule 21 asignacion -> ID EQUALS expresion SEMICOLON
Rule 22 asignacion -> idarray LSQBRACKET dimsvar RSQBRACKET EQUALS expresion SEMICOLON
Rule 23 factor -> leftparen expresion rightparen
Rule 24 factor -> varcte
Rule 25 factor -> varid
Rule 26 factor -> llamafunc
Rule 27 factor -> random
Rule 28 leftparen -> LPAREN
Rule 29 rightparen -> RPAREN
Rule 30 varid -> ID
Rule 31 varid -> idarray LSQBRACKET dimsvar RSQBRACKET
Rule 32 idarray -> ID
Rule 33 dimsvar -> expdimvar masdimsvar
Rule 34 expdimvar -> expresion
Rule 35 masdimsvar -> COMMA dimsvar
Rule 36 masdimsvar -> empty
Rule 37 exp -> termino masexp
Rule 38 masexp -> addQPPM exp
Rule 39 masexp -> empty
Rule 40 addQPPM -> PLUS
Rule 41 addQPPM -> MINUS
Rule 42 comaexpresion -> COMMA expresion comaexpresion
Rule 43 comaexpresion -> empty
Rule 44 expresion -> expcomp masexpresion
Rule 45 addQPAO -> AND
Rule 46 addQPAO -> OR
Rule 47 masexpresion -> addQPAO expresion
Rule 48 masexpresion -> empty
Rule 49 termino -> factor masterminos
Rule 50 addQTD -> TIMES
Rule 51 addQTD -> DIVIDE
Rule 52 masterminos -> addQTD termino
Rule 53 masterminos -> empty
Rule 54 expcomp -> exp expcompcontinuo
Rule 55 addQPComp -> MORETHAN
Rule 56 addQPComp -> LESSTHAN
Rule 57 addQPComp -> NOTEQUAL
Rule 58 addQPComp -> ISEQUALTO
Rule 59 addQPComp -> MORETHANEQUAL
Rule 60 addQPComp -> LESSTHANEQUAL
Rule 61 expcompcontinuo -> addQPComp expcomp
Rule 62 expcompcontinuo -> empty
Rule 63 estatuto -> asignacion
Rule 64 estatuto -> condicion
Rule 65 estatuto -> ciclo
Rule 66 estatuto -> escritura
Rule 67 estatuto -> lectura
Rule 68 estatuto -> vars
Rule 69 estatuto -> llamafunc SEMICOLON
Rule 70 estatuto -> COMMENT
Rule 71 estatuto -> CPPCOMMENT
Rule 72 random -> RANDOM LPAREN expresion COMMA expresion RPAREN
Rule 73 lectura -> READ LPAREN ID RPAREN SEMICOLON
Rule 74 llamafunc -> idfunc LPAREN funcargs RPAREN
Rule 75 idfunc -> ID
Rule 76 funcargs -> expresion listafuncargs checarparams
Rule 77 funcargs -> empty
Rule 78 listafuncargs -> COMMA expresion listafuncargs
Rule 79 listafuncargs -> empty
Rule 80 checarparams -> empty
Rule 81 masestatuto -> estatuto masestatuto
Rule 82 masestatuto -> empty
Rule 83 vars -> VAR tipo listaid SEMICOLON vars
Rule 84 vars -> empty
Rule 85 listaid -> initvar masid
Rule 86 initvar -> ID EQUALS expresion
Rule 87 initvar -> ID LSQBRACKET dims RSQBRACKET
Rule 88 initvar -> ID
Rule 89 dims -> CTEINT masdims
Rule 90 masdims -> COMMA dims
Rule 91 masdims -> empty
Rule 92 masid -> COMMA listaid
Rule 93 masid -> empty
Rule 94 funcs -> FUNCTION funcaux LPAREN args masargs RPAREN bloquefunc funcs
Rule 95 funcs -> FUNCTION funcaux LPAREN RPAREN bloquefunc funcs
Rule 96 funcs -> empty
Rule 97 bloquefunc -> LBRACKET masestatuto retorno RBRACKET
Rule 98 retorno -> RETURN expresion SEMICOLON
Rule 99 retorno -> RETURN SEMICOLON
Rule 100 funcaux -> tipo ID
Rule 101 args -> tipo ID
Rule 102 args -> empty
Rule 103 masargs -> COMMA args masargs
Rule 104 masargs -> empty
Rule 105 tipo -> INT
Rule 106 tipo -> FLOAT
Rule 107 tipo -> CHAR
Rule 108 tipo -> BOOL
Rule 109 tipo -> STRING
Rule 110 tipo -> VOID
Rule 111 varcte -> cteint
Rule 112 varcte -> ctefloat
Rule 113 varcte -> ctechar
Rule 114 varcte -> ctestring
Rule 115 varcte -> ctebool
Rule 116 cteint -> CTEINT
Rule 117 ctefloat -> CTEFLOAT
Rule 118 ctechar -> CTECHAR
Rule 119 ctestring -> CTESTRING
Rule 120 ctebool -> TRUE
Rule 121 ctebool -> FALSE
Rule 122 empty -> <empty>
Terminals, with rules where they appear
AND : 45
BOOL : 108
CHAR : 107
COMMA : 20 35 42 72 78 90 92 103
COMMENT : 70
CPPCOMMENT : 71
CTECHAR : 118
CTEFLOAT : 117
CTEINT : 89 116
CTESTRING : 119
DIVIDE : 51
ELSE : 10
EQUALS : 21 22 86
FALSE : 121
FLOAT : 106
FUNCTION : 94 95
ID : 1 21 30 32 73 75 86 87 88 100 101
IF : 5
INT : 105
ISEQUALTO : 58
LBRACKET : 9 97
LESSTHAN : 56
LESSTHANEQUAL : 60
LPAREN : 5 13 15 28 72 73 74 94 95
LSQBRACKET : 22 31 87
MAIN : 4
MINUS : 41
MORETHAN : 55
MORETHANEQUAL : 59
NOTEQUAL : 57
OR : 46
PLUS : 40
PRINT : 16
PROGRAM : 2
RANDOM : 72
RBRACKET : 9 97
READ : 73
RETURN : 98 99
RPAREN : 5 13 15 29 72 73 74 94 95
RSQBRACKET : 22 31 87
SEMICOLON : 1 15 21 22 69 73 83 98 99
STRING : 109
TIMES : 50
TRUE : 120
VAR : 83
VOID : 110
WHILE : 14
error :
Nonterminals, with rules where they appear
addQPAO : 47
addQPComp : 61
addQPP : 18
addQPPM : 38
addQTD : 52
args : 94 103
asignacion : 63
bloque : 1 7
bloquefunc : 94 95
checarparams : 76
ciclo : 65
comaexpresion : 42
condicion : 64
ctebool : 115
ctechar : 113
ctefloat : 112
cteint : 111
ctestring : 114
dims : 87 90
dimsvar : 22 31 35
empty : 3 8 11 12 19 36 39 43 48 53 62 77 79 80 82 84 91 93 96 102 104
eramain : 1
escritura : 66
estatuto : 6 81
estatutobloque : 5 10 13
exp : 38 54
expcomp : 44 61
expcompcontinuo : 54
expdimvar : 33
expresion : 5 13 17 21 22 23 34 42 47 72 72 76 78 86 98
factor : 49
funcargs : 74
funcaux : 94 95
funcs : 1 94 95
goto : 10 13
gotoF : 5 13
idarray : 22 31
idfunc : 74
initvar : 85
lectura : 67
leftparen : 23
listafuncargs : 76 78
listaid : 83 92
listaprint : 15 18
llamafunc : 26 69
main : 1
masargs : 94 103
masbloque : 5
masdims : 89
masdimsvar : 33
masestatuto : 9 81 97
masexp : 37
masexpresion : 44
masid : 85
masprint : 17
masterminos : 49
print : 15
prog : 1
programa : 0
random : 27
retorno : 97
rightparen : 23
termino : 37 52
tipo : 83 100 101
varcte : 24
varid : 25
vars : 1 68 83
while : 13
Parsing method: LALR
state 0
(0) S' -> . programa
(1) programa -> . prog ID SEMICOLON vars eramain funcs main bloque
(2) prog -> . PROGRAM
PROGRAM shift and go to state 3
programa shift and go to state 1
prog shift and go to state 2
state 1
(0) S' -> programa .
state 2
(1) programa -> prog . ID SEMICOLON vars eramain funcs main bloque
ID shift and go to state 4
state 3
(2) prog -> PROGRAM .
ID reduce using rule 2 (prog -> PROGRAM .)
state 4
(1) programa -> prog ID . SEMICOLON vars eramain funcs main bloque
SEMICOLON shift and go to state 5
state 5
(1) programa -> prog ID SEMICOLON . vars eramain funcs main bloque
(83) vars -> . VAR tipo listaid SEMICOLON vars
(84) vars -> . empty
(122) empty -> .
VAR shift and go to state 6
FUNCTION reduce using rule 122 (empty -> .)
MAIN reduce using rule 122 (empty -> .)
vars shift and go to state 8
empty shift and go to state 7
state 6
(83) vars -> VAR . tipo listaid SEMICOLON vars
(105) tipo -> . INT
(106) tipo -> . FLOAT
(107) tipo -> . CHAR
(108) tipo -> . BOOL
(109) tipo -> . STRING
(110) tipo -> . VOID
INT shift and go to state 15
FLOAT shift and go to state 10
CHAR shift and go to state 13
BOOL shift and go to state 12
STRING shift and go to state 9
VOID shift and go to state 11
tipo shift and go to state 14
state 7
(84) vars -> empty .
FUNCTION reduce using rule 84 (vars -> empty .)
MAIN reduce using rule 84 (vars -> empty .)
ELSE reduce using rule 84 (vars -> empty .)
COMMENT reduce using rule 84 (vars -> empty .)
CPPCOMMENT reduce using rule 84 (vars -> empty .)
ID reduce using rule 84 (vars -> empty .)
IF reduce using rule 84 (vars -> empty .)
READ reduce using rule 84 (vars -> empty .)
VAR reduce using rule 84 (vars -> empty .)
WHILE reduce using rule 84 (vars -> empty .)
PRINT reduce using rule 84 (vars -> empty .)
RBRACKET reduce using rule 84 (vars -> empty .)
RETURN reduce using rule 84 (vars -> empty .)
state 8
(1) programa -> prog ID SEMICOLON vars . eramain funcs main bloque
(3) eramain -> . empty
(122) empty -> .
FUNCTION reduce using rule 122 (empty -> .)
MAIN reduce using rule 122 (empty -> .)
eramain shift and go to state 16
empty shift and go to state 17
state 9
(109) tipo -> STRING .
ID reduce using rule 109 (tipo -> STRING .)
state 10
(106) tipo -> FLOAT .
ID reduce using rule 106 (tipo -> FLOAT .)
state 11
(110) tipo -> VOID .
ID reduce using rule 110 (tipo -> VOID .)
state 12
(108) tipo -> BOOL .
ID reduce using rule 108 (tipo -> BOOL .)
state 13
(107) tipo -> CHAR .
ID reduce using rule 107 (tipo -> CHAR .)
state 14
(83) vars -> VAR tipo . listaid SEMICOLON vars
(85) listaid -> . initvar masid
(86) initvar -> . ID EQUALS expresion
(87) initvar -> . ID LSQBRACKET dims RSQBRACKET
(88) initvar -> . ID
ID shift and go to state 20
initvar shift and go to state 18
listaid shift and go to state 19
state 15
(105) tipo -> INT .
ID reduce using rule 105 (tipo -> INT .)
state 16
(1) programa -> prog ID SEMICOLON vars eramain . funcs main bloque
(94) funcs -> . FUNCTION funcaux LPAREN args masargs RPAREN bloquefunc funcs
(95) funcs -> . FUNCTION funcaux LPAREN RPAREN bloquefunc funcs
(96) funcs -> . empty
(122) empty -> .
FUNCTION shift and go to state 21
MAIN reduce using rule 122 (empty -> .)
funcs shift and go to state 23
empty shift and go to state 22
state 17
(3) eramain -> empty .
FUNCTION reduce using rule 3 (eramain -> empty .)
MAIN reduce using rule 3 (eramain -> empty .)
state 18
(85) listaid -> initvar . masid
(92) masid -> . COMMA listaid
(93) masid -> . empty
(122) empty -> .
COMMA shift and go to state 26
SEMICOLON reduce using rule 122 (empty -> .)
empty shift and go to state 24
masid shift and go to state 25
state 19
(83) vars -> VAR tipo listaid . SEMICOLON vars
SEMICOLON shift and go to state 27
state 20
(86) initvar -> ID . EQUALS expresion
(87) initvar -> ID . LSQBRACKET dims RSQBRACKET
(88) initvar -> ID .
EQUALS shift and go to state 29
LSQBRACKET shift and go to state 28
COMMA reduce using rule 88 (initvar -> ID .)
SEMICOLON reduce using rule 88 (initvar -> ID .)
state 21
(94) funcs -> FUNCTION . funcaux LPAREN args masargs RPAREN bloquefunc funcs
(95) funcs -> FUNCTION . funcaux LPAREN RPAREN bloquefunc funcs
(100) funcaux -> . tipo ID
(105) tipo -> . INT
(106) tipo -> . FLOAT
(107) tipo -> . CHAR
(108) tipo -> . BOOL
(109) tipo -> . STRING
(110) tipo -> . VOID
INT shift and go to state 15
FLOAT shift and go to state 10
CHAR shift and go to state 13
BOOL shift and go to state 12
STRING shift and go to state 9
VOID shift and go to state 11
funcaux shift and go to state 30
tipo shift and go to state 31
state 22
(96) funcs -> empty .
MAIN reduce using rule 96 (funcs -> empty .)
state 23
(1) programa -> prog ID SEMICOLON vars eramain funcs . main bloque
(4) main -> . MAIN
MAIN shift and go to state 33
main shift and go to state 32
state 24
(93) masid -> empty .
SEMICOLON reduce using rule 93 (masid -> empty .)
state 25
(85) listaid -> initvar masid .
SEMICOLON reduce using rule 85 (listaid -> initvar masid .)
state 26
(92) masid -> COMMA . listaid
(85) listaid -> . initvar masid
(86) initvar -> . ID EQUALS expresion
(87) initvar -> . ID LSQBRACKET dims RSQBRACKET
(88) initvar -> . ID
ID shift and go to state 20
listaid shift and go to state 34
initvar shift and go to state 18
state 27
(83) vars -> VAR tipo listaid SEMICOLON . vars
(83) vars -> . VAR tipo listaid SEMICOLON vars
(84) vars -> . empty
(122) empty -> .
! shift/reduce conflict for VAR resolved as shift
VAR shift and go to state 6
FUNCTION reduce using rule 122 (empty -> .)
MAIN reduce using rule 122 (empty -> .)
COMMENT reduce using rule 122 (empty -> .)
CPPCOMMENT reduce using rule 122 (empty -> .)
ID reduce using rule 122 (empty -> .)
IF reduce using rule 122 (empty -> .)
READ reduce using rule 122 (empty -> .)
WHILE reduce using rule 122 (empty -> .)
PRINT reduce using rule 122 (empty -> .)
RBRACKET reduce using rule 122 (empty -> .)
RETURN reduce using rule 122 (empty -> .)
ELSE reduce using rule 122 (empty -> .)
! VAR [ reduce using rule 122 (empty -> .) ]
vars shift and go to state 35
empty shift and go to state 7
state 28
(87) initvar -> ID LSQBRACKET . dims RSQBRACKET
(89) dims -> . CTEINT masdims
CTEINT shift and go to state 37
dims shift and go to state 36
state 29
(86) initvar -> ID EQUALS . expresion
(44) expresion -> . expcomp masexpresion
(54) expcomp -> . exp expcompcontinuo
(37) exp -> . termino masexp
(49) termino -> . factor masterminos
(23) factor -> . leftparen expresion rightparen
(24) factor -> . varcte
(25) factor -> . varid
(26) factor -> . llamafunc
(27) factor -> . random
(28) leftparen -> . LPAREN
(111) varcte -> . cteint
(112) varcte -> . ctefloat
(113) varcte -> . ctechar
(114) varcte -> . ctestring
(115) varcte -> . ctebool
(30) varid -> . ID
(31) varid -> . idarray LSQBRACKET dimsvar RSQBRACKET
(74) llamafunc -> . idfunc LPAREN funcargs RPAREN
(72) random -> . RANDOM LPAREN expresion COMMA expresion RPAREN
(116) cteint -> . CTEINT
(117) ctefloat -> . CTEFLOAT
(118) ctechar -> . CTECHAR
(119) ctestring -> . CTESTRING
(120) ctebool -> . TRUE
(121) ctebool -> . FALSE
(32) idarray -> . ID
(75) idfunc -> . ID
LPAREN shift and go to state 48
ID shift and go to state 46
RANDOM shift and go to state 41
CTEINT shift and go to state 51
CTEFLOAT shift and go to state 45
CTECHAR shift and go to state 39
CTESTRING shift and go to state 56
TRUE shift and go to state 62
FALSE shift and go to state 60
cteint shift and go to state 38
exp shift and go to state 40
idfunc shift and go to state 50
expcomp shift and go to state 42
ctestring shift and go to state 44
idarray shift and go to state 47
ctefloat shift and go to state 49
expresion shift and go to state 52
leftparen shift and go to state 53
ctebool shift and go to state 54
random shift and go to state 43
varid shift and go to state 55
ctechar shift and go to state 57
varcte shift and go to state 58
llamafunc shift and go to state 59
factor shift and go to state 61
termino shift and go to state 63
state 30
(94) funcs -> FUNCTION funcaux . LPAREN args masargs RPAREN bloquefunc funcs
(95) funcs -> FUNCTION funcaux . LPAREN RPAREN bloquefunc funcs
LPAREN shift and go to state 64
state 31
(100) funcaux -> tipo . ID
ID shift and go to state 65
state 32
(1) programa -> prog ID SEMICOLON vars eramain funcs main . bloque
(9) bloque -> . LBRACKET masestatuto RBRACKET
LBRACKET shift and go to state 67
bloque shift and go to state 66
state 33
(4) main -> MAIN .
LBRACKET reduce using rule 4 (main -> MAIN .)
state 34
(92) masid -> COMMA listaid .
SEMICOLON reduce using rule 92 (masid -> COMMA listaid .)
state 35
(83) vars -> VAR tipo listaid SEMICOLON vars .
COMMENT reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
CPPCOMMENT reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
ID reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
IF reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
READ reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
VAR reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
WHILE reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
PRINT reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
RBRACKET reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
RETURN reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
FUNCTION reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
MAIN reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
ELSE reduce using rule 83 (vars -> VAR tipo listaid SEMICOLON vars .)
state 36
(87) initvar -> ID LSQBRACKET dims . RSQBRACKET
RSQBRACKET shift and go to state 68
state 37
(89) dims -> CTEINT . masdims
(90) masdims -> . COMMA dims
(91) masdims -> . empty
(122) empty -> .
COMMA shift and go to state 69
RSQBRACKET reduce using rule 122 (empty -> .)
empty shift and go to state 70
masdims shift and go to state 71
state 38
(111) varcte -> cteint .
TIMES reduce using rule 111 (varcte -> cteint .)
DIVIDE reduce using rule 111 (varcte -> cteint .)
PLUS reduce using rule 111 (varcte -> cteint .)
MINUS reduce using rule 111 (varcte -> cteint .)
MORETHAN reduce using rule 111 (varcte -> cteint .)
LESSTHAN reduce using rule 111 (varcte -> cteint .)
NOTEQUAL reduce using rule 111 (varcte -> cteint .)
ISEQUALTO reduce using rule 111 (varcte -> cteint .)
MORETHANEQUAL reduce using rule 111 (varcte -> cteint .)
LESSTHANEQUAL reduce using rule 111 (varcte -> cteint .)
AND reduce using rule 111 (varcte -> cteint .)
OR reduce using rule 111 (varcte -> cteint .)
COMMA reduce using rule 111 (varcte -> cteint .)
SEMICOLON reduce using rule 111 (varcte -> cteint .)
RPAREN reduce using rule 111 (varcte -> cteint .)
RSQBRACKET reduce using rule 111 (varcte -> cteint .)
state 39
(118) ctechar -> CTECHAR .
TIMES reduce using rule 118 (ctechar -> CTECHAR .)
DIVIDE reduce using rule 118 (ctechar -> CTECHAR .)
PLUS reduce using rule 118 (ctechar -> CTECHAR .)
MINUS reduce using rule 118 (ctechar -> CTECHAR .)
MORETHAN reduce using rule 118 (ctechar -> CTECHAR .)
LESSTHAN reduce using rule 118 (ctechar -> CTECHAR .)
NOTEQUAL reduce using rule 118 (ctechar -> CTECHAR .)
ISEQUALTO reduce using rule 118 (ctechar -> CTECHAR .)
MORETHANEQUAL reduce using rule 118 (ctechar -> CTECHAR .)
LESSTHANEQUAL reduce using rule 118 (ctechar -> CTECHAR .)
AND reduce using rule 118 (ctechar -> CTECHAR .)
OR reduce using rule 118 (ctechar -> CTECHAR .)
COMMA reduce using rule 118 (ctechar -> CTECHAR .)
RPAREN reduce using rule 118 (ctechar -> CTECHAR .)
SEMICOLON reduce using rule 118 (ctechar -> CTECHAR .)
RSQBRACKET reduce using rule 118 (ctechar -> CTECHAR .)
state 40
(54) expcomp -> exp . expcompcontinuo
(61) expcompcontinuo -> . addQPComp expcomp
(62) expcompcontinuo -> . empty
(55) addQPComp -> . MORETHAN
(56) addQPComp -> . LESSTHAN
(57) addQPComp -> . NOTEQUAL
(58) addQPComp -> . ISEQUALTO
(59) addQPComp -> . MORETHANEQUAL
(60) addQPComp -> . LESSTHANEQUAL
(122) empty -> .
MORETHAN shift and go to state 75
LESSTHAN shift and go to state 73
NOTEQUAL shift and go to state 78
ISEQUALTO shift and go to state 79
MORETHANEQUAL shift and go to state 76
LESSTHANEQUAL shift and go to state 72
AND reduce using rule 122 (empty -> .)
OR reduce using rule 122 (empty -> .)
COMMA reduce using rule 122 (empty -> .)
SEMICOLON reduce using rule 122 (empty -> .)
RPAREN reduce using rule 122 (empty -> .)
RSQBRACKET reduce using rule 122 (empty -> .)
addQPComp shift and go to state 77
empty shift and go to state 74
expcompcontinuo shift and go to state 80
state 41
(72) random -> RANDOM . LPAREN expresion COMMA expresion RPAREN
LPAREN shift and go to state 81
state 42
(44) expresion -> expcomp . masexpresion
(47) masexpresion -> . addQPAO expresion
(48) masexpresion -> . empty
(45) addQPAO -> . AND
(46) addQPAO -> . OR
(122) empty -> .
AND shift and go to state 82
OR shift and go to state 84
COMMA reduce using rule 122 (empty -> .)
SEMICOLON reduce using rule 122 (empty -> .)
RPAREN reduce using rule 122 (empty -> .)
RSQBRACKET reduce using rule 122 (empty -> .)
addQPAO shift and go to state 85
masexpresion shift and go to state 86
empty shift and go to state 83
state 43
(27) factor -> random .
TIMES reduce using rule 27 (factor -> random .)
DIVIDE reduce using rule 27 (factor -> random .)
PLUS reduce using rule 27 (factor -> random .)
MINUS reduce using rule 27 (factor -> random .)
MORETHAN reduce using rule 27 (factor -> random .)
LESSTHAN reduce using rule 27 (factor -> random .)
NOTEQUAL reduce using rule 27 (factor -> random .)
ISEQUALTO reduce using rule 27 (factor -> random .)
MORETHANEQUAL reduce using rule 27 (factor -> random .)
LESSTHANEQUAL reduce using rule 27 (factor -> random .)
AND reduce using rule 27 (factor -> random .)
OR reduce using rule 27 (factor -> random .)
COMMA reduce using rule 27 (factor -> random .)
SEMICOLON reduce using rule 27 (factor -> random .)
RPAREN reduce using rule 27 (factor -> random .)
RSQBRACKET reduce using rule 27 (factor -> random .)
state 44
(114) varcte -> ctestring .
TIMES reduce using rule 114 (varcte -> ctestring .)
DIVIDE reduce using rule 114 (varcte -> ctestring .)
PLUS reduce using rule 114 (varcte -> ctestring .)
MINUS reduce using rule 114 (varcte -> ctestring .)
MORETHAN reduce using rule 114 (varcte -> ctestring .)
LESSTHAN reduce using rule 114 (varcte -> ctestring .)
NOTEQUAL reduce using rule 114 (varcte -> ctestring .)
ISEQUALTO reduce using rule 114 (varcte -> ctestring .)
MORETHANEQUAL reduce using rule 114 (varcte -> ctestring .)
LESSTHANEQUAL reduce using rule 114 (varcte -> ctestring .)
AND reduce using rule 114 (varcte -> ctestring .)
OR reduce using rule 114 (varcte -> ctestring .)
COMMA reduce using rule 114 (varcte -> ctestring .)
SEMICOLON reduce using rule 114 (varcte -> ctestring .)
RPAREN reduce using rule 114 (varcte -> ctestring .)
RSQBRACKET reduce using rule 114 (varcte -> ctestring .)
state 45
(117) ctefloat -> CTEFLOAT .
TIMES reduce using rule 117 (ctefloat -> CTEFLOAT .)
DIVIDE reduce using rule 117 (ctefloat -> CTEFLOAT .)
PLUS reduce using rule 117 (ctefloat -> CTEFLOAT .)
MINUS reduce using rule 117 (ctefloat -> CTEFLOAT .)
MORETHAN reduce using rule 117 (ctefloat -> CTEFLOAT .)
LESSTHAN reduce using rule 117 (ctefloat -> CTEFLOAT .)
NOTEQUAL reduce using rule 117 (ctefloat -> CTEFLOAT .)
ISEQUALTO reduce using rule 117 (ctefloat -> CTEFLOAT .)
MORETHANEQUAL reduce using rule 117 (ctefloat -> CTEFLOAT .)
LESSTHANEQUAL reduce using rule 117 (ctefloat -> CTEFLOAT .)
AND reduce using rule 117 (ctefloat -> CTEFLOAT .)
OR reduce using rule 117 (ctefloat -> CTEFLOAT .)
SEMICOLON reduce using rule 117 (ctefloat -> CTEFLOAT .)
RPAREN reduce using rule 117 (ctefloat -> CTEFLOAT .)
COMMA reduce using rule 117 (ctefloat -> CTEFLOAT .)
RSQBRACKET reduce using rule 117 (ctefloat -> CTEFLOAT .)
state 46
(30) varid -> ID .
(32) idarray -> ID .
(75) idfunc -> ID .
TIMES reduce using rule 30 (varid -> ID .)
DIVIDE reduce using rule 30 (varid -> ID .)
PLUS reduce using rule 30 (varid -> ID .)
MINUS reduce using rule 30 (varid -> ID .)
MORETHAN reduce using rule 30 (varid -> ID .)
LESSTHAN reduce using rule 30 (varid -> ID .)
NOTEQUAL reduce using rule 30 (varid -> ID .)
ISEQUALTO reduce using rule 30 (varid -> ID .)
MORETHANEQUAL reduce using rule 30 (varid -> ID .)
LESSTHANEQUAL reduce using rule 30 (varid -> ID .)
AND reduce using rule 30 (varid -> ID .)
OR reduce using rule 30 (varid -> ID .)
COMMA reduce using rule 30 (varid -> ID .)
RPAREN reduce using rule 30 (varid -> ID .)
SEMICOLON reduce using rule 30 (varid -> ID .)
RSQBRACKET reduce using rule 30 (varid -> ID .)
LSQBRACKET reduce using rule 32 (idarray -> ID .)
LPAREN reduce using rule 75 (idfunc -> ID .)
state 47
(31) varid -> idarray . LSQBRACKET dimsvar RSQBRACKET
LSQBRACKET shift and go to state 87
state 48
(28) leftparen -> LPAREN .
LPAREN reduce using rule 28 (leftparen -> LPAREN .)
ID reduce using rule 28 (leftparen -> LPAREN .)
RANDOM reduce using rule 28 (leftparen -> LPAREN .)
CTEINT reduce using rule 28 (leftparen -> LPAREN .)
CTEFLOAT reduce using rule 28 (leftparen -> LPAREN .)
CTECHAR reduce using rule 28 (leftparen -> LPAREN .)
CTESTRING reduce using rule 28 (leftparen -> LPAREN .)
TRUE reduce using rule 28 (leftparen -> LPAREN .)
FALSE reduce using rule 28 (leftparen -> LPAREN .)
state 49
(112) varcte -> ctefloat .
TIMES reduce using rule 112 (varcte -> ctefloat .)
DIVIDE reduce using rule 112 (varcte -> ctefloat .)
PLUS reduce using rule 112 (varcte -> ctefloat .)
MINUS reduce using rule 112 (varcte -> ctefloat .)
MORETHAN reduce using rule 112 (varcte -> ctefloat .)
LESSTHAN reduce using rule 112 (varcte -> ctefloat .)
NOTEQUAL reduce using rule 112 (varcte -> ctefloat .)
ISEQUALTO reduce using rule 112 (varcte -> ctefloat .)
MORETHANEQUAL reduce using rule 112 (varcte -> ctefloat .)
LESSTHANEQUAL reduce using rule 112 (varcte -> ctefloat .)
AND reduce using rule 112 (varcte -> ctefloat .)
OR reduce using rule 112 (varcte -> ctefloat .)
COMMA reduce using rule 112 (varcte -> ctefloat .)
SEMICOLON reduce using rule 112 (varcte -> ctefloat .)
RPAREN reduce using rule 112 (varcte -> ctefloat .)
RSQBRACKET reduce using rule 112 (varcte -> ctefloat .)
state 50
(74) llamafunc -> idfunc . LPAREN funcargs RPAREN
LPAREN shift and go to state 88
state 51
(116) cteint -> CTEINT .
TIMES reduce using rule 116 (cteint -> CTEINT .)
DIVIDE reduce using rule 116 (cteint -> CTEINT .)
PLUS reduce using rule 116 (cteint -> CTEINT .)
MINUS reduce using rule 116 (cteint -> CTEINT .)
MORETHAN reduce using rule 116 (cteint -> CTEINT .)
LESSTHAN reduce using rule 116 (cteint -> CTEINT .)
NOTEQUAL reduce using rule 116 (cteint -> CTEINT .)
ISEQUALTO reduce using rule 116 (cteint -> CTEINT .)
MORETHANEQUAL reduce using rule 116 (cteint -> CTEINT .)
LESSTHANEQUAL reduce using rule 116 (cteint -> CTEINT .)
AND reduce using rule 116 (cteint -> CTEINT .)
OR reduce using rule 116 (cteint -> CTEINT .)
SEMICOLON reduce using rule 116 (cteint -> CTEINT .)
COMMA reduce using rule 116 (cteint -> CTEINT .)
RPAREN reduce using rule 116 (cteint -> CTEINT .)
RSQBRACKET reduce using rule 116 (cteint -> CTEINT .)
state 52
(86) initvar -> ID EQUALS expresion .
COMMA reduce using rule 86 (initvar -> ID EQUALS expresion .)
SEMICOLON reduce using rule 86 (initvar -> ID EQUALS expresion .)
state 53
(23) factor -> leftparen . expresion rightparen
(44) expresion -> . expcomp masexpresion
(54) expcomp -> . exp expcompcontinuo
(37) exp -> . termino masexp
(49) termino -> . factor masterminos
(23) factor -> . leftparen expresion rightparen
(24) factor -> . varcte
(25) factor -> . varid
(26) factor -> . llamafunc
(27) factor -> . random
(28) leftparen -> . LPAREN
(111) varcte -> . cteint
(112) varcte -> . ctefloat
(113) varcte -> . ctechar
(114) varcte -> . ctestring
(115) varcte -> . ctebool
(30) varid -> . ID
(31) varid -> . idarray LSQBRACKET dimsvar RSQBRACKET
(74) llamafunc -> . idfunc LPAREN funcargs RPAREN
(72) random -> . RANDOM LPAREN expresion COMMA expresion RPAREN
(116) cteint -> . CTEINT
(117) ctefloat -> . CTEFLOAT
(118) ctechar -> . CTECHAR
(119) ctestring -> . CTESTRING