00001 package edu.ksu.cis.bandera.birp.parser;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 import edu.ksu.cis.bandera.birp.lexer.*;
00037 import edu.ksu.cis.bandera.birp.node.*;
00038 import edu.ksu.cis.bandera.birp.analysis.*;
00039 import ca.mcgill.sable.util.*;
00040
00041 import java.io.DataInputStream;
00042 import java.io.BufferedInputStream;
00043 import java.io.IOException;
00044
00045 public class Parser
00046 {
00047 public final Analysis ignoredTokens = new AnalysisAdapter();
00048
00049 protected Node node;
00050
00051 private final Lexer lexer;
00052 private final ListIterator stack = new LinkedList().listIterator();
00053 private int last_shift;
00054 private int last_pos;
00055 private int last_line;
00056 private final TokenIndex converter = new TokenIndex();
00057 private final int[] action = new int[2];
00058
00059 private final static int SHIFT = 0;
00060 private final static int REDUCE = 1;
00061 private final static int ACCEPT = 2;
00062 private final static int ERROR = 3;
00063
00064 private static int[][][] actionTable;
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469 private static int[][][] gotoTable;
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535 private static String[] errorMessages;
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599 private static int[] errors;
00600
00601
00602
00603 public Parser(Lexer lexer)
00604 {
00605 this.lexer = lexer;
00606
00607 if(actionTable == null)
00608 {
00609 try
00610 {
00611 DataInputStream s = new DataInputStream(
00612 new BufferedInputStream(
00613 Parser.class.getResourceAsStream("parser.dat")));
00614
00615
00616 int length = s.readInt();
00617 actionTable = new int[length][][];
00618 for(int i = 0; i < actionTable.length; i++)
00619 {
00620 length = s.readInt();
00621 actionTable[i] = new int[length][3];
00622 for(int j = 0; j < actionTable[i].length; j++)
00623 {
00624 for(int k = 0; k < 3; k++)
00625 {
00626 actionTable[i][j][k] = s.readInt();
00627 }
00628 }
00629 }
00630
00631
00632 length = s.readInt();
00633 gotoTable = new int[length][][];
00634 for(int i = 0; i < gotoTable.length; i++)
00635 {
00636 length = s.readInt();
00637 gotoTable[i] = new int[length][2];
00638 for(int j = 0; j < gotoTable[i].length; j++)
00639 {
00640 for(int k = 0; k < 2; k++)
00641 {
00642 gotoTable[i][j][k] = s.readInt();
00643 }
00644 }
00645 }
00646
00647
00648 length = s.readInt();
00649 errorMessages = new String[length];
00650 for(int i = 0; i < errorMessages.length; i++)
00651 {
00652 length = s.readInt();
00653 StringBuffer buffer = new StringBuffer();
00654
00655 for(int j = 0; j < length; j++)
00656 {
00657 buffer.append(s.readChar());
00658 }
00659 errorMessages[i] = buffer.toString();
00660 }
00661
00662
00663 length = s.readInt();
00664 errors = new int[length];
00665 for(int i = 0; i < errors.length; i++)
00666 {
00667 errors[i] = s.readInt();
00668 }
00669
00670 s.close();
00671 }
00672 catch(Exception e)
00673 {
00674 throw new RuntimeException("Unable to read parser.dat.");
00675 }
00676 }
00677 }
00678 protected void filter() throws ParserException, LexerException, IOException
00679 {
00680 }
00681 private int goTo(int index)
00682 {
00683 int state = state();
00684 int low = 1;
00685 int high = gotoTable[index].length - 1;
00686 int value = gotoTable[index][0][1];
00687
00688 while(low <= high)
00689 {
00690 int middle = (low + high) / 2;
00691
00692 if(state < gotoTable[index][middle][0])
00693 {
00694 high = middle - 1;
00695 }
00696 else if(state > gotoTable[index][middle][0])
00697 {
00698 low = middle + 1;
00699 }
00700 else
00701 {
00702 value = gotoTable[index][middle][1];
00703 break;
00704 }
00705 }
00706
00707 return value;
00708 }
00709 private int index(Switchable token)
00710 {
00711 converter.index = -1;
00712 token.apply(converter);
00713 return converter.index;
00714 }
00715 Node new0()
00716 {
00717 PProcess node1 = (PProcess) pop();
00718 AProgram node = new AProgram(node1);
00719 return node;
00720 }
00721 Node new1()
00722 {
00723 TSemicolon node11 = (TSemicolon) pop();
00724 TId node10 = (TId) pop();
00725 TEnd node9 = (TEnd) pop();
00726 PPredicates node8 = null;
00727 XPThread node7 = null;
00728 XPGlobal node6 = null;
00729 XPDefinition node5 = null;
00730 TRparen node4 = (TRparen) pop();
00731 TLparen node3 = (TLparen) pop();
00732 TId node2 = (TId) pop();
00733 TProcess node1 = (TProcess) pop();
00734 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
00735 return node;
00736 }
00737 Node new10()
00738 {
00739 PThread node2 = (PThread) pop();
00740 XPThread node1 = (XPThread) pop();
00741 X1PThread node = new X1PThread(node1, node2);
00742 return node;
00743 }
00744 Node new100()
00745 {
00746 PExpr5 node3 = (PExpr5) pop();
00747 TAnd node2 = (TAnd) pop();
00748 PExpr6 node1 = (PExpr6) pop();
00749 AAndExpr6 node = new AAndExpr6(node1, node2, node3);
00750 return node;
00751 }
00752 Node new101()
00753 {
00754 PExpr4 node1 = (PExpr4) pop();
00755 AExpr4Expr5 node = new AExpr4Expr5(node1);
00756 return node;
00757 }
00758 Node new102()
00759 {
00760 PExpr4 node3 = (PExpr4) pop();
00761 TEq node2 = (TEq) pop();
00762 PExpr5 node1 = (PExpr5) pop();
00763 AEqExpr5 node = new AEqExpr5(node1, node2, node3);
00764 return node;
00765 }
00766 Node new103()
00767 {
00768 PExpr4 node3 = (PExpr4) pop();
00769 TNoteq node2 = (TNoteq) pop();
00770 PExpr5 node1 = (PExpr5) pop();
00771 ANoteqExpr5 node = new ANoteqExpr5(node1, node2, node3);
00772 return node;
00773 }
00774 Node new104()
00775 {
00776 PExpr3 node1 = (PExpr3) pop();
00777 AExpr3Expr4 node = new AExpr3Expr4(node1);
00778 return node;
00779 }
00780 Node new105()
00781 {
00782 PExpr3 node3 = (PExpr3) pop();
00783 TLt node2 = (TLt) pop();
00784 PExpr4 node1 = (PExpr4) pop();
00785 ALtExpr4 node = new ALtExpr4(node1, node2, node3);
00786 return node;
00787 }
00788 Node new106()
00789 {
00790 PExpr3 node3 = (PExpr3) pop();
00791 TLe node2 = (TLe) pop();
00792 PExpr4 node1 = (PExpr4) pop();
00793 ALeExpr4 node = new ALeExpr4(node1, node2, node3);
00794 return node;
00795 }
00796 Node new107()
00797 {
00798 PExpr3 node3 = (PExpr3) pop();
00799 TGt node2 = (TGt) pop();
00800 PExpr4 node1 = (PExpr4) pop();
00801 AGtExpr4 node = new AGtExpr4(node1, node2, node3);
00802 return node;
00803 }
00804 Node new108()
00805 {
00806 PExpr3 node3 = (PExpr3) pop();
00807 TGe node2 = (TGe) pop();
00808 PExpr4 node1 = (PExpr4) pop();
00809 AGeExpr4 node = new AGeExpr4(node1, node2, node3);
00810 return node;
00811 }
00812 Node new109()
00813 {
00814 PExpr2 node1 = (PExpr2) pop();
00815 AExpr2Expr3 node = new AExpr2Expr3(node1);
00816 return node;
00817 }
00818 Node new11()
00819 {
00820 PThread node1 = (PThread) pop();
00821 X2PThread node = new X2PThread(node1);
00822 return node;
00823 }
00824 Node new110()
00825 {
00826 PExpr2 node3 = (PExpr2) pop();
00827 TPlus node2 = (TPlus) pop();
00828 PExpr3 node1 = (PExpr3) pop();
00829 APlusExpr3 node = new APlusExpr3(node1, node2, node3);
00830 return node;
00831 }
00832 Node new111()
00833 {
00834 PExpr2 node3 = (PExpr2) pop();
00835 TMinus node2 = (TMinus) pop();
00836 PExpr3 node1 = (PExpr3) pop();
00837 AMinusExpr3 node = new AMinusExpr3(node1, node2, node3);
00838 return node;
00839 }
00840 Node new112()
00841 {
00842 PExpr1 node1 = (PExpr1) pop();
00843 AExpr1Expr2 node = new AExpr1Expr2(node1);
00844 return node;
00845 }
00846 Node new113()
00847 {
00848 PExpr1 node3 = (PExpr1) pop();
00849 TMult node2 = (TMult) pop();
00850 PExpr2 node1 = (PExpr2) pop();
00851 AMultExpr2 node = new AMultExpr2(node1, node2, node3);
00852 return node;
00853 }
00854 Node new114()
00855 {
00856 PExpr1 node3 = (PExpr1) pop();
00857 TDiv node2 = (TDiv) pop();
00858 PExpr2 node1 = (PExpr2) pop();
00859 ADivExpr2 node = new ADivExpr2(node1, node2, node3);
00860 return node;
00861 }
00862 Node new115()
00863 {
00864 PExpr1 node3 = (PExpr1) pop();
00865 TMod node2 = (TMod) pop();
00866 PExpr2 node1 = (PExpr2) pop();
00867 AModExpr2 node = new AModExpr2(node1, node2, node3);
00868 return node;
00869 }
00870 Node new116()
00871 {
00872 PExpr0 node1 = (PExpr0) pop();
00873 AExpr0Expr1 node = new AExpr0Expr1(node1);
00874 return node;
00875 }
00876 Node new117()
00877 {
00878 PExpr1 node2 = (PExpr1) pop();
00879 TPlus node1 = (TPlus) pop();
00880 APlusExpr1 node = new APlusExpr1(node1, node2);
00881 return node;
00882 }
00883 Node new118()
00884 {
00885 PExpr1 node2 = (PExpr1) pop();
00886 TMinus node1 = (TMinus) pop();
00887 AMinusExpr1 node = new AMinusExpr1(node1, node2);
00888 return node;
00889 }
00890 Node new119()
00891 {
00892 PExpr1 node2 = (PExpr1) pop();
00893 TNot node1 = (TNot) pop();
00894 ANotExpr1 node = new ANotExpr1(node1, node2);
00895 return node;
00896 }
00897 Node new12()
00898 {
00899 TSemicolon node11 = (TSemicolon) pop();
00900 TId node10 = (TId) pop();
00901 TEnd node9 = (TEnd) pop();
00902 PPredicates node8 = null;
00903 XPThread node7 = (XPThread) pop();
00904 XPGlobal node6 = null;
00905 XPDefinition node5 = (XPDefinition) pop();
00906 TRparen node4 = (TRparen) pop();
00907 TLparen node3 = (TLparen) pop();
00908 TId node2 = (TId) pop();
00909 TProcess node1 = (TProcess) pop();
00910 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
00911 return node;
00912 }
00913 Node new120()
00914 {
00915 PValue node1 = (PValue) pop();
00916 AValueExpr0 node = new AValueExpr0(node1);
00917 return node;
00918 }
00919 Node new121()
00920 {
00921 PLocktest node1 = (PLocktest) pop();
00922 ALocktestExpr0 node = new ALocktestExpr0(node1);
00923 return node;
00924 }
00925 Node new122()
00926 {
00927 PThreadtest node1 = (PThreadtest) pop();
00928 AThreadtestExpr0 node = new AThreadtestExpr0(node1);
00929 return node;
00930 }
00931 Node new123()
00932 {
00933 TId node3 = (TId) pop();
00934 TDot node2 = (TDot) pop();
00935 PExpr0 node1 = (PExpr0) pop();
00936 AFieldselectExpr0 node = new AFieldselectExpr0(node1, node2, node3);
00937 return node;
00938 }
00939 Node new124()
00940 {
00941 TRbrack node4 = (TRbrack) pop();
00942 PExpr node3 = (PExpr) pop();
00943 TLbrack node2 = (TLbrack) pop();
00944 PExpr0 node1 = (PExpr0) pop();
00945 AArrayselectExpr0 node = new AArrayselectExpr0(node1, node2, node3, node4);
00946 return node;
00947 }
00948 Node new125()
00949 {
00950 TLength node3 = (TLength) pop();
00951 TDot node2 = (TDot) pop();
00952 PExpr0 node1 = (PExpr0) pop();
00953 AArraylengthExpr0 node = new AArraylengthExpr0(node1, node2, node3);
00954 return node;
00955 }
00956 Node new126()
00957 {
00958 TId node3 = (TId) pop();
00959 TInstanceof node2 = (TInstanceof) pop();
00960 PExpr0 node1 = (PExpr0) pop();
00961 AInstanceofExpr0 node = new AInstanceofExpr0(node1, node2, node3);
00962 return node;
00963 }
00964 Node new127()
00965 {
00966 TId node3 = (TId) pop();
00967 TColon node2 = (TColon) pop();
00968 TId node1 = (TId) pop();
00969 ARemoterefExpr0 node = new ARemoterefExpr0(node1, node2, node3);
00970 return node;
00971 }
00972 Node new128()
00973 {
00974 TRparen node3 = (TRparen) pop();
00975 PExpr node2 = (PExpr) pop();
00976 TLparen node1 = (TLparen) pop();
00977 AParenexprExpr0 node = new AParenexprExpr0(node1, node2, node3);
00978 return node;
00979 }
00980 Node new129()
00981 {
00982 TId node1 = (TId) pop();
00983 AValueLhs node = new AValueLhs(node1);
00984 return node;
00985 }
00986 Node new13()
00987 {
00988 TSemicolon node11 = (TSemicolon) pop();
00989 TId node10 = (TId) pop();
00990 TEnd node9 = (TEnd) pop();
00991 PPredicates node8 = null;
00992 XPThread node7 = (XPThread) pop();
00993 XPGlobal node6 = (XPGlobal) pop();
00994 XPDefinition node5 = null;
00995 TRparen node4 = (TRparen) pop();
00996 TLparen node3 = (TLparen) pop();
00997 TId node2 = (TId) pop();
00998 TProcess node1 = (TProcess) pop();
00999 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01000 return node;
01001 }
01002 Node new130()
01003 {
01004 TId node3 = (TId) pop();
01005 TDot node2 = (TDot) pop();
01006 PLhs node1 = (PLhs) pop();
01007 AFieldselectLhs node = new AFieldselectLhs(node1, node2, node3);
01008 return node;
01009 }
01010 Node new131()
01011 {
01012 TRbrack node4 = (TRbrack) pop();
01013 PExpr node3 = (PExpr) pop();
01014 TLbrack node2 = (TLbrack) pop();
01015 PLhs node1 = (PLhs) pop();
01016 AArrayselectLhs node = new AArrayselectLhs(node1, node2, node3, node4);
01017 return node;
01018 }
01019 Node new132()
01020 {
01021 TLength node3 = (TLength) pop();
01022 TDot node2 = (TDot) pop();
01023 PLhs node1 = (PLhs) pop();
01024 AArraylengthLhs node = new AArraylengthLhs(node1, node2, node3);
01025 return node;
01026 }
01027 Node new133()
01028 {
01029 PAssignment node1 = (PAssignment) pop();
01030 AAssignmentAction node = new AAssignmentAction(node1);
01031 return node;
01032 }
01033 Node new134()
01034 {
01035 PPrintaction node1 = (PPrintaction) pop();
01036 APrintactionAction node = new APrintactionAction(node1);
01037 return node;
01038 }
01039 Node new135()
01040 {
01041 PAssertaction node1 = (PAssertaction) pop();
01042 AAssertactionAction node = new AAssertactionAction(node1);
01043 return node;
01044 }
01045 Node new136()
01046 {
01047 PChoice node1 = (PChoice) pop();
01048 AChoiceAction node = new AChoiceAction(node1);
01049 return node;
01050 }
01051 Node new137()
01052 {
01053 PAllocation node1 = (PAllocation) pop();
01054 AAllocationAction node = new AAllocationAction(node1);
01055 return node;
01056 }
01057 Node new138()
01058 {
01059 PLockupdate node1 = (PLockupdate) pop();
01060 ALockupdateAction node = new ALockupdateAction(node1);
01061 return node;
01062 }
01063 Node new139()
01064 {
01065 PThreadupdate node1 = (PThreadupdate) pop();
01066 AThreadupdateAction node = new AThreadupdateAction(node1);
01067 return node;
01068 }
01069 Node new14()
01070 {
01071 TSemicolon node11 = (TSemicolon) pop();
01072 TId node10 = (TId) pop();
01073 TEnd node9 = (TEnd) pop();
01074 PPredicates node8 = null;
01075 XPThread node7 = (XPThread) pop();
01076 XPGlobal node6 = (XPGlobal) pop();
01077 XPDefinition node5 = (XPDefinition) pop();
01078 TRparen node4 = (TRparen) pop();
01079 TLparen node3 = (TLparen) pop();
01080 TId node2 = (TId) pop();
01081 TProcess node1 = (TProcess) pop();
01082 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01083 return node;
01084 }
01085 Node new140()
01086 {
01087 TSemicolon node4 = (TSemicolon) pop();
01088 PExpr node3 = (PExpr) pop();
01089 TAssign node2 = (TAssign) pop();
01090 PLhs node1 = (PLhs) pop();
01091 AAssignment node = new AAssignment(node1, node2, node3, node4);
01092 return node;
01093 }
01094 Node new141()
01095 {
01096 TSemicolon node5 = (TSemicolon) pop();
01097 TRparen node4 = (TRparen) pop();
01098 PPrintargs node3 = null;
01099 TLparen node2 = (TLparen) pop();
01100 TPrintln node1 = (TPrintln) pop();
01101 APrintaction node = new APrintaction(node1, node2, node3, node4, node5);
01102 return node;
01103 }
01104 Node new142()
01105 {
01106 TSemicolon node5 = (TSemicolon) pop();
01107 TRparen node4 = (TRparen) pop();
01108 PPrintargs node3 = (PPrintargs) pop();
01109 TLparen node2 = (TLparen) pop();
01110 TPrintln node1 = (TPrintln) pop();
01111 APrintaction node = new APrintaction(node1, node2, node3, node4, node5);
01112 return node;
01113 }
01114 Node new143()
01115 {
01116 PPrintarg node1 = (PPrintarg) pop();
01117 AOnePrintargs node = new AOnePrintargs(node1);
01118 return node;
01119 }
01120 Node new144()
01121 {
01122 PPrintargs node3 = (PPrintargs) pop();
01123 TComma node2 = (TComma) pop();
01124 PPrintarg node1 = (PPrintarg) pop();
01125 AMorePrintargs node = new AMorePrintargs(node1, node2, node3);
01126 return node;
01127 }
01128 Node new145()
01129 {
01130 TString node1 = (TString) pop();
01131 AStringPrintarg node = new AStringPrintarg(node1);
01132 return node;
01133 }
01134 Node new146()
01135 {
01136 TId node1 = (TId) pop();
01137 AVarPrintarg node = new AVarPrintarg(node1);
01138 return node;
01139 }
01140 Node new147()
01141 {
01142 TSemicolon node5 = (TSemicolon) pop();
01143 TRparen node4 = (TRparen) pop();
01144 PExpr node3 = (PExpr) pop();
01145 TLparen node2 = (TLparen) pop();
01146 TAssert node1 = (TAssert) pop();
01147 AAssertaction node = new AAssertaction(node1, node2, node3, node4, node5);
01148 return node;
01149 }
01150 Node new148()
01151 {
01152 TSemicolon node8 = (TSemicolon) pop();
01153 TRparen node7 = (TRparen) pop();
01154 XPChoicetail node6 = null;
01155 PValue node5 = (PValue) pop();
01156 TLparen node4 = (TLparen) pop();
01157 TChoose node3 = (TChoose) pop();
01158 TAssign node2 = (TAssign) pop();
01159 PLhs node1 = (PLhs) pop();
01160 AChoice node = new AChoice(node1, node2, node3, node4, node5, node6, node7, node8);
01161 return node;
01162 }
01163 Node new149()
01164 {
01165 TSemicolon node8 = (TSemicolon) pop();
01166 TRparen node7 = (TRparen) pop();
01167 XPChoicetail node6 = (XPChoicetail) pop();
01168 PValue node5 = (PValue) pop();
01169 TLparen node4 = (TLparen) pop();
01170 TChoose node3 = (TChoose) pop();
01171 TAssign node2 = (TAssign) pop();
01172 PLhs node1 = (PLhs) pop();
01173 AChoice node = new AChoice(node1, node2, node3, node4, node5, node6, node7, node8);
01174 return node;
01175 }
01176 Node new15()
01177 {
01178 TSemicolon node11 = (TSemicolon) pop();
01179 TId node10 = (TId) pop();
01180 TEnd node9 = (TEnd) pop();
01181 PPredicates node8 = (PPredicates) pop();
01182 XPThread node7 = null;
01183 XPGlobal node6 = null;
01184 XPDefinition node5 = null;
01185 TRparen node4 = (TRparen) pop();
01186 TLparen node3 = (TLparen) pop();
01187 TId node2 = (TId) pop();
01188 TProcess node1 = (TProcess) pop();
01189 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01190 return node;
01191 }
01192 Node new150()
01193 {
01194 PChoicetail node2 = (PChoicetail) pop();
01195 XPChoicetail node1 = (XPChoicetail) pop();
01196 X1PChoicetail node = new X1PChoicetail(node1, node2);
01197 return node;
01198 }
01199 Node new151()
01200 {
01201 PChoicetail node1 = (PChoicetail) pop();
01202 X2PChoicetail node = new X2PChoicetail(node1);
01203 return node;
01204 }
01205 Node new152()
01206 {
01207 TSemicolon node6 = (TSemicolon) pop();
01208 PArraylength node5 = null;
01209 TId node4 = (TId) pop();
01210 TNew node3 = (TNew) pop();
01211 TAssign node2 = (TAssign) pop();
01212 PLhs node1 = (PLhs) pop();
01213 AAllocation node = new AAllocation(node1, node2, node3, node4, node5, node6);
01214 return node;
01215 }
01216 Node new153()
01217 {
01218 TSemicolon node6 = (TSemicolon) pop();
01219 PArraylength node5 = (PArraylength) pop();
01220 TId node4 = (TId) pop();
01221 TNew node3 = (TNew) pop();
01222 TAssign node2 = (TAssign) pop();
01223 PLhs node1 = (PLhs) pop();
01224 AAllocation node = new AAllocation(node1, node2, node3, node4, node5, node6);
01225 return node;
01226 }
01227 Node new154()
01228 {
01229 TRbrack node3 = (TRbrack) pop();
01230 PExpr node2 = (PExpr) pop();
01231 TLbrack node1 = (TLbrack) pop();
01232 AArraylength node = new AArraylength(node1, node2, node3);
01233 return node;
01234 }
01235 Node new155()
01236 {
01237 PValue node2 = (PValue) pop();
01238 TComma node1 = (TComma) pop();
01239 AChoicetail node = new AChoicetail(node1, node2);
01240 return node;
01241 }
01242 Node new156()
01243 {
01244 TSemicolon node5 = (TSemicolon) pop();
01245 TRparen node4 = (TRparen) pop();
01246 PLhs node3 = (PLhs) pop();
01247 TLparen node2 = (TLparen) pop();
01248 PLockOp node1 = (PLockOp) pop();
01249 ALockupdate node = new ALockupdate(node1, node2, node3, node4, node5);
01250 return node;
01251 }
01252 Node new157()
01253 {
01254 TLock node1 = (TLock) pop();
01255 ALockLockOp node = new ALockLockOp(node1);
01256 return node;
01257 }
01258 Node new158()
01259 {
01260 TUnlock node1 = (TUnlock) pop();
01261 AUnlockLockOp node = new AUnlockLockOp(node1);
01262 return node;
01263 }
01264 Node new159()
01265 {
01266 TWait node1 = (TWait) pop();
01267 AWaitLockOp node = new AWaitLockOp(node1);
01268 return node;
01269 }
01270 Node new16()
01271 {
01272 TSemicolon node11 = (TSemicolon) pop();
01273 TId node10 = (TId) pop();
01274 TEnd node9 = (TEnd) pop();
01275 PPredicates node8 = (PPredicates) pop();
01276 XPThread node7 = null;
01277 XPGlobal node6 = null;
01278 XPDefinition node5 = (XPDefinition) pop();
01279 TRparen node4 = (TRparen) pop();
01280 TLparen node3 = (TLparen) pop();
01281 TId node2 = (TId) pop();
01282 TProcess node1 = (TProcess) pop();
01283 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01284 return node;
01285 }
01286 Node new160()
01287 {
01288 TUnwait node1 = (TUnwait) pop();
01289 AUnwaitLockOp node = new AUnwaitLockOp(node1);
01290 return node;
01291 }
01292 Node new161()
01293 {
01294 TNotify node1 = (TNotify) pop();
01295 ANotifyLockOp node = new ANotifyLockOp(node1);
01296 return node;
01297 }
01298 Node new162()
01299 {
01300 TNotifyall node1 = (TNotifyall) pop();
01301 ANotifyallLockOp node = new ANotifyallLockOp(node1);
01302 return node;
01303 }
01304 Node new163()
01305 {
01306 TRparen node4 = (TRparen) pop();
01307 PLhs node3 = (PLhs) pop();
01308 TLparen node2 = (TLparen) pop();
01309 PLocktestop node1 = (PLocktestop) pop();
01310 ALocktest node = new ALocktest(node1, node2, node3, node4);
01311 return node;
01312 }
01313 Node new164()
01314 {
01315 TLockavailable node1 = (TLockavailable) pop();
01316 ALockavailableLocktestop node = new ALockavailableLocktestop(node1);
01317 return node;
01318 }
01319 Node new165()
01320 {
01321 THaslock node1 = (THaslock) pop();
01322 AHaslockLocktestop node = new AHaslockLocktestop(node1);
01323 return node;
01324 }
01325 Node new166()
01326 {
01327 TWasnotified node1 = (TWasnotified) pop();
01328 AWasnotifiedLocktestop node = new AWasnotifiedLocktestop(node1);
01329 return node;
01330 }
01331 Node new167()
01332 {
01333 TSemicolon node5 = (TSemicolon) pop();
01334 TRparen node4 = (TRparen) pop();
01335 TId node3 = (TId) pop();
01336 TLparen node2 = (TLparen) pop();
01337 PThreadop node1 = (PThreadop) pop();
01338 AThreadupdate node = new AThreadupdate(node1, node2, node3, node4, node5);
01339 return node;
01340 }
01341 Node new168()
01342 {
01343 TStart node1 = (TStart) pop();
01344 AStartThreadop node = new AStartThreadop(node1);
01345 return node;
01346 }
01347 Node new169()
01348 {
01349 TJoin node1 = (TJoin) pop();
01350 AJoinThreadop node = new AJoinThreadop(node1);
01351 return node;
01352 }
01353 Node new17()
01354 {
01355 TSemicolon node11 = (TSemicolon) pop();
01356 TId node10 = (TId) pop();
01357 TEnd node9 = (TEnd) pop();
01358 PPredicates node8 = (PPredicates) pop();
01359 XPThread node7 = null;
01360 XPGlobal node6 = (XPGlobal) pop();
01361 XPDefinition node5 = null;
01362 TRparen node4 = (TRparen) pop();
01363 TLparen node3 = (TLparen) pop();
01364 TId node2 = (TId) pop();
01365 TProcess node1 = (TProcess) pop();
01366 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01367 return node;
01368 }
01369 Node new170()
01370 {
01371 TExit node1 = (TExit) pop();
01372 AExitThreadop node = new AExitThreadop(node1);
01373 return node;
01374 }
01375 Node new171()
01376 {
01377 TRparen node4 = (TRparen) pop();
01378 TId node3 = (TId) pop();
01379 TLparen node2 = (TLparen) pop();
01380 TThreadterminated node1 = (TThreadterminated) pop();
01381 ATerminatedThreadtest node = new ATerminatedThreadtest(node1, node2, node3, node4);
01382 return node;
01383 }
01384 Node new172()
01385 {
01386 TId node3 = (TId) pop();
01387 TAt node2 = (TAt) pop();
01388 TId node1 = (TId) pop();
01389 AAtlocationThreadtest node = new AAtlocationThreadtest(node1, node2, node3);
01390 return node;
01391 }
01392 Node new173()
01393 {
01394 XPPredicate node2 = null;
01395 TPredicates node1 = (TPredicates) pop();
01396 APredicates node = new APredicates(node1, node2);
01397 return node;
01398 }
01399 Node new174()
01400 {
01401 XPPredicate node2 = (XPPredicate) pop();
01402 TPredicates node1 = (TPredicates) pop();
01403 APredicates node = new APredicates(node1, node2);
01404 return node;
01405 }
01406 Node new175()
01407 {
01408 PPredicate node2 = (PPredicate) pop();
01409 XPPredicate node1 = (XPPredicate) pop();
01410 X1PPredicate node = new X1PPredicate(node1, node2);
01411 return node;
01412 }
01413 Node new176()
01414 {
01415 PPredicate node1 = (PPredicate) pop();
01416 X2PPredicate node = new X2PPredicate(node1);
01417 return node;
01418 }
01419 Node new177()
01420 {
01421 TSemicolon node4 = (TSemicolon) pop();
01422 PExpr node3 = (PExpr) pop();
01423 TEquals node2 = (TEquals) pop();
01424 TId node1 = (TId) pop();
01425 APredicate node = new APredicate(node1, node2, node3, node4);
01426 return node;
01427 }
01428 Node new18()
01429 {
01430 TSemicolon node11 = (TSemicolon) pop();
01431 TId node10 = (TId) pop();
01432 TEnd node9 = (TEnd) pop();
01433 PPredicates node8 = (PPredicates) pop();
01434 XPThread node7 = null;
01435 XPGlobal node6 = (XPGlobal) pop();
01436 XPDefinition node5 = (XPDefinition) pop();
01437 TRparen node4 = (TRparen) pop();
01438 TLparen node3 = (TLparen) pop();
01439 TId node2 = (TId) pop();
01440 TProcess node1 = (TProcess) pop();
01441 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01442 return node;
01443 }
01444 Node new19()
01445 {
01446 TSemicolon node11 = (TSemicolon) pop();
01447 TId node10 = (TId) pop();
01448 TEnd node9 = (TEnd) pop();
01449 PPredicates node8 = (PPredicates) pop();
01450 XPThread node7 = (XPThread) pop();
01451 XPGlobal node6 = null;
01452 XPDefinition node5 = null;
01453 TRparen node4 = (TRparen) pop();
01454 TLparen node3 = (TLparen) pop();
01455 TId node2 = (TId) pop();
01456 TProcess node1 = (TProcess) pop();
01457 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01458 return node;
01459 }
01460 Node new2()
01461 {
01462 TSemicolon node11 = (TSemicolon) pop();
01463 TId node10 = (TId) pop();
01464 TEnd node9 = (TEnd) pop();
01465 PPredicates node8 = null;
01466 XPThread node7 = null;
01467 XPGlobal node6 = null;
01468 XPDefinition node5 = (XPDefinition) pop();
01469 TRparen node4 = (TRparen) pop();
01470 TLparen node3 = (TLparen) pop();
01471 TId node2 = (TId) pop();
01472 TProcess node1 = (TProcess) pop();
01473 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01474 return node;
01475 }
01476 Node new20()
01477 {
01478 TSemicolon node11 = (TSemicolon) pop();
01479 TId node10 = (TId) pop();
01480 TEnd node9 = (TEnd) pop();
01481 PPredicates node8 = (PPredicates) pop();
01482 XPThread node7 = (XPThread) pop();
01483 XPGlobal node6 = null;
01484 XPDefinition node5 = (XPDefinition) pop();
01485 TRparen node4 = (TRparen) pop();
01486 TLparen node3 = (TLparen) pop();
01487 TId node2 = (TId) pop();
01488 TProcess node1 = (TProcess) pop();
01489 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01490 return node;
01491 }
01492 Node new21()
01493 {
01494 TSemicolon node11 = (TSemicolon) pop();
01495 TId node10 = (TId) pop();
01496 TEnd node9 = (TEnd) pop();
01497 PPredicates node8 = (PPredicates) pop();
01498 XPThread node7 = (XPThread) pop();
01499 XPGlobal node6 = (XPGlobal) pop();
01500 XPDefinition node5 = null;
01501 TRparen node4 = (TRparen) pop();
01502 TLparen node3 = (TLparen) pop();
01503 TId node2 = (TId) pop();
01504 TProcess node1 = (TProcess) pop();
01505 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01506 return node;
01507 }
01508 Node new22()
01509 {
01510 TSemicolon node11 = (TSemicolon) pop();
01511 TId node10 = (TId) pop();
01512 TEnd node9 = (TEnd) pop();
01513 PPredicates node8 = (PPredicates) pop();
01514 XPThread node7 = (XPThread) pop();
01515 XPGlobal node6 = (XPGlobal) pop();
01516 XPDefinition node5 = (XPDefinition) pop();
01517 TRparen node4 = (TRparen) pop();
01518 TLparen node3 = (TLparen) pop();
01519 TId node2 = (TId) pop();
01520 TProcess node1 = (TProcess) pop();
01521 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01522 return node;
01523 }
01524 Node new23()
01525 {
01526 TSemicolon node4 = (TSemicolon) pop();
01527 TInt node3 = (TInt) pop();
01528 TEquals node2 = (TEquals) pop();
01529 TId node1 = (TId) pop();
01530 AConstantDefinition node = new AConstantDefinition(node1, node2, node3, node4);
01531 return node;
01532 }
01533 Node new24()
01534 {
01535 TSemicolon node4 = (TSemicolon) pop();
01536 PTypespec node3 = (PTypespec) pop();
01537 TEquals node2 = (TEquals) pop();
01538 TId node1 = (TId) pop();
01539 ATypedefDefinition node = new ATypedefDefinition(node1, node2, node3, node4);
01540 return node;
01541 }
01542 Node new25()
01543 {
01544 PConst node4 = (PConst) pop();
01545 TDotdot node3 = (TDotdot) pop();
01546 PConst node2 = (PConst) pop();
01547 TRange node1 = (TRange) pop();
01548 ARangeTypespec node = new ARangeTypespec(node1, node2, node3, node4);
01549 return node;
01550 }
01551 Node new26()
01552 {
01553 TBoolean node1 = (TBoolean) pop();
01554 ABooleanTypespec node = new ABooleanTypespec(node1);
01555 return node;
01556 }
01557 Node new27()
01558 {
01559 TRbrace node5 = (TRbrace) pop();
01560 XPEnumdeftail node4 = null;
01561 PEnumconst node3 = (PEnumconst) pop();
01562 TLbrace node2 = (TLbrace) pop();
01563 TEnum node1 = (TEnum) pop();
01564 AEnumeratedTypespec node = new AEnumeratedTypespec(node1, node2, node3, node4, node5);
01565 return node;
01566 }
01567 Node new28()
01568 {
01569 TRbrace node5 = (TRbrace) pop();
01570 XPEnumdeftail node4 = (XPEnumdeftail) pop();
01571 PEnumconst node3 = (PEnumconst) pop();
01572 TLbrace node2 = (TLbrace) pop();
01573 TEnum node1 = (TEnum) pop();
01574 AEnumeratedTypespec node = new AEnumeratedTypespec(node1, node2, node3, node4, node5);
01575 return node;
01576 }
01577 Node new29()
01578 {
01579 PEnumdeftail node2 = (PEnumdeftail) pop();
01580 XPEnumdeftail node1 = (XPEnumdeftail) pop();
01581 X1PEnumdeftail node = new X1PEnumdeftail(node1, node2);
01582 return node;
01583 }
01584 Node new3()
01585 {
01586 PDefinition node2 = (PDefinition) pop();
01587 XPDefinition node1 = (XPDefinition) pop();
01588 X1PDefinition node = new X1PDefinition(node1, node2);
01589 return node;
01590 }
01591 Node new30()
01592 {
01593 PEnumdeftail node1 = (PEnumdeftail) pop();
01594 X2PEnumdeftail node = new X2PEnumdeftail(node1);
01595 return node;
01596 }
01597 Node new31()
01598 {
01599 TRbrace node4 = (TRbrace) pop();
01600 XPField node3 = null;
01601 TLbrace node2 = (TLbrace) pop();
01602 TRecord node1 = (TRecord) pop();
01603 ARecordTypespec node = new ARecordTypespec(node1, node2, node3, node4);
01604 return node;
01605 }
01606 Node new32()
01607 {
01608 TRbrace node4 = (TRbrace) pop();
01609 XPField node3 = (XPField) pop();
01610 TLbrace node2 = (TLbrace) pop();
01611 TRecord node1 = (TRecord) pop();
01612 ARecordTypespec node = new ARecordTypespec(node1, node2, node3, node4);
01613 return node;
01614 }
01615 Node new33()
01616 {
01617 PField node2 = (PField) pop();
01618 XPField node1 = (XPField) pop();
01619 X1PField node = new X1PField(node1, node2);
01620 return node;
01621 }
01622 Node new34()
01623 {
01624 PField node1 = (PField) pop();
01625 X2PField node = new X2PField(node1);
01626 return node;
01627 }
01628 Node new35()
01629 {
01630 PType node6 = (PType) pop();
01631 TOf node5 = (TOf) pop();
01632 TRbrack node4 = (TRbrack) pop();
01633 PConst node3 = (PConst) pop();
01634 TLbrack node2 = (TLbrack) pop();
01635 TArray node1 = (TArray) pop();
01636 AArrayTypespec node = new AArrayTypespec(node1, node2, node3, node4, node5, node6);
01637 return node;
01638 }
01639 Node new36()
01640 {
01641 TRbrace node5 = (TRbrace) pop();
01642 XPReftail node4 = null;
01643 TId node3 = (TId) pop();
01644 TLbrace node2 = (TLbrace) pop();
01645 TRef node1 = (TRef) pop();
01646 ARefTypespec node = new ARefTypespec(node1, node2, node3, node4, node5);
01647 return node;
01648 }
01649 Node new37()
01650 {
01651 TRbrace node5 = (TRbrace) pop();
01652 XPReftail node4 = (XPReftail) pop();
01653 TId node3 = (TId) pop();
01654 TLbrace node2 = (TLbrace) pop();
01655 TRef node1 = (TRef) pop();
01656 ARefTypespec node = new ARefTypespec(node1, node2, node3, node4, node5);
01657 return node;
01658 }
01659 Node new38()
01660 {
01661 PReftail node2 = (PReftail) pop();
01662 XPReftail node1 = (XPReftail) pop();
01663 X1PReftail node = new X1PReftail(node1, node2);
01664 return node;
01665 }
01666 Node new39()
01667 {
01668 PReftail node1 = (PReftail) pop();
01669 X2PReftail node = new X2PReftail(node1);
01670 return node;
01671 }
01672 Node new4()
01673 {
01674 PDefinition node1 = (PDefinition) pop();
01675 X2PDefinition node = new X2PDefinition(node1);
01676 return node;
01677 }
01678 Node new40()
01679 {
01680 TReentrant node3 = null;
01681 TWait node2 = null;
01682 TLock node1 = (TLock) pop();
01683 ALockTypespec node = new ALockTypespec(node1, node2, node3);
01684 return node;
01685 }
01686 Node new41()
01687 {
01688 TReentrant node3 = null;
01689 TWait node2 = (TWait) pop();
01690 TLock node1 = (TLock) pop();
01691 ALockTypespec node = new ALockTypespec(node1, node2, node3);
01692 return node;
01693 }
01694 Node new42()
01695 {
01696 TReentrant node3 = (TReentrant) pop();
01697 TWait node2 = null;
01698 TLock node1 = (TLock) pop();
01699 ALockTypespec node = new ALockTypespec(node1, node2, node3);
01700 return node;
01701 }
01702 Node new43()
01703 {
01704 TReentrant node3 = (TReentrant) pop();
01705 TWait node2 = (TWait) pop();
01706 TLock node1 = (TLock) pop();
01707 ALockTypespec node = new ALockTypespec(node1, node2, node3);
01708 return node;
01709 }
01710 Node new44()
01711 {
01712 PTypespec node1 = (PTypespec) pop();
01713 ATypespecType node = new ATypespecType(node1);
01714 return node;
01715 }
01716 Node new45()
01717 {
01718 TId node1 = (TId) pop();
01719 ADefinedType node = new ADefinedType(node1);
01720 return node;
01721 }
01722 Node new46()
01723 {
01724 TId node1 = (TId) pop();
01725 ANameEnumconst node = new ANameEnumconst(node1);
01726 return node;
01727 }
01728 Node new47()
01729 {
01730 TInt node3 = (TInt) pop();
01731 TEquals node2 = (TEquals) pop();
01732 TId node1 = (TId) pop();
01733 ANamevalueEnumconst node = new ANamevalueEnumconst(node1, node2, node3);
01734 return node;
01735 }
01736 Node new48()
01737 {
01738 PEnumconst node2 = (PEnumconst) pop();
01739 TComma node1 = (TComma) pop();
01740 AEnumdeftail node = new AEnumdeftail(node1, node2);
01741 return node;
01742 }
01743 Node new49()
01744 {
01745 TSemicolon node4 = (TSemicolon) pop();
01746 PType node3 = (PType) pop();
01747 TColon node2 = (TColon) pop();
01748 TId node1 = (TId) pop();
01749 AField node = new AField(node1, node2, node3, node4);
01750 return node;
01751 }
01752 Node new5()
01753 {
01754 TSemicolon node11 = (TSemicolon) pop();
01755 TId node10 = (TId) pop();
01756 TEnd node9 = (TEnd) pop();
01757 PPredicates node8 = null;
01758 XPThread node7 = null;
01759 XPGlobal node6 = (XPGlobal) pop();
01760 XPDefinition node5 = null;
01761 TRparen node4 = (TRparen) pop();
01762 TLparen node3 = (TLparen) pop();
01763 TId node2 = (TId) pop();
01764 TProcess node1 = (TProcess) pop();
01765 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01766 return node;
01767 }
01768 Node new50()
01769 {
01770 TId node2 = (TId) pop();
01771 TComma node1 = (TComma) pop();
01772 AReftail node = new AReftail(node1, node2);
01773 return node;
01774 }
01775 Node new51()
01776 {
01777 TInt node1 = (TInt) pop();
01778 AIntConst node = new AIntConst(node1);
01779 return node;
01780 }
01781 Node new52()
01782 {
01783 TId node1 = (TId) pop();
01784 AIdConst node = new AIdConst(node1);
01785 return node;
01786 }
01787 Node new53()
01788 {
01789 PVariable node1 = (PVariable) pop();
01790 AVariableGlobal node = new AVariableGlobal(node1);
01791 return node;
01792 }
01793 Node new54()
01794 {
01795 PCollection node1 = (PCollection) pop();
01796 ACollectionGlobal node = new ACollectionGlobal(node1);
01797 return node;
01798 }
01799 Node new55()
01800 {
01801 TSemicolon node9 = (TSemicolon) pop();
01802 PType node8 = (PType) pop();
01803 TOf node7 = (TOf) pop();
01804 TRbrack node6 = (TRbrack) pop();
01805 PConst node5 = (PConst) pop();
01806 TLbrack node4 = (TLbrack) pop();
01807 TCollection node3 = (TCollection) pop();
01808 TColon node2 = (TColon) pop();
01809 TId node1 = (TId) pop();
01810 ACollection node = new ACollection(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01811 return node;
01812 }
01813 Node new56()
01814 {
01815 TSemicolon node5 = (TSemicolon) pop();
01816 PInitializer node4 = null;
01817 PType node3 = (PType) pop();
01818 TColon node2 = (TColon) pop();
01819 TId node1 = (TId) pop();
01820 AVariable node = new AVariable(node1, node2, node3, node4, node5);
01821 return node;
01822 }
01823 Node new57()
01824 {
01825 TSemicolon node5 = (TSemicolon) pop();
01826 PInitializer node4 = (PInitializer) pop();
01827 PType node3 = (PType) pop();
01828 TColon node2 = (TColon) pop();
01829 TId node1 = (TId) pop();
01830 AVariable node = new AVariable(node1, node2, node3, node4, node5);
01831 return node;
01832 }
01833 Node new58()
01834 {
01835 PValue node2 = (PValue) pop();
01836 TAssign node1 = (TAssign) pop();
01837 AInitializer node = new AInitializer(node1, node2);
01838 return node;
01839 }
01840 Node new59()
01841 {
01842 TInt node1 = (TInt) pop();
01843 AIntegerValue node = new AIntegerValue(node1);
01844 return node;
01845 }
01846 Node new6()
01847 {
01848 PGlobal node2 = (PGlobal) pop();
01849 XPGlobal node1 = (XPGlobal) pop();
01850 X1PGlobal node = new X1PGlobal(node1, node2);
01851 return node;
01852 }
01853 Node new60()
01854 {
01855 PBool node1 = (PBool) pop();
01856 ABoolValue node = new ABoolValue(node1);
01857 return node;
01858 }
01859 Node new61()
01860 {
01861 TId node1 = (TId) pop();
01862 AIdValue node = new AIdValue(node1);
01863 return node;
01864 }
01865 Node new62()
01866 {
01867 TNull node1 = (TNull) pop();
01868 ANullValue node = new ANullValue(node1);
01869 return node;
01870 }
01871 Node new63()
01872 {
01873 TId node2 = (TId) pop();
01874 TRef node1 = (TRef) pop();
01875 ARefValue node = new ARefValue(node1, node2);
01876 return node;
01877 }
01878 Node new64()
01879 {
01880 TFalse node1 = (TFalse) pop();
01881 AFalseBool node = new AFalseBool(node1);
01882 return node;
01883 }
01884 Node new65()
01885 {
01886 TTrue node1 = (TTrue) pop();
01887 ATrueBool node = new ATrueBool(node1);
01888 return node;
01889 }
01890 Node new66()
01891 {
01892 TSemicolon node9 = (TSemicolon) pop();
01893 TId node8 = (TId) pop();
01894 TEnd node7 = (TEnd) pop();
01895 XPLocation node6 = null;
01896 PLocation node5 = (PLocation) pop();
01897 XPVariable node4 = null;
01898 TId node3 = (TId) pop();
01899 TThread node2 = (TThread) pop();
01900 TMain node1 = null;
01901 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01902 return node;
01903 }
01904 Node new67()
01905 {
01906 TSemicolon node9 = (TSemicolon) pop();
01907 TId node8 = (TId) pop();
01908 TEnd node7 = (TEnd) pop();
01909 XPLocation node6 = null;
01910 PLocation node5 = (PLocation) pop();
01911 XPVariable node4 = null;
01912 TId node3 = (TId) pop();
01913 TThread node2 = (TThread) pop();
01914 TMain node1 = (TMain) pop();
01915 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01916 return node;
01917 }
01918 Node new68()
01919 {
01920 TSemicolon node9 = (TSemicolon) pop();
01921 TId node8 = (TId) pop();
01922 TEnd node7 = (TEnd) pop();
01923 XPLocation node6 = null;
01924 PLocation node5 = (PLocation) pop();
01925 XPVariable node4 = (XPVariable) pop();
01926 TId node3 = (TId) pop();
01927 TThread node2 = (TThread) pop();
01928 TMain node1 = null;
01929 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01930 return node;
01931 }
01932 Node new69()
01933 {
01934 PVariable node2 = (PVariable) pop();
01935 XPVariable node1 = (XPVariable) pop();
01936 X1PVariable node = new X1PVariable(node1, node2);
01937 return node;
01938 }
01939 Node new7()
01940 {
01941 PGlobal node1 = (PGlobal) pop();
01942 X2PGlobal node = new X2PGlobal(node1);
01943 return node;
01944 }
01945 Node new70()
01946 {
01947 PVariable node1 = (PVariable) pop();
01948 X2PVariable node = new X2PVariable(node1);
01949 return node;
01950 }
01951 Node new71()
01952 {
01953 TSemicolon node9 = (TSemicolon) pop();
01954 TId node8 = (TId) pop();
01955 TEnd node7 = (TEnd) pop();
01956 XPLocation node6 = null;
01957 PLocation node5 = (PLocation) pop();
01958 XPVariable node4 = (XPVariable) pop();
01959 TId node3 = (TId) pop();
01960 TThread node2 = (TThread) pop();
01961 TMain node1 = (TMain) pop();
01962 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01963 return node;
01964 }
01965 Node new72()
01966 {
01967 TSemicolon node9 = (TSemicolon) pop();
01968 TId node8 = (TId) pop();
01969 TEnd node7 = (TEnd) pop();
01970 XPLocation node6 = (XPLocation) pop();
01971 PLocation node5 = (PLocation) pop();
01972 XPVariable node4 = null;
01973 TId node3 = (TId) pop();
01974 TThread node2 = (TThread) pop();
01975 TMain node1 = null;
01976 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
01977 return node;
01978 }
01979 Node new73()
01980 {
01981 PLocation node2 = (PLocation) pop();
01982 XPLocation node1 = (XPLocation) pop();
01983 X1PLocation node = new X1PLocation(node1, node2);
01984 return node;
01985 }
01986 Node new74()
01987 {
01988 PLocation node1 = (PLocation) pop();
01989 X2PLocation node = new X2PLocation(node1);
01990 return node;
01991 }
01992 Node new75()
01993 {
01994 TSemicolon node9 = (TSemicolon) pop();
01995 TId node8 = (TId) pop();
01996 TEnd node7 = (TEnd) pop();
01997 XPLocation node6 = (XPLocation) pop();
01998 PLocation node5 = (PLocation) pop();
01999 XPVariable node4 = null;
02000 TId node3 = (TId) pop();
02001 TThread node2 = (TThread) pop();
02002 TMain node1 = (TMain) pop();
02003 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
02004 return node;
02005 }
02006 Node new76()
02007 {
02008 TSemicolon node9 = (TSemicolon) pop();
02009 TId node8 = (TId) pop();
02010 TEnd node7 = (TEnd) pop();
02011 XPLocation node6 = (XPLocation) pop();
02012 PLocation node5 = (PLocation) pop();
02013 XPVariable node4 = (XPVariable) pop();
02014 TId node3 = (TId) pop();
02015 TThread node2 = (TThread) pop();
02016 TMain node1 = null;
02017 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
02018 return node;
02019 }
02020 Node new77()
02021 {
02022 TSemicolon node9 = (TSemicolon) pop();
02023 TId node8 = (TId) pop();
02024 TEnd node7 = (TEnd) pop();
02025 XPLocation node6 = (XPLocation) pop();
02026 PLocation node5 = (PLocation) pop();
02027 XPVariable node4 = (XPVariable) pop();
02028 TId node3 = (TId) pop();
02029 TThread node2 = (TThread) pop();
02030 TMain node1 = (TMain) pop();
02031 AThread node = new AThread(node1, node2, node3, node4, node5, node6, node7, node8, node9);
02032 return node;
02033 }
02034 Node new78()
02035 {
02036 XPTransformation node5 = null;
02037 PLiveset node4 = null;
02038 TColon node3 = (TColon) pop();
02039 TId node2 = (TId) pop();
02040 TLoc node1 = (TLoc) pop();
02041 ALocation node = new ALocation(node1, node2, node3, node4, node5);
02042 return node;
02043 }
02044 Node new79()
02045 {
02046 XPTransformation node5 = null;
02047 PLiveset node4 = (PLiveset) pop();
02048 TColon node3 = (TColon) pop();
02049 TId node2 = (TId) pop();
02050 TLoc node1 = (TLoc) pop();
02051 ALocation node = new ALocation(node1, node2, node3, node4, node5);
02052 return node;
02053 }
02054 Node new8()
02055 {
02056 TSemicolon node11 = (TSemicolon) pop();
02057 TId node10 = (TId) pop();
02058 TEnd node9 = (TEnd) pop();
02059 PPredicates node8 = null;
02060 XPThread node7 = null;
02061 XPGlobal node6 = (XPGlobal) pop();
02062 XPDefinition node5 = (XPDefinition) pop();
02063 TRparen node4 = (TRparen) pop();
02064 TLparen node3 = (TLparen) pop();
02065 TId node2 = (TId) pop();
02066 TProcess node1 = (TProcess) pop();
02067 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
02068 return node;
02069 }
02070 Node new80()
02071 {
02072 XPTransformation node5 = (XPTransformation) pop();
02073 PLiveset node4 = null;
02074 TColon node3 = (TColon) pop();
02075 TId node2 = (TId) pop();
02076 TLoc node1 = (TLoc) pop();
02077 ALocation node = new ALocation(node1, node2, node3, node4, node5);
02078 return node;
02079 }
02080 Node new81()
02081 {
02082 PTransformation node2 = (PTransformation) pop();
02083 XPTransformation node1 = (XPTransformation) pop();
02084 X1PTransformation node = new X1PTransformation(node1, node2);
02085 return node;
02086 }
02087 Node new82()
02088 {
02089 PTransformation node1 = (PTransformation) pop();
02090 X2PTransformation node = new X2PTransformation(node1);
02091 return node;
02092 }
02093 Node new83()
02094 {
02095 XPTransformation node5 = (XPTransformation) pop();
02096 PLiveset node4 = (PLiveset) pop();
02097 TColon node3 = (TColon) pop();
02098 TId node2 = (TId) pop();
02099 TLoc node1 = (TLoc) pop();
02100 ALocation node = new ALocation(node1, node2, node3, node4, node5);
02101 return node;
02102 }
02103 Node new84()
02104 {
02105 TSemicolon node10 = (TSemicolon) pop();
02106 TId node9 = (TId) pop();
02107 TGoto node8 = (TGoto) pop();
02108 TRbrace node7 = (TRbrace) pop();
02109 XPAction node6 = null;
02110 TLbrace node5 = (TLbrace) pop();
02111 TInvisible node4 = null;
02112 TDo node3 = (TDo) pop();
02113 PExpr node2 = (PExpr) pop();
02114 TWhen node1 = (TWhen) pop();
02115 ATransformation node = new ATransformation(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10);
02116 return node;
02117 }
02118 Node new85()
02119 {
02120 TSemicolon node10 = (TSemicolon) pop();
02121 TId node9 = (TId) pop();
02122 TGoto node8 = (TGoto) pop();
02123 TRbrace node7 = (TRbrace) pop();
02124 XPAction node6 = null;
02125 TLbrace node5 = (TLbrace) pop();
02126 TInvisible node4 = (TInvisible) pop();
02127 TDo node3 = (TDo) pop();
02128 PExpr node2 = (PExpr) pop();
02129 TWhen node1 = (TWhen) pop();
02130 ATransformation node = new ATransformation(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10);
02131 return node;
02132 }
02133 Node new86()
02134 {
02135 TSemicolon node10 = (TSemicolon) pop();
02136 TId node9 = (TId) pop();
02137 TGoto node8 = (TGoto) pop();
02138 TRbrace node7 = (TRbrace) pop();
02139 XPAction node6 = (XPAction) pop();
02140 TLbrace node5 = (TLbrace) pop();
02141 TInvisible node4 = null;
02142 TDo node3 = (TDo) pop();
02143 PExpr node2 = (PExpr) pop();
02144 TWhen node1 = (TWhen) pop();
02145 ATransformation node = new ATransformation(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10);
02146 return node;
02147 }
02148 Node new87()
02149 {
02150 PAction node2 = (PAction) pop();
02151 XPAction node1 = (XPAction) pop();
02152 X1PAction node = new X1PAction(node1, node2);
02153 return node;
02154 }
02155 Node new88()
02156 {
02157 PAction node1 = (PAction) pop();
02158 X2PAction node = new X2PAction(node1);
02159 return node;
02160 }
02161 Node new89()
02162 {
02163 TSemicolon node10 = (TSemicolon) pop();
02164 TId node9 = (TId) pop();
02165 TGoto node8 = (TGoto) pop();
02166 TRbrace node7 = (TRbrace) pop();
02167 XPAction node6 = (XPAction) pop();
02168 TLbrace node5 = (TLbrace) pop();
02169 TInvisible node4 = (TInvisible) pop();
02170 TDo node3 = (TDo) pop();
02171 PExpr node2 = (PExpr) pop();
02172 TWhen node1 = (TWhen) pop();
02173 ATransformation node = new ATransformation(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10);
02174 return node;
02175 }
02176 Node new9()
02177 {
02178 TSemicolon node11 = (TSemicolon) pop();
02179 TId node10 = (TId) pop();
02180 TEnd node9 = (TEnd) pop();
02181 PPredicates node8 = null;
02182 XPThread node7 = (XPThread) pop();
02183 XPGlobal node6 = null;
02184 XPDefinition node5 = null;
02185 TRparen node4 = (TRparen) pop();
02186 TLparen node3 = (TLparen) pop();
02187 TId node2 = (TId) pop();
02188 TProcess node1 = (TProcess) pop();
02189 AProcess node = new AProcess(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
02190 return node;
02191 }
02192 Node new90()
02193 {
02194 TRbrace node3 = (TRbrace) pop();
02195 TLbrace node2 = (TLbrace) pop();
02196 TLive node1 = (TLive) pop();
02197 AEmptyLiveset node = new AEmptyLiveset(node1, node2, node3);
02198 return node;
02199 }
02200 Node new91()
02201 {
02202 TRbrace node5 = (TRbrace) pop();
02203 XPLivevar node4 = null;
02204 TId node3 = (TId) pop();
02205 TLbrace node2 = (TLbrace) pop();
02206 TLive node1 = (TLive) pop();
02207 ANonemptyLiveset node = new ANonemptyLiveset(node1, node2, node3, node4, node5);
02208 return node;
02209 }
02210 Node new92()
02211 {
02212 TRbrace node5 = (TRbrace) pop();
02213 XPLivevar node4 = (XPLivevar) pop();
02214 TId node3 = (TId) pop();
02215 TLbrace node2 = (TLbrace) pop();
02216 TLive node1 = (TLive) pop();
02217 ANonemptyLiveset node = new ANonemptyLiveset(node1, node2, node3, node4, node5);
02218 return node;
02219 }
02220 Node new93()
02221 {
02222 PLivevar node2 = (PLivevar) pop();
02223 XPLivevar node1 = (XPLivevar) pop();
02224 X1PLivevar node = new X1PLivevar(node1, node2);
02225 return node;
02226 }
02227 Node new94()
02228 {
02229 PLivevar node1 = (PLivevar) pop();
02230 X2PLivevar node = new X2PLivevar(node1);
02231 return node;
02232 }
02233 Node new95()
02234 {
02235 TId node2 = (TId) pop();
02236 TComma node1 = (TComma) pop();
02237 ALivevar node = new ALivevar(node1, node2);
02238 return node;
02239 }
02240 Node new96()
02241 {
02242 PExpr7 node1 = (PExpr7) pop();
02243 AExpr node = new AExpr(node1);
02244 return node;
02245 }
02246 Node new97()
02247 {
02248 PExpr6 node1 = (PExpr6) pop();
02249 AExpr6Expr7 node = new AExpr6Expr7(node1);
02250 return node;
02251 }
02252 Node new98()
02253 {
02254 PExpr6 node3 = (PExpr6) pop();
02255 TOr node2 = (TOr) pop();
02256 PExpr7 node1 = (PExpr7) pop();
02257 AOrExpr7 node = new AOrExpr7(node1, node2, node3);
02258 return node;
02259 }
02260 Node new99()
02261 {
02262 PExpr5 node1 = (PExpr5) pop();
02263 AExpr5Expr6 node = new AExpr5Expr6(node1);
02264 return node;
02265 }
02266 public Start parse() throws ParserException, LexerException, IOException
02267 {
02268 push(0, null, false);
02269
02270 List ign = null;
02271 while(true)
02272 {
02273 while(index(lexer.peek()) == -1)
02274 {
02275 if(ign == null)
02276 {
02277 ign = new TypedLinkedList(NodeCast.instance);
02278 }
02279
02280 ign.add(lexer.next());
02281 }
02282
02283 if(ign != null)
02284 {
02285 ignoredTokens.setIn(lexer.peek(), ign);
02286 ign = null;
02287 }
02288
02289 last_pos = lexer.peek().getPos();
02290 last_line = lexer.peek().getLine();
02291
02292 int index = index(lexer.peek());
02293 action[0] = actionTable[state()][0][1];
02294 action[1] = actionTable[state()][0][2];
02295
02296 int low = 1;
02297 int high = actionTable[state()].length - 1;
02298
02299 while(low <= high)
02300 {
02301 int middle = (low + high) / 2;
02302
02303 if(index < actionTable[state()][middle][0])
02304 {
02305 high = middle - 1;
02306 }
02307 else if(index > actionTable[state()][middle][0])
02308 {
02309 low = middle + 1;
02310 }
02311 else
02312 {
02313 action[0] = actionTable[state()][middle][1];
02314 action[1] = actionTable[state()][middle][2];
02315 break;
02316 }
02317 }
02318
02319 switch(action[0])
02320 {
02321 case SHIFT:
02322 push(action[1], lexer.next(), true);
02323 last_shift = action[1];
02324 break;
02325 case REDUCE:
02326 switch(action[1])
02327 {
02328 case 0: { Node node = new0(); push(goTo(0), node, true); } break;
02329 case 1: { Node node = new1(); push(goTo(1), node, true); } break;
02330 case 2: { Node node = new2(); push(goTo(1), node, true); } break;
02331 case 3: { Node node = new3(); push(goTo(50), node, false); } break;
02332 case 4: { Node node = new4(); push(goTo(50), node, false); } break;
02333 case 5: { Node node = new5(); push(goTo(1), node, true); } break;
02334 case 6: { Node node = new6(); push(goTo(51), node, false); } break;
02335 case 7: { Node node = new7(); push(goTo(51), node, false); } break;
02336 case 8: { Node node = new8(); push(goTo(1), node, true); } break;
02337 case 9: { Node node = new9(); push(goTo(1), node, true); } break;
02338 case 10: { Node node = new10(); push(goTo(52), node, false); } break;
02339 case 11: { Node node = new11(); push(goTo(52), node, false); } break;
02340 case 12: { Node node = new12(); push(goTo(1), node, true); } break;
02341 case 13: { Node node = new13(); push(goTo(1), node, true); } break;
02342 case 14: { Node node = new14(); push(goTo(1), node, true); } break;
02343 case 15: { Node node = new15(); push(goTo(1), node, true); } break;
02344 case 16: { Node node = new16(); push(goTo(1), node, true); } break;
02345 case 17: { Node node = new17(); push(goTo(1), node, true); } break;
02346 case 18: { Node node = new18(); push(goTo(1), node, true); } break;
02347 case 19: { Node node = new19(); push(goTo(1), node, true); } break;
02348 case 20: { Node node = new20(); push(goTo(1), node, true); } break;
02349 case 21: { Node node = new21(); push(goTo(1), node, true); } break;
02350 case 22: { Node node = new22(); push(goTo(1), node, true); } break;
02351 case 23: { Node node = new23(); push(goTo(2), node, true); } break;
02352 case 24: { Node node = new24(); push(goTo(2), node, true); } break;
02353 case 25: { Node node = new25(); push(goTo(3), node, true); } break;
02354 case 26: { Node node = new26(); push(goTo(3), node, true); } break;
02355 case 27: { Node node = new27(); push(goTo(3), node, true); } break;
02356 case 28: { Node node = new28(); push(goTo(3), node, true); } break;
02357 case 29: { Node node = new29(); push(goTo(53), node, false); } break;
02358 case 30: { Node node = new30(); push(goTo(53), node, false); } break;
02359 case 31: { Node node = new31(); push(goTo(3), node, true); } break;
02360 case 32: { Node node = new32(); push(goTo(3), node, true); } break;
02361 case 33: { Node node = new33(); push(goTo(54), node, false); } break;
02362 case 34: { Node node = new34(); push(goTo(54), node, false); } break;
02363 case 35: { Node node = new35(); push(goTo(3), node, true); } break;
02364 case 36: { Node node = new36(); push(goTo(3), node, true); } break;
02365 case 37: { Node node = new37(); push(goTo(3), node, true); } break;
02366 case 38: { Node node = new38(); push(goTo(55), node, false); } break;
02367 case 39: { Node node = new39(); push(goTo(55), node, false); } break;
02368 case 40: { Node node = new40(); push(goTo(3), node, true); } break;
02369 case 41: { Node node = new41(); push(goTo(3), node, true); } break;
02370 case 42: { Node node = new42(); push(goTo(3), node, true); } break;
02371 case 43: { Node node = new43(); push(goTo(3), node, true); } break;
02372 case 44: { Node node = new44(); push(goTo(4), node, true); } break;
02373 case 45: { Node node = new45(); push(goTo(4), node, true); } break;
02374 case 46: { Node node = new46(); push(goTo(5), node, true); } break;
02375 case 47: { Node node = new47(); push(goTo(5), node, true); } break;
02376 case 48: { Node node = new48(); push(goTo(6), node, true); } break;
02377 case 49: { Node node = new49(); push(goTo(7), node, true); } break;
02378 case 50: { Node node = new50(); push(goTo(8), node, true); } break;
02379 case 51: { Node node = new51(); push(goTo(9), node, true); } break;
02380 case 52: { Node node = new52(); push(goTo(9), node, true); } break;
02381 case 53: { Node node = new53(); push(goTo(10), node, true); } break;
02382 case 54: { Node node = new54(); push(goTo(10), node, true); } break;
02383 case 55: { Node node = new55(); push(goTo(11), node, true); } break;
02384 case 56: { Node node = new56(); push(goTo(12), node, true); } break;
02385 case 57: { Node node = new57(); push(goTo(12), node, true); } break;
02386 case 58: { Node node = new58(); push(goTo(13), node, true); } break;
02387 case 59: { Node node = new59(); push(goTo(14), node, true); } break;
02388 case 60: { Node node = new60(); push(goTo(14), node, true); } break;
02389 case 61: { Node node = new61(); push(goTo(14), node, true); } break;
02390 case 62: { Node node = new62(); push(goTo(14), node, true); } break;
02391 case 63: { Node node = new63(); push(goTo(14), node, true); } break;
02392 case 64: { Node node = new64(); push(goTo(15), node, true); } break;
02393 case 65: { Node node = new65(); push(goTo(15), node, true); } break;
02394 case 66: { Node node = new66(); push(goTo(16), node, true); } break;
02395 case 67: { Node node = new67(); push(goTo(16), node, true); } break;
02396 case 68: { Node node = new68(); push(goTo(16), node, true); } break;
02397 case 69: { Node node = new69(); push(goTo(56), node, false); } break;
02398 case 70: { Node node = new70(); push(goTo(56), node, false); } break;
02399 case 71: { Node node = new71(); push(goTo(16), node, true); } break;
02400 case 72: { Node node = new72(); push(goTo(16), node, true); } break;
02401 case 73: { Node node = new73(); push(goTo(57), node, false); } break;
02402 case 74: { Node node = new74(); push(goTo(57), node, false); } break;
02403 case 75: { Node node = new75(); push(goTo(16), node, true); } break;
02404 case 76: { Node node = new76(); push(goTo(16), node, true); } break;
02405 case 77: { Node node = new77(); push(goTo(16), node, true); } break;
02406 case 78: { Node node = new78(); push(goTo(17), node, true); } break;
02407 case 79: { Node node = new79(); push(goTo(17), node, true); } break;
02408 case 80: { Node node = new80(); push(goTo(17), node, true); } break;
02409 case 81: { Node node = new81(); push(goTo(58), node, false); } break;
02410 case 82: { Node node = new82(); push(goTo(58), node, false); } break;
02411 case 83: { Node node = new83(); push(goTo(17), node, true); } break;
02412 case 84: { Node node = new84(); push(goTo(18), node, true); } break;
02413 case 85: { Node node = new85(); push(goTo(18), node, true); } break;
02414 case 86: { Node node = new86(); push(goTo(18), node, true); } break;
02415 case 87: { Node node = new87(); push(goTo(59), node, false); } break;
02416 case 88: { Node node = new88(); push(goTo(59), node, false); } break;
02417 case 89: { Node node = new89(); push(goTo(18), node, true); } break;
02418 case 90: { Node node = new90(); push(goTo(19), node, true); } break;
02419 case 91: { Node node = new91(); push(goTo(19), node, true); } break;
02420 case 92: { Node node = new92(); push(goTo(19), node, true); } break;
02421 case 93: { Node node = new93(); push(goTo(60), node, false); } break;
02422 case 94: { Node node = new94(); push(goTo(60), node, false); } break;
02423 case 95: { Node node = new95(); push(goTo(20), node, true); } break;
02424 case 96: { Node node = new96(); push(goTo(21), node, true); } break;
02425 case 97: { Node node = new97(); push(goTo(22), node, true); } break;
02426 case 98: { Node node = new98(); push(goTo(22), node, true); } break;
02427 case 99: { Node node = new99(); push(goTo(23), node, true); } break;
02428 case 100: { Node node = new100(); push(goTo(23), node, true); } break;
02429 case 101: { Node node = new101(); push(goTo(24), node, true); } break;
02430 case 102: { Node node = new102(); push(goTo(24), node, true); } break;
02431 case 103: { Node node = new103(); push(goTo(24), node, true); } break;
02432 case 104: { Node node = new104(); push(goTo(25), node, true); } break;
02433 case 105: { Node node = new105(); push(goTo(25), node, true); } break;
02434 case 106: { Node node = new106(); push(goTo(25), node, true); } break;
02435 case 107: { Node node = new107(); push(goTo(25), node, true); } break;
02436 case 108: { Node node = new108(); push(goTo(25), node, true); } break;
02437 case 109: { Node node = new109(); push(goTo(26), node, true); } break;
02438 case 110: { Node node = new110(); push(goTo(26), node, true); } break;
02439 case 111: { Node node = new111(); push(goTo(26), node, true); } break;
02440 case 112: { Node node = new112(); push(goTo(27), node, true); } break;
02441 case 113: { Node node = new113(); push(goTo(27), node, true); } break;
02442 case 114: { Node node = new114(); push(goTo(27), node, true); } break;
02443 case 115: { Node node = new115(); push(goTo(27), node, true); } break;
02444 case 116: { Node node = new116(); push(goTo(28), node, true); } break;
02445 case 117: { Node node = new117(); push(goTo(28), node, true); } break;
02446 case 118: { Node node = new118(); push(goTo(28), node, true); } break;
02447 case 119: { Node node = new119(); push(goTo(28), node, true); } break;
02448 case 120: { Node node = new120(); push(goTo(29), node, true); } break;
02449 case 121: { Node node = new121(); push(goTo(29), node, true); } break;
02450 case 122: { Node node = new122(); push(goTo(29), node, true); } break;
02451 case 123: { Node node = new123(); push(goTo(29), node, true); } break;
02452 case 124: { Node node = new124(); push(goTo(29), node, true); } break;
02453 case 125: { Node node = new125(); push(goTo(29), node, true); } break;
02454 case 126: { Node node = new126(); push(goTo(29), node, true); } break;
02455 case 127: { Node node = new127(); push(goTo(29), node, true); } break;
02456 case 128: { Node node = new128(); push(goTo(29), node, true); } break;
02457 case 129: { Node node = new129(); push(goTo(30), node, true); } break;
02458 case 130: { Node node = new130(); push(goTo(30), node, true); } break;
02459 case 131: { Node node = new131(); push(goTo(30), node, true); } break;
02460 case 132: { Node node = new132(); push(goTo(30), node, true); } break;
02461 case 133: { Node node = new133(); push(goTo(31), node, true); } break;
02462 case 134: { Node node = new134(); push(goTo(31), node, true); } break;
02463 case 135: { Node node = new135(); push(goTo(31), node, true); } break;
02464 case 136: { Node node = new136(); push(goTo(31), node, true); } break;
02465 case 137: { Node node = new137(); push(goTo(31), node, true); } break;
02466 case 138: { Node node = new138(); push(goTo(31), node, true); } break;
02467 case 139: { Node node = new139(); push(goTo(31), node, true); } break;
02468 case 140: { Node node = new140(); push(goTo(32), node, true); } break;
02469 case 141: { Node node = new141(); push(goTo(33), node, true); } break;
02470 case 142: { Node node = new142(); push(goTo(33), node, true); } break;
02471 case 143: { Node node = new143(); push(goTo(34), node, true); } break;
02472 case 144: { Node node = new144(); push(goTo(34), node, true); } break;
02473 case 145: { Node node = new145(); push(goTo(35), node, true); } break;
02474 case 146: { Node node = new146(); push(goTo(35), node, true); } break;
02475 case 147: { Node node = new147(); push(goTo(36), node, true); } break;
02476 case 148: { Node node = new148(); push(goTo(37), node, true); } break;
02477 case 149: { Node node = new149(); push(goTo(37), node, true); } break;
02478 case 150: { Node node = new150(); push(goTo(61), node, false); } break;
02479 case 151: { Node node = new151(); push(goTo(61), node, false); } break;
02480 case 152: { Node node = new152(); push(goTo(38), node, true); } break;
02481 case 153: { Node node = new153(); push(goTo(38), node, true); } break;
02482 case 154: { Node node = new154(); push(goTo(39), node, true); } break;
02483 case 155: { Node node = new155(); push(goTo(40), node, true); } break;
02484 case 156: { Node node = new156(); push(goTo(41), node, true); } break;
02485 case 157: { Node node = new157(); push(goTo(42), node, true); } break;
02486 case 158: { Node node = new158(); push(goTo(42), node, true); } break;
02487 case 159: { Node node = new159(); push(goTo(42), node, true); } break;
02488 case 160: { Node node = new160(); push(goTo(42), node, true); } break;
02489 case 161: { Node node = new161(); push(goTo(42), node, true); } break;
02490 case 162: { Node node = new162(); push(goTo(42), node, true); } break;
02491 case 163: { Node node = new163(); push(goTo(43), node, true); } break;
02492 case 164: { Node node = new164(); push(goTo(44), node, true); } break;
02493 case 165: { Node node = new165(); push(goTo(44), node, true); } break;
02494 case 166: { Node node = new166(); push(goTo(44), node, true); } break;
02495 case 167: { Node node = new167(); push(goTo(45), node, true); } break;
02496 case 168: { Node node = new168(); push(goTo(46), node, true); } break;
02497 case 169: { Node node = new169(); push(goTo(46), node, true); } break;
02498 case 170: { Node node = new170(); push(goTo(46), node, true); } break;
02499 case 171: { Node node = new171(); push(goTo(47), node, true); } break;
02500 case 172: { Node node = new172(); push(goTo(47), node, true); } break;
02501 case 173: { Node node = new173(); push(goTo(48), node, true); } break;
02502 case 174: { Node node = new174(); push(goTo(48), node, true); } break;
02503 case 175: { Node node = new175(); push(goTo(62), node, false); } break;
02504 case 176: { Node node = new176(); push(goTo(62), node, false); } break;
02505 case 177: { Node node = new177(); push(goTo(49), node, true); } break;
02506 }
02507 break;
02508 case ACCEPT:
02509 {
02510 EOF node2 = (EOF) lexer.next();
02511 PProgram node1 = (PProgram) pop();
02512 Start node = new Start(node1, node2);
02513 return node;
02514 }
02515 case ERROR:
02516 throw new ParserException(
02517 "[" + last_line + "," + last_pos + "] " +
02518 errorMessages[errors[action[1]]]);
02519 }
02520 }
02521 }
02522 private Node pop()
02523 {
02524 return (Node) ((State) stack.previous()).node;
02525 }
02526 private void push(int state, Node node, boolean filter) throws ParserException, LexerException, IOException
02527 {
02528 this.node = node;
02529
02530 if(filter)
02531 {
02532 filter();
02533 }
02534
02535 if(!stack.hasNext())
02536 {
02537 stack.add(new State(state, this.node));
02538 stack.next();
02539 return;
02540 }
02541
02542 State s = (State) stack.next();
02543 s.state = state;
02544 s.node = this.node;
02545 }
02546 private int state()
02547 {
02548 State s = (State) stack.previous();
02549 stack.next();
02550 return s.state;
02551 }
02552 }