Main Page   Packages   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

Parser.java

00001 package edu.ksu.cis.bandera.birp.parser;
00002 
00003 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00004  * Bandera, a Java(TM) analysis and transformation toolkit           *
00005  * Copyright (C) 1998-2001 SAnToS Laboratories (santos@cis.ksu.edu)  *
00006 
00007  * All rights reserved.                                              *
00008  *                                                                   *
00009  * This work was done as a project in the SAnToS Laboratory,         *
00010  * Department of Computing and Information Sciences, Kansas State    *
00011  * University, USA (http://www.cis.ksu.edu/santos).                  *
00012  * It is understood that any modification not identified as such is  *
00013  * not covered by the preceding statement.                           *
00014  *                                                                   *
00015  * This work is free software; you can redistribute it and/or        *
00016  * modify it under the terms of the GNU Library General Public       *
00017  * License as published by the Free Software Foundation; either      *
00018  * version 2 of the License, or (at your option) any later version.  *
00019  *                                                                   *
00020  * This work is distributed in the hope that it will be useful,      *
00021  * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
00022  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU *
00023  * Library General Public License for more details.                  *
00024  *                                                                   *
00025  * You should have received a copy of the GNU Library General Public *
00026  * License along with this toolkit; if not, write to the             *
00027  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,      *
00028  * Boston, MA  02111-1307, USA.                                      *
00029  *                                                                   *
00030  * Java is a trademark of Sun Microsystems, Inc.                     *
00031  *                                                                   *
00032  * To submit a bug report, send a comment, or get the latest news on *
00033  * this project and other SAnToS projects, please visit the web-site *
00034  *                http://www.cis.ksu.edu/santos                      *
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             {{-1, ERROR, 0}, {33, SHIFT, 1}, },
00067             {{-1, ERROR, 1}, {71, SHIFT, 4}, },
00068             {{-1, ERROR, 2}, {74, ACCEPT, -1}, },
00069             {{-1, REDUCE, 0}, },
00070             {{-1, ERROR, 4}, {4, SHIFT, 5}, },
00071             {{-1, ERROR, 5}, {5, SHIFT, 6}, },
00072             {{-1, ERROR, 6}, {34, SHIFT, 7}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, {71, SHIFT, 11}, },
00073             {{-1, ERROR, 7}, {71, SHIFT, 21}, },
00074             {{-1, ERROR, 8}, {49, SHIFT, 22}, },
00075             {{-1, ERROR, 9}, {71, SHIFT, 23}, },
00076             {{-1, REDUCE, 173}, {71, SHIFT, 24}, },
00077             {{-1, ERROR, 11}, {1, SHIFT, 27}, {21, SHIFT, 28}, },
00078             {{-1, REDUCE, 4}, },
00079             {{-1, REDUCE, 7}, },
00080             {{-1, REDUCE, 54}, },
00081             {{-1, REDUCE, 53}, },
00082             {{-1, REDUCE, 11}, },
00083             {{-1, ERROR, 17}, {34, SHIFT, 29}, },
00084             {{-1, ERROR, 18}, {34, SHIFT, 30}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, {71, SHIFT, 11}, },
00085             {{-1, ERROR, 19}, {34, SHIFT, 35}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, {71, SHIFT, 36}, },
00086             {{-1, ERROR, 20}, {34, SHIFT, 40}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, },
00087             {{-1, ERROR, 21}, {0, SHIFT, 43}, },
00088             {{-1, ERROR, 22}, {71, SHIFT, 44}, },
00089             {{-1, ERROR, 23}, {50, SHIFT, 45}, {71, SHIFT, 46}, },
00090             {{-1, ERROR, 24}, {21, SHIFT, 50}, },
00091             {{-1, REDUCE, 176}, },
00092             {{-1, REDUCE, 174}, {71, SHIFT, 24}, },
00093             {{-1, ERROR, 27}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {43, SHIFT, 57}, {44, SHIFT, 58}, {47, SHIFT, 59}, {71, SHIFT, 60}, },
00094             {{-1, ERROR, 28}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {44, SHIFT, 58}, {47, SHIFT, 59}, {72, SHIFT, 63}, },
00095             {{-1, ERROR, 29}, {71, SHIFT, 65}, },
00096             {{-1, ERROR, 30}, {71, SHIFT, 66}, },
00097             {{-1, REDUCE, 3}, },
00098             {{-1, ERROR, 32}, {34, SHIFT, 67}, },
00099             {{-1, ERROR, 33}, {34, SHIFT, 68}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, {71, SHIFT, 36}, },
00100             {{-1, ERROR, 34}, {34, SHIFT, 71}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, },
00101             {{-1, ERROR, 35}, {71, SHIFT, 73}, },
00102             {{-1, ERROR, 36}, {1, SHIFT, 27}, },
00103             {{-1, REDUCE, 6}, },
00104             {{-1, ERROR, 38}, {34, SHIFT, 74}, },
00105             {{-1, ERROR, 39}, {34, SHIFT, 75}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, },
00106             {{-1, ERROR, 40}, {71, SHIFT, 77}, },
00107             {{-1, REDUCE, 10}, },
00108             {{-1, ERROR, 42}, {34, SHIFT, 78}, },
00109             {{-1, REDUCE, 1}, },
00110             {{-1, ERROR, 44}, {50, SHIFT, 45}, {71, SHIFT, 46}, },
00111             {{-1, ERROR, 45}, {71, SHIFT, 81}, },
00112             {{-1, ERROR, 46}, {1, SHIFT, 82}, },
00113             {{-1, REDUCE, 70}, },
00114             {{-1, ERROR, 48}, {34, SHIFT, 83}, {50, SHIFT, 45}, },
00115             {{-1, ERROR, 49}, {50, SHIFT, 45}, {71, SHIFT, 46}, },
00116             {{-1, ERROR, 50}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00117             {{-1, REDUCE, 175}, },
00118             {{-1, REDUCE, 26}, },
00119             {{-1, ERROR, 53}, {71, SHIFT, 116}, {72, SHIFT, 117}, },
00120             {{-1, REDUCE, 40}, {37, SHIFT, 119}, {57, SHIFT, 120}, },
00121             {{-1, ERROR, 55}, {6, SHIFT, 121}, },
00122             {{-1, ERROR, 56}, {2, SHIFT, 122}, },
00123             {{-1, ERROR, 57}, {6, SHIFT, 123}, },
00124             {{-1, ERROR, 58}, {2, SHIFT, 124}, },
00125             {{-1, ERROR, 59}, {2, SHIFT, 125}, },
00126             {{-1, REDUCE, 45}, },
00127             {{-1, REDUCE, 44}, },
00128             {{-1, ERROR, 62}, {0, SHIFT, 126}, {28, SHIFT, 127}, },
00129             {{-1, ERROR, 63}, {0, SHIFT, 129}, },
00130             {{-1, ERROR, 64}, {0, SHIFT, 130}, },
00131             {{-1, ERROR, 65}, {0, SHIFT, 131}, },
00132             {{-1, ERROR, 66}, {0, SHIFT, 132}, },
00133             {{-1, ERROR, 67}, {71, SHIFT, 133}, },
00134             {{-1, ERROR, 68}, {71, SHIFT, 134}, },
00135             {{-1, ERROR, 69}, {34, SHIFT, 135}, },
00136             {{-1, ERROR, 70}, {34, SHIFT, 136}, {48, SHIFT, 8}, {49, SHIFT, 9}, {70, SHIFT, 10}, },
00137             {{-1, ERROR, 71}, {71, SHIFT, 138}, },
00138             {{-1, ERROR, 72}, {34, SHIFT, 139}, },
00139             {{-1, ERROR, 73}, {0, SHIFT, 140}, },
00140             {{-1, ERROR, 74}, {71, SHIFT, 141}, },
00141             {{-1, ERROR, 75}, {71, SHIFT, 142}, },
00142             {{-1, ERROR, 76}, {34, SHIFT, 143}, },
00143             {{-1, ERROR, 77}, {0, SHIFT, 144}, },
00144             {{-1, ERROR, 78}, {71, SHIFT, 145}, },
00145             {{-1, ERROR, 79}, {34, SHIFT, 146}, {50, SHIFT, 45}, },
00146             {{-1, ERROR, 80}, {50, SHIFT, 45}, {71, SHIFT, 46}, },
00147             {{-1, ERROR, 81}, {1, SHIFT, 149}, },
00148             {{-1, ERROR, 82}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {44, SHIFT, 58}, {47, SHIFT, 59}, {71, SHIFT, 60}, },
00149             {{-1, ERROR, 83}, {71, SHIFT, 150}, },
00150             {{-1, REDUCE, 74}, },
00151             {{-1, ERROR, 85}, {34, SHIFT, 151}, {50, SHIFT, 45}, },
00152             {{-1, REDUCE, 69}, },
00153             {{-1, ERROR, 87}, {34, SHIFT, 153}, {50, SHIFT, 45}, },
00154             {{-1, ERROR, 88}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00155             {{-1, ERROR, 89}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00156             {{-1, ERROR, 90}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00157             {{-1, ERROR, 91}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00158             {{-1, REDUCE, 65}, },
00159             {{-1, REDUCE, 64}, },
00160             {{-1, ERROR, 94}, {71, SHIFT, 159}, },
00161             {{-1, REDUCE, 62}, },
00162             {{-1, REDUCE, 164}, },
00163             {{-1, ERROR, 97}, {4, SHIFT, 160}, },
00164             {{-1, REDUCE, 165}, },
00165             {{-1, REDUCE, 166}, },
00166             {{-1, REDUCE, 61}, {1, SHIFT, 161}, {9, SHIFT, 162}, },
00167             {{-1, REDUCE, 59}, },
00168             {{-1, REDUCE, 120}, },
00169             {{-1, REDUCE, 60}, },
00170             {{-1, ERROR, 104}, {0, SHIFT, 163}, },
00171             {{-1, REDUCE, 96}, {19, SHIFT, 164}, },
00172             {{-1, REDUCE, 97}, {18, SHIFT, 165}, },
00173             {{-1, REDUCE, 99}, {20, SHIFT, 166}, {23, SHIFT, 167}, },
00174             {{-1, REDUCE, 101}, {24, SHIFT, 168}, {25, SHIFT, 169}, {26, SHIFT, 170}, {27, SHIFT, 171}, },
00175             {{-1, REDUCE, 104}, {13, SHIFT, 172}, {14, SHIFT, 173}, },
00176             {{-1, REDUCE, 109}, {15, SHIFT, 174}, {16, SHIFT, 175}, {17, SHIFT, 176}, },
00177             {{-1, REDUCE, 112}, },
00178             {{-1, REDUCE, 116}, {6, SHIFT, 177}, {11, SHIFT, 178}, {41, SHIFT, 179}, },
00179             {{-1, REDUCE, 121}, },
00180             {{-1, ERROR, 114}, {4, SHIFT, 180}, },
00181             {{-1, REDUCE, 122}, },
00182             {{-1, REDUCE, 52}, },
00183             {{-1, REDUCE, 51}, },
00184             {{-1, ERROR, 118}, {12, SHIFT, 181}, },
00185             {{-1, REDUCE, 42}, },
00186             {{-1, REDUCE, 41}, {37, SHIFT, 182}, },
00187             {{-1, ERROR, 121}, {71, SHIFT, 116}, {72, SHIFT, 117}, },
00188             {{-1, ERROR, 122}, {3, SHIFT, 184}, {71, SHIFT, 185}, },
00189             {{-1, ERROR, 123}, {71, SHIFT, 116}, {72, SHIFT, 117}, },
00190             {{-1, ERROR, 124}, {71, SHIFT, 189}, },
00191             {{-1, ERROR, 125}, {71, SHIFT, 190}, },
00192             {{-1, REDUCE, 56}, },
00193             {{-1, ERROR, 127}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {71, SHIFT, 192}, {72, SHIFT, 101}, },
00194             {{-1, ERROR, 128}, {0, SHIFT, 194}, },
00195             {{-1, REDUCE, 23}, },
00196             {{-1, REDUCE, 24}, },
00197             {{-1, REDUCE, 15}, },
00198             {{-1, REDUCE, 2}, },
00199             {{-1, ERROR, 133}, {0, SHIFT, 195}, },
00200             {{-1, ERROR, 134}, {0, SHIFT, 196}, },
00201             {{-1, ERROR, 135}, {71, SHIFT, 197}, },
00202             {{-1, ERROR, 136}, {71, SHIFT, 198}, },
00203             {{-1, ERROR, 137}, {34, SHIFT, 199}, },
00204             {{-1, ERROR, 138}, {0, SHIFT, 200}, },
00205             {{-1, ERROR, 139}, {71, SHIFT, 201}, },
00206             {{-1, REDUCE, 5}, },
00207             {{-1, ERROR, 141}, {0, SHIFT, 202}, },
00208             {{-1, ERROR, 142}, {0, SHIFT, 203}, },
00209             {{-1, ERROR, 143}, {71, SHIFT, 204}, },
00210             {{-1, REDUCE, 9}, },
00211             {{-1, ERROR, 145}, {0, SHIFT, 205}, },
00212             {{-1, ERROR, 146}, {71, SHIFT, 206}, },
00213             {{-1, ERROR, 147}, {34, SHIFT, 207}, {50, SHIFT, 45}, },
00214             {{-1, ERROR, 148}, {34, SHIFT, 208}, {50, SHIFT, 45}, },
00215             {{-1, REDUCE, 78}, {51, SHIFT, 210}, {52, SHIFT, 211}, },
00216             {{-1, ERROR, 150}, {0, SHIFT, 215}, },
00217             {{-1, ERROR, 151}, {71, SHIFT, 216}, },
00218             {{-1, REDUCE, 73}, },
00219             {{-1, ERROR, 153}, {71, SHIFT, 217}, },
00220             {{-1, ERROR, 154}, {34, SHIFT, 218}, {50, SHIFT, 45}, },
00221             {{-1, ERROR, 155}, {5, SHIFT, 219}, },
00222             {{-1, REDUCE, 117}, },
00223             {{-1, REDUCE, 118}, },
00224             {{-1, REDUCE, 119}, },
00225             {{-1, REDUCE, 63}, },
00226             {{-1, ERROR, 160}, {71, SHIFT, 220}, },
00227             {{-1, ERROR, 161}, {71, SHIFT, 221}, },
00228             {{-1, ERROR, 162}, {71, SHIFT, 222}, },
00229             {{-1, REDUCE, 177}, },
00230             {{-1, ERROR, 164}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00231             {{-1, ERROR, 165}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00232             {{-1, ERROR, 166}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00233             {{-1, ERROR, 167}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00234             {{-1, ERROR, 168}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00235             {{-1, ERROR, 169}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00236             {{-1, ERROR, 170}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00237             {{-1, ERROR, 171}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00238             {{-1, ERROR, 172}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00239             {{-1, ERROR, 173}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00240             {{-1, ERROR, 174}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00241             {{-1, ERROR, 175}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00242             {{-1, ERROR, 176}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00243             {{-1, ERROR, 177}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00244             {{-1, ERROR, 178}, {40, SHIFT, 237}, {71, SHIFT, 238}, },
00245             {{-1, ERROR, 179}, {71, SHIFT, 239}, },
00246             {{-1, ERROR, 180}, {71, SHIFT, 240}, },
00247             {{-1, ERROR, 181}, {71, SHIFT, 116}, {72, SHIFT, 117}, },
00248             {{-1, REDUCE, 43}, },
00249             {{-1, ERROR, 183}, {7, SHIFT, 243}, },
00250             {{-1, REDUCE, 31}, },
00251             {{-1, ERROR, 185}, {1, SHIFT, 244}, },
00252             {{-1, REDUCE, 34}, },
00253             {{-1, ERROR, 187}, {3, SHIFT, 245}, {71, SHIFT, 185}, },
00254             {{-1, ERROR, 188}, {7, SHIFT, 247}, },
00255             {{-1, ERROR, 189}, {3, SHIFT, 248}, {10, SHIFT, 249}, },
00256             {{-1, REDUCE, 46}, {21, SHIFT, 252}, },
00257             {{-1, ERROR, 191}, {3, SHIFT, 253}, {10, SHIFT, 254}, },
00258             {{-1, REDUCE, 61}, },
00259             {{-1, REDUCE, 58}, },
00260             {{-1, REDUCE, 57}, },
00261             {{-1, REDUCE, 16}, },
00262             {{-1, REDUCE, 8}, },
00263             {{-1, ERROR, 197}, {0, SHIFT, 257}, },
00264             {{-1, ERROR, 198}, {0, SHIFT, 258}, },
00265             {{-1, ERROR, 199}, {71, SHIFT, 259}, },
00266             {{-1, REDUCE, 12}, },
00267             {{-1, ERROR, 201}, {0, SHIFT, 260}, },
00268             {{-1, REDUCE, 17}, },
00269             {{-1, REDUCE, 13}, },
00270             {{-1, ERROR, 204}, {0, SHIFT, 261}, },
00271             {{-1, REDUCE, 19}, },
00272             {{-1, ERROR, 206}, {0, SHIFT, 262}, },
00273             {{-1, ERROR, 207}, {71, SHIFT, 263}, },
00274             {{-1, ERROR, 208}, {71, SHIFT, 264}, },
00275             {{-1, ERROR, 209}, {34, SHIFT, 265}, {50, SHIFT, 45}, },
00276             {{-1, ERROR, 210}, {2, SHIFT, 266}, },
00277             {{-1, ERROR, 211}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00278             {{-1, REDUCE, 82}, },
00279             {{-1, REDUCE, 79}, {52, SHIFT, 211}, },
00280             {{-1, REDUCE, 80}, {52, SHIFT, 211}, },
00281             {{-1, REDUCE, 66}, },
00282             {{-1, ERROR, 216}, {0, SHIFT, 270}, },
00283             {{-1, ERROR, 217}, {0, SHIFT, 271}, },
00284             {{-1, ERROR, 218}, {71, SHIFT, 272}, },
00285             {{-1, REDUCE, 128}, },
00286             {{-1, ERROR, 220}, {5, SHIFT, 273}, },
00287             {{-1, REDUCE, 127}, },
00288             {{-1, REDUCE, 172}, },
00289             {{-1, REDUCE, 98}, {18, SHIFT, 165}, },
00290             {{-1, REDUCE, 100}, {20, SHIFT, 166}, {23, SHIFT, 167}, },
00291             {{-1, REDUCE, 102}, {24, SHIFT, 168}, {25, SHIFT, 169}, {26, SHIFT, 170}, {27, SHIFT, 171}, },
00292             {{-1, REDUCE, 103}, {24, SHIFT, 168}, {25, SHIFT, 169}, {26, SHIFT, 170}, {27, SHIFT, 171}, },
00293             {{-1, REDUCE, 105}, {13, SHIFT, 172}, {14, SHIFT, 173}, },
00294             {{-1, REDUCE, 107}, {13, SHIFT, 172}, {14, SHIFT, 173}, },
00295             {{-1, REDUCE, 106}, {13, SHIFT, 172}, {14, SHIFT, 173}, },
00296             {{-1, REDUCE, 108}, {13, SHIFT, 172}, {14, SHIFT, 173}, },
00297             {{-1, REDUCE, 110}, {15, SHIFT, 174}, {16, SHIFT, 175}, {17, SHIFT, 176}, },
00298             {{-1, REDUCE, 111}, {15, SHIFT, 174}, {16, SHIFT, 175}, {17, SHIFT, 176}, },
00299             {{-1, REDUCE, 113}, },
00300             {{-1, REDUCE, 114}, },
00301             {{-1, REDUCE, 115}, },
00302             {{-1, ERROR, 236}, {7, SHIFT, 274}, },
00303             {{-1, REDUCE, 125}, },
00304             {{-1, REDUCE, 123}, },
00305             {{-1, REDUCE, 126}, },
00306             {{-1, REDUCE, 129}, },
00307             {{-1, ERROR, 241}, {5, SHIFT, 275}, {6, SHIFT, 276}, {11, SHIFT, 277}, },
00308             {{-1, REDUCE, 25}, },
00309             {{-1, ERROR, 243}, {39, SHIFT, 278}, },
00310             {{-1, ERROR, 244}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {44, SHIFT, 58}, {47, SHIFT, 59}, {71, SHIFT, 60}, },
00311             {{-1, REDUCE, 32}, },
00312             {{-1, REDUCE, 33}, },
00313             {{-1, ERROR, 247}, {39, SHIFT, 280}, },
00314             {{-1, REDUCE, 36}, },
00315             {{-1, ERROR, 249}, {71, SHIFT, 281}, },
00316             {{-1, REDUCE, 39}, },
00317             {{-1, ERROR, 251}, {3, SHIFT, 282}, {10, SHIFT, 249}, },
00318             {{-1, ERROR, 252}, {72, SHIFT, 284}, },
00319             {{-1, REDUCE, 27}, },
00320             {{-1, ERROR, 254}, {71, SHIFT, 190}, },
00321             {{-1, REDUCE, 30}, },
00322             {{-1, ERROR, 256}, {3, SHIFT, 286}, {10, SHIFT, 254}, },
00323             {{-1, REDUCE, 18}, },
00324             {{-1, REDUCE, 14}, },
00325             {{-1, ERROR, 259}, {0, SHIFT, 288}, },
00326             {{-1, REDUCE, 20}, },
00327             {{-1, REDUCE, 21}, },
00328             {{-1, REDUCE, 67}, },
00329             {{-1, ERROR, 263}, {0, SHIFT, 289}, },
00330             {{-1, ERROR, 264}, {0, SHIFT, 290}, },
00331             {{-1, ERROR, 265}, {71, SHIFT, 291}, },
00332             {{-1, ERROR, 266}, {3, SHIFT, 292}, {71, SHIFT, 293}, },
00333             {{-1, ERROR, 267}, {53, SHIFT, 294}, },
00334             {{-1, REDUCE, 83}, {52, SHIFT, 211}, },
00335             {{-1, REDUCE, 81}, },
00336             {{-1, REDUCE, 72}, },
00337             {{-1, REDUCE, 68}, },
00338             {{-1, ERROR, 272}, {0, SHIFT, 295}, },
00339             {{-1, REDUCE, 171}, },
00340             {{-1, REDUCE, 124}, },
00341             {{-1, REDUCE, 163}, },
00342             {{-1, ERROR, 276}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00343             {{-1, ERROR, 277}, {40, SHIFT, 297}, {71, SHIFT, 298}, },
00344             {{-1, ERROR, 278}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {44, SHIFT, 58}, {47, SHIFT, 59}, {71, SHIFT, 60}, },
00345             {{-1, ERROR, 279}, {0, SHIFT, 300}, },
00346             {{-1, ERROR, 280}, {30, SHIFT, 52}, {35, SHIFT, 53}, {36, SHIFT, 54}, {38, SHIFT, 55}, {42, SHIFT, 56}, {44, SHIFT, 58}, {47, SHIFT, 59}, {71, SHIFT, 60}, },
00347             {{-1, REDUCE, 50}, },
00348             {{-1, REDUCE, 37}, },
00349             {{-1, REDUCE, 38}, },
00350             {{-1, REDUCE, 47}, },
00351             {{-1, REDUCE, 48}, },
00352             {{-1, REDUCE, 28}, },
00353             {{-1, REDUCE, 29}, },
00354             {{-1, REDUCE, 22}, },
00355             {{-1, REDUCE, 75}, },
00356             {{-1, REDUCE, 71}, },
00357             {{-1, ERROR, 291}, {0, SHIFT, 302}, },
00358             {{-1, REDUCE, 90}, },
00359             {{-1, ERROR, 293}, {3, SHIFT, 303}, {10, SHIFT, 304}, },
00360             {{-1, ERROR, 294}, {2, SHIFT, 307}, {54, SHIFT, 308}, },
00361             {{-1, REDUCE, 76}, },
00362             {{-1, ERROR, 296}, {7, SHIFT, 309}, },
00363             {{-1, REDUCE, 132}, },
00364             {{-1, REDUCE, 130}, },
00365             {{-1, REDUCE, 35}, },
00366             {{-1, REDUCE, 49}, },
00367             {{-1, ERROR, 301}, {0, SHIFT, 310}, },
00368             {{-1, REDUCE, 77}, },
00369             {{-1, REDUCE, 91}, },
00370             {{-1, ERROR, 304}, {71, SHIFT, 311}, },
00371             {{-1, REDUCE, 94}, },
00372             {{-1, ERROR, 306}, {3, SHIFT, 312}, {10, SHIFT, 304}, },
00373             {{-1, ERROR, 307}, {3, SHIFT, 314}, {29, SHIFT, 315}, {36, SHIFT, 316}, {56, SHIFT, 317}, {57, SHIFT, 318}, {58, SHIFT, 319}, {59, SHIFT, 320}, {60, SHIFT, 321}, {62, SHIFT, 322}, {63, SHIFT, 323}, {64, SHIFT, 324}, {69, SHIFT, 325}, {71, SHIFT, 240}, },
00374             {{-1, ERROR, 308}, {2, SHIFT, 338}, },
00375             {{-1, REDUCE, 131}, },
00376             {{-1, REDUCE, 55}, },
00377             {{-1, REDUCE, 95}, },
00378             {{-1, REDUCE, 92}, },
00379             {{-1, REDUCE, 93}, },
00380             {{-1, ERROR, 314}, {55, SHIFT, 339}, },
00381             {{-1, ERROR, 315}, {4, SHIFT, 340}, },
00382             {{-1, REDUCE, 157}, },
00383             {{-1, REDUCE, 158}, },
00384             {{-1, REDUCE, 159}, },
00385             {{-1, REDUCE, 160}, },
00386             {{-1, REDUCE, 161}, },
00387             {{-1, REDUCE, 162}, },
00388             {{-1, REDUCE, 168}, },
00389             {{-1, REDUCE, 169}, },
00390             {{-1, REDUCE, 170}, },
00391             {{-1, ERROR, 325}, {4, SHIFT, 341}, },
00392             {{-1, ERROR, 326}, {6, SHIFT, 276}, {11, SHIFT, 277}, {28, SHIFT, 342}, },
00393             {{-1, REDUCE, 88}, },
00394             {{-1, REDUCE, 133}, },
00395             {{-1, REDUCE, 134}, },
00396             {{-1, REDUCE, 135}, },
00397             {{-1, REDUCE, 136}, },
00398             {{-1, REDUCE, 137}, },
00399             {{-1, REDUCE, 138}, },
00400             {{-1, ERROR, 334}, {4, SHIFT, 343}, },
00401             {{-1, REDUCE, 139}, },
00402             {{-1, ERROR, 336}, {4, SHIFT, 344}, },
00403             {{-1, ERROR, 337}, {3, SHIFT, 345}, {29, SHIFT, 315}, {36, SHIFT, 316}, {56, SHIFT, 317}, {57, SHIFT, 318}, {58, SHIFT, 319}, {59, SHIFT, 320}, {60, SHIFT, 321}, {62, SHIFT, 322}, {63, SHIFT, 323}, {64, SHIFT, 324}, {69, SHIFT, 325}, {71, SHIFT, 240}, },
00404             {{-1, ERROR, 338}, {3, SHIFT, 347}, {29, SHIFT, 315}, {36, SHIFT, 316}, {56, SHIFT, 317}, {57, SHIFT, 318}, {58, SHIFT, 319}, {59, SHIFT, 320}, {60, SHIFT, 321}, {62, SHIFT, 322}, {63, SHIFT, 323}, {64, SHIFT, 324}, {69, SHIFT, 325}, {71, SHIFT, 240}, },
00405             {{-1, ERROR, 339}, {71, SHIFT, 349}, },
00406             {{-1, ERROR, 340}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00407             {{-1, ERROR, 341}, {5, SHIFT, 351}, {71, SHIFT, 352}, {73, SHIFT, 353}, },
00408             {{-1, ERROR, 342}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {45, SHIFT, 356}, {46, SHIFT, 95}, {61, SHIFT, 96}, {65, SHIFT, 357}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00409             {{-1, ERROR, 343}, {71, SHIFT, 240}, },
00410             {{-1, ERROR, 344}, {71, SHIFT, 360}, },
00411             {{-1, ERROR, 345}, {55, SHIFT, 361}, },
00412             {{-1, REDUCE, 87}, },
00413             {{-1, ERROR, 347}, {55, SHIFT, 362}, },
00414             {{-1, ERROR, 348}, {3, SHIFT, 363}, {29, SHIFT, 315}, {36, SHIFT, 316}, {56, SHIFT, 317}, {57, SHIFT, 318}, {58, SHIFT, 319}, {59, SHIFT, 320}, {60, SHIFT, 321}, {62, SHIFT, 322}, {63, SHIFT, 323}, {64, SHIFT, 324}, {69, SHIFT, 325}, {71, SHIFT, 240}, },
00415             {{-1, ERROR, 349}, {0, SHIFT, 364}, },
00416             {{-1, ERROR, 350}, {5, SHIFT, 365}, },
00417             {{-1, ERROR, 351}, {0, SHIFT, 366}, },
00418             {{-1, REDUCE, 146}, },
00419             {{-1, REDUCE, 145}, },
00420             {{-1, ERROR, 354}, {5, SHIFT, 367}, },
00421             {{-1, REDUCE, 143}, {10, SHIFT, 368}, },
00422             {{-1, ERROR, 356}, {71, SHIFT, 369}, },
00423             {{-1, ERROR, 357}, {4, SHIFT, 370}, },
00424             {{-1, ERROR, 358}, {0, SHIFT, 371}, },
00425             {{-1, ERROR, 359}, {5, SHIFT, 372}, {6, SHIFT, 276}, {11, SHIFT, 277}, },
00426             {{-1, ERROR, 360}, {5, SHIFT, 373}, },
00427             {{-1, ERROR, 361}, {71, SHIFT, 374}, },
00428             {{-1, ERROR, 362}, {71, SHIFT, 375}, },
00429             {{-1, ERROR, 363}, {55, SHIFT, 376}, },
00430             {{-1, REDUCE, 84}, },
00431             {{-1, ERROR, 365}, {0, SHIFT, 377}, },
00432             {{-1, REDUCE, 141}, },
00433             {{-1, ERROR, 367}, {0, SHIFT, 378}, },
00434             {{-1, ERROR, 368}, {71, SHIFT, 352}, {73, SHIFT, 353}, },
00435             {{-1, ERROR, 369}, {0, SHIFT, 380}, {6, SHIFT, 381}, },
00436             {{-1, ERROR, 370}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {71, SHIFT, 192}, {72, SHIFT, 101}, },
00437             {{-1, REDUCE, 140}, },
00438             {{-1, ERROR, 372}, {0, SHIFT, 384}, },
00439             {{-1, ERROR, 373}, {0, SHIFT, 385}, },
00440             {{-1, ERROR, 374}, {0, SHIFT, 386}, },
00441             {{-1, ERROR, 375}, {0, SHIFT, 387}, },
00442             {{-1, ERROR, 376}, {71, SHIFT, 388}, },
00443             {{-1, REDUCE, 147}, },
00444             {{-1, REDUCE, 142}, },
00445             {{-1, REDUCE, 144}, },
00446             {{-1, REDUCE, 152}, },
00447             {{-1, ERROR, 381}, {4, SHIFT, 88}, {13, SHIFT, 89}, {14, SHIFT, 90}, {22, SHIFT, 91}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {61, SHIFT, 96}, {66, SHIFT, 97}, {67, SHIFT, 98}, {68, SHIFT, 99}, {71, SHIFT, 100}, {72, SHIFT, 101}, },
00448             {{-1, ERROR, 382}, {0, SHIFT, 390}, },
00449             {{-1, ERROR, 383}, {5, SHIFT, 391}, {10, SHIFT, 392}, },
00450             {{-1, REDUCE, 156}, },
00451             {{-1, REDUCE, 167}, },
00452             {{-1, REDUCE, 86}, },
00453             {{-1, REDUCE, 85}, },
00454             {{-1, ERROR, 388}, {0, SHIFT, 395}, },
00455             {{-1, ERROR, 389}, {7, SHIFT, 396}, },
00456             {{-1, REDUCE, 153}, },
00457             {{-1, ERROR, 391}, {0, SHIFT, 397}, },
00458             {{-1, ERROR, 392}, {31, SHIFT, 92}, {32, SHIFT, 93}, {44, SHIFT, 94}, {46, SHIFT, 95}, {71, SHIFT, 192}, {72, SHIFT, 101}, },
00459             {{-1, REDUCE, 151}, },
00460             {{-1, ERROR, 394}, {5, SHIFT, 399}, {10, SHIFT, 392}, },
00461             {{-1, REDUCE, 89}, },
00462             {{-1, REDUCE, 154}, },
00463             {{-1, REDUCE, 148}, },
00464             {{-1, REDUCE, 155}, },
00465             {{-1, ERROR, 399}, {0, SHIFT, 401}, },
00466             {{-1, REDUCE, 150}, },
00467             {{-1, REDUCE, 149}, },
00468         };*/
00469     private static int[][][] gotoTable;
00470 /*      {
00471             {{-1, 2}, },
00472             {{-1, 3}, },
00473             {{-1, 12}, {18, 31}, },
00474             {{-1, 61}, {28, 64}, },
00475             {{-1, 62}, {244, 279}, {278, 299}, {280, 301}, },
00476             {{-1, 191}, {254, 285}, },
00477             {{-1, 255}, {256, 287}, },
00478             {{-1, 186}, {187, 246}, },
00479             {{-1, 250}, {251, 283}, },
00480             {{-1, 118}, {121, 183}, {123, 188}, {181, 242}, },
00481             {{-1, 13}, {19, 37}, {33, 37}, },
00482             {{-1, 14}, },
00483             {{-1, 15}, {23, 47}, {44, 47}, {49, 86}, {80, 86}, },
00484             {{-1, 128}, },
00485             {{-1, 102}, {127, 193}, {370, 383}, {392, 398}, },
00486             {{-1, 103}, },
00487             {{-1, 16}, {20, 41}, {34, 41}, {39, 41}, {70, 41}, },
00488             {{-1, 84}, {23, 48}, {44, 79}, {49, 87}, {80, 148}, {85, 152}, {147, 152}, {154, 152}, {209, 152}, },
00489             {{-1, 212}, {214, 269}, {268, 269}, },
00490             {{-1, 213}, },
00491             {{-1, 305}, {306, 313}, },
00492             {{-1, 104}, {88, 155}, {177, 236}, {211, 267}, {276, 296}, {340, 350}, {342, 358}, {381, 389}, },
00493             {{-1, 105}, },
00494             {{-1, 106}, {164, 223}, },
00495             {{-1, 107}, {165, 224}, },
00496             {{-1, 108}, {166, 225}, {167, 226}, },
00497             {{-1, 109}, {168, 227}, {169, 228}, {170, 229}, {171, 230}, },
00498             {{-1, 110}, {172, 231}, {173, 232}, },
00499             {{-1, 111}, {89, 156}, {90, 157}, {91, 158}, {174, 233}, {175, 234}, {176, 235}, },
00500             {{-1, 112}, },
00501             {{-1, 326}, {180, 241}, {343, 359}, },
00502             {{-1, 327}, {337, 346}, {348, 346}, },
00503             {{-1, 328}, },
00504             {{-1, 329}, },
00505             {{-1, 354}, {368, 379}, },
00506             {{-1, 355}, },
00507             {{-1, 330}, },
00508             {{-1, 331}, },
00509             {{-1, 332}, },
00510             {{-1, 382}, },
00511             {{-1, 393}, {394, 400}, },
00512             {{-1, 333}, },
00513             {{-1, 334}, },
00514             {{-1, 113}, },
00515             {{-1, 114}, },
00516             {{-1, 335}, },
00517             {{-1, 336}, },
00518             {{-1, 115}, },
00519             {{-1, 17}, {18, 32}, {19, 38}, {20, 42}, {33, 69}, {34, 72}, {39, 76}, {70, 137}, },
00520             {{-1, 25}, {26, 51}, },
00521             {{-1, 18}, },
00522             {{-1, 19}, {18, 33}, },
00523             {{-1, 20}, {18, 34}, {19, 39}, {33, 70}, },
00524             {{-1, 256}, },
00525             {{-1, 187}, },
00526             {{-1, 251}, },
00527             {{-1, 49}, {44, 80}, },
00528             {{-1, 85}, {79, 147}, {87, 154}, {148, 209}, },
00529             {{-1, 214}, {213, 268}, },
00530             {{-1, 337}, {338, 348}, },
00531             {{-1, 306}, },
00532             {{-1, 394}, },
00533             {{-1, 26}, },
00534         };*/
00535     private static String[] errorMessages;
00536 /*      {
00537             "TProcess expected.",
00538             "TId expected.",
00539             "EOF expected.",
00540             "TLparen expected.",
00541             "TRparen expected.",
00542             "TEnd TMain TThread TPredicates TId expected.",
00543             "TThread expected.",
00544             "TEnd TId expected.",
00545             "TColon TEquals expected.",
00546             "TEnd TMain TThread TPredicates expected.",
00547             "TEnd expected.",
00548             "TSemicolon expected.",
00549             "TLoc TId expected.",
00550             "TEquals expected.",
00551             "TBoolean TRange TLock TArray TRecord TCollection TRef TEnum TId expected.",
00552             "TBoolean TRange TLock TArray TRecord TRef TEnum TInt expected.",
00553             "TColon expected.",
00554             "TEnd TLoc expected.",
00555             "TLparen TPlus TMinus TNot TTrue TFalse TRef TNull TLockavailable TThreadterminated THaslock TWasnotified TId TInt expected.",
00556             "TSemicolon TAssign expected.",
00557             "TId TInt expected.",
00558             "TSemicolon TAssign TReentrant TWait expected.",
00559             "TLbrack expected.",
00560             "TLbrace expected.",
00561             "TBoolean TRange TLock TArray TRecord TRef TEnum TId expected.",
00562             "TSemicolon TRparen TLbrack TRbrack TComma TDot TPlus TMinus TMult TDiv TMod TAnd TOr TEq TNoteq TLt TGt TLe TGe TInstanceof TDo expected.",
00563             "TSemicolon TColon TRparen TLbrack TRbrack TAt TDot TPlus TMinus TMult TDiv TMod TAnd TOr TEq TNoteq TLt TGt TLe TGe TInstanceof TDo expected.",
00564             "TSemicolon TRparen TLbrack TRbrack TDot TPlus TMinus TMult TDiv TMod TAnd TOr TEq TNoteq TLt TGt TLe TGe TInstanceof TDo expected.",
00565             "TSemicolon TRparen TRbrack TOr TDo expected.",
00566             "TSemicolon TRparen TRbrack TAnd TOr TDo expected.",
00567             "TSemicolon TRparen TRbrack TAnd TOr TEq TNoteq TDo expected.",
00568             "TSemicolon TRparen TRbrack TAnd TOr TEq TNoteq TLt TGt TLe TGe TDo expected.",
00569             "TSemicolon TRparen TRbrack TPlus TMinus TAnd TOr TEq TNoteq TLt TGt TLe TGe TDo expected.",
00570             "TSemicolon TRparen TRbrack TPlus TMinus TMult TDiv TMod TAnd TOr TEq TNoteq TLt TGt TLe TGe TDo expected.",
00571             "TSemicolon TRbrack TDotdot TAssign expected.",
00572             "TDotdot expected.",
00573             "TSemicolon TAssign TReentrant expected.",
00574             "TRbrace TId expected.",
00575             "TEnd TMain TThread TLoc TPredicates TId expected.",
00576             "TTrue TFalse TRef TNull TId TInt expected.",
00577             "TEnd TLoc TLive TWhen expected.",
00578             "TLength TId expected.",
00579             "TRbrack expected.",
00580             "TRbrace TComma expected.",
00581             "TRbrace TComma TEquals expected.",
00582             "TSemicolon TRparen TComma expected.",
00583             "TEnd TLoc TWhen expected.",
00584             "TRparen TLbrack TDot TAssign expected.",
00585             "TRparen TLbrack TDot expected.",
00586             "TOf expected.",
00587             "TInt expected.",
00588             "TDo expected.",
00589             "TLbrace TInvisible expected.",
00590             "TRbrace TAssert TLock TUnlock TWait TUnwait TNotify TNotifyall TStart TJoin TExit TPrintln TId expected.",
00591             "TGoto expected.",
00592             "TLbrack TDot TAssign expected.",
00593             "TRparen TId TString expected.",
00594             "TLparen TPlus TMinus TNot TTrue TFalse TRef TNew TNull TLockavailable TChoose TThreadterminated THaslock TWasnotified TId TInt expected.",
00595             "TRparen TComma expected.",
00596             "TId TString expected.",
00597             "TSemicolon TLbrack expected.",
00598         };*/
00599     private static int[] errors;
00600 /*      {
00601             0, 1, 2, 2, 3, 4, 5, 1, 6, 1, 7, 8, 5, 5, 5, 5, 9, 10, 5, 5, 9, 11, 1, 12, 13, 7, 7, 14, 15, 1, 1, 5, 10, 5, 9, 1, 16, 5, 10, 9, 1, 9, 10, 2, 12, 1, 16, 12, 17, 12, 18, 7, 19, 20, 21, 22, 23, 22, 23, 23, 19, 19, 19, 11, 11, 11, 11, 1, 1, 10, 9, 1, 10, 11, 1, 1, 10, 11, 1, 17, 12, 16, 24, 1, 17, 17, 12, 17, 18, 18, 18, 18, 25, 25, 1, 25, 3, 3, 3, 3, 26, 25, 27, 25, 11, 28, 29, 30, 31, 32, 33, 33, 27, 27, 3, 27, 34, 34, 35, 19, 36, 20, 37, 20, 1, 1, 38, 39, 11, 5, 5, 2, 2, 11, 11, 1, 1, 10, 11, 1, 2, 11, 11, 1, 2, 11, 1, 17, 17, 40, 11, 1, 17, 1, 17, 4, 33, 33, 33, 25, 1, 1, 1, 7, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 41, 1, 1, 20, 19, 42, 19, 16, 37, 37, 42, 43, 44, 43, 45, 11, 38, 2, 2, 11, 11, 1, 2, 11, 2, 2, 11, 2, 11, 1, 1, 17, 23, 18, 46, 46, 46, 9, 11, 11, 1, 27, 4, 27, 27, 29, 30, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 33, 42, 27, 27, 27, 47, 48, 19, 49, 24, 19, 37, 49, 19, 1, 43, 43, 50, 19, 1, 43, 43, 2, 2, 11, 2, 2, 9, 11, 11, 1, 37, 51, 46, 46, 9, 9, 11, 27, 27, 27, 18, 41, 24, 11, 24, 43, 19, 43, 43, 43, 19, 43, 2, 9, 9, 11, 46, 43, 52, 9, 42, 47, 47, 19, 37, 11, 9, 46, 1, 43, 43, 53, 23, 47, 5, 43, 46, 43, 54, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 53, 53, 53, 53, 53, 53, 53, 3, 53, 3, 53, 53, 1, 18, 56, 57, 1, 1, 54, 53, 54, 53, 11, 4, 11, 58, 58, 4, 58, 1, 3, 11, 48, 4, 1, 1, 54, 46, 11, 53, 11, 59, 60, 39, 53, 11, 11, 11, 11, 1, 53, 53, 4, 53, 18, 11, 58, 53, 53, 46, 46, 11, 42, 53, 11, 39, 58, 58, 46, 11, 53, 58, 11, 58, 53, 
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                 // read actionTable
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                 // read gotoTable
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                 // read errorMessages
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                 // read errors
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 }

Generated at Thu Feb 7 06:51:13 2002 for Bandera by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001