00001 package edu.ksu.cis.bandera.specification.predicate.parser;
00002
00003
00004
00005 import edu.ksu.cis.bandera.specification.predicate.lexer.*;
00006 import edu.ksu.cis.bandera.specification.predicate.node.*;
00007 import edu.ksu.cis.bandera.specification.predicate.analysis.*;
00008 import java.util.*;
00009
00010 import java.io.DataInputStream;
00011 import java.io.BufferedInputStream;
00012 import java.io.IOException;
00013
00014 public class Parser
00015 {
00016 public final Analysis ignoredTokens = new AnalysisAdapter();
00017
00018 protected Node node;
00019
00020 private final Lexer lexer;
00021 private final ListIterator stack = new LinkedList().listIterator();
00022 private int last_shift;
00023 private int last_pos;
00024 private int last_line;
00025 private final TokenIndex converter = new TokenIndex();
00026 private final int[] action = new int[2];
00027
00028 private final static int SHIFT = 0;
00029 private final static int REDUCE = 1;
00030 private final static int ACCEPT = 2;
00031 private final static int ERROR = 3;
00032
00033 private static int[][][] actionTable;
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
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 private static int[][][] gotoTable;
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 private static String[] errorMessages;
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 private static int[] errors;
00329
00330
00331
00332 public Parser(Lexer lexer)
00333 {
00334 this.lexer = lexer;
00335
00336 if(actionTable == null)
00337 {
00338 try
00339 {
00340 DataInputStream s = new DataInputStream(
00341 new BufferedInputStream(
00342 Parser.class.getResourceAsStream("parser.dat")));
00343
00344
00345 int length = s.readInt();
00346 actionTable = new int[length][][];
00347 for(int i = 0; i < actionTable.length; i++)
00348 {
00349 length = s.readInt();
00350 actionTable[i] = new int[length][3];
00351 for(int j = 0; j < actionTable[i].length; j++)
00352 {
00353 for(int k = 0; k < 3; k++)
00354 {
00355 actionTable[i][j][k] = s.readInt();
00356 }
00357 }
00358 }
00359
00360
00361 length = s.readInt();
00362 gotoTable = new int[length][][];
00363 for(int i = 0; i < gotoTable.length; i++)
00364 {
00365 length = s.readInt();
00366 gotoTable[i] = new int[length][2];
00367 for(int j = 0; j < gotoTable[i].length; j++)
00368 {
00369 for(int k = 0; k < 2; k++)
00370 {
00371 gotoTable[i][j][k] = s.readInt();
00372 }
00373 }
00374 }
00375
00376
00377 length = s.readInt();
00378 errorMessages = new String[length];
00379 for(int i = 0; i < errorMessages.length; i++)
00380 {
00381 length = s.readInt();
00382 StringBuffer buffer = new StringBuffer();
00383
00384 for(int j = 0; j < length; j++)
00385 {
00386 buffer.append(s.readChar());
00387 }
00388 errorMessages[i] = buffer.toString();
00389 }
00390
00391
00392 length = s.readInt();
00393 errors = new int[length];
00394 for(int i = 0; i < errors.length; i++)
00395 {
00396 errors[i] = s.readInt();
00397 }
00398
00399 s.close();
00400 }
00401 catch(Exception e)
00402 {
00403 throw new RuntimeException("Unable to read parser.dat.");
00404 }
00405 }
00406 }
00407 protected void filter() throws ParserException, LexerException, IOException
00408 {
00409 }
00410 private int goTo(int index)
00411 {
00412 int state = state();
00413 int low = 1;
00414 int high = gotoTable[index].length - 1;
00415 int value = gotoTable[index][0][1];
00416
00417 while(low <= high)
00418 {
00419 int middle = (low + high) / 2;
00420
00421 if(state < gotoTable[index][middle][0])
00422 {
00423 high = middle - 1;
00424 }
00425 else if(state > gotoTable[index][middle][0])
00426 {
00427 low = middle + 1;
00428 }
00429 else
00430 {
00431 value = gotoTable[index][middle][1];
00432 break;
00433 }
00434 }
00435
00436 return value;
00437 }
00438 private int index(Switchable token)
00439 {
00440 converter.index = -1;
00441 token.apply(converter);
00442 return converter.index;
00443 }
00444 Node new0()
00445 {
00446 XPPropositionDefinition node3 = null;
00447 XPComment node2 = null;
00448 PName node1 = null;
00449 AUnit node = new AUnit(node1, node2, node3);
00450 return node;
00451 }
00452 Node new1()
00453 {
00454 XPPropositionDefinition node3 = null;
00455 XPComment node2 = null;
00456 PName node1 = (PName) pop();
00457 AUnit node = new AUnit(node1, node2, node3);
00458 return node;
00459 }
00460 Node new10()
00461 {
00462 XPPropositionDefinition node3 = (XPPropositionDefinition) pop();
00463 XPComment node2 = (XPComment) pop();
00464 PName node1 = null;
00465 AUnit node = new AUnit(node1, node2, node3);
00466 return node;
00467 }
00468 Node new100()
00469 {
00470 PBitAndExp node1 = (PBitAndExp) pop();
00471 AAndExclusiveOrExp node = new AAndExclusiveOrExp(node1);
00472 return node;
00473 }
00474 Node new101()
00475 {
00476 PBitAndExp node3 = (PBitAndExp) pop();
00477 TBitXor node2 = (TBitXor) pop();
00478 PExclusiveOrExp node1 = (PExclusiveOrExp) pop();
00479 AXorExclusiveOrExp node = new AXorExclusiveOrExp(node1, node2, node3);
00480 return node;
00481 }
00482 Node new102()
00483 {
00484 PExclusiveOrExp node1 = (PExclusiveOrExp) pop();
00485 AXorInclusiveOrExp node = new AXorInclusiveOrExp(node1);
00486 return node;
00487 }
00488 Node new103()
00489 {
00490 PExclusiveOrExp node3 = (PExclusiveOrExp) pop();
00491 TBitOr node2 = (TBitOr) pop();
00492 PInclusiveOrExp node1 = (PInclusiveOrExp) pop();
00493 AOrInclusiveOrExp node = new AOrInclusiveOrExp(node1, node2, node3);
00494 return node;
00495 }
00496 Node new104()
00497 {
00498 PInclusiveOrExp node1 = (PInclusiveOrExp) pop();
00499 AInclusiveOrAndExp node = new AInclusiveOrAndExp(node1);
00500 return node;
00501 }
00502 Node new105()
00503 {
00504 PInclusiveOrExp node3 = (PInclusiveOrExp) pop();
00505 TAnd node2 = (TAnd) pop();
00506 PAndExp node1 = (PAndExp) pop();
00507 AAndAndExp node = new AAndAndExp(node1, node2, node3);
00508 return node;
00509 }
00510 Node new106()
00511 {
00512 PAndExp node1 = (PAndExp) pop();
00513 AAndOrExp node = new AAndOrExp(node1);
00514 return node;
00515 }
00516 Node new107()
00517 {
00518 PAndExp node3 = (PAndExp) pop();
00519 TOr node2 = (TOr) pop();
00520 POrExp node1 = (POrExp) pop();
00521 AOrOrExp node = new AOrOrExp(node1, node2, node3);
00522 return node;
00523 }
00524 Node new108()
00525 {
00526 POrExp node1 = (POrExp) pop();
00527 AOrConditionalExp node = new AOrConditionalExp(node1);
00528 return node;
00529 }
00530 Node new109()
00531 {
00532 PConditionalExp node5 = (PConditionalExp) pop();
00533 TColon node4 = (TColon) pop();
00534 PExp node3 = (PExp) pop();
00535 TQuestion node2 = (TQuestion) pop();
00536 POrExp node1 = (POrExp) pop();
00537 AQuestionConditionalExp node = new AQuestionConditionalExp(node1, node2, node3, node4, node5);
00538 return node;
00539 }
00540 Node new11()
00541 {
00542 XPPropositionDefinition node3 = (XPPropositionDefinition) pop();
00543 XPComment node2 = (XPComment) pop();
00544 PName node1 = (PName) pop();
00545 AUnit node = new AUnit(node1, node2, node3);
00546 return node;
00547 }
00548 Node new110()
00549 {
00550 PConditionalExp node1 = (PConditionalExp) pop();
00551 AConditionalExp node = new AConditionalExp(node1);
00552 return node;
00553 }
00554 Node new111()
00555 {
00556 TEqual node1 = (TEqual) pop();
00557 AEqualBinOp node = new AEqualBinOp(node1);
00558 return node;
00559 }
00560 Node new112()
00561 {
00562 TNotEqual node1 = (TNotEqual) pop();
00563 ANotEqualBinOp node = new ANotEqualBinOp(node1);
00564 return node;
00565 }
00566 Node new113()
00567 {
00568 TGreater node1 = (TGreater) pop();
00569 AGreaterBinOp node = new AGreaterBinOp(node1);
00570 return node;
00571 }
00572 Node new114()
00573 {
00574 TGreaterEqual node1 = (TGreaterEqual) pop();
00575 AGreaterEqualBinOp node = new AGreaterEqualBinOp(node1);
00576 return node;
00577 }
00578 Node new115()
00579 {
00580 TLess node1 = (TLess) pop();
00581 ALessBinOp node = new ALessBinOp(node1);
00582 return node;
00583 }
00584 Node new116()
00585 {
00586 TLessEqual node1 = (TLessEqual) pop();
00587 ALessEqualBinOp node = new ALessEqualBinOp(node1);
00588 return node;
00589 }
00590 Node new117()
00591 {
00592 TAnd node1 = (TAnd) pop();
00593 AAndBinOp node = new AAndBinOp(node1);
00594 return node;
00595 }
00596 Node new118()
00597 {
00598 TOr node1 = (TOr) pop();
00599 AOrBinOp node = new AOrBinOp(node1);
00600 return node;
00601 }
00602 Node new119()
00603 {
00604 TPlus node1 = (TPlus) pop();
00605 APlusBinOp node = new APlusBinOp(node1);
00606 return node;
00607 }
00608 Node new12()
00609 {
00610 TEndOfLineComment node1 = (TEndOfLineComment) pop();
00611 AEndOfLineComment node = new AEndOfLineComment(node1);
00612 return node;
00613 }
00614 Node new120()
00615 {
00616 TMinus node1 = (TMinus) pop();
00617 AMinusBinOp node = new AMinusBinOp(node1);
00618 return node;
00619 }
00620 Node new121()
00621 {
00622 TStar node1 = (TStar) pop();
00623 ATimesBinOp node = new ATimesBinOp(node1);
00624 return node;
00625 }
00626 Node new122()
00627 {
00628 TStrongDiv node1 = (TStrongDiv) pop();
00629 AStrongDivBinOp node = new AStrongDivBinOp(node1);
00630 return node;
00631 }
00632 Node new123()
00633 {
00634 TStrongMod node1 = (TStrongMod) pop();
00635 AStrongModBinOp node = new AStrongModBinOp(node1);
00636 return node;
00637 }
00638 Node new124()
00639 {
00640 TShiftLeft node1 = (TShiftLeft) pop();
00641 AShiftLeftBinOp node = new AShiftLeftBinOp(node1);
00642 return node;
00643 }
00644 Node new125()
00645 {
00646 TSignedShiftRight node1 = (TSignedShiftRight) pop();
00647 ASignedShiftRightBinOp node = new ASignedShiftRightBinOp(node1);
00648 return node;
00649 }
00650 Node new126()
00651 {
00652 TUnsignedShiftRight node1 = (TUnsignedShiftRight) pop();
00653 AUnsignedShiftRightBinOp node = new AUnsignedShiftRightBinOp(node1);
00654 return node;
00655 }
00656 Node new127()
00657 {
00658 TBitAnd node1 = (TBitAnd) pop();
00659 ABitAndBinOp node = new ABitAndBinOp(node1);
00660 return node;
00661 }
00662 Node new128()
00663 {
00664 TBitOr node1 = (TBitOr) pop();
00665 ABitOrBinOp node = new ABitOrBinOp(node1);
00666 return node;
00667 }
00668 Node new129()
00669 {
00670 TBitXor node1 = (TBitXor) pop();
00671 ABitXorBinOp node = new ABitXorBinOp(node1);
00672 return node;
00673 }
00674 Node new13()
00675 {
00676 XPComment node8 = null;
00677 TSemicolon node7 = (TSemicolon) pop();
00678 PColonExp node6 = null;
00679 TRParen node5 = (TRParen) pop();
00680 PParams node4 = null;
00681 TLParen node3 = (TLParen) pop();
00682 TId node2 = (TId) pop();
00683 TInvoke node1 = (TInvoke) pop();
00684 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00685 return node;
00686 }
00687 Node new130()
00688 {
00689 TDecIntLiteral node1 = (TDecIntLiteral) pop();
00690 ADecIntLiteral node = new ADecIntLiteral(node1);
00691 return node;
00692 }
00693 Node new131()
00694 {
00695 THexIntLiteral node1 = (THexIntLiteral) pop();
00696 AHexIntLiteral node = new AHexIntLiteral(node1);
00697 return node;
00698 }
00699 Node new132()
00700 {
00701 TOctIntLiteral node1 = (TOctIntLiteral) pop();
00702 AOctIntLiteral node = new AOctIntLiteral(node1);
00703 return node;
00704 }
00705 Node new133()
00706 {
00707 TDecLongLiteral node1 = (TDecLongLiteral) pop();
00708 ADecLongLiteral node = new ADecLongLiteral(node1);
00709 return node;
00710 }
00711 Node new134()
00712 {
00713 THexLongLiteral node1 = (THexLongLiteral) pop();
00714 AHexLongLiteral node = new AHexLongLiteral(node1);
00715 return node;
00716 }
00717 Node new135()
00718 {
00719 TOctLongLiteral node1 = (TOctLongLiteral) pop();
00720 AOctLongLiteral node = new AOctLongLiteral(node1);
00721 return node;
00722 }
00723 Node new136()
00724 {
00725 TFloatLiteral node1 = (TFloatLiteral) pop();
00726 AFloatLiteral node = new AFloatLiteral(node1);
00727 return node;
00728 }
00729 Node new137()
00730 {
00731 TDoubleLiteral node1 = (TDoubleLiteral) pop();
00732 ADoubleLiteral node = new ADoubleLiteral(node1);
00733 return node;
00734 }
00735 Node new138()
00736 {
00737 TCharLiteral node1 = (TCharLiteral) pop();
00738 ACharLiteral node = new ACharLiteral(node1);
00739 return node;
00740 }
00741 Node new139()
00742 {
00743 TTrue node1 = (TTrue) pop();
00744 ATrueLiteral node = new ATrueLiteral(node1);
00745 return node;
00746 }
00747 Node new14()
00748 {
00749 XPComment node8 = null;
00750 TSemicolon node7 = (TSemicolon) pop();
00751 PColonExp node6 = null;
00752 TRParen node5 = (TRParen) pop();
00753 PParams node4 = (PParams) pop();
00754 TLParen node3 = (TLParen) pop();
00755 TId node2 = (TId) pop();
00756 TInvoke node1 = (TInvoke) pop();
00757 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00758 return node;
00759 }
00760 Node new140()
00761 {
00762 TFalse node1 = (TFalse) pop();
00763 AFalseLiteral node = new AFalseLiteral(node1);
00764 return node;
00765 }
00766 Node new141()
00767 {
00768 TNull node1 = (TNull) pop();
00769 ANullLiteral node = new ANullLiteral(node1);
00770 return node;
00771 }
00772 Node new142()
00773 {
00774 TStringLiteral node1 = (TStringLiteral) pop();
00775 AStringLiteral node = new AStringLiteral(node1);
00776 return node;
00777 }
00778 Node new143()
00779 {
00780 TBoolean node1 = (TBoolean) pop();
00781 ABooleanPrimitiveType node = new ABooleanPrimitiveType(node1);
00782 return node;
00783 }
00784 Node new144()
00785 {
00786 TByte node1 = (TByte) pop();
00787 ABytePrimitiveType node = new ABytePrimitiveType(node1);
00788 return node;
00789 }
00790 Node new145()
00791 {
00792 TShort node1 = (TShort) pop();
00793 AShortPrimitiveType node = new AShortPrimitiveType(node1);
00794 return node;
00795 }
00796 Node new146()
00797 {
00798 TChar node1 = (TChar) pop();
00799 ACharPrimitiveType node = new ACharPrimitiveType(node1);
00800 return node;
00801 }
00802 Node new147()
00803 {
00804 TInt node1 = (TInt) pop();
00805 AIntPrimitiveType node = new AIntPrimitiveType(node1);
00806 return node;
00807 }
00808 Node new148()
00809 {
00810 TLong node1 = (TLong) pop();
00811 ALongPrimitiveType node = new ALongPrimitiveType(node1);
00812 return node;
00813 }
00814 Node new149()
00815 {
00816 TFloat node1 = (TFloat) pop();
00817 AFloatPrimitiveType node = new AFloatPrimitiveType(node1);
00818 return node;
00819 }
00820 Node new15()
00821 {
00822 XPComment node8 = null;
00823 TSemicolon node7 = (TSemicolon) pop();
00824 PColonExp node6 = (PColonExp) pop();
00825 TRParen node5 = (TRParen) pop();
00826 PParams node4 = null;
00827 TLParen node3 = (TLParen) pop();
00828 TId node2 = (TId) pop();
00829 TInvoke node1 = (TInvoke) pop();
00830 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00831 return node;
00832 }
00833 Node new150()
00834 {
00835 TDouble node1 = (TDouble) pop();
00836 ADoublePrimitiveType node = new ADoublePrimitiveType(node1);
00837 return node;
00838 }
00839 Node new16()
00840 {
00841 XPComment node8 = null;
00842 TSemicolon node7 = (TSemicolon) pop();
00843 PColonExp node6 = (PColonExp) pop();
00844 TRParen node5 = (TRParen) pop();
00845 PParams node4 = (PParams) pop();
00846 TLParen node3 = (TLParen) pop();
00847 TId node2 = (TId) pop();
00848 TInvoke node1 = (TInvoke) pop();
00849 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00850 return node;
00851 }
00852 Node new17()
00853 {
00854 XPComment node8 = (XPComment) pop();
00855 TSemicolon node7 = (TSemicolon) pop();
00856 PColonExp node6 = null;
00857 TRParen node5 = (TRParen) pop();
00858 PParams node4 = null;
00859 TLParen node3 = (TLParen) pop();
00860 TId node2 = (TId) pop();
00861 TInvoke node1 = (TInvoke) pop();
00862 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00863 return node;
00864 }
00865 Node new18()
00866 {
00867 XPComment node8 = (XPComment) pop();
00868 TSemicolon node7 = (TSemicolon) pop();
00869 PColonExp node6 = null;
00870 TRParen node5 = (TRParen) pop();
00871 PParams node4 = (PParams) pop();
00872 TLParen node3 = (TLParen) pop();
00873 TId node2 = (TId) pop();
00874 TInvoke node1 = (TInvoke) pop();
00875 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00876 return node;
00877 }
00878 Node new19()
00879 {
00880 XPComment node8 = (XPComment) pop();
00881 TSemicolon node7 = (TSemicolon) pop();
00882 PColonExp node6 = (PColonExp) pop();
00883 TRParen node5 = (TRParen) pop();
00884 PParams node4 = null;
00885 TLParen node3 = (TLParen) pop();
00886 TId node2 = (TId) pop();
00887 TInvoke node1 = (TInvoke) pop();
00888 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00889 return node;
00890 }
00891 Node new2()
00892 {
00893 XPPropositionDefinition node3 = null;
00894 XPComment node2 = (XPComment) pop();
00895 PName node1 = null;
00896 AUnit node = new AUnit(node1, node2, node3);
00897 return node;
00898 }
00899 Node new20()
00900 {
00901 XPComment node8 = (XPComment) pop();
00902 TSemicolon node7 = (TSemicolon) pop();
00903 PColonExp node6 = (PColonExp) pop();
00904 TRParen node5 = (TRParen) pop();
00905 PParams node4 = (PParams) pop();
00906 TLParen node3 = (TLParen) pop();
00907 TId node2 = (TId) pop();
00908 TInvoke node1 = (TInvoke) pop();
00909 AInvokePropositionDefinition node = new AInvokePropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00910 return node;
00911 }
00912 Node new21()
00913 {
00914 XPComment node8 = null;
00915 TSemicolon node7 = (TSemicolon) pop();
00916 PColonExp node6 = null;
00917 TRParen node5 = (TRParen) pop();
00918 PParams node4 = null;
00919 TLParen node3 = (TLParen) pop();
00920 TId node2 = (TId) pop();
00921 TReturn node1 = (TReturn) pop();
00922 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00923 return node;
00924 }
00925 Node new22()
00926 {
00927 XPComment node8 = null;
00928 TSemicolon node7 = (TSemicolon) pop();
00929 PColonExp node6 = null;
00930 TRParen node5 = (TRParen) pop();
00931 PParams node4 = (PParams) pop();
00932 TLParen node3 = (TLParen) pop();
00933 TId node2 = (TId) pop();
00934 TReturn node1 = (TReturn) pop();
00935 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00936 return node;
00937 }
00938 Node new23()
00939 {
00940 XPComment node8 = null;
00941 TSemicolon node7 = (TSemicolon) pop();
00942 PColonExp node6 = (PColonExp) pop();
00943 TRParen node5 = (TRParen) pop();
00944 PParams node4 = null;
00945 TLParen node3 = (TLParen) pop();
00946 TId node2 = (TId) pop();
00947 TReturn node1 = (TReturn) pop();
00948 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00949 return node;
00950 }
00951 Node new24()
00952 {
00953 XPComment node8 = null;
00954 TSemicolon node7 = (TSemicolon) pop();
00955 PColonExp node6 = (PColonExp) pop();
00956 TRParen node5 = (TRParen) pop();
00957 PParams node4 = (PParams) pop();
00958 TLParen node3 = (TLParen) pop();
00959 TId node2 = (TId) pop();
00960 TReturn node1 = (TReturn) pop();
00961 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00962 return node;
00963 }
00964 Node new25()
00965 {
00966 XPComment node8 = (XPComment) pop();
00967 TSemicolon node7 = (TSemicolon) pop();
00968 PColonExp node6 = null;
00969 TRParen node5 = (TRParen) pop();
00970 PParams node4 = null;
00971 TLParen node3 = (TLParen) pop();
00972 TId node2 = (TId) pop();
00973 TReturn node1 = (TReturn) pop();
00974 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00975 return node;
00976 }
00977 Node new26()
00978 {
00979 XPComment node8 = (XPComment) pop();
00980 TSemicolon node7 = (TSemicolon) pop();
00981 PColonExp node6 = null;
00982 TRParen node5 = (TRParen) pop();
00983 PParams node4 = (PParams) pop();
00984 TLParen node3 = (TLParen) pop();
00985 TId node2 = (TId) pop();
00986 TReturn node1 = (TReturn) pop();
00987 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
00988 return node;
00989 }
00990 Node new27()
00991 {
00992 XPComment node8 = (XPComment) pop();
00993 TSemicolon node7 = (TSemicolon) pop();
00994 PColonExp node6 = (PColonExp) pop();
00995 TRParen node5 = (TRParen) pop();
00996 PParams node4 = null;
00997 TLParen node3 = (TLParen) pop();
00998 TId node2 = (TId) pop();
00999 TReturn node1 = (TReturn) pop();
01000 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01001 return node;
01002 }
01003 Node new28()
01004 {
01005 XPComment node8 = (XPComment) pop();
01006 TSemicolon node7 = (TSemicolon) pop();
01007 PColonExp node6 = (PColonExp) pop();
01008 TRParen node5 = (TRParen) pop();
01009 PParams node4 = (PParams) pop();
01010 TLParen node3 = (TLParen) pop();
01011 TId node2 = (TId) pop();
01012 TReturn node1 = (TReturn) pop();
01013 AReturnPropositionDefinition node = new AReturnPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01014 return node;
01015 }
01016 Node new29()
01017 {
01018 XPComment node11 = null;
01019 TSemicolon node10 = (TSemicolon) pop();
01020 PColonExp node9 = null;
01021 TRParen node8 = (TRParen) pop();
01022 PParams node7 = null;
01023 TLParen node6 = (TLParen) pop();
01024 TId node5 = (TId) pop();
01025 TRBracket node4 = (TRBracket) pop();
01026 TId node3 = (TId) pop();
01027 TLBracket node2 = (TLBracket) pop();
01028 TLocation node1 = (TLocation) pop();
01029 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01030 return node;
01031 }
01032 Node new3()
01033 {
01034 PComment node2 = (PComment) pop();
01035 XPComment node1 = (XPComment) pop();
01036 X1PComment node = new X1PComment(node1, node2);
01037 return node;
01038 }
01039 Node new30()
01040 {
01041 XPComment node11 = null;
01042 TSemicolon node10 = (TSemicolon) pop();
01043 PColonExp node9 = null;
01044 TRParen node8 = (TRParen) pop();
01045 PParams node7 = (PParams) pop();
01046 TLParen node6 = (TLParen) pop();
01047 TId node5 = (TId) pop();
01048 TRBracket node4 = (TRBracket) pop();
01049 TId node3 = (TId) pop();
01050 TLBracket node2 = (TLBracket) pop();
01051 TLocation node1 = (TLocation) pop();
01052 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01053 return node;
01054 }
01055 Node new31()
01056 {
01057 XPComment node11 = null;
01058 TSemicolon node10 = (TSemicolon) pop();
01059 PColonExp node9 = (PColonExp) pop();
01060 TRParen node8 = (TRParen) pop();
01061 PParams node7 = null;
01062 TLParen node6 = (TLParen) pop();
01063 TId node5 = (TId) pop();
01064 TRBracket node4 = (TRBracket) pop();
01065 TId node3 = (TId) pop();
01066 TLBracket node2 = (TLBracket) pop();
01067 TLocation node1 = (TLocation) pop();
01068 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01069 return node;
01070 }
01071 Node new32()
01072 {
01073 XPComment node11 = null;
01074 TSemicolon node10 = (TSemicolon) pop();
01075 PColonExp node9 = (PColonExp) pop();
01076 TRParen node8 = (TRParen) pop();
01077 PParams node7 = (PParams) pop();
01078 TLParen node6 = (TLParen) pop();
01079 TId node5 = (TId) pop();
01080 TRBracket node4 = (TRBracket) pop();
01081 TId node3 = (TId) pop();
01082 TLBracket node2 = (TLBracket) pop();
01083 TLocation node1 = (TLocation) pop();
01084 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01085 return node;
01086 }
01087 Node new33()
01088 {
01089 XPComment node11 = (XPComment) pop();
01090 TSemicolon node10 = (TSemicolon) pop();
01091 PColonExp node9 = null;
01092 TRParen node8 = (TRParen) pop();
01093 PParams node7 = null;
01094 TLParen node6 = (TLParen) pop();
01095 TId node5 = (TId) pop();
01096 TRBracket node4 = (TRBracket) pop();
01097 TId node3 = (TId) pop();
01098 TLBracket node2 = (TLBracket) pop();
01099 TLocation node1 = (TLocation) pop();
01100 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01101 return node;
01102 }
01103 Node new34()
01104 {
01105 XPComment node11 = (XPComment) pop();
01106 TSemicolon node10 = (TSemicolon) pop();
01107 PColonExp node9 = null;
01108 TRParen node8 = (TRParen) pop();
01109 PParams node7 = (PParams) pop();
01110 TLParen node6 = (TLParen) pop();
01111 TId node5 = (TId) pop();
01112 TRBracket node4 = (TRBracket) pop();
01113 TId node3 = (TId) pop();
01114 TLBracket node2 = (TLBracket) pop();
01115 TLocation node1 = (TLocation) pop();
01116 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01117 return node;
01118 }
01119 Node new35()
01120 {
01121 XPComment node11 = (XPComment) pop();
01122 TSemicolon node10 = (TSemicolon) pop();
01123 PColonExp node9 = (PColonExp) pop();
01124 TRParen node8 = (TRParen) pop();
01125 PParams node7 = null;
01126 TLParen node6 = (TLParen) pop();
01127 TId node5 = (TId) pop();
01128 TRBracket node4 = (TRBracket) pop();
01129 TId node3 = (TId) pop();
01130 TLBracket node2 = (TLBracket) pop();
01131 TLocation node1 = (TLocation) pop();
01132 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01133 return node;
01134 }
01135 Node new36()
01136 {
01137 XPComment node11 = (XPComment) pop();
01138 TSemicolon node10 = (TSemicolon) pop();
01139 PColonExp node9 = (PColonExp) pop();
01140 TRParen node8 = (TRParen) pop();
01141 PParams node7 = (PParams) pop();
01142 TLParen node6 = (TLParen) pop();
01143 TId node5 = (TId) pop();
01144 TRBracket node4 = (TRBracket) pop();
01145 TId node3 = (TId) pop();
01146 TLBracket node2 = (TLBracket) pop();
01147 TLocation node1 = (TLocation) pop();
01148 ALocationPropositionDefinition node = new ALocationPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11);
01149 return node;
01150 }
01151 Node new37()
01152 {
01153 XPComment node8 = null;
01154 TSemicolon node7 = (TSemicolon) pop();
01155 PColonExp node6 = (PColonExp) pop();
01156 TRParen node5 = (TRParen) pop();
01157 PParams node4 = null;
01158 TLParen node3 = (TLParen) pop();
01159 TId node2 = (TId) pop();
01160 TExpression node1 = (TExpression) pop();
01161 AExpressionPropositionDefinition node = new AExpressionPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01162 return node;
01163 }
01164 Node new38()
01165 {
01166 XPComment node8 = null;
01167 TSemicolon node7 = (TSemicolon) pop();
01168 PColonExp node6 = (PColonExp) pop();
01169 TRParen node5 = (TRParen) pop();
01170 PParams node4 = (PParams) pop();
01171 TLParen node3 = (TLParen) pop();
01172 TId node2 = (TId) pop();
01173 TExpression node1 = (TExpression) pop();
01174 AExpressionPropositionDefinition node = new AExpressionPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01175 return node;
01176 }
01177 Node new39()
01178 {
01179 XPComment node8 = (XPComment) pop();
01180 TSemicolon node7 = (TSemicolon) pop();
01181 PColonExp node6 = (PColonExp) pop();
01182 TRParen node5 = (TRParen) pop();
01183 PParams node4 = null;
01184 TLParen node3 = (TLParen) pop();
01185 TId node2 = (TId) pop();
01186 TExpression node1 = (TExpression) pop();
01187 AExpressionPropositionDefinition node = new AExpressionPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01188 return node;
01189 }
01190 Node new4()
01191 {
01192 PComment node1 = (PComment) pop();
01193 X2PComment node = new X2PComment(node1);
01194 return node;
01195 }
01196 Node new40()
01197 {
01198 XPComment node8 = (XPComment) pop();
01199 TSemicolon node7 = (TSemicolon) pop();
01200 PColonExp node6 = (PColonExp) pop();
01201 TRParen node5 = (TRParen) pop();
01202 PParams node4 = (PParams) pop();
01203 TLParen node3 = (TLParen) pop();
01204 TId node2 = (TId) pop();
01205 TExpression node1 = (TExpression) pop();
01206 AExpressionPropositionDefinition node = new AExpressionPropositionDefinition(node1, node2, node3, node4, node5, node6, node7, node8);
01207 return node;
01208 }
01209 Node new41()
01210 {
01211 PCpl node2 = null;
01212 TThis node1 = (TThis) pop();
01213 AInstanceParams node = new AInstanceParams(node1, node2);
01214 return node;
01215 }
01216 Node new42()
01217 {
01218 PCpl node2 = (PCpl) pop();
01219 TThis node1 = (TThis) pop();
01220 AInstanceParams node = new AInstanceParams(node1, node2);
01221 return node;
01222 }
01223 Node new43()
01224 {
01225 PParamList node1 = (PParamList) pop();
01226 AStaticParams node = new AStaticParams(node1);
01227 return node;
01228 }
01229 Node new44()
01230 {
01231 PParamList node2 = (PParamList) pop();
01232 TComma node1 = (TComma) pop();
01233 ACpl node = new ACpl(node1, node2);
01234 return node;
01235 }
01236 Node new45()
01237 {
01238 TId node3 = (TId) pop();
01239 XTDim node2 = null;
01240 PName node1 = (PName) pop();
01241 AParamParamList node = new AParamParamList(node1, node2, node3);
01242 return node;
01243 }
01244 Node new46()
01245 {
01246 TId node3 = (TId) pop();
01247 XTDim node2 = (XTDim) pop();
01248 PName node1 = (PName) pop();
01249 AParamParamList node = new AParamParamList(node1, node2, node3);
01250 return node;
01251 }
01252 Node new47()
01253 {
01254 TDim node2 = (TDim) pop();
01255 XTDim node1 = (XTDim) pop();
01256 X1TDim node = new X1TDim(node1, node2);
01257 return node;
01258 }
01259 Node new48()
01260 {
01261 TDim node1 = (TDim) pop();
01262 X2TDim node = new X2TDim(node1);
01263 return node;
01264 }
01265 Node new49()
01266 {
01267 TId node5 = (TId) pop();
01268 XTDim node4 = null;
01269 PName node3 = (PName) pop();
01270 TComma node2 = (TComma) pop();
01271 PParamList node1 = (PParamList) pop();
01272 AParamsParamList node = new AParamsParamList(node1, node2, node3, node4, node5);
01273 return node;
01274 }
01275 Node new5()
01276 {
01277 XPPropositionDefinition node3 = null;
01278 XPComment node2 = (XPComment) pop();
01279 PName node1 = (PName) pop();
01280 AUnit node = new AUnit(node1, node2, node3);
01281 return node;
01282 }
01283 Node new50()
01284 {
01285 TId node5 = (TId) pop();
01286 XTDim node4 = (XTDim) pop();
01287 PName node3 = (PName) pop();
01288 TComma node2 = (TComma) pop();
01289 PParamList node1 = (PParamList) pop();
01290 AParamsParamList node = new AParamsParamList(node1, node2, node3, node4, node5);
01291 return node;
01292 }
01293 Node new51()
01294 {
01295 PExp node2 = (PExp) pop();
01296 TColon node1 = (TColon) pop();
01297 AColonExp node = new AColonExp(node1, node2);
01298 return node;
01299 }
01300 Node new52()
01301 {
01302 TId node1 = (TId) pop();
01303 ASimpleName node = new ASimpleName(node1);
01304 return node;
01305 }
01306 Node new53()
01307 {
01308 TId node3 = (TId) pop();
01309 TDot node2 = (TDot) pop();
01310 PName node1 = (PName) pop();
01311 AQualifiedName node = new AQualifiedName(node1, node2, node3);
01312 return node;
01313 }
01314 Node new54()
01315 {
01316 TRBracket node4 = (TRBracket) pop();
01317 PExp node3 = (PExp) pop();
01318 TLBracket node2 = (TLBracket) pop();
01319 PName node1 = (PName) pop();
01320 AStrongNameArrayAccess node = new AStrongNameArrayAccess(node1, node2, node3, node4);
01321 return node;
01322 }
01323 Node new55()
01324 {
01325 TRBracket node4 = (TRBracket) pop();
01326 PExp node3 = (PExp) pop();
01327 TLBracket node2 = (TLBracket) pop();
01328 PPrimaryExp node1 = (PPrimaryExp) pop();
01329 AStrongExpArrayAccess node = new AStrongExpArrayAccess(node1, node2, node3, node4);
01330 return node;
01331 }
01332 Node new56()
01333 {
01334 TId node3 = (TId) pop();
01335 TDot node2 = (TDot) pop();
01336 PPrimaryExp node1 = (PPrimaryExp) pop();
01337 AStrongObjectFieldAccess node = new AStrongObjectFieldAccess(node1, node2, node3);
01338 return node;
01339 }
01340 Node new57()
01341 {
01342 TId node2 = (TId) pop();
01343 TDot node1 = (TDot) pop();
01344 AStrongObjectNavigation node = new AStrongObjectNavigation(node1, node2);
01345 return node;
01346 }
01347 Node new58()
01348 {
01349 TRBracket node3 = (TRBracket) pop();
01350 PExp node2 = (PExp) pop();
01351 TLBracket node1 = (TLBracket) pop();
01352 AStrongArrayNavigation node = new AStrongArrayNavigation(node1, node2, node3);
01353 return node;
01354 }
01355 Node new59()
01356 {
01357 PLiteral node1 = (PLiteral) pop();
01358 ALiteralPrimaryExp node = new ALiteralPrimaryExp(node1);
01359 return node;
01360 }
01361 Node new6()
01362 {
01363 XPPropositionDefinition node3 = (XPPropositionDefinition) pop();
01364 XPComment node2 = null;
01365 PName node1 = null;
01366 AUnit node = new AUnit(node1, node2, node3);
01367 return node;
01368 }
01369 Node new60()
01370 {
01371 TRParen node3 = (TRParen) pop();
01372 PExp node2 = (PExp) pop();
01373 TLParen node1 = (TLParen) pop();
01374 AParenPrimaryExp node = new AParenPrimaryExp(node1, node2, node3);
01375 return node;
01376 }
01377 Node new61()
01378 {
01379 PFieldAccess node1 = (PFieldAccess) pop();
01380 AFieldAccessPrimaryExp node = new AFieldAccessPrimaryExp(node1);
01381 return node;
01382 }
01383 Node new62()
01384 {
01385 PArrayAccess node1 = (PArrayAccess) pop();
01386 AArrayAccessPrimaryExp node = new AArrayAccessPrimaryExp(node1);
01387 return node;
01388 }
01389 Node new63()
01390 {
01391 TRetVal node1 = (TRetVal) pop();
01392 AReturnValuePrimaryExp node = new AReturnValuePrimaryExp(node1);
01393 return node;
01394 }
01395 Node new64()
01396 {
01397 TThis node1 = (TThis) pop();
01398 AThisPrimaryExp node = new AThisPrimaryExp(node1);
01399 return node;
01400 }
01401 Node new65()
01402 {
01403 PPrimaryExp node1 = (PPrimaryExp) pop();
01404 APrimaryPostfixExp node = new APrimaryPostfixExp(node1);
01405 return node;
01406 }
01407 Node new66()
01408 {
01409 PName node1 = (PName) pop();
01410 ANamePostfixExp node = new ANamePostfixExp(node1);
01411 return node;
01412 }
01413 Node new67()
01414 {
01415 PUnaryExp node5 = (PUnaryExp) pop();
01416 TRParen node4 = (TRParen) pop();
01417 XTDim node3 = null;
01418 PPrimitiveType node2 = (PPrimitiveType) pop();
01419 TLParen node1 = (TLParen) pop();
01420 AStrongPrimitiveCastExp node = new AStrongPrimitiveCastExp(node1, node2, node3, node4, node5);
01421 return node;
01422 }
01423 Node new68()
01424 {
01425 PUnaryExp node5 = (PUnaryExp) pop();
01426 TRParen node4 = (TRParen) pop();
01427 XTDim node3 = (XTDim) pop();
01428 PPrimitiveType node2 = (PPrimitiveType) pop();
01429 TLParen node1 = (TLParen) pop();
01430 AStrongPrimitiveCastExp node = new AStrongPrimitiveCastExp(node1, node2, node3, node4, node5);
01431 return node;
01432 }
01433 Node new69()
01434 {
01435 PUnaryExp node5 = (PUnaryExp) pop();
01436 TRParen node4 = (TRParen) pop();
01437 XTDim node3 = (XTDim) pop();
01438 PName node2 = (PName) pop();
01439 TLParen node1 = (TLParen) pop();
01440 AStrongNameCastExp node = new AStrongNameCastExp(node1, node2, node3, node4, node5);
01441 return node;
01442 }
01443 Node new7()
01444 {
01445 PPropositionDefinition node2 = (PPropositionDefinition) pop();
01446 XPPropositionDefinition node1 = (XPPropositionDefinition) pop();
01447 X1PPropositionDefinition node = new X1PPropositionDefinition(node1, node2);
01448 return node;
01449 }
01450 Node new70()
01451 {
01452 PUnaryNotPlusMinusExp node4 = (PUnaryNotPlusMinusExp) pop();
01453 TRParen node3 = (TRParen) pop();
01454 PExp node2 = (PExp) pop();
01455 TLParen node1 = (TLParen) pop();
01456 AStrongExpCastExp node = new AStrongExpCastExp(node1, node2, node3, node4);
01457 return node;
01458 }
01459 Node new71()
01460 {
01461 PPostfixExp node1 = (PPostfixExp) pop();
01462 APostfixUnaryNotPlusMinusExp node = new APostfixUnaryNotPlusMinusExp(node1);
01463 return node;
01464 }
01465 Node new72()
01466 {
01467 PUnaryExp node2 = (PUnaryExp) pop();
01468 TNot node1 = (TNot) pop();
01469 AComplementUnaryNotPlusMinusExp node = new AComplementUnaryNotPlusMinusExp(node1, node2);
01470 return node;
01471 }
01472 Node new73()
01473 {
01474 PUnaryExp node2 = (PUnaryExp) pop();
01475 TBitComplement node1 = (TBitComplement) pop();
01476 ABitComplementUnaryNotPlusMinusExp node = new ABitComplementUnaryNotPlusMinusExp(node1, node2);
01477 return node;
01478 }
01479 Node new74()
01480 {
01481 PCastExp node1 = (PCastExp) pop();
01482 ACastUnaryNotPlusMinusExp node = new ACastUnaryNotPlusMinusExp(node1);
01483 return node;
01484 }
01485 Node new75()
01486 {
01487 PUnaryExp node2 = (PUnaryExp) pop();
01488 TPlus node1 = (TPlus) pop();
01489 APlusUnaryExp node = new APlusUnaryExp(node1, node2);
01490 return node;
01491 }
01492 Node new76()
01493 {
01494 PUnaryExp node2 = (PUnaryExp) pop();
01495 TMinus node1 = (TMinus) pop();
01496 AMinusUnaryExp node = new AMinusUnaryExp(node1, node2);
01497 return node;
01498 }
01499 Node new77()
01500 {
01501 PUnaryNotPlusMinusExp node1 = (PUnaryNotPlusMinusExp) pop();
01502 AUnaryNotPlusMinusUnaryExp node = new AUnaryNotPlusMinusUnaryExp(node1);
01503 return node;
01504 }
01505 Node new78()
01506 {
01507 PUnaryExp node1 = (PUnaryExp) pop();
01508 AUnaryExpMultExp node = new AUnaryExpMultExp(node1);
01509 return node;
01510 }
01511 Node new79()
01512 {
01513 PUnaryExp node3 = (PUnaryExp) pop();
01514 TStar node2 = (TStar) pop();
01515 PMultExp node1 = (PMultExp) pop();
01516 ATimesMultExp node = new ATimesMultExp(node1, node2, node3);
01517 return node;
01518 }
01519 Node new8()
01520 {
01521 PPropositionDefinition node1 = (PPropositionDefinition) pop();
01522 X2PPropositionDefinition node = new X2PPropositionDefinition(node1);
01523 return node;
01524 }
01525 Node new80()
01526 {
01527 PUnaryExp node3 = (PUnaryExp) pop();
01528 TStrongDiv node2 = (TStrongDiv) pop();
01529 PMultExp node1 = (PMultExp) pop();
01530 AStrongDivMultExp node = new AStrongDivMultExp(node1, node2, node3);
01531 return node;
01532 }
01533 Node new81()
01534 {
01535 PUnaryExp node3 = (PUnaryExp) pop();
01536 TStrongMod node2 = (TStrongMod) pop();
01537 PMultExp node1 = (PMultExp) pop();
01538 AStrongModMultExp node = new AStrongModMultExp(node1, node2, node3);
01539 return node;
01540 }
01541 Node new82()
01542 {
01543 PMultExp node1 = (PMultExp) pop();
01544 AMultAddExp node = new AMultAddExp(node1);
01545 return node;
01546 }
01547 Node new83()
01548 {
01549 PMultExp node3 = (PMultExp) pop();
01550 TPlus node2 = (TPlus) pop();
01551 PAddExp node1 = (PAddExp) pop();
01552 APlusAddExp node = new APlusAddExp(node1, node2, node3);
01553 return node;
01554 }
01555 Node new84()
01556 {
01557 PMultExp node3 = (PMultExp) pop();
01558 TMinus node2 = (TMinus) pop();
01559 PAddExp node1 = (PAddExp) pop();
01560 AMinusAddExp node = new AMinusAddExp(node1, node2, node3);
01561 return node;
01562 }
01563 Node new85()
01564 {
01565 PAddExp node1 = (PAddExp) pop();
01566 AAddExpShiftExp node = new AAddExpShiftExp(node1);
01567 return node;
01568 }
01569 Node new86()
01570 {
01571 PAddExp node3 = (PAddExp) pop();
01572 TShiftLeft node2 = (TShiftLeft) pop();
01573 PShiftExp node1 = (PShiftExp) pop();
01574 ALeftShiftExp node = new ALeftShiftExp(node1, node2, node3);
01575 return node;
01576 }
01577 Node new87()
01578 {
01579 PAddExp node3 = (PAddExp) pop();
01580 TSignedShiftRight node2 = (TSignedShiftRight) pop();
01581 PShiftExp node1 = (PShiftExp) pop();
01582 ASignedRightShiftExp node = new ASignedRightShiftExp(node1, node2, node3);
01583 return node;
01584 }
01585 Node new88()
01586 {
01587 PAddExp node3 = (PAddExp) pop();
01588 TUnsignedShiftRight node2 = (TUnsignedShiftRight) pop();
01589 PShiftExp node1 = (PShiftExp) pop();
01590 AUnsignedRightShiftExp node = new AUnsignedRightShiftExp(node1, node2, node3);
01591 return node;
01592 }
01593 Node new89()
01594 {
01595 PShiftExp node1 = (PShiftExp) pop();
01596 AShiftRelExp node = new AShiftRelExp(node1);
01597 return node;
01598 }
01599 Node new9()
01600 {
01601 XPPropositionDefinition node3 = (XPPropositionDefinition) pop();
01602 XPComment node2 = null;
01603 PName node1 = (PName) pop();
01604 AUnit node = new AUnit(node1, node2, node3);
01605 return node;
01606 }
01607 Node new90()
01608 {
01609 PShiftExp node3 = (PShiftExp) pop();
01610 TLess node2 = (TLess) pop();
01611 PRelExp node1 = (PRelExp) pop();
01612 ALessRelExp node = new ALessRelExp(node1, node2, node3);
01613 return node;
01614 }
01615 Node new91()
01616 {
01617 PShiftExp node3 = (PShiftExp) pop();
01618 TGreater node2 = (TGreater) pop();
01619 PRelExp node1 = (PRelExp) pop();
01620 AGreaterRelExp node = new AGreaterRelExp(node1, node2, node3);
01621 return node;
01622 }
01623 Node new92()
01624 {
01625 PShiftExp node3 = (PShiftExp) pop();
01626 TLessEqual node2 = (TLessEqual) pop();
01627 PRelExp node1 = (PRelExp) pop();
01628 ALessEqualRelExp node = new ALessEqualRelExp(node1, node2, node3);
01629 return node;
01630 }
01631 Node new93()
01632 {
01633 PShiftExp node3 = (PShiftExp) pop();
01634 TGreaterEqual node2 = (TGreaterEqual) pop();
01635 PRelExp node1 = (PRelExp) pop();
01636 AGreaterEqualRelExp node = new AGreaterEqualRelExp(node1, node2, node3);
01637 return node;
01638 }
01639 Node new94()
01640 {
01641 PName node3 = (PName) pop();
01642 TInstanceof node2 = (TInstanceof) pop();
01643 PRelExp node1 = (PRelExp) pop();
01644 AInstanceofRelExp node = new AInstanceofRelExp(node1, node2, node3);
01645 return node;
01646 }
01647 Node new95()
01648 {
01649 PRelExp node1 = (PRelExp) pop();
01650 ARelEqExp node = new ARelEqExp(node1);
01651 return node;
01652 }
01653 Node new96()
01654 {
01655 PRelExp node3 = (PRelExp) pop();
01656 TEqual node2 = (TEqual) pop();
01657 PEqExp node1 = (PEqExp) pop();
01658 AEqEqExp node = new AEqEqExp(node1, node2, node3);
01659 return node;
01660 }
01661 Node new97()
01662 {
01663 PRelExp node3 = (PRelExp) pop();
01664 TNotEqual node2 = (TNotEqual) pop();
01665 PEqExp node1 = (PEqExp) pop();
01666 ANeqEqExp node = new ANeqEqExp(node1, node2, node3);
01667 return node;
01668 }
01669 Node new98()
01670 {
01671 PEqExp node1 = (PEqExp) pop();
01672 AEqBitAndExp node = new AEqBitAndExp(node1);
01673 return node;
01674 }
01675 Node new99()
01676 {
01677 PEqExp node3 = (PEqExp) pop();
01678 TBitAnd node2 = (TBitAnd) pop();
01679 PBitAndExp node1 = (PBitAndExp) pop();
01680 AAndBitAndExp node = new AAndBitAndExp(node1, node2, node3);
01681 return node;
01682 }
01683 public Start parse() throws ParserException, LexerException, IOException
01684 {
01685 push(0, null, false);
01686
01687 List ign = null;
01688 while(true)
01689 {
01690 while(index(lexer.peek()) == -1)
01691 {
01692 if(ign == null)
01693 {
01694 ign = new TypedLinkedList(NodeCast.instance);
01695 }
01696
01697 ign.add(lexer.next());
01698 }
01699
01700 if(ign != null)
01701 {
01702 ignoredTokens.setIn(lexer.peek(), ign);
01703 ign = null;
01704 }
01705
01706 last_pos = lexer.peek().getPos();
01707 last_line = lexer.peek().getLine();
01708
01709 int index = index(lexer.peek());
01710 action[0] = actionTable[state()][0][1];
01711 action[1] = actionTable[state()][0][2];
01712
01713 int low = 1;
01714 int high = actionTable[state()].length - 1;
01715
01716 while(low <= high)
01717 {
01718 int middle = (low + high) / 2;
01719
01720 if(index < actionTable[state()][middle][0])
01721 {
01722 high = middle - 1;
01723 }
01724 else if(index > actionTable[state()][middle][0])
01725 {
01726 low = middle + 1;
01727 }
01728 else
01729 {
01730 action[0] = actionTable[state()][middle][1];
01731 action[1] = actionTable[state()][middle][2];
01732 break;
01733 }
01734 }
01735
01736 switch(action[0])
01737 {
01738 case SHIFT:
01739 push(action[1], lexer.next(), true);
01740 last_shift = action[1];
01741 break;
01742 case REDUCE:
01743 switch(action[1])
01744 {
01745 case 0: { Node node = new0(); push(goTo(0), node, true); } break;
01746 case 1: { Node node = new1(); push(goTo(0), node, true); } break;
01747 case 2: { Node node = new2(); push(goTo(0), node, true); } break;
01748 case 3: { Node node = new3(); push(goTo(31), node, false); } break;
01749 case 4: { Node node = new4(); push(goTo(31), node, false); } break;
01750 case 5: { Node node = new5(); push(goTo(0), node, true); } break;
01751 case 6: { Node node = new6(); push(goTo(0), node, true); } break;
01752 case 7: { Node node = new7(); push(goTo(32), node, false); } break;
01753 case 8: { Node node = new8(); push(goTo(32), node, false); } break;
01754 case 9: { Node node = new9(); push(goTo(0), node, true); } break;
01755 case 10: { Node node = new10(); push(goTo(0), node, true); } break;
01756 case 11: { Node node = new11(); push(goTo(0), node, true); } break;
01757 case 12: { Node node = new12(); push(goTo(1), node, true); } break;
01758 case 13: { Node node = new13(); push(goTo(2), node, true); } break;
01759 case 14: { Node node = new14(); push(goTo(2), node, true); } break;
01760 case 15: { Node node = new15(); push(goTo(2), node, true); } break;
01761 case 16: { Node node = new16(); push(goTo(2), node, true); } break;
01762 case 17: { Node node = new17(); push(goTo(2), node, true); } break;
01763 case 18: { Node node = new18(); push(goTo(2), node, true); } break;
01764 case 19: { Node node = new19(); push(goTo(2), node, true); } break;
01765 case 20: { Node node = new20(); push(goTo(2), node, true); } break;
01766 case 21: { Node node = new21(); push(goTo(2), node, true); } break;
01767 case 22: { Node node = new22(); push(goTo(2), node, true); } break;
01768 case 23: { Node node = new23(); push(goTo(2), node, true); } break;
01769 case 24: { Node node = new24(); push(goTo(2), node, true); } break;
01770 case 25: { Node node = new25(); push(goTo(2), node, true); } break;
01771 case 26: { Node node = new26(); push(goTo(2), node, true); } break;
01772 case 27: { Node node = new27(); push(goTo(2), node, true); } break;
01773 case 28: { Node node = new28(); push(goTo(2), node, true); } break;
01774 case 29: { Node node = new29(); push(goTo(2), node, true); } break;
01775 case 30: { Node node = new30(); push(goTo(2), node, true); } break;
01776 case 31: { Node node = new31(); push(goTo(2), node, true); } break;
01777 case 32: { Node node = new32(); push(goTo(2), node, true); } break;
01778 case 33: { Node node = new33(); push(goTo(2), node, true); } break;
01779 case 34: { Node node = new34(); push(goTo(2), node, true); } break;
01780 case 35: { Node node = new35(); push(goTo(2), node, true); } break;
01781 case 36: { Node node = new36(); push(goTo(2), node, true); } break;
01782 case 37: { Node node = new37(); push(goTo(2), node, true); } break;
01783 case 38: { Node node = new38(); push(goTo(2), node, true); } break;
01784 case 39: { Node node = new39(); push(goTo(2), node, true); } break;
01785 case 40: { Node node = new40(); push(goTo(2), node, true); } break;
01786 case 41: { Node node = new41(); push(goTo(3), node, true); } break;
01787 case 42: { Node node = new42(); push(goTo(3), node, true); } break;
01788 case 43: { Node node = new43(); push(goTo(3), node, true); } break;
01789 case 44: { Node node = new44(); push(goTo(4), node, true); } break;
01790 case 45: { Node node = new45(); push(goTo(5), node, true); } break;
01791 case 46: { Node node = new46(); push(goTo(5), node, true); } break;
01792 case 47: { Node node = new47(); push(goTo(33), node, false); } break;
01793 case 48: { Node node = new48(); push(goTo(33), node, false); } break;
01794 case 49: { Node node = new49(); push(goTo(5), node, true); } break;
01795 case 50: { Node node = new50(); push(goTo(5), node, true); } break;
01796 case 51: { Node node = new51(); push(goTo(6), node, true); } break;
01797 case 52: { Node node = new52(); push(goTo(7), node, true); } break;
01798 case 53: { Node node = new53(); push(goTo(7), node, true); } break;
01799 case 54: { Node node = new54(); push(goTo(8), node, true); } break;
01800 case 55: { Node node = new55(); push(goTo(8), node, true); } break;
01801 case 56: { Node node = new56(); push(goTo(9), node, true); } break;
01802 case 57: { Node node = new57(); push(goTo(10), node, true); } break;
01803 case 58: { Node node = new58(); push(goTo(10), node, true); } break;
01804 case 59: { Node node = new59(); push(goTo(11), node, true); } break;
01805 case 60: { Node node = new60(); push(goTo(11), node, true); } break;
01806 case 61: { Node node = new61(); push(goTo(11), node, true); } break;
01807 case 62: { Node node = new62(); push(goTo(11), node, true); } break;
01808 case 63: { Node node = new63(); push(goTo(11), node, true); } break;
01809 case 64: { Node node = new64(); push(goTo(11), node, true); } break;
01810 case 65: { Node node = new65(); push(goTo(12), node, true); } break;
01811 case 66: { Node node = new66(); push(goTo(12), node, true); } break;
01812 case 67: { Node node = new67(); push(goTo(13), node, true); } break;
01813 case 68: { Node node = new68(); push(goTo(13), node, true); } break;
01814 case 69: { Node node = new69(); push(goTo(13), node, true); } break;
01815 case 70: { Node node = new70(); push(goTo(13), node, true); } break;
01816 case 71: { Node node = new71(); push(goTo(14), node, true); } break;
01817 case 72: { Node node = new72(); push(goTo(14), node, true); } break;
01818 case 73: { Node node = new73(); push(goTo(14), node, true); } break;
01819 case 74: { Node node = new74(); push(goTo(14), node, true); } break;
01820 case 75: { Node node = new75(); push(goTo(15), node, true); } break;
01821 case 76: { Node node = new76(); push(goTo(15), node, true); } break;
01822 case 77: { Node node = new77(); push(goTo(15), node, true); } break;
01823 case 78: { Node node = new78(); push(goTo(16), node, true); } break;
01824 case 79: { Node node = new79(); push(goTo(16), node, true); } break;
01825 case 80: { Node node = new80(); push(goTo(16), node, true); } break;
01826 case 81: { Node node = new81(); push(goTo(16), node, true); } break;
01827 case 82: { Node node = new82(); push(goTo(17), node, true); } break;
01828 case 83: { Node node = new83(); push(goTo(17), node, true); } break;
01829 case 84: { Node node = new84(); push(goTo(17), node, true); } break;
01830 case 85: { Node node = new85(); push(goTo(18), node, true); } break;
01831 case 86: { Node node = new86(); push(goTo(18), node, true); } break;
01832 case 87: { Node node = new87(); push(goTo(18), node, true); } break;
01833 case 88: { Node node = new88(); push(goTo(18), node, true); } break;
01834 case 89: { Node node = new89(); push(goTo(19), node, true); } break;
01835 case 90: { Node node = new90(); push(goTo(19), node, true); } break;
01836 case 91: { Node node = new91(); push(goTo(19), node, true); } break;
01837 case 92: { Node node = new92(); push(goTo(19), node, true); } break;
01838 case 93: { Node node = new93(); push(goTo(19), node, true); } break;
01839 case 94: { Node node = new94(); push(goTo(19), node, true); } break;
01840 case 95: { Node node = new95(); push(goTo(20), node, true); } break;
01841 case 96: { Node node = new96(); push(goTo(20), node, true); } break;
01842 case 97: { Node node = new97(); push(goTo(20), node, true); } break;
01843 case 98: { Node node = new98(); push(goTo(21), node, true); } break;
01844 case 99: { Node node = new99(); push(goTo(21), node, true); } break;
01845 case 100: { Node node = new100(); push(goTo(22), node, true); } break;
01846 case 101: { Node node = new101(); push(goTo(22), node, true); } break;
01847 case 102: { Node node = new102(); push(goTo(23), node, true); } break;
01848 case 103: { Node node = new103(); push(goTo(23), node, true); } break;
01849 case 104: { Node node = new104(); push(goTo(24), node, true); } break;
01850 case 105: { Node node = new105(); push(goTo(24), node, true); } break;
01851 case 106: { Node node = new106(); push(goTo(25), node, true); } break;
01852 case 107: { Node node = new107(); push(goTo(25), node, true); } break;
01853 case 108: { Node node = new108(); push(goTo(26), node, true); } break;
01854 case 109: { Node node = new109(); push(goTo(26), node, true); } break;
01855 case 110: { Node node = new110(); push(goTo(27), node, true); } break;
01856 case 111: { Node node = new111(); push(goTo(28), node, true); } break;
01857 case 112: { Node node = new112(); push(goTo(28), node, true); } break;
01858 case 113: { Node node = new113(); push(goTo(28), node, true); } break;
01859 case 114: { Node node = new114(); push(goTo(28), node, true); } break;
01860 case 115: { Node node = new115(); push(goTo(28), node, true); } break;
01861 case 116: { Node node = new116(); push(goTo(28), node, true); } break;
01862 case 117: { Node node = new117(); push(goTo(28), node, true); } break;
01863 case 118: { Node node = new118(); push(goTo(28), node, true); } break;
01864 case 119: { Node node = new119(); push(goTo(28), node, true); } break;
01865 case 120: { Node node = new120(); push(goTo(28), node, true); } break;
01866 case 121: { Node node = new121(); push(goTo(28), node, true); } break;
01867 case 122: { Node node = new122(); push(goTo(28), node, true); } break;
01868 case 123: { Node node = new123(); push(goTo(28), node, true); } break;
01869 case 124: { Node node = new124(); push(goTo(28), node, true); } break;
01870 case 125: { Node node = new125(); push(goTo(28), node, true); } break;
01871 case 126: { Node node = new126(); push(goTo(28), node, true); } break;
01872 case 127: { Node node = new127(); push(goTo(28), node, true); } break;
01873 case 128: { Node node = new128(); push(goTo(28), node, true); } break;
01874 case 129: { Node node = new129(); push(goTo(28), node, true); } break;
01875 case 130: { Node node = new130(); push(goTo(29), node, true); } break;
01876 case 131: { Node node = new131(); push(goTo(29), node, true); } break;
01877 case 132: { Node node = new132(); push(goTo(29), node, true); } break;
01878 case 133: { Node node = new133(); push(goTo(29), node, true); } break;
01879 case 134: { Node node = new134(); push(goTo(29), node, true); } break;
01880 case 135: { Node node = new135(); push(goTo(29), node, true); } break;
01881 case 136: { Node node = new136(); push(goTo(29), node, true); } break;
01882 case 137: { Node node = new137(); push(goTo(29), node, true); } break;
01883 case 138: { Node node = new138(); push(goTo(29), node, true); } break;
01884 case 139: { Node node = new139(); push(goTo(29), node, true); } break;
01885 case 140: { Node node = new140(); push(goTo(29), node, true); } break;
01886 case 141: { Node node = new141(); push(goTo(29), node, true); } break;
01887 case 142: { Node node = new142(); push(goTo(29), node, true); } break;
01888 case 143: { Node node = new143(); push(goTo(30), node, true); } break;
01889 case 144: { Node node = new144(); push(goTo(30), node, true); } break;
01890 case 145: { Node node = new145(); push(goTo(30), node, true); } break;
01891 case 146: { Node node = new146(); push(goTo(30), node, true); } break;
01892 case 147: { Node node = new147(); push(goTo(30), node, true); } break;
01893 case 148: { Node node = new148(); push(goTo(30), node, true); } break;
01894 case 149: { Node node = new149(); push(goTo(30), node, true); } break;
01895 case 150: { Node node = new150(); push(goTo(30), node, true); } break;
01896 }
01897 break;
01898 case ACCEPT:
01899 {
01900 EOF node2 = (EOF) lexer.next();
01901 PUnit node1 = (PUnit) pop();
01902 Start node = new Start(node1, node2);
01903 return node;
01904 }
01905 case ERROR:
01906 throw new ParserException(
01907 "[" + last_line + "," + last_pos + "] " +
01908 errorMessages[errors[action[1]]]);
01909 }
01910 }
01911 }
01912 private Node pop()
01913 {
01914 return (Node) ((State) stack.previous()).node;
01915 }
01916 private void push(int state, Node node, boolean filter) throws ParserException, LexerException, IOException
01917 {
01918 this.node = node;
01919
01920 if(filter)
01921 {
01922 filter();
01923 }
01924
01925 if(!stack.hasNext())
01926 {
01927 stack.add(new State(state, this.node));
01928 return;
01929 }
01930
01931 State s = (State) stack.next();
01932 s.state = state;
01933 s.node = this.node;
01934 }
01935 private int state()
01936 {
01937 State s = (State) stack.previous();
01938 stack.next();
01939 return s.state;
01940 }
01941 }