root/docs/grammar.bnf

Revision 9aa07a813dc00d11ac4925d9d8bd77d6ad5621df, 87.7 kB (checked in by Philip Herron <redbrain@…>, 2 years ago)

cleanup adding object creation code

  • Property mode set to 100644
Line 
1Grammar
2
3    0 $accept: declarations $end
4
5    1 declarations: /* empty */
6    2             | declarations statement
7    3             | error
8
9    4 class_definition: "object" IDENTIFIER '{' procedure '}'
10
11    5 object_creation: "new" arbitrary_call
12
13    6 dot_accessor: dot_accessor '.' accessor
14    7             | accessor
15
16    8 member_accessor: dot_accessor
17
18    9 accessor: symbol_accessor
19   10         | arbitrary_call
20   11         | object_creation
21
22   12 symbol_accessor: IDENTIFIER
23   13                | IDENTIFIER '[' expression ']'
24
25   14 function_definition: "defun" IDENTIFIER '{' procedure '}'
26   15                    | "defun" IDENTIFIER '(' ')' '{' procedure '}'
27   16                    | "defun" IDENTIFIER '(' parameters ')' '{' procedure '}'
28
29   17 expression: express
30
31   18 express: symbol_accessor '=' express
32   19        | express '+' express
33   20        | express '-' express
34   21        | express '/' express
35   22        | express '*' express
36   23        | express '^' express
37   24        | express "<" express
38   25        | express ">" express
39   26        | express "<=" express
40   27        | express ">=" express
41   28        | express "==" express
42   29        | express "!=" express
43   30        | express "||" express
44   31        | express "&&" express
45   32        | '-' express
46   33        | symbol_accessor "++"
47   34        | symbol_accessor "--"
48   35        | symbol_accessor "+=" express
49   36        | symbol_accessor "-=" express
50   37        | symbol_accessor "*=" express
51   38        | symbol_accessor "/=" express
52   39        | '(' express ')'
53   40        | primitive
54
55   41 procedure: pblock
56
57   42 pblock: pblock statement
58   43       | statement
59
60   44 loop_while: "while" '(' expression ')' '{' procedure '}'
61
62   45 loop_for: "for" '(' expression ';' expression ';' expression ')' '{' procedure '}'
63
64   46 control_structure: loop_while
65   47                  | loop_for
66   48                  | conditionals
67   49                  | function_definition
68   50                  | class_definition
69
70   51 struct_if: "if" '(' expression ')' '{' procedure '}'
71
72   52 struct_elif: "elif" '(' expression ')' '{' procedure '}'
73
74   53 struct_else: "else" '{' procedure '}'
75
76   54 struct_elif_block: struct_elif_block struct_elif
77   55                  | struct_elif
78
79   56 elif_block: /* empty */
80   57           | struct_elif_block
81
82   58 else_block: /* empty */
83   59           | struct_else
84
85   60 conditionals: struct_if elif_block else_block
86
87   61 statement: expression ';'
88   62          | print_keyword ';'
89   63          | break_keyword ';'
90   64          | return_keyword ';'
91   65          | continue_keyword ';'
92   66          | delete_keyword ';'
93   67          | control_structure
94
95   68 delete_keyword: "delete" IDENTIFIER
96
97   69 continue_keyword: "conintue"
98
99   70 break_keyword: "break"
100
101   71 return_keyword: "return" expression
102
103   72 arbitrary_call: IDENTIFIER '(' ')'
104   73               | IDENTIFIER '(' arguments ')'
105
106   74 print_keyword: "print" arguments
107
108   75 list_symbol: '[' arguments ']'
109
110   76 parameters_expression: parameters_expression ',' IDENTIFIER
111   77                      | IDENTIFIER
112
113   78 parameters: parameters_expression
114
115   79 arguments: argument_list
116
117   80 argument_list: argument_list ',' expression
118   81              | expression
119
120   82 primitive: member_accessor
121   83          | "nil"
122   84          | INTEGER
123   85          | DOUBLE
124   86          | "true"
125   87          | "false"
126   88          | CHAR
127   89          | STRING
128   90          | list_symbol
129
130
131Terminals, with rules where they appear
132
133$end (0) 0
134'(' (40) 15 16 39 44 45 51 52 72 73
135')' (41) 15 16 39 44 45 51 52 72 73
136'*' (42) 22
137'+' (43) 19
138',' (44) 76 80
139'-' (45) 20 32
140'.' (46) 6
141'/' (47) 21
142';' (59) 45 61 62 63 64 65 66
143'=' (61) 18
144'[' (91) 13 75
145']' (93) 13 75
146'^' (94) 23
147'{' (123) 4 14 15 16 44 45 51 52 53
148'}' (125) 4 14 15 16 44 45 51 52 53
149error (256) 3
150"object" (258) 4
151"defun" (259) 14 15 16
152"break" (260) 70
153"conintue" (261) 69
154"return" (262) 71
155"delete" (263) 68
156"while" (264) 44
157"for" (265) 45
158"new" (266) 5
159"if" (267) 51
160"elif" (268) 52
161"else" (269) 53
162"print" (270) 74
163"true" (271) 86
164"false" (272) 87
165"nil" (273) 83
166"||" (274) 30
167"&&" (275) 31
168"==" (276) 28
169"+=" (277) 35
170"*=" (278) 37
171"-=" (279) 36
172"/=" (280) 38
173"!=" (281) 29
174"<" (282) 24
175"<=" (283) 26
176">" (284) 25
177">=" (285) 27
178"++" (286) 33
179"--" (287) 34
180CHAR (288) 88
181STRING (289) 89
182INTEGER (290) 84
183DOUBLE (291) 85
184IDENTIFIER (292) 4 12 13 14 15 16 68 72 73 76 77
185UMINUS (293)
186
187
188Nonterminals, with rules where they appear
189
190$accept (54)
191    on left: 0
192declarations (55)
193    on left: 1 2 3, on right: 0 2
194class_definition (56)
195    on left: 4, on right: 50
196object_creation (57)
197    on left: 5, on right: 11
198dot_accessor (58)
199    on left: 6 7, on right: 6 8
200member_accessor (59)
201    on left: 8, on right: 82
202accessor (60)
203    on left: 9 10 11, on right: 6 7
204symbol_accessor (61)
205    on left: 12 13, on right: 9 18 33 34 35 36 37 38
206function_definition (62)
207    on left: 14 15 16, on right: 49
208expression (63)
209    on left: 17, on right: 13 44 45 51 52 61 71 80 81
210express (64)
211    on left: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
212    36 37 38 39 40, on right: 17 18 19 20 21 22 23 24 25 26 27 28 29
213    30 31 32 35 36 37 38 39
214procedure (65)
215    on left: 41, on right: 4 14 15 16 44 45 51 52 53
216pblock (66)
217    on left: 42 43, on right: 41 42
218loop_while (67)
219    on left: 44, on right: 46
220loop_for (68)
221    on left: 45, on right: 47
222control_structure (69)
223    on left: 46 47 48 49 50, on right: 67
224struct_if (70)
225    on left: 51, on right: 60
226struct_elif (71)
227    on left: 52, on right: 54 55
228struct_else (72)
229    on left: 53, on right: 59
230struct_elif_block (73)
231    on left: 54 55, on right: 54 57
232elif_block (74)
233    on left: 56 57, on right: 60
234else_block (75)
235    on left: 58 59, on right: 60
236conditionals (76)
237    on left: 60, on right: 48
238statement (77)
239    on left: 61 62 63 64 65 66 67, on right: 2 42 43
240delete_keyword (78)
241    on left: 68, on right: 66
242continue_keyword (79)
243    on left: 69, on right: 65
244break_keyword (80)
245    on left: 70, on right: 63
246return_keyword (81)
247    on left: 71, on right: 64
248arbitrary_call (82)
249    on left: 72 73, on right: 5 10
250print_keyword (83)
251    on left: 74, on right: 62
252list_symbol (84)
253    on left: 75, on right: 90
254parameters_expression (85)
255    on left: 76 77, on right: 76 78
256parameters (86)
257    on left: 78, on right: 16
258arguments (87)
259    on left: 79, on right: 73 74 75
260argument_list (88)
261    on left: 80 81, on right: 79 80
262primitive (89)
263    on left: 82 83 84 85 86 87 88 89 90, on right: 40
264
265
266state 0
267
268    0 $accept: . declarations $end
269
270    error  shift, and go to state 1
271
272    $end        reduce using rule 1 (declarations)
273    "object"    reduce using rule 1 (declarations)
274    "defun"     reduce using rule 1 (declarations)
275    "break"     reduce using rule 1 (declarations)
276    "conintue"  reduce using rule 1 (declarations)
277    "return"    reduce using rule 1 (declarations)
278    "delete"    reduce using rule 1 (declarations)
279    "while"     reduce using rule 1 (declarations)
280    "for"       reduce using rule 1 (declarations)
281    "new"       reduce using rule 1 (declarations)
282    "if"        reduce using rule 1 (declarations)
283    "print"     reduce using rule 1 (declarations)
284    "true"      reduce using rule 1 (declarations)
285    "false"     reduce using rule 1 (declarations)
286    "nil"       reduce using rule 1 (declarations)
287    CHAR        reduce using rule 1 (declarations)
288    STRING      reduce using rule 1 (declarations)
289    INTEGER     reduce using rule 1 (declarations)
290    DOUBLE      reduce using rule 1 (declarations)
291    IDENTIFIER  reduce using rule 1 (declarations)
292    '-'         reduce using rule 1 (declarations)
293    '['         reduce using rule 1 (declarations)
294    '('         reduce using rule 1 (declarations)
295
296    declarations  go to state 2
297
298
299state 1
300
301    3 declarations: error .
302
303    $default  reduce using rule 3 (declarations)
304
305
306state 2
307
308    0 $accept: declarations . $end
309    2 declarations: declarations . statement
310
311    $end        shift, and go to state 3
312    "object"    shift, and go to state 4
313    "defun"     shift, and go to state 5
314    "break"     shift, and go to state 6
315    "conintue"  shift, and go to state 7
316    "return"    shift, and go to state 8
317    "delete"    shift, and go to state 9
318    "while"     shift, and go to state 10
319    "for"       shift, and go to state 11
320    "new"       shift, and go to state 12
321    "if"        shift, and go to state 13
322    "print"     shift, and go to state 14
323    "true"      shift, and go to state 15
324    "false"     shift, and go to state 16
325    "nil"       shift, and go to state 17
326    CHAR        shift, and go to state 18
327    STRING      shift, and go to state 19
328    INTEGER     shift, and go to state 20
329    DOUBLE      shift, and go to state 21
330    IDENTIFIER  shift, and go to state 22
331    '-'         shift, and go to state 23
332    '['         shift, and go to state 24
333    '('         shift, and go to state 25
334
335    class_definition     go to state 26
336    object_creation      go to state 27
337    dot_accessor         go to state 28
338    member_accessor      go to state 29
339    accessor             go to state 30
340    symbol_accessor      go to state 31
341    function_definition  go to state 32
342    expression           go to state 33
343    express              go to state 34
344    loop_while           go to state 35
345    loop_for             go to state 36
346    control_structure    go to state 37
347    struct_if            go to state 38
348    conditionals         go to state 39
349    statement            go to state 40
350    delete_keyword       go to state 41
351    continue_keyword     go to state 42
352    break_keyword        go to state 43
353    return_keyword       go to state 44
354    arbitrary_call       go to state 45
355    print_keyword        go to state 46
356    list_symbol          go to state 47
357    primitive            go to state 48
358
359
360state 3
361
362    0 $accept: declarations $end .
363
364    $default  accept
365
366
367state 4
368
369    4 class_definition: "object" . IDENTIFIER '{' procedure '}'
370
371    IDENTIFIER  shift, and go to state 49
372
373
374state 5
375
376   14 function_definition: "defun" . IDENTIFIER '{' procedure '}'
377   15                    | "defun" . IDENTIFIER '(' ')' '{' procedure '}'
378   16                    | "defun" . IDENTIFIER '(' parameters ')' '{' procedure '}'
379
380    IDENTIFIER  shift, and go to state 50
381
382
383state 6
384
385   70 break_keyword: "break" .
386
387    $default  reduce using rule 70 (break_keyword)
388
389
390state 7
391
392   69 continue_keyword: "conintue" .
393
394    $default  reduce using rule 69 (continue_keyword)
395
396
397state 8
398
399   71 return_keyword: "return" . expression
400
401    "new"       shift, and go to state 12
402    "true"      shift, and go to state 15
403    "false"     shift, and go to state 16
404    "nil"       shift, and go to state 17
405    CHAR        shift, and go to state 18
406    STRING      shift, and go to state 19
407    INTEGER     shift, and go to state 20
408    DOUBLE      shift, and go to state 21
409    IDENTIFIER  shift, and go to state 22
410    '-'         shift, and go to state 23
411    '['         shift, and go to state 24
412    '('         shift, and go to state 25
413
414    object_creation  go to state 27
415    dot_accessor     go to state 28
416    member_accessor  go to state 29
417    accessor         go to state 30
418    symbol_accessor  go to state 31
419    expression       go to state 51
420    express          go to state 34
421    arbitrary_call   go to state 45
422    list_symbol      go to state 47
423    primitive        go to state 48
424
425
426state 9
427
428   68 delete_keyword: "delete" . IDENTIFIER
429
430    IDENTIFIER  shift, and go to state 52
431
432
433state 10
434
435   44 loop_while: "while" . '(' expression ')' '{' procedure '}'
436
437    '('  shift, and go to state 53
438
439
440state 11
441
442   45 loop_for: "for" . '(' expression ';' expression ';' expression ')' '{' procedure '}'
443
444    '('  shift, and go to state 54
445
446
447state 12
448
449    5 object_creation: "new" . arbitrary_call
450
451    IDENTIFIER  shift, and go to state 55
452
453    arbitrary_call  go to state 56
454
455
456state 13
457
458   51 struct_if: "if" . '(' expression ')' '{' procedure '}'
459
460    '('  shift, and go to state 57
461
462
463state 14
464
465   74 print_keyword: "print" . arguments
466
467    "new"       shift, and go to state 12
468    "true"      shift, and go to state 15
469    "false"     shift, and go to state 16
470    "nil"       shift, and go to state 17
471    CHAR        shift, and go to state 18
472    STRING      shift, and go to state 19
473    INTEGER     shift, and go to state 20
474    DOUBLE      shift, and go to state 21
475    IDENTIFIER  shift, and go to state 22
476    '-'         shift, and go to state 23
477    '['         shift, and go to state 24
478    '('         shift, and go to state 25
479
480    object_creation  go to state 27
481    dot_accessor     go to state 28
482    member_accessor  go to state 29
483    accessor         go to state 30
484    symbol_accessor  go to state 31
485    expression       go to state 58
486    express          go to state 34
487    arbitrary_call   go to state 45
488    list_symbol      go to state 47
489    arguments        go to state 59
490    argument_list    go to state 60
491    primitive        go to state 48
492
493
494state 15
495
496   86 primitive: "true" .
497
498    $default  reduce using rule 86 (primitive)
499
500
501state 16
502
503   87 primitive: "false" .
504
505    $default  reduce using rule 87 (primitive)
506
507
508state 17
509
510   83 primitive: "nil" .
511
512    $default  reduce using rule 83 (primitive)
513
514
515state 18
516
517   88 primitive: CHAR .
518
519    $default  reduce using rule 88 (primitive)
520
521
522state 19
523
524   89 primitive: STRING .
525
526    $default  reduce using rule 89 (primitive)
527
528
529state 20
530
531   84 primitive: INTEGER .
532
533    $default  reduce using rule 84 (primitive)
534
535
536state 21
537
538   85 primitive: DOUBLE .
539
540    $default  reduce using rule 85 (primitive)
541
542
543state 22
544
545   12 symbol_accessor: IDENTIFIER .
546   13                | IDENTIFIER . '[' expression ']'
547   72 arbitrary_call: IDENTIFIER . '(' ')'
548   73               | IDENTIFIER . '(' arguments ')'
549
550    '['  shift, and go to state 61
551    '('  shift, and go to state 62
552
553    $default  reduce using rule 12 (symbol_accessor)
554
555
556state 23
557
558   32 express: '-' . express
559
560    "new"       shift, and go to state 12
561    "true"      shift, and go to state 15
562    "false"     shift, and go to state 16
563    "nil"       shift, and go to state 17
564    CHAR        shift, and go to state 18
565    STRING      shift, and go to state 19
566    INTEGER     shift, and go to state 20
567    DOUBLE      shift, and go to state 21
568    IDENTIFIER  shift, and go to state 22
569    '-'         shift, and go to state 23
570    '['         shift, and go to state 24
571    '('         shift, and go to state 25
572
573    object_creation  go to state 27
574    dot_accessor     go to state 28
575    member_accessor  go to state 29
576    accessor         go to state 30
577    symbol_accessor  go to state 31
578    express          go to state 63
579    arbitrary_call   go to state 45
580    list_symbol      go to state 47
581    primitive        go to state 48
582
583
584state 24
585
586   75 list_symbol: '[' . arguments ']'
587
588    "new"       shift, and go to state 12
589    "true"      shift, and go to state 15
590    "false"     shift, and go to state 16
591    "nil"       shift, and go to state 17
592    CHAR        shift, and go to state 18
593    STRING      shift, and go to state 19
594    INTEGER     shift, and go to state 20
595    DOUBLE      shift, and go to state 21
596    IDENTIFIER  shift, and go to state 22
597    '-'         shift, and go to state 23
598    '['         shift, and go to state 24
599    '('         shift, and go to state 25
600
601    object_creation  go to state 27
602    dot_accessor     go to state 28
603    member_accessor  go to state 29
604    accessor         go to state 30
605    symbol_accessor  go to state 31
606    expression       go to state 58
607    express          go to state 34
608    arbitrary_call   go to state 45
609    list_symbol      go to state 47
610    arguments        go to state 64
611    argument_list    go to state 60
612    primitive        go to state 48
613
614
615state 25
616
617   39 express: '(' . express ')'
618
619    "new"       shift, and go to state 12
620    "true"      shift, and go to state 15
621    "false"     shift, and go to state 16
622    "nil"       shift, and go to state 17
623    CHAR        shift, and go to state 18
624    STRING      shift, and go to state 19
625    INTEGER     shift, and go to state 20
626    DOUBLE      shift, and go to state 21
627    IDENTIFIER  shift, and go to state 22
628    '-'         shift, and go to state 23
629    '['         shift, and go to state 24
630    '('         shift, and go to state 25
631
632    object_creation  go to state 27
633    dot_accessor     go to state 28
634    member_accessor  go to state 29
635    accessor         go to state 30
636    symbol_accessor  go to state 31
637    express          go to state 65
638    arbitrary_call   go to state 45
639    list_symbol      go to state 47
640    primitive        go to state 48
641
642
643state 26
644
645   50 control_structure: class_definition .
646
647    $default  reduce using rule 50 (control_structure)
648
649
650state 27
651
652   11 accessor: object_creation .
653
654    $default  reduce using rule 11 (accessor)
655
656
657state 28
658
659    6 dot_accessor: dot_accessor . '.' accessor
660    8 member_accessor: dot_accessor .
661
662    '.'  shift, and go to state 66
663
664    $default  reduce using rule 8 (member_accessor)
665
666
667state 29
668
669   82 primitive: member_accessor .
670
671    $default  reduce using rule 82 (primitive)
672
673
674state 30
675
676    7 dot_accessor: accessor .
677
678    $default  reduce using rule 7 (dot_accessor)
679
680
681state 31
682
683    9 accessor: symbol_accessor .
684   18 express: symbol_accessor . '=' express
685   33        | symbol_accessor . "++"
686   34        | symbol_accessor . "--"
687   35        | symbol_accessor . "+=" express
688   36        | symbol_accessor . "-=" express
689   37        | symbol_accessor . "*=" express
690   38        | symbol_accessor . "/=" express
691
692    "+="  shift, and go to state 67
693    "*="  shift, and go to state 68
694    "-="  shift, and go to state 69
695    "/="  shift, and go to state 70
696    "++"  shift, and go to state 71
697    "--"  shift, and go to state 72
698    '='   shift, and go to state 73
699
700    $default  reduce using rule 9 (accessor)
701
702
703state 32
704
705   49 control_structure: function_definition .
706
707    $default  reduce using rule 49 (control_structure)
708
709
710state 33
711
712   61 statement: expression . ';'
713
714    ';'  shift, and go to state 74
715
716
717state 34
718
719   17 expression: express .
720   19 express: express . '+' express
721   20        | express . '-' express
722   21        | express . '/' express
723   22        | express . '*' express
724   23        | express . '^' express
725   24        | express . "<" express
726   25        | express . ">" express
727   26        | express . "<=" express
728   27        | express . ">=" express
729   28        | express . "==" express
730   29        | express . "!=" express
731   30        | express . "||" express
732   31        | express . "&&" express
733
734    "||"  shift, and go to state 75
735    "&&"  shift, and go to state 76
736    "=="  shift, and go to state 77
737    "!="  shift, and go to state 78
738    "<"   shift, and go to state 79
739    "<="  shift, and go to state 80
740    ">"   shift, and go to state 81
741    ">="  shift, and go to state 82
742    '-'   shift, and go to state 83
743    '+'   shift, and go to state 84
744    '*'   shift, and go to state 85
745    '/'   shift, and go to state 86
746    '^'   shift, and go to state 87
747
748    $default  reduce using rule 17 (expression)
749
750
751state 35
752
753   46 control_structure: loop_while .
754
755    $default  reduce using rule 46 (control_structure)
756
757
758state 36
759
760   47 control_structure: loop_for .
761
762    $default  reduce using rule 47 (control_structure)
763
764
765state 37
766
767   67 statement: control_structure .
768
769    $default  reduce using rule 67 (statement)
770
771
772state 38
773
774   60 conditionals: struct_if . elif_block else_block
775
776    "elif"  shift, and go to state 88
777
778    $default  reduce using rule 56 (elif_block)
779
780    struct_elif        go to state 89
781    struct_elif_block  go to state 90
782    elif_block         go to state 91
783
784
785state 39
786
787   48 control_structure: conditionals .
788
789    $default  reduce using rule 48 (control_structure)
790
791
792state 40
793
794    2 declarations: declarations statement .
795
796    $default  reduce using rule 2 (declarations)
797
798
799state 41
800
801   66 statement: delete_keyword . ';'
802
803    ';'  shift, and go to state 92
804
805
806state 42
807
808   65 statement: continue_keyword . ';'
809
810    ';'  shift, and go to state 93
811
812
813state 43
814
815   63 statement: break_keyword . ';'
816
817    ';'  shift, and go to state 94
818
819
820state 44
821
822   64 statement: return_keyword . ';'
823
824    ';'  shift, and go to state 95
825
826
827state 45
828
829   10 accessor: arbitrary_call .
830
831    $default  reduce using rule 10 (accessor)
832
833
834state 46
835
836   62 statement: print_keyword . ';'
837
838    ';'  shift, and go to state 96
839
840
841state 47
842
843   90 primitive: list_symbol .
844
845    $default  reduce using rule 90 (primitive)
846
847
848state 48
849
850   40 express: primitive .
851
852    $default  reduce using rule 40 (express)
853
854
855state 49
856
857    4 class_definition: "object" IDENTIFIER . '{' procedure '}'
858
859    '{'  shift, and go to state 97
860
861
862state 50
863
864   14 function_definition: "defun" IDENTIFIER . '{' procedure '}'
865   15                    | "defun" IDENTIFIER . '(' ')' '{' procedure '}'
866   16                    | "defun" IDENTIFIER . '(' parameters ')' '{' procedure '}'
867
868    '{'  shift, and go to state 98
869    '('  shift, and go to state 99
870
871
872state 51
873
874   71 return_keyword: "return" expression .
875
876    $default  reduce using rule 71 (return_keyword)
877
878
879state 52
880
881   68 delete_keyword: "delete" IDENTIFIER .
882
883    $default  reduce using rule 68 (delete_keyword)
884
885
886state 53
887
888   44 loop_while: "while" '(' . expression ')' '{' procedure '}'
889
890    "new"       shift, and go to state 12
891    "true"      shift, and go to state 15
892    "false"     shift, and go to state 16
893    "nil"       shift, and go to state 17
894    CHAR        shift, and go to state 18
895    STRING      shift, and go to state 19
896    INTEGER     shift, and go to state 20
897    DOUBLE      shift, and go to state 21
898    IDENTIFIER  shift, and go to state 22
899    '-'         shift, and go to state 23
900    '['         shift, and go to state 24
901    '('         shift, and go to state 25
902
903    object_creation  go to state 27
904    dot_accessor     go to state 28
905    member_accessor  go to state 29
906    accessor         go to state 30
907    symbol_accessor  go to state 31
908    expression       go to state 100
909    express          go to state 34
910    arbitrary_call   go to state 45
911    list_symbol      go to state 47
912    primitive        go to state 48
913
914
915state 54
916
917   45 loop_for: "for" '(' . expression ';' expression ';' expression ')' '{' procedure '}'
918
919    "new"       shift, and go to state 12
920    "true"      shift, and go to state 15
921    "false"     shift, and go to state 16
922    "nil"       shift, and go to state 17
923    CHAR        shift, and go to state 18
924    STRING      shift, and go to state 19
925    INTEGER     shift, and go to state 20
926    DOUBLE      shift, and go to state 21
927    IDENTIFIER  shift, and go to state 22
928    '-'         shift, and go to state 23
929    '['         shift, and go to state 24
930    '('         shift, and go to state 25
931
932    object_creation  go to state 27
933    dot_accessor     go to state 28
934    member_accessor  go to state 29
935    accessor         go to state 30
936    symbol_accessor  go to state 31
937    expression       go to state 101
938    express          go to state 34
939    arbitrary_call   go to state 45
940    list_symbol      go to state 47
941    primitive        go to state 48
942
943
944state 55
945
946   72 arbitrary_call: IDENTIFIER . '(' ')'
947   73               | IDENTIFIER . '(' arguments ')'
948
949    '('  shift, and go to state 62
950
951
952state 56
953
954    5 object_creation: "new" arbitrary_call .
955
956    $default  reduce using rule 5 (object_creation)
957
958
959state 57
960
961   51 struct_if: "if" '(' . expression ')' '{' procedure '}'
962
963    "new"       shift, and go to state 12
964    "true"      shift, and go to state 15
965    "false"     shift, and go to state 16
966    "nil"       shift, and go to state 17
967    CHAR        shift, and go to state 18
968    STRING      shift, and go to state 19
969    INTEGER     shift, and go to state 20
970    DOUBLE      shift, and go to state 21
971    IDENTIFIER  shift, and go to state 22
972    '-'         shift, and go to state 23
973    '['         shift, and go to state 24
974    '('         shift, and go to state 25
975
976    object_creation  go to state 27
977    dot_accessor     go to state 28
978    member_accessor  go to state 29
979    accessor         go to state 30
980    symbol_accessor  go to state 31
981    expression       go to state 102
982    express          go to state 34
983    arbitrary_call   go to state 45
984    list_symbol      go to state 47
985    primitive        go to state 48
986
987
988state 58
989
990   81 argument_list: expression .
991
992    $default  reduce using rule 81 (argument_list)
993
994
995state 59
996
997   74 print_keyword: "print" arguments .
998
999    $default  reduce using rule 74 (print_keyword)
1000
1001
1002state 60
1003
1004   79 arguments: argument_list .
1005   80 argument_list: argument_list . ',' expression
1006
1007    ','  shift, and go to state 103
1008
1009    $default  reduce using rule 79 (arguments)
1010
1011
1012state 61
1013
1014   13 symbol_accessor: IDENTIFIER '[' . expression ']'
1015
1016    "new"       shift, and go to state 12
1017    "true"      shift, and go to state 15
1018    "false"     shift, and go to state 16
1019    "nil"       shift, and go to state 17
1020    CHAR        shift, and go to state 18
1021    STRING      shift, and go to state 19
1022    INTEGER     shift, and go to state 20
1023    DOUBLE      shift, and go to state 21
1024    IDENTIFIER  shift, and go to state 22
1025    '-'         shift, and go to state 23
1026    '['         shift, and go to state 24
1027    '('         shift, and go to state 25
1028
1029    object_creation  go to state 27
1030    dot_accessor     go to state 28
1031    member_accessor  go to state 29
1032    accessor         go to state 30
1033    symbol_accessor  go to state 31
1034    expression       go to state 104
1035    express          go to state 34
1036    arbitrary_call   go to state 45
1037    list_symbol      go to state 47
1038    primitive        go to state 48
1039
1040
1041state 62
1042
1043   72 arbitrary_call: IDENTIFIER '(' . ')'
1044   73               | IDENTIFIER '(' . arguments ')'
1045
1046    "new"       shift, and go to state 12
1047    "true"      shift, and go to state 15
1048    "false"     shift, and go to state 16
1049    "nil"       shift, and go to state 17
1050    CHAR        shift, and go to state 18
1051    STRING      shift, and go to state 19
1052    INTEGER     shift, and go to state 20
1053    DOUBLE      shift, and go to state 21
1054    IDENTIFIER  shift, and go to state 22
1055    '-'         shift, and go to state 23
1056    '['         shift, and go to state 24
1057    '('         shift, and go to state 25
1058    ')'         shift, and go to state 105
1059
1060    object_creation  go to state 27
1061    dot_accessor     go to state 28
1062    member_accessor  go to state 29
1063    accessor         go to state 30
1064    symbol_accessor  go to state 31
1065    expression       go to state 58
1066    express          go to state 34
1067    arbitrary_call   go to state 45
1068    list_symbol      go to state 47
1069    arguments        go to state 106
1070    argument_list    go to state 60
1071    primitive        go to state 48
1072
1073
1074state 63
1075
1076   19 express: express . '+' express
1077   20        | express . '-' express
1078   21        | express . '/' express
1079   22        | express . '*' express
1080   23        | express . '^' express
1081   24        | express . "<" express
1082   25        | express . ">" express
1083   26        | express . "<=" express
1084   27        | express . ">=" express
1085   28        | express . "==" express
1086   29        | express . "!=" express
1087   30        | express . "||" express
1088   31        | express . "&&" express
1089   32        | '-' express .
1090
1091    $default  reduce using rule 32 (express)
1092
1093
1094state 64
1095
1096   75 list_symbol: '[' arguments . ']'
1097
1098    ']'  shift, and go to state 107
1099
1100
1101state 65
1102
1103   19 express: express . '+' express
1104   20        | express . '-' express
1105   21        | express . '/' express
1106   22        | express . '*' express
1107   23        | express . '^' express
1108   24        | express . "<" express
1109   25        | express . ">" express
1110   26        | express . "<=" express
1111   27        | express . ">=" express
1112   28        | express . "==" express
1113   29        | express . "!=" express
1114   30        | express . "||" express
1115   31        | express . "&&" express
1116   39        | '(' express . ')'
1117
1118    "||"  shift, and go to state 75
1119    "&&"  shift, and go to state 76
1120    "=="  shift, and go to state 77
1121    "!="  shift, and go to state 78
1122    "<"   shift, and go to state 79
1123    "<="  shift, and go to state 80
1124    ">"   shift, and go to state 81
1125    ">="  shift, and go to state 82
1126    '-'   shift, and go to state 83
1127    '+'   shift, and go to state 84
1128    '*'   shift, and go to state 85
1129    '/'   shift, and go to state 86
1130    '^'   shift, and go to state 87
1131    ')'   shift, and go to state 108
1132
1133
1134state 66
1135
1136    6 dot_accessor: dot_accessor '.' . accessor
1137
1138    "new"       shift, and go to state 12
1139    IDENTIFIER  shift, and go to state 22
1140
1141    object_creation  go to state 27
1142    accessor         go to state 109
1143    symbol_accessor  go to state 110
1144    arbitrary_call   go to state 45
1145
1146
1147state 67
1148
1149   35 express: symbol_accessor "+=" . express
1150
1151    "new"       shift, and go to state 12
1152    "true"      shift, and go to state 15
1153    "false"     shift, and go to state 16
1154    "nil"       shift, and go to state 17
1155    CHAR        shift, and go to state 18
1156    STRING      shift, and go to state 19
1157    INTEGER     shift, and go to state 20
1158    DOUBLE      shift, and go to state 21
1159    IDENTIFIER  shift, and go to state 22
1160    '-'         shift, and go to state 23
1161    '['         shift, and go to state 24
1162    '('         shift, and go to state 25
1163
1164    object_creation  go to state 27
1165    dot_accessor     go to state 28
1166    member_accessor  go to state 29
1167    accessor         go to state 30
1168    symbol_accessor  go to state 31
1169    express          go to state 111
1170    arbitrary_call   go to state 45
1171    list_symbol      go to state 47
1172    primitive        go to state 48
1173
1174
1175state 68
1176
1177   37 express: symbol_accessor "*=" . express
1178
1179    "new"       shift, and go to state 12
1180    "true"      shift, and go to state 15
1181    "false"     shift, and go to state 16
1182    "nil"       shift, and go to state 17
1183    CHAR        shift, and go to state 18
1184    STRING      shift, and go to state 19
1185    INTEGER     shift, and go to state 20
1186    DOUBLE      shift, and go to state 21
1187    IDENTIFIER  shift, and go to state 22
1188    '-'         shift, and go to state 23
1189    '['         shift, and go to state 24
1190    '('         shift, and go to state 25
1191
1192    object_creation  go to state 27
1193    dot_accessor     go to state 28
1194    member_accessor  go to state 29
1195    accessor         go to state 30
1196    symbol_accessor  go to state 31
1197    express          go to state 112
1198    arbitrary_call   go to state 45
1199    list_symbol      go to state 47
1200    primitive        go to state 48
1201
1202
1203state 69
1204
1205   36 express: symbol_accessor "-=" . express
1206
1207    "new"       shift, and go to state 12
1208    "true"      shift, and go to state 15
1209    "false"     shift, and go to state 16
1210    "nil"       shift, and go to state 17
1211    CHAR        shift, and go to state 18
1212    STRING      shift, and go to state 19
1213    INTEGER     shift, and go to state 20
1214    DOUBLE      shift, and go to state 21
1215    IDENTIFIER  shift, and go to state 22
1216    '-'         shift, and go to state 23
1217    '['         shift, and go to state 24
1218    '('         shift, and go to state 25
1219
1220    object_creation  go to state 27
1221    dot_accessor     go to state 28
1222    member_accessor  go to state 29
1223    accessor         go to state 30
1224    symbol_accessor  go to state 31
1225    express          go to state 113
1226    arbitrary_call   go to state 45
1227    list_symbol      go to state 47
1228    primitive        go to state 48
1229
1230
1231state 70
1232
1233   38 express: symbol_accessor "/=" . express
1234
1235    "new"       shift, and go to state 12
1236    "true"      shift, and go to state 15
1237    "false"     shift, and go to state 16
1238    "nil"       shift, and go to state 17
1239    CHAR        shift, and go to state 18
1240    STRING      shift, and go to state 19
1241    INTEGER     shift, and go to state 20
1242    DOUBLE      shift, and go to state 21
1243    IDENTIFIER  shift, and go to state 22
1244    '-'         shift, and go to state 23
1245    '['         shift, and go to state 24
1246    '('         shift, and go to state 25
1247
1248    object_creation  go to state 27
1249    dot_accessor     go to state 28
1250    member_accessor  go to state 29
1251    accessor         go to state 30
1252    symbol_accessor  go to state 31
1253    express          go to state 114
1254    arbitrary_call   go to state 45
1255    list_symbol      go to state 47
1256    primitive        go to state 48
1257
1258
1259state 71
1260
1261   33 express: symbol_accessor "++" .
1262
1263    $default  reduce using rule 33 (express)
1264
1265
1266state 72
1267
1268   34 express: symbol_accessor "--" .
1269
1270    $default  reduce using rule 34 (express)
1271
1272
1273state 73
1274
1275   18 express: symbol_accessor '=' . express
1276
1277    "new"       shift, and go to state 12
1278    "true"      shift, and go to state 15
1279    "false"     shift, and go to state 16
1280    "nil"       shift, and go to state 17
1281    CHAR        shift, and go to state 18
1282    STRING      shift, and go to state 19
1283    INTEGER     shift, and go to state 20
1284    DOUBLE      shift, and go to state 21
1285    IDENTIFIER  shift, and go to state 22
1286    '-'         shift, and go to state 23
1287    '['         shift, and go to state 24
1288    '('         shift, and go to state 25
1289
1290    object_creation  go to state 27
1291    dot_accessor     go to state 28
1292    member_accessor  go to state 29
1293    accessor         go to state 30
1294    symbol_accessor  go to state 31
1295    express          go to state 115
1296    arbitrary_call   go to state 45
1297    list_symbol      go to state 47
1298    primitive        go to state 48
1299
1300
1301state 74
1302
1303   61 statement: expression ';' .
1304
1305    $default  reduce using rule 61 (statement)
1306
1307
1308state 75
1309
1310   30 express: express "||" . express
1311
1312    "new"       shift, and go to state 12
1313    "true"      shift, and go to state 15
1314    "false"     shift, and go to state 16
1315    "nil"       shift, and go to state 17
1316    CHAR        shift, and go to state 18
1317    STRING      shift, and go to state 19
1318    INTEGER     shift, and go to state 20
1319    DOUBLE      shift, and go to state 21
1320    IDENTIFIER  shift, and go to state 22
1321    '-'         shift, and go to state 23
1322    '['         shift, and go to state 24
1323    '('         shift, and go to state 25
1324
1325    object_creation  go to state 27
1326    dot_accessor     go to state 28
1327    member_accessor  go to state 29
1328    accessor         go to state 30
1329    symbol_accessor  go to state 31
1330    express          go to state 116
1331    arbitrary_call   go to state 45
1332    list_symbol      go to state 47
1333    primitive        go to state 48
1334
1335
1336state 76
1337
1338   31 express: express "&&" . express
1339
1340    "new"       shift, and go to state 12
1341    "true"      shift, and go to state 15
1342    "false"     shift, and go to state 16
1343    "nil"       shift, and go to state 17
1344    CHAR        shift, and go to state 18
1345    STRING      shift, and go to state 19
1346    INTEGER     shift, and go to state 20
1347    DOUBLE      shift, and go to state 21
1348    IDENTIFIER  shift, and go to state 22
1349    '-'         shift, and go to state 23
1350    '['         shift, and go to state 24
1351    '('         shift, and go to state 25
1352
1353    object_creation  go to state 27
1354    dot_accessor     go to state 28
1355    member_accessor  go to state 29
1356    accessor         go to state 30
1357    symbol_accessor  go to state 31
1358    express          go to state 117
1359    arbitrary_call   go to state 45
1360    list_symbol      go to state 47
1361    primitive        go to state 48
1362
1363
1364state 77
1365
1366   28 express: express "==" . express
1367
1368    "new"       shift, and go to state 12
1369    "true"      shift, and go to state 15
1370    "false"     shift, and go to state 16
1371    "nil"       shift, and go to state 17
1372    CHAR        shift, and go to state 18
1373    STRING      shift, and go to state 19
1374    INTEGER     shift, and go to state 20
1375    DOUBLE      shift, and go to state 21
1376    IDENTIFIER  shift, and go to state 22
1377    '-'         shift, and go to state 23
1378    '['         shift, and go to state 24
1379    '('         shift, and go to state 25
1380
1381    object_creation  go to state 27
1382    dot_accessor     go to state 28
1383    member_accessor  go to state 29
1384    accessor         go to state 30
1385    symbol_accessor  go to state 31
1386    express          go to state 118
1387    arbitrary_call   go to state 45
1388    list_symbol      go to state 47
1389    primitive        go to state 48
1390
1391
1392state 78
1393
1394   29 express: express "!=" . express
1395
1396    "new"       shift, and go to state 12
1397    "true"      shift, and go to state 15
1398    "false"     shift, and go to state 16
1399    "nil"       shift, and go to state 17
1400    CHAR        shift, and go to state 18
1401    STRING      shift, and go to state 19
1402    INTEGER     shift, and go to state 20
1403    DOUBLE      shift, and go to state 21
1404    IDENTIFIER  shift, and go to state 22
1405    '-'         shift, and go to state 23
1406    '['         shift, and go to state 24
1407    '('         shift, and go to state 25
1408
1409    object_creation  go to state 27
1410    dot_accessor     go to state 28
1411    member_accessor  go to state 29
1412    accessor         go to state 30
1413    symbol_accessor  go to state 31
1414    express          go to state 119
1415    arbitrary_call   go to state 45
1416    list_symbol      go to state 47
1417    primitive        go to state 48
1418
1419
1420state 79
1421
1422   24 express: express "<" . express
1423
1424    "new"       shift, and go to state 12
1425    "true"      shift, and go to state 15
1426    "false"     shift, and go to state 16
1427    "nil"       shift, and go to state 17
1428    CHAR        shift, and go to state 18
1429    STRING      shift, and go to state 19
1430    INTEGER     shift, and go to state 20
1431    DOUBLE      shift, and go to state 21
1432    IDENTIFIER  shift, and go to state 22
1433    '-'         shift, and go to state 23
1434    '['         shift, and go to state 24
1435    '('         shift, and go to state 25
1436
1437    object_creation  go to state 27
1438    dot_accessor     go to state 28
1439    member_accessor  go to state 29
1440    accessor         go to state 30
1441    symbol_accessor  go to state 31
1442    express          go to state 120
1443    arbitrary_call   go to state 45
1444    list_symbol      go to state 47
1445    primitive        go to state 48
1446
1447
1448state 80
1449
1450   26 express: express "<=" . express
1451
1452    "new"       shift, and go to state 12
1453    "true"      shift, and go to state 15
1454    "false"     shift, and go to state 16
1455    "nil"       shift, and go to state 17
1456    CHAR        shift, and go to state 18
1457    STRING      shift, and go to state 19
1458    INTEGER     shift, and go to state 20
1459    DOUBLE      shift, and go to state 21
1460    IDENTIFIER  shift, and go to state 22
1461    '-'         shift, and go to state 23
1462    '['         shift, and go to state 24
1463    '('         shift, and go to state 25
1464
1465    object_creation  go to state 27
1466    dot_accessor     go to state 28
1467    member_accessor  go to state 29
1468    accessor         go to state 30
1469    symbol_accessor  go to state 31
1470    express          go to state 121
1471    arbitrary_call   go to state 45
1472    list_symbol      go to state 47
1473    primitive        go to state 48
1474
1475
1476state 81
1477
1478   25 express: express ">" . express
1479
1480    "new"       shift, and go to state 12
1481    "true"      shift, and go to state 15
1482    "false"     shift, and go to state 16
1483    "nil"       shift, and go to state 17
1484    CHAR        shift, and go to state 18
1485    STRING      shift, and go to state 19
1486    INTEGER     shift, and go to state 20
1487    DOUBLE      shift, and go to state 21
1488    IDENTIFIER  shift, and go to state 22
1489    '-'         shift, and go to state 23
1490    '['         shift, and go to state 24
1491    '('         shift, and go to state 25
1492
1493    object_creation  go to state 27
1494    dot_accessor     go to state 28
1495    member_accessor  go to state 29
1496    accessor         go to state 30
1497    symbol_accessor  go to state 31
1498    express          go to state 122
1499    arbitrary_call   go to state 45
1500    list_symbol      go to state 47
1501    primitive        go to state 48
1502
1503
1504state 82
1505
1506   27 express: express ">=" . express
1507
1508    "new"       shift, and go to state 12
1509    "true"      shift, and go to state 15
1510    "false"     shift, and go to state 16
1511    "nil"       shift, and go to state 17
1512    CHAR        shift, and go to state 18
1513    STRING      shift, and go to state 19
1514    INTEGER     shift, and go to state 20
1515    DOUBLE      shift, and go to state 21
1516    IDENTIFIER  shift, and go to state 22
1517    '-'         shift, and go to state 23
1518    '['         shift, and go to state 24
1519    '('         shift, and go to state 25
1520
1521    object_creation  go to state 27
1522    dot_accessor     go to state 28
1523    member_accessor  go to state 29
1524    accessor         go to state 30
1525    symbol_accessor  go to state 31
1526    express          go to state 123
1527    arbitrary_call   go to state 45
1528    list_symbol      go to state 47
1529    primitive        go to state 48
1530
1531
1532state 83
1533
1534   20 express: express '-' . express
1535
1536    "new"       shift, and go to state 12
1537    "true"      shift, and go to state 15
1538    "false"     shift, and go to state 16
1539    "nil"       shift, and go to state 17
1540    CHAR        shift, and go to state 18
1541    STRING      shift, and go to state 19
1542    INTEGER     shift, and go to state 20
1543    DOUBLE      shift, and go to state 21
1544    IDENTIFIER  shift, and go to state 22
1545    '-'         shift, and go to state 23
1546    '['         shift, and go to state 24
1547    '('         shift, and go to state 25
1548
1549    object_creation  go to state 27
1550    dot_accessor     go to state 28
1551    member_accessor  go to state 29
1552    accessor         go to state 30
1553    symbol_accessor  go to state 31
1554    express          go to state 124
1555    arbitrary_call   go to state 45
1556    list_symbol      go to state 47
1557    primitive        go to state 48
1558
1559
1560state 84
1561
1562   19 express: express '+' . express
1563
1564    "new"       shift, and go to state 12
1565    "true"      shift, and go to state 15
1566    "false"     shift, and go to state 16
1567    "nil"       shift, and go to state 17
1568    CHAR        shift, and go to state 18
1569    STRING      shift, and go to state 19
1570    INTEGER     shift, and go to state 20
1571    DOUBLE      shift, and go to state 21
1572    IDENTIFIER  shift, and go to state 22
1573    '-'         shift, and go to state 23
1574    '['         shift, and go to state 24
1575    '('         shift, and go to state 25
1576
1577    object_creation  go to state 27
1578    dot_accessor     go to state 28
1579    member_accessor  go to state 29
1580    accessor         go to state 30
1581    symbol_accessor  go to state 31
1582    express          go to state 125
1583    arbitrary_call   go to state 45
1584    list_symbol      go to state 47
1585    primitive        go to state 48
1586
1587
1588state 85
1589
1590   22 express: express '*' . express
1591
1592    "new"       shift, and go to state 12
1593    "true"      shift, and go to state 15
1594    "false"     shift, and go to state 16
1595    "nil"       shift, and go to state 17
1596    CHAR        shift, and go to state 18
1597    STRING      shift, and go to state 19
1598    INTEGER     shift, and go to state 20
1599    DOUBLE      shift, and go to state 21
1600    IDENTIFIER  shift, and go to state 22
1601    '-'         shift, and go to state 23
1602    '['         shift, and go to state 24
1603    '('         shift, and go to state 25
1604
1605    object_creation  go to state 27
1606    dot_accessor     go to state 28
1607    member_accessor  go to state 29
1608    accessor         go to state 30
1609    symbol_accessor  go to state 31
1610    express          go to state 126
1611    arbitrary_call   go to state 45
1612    list_symbol      go to state 47
1613    primitive        go to state 48
1614
1615
1616state 86
1617
1618   21 express: express '/' . express
1619
1620    "new"       shift, and go to state 12
1621    "true"      shift, and go to state 15
1622    "false"     shift, and go to state 16
1623    "nil"       shift, and go to state 17
1624    CHAR        shift, and go to state 18
1625    STRING      shift, and go to state 19
1626    INTEGER     shift, and go to state 20
1627    DOUBLE      shift, and go to state 21
1628    IDENTIFIER  shift, and go to state 22
1629    '-'         shift, and go to state 23
1630    '['         shift, and go to state 24
1631    '('         shift, and go to state 25
1632
1633    object_creation  go to state 27
1634    dot_accessor     go to state 28
1635    member_accessor  go to state 29
1636    accessor         go to state 30
1637    symbol_accessor  go to state 31
1638    express          go to state 127
1639    arbitrary_call   go to state 45
1640    list_symbol      go to state 47
1641    primitive        go to state 48
1642
1643
1644state 87
1645
1646   23 express: express '^' . express
1647
1648    "new"       shift, and go to state 12
1649    "true"      shift, and go to state 15
1650    "false"     shift, and go to state 16
1651    "nil"       shift, and go to state 17
1652    CHAR        shift, and go to state 18
1653    STRING      shift, and go to state 19
1654    INTEGER     shift, and go to state 20
1655    DOUBLE      shift, and go to state 21
1656    IDENTIFIER  shift, and go to state 22
1657    '-'         shift, and go to state 23
1658    '['         shift, and go to state 24
1659    '('         shift, and go to state 25
1660
1661    object_creation  go to state 27
1662    dot_accessor     go to state 28
1663    member_accessor  go to state 29
1664    accessor         go to state 30
1665    symbol_accessor  go to state 31
1666    express          go to state 128
1667    arbitrary_call   go to state 45
1668    list_symbol      go to state 47
1669    primitive        go to state 48
1670
1671
1672state 88
1673
1674   52 struct_elif: "elif" . '(' expression ')' '{' procedure '}'
1675
1676    '('  shift, and go to state 129
1677
1678
1679state 89
1680
1681   55 struct_elif_block: struct_elif .
1682
1683    $default  reduce using rule 55 (struct_elif_block)
1684
1685
1686state 90
1687
1688   54 struct_elif_block: struct_elif_block . struct_elif
1689   57 elif_block: struct_elif_block .
1690
1691    "elif"  shift, and go to state 88
1692
1693    $default  reduce using rule 57 (elif_block)
1694
1695    struct_elif  go to state 130
1696
1697
1698state 91
1699
1700   60 conditionals: struct_if elif_block . else_block
1701
1702    "else"  shift, and go to state 131
1703
1704    $default  reduce using rule 58 (else_block)
1705
1706    struct_else  go to state 132
1707    else_block   go to state 133
1708
1709
1710state 92
1711
1712   66 statement: delete_keyword ';' .
1713
1714    $default  reduce using rule 66 (statement)
1715
1716
1717state 93
1718
1719   65 statement: continue_keyword ';' .
1720
1721    $default  reduce using rule 65 (statement)
1722
1723
1724state 94
1725
1726   63 statement: break_keyword ';' .
1727
1728    $default  reduce using rule 63 (statement)
1729
1730
1731state 95
1732
1733   64 statement: return_keyword ';' .
1734
1735    $default  reduce using rule 64 (statement)
1736
1737
1738state 96
1739
1740   62 statement: print_keyword ';' .
1741
1742    $default  reduce using rule 62 (statement)
1743
1744
1745state 97
1746
1747    4 class_definition: "object" IDENTIFIER '{' . procedure '}'
1748
1749    "object"    shift, and go to state 4
1750    "defun"     shift, and go to state 5
1751    "break"     shift, and go to state 6
1752    "conintue"  shift, and go to state 7
1753    "return"    shift, and go to state 8
1754    "delete"    shift, and go to state 9
1755    "while"     shift, and go to state 10
1756    "for"       shift, and go to state 11
1757    "new"       shift, and go to state 12
1758    "if"        shift, and go to state 13
1759    "print"     shift, and go to state 14
1760    "true"      shift, and go to state 15
1761    "false"     shift, and go to state 16
1762    "nil"       shift, and go to state 17
1763    CHAR        shift, and go to state 18
1764    STRING      shift, and go to state 19
1765    INTEGER     shift, and go to state 20
1766    DOUBLE      shift, and go to state 21
1767    IDENTIFIER  shift, and go to state 22
1768    '-'         shift, and go to state 23
1769    '['         shift, and go to state 24
1770    '('         shift, and go to state 25
1771
1772    class_definition     go to state 26
1773    object_creation      go to state 27
1774    dot_accessor         go to state 28
1775    member_accessor      go to state 29
1776    accessor             go to state 30
1777    symbol_accessor      go to state 31
1778    function_definition  go to state 32
1779    expression           go to state 33
1780    express              go to state 34
1781    procedure            go to state 134
1782    pblock               go to state 135
1783    loop_while           go to state 35
1784    loop_for             go to state 36
1785    control_structure    go to state 37
1786    struct_if            go to state 38
1787    conditionals         go to state 39
1788    statement            go to state 136
1789    delete_keyword       go to state 41
1790    continue_keyword     go to state 42
1791    break_keyword        go to state 43
1792    return_keyword       go to state 44
1793    arbitrary_call       go to state 45
1794    print_keyword        go to state 46
1795    list_symbol          go to state 47
1796    primitive            go to state 48
1797
1798
1799state 98
1800
1801   14 function_definition: "defun" IDENTIFIER '{' . procedure '}'
1802
1803    "object"    shift, and go to state 4
1804    "defun"     shift, and go to state 5
1805    "break"     shift, and go to state 6
1806    "conintue"  shift, and go to state 7
1807    "return"    shift, and go to state 8
1808    "delete"    shift, and go to state 9
1809    "while"     shift, and go to state 10
1810    "for"       shift, and go to state 11
1811    "new"       shift, and go to state 12
1812    "if"        shift, and go to state 13
1813    "print"     shift, and go to state 14
1814    "true"      shift, and go to state 15
1815    "false"     shift, and go to state 16
1816    "nil"       shift, and go to state 17
1817    CHAR        shift, and go to state 18
1818    STRING      shift, and go to state 19
1819    INTEGER     shift, and go to state 20
1820    DOUBLE      shift, and go to state 21
1821    IDENTIFIER  shift, and go to state 22
1822    '-'         shift, and go to state 23
1823    '['         shift, and go to state 24
1824    '('         shift, and go to state 25
1825
1826    class_definition     go to state 26
1827    object_creation      go to state 27
1828    dot_accessor         go to state 28
1829    member_accessor      go to state 29
1830    accessor             go to state 30
1831    symbol_accessor      go to state 31
1832    function_definition  go to state 32
1833    expression           go to state 33
1834    express              go to state 34
1835    procedure            go to state 137
1836    pblock               go to state 135
1837    loop_while           go to state 35
1838    loop_for             go to state 36
1839    control_structure    go to state 37
1840    struct_if            go to state 38
1841    conditionals         go to state 39
1842    statement            go to state 136
1843    delete_keyword       go to state 41
1844    continue_keyword     go to state 42
1845    break_keyword        go to state 43
1846    return_keyword       go to state 44
1847    arbitrary_call       go to state 45
1848    print_keyword        go to state 46
1849    list_symbol          go to state 47
1850    primitive            go to state 48
1851
1852
1853state 99
1854
1855   15 function_definition: "defun" IDENTIFIER '(' . ')' '{' procedure '}'
1856   16                    | "defun" IDENTIFIER '(' . parameters ')' '{' procedure '}'
1857
1858    IDENTIFIER  shift, and go to state 138
1859    ')'         shift, and go to state 139
1860
1861    parameters_expression  go to state 140
1862    parameters             go to state 141
1863
1864
1865state 100
1866
1867   44 loop_while: "while" '(' expression . ')' '{' procedure '}'
1868
1869    ')'  shift, and go to state 142
1870
1871
1872state 101
1873
1874   45 loop_for: "for" '(' expression . ';' expression ';' expression ')' '{' procedure '}'
1875
1876    ';'  shift, and go to state 143
1877
1878
1879state 102
1880
1881   51 struct_if: "if" '(' expression . ')' '{' procedure '}'
1882
1883    ')'  shift, and go to state 144
1884
1885
1886state 103
1887
1888   80 argument_list: argument_list ',' . expression
1889
1890    "new"       shift, and go to state 12
1891    "true"      shift, and go to state 15
1892    "false"     shift, and go to state 16
1893    "nil"       shift, and go to state 17
1894    CHAR        shift, and go to state 18
1895    STRING      shift, and go to state 19
1896    INTEGER     shift, and go to state 20
1897    DOUBLE      shift, and go to state 21
1898    IDENTIFIER  shift, and go to state 22
1899    '-'         shift, and go to state 23
1900    '['         shift, and go to state 24
1901    '('         shift, and go to state 25
1902
1903    object_creation  go to state 27
1904    dot_accessor     go to state 28
1905    member_accessor  go to state 29
1906    accessor         go to state 30
1907    symbol_accessor  go to state 31
1908    expression       go to state 145
1909    express          go to state 34
1910    arbitrary_call   go to state 45
1911    list_symbol      go to state 47
1912    primitive        go to state 48
1913
1914
1915state 104
1916
1917   13 symbol_accessor: IDENTIFIER '[' expression . ']'
1918
1919    ']'  shift, and go to state 146
1920
1921
1922state 105
1923
1924   72 arbitrary_call: IDENTIFIER '(' ')' .
1925
1926    $default  reduce using rule 72 (arbitrary_call)
1927
1928
1929state 106
1930
1931   73 arbitrary_call: IDENTIFIER '(' arguments . ')'
1932
1933    ')'  shift, and go to state 147
1934
1935
1936state 107
1937
1938   75 list_symbol: '[' arguments ']' .
1939
1940    $default  reduce using rule 75 (list_symbol)
1941
1942
1943state 108
1944
1945   39 express: '(' express ')' .
1946
1947    $default  reduce using rule 39 (express)
1948
1949
1950state 109
1951
1952    6 dot_accessor: dot_accessor '.' accessor .
1953
1954    $default  reduce using rule 6 (dot_accessor)
1955
1956
1957state 110
1958
1959    9 accessor: symbol_accessor .
1960
1961    $default  reduce using rule 9 (accessor)
1962
1963
1964state 111
1965
1966   19 express: express . '+' express
1967   20        | express . '-' express
1968   21        | express . '/' express
1969   22        | express . '*' express
1970   23        | express . '^' express
1971   24        | express . "<" express
1972   25        | express . ">" express
1973   26        | express . "<=" express
1974   27        | express . ">=" express
1975   28        | express . "==" express
1976   29        | express . "!=" express
1977   30        | express . "||" express
1978   31        | express . "&&" express
1979   35        | symbol_accessor "+=" express .
1980
1981    $default  reduce using rule 35 (express)
1982
1983
1984state 112
1985
1986   19 express: express . '+' express
1987   20        | express . '-' express
1988   21        | express . '/' express
1989   22        | express . '*' express
1990   23        | express . '^' express
1991   24        | express . "<" express
1992   25        | express . ">" express
1993   26        | express . "<=" express
1994   27        | express . ">=" express
1995   28        | express . "==" express
1996   29        | express . "!=" express
1997   30        | express . "||" express
1998   31        | express . "&&" express
1999   37        | symbol_accessor "*=" express .
2000
2001    $default  reduce using rule 37 (express)
2002
2003
2004state 113
2005
2006   19 express: express . '+' express
2007   20        | express . '-' express
2008   21        | express . '/' express
2009   22        | express . '*' express
2010   23        | express . '^' express
2011   24        | express . "<" express
2012   25        | express . ">" express
2013   26        | express . "<=" express
2014   27        | express . ">=" express
2015   28        | express . "==" express
2016   29        | express . "!=" express
2017   30        | express . "||" express
2018   31        | express . "&&" express
2019   36        | symbol_accessor "-=" express .
2020
2021    $default  reduce using rule 36 (express)
2022
2023
2024state 114
2025
2026   19 express: express . '+' express
2027   20        | express . '-' express
2028   21        | express . '/' express
2029   22        | express . '*' express
2030   23        | express . '^' express
2031   24        | express . "<" express
2032   25        | express . ">" express
2033   26        | express . "<=" express
2034   27        | express . ">=" express
2035   28        | express . "==" express
2036   29        | express . "!=" express
2037   30        | express . "||" express
2038   31        | express . "&&" express
2039   38        | symbol_accessor "/=" express .
2040
2041    $default  reduce using rule 38 (express)
2042
2043
2044state 115
2045
2046   18 express: symbol_accessor '=' express .
2047   19        | express . '+' express
2048   20        | express . '-' express
2049   21        | express . '/' express
2050   22        | express . '*' express
2051   23        | express . '^' express
2052   24        | express . "<" express
2053   25        | express . ">" express
2054   26        | express . "<=" express
2055   27        | express . ">=" express
2056   28        | express . "==" express
2057   29        | express . "!=" express
2058   30        | express . "||" express
2059   31        | express . "&&" express
2060
2061    '^'  shift, and go to state 87
2062
2063    $default  reduce using rule 18 (express)
2064
2065
2066state 116
2067
2068   19 express: express . '+' express
2069   20        | express . '-' express
2070   21        | express . '/' express
2071   22        | express . '*' express
2072   23        | express . '^' express
2073   24        | express . "<" express
2074   25        | express . ">" express
2075   26        | express . "<=" express
2076   27        | express . ">=" express
2077   28        | express . "==" express
2078   29        | express . "!=" express
2079   30        | express . "||" express
2080   30        | express "||" express .
2081   31        | express . "&&" express
2082
2083    '^'  shift, and go to state 87
2084
2085    $default  reduce using rule 30 (express)
2086
2087
2088state 117
2089
2090   19 express: express . '+' express
2091   20        | express . '-' express
2092   21        | express . '/' express
2093   22        | express . '*' express
2094   23        | express . '^' express
2095   24        | express . "<" express
2096   25        | express . ">" express
2097   26        | express . "<=" express
2098   27        | express . ">=" express
2099   28        | express . "==" express
2100   29        | express . "!=" express
2101   30        | express . "||" express
2102   31        | express . "&&" express
2103   31        | express "&&" express .
2104
2105    '^'  shift, and go to state 87
2106
2107    $default  reduce using rule 31 (express)
2108
2109
2110state 118
2111
2112   19 express: express . '+' express
2113   20        | express . '-' express
2114   21        | express . '/' express
2115   22        | express . '*' express
2116   23        | express . '^' express
2117   24        | express . "<" express
2118   25        | express . ">" express
2119   26        | express . "<=" express
2120   27        | express . ">=" express
2121   28        | express . "==" express
2122   28        | express "==" express .
2123   29        | express . "!=" express
2124   30        | express . "||" express
2125   31        | express . "&&" express
2126
2127    "||"  shift, and go to state 75
2128    "&&"  shift, and go to state 76
2129    '^'   shift, and go to state 87
2130
2131    $default  reduce using rule 28 (express)
2132
2133
2134state 119
2135
2136   19 express: express . '+' express
2137   20        | express . '-' express
2138   21        | express . '/' express
2139   22        | express . '*' express
2140   23        | express . '^' express
2141   24        | express . "<" express
2142   25        | express . ">" express
2143   26        | express . "<=" express
2144   27        | express . ">=" express
2145   28        | express . "==" express
2146   29        | express . "!=" express
2147   29        | express "!=" express .
2148   30        | express . "||" express
2149   31        | express . "&&" express
2150
2151    "||"  shift, and go to state 75
2152    "&&"  shift, and go to state 76
2153    '^'   shift, and go to state 87
2154
2155    $default  reduce using rule 29 (express)
2156
2157
2158state 120
2159
2160   19 express: express . '+' express
2161   20        | express . '-' express
2162   21        | express . '/' express
2163   22        | express . '*' express
2164   23        | express . '^' express
2165   24        | express . "<" express
2166   24        | express "<" express .
2167   25        | express . ">" express
2168   26        | express . "<=" express
2169   27        | express . ">=" express
2170   28        | express . "==" express
2171   29        | express . "!=" express
2172   30        | express . "||" express
2173   31        | express . "&&" express
2174
2175    "||"  shift, and go to state 75
2176    "&&"  shift, and go to state 76
2177    "=="  shift, and go to state 77
2178    "!="  shift, and go to state 78
2179    ">"   shift, and go to state 81
2180    ">="  shift, and go to state 82
2181    '^'   shift, and go to state 87
2182
2183    $default  reduce using rule 24 (express)
2184
2185
2186state 121
2187
2188   19 express: express . '+' express
2189   20        | express . '-' express
2190   21        | express . '/' express
2191   22        | express . '*' express
2192   23        | express . '^' express
2193   24        | express . "<" express
2194   25        | express . ">" express
2195   26        | express . "<=" express
2196   26        | express "<=" express .
2197   27        | express . ">=" express
2198   28        | express . "==" express
2199   29        | express . "!=" express
2200   30        | express . "||" express
2201   31        | express . "&&" express
2202
2203    "||"  shift, and go to state 75
2204    "&&"  shift, and go to state 76
2205    "=="  shift, and go to state 77
2206    "!="  shift, and go to state 78
2207    ">"   shift, and go to state 81
2208    ">="  shift, and go to state 82
2209    '^'   shift, and go to state 87
2210
2211    $default  reduce using rule 26 (express)
2212
2213
2214state 122
2215
2216   19 express: express . '+' express
2217   20        | express . '-' express
2218   21        | express . '/' express
2219   22        | express . '*' express
2220   23        | express . '^' express
2221   24        | express . "<" express
2222   25        | express . ">" express
2223   25        | express ">" express .
2224   26        | express . "<=" express
2225   27        | express . ">=" express
2226   28        | express . "==" express
2227   29        | express . "!=" express
2228   30        | express . "||" express
2229   31        | express . "&&" express
2230
2231    "||"  shift, and go to state 75
2232    "&&"  shift, and go to state 76
2233    "=="  shift, and go to state 77
2234    "!="  shift, and go to state 78
2235    '^'   shift, and go to state 87
2236
2237    $default  reduce using rule 25 (express)
2238
2239
2240state 123
2241
2242   19 express: express . '+' express
2243   20        | express . '-' express
2244   21        | express . '/' express
2245   22        | express . '*' express
2246   23        | express . '^' express
2247   24        | express . "<" express
2248   25        | express . ">" express
2249   26        | express . "<=" express
2250   27        | express . ">=" express
2251   27        | express ">=" express .
2252   28        | express . "==" express
2253   29        | express . "!=" express
2254   30        | express . "||" express
2255   31        | express . "&&" express
2256
2257    "||"  shift, and go to state 75
2258    "&&"  shift, and go to state 76
2259    "=="  shift, and go to state 77
2260    "!="  shift, and go to state 78
2261    '^'   shift, and go to state 87
2262
2263    $default  reduce using rule 27 (express)
2264
2265
2266state 124
2267
2268   19 express: express . '+' express
2269   20        | express . '-' express
2270   20        | express '-' express .
2271   21        | express . '/' express
2272   22        | express . '*' express
2273   23        | express . '^' express
2274   24        | express . "<" express
2275   25        | express . ">" express
2276   26        | express . "<=" express
2277   27        | express . ">=" express
2278   28        | express . "==" express
2279   29        | express . "!=" express
2280   30        | express . "||" express
2281   31        | express . "&&" express
2282
2283    "||"  shift, and go to state 75
2284    "&&"  shift, and go to state 76
2285    "=="  shift, and go to state 77
2286    "!="  shift, and go to state 78
2287    "<"   shift, and go to state 79
2288    "<="  shift, and go to state 80
2289    ">"   shift, and go to state 81
2290    ">="  shift, and go to state 82
2291    '*'   shift, and go to state 85
2292    '/'   shift, and go to state 86
2293    '^'   shift, and go to state 87
2294
2295    $default  reduce using rule 20 (express)
2296
2297
2298state 125
2299
2300   19 express: express . '+' express
2301   19        | express '+' express .
2302   20        | express . '-' express
2303   21        | express . '/' express
2304   22        | express . '*' express
2305   23        | express . '^' express
2306   24        | express . "<" express
2307   25        | express . ">" express
2308   26        | express . "<=" express
2309   27        | express . ">=" express
2310   28        | express . "==" express
2311   29        | express . "!=" express
2312   30        | express . "||" express
2313   31        | express . "&&" express
2314
2315    "||"  shift, and go to state 75
2316    "&&"  shift, and go to state 76
2317    "=="  shift, and go to state 77
2318    "!="  shift, and go to state 78
2319    "<"   shift, and go to state 79
2320    "<="  shift, and go to state 80
2321    ">"   shift, and go to state 81
2322    ">="  shift, and go to state 82
2323    '*'   shift, and go to state 85
2324    '/'   shift, and go to state 86
2325    '^'   shift, and go to state 87
2326
2327    $default  reduce using rule 19 (express)
2328
2329
2330state 126
2331
2332   19 express: express . '+' express
2333   20        | express . '-' express
2334   21        | express . '/' express
2335   22        | express . '*' express
2336   22        | express '*' express .
2337   23        | express . '^' express
2338   24        | express . "<" express
2339   25        | express . ">" express
2340   26        | express . "<=" express
2341   27        | express . ">=" express
2342   28        | express . "==" express
2343   29        | express . "!=" express
2344   30        | express . "||" express
2345   31        | express . "&&" express
2346
2347    "||"  shift, and go to state 75
2348    "&&"  shift, and go to state 76
2349    "=="  shift, and go to state 77
2350    "!="  shift, and go to state 78
2351    "<"   shift, and go to state 79
2352    "<="  shift, and go to state 80
2353    ">"   shift, and go to state 81
2354    ">="  shift, and go to state 82
2355    '^'   shift, and go to state 87
2356
2357    $default  reduce using rule 22 (express)
2358
2359
2360state 127
2361
2362   19 express: express . '+' express
2363   20        | express . '-' express
2364   21        | express . '/' express
2365   21        | express '/' express .
2366   22        | express . '*' express
2367   23        | express . '^' express
2368   24        | express . "<" express
2369   25        | express . ">" express
2370   26        | express . "<=" express
2371   27        | express . ">=" express
2372   28        | express . "==" express
2373   29        | express . "!=" express
2374   30        | express . "||" express
2375   31        | express . "&&" express
2376
2377    "||"  shift, and go to state 75
2378    "&&"  shift, and go to state 76
2379    "=="  shift, and go to state 77
2380    "!="  shift, and go to state 78
2381    "<"   shift, and go to state 79
2382    "<="  shift, and go to state 80
2383    ">"   shift, and go to state 81
2384    ">="  shift, and go to state 82
2385    '^'   shift, and go to state 87
2386
2387    $default  reduce using rule 21 (express)
2388
2389
2390state 128
2391
2392   19 express: express . '+' express
2393   20        | express . '-' express
2394   21        | express . '/' express
2395   22        | express . '*' express
2396   23        | express . '^' express
2397   23        | express '^' express .
2398   24        | express . "<" express
2399   25        | express . ">" express
2400   26        | express . "<=" express
2401   27        | express . ">=" express
2402   28        | express . "==" express
2403   29        | express . "!=" express
2404   30        | express . "||" express
2405   31        | express . "&&" express
2406
2407    '^'  shift, and go to state 87
2408
2409    $default  reduce using rule 23 (express)
2410
2411
2412state 129
2413
2414   52 struct_elif: "elif" '(' . expression ')' '{' procedure '}'
2415
2416    "new"       shift, and go to state 12
2417    "true"      shift, and go to state 15
2418    "false"     shift, and go to state 16
2419    "nil"       shift, and go to state 17
2420    CHAR        shift, and go to state 18
2421    STRING      shift, and go to state 19
2422    INTEGER     shift, and go to state 20
2423    DOUBLE      shift, and go to state 21
2424    IDENTIFIER  shift, and go to state 22
2425    '-'         shift, and go to state 23
2426    '['         shift, and go to state 24
2427    '('         shift, and go to state 25
2428
2429    object_creation  go to state 27
2430    dot_accessor     go to state 28
2431    member_accessor  go to state 29
2432    accessor         go to state 30
2433    symbol_accessor  go to state 31
2434    expression       go to state 148
2435    express          go to state 34
2436    arbitrary_call   go to state 45
2437    list_symbol      go to state 47
2438    primitive        go to state 48
2439
2440
2441state 130
2442
2443   54 struct_elif_block: struct_elif_block struct_elif .
2444
2445    $default  reduce using rule 54 (struct_elif_block)
2446
2447
2448state 131
2449
2450   53 struct_else: "else" . '{' procedure '}'
2451
2452    '{'  shift, and go to state 149
2453
2454
2455state 132
2456
2457   59 else_block: struct_else .
2458
2459    $default  reduce using rule 59 (else_block)
2460
2461
2462state 133
2463
2464   60 conditionals: struct_if elif_block else_block .
2465
2466    $default  reduce using rule 60 (conditionals)
2467
2468
2469state 134
2470
2471    4 class_definition: "object" IDENTIFIER '{' procedure . '}'
2472
2473    '}'  shift, and go to state 150
2474
2475
2476state 135
2477
2478   41 procedure: pblock .
2479   42 pblock: pblock . statement
2480
2481    "object"    shift, and go to state 4
2482    "defun"     shift, and go to state 5
2483    "break"     shift, and go to state 6
2484    "conintue"  shift, and go to state 7
2485    "return"    shift, and go to state 8
2486    "delete"    shift, and go to state 9
2487    "while"     shift, and go to state 10
2488    "for"       shift, and go to state 11
2489    "new"       shift, and go to state 12
2490    "if"        shift, and go to state 13
2491    "print"     shift, and go to state 14
2492    "true"      shift, and go to state 15
2493    "false"     shift, and go to state 16
2494    "nil"       shift, and go to state 17
2495    CHAR        shift, and go to state 18
2496    STRING      shift, and go to state 19
2497    INTEGER     shift, and go to state 20
2498    DOUBLE      shift, and go to state 21
2499    IDENTIFIER  shift, and go to state 22
2500    '-'         shift, and go to state 23
2501    '['         shift, and go to state 24
2502    '('         shift, and go to state 25
2503
2504    $default  reduce using rule 41 (procedure)
2505
2506    class_definition     go to state 26
2507    object_creation      go to state 27
2508    dot_accessor         go to state 28
2509    member_accessor      go to state 29
2510    accessor             go to state 30
2511    symbol_accessor      go to state 31
2512    function_definition  go to state 32
2513    expression           go to state 33
2514    express              go to state 34
2515    loop_while           go to state 35
2516    loop_for             go to state 36
2517    control_structure    go to state 37
2518    struct_if            go to state 38
2519    conditionals         go to state 39
2520    statement            go to state 151
2521    delete_keyword       go to state 41
2522    continue_keyword     go to state 42
2523    break_keyword        go to state 43
2524    return_keyword       go to state 44
2525    arbitrary_call       go to state 45
2526    print_keyword        go to state 46
2527    list_symbol          go to state 47
2528    primitive            go to state 48
2529
2530
2531state 136
2532
2533   43 pblock: statement .
2534
2535    $default  reduce using rule 43 (pblock)
2536
2537
2538state 137
2539
2540   14 function_definition: "defun" IDENTIFIER '{' procedure . '}'
2541
2542    '}'  shift, and go to state 152
2543
2544
2545state 138
2546
2547   77 parameters_expression: IDENTIFIER .
2548
2549    $default  reduce using rule 77 (parameters_expression)
2550
2551
2552state 139
2553
2554   15 function_definition: "defun" IDENTIFIER '(' ')' . '{' procedure '}'
2555
2556    '{'  shift, and go to state 153
2557
2558
2559state 140
2560
2561   76 parameters_expression: parameters_expression . ',' IDENTIFIER
2562   78 parameters: parameters_expression .
2563
2564    ','  shift, and go to state 154
2565
2566    $default  reduce using rule 78 (parameters)
2567
2568
2569state 141
2570
2571   16 function_definition: "defun" IDENTIFIER '(' parameters . ')' '{' procedure '}'
2572
2573    ')'  shift, and go to state 155
2574
2575
2576state 142
2577
2578   44 loop_while: "while" '(' expression ')' . '{' procedure '}'
2579
2580    '{'  shift, and go to state 156
2581
2582
2583state 143
2584
2585   45 loop_for: "for" '(' expression ';' . expression ';' expression ')' '{' procedure '}'
2586
2587    "new"       shift, and go to state 12
2588    "true"      shift, and go to state 15
2589    "false"     shift, and go to state 16
2590    "nil"       shift, and go to state 17
2591    CHAR        shift, and go to state 18
2592    STRING      shift, and go to state 19
2593    INTEGER     shift, and go to state 20
2594    DOUBLE      shift, and go to state 21
2595    IDENTIFIER  shift, and go to state 22
2596    '-'         shift, and go to state 23
2597    '['         shift, and go to state 24
2598    '('         shift, and go to state 25
2599
2600    object_creation  go to state 27
2601    dot_accessor     go to state 28
2602    member_accessor  go to state 29
2603    accessor         go to state 30
2604    symbol_accessor  go to state 31
2605    expression       go to state 157
2606    express          go to state 34
2607    arbitrary_call   go to state 45
2608    list_symbol      go to state 47
2609    primitive        go to state 48
2610
2611
2612state 144
2613
2614   51 struct_if: "if" '(' expression ')' . '{' procedure '}'
2615
2616    '{'  shift, and go to state 158
2617
2618
2619state 145
2620
2621   80 argument_list: argument_list ',' expression .
2622
2623    $default  reduce using rule 80 (argument_list)
2624
2625
2626state 146
2627
2628   13 symbol_accessor: IDENTIFIER '[' expression ']' .
2629
2630    $default  reduce using rule 13 (symbol_accessor)
2631
2632
2633state 147
2634
2635   73 arbitrary_call: IDENTIFIER '(' arguments ')' .
2636
2637    $default  reduce using rule 73 (arbitrary_call)
2638
2639
2640state 148
2641
2642   52 struct_elif: "elif" '(' expression . ')' '{' procedure '}'
2643
2644    ')'  shift, and go to state 159
2645
2646
2647state 149
2648
2649   53 struct_else: "else" '{' . procedure '}'
2650
2651    "object"    shift, and go to state 4
2652    "defun"     shift, and go to state 5
2653    "break"     shift, and go to state 6
2654    "conintue"  shift, and go to state 7
2655    "return"    shift, and go to state 8
2656    "delete"    shift, and go to state 9
2657    "while"     shift, and go to state 10
2658    "for"       shift, and go to state 11
2659    "new"       shift, and go to state 12
2660    "if"        shift, and go to state 13
2661    "print"     shift, and go to state 14
2662    "true"      shift, and go to state 15
2663    "false"     shift, and go to state 16
2664    "nil"       shift, and go to state 17
2665    CHAR        shift, and go to state 18
2666    STRING      shift, and go to state 19
2667    INTEGER     shift, and go to state 20
2668    DOUBLE      shift, and go to state 21
2669    IDENTIFIER  shift, and go to state 22
2670    '-'         shift, and go to state 23
2671    '['         shift, and go to state 24
2672    '('         shift, and go to state 25
2673
2674    class_definition     go to state 26
2675    object_creation      go to state 27
2676    dot_accessor         go to state 28
2677    member_accessor      go to state 29
2678    accessor             go to state 30
2679    symbol_accessor      go to state 31
2680    function_definition  go to state 32
2681    expression           go to state 33
2682    express              go to state 34
2683    procedure            go to state 160
2684    pblock               go to state 135
2685    loop_while           go to state 35
2686    loop_for             go to state 36
2687    control_structure    go to state 37
2688    struct_if            go to state 38
2689    conditionals         go to state 39
2690    statement            go to state 136
2691    delete_keyword       go to state 41
2692    continue_keyword     go to state 42
2693    break_keyword        go to state 43
2694    return_keyword       go to state 44
2695    arbitrary_call       go to state 45
2696    print_keyword        go to state 46
2697    list_symbol          go to state 47
2698    primitive            go to state 48
2699
2700
2701state 150
2702
2703    4 class_definition: "object" IDENTIFIER '{' procedure '}' .
2704
2705    $default  reduce using rule 4 (class_definition)
2706
2707
2708state 151
2709
2710   42 pblock: pblock statement .
2711
2712    $default  reduce using rule 42 (pblock)
2713
2714
2715state 152
2716
2717   14 function_definition: "defun" IDENTIFIER '{' procedure '}' .
2718
2719    $default  reduce using rule 14 (function_definition)
2720
2721
2722state 153
2723
2724   15 function_definition: "defun" IDENTIFIER '(' ')' '{' . procedure '}'
2725
2726    "object"    shift, and go to state 4
2727    "defun"     shift, and go to state 5
2728    "break"     shift, and go to state 6
2729    "conintue"  shift, and go to state 7
2730    "return"    shift, and go to state 8
2731    "delete"    shift, and go to state 9
2732    "while"     shift, and go to state 10
2733    "for"       shift, and go to state 11
2734    "new"       shift, and go to state 12
2735    "if"        shift, and go to state 13
2736    "print"     shift, and go to state 14
2737    "true"      shift, and go to state 15
2738    "false"     shift, and go to state 16
2739    "nil"       shift, and go to state 17
2740    CHAR        shift, and go to state 18
2741    STRING      shift, and go to state 19
2742    INTEGER     shift, and go to state 20
2743    DOUBLE      shift, and go to state 21
2744    IDENTIFIER  shift, and go to state 22
2745    '-'         shift, and go to state 23
2746    '['         shift, and go to state 24
2747    '('         shift, and go to state 25
2748
2749    class_definition     go to state 26
2750    object_creation      go to state 27
2751    dot_accessor         go to state 28
2752    member_accessor      go to state 29
2753    accessor             go to state 30
2754    symbol_accessor      go to state 31
2755    function_definition  go to state 32
2756    expression           go to state 33
2757    express              go to state 34
2758    procedure            go to state 161
2759    pblock               go to state 135
2760    loop_while           go to state 35
2761    loop_for             go to state 36
2762    control_structure    go to state 37
2763    struct_if            go to state 38
2764    conditionals         go to state 39
2765    statement            go to state 136
2766    delete_keyword       go to state 41
2767    continue_keyword     go to state 42
2768    break_keyword        go to state 43
2769    return_keyword       go to state 44
2770    arbitrary_call       go to state 45
2771    print_keyword        go to state 46
2772    list_symbol          go to state 47
2773    primitive            go to state 48
2774
2775
2776state 154
2777
2778   76 parameters_expression: parameters_expression ',' . IDENTIFIER
2779
2780    IDENTIFIER  shift, and go to state 162
2781
2782
2783state 155
2784
2785   16 function_definition: "defun" IDENTIFIER '(' parameters ')' . '{' procedure '}'
2786
2787    '{'  shift, and go to state 163
2788
2789
2790state 156
2791
2792   44 loop_while: "while" '(' expression ')' '{' . procedure '}'
2793
2794    "object"    shift, and go to state 4
2795    "defun"     shift, and go to state 5
2796    "break"     shift, and go to state 6
2797    "conintue"  shift, and go to state 7
2798    "return"    shift, and go to state 8
2799    "delete"    shift, and go to state 9
2800    "while"     shift, and go to state 10
2801    "for"       shift, and go to state 11
2802    "new"       shift, and go to state 12
2803    "if"        shift, and go to state 13
2804    "print"     shift, and go to state 14
2805    "true"      shift, and go to state 15
2806    "false"     shift, and go to state 16
2807    "nil"       shift, and go to state 17
2808    CHAR        shift, and go to state 18
2809    STRING      shift, and go to state 19
2810    INTEGER     shift, and go to state 20
2811    DOUBLE      shift, and go to state 21
2812    IDENTIFIER  shift, and go to state 22
2813    '-'         shift, and go to state 23
2814    '['         shift, and go to state 24
2815    '('         shift, and go to state 25
2816
2817    class_definition     go to state 26
2818    object_creation      go to state 27
2819    dot_accessor         go to state 28
2820    member_accessor      go to state 29
2821    accessor             go to state 30
2822    symbol_accessor      go to state 31
2823    function_definition  go to state 32
2824    expression           go to state 33
2825    express              go to state 34
2826    procedure            go to state 164
2827    pblock               go to state 135
2828    loop_while           go to state 35
2829    loop_for             go to state 36
2830    control_structure    go to state 37
2831    struct_if            go to state 38
2832    conditionals         go to state 39
2833    statement            go to state 136
2834    delete_keyword       go to state 41
2835    continue_keyword     go to state 42
2836    break_keyword        go to state 43
2837    return_keyword       go to state 44
2838    arbitrary_call       go to state 45
2839    print_keyword        go to state 46
2840    list_symbol          go to state 47
2841    primitive            go to state 48
2842
2843
2844state 157
2845
2846   45 loop_for: "for" '(' expression ';' expression . ';' expression ')' '{' procedure '}'
2847
2848    ';'  shift, and go to state 165
2849
2850
2851state 158
2852
2853   51 struct_if: "if" '(' expression ')' '{' . procedure '}'
2854
2855    "object"    shift, and go to state 4
2856    "defun"     shift, and go to state 5
2857    "break"     shift, and go to state 6
2858    "conintue"  shift, and go to state 7
2859    "return"    shift, and go to state 8
2860    "delete"    shift, and go to state 9
2861    "while"     shift, and go to state 10
2862    "for"       shift, and go to state 11
2863    "new"       shift, and go to state 12
2864    "if"        shift, and go to state 13
2865    "print"     shift, and go to state 14
2866    "true"      shift, and go to state 15
2867    "false"     shift, and go to state 16
2868    "nil"       shift, and go to state 17
2869    CHAR        shift, and go to state 18
2870    STRING      shift, and go to state 19
2871    INTEGER     shift, and go to state 20
2872    DOUBLE      shift, and go to state 21
2873    IDENTIFIER  shift, and go to state 22
2874    '-'         shift, and go to state 23
2875    '['         shift, and go to state 24
2876    '('         shift, and go to state 25
2877
2878    class_definition     go to state 26
2879    object_creation      go to state 27
2880    dot_accessor         go to state 28
2881    member_accessor      go to state 29
2882    accessor             go to state 30
2883    symbol_accessor      go to state 31
2884    function_definition  go to state 32
2885    expression           go to state 33
2886    express              go to state 34
2887    procedure            go to state 166
2888    pblock               go to state 135
2889    loop_while           go to state 35
2890    loop_for             go to state 36
2891    control_structure    go to state 37
2892    struct_if            go to state 38
2893    conditionals         go to state 39
2894    statement            go to state 136
2895    delete_keyword       go to state 41
2896    continue_keyword     go to state 42
2897    break_keyword        go to state 43
2898    return_keyword       go to state 44
2899    arbitrary_call       go to state 45
2900    print_keyword        go to state 46
2901    list_symbol          go to state 47
2902    primitive            go to state 48
2903
2904
2905state 159
2906
2907   52 struct_elif: "elif" '(' expression ')' . '{' procedure '}'
2908
2909    '{'  shift, and go to state 167
2910
2911
2912state 160
2913
2914   53 struct_else: "else" '{' procedure . '}'
2915
2916    '}'  shift, and go to state 168
2917
2918
2919state 161
2920
2921   15 function_definition: "defun" IDENTIFIER '(' ')' '{' procedure . '}'
2922
2923    '}'  shift, and go to state 169
2924
2925
2926state 162
2927
2928   76 parameters_expression: parameters_expression ',' IDENTIFIER .
2929
2930    $default  reduce using rule 76 (parameters_expression)
2931
2932
2933state 163
2934
2935   16 function_definition: "defun" IDENTIFIER '(' parameters ')' '{' . procedure '}'
2936
2937    "object"    shift, and go to state 4
2938    "defun"     shift, and go to state 5
2939    "break"     shift, and go to state 6
2940    "conintue"  shift, and go to state 7
2941    "return"    shift, and go to state 8
2942    "delete"    shift, and go to state 9
2943    "while"     shift, and go to state 10
2944    "for"       shift, and go to state 11
2945    "new"       shift, and go to state 12
2946    "if"        shift, and go to state 13
2947    "print"     shift, and go to state 14
2948    "true"      shift, and go to state 15
2949    "false"     shift, and go to state 16
2950    "nil"       shift, and go to state 17
2951    CHAR        shift, and go to state 18
2952    STRING      shift, and go to state 19
2953    INTEGER     shift, and go to state 20
2954    DOUBLE      shift, and go to state 21
2955    IDENTIFIER  shift, and go to state 22
2956    '-'         shift, and go to state 23
2957    '['         shift, and go to state 24
2958    '('         shift, and go to state 25
2959
2960    class_definition     go to state 26
2961    object_creation      go to state 27
2962    dot_accessor         go to state 28
2963    member_accessor      go to state 29
2964    accessor             go to state 30
2965    symbol_accessor      go to state 31
2966    function_definition  go to state 32
2967    expression           go to state 33
2968    express              go to state 34
2969    procedure            go to state 170
2970    pblock               go to state 135
2971    loop_while           go to state 35
2972    loop_for             go to state 36
2973    control_structure    go to state 37
2974    struct_if            go to state 38
2975    conditionals         go to state 39
2976    statement            go to state 136
2977    delete_keyword       go to state 41
2978    continue_keyword     go to state 42
2979    break_keyword        go to state 43
2980    return_keyword       go to state 44
2981    arbitrary_call       go to state 45
2982    print_keyword        go to state 46
2983    list_symbol          go to state 47
2984    primitive            go to state 48
2985
2986
2987state 164
2988
2989   44 loop_while: "while" '(' expression ')' '{' procedure . '}'
2990
2991    '}'  shift, and go to state 171
2992
2993
2994state 165
2995
2996   45 loop_for: "for" '(' expression ';' expression ';' . expression ')' '{' procedure '}'
2997
2998    "new"       shift, and go to state 12
2999    "true"      shift, and go to state 15
3000    "false"     shift, and go to state 16
3001    "nil"       shift, and go to state 17
3002    CHAR        shift, and go to state 18
3003    STRING      shift, and go to state 19
3004    INTEGER     shift, and go to state 20
3005    DOUBLE      shift, and go to state 21
3006    IDENTIFIER  shift, and go to state 22
3007    '-'         shift, and go to state 23
3008    '['         shift, and go to state 24
3009    '('         shift, and go to state 25
3010
3011    object_creation  go to state 27
3012    dot_accessor     go to state 28
3013    member_accessor  go to state 29
3014    accessor         go to state 30
3015    symbol_accessor  go to state 31
3016    expression       go to state 172
3017    express          go to state 34
3018    arbitrary_call   go to state 45
3019    list_symbol      go to state 47
3020    primitive        go to state 48
3021
3022
3023state 166
3024
3025   51 struct_if: "if" '(' expression ')' '{' procedure . '}'
3026
3027    '}'  shift, and go to state 173
3028
3029
3030state 167
3031
3032   52 struct_elif: "elif" '(' expression ')' '{' . procedure '}'
3033
3034    "object"    shift, and go to state 4
3035    "defun"     shift, and go to state 5
3036    "break"     shift, and go to state 6
3037    "conintue"  shift, and go to state 7
3038    "return"    shift, and go to state 8
3039    "delete"    shift, and go to state 9
3040    "while"     shift, and go to state 10
3041    "for"       shift, and go to state 11
3042    "new"       shift, and go to state 12
3043    "if"        shift, and go to state 13
3044    "print"     shift, and go to state 14
3045    "true"      shift, and go to state 15
3046    "false"     shift, and go to state 16
3047    "nil"       shift, and go to state 17
3048    CHAR        shift, and go to state 18
3049    STRING      shift, and go to state 19
3050    INTEGER     shift, and go to state 20
3051    DOUBLE      shift, and go to state 21
3052    IDENTIFIER  shift, and go to state 22
3053    '-'         shift, and go to state 23
3054    '['         shift, and go to state 24
3055    '('         shift, and go to state 25
3056
3057    class_definition     go to state 26
3058    object_creation      go to state 27
3059    dot_accessor         go to state 28
3060    member_accessor      go to state 29
3061    accessor             go to state 30
3062    symbol_accessor      go to state 31
3063    function_definition  go to state 32
3064    expression           go to state 33
3065    express              go to state 34
3066    procedure            go to state 174
3067    pblock               go to state 135
3068    loop_while           go to state 35
3069    loop_for             go to state 36
3070    control_structure    go to state 37
3071    struct_if            go to state 38
3072    conditionals         go to state 39
3073    statement            go to state 136
3074    delete_keyword       go to state 41
3075    continue_keyword     go to state 42
3076    break_keyword        go to state 43
3077    return_keyword       go to state 44
3078    arbitrary_call       go to state 45
3079    print_keyword        go to state 46
3080    list_symbol          go to state 47
3081    primitive            go to state 48
3082
3083
3084state 168
3085
3086   53 struct_else: "else" '{' procedure '}' .
3087
3088    $default  reduce using rule 53 (struct_else)
3089
3090
3091state 169
3092
3093   15 function_definition: "defun" IDENTIFIER '(' ')' '{' procedure '}' .
3094
3095    $default  reduce using rule 15 (function_definition)
3096
3097
3098state 170
3099
3100   16 function_definition: "defun" IDENTIFIER '(' parameters ')' '{' procedure . '}'
3101
3102    '}'  shift, and go to state 175
3103
3104
3105state 171
3106
3107   44 loop_while: "while" '(' expression ')' '{' procedure '}' .
3108
3109    $default  reduce using rule 44 (loop_while)
3110
3111
3112state 172
3113
3114   45 loop_for: "for" '(' expression ';' expression ';' expression . ')' '{' procedure '}'
3115
3116    ')'  shift, and go to state 176
3117
3118
3119state 173
3120
3121   51 struct_if: "if" '(' expression ')' '{' procedure '}' .
3122
3123    $default  reduce using rule 51 (struct_if)
3124
3125
3126state 174
3127
3128   52 struct_elif: "elif" '(' expression ')' '{' procedure . '}'
3129
3130    '}'  shift, and go to state 177
3131
3132
3133state 175
3134
3135   16 function_definition: "defun" IDENTIFIER '(' parameters ')' '{' procedure '}' .
3136
3137    $default  reduce using rule 16 (function_definition)
3138
3139
3140state 176
3141
3142   45 loop_for: "for" '(' expression ';' expression ';' expression ')' . '{' procedure '}'
3143
3144    '{'  shift, and go to state 178
3145
3146
3147state 177
3148
3149   52 struct_elif: "elif" '(' expression ')' '{' procedure '}' .
3150
3151    $default  reduce using rule 52 (struct_elif)
3152
3153
3154state 178
3155
3156   45 loop_for: "for" '(' expression ';' expression ';' expression ')' '{' . procedure '}'
3157
3158    "object"    shift, and go to state 4
3159    "defun"     shift, and go to state 5
3160    "break"     shift, and go to state 6
3161    "conintue"  shift, and go to state 7
3162    "return"    shift, and go to state 8
3163    "delete"    shift, and go to state 9
3164    "while"     shift, and go to state 10
3165    "for"       shift, and go to state 11
3166    "new"       shift, and go to state 12
3167    "if"        shift, and go to state 13
3168    "print"     shift, and go to state 14
3169    "true"      shift, and go to state 15
3170    "false"     shift, and go to state 16
3171    "nil"       shift, and go to state 17
3172    CHAR        shift, and go to state 18
3173    STRING      shift, and go to state 19
3174    INTEGER     shift, and go to state 20
3175    DOUBLE      shift, and go to state 21
3176    IDENTIFIER  shift, and go to state 22
3177    '-'         shift, and go to state 23
3178    '['         shift, and go to state 24
3179    '('         shift, and go to state 25
3180
3181    class_definition     go to state 26
3182    object_creation      go to state 27
3183    dot_accessor         go to state 28
3184    member_accessor      go to state 29
3185    accessor             go to state 30
3186    symbol_accessor      go to state 31
3187    function_definition  go to state 32
3188    expression           go to state 33
3189    express              go to state 34
3190    procedure            go to state 179
3191    pblock               go to state 135
3192    loop_while           go to state 35
3193    loop_for             go to state 36
3194    control_structure    go to state 37
3195    struct_if            go to state 38
3196    conditionals         go to state 39
3197    statement            go to state 136
3198    delete_keyword       go to state 41
3199    continue_keyword     go to state 42
3200    break_keyword        go to state 43
3201    return_keyword       go to state 44
3202    arbitrary_call       go to state 45
3203    print_keyword        go to state 46
3204    list_symbol          go to state 47
3205    primitive            go to state 48
3206
3207
3208state 179
3209
3210   45 loop_for: "for" '(' expression ';' expression ';' expression ')' '{' procedure . '}'
3211
3212    '}'  shift, and go to state 180
3213
3214
3215state 180
3216
3217   45 loop_for: "for" '(' expression ';' expression ';' expression ')' '{' procedure '}' .
3218
3219    $default  reduce using rule 45 (loop_for)
Note: See TracBrowser for help on using the browser.