1 /* Generated By:JavaCC: Do not edit this line. PHPParser.java */
 
   4 import org.eclipse.core.resources.IFile;
 
   5 import org.eclipse.core.resources.IMarker;
 
   6 import org.eclipse.core.runtime.CoreException;
 
   7 import org.eclipse.ui.texteditor.MarkerUtilities;
 
   8 import org.eclipse.jface.preference.IPreferenceStore;
 
  10 import java.util.Hashtable;
 
  11 import java.util.ArrayList;
 
  12 import java.io.StringReader;
 
  14 import java.text.MessageFormat;
 
  16 import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
 
  17 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 
  18 import net.sourceforge.phpdt.internal.compiler.ast.*;
 
  19 import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
 
  20 import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
 
  21 import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
 
  22 import net.sourceforge.phpdt.internal.corext.Assert;
 
  26  * This php parser is inspired by the Java 1.2 grammar example
 
  27  * given with JavaCC. You can get JavaCC at http://www.webgain.com
 
  28  * You can test the parser with the PHPParserTestCase2.java
 
  29  * @author Matthieu Casanova
 
  31 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
 
  33 //todo : fix the variables names bug
 
  34 //todo : handle tilde operator
 
  37   /** The current segment. */
 
  38   private static OutlineableWithChildren currentSegment;
 
  40   private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
 
  41   private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
 
  42   static PHPOutlineInfo outlineInfo;
 
  44   /** The error level of the current ParseException. */
 
  45   private static int errorLevel = ERROR;
 
  46   /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
 
  47   private static String errorMessage;
 
  49   private static int errorStart = -1;
 
  50   private static int errorEnd = -1;
 
  51   private static PHPDocument phpDocument;
 
  53   private static final String SYNTAX_ERROR_CHAR = "syntax error";
 
  55    * The point where html starts.
 
  56    * It will be used by the token manager to create HTMLCode objects
 
  58   public static int htmlStart;
 
  61   private final static int AstStackIncrement = 100;
 
  62   /** The stack of node. */
 
  63   private static AstNode[] nodes;
 
  64   /** The cursor in expression stack. */
 
  65   private static int nodePtr;
 
  67   public static final boolean PARSER_DEBUG = false;
 
  69   public final void setFileToParse(final IFile fileToParse) {
 
  70     PHPParser.fileToParse = fileToParse;
 
  76   public PHPParser(final IFile fileToParse) {
 
  77     this(new StringReader(""));
 
  78     PHPParser.fileToParse = fileToParse;
 
  81   public final void phpParserTester(final String strEval) throws ParseException {
 
  82     final StringReader stream = new StringReader(strEval);
 
  83     if (jj_input_stream == null) {
 
  84       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
  85       token_source = new PHPParserTokenManager(jj_input_stream);
 
  87     ReInit(new StringReader(strEval));
 
  89     phpDocument = new PHPDocument(null,"_root".toCharArray());
 
  90     currentSegment = phpDocument;
 
  91     outlineInfo = new PHPOutlineInfo(null, currentSegment);
 
  92     token_source.SwitchTo(PHPParserTokenManager.PHPPARSING);
 
  96   public final void htmlParserTester(final File fileName) throws FileNotFoundException, ParseException {
 
  97     final Reader stream = new FileReader(fileName);
 
  98     if (jj_input_stream == null) {
 
  99       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 100       token_source = new PHPParserTokenManager(jj_input_stream);
 
 104     phpDocument = new PHPDocument(null,"_root".toCharArray());
 
 105     currentSegment = phpDocument;
 
 106     outlineInfo = new PHPOutlineInfo(null, currentSegment);
 
 110   public final void htmlParserTester(final String strEval) throws ParseException {
 
 111     final StringReader stream = new StringReader(strEval);
 
 112     if (jj_input_stream == null) {
 
 113       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 114       token_source = new PHPParserTokenManager(jj_input_stream);
 
 118     phpDocument = new PHPDocument(null,"_root".toCharArray());
 
 119     currentSegment = phpDocument;
 
 120     outlineInfo = new PHPOutlineInfo(null, currentSegment);
 
 125    * Reinitialize the parser.
 
 127   private static final void init() {
 
 128     nodes = new AstNode[AstStackIncrement];
 
 134    * Add an php node on the stack.
 
 135    * @param node the node that will be added to the stack
 
 137   private static final void pushOnAstNodes(final AstNode node) {
 
 139       nodes[++nodePtr] = node;
 
 140     } catch (IndexOutOfBoundsException e) {
 
 141       final int oldStackLength = nodes.length;
 
 142       final AstNode[] oldStack = nodes;
 
 143       nodes = new AstNode[oldStackLength + AstStackIncrement];
 
 144       System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
 
 145       nodePtr = oldStackLength;
 
 146       nodes[nodePtr] = node;
 
 150   public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
 
 151     phpDocument = new PHPDocument(parent,"_root".toCharArray());
 
 152     currentSegment = phpDocument;
 
 153     outlineInfo = new PHPOutlineInfo(parent, currentSegment);
 
 154     final StringReader stream = new StringReader(s);
 
 155     if (jj_input_stream == null) {
 
 156       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 157       token_source = new PHPParserTokenManager(jj_input_stream);
 
 163       phpDocument.nodes = new AstNode[nodes.length];
 
 164       System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length);
 
 165       if (PHPeclipsePlugin.DEBUG) {
 
 166         PHPeclipsePlugin.log(1,phpDocument.toString());
 
 168     } catch (ParseException e) {
 
 169       processParseException(e);
 
 175    * This function will throw the exception if we are in debug mode
 
 176    * and process it if we are in production mode.
 
 177    * this should be fast since the PARSER_DEBUG is static final so the difference will be at compile time
 
 178    * @param e the exception
 
 179    * @throws ParseException the thrown exception
 
 181   private static void processParseExceptionDebug(final ParseException e) throws ParseException {
 
 185     processParseException(e);
 
 188    * This method will process the parse exception.
 
 189    * If the error message is null, the parse exception wasn't catched and a trace is written in the log
 
 190    * @param e the ParseException
 
 192   private static void processParseException(final ParseException e) {
 
 193     if (errorMessage == null) {
 
 194       PHPeclipsePlugin.log(e);
 
 195       errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
 
 196       errorStart = e.currentToken.sourceStart;
 
 197       errorEnd   = e.currentToken.sourceEnd;
 
 201   //  if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e);
 
 205    * Create marker for the parse error.
 
 206    * @param e the ParseException
 
 208   private static void setMarker(final ParseException e) {
 
 210       if (errorStart == -1) {
 
 211         setMarker(fileToParse,
 
 213                   e.currentToken.sourceStart,
 
 214                   e.currentToken.sourceEnd,
 
 216                   "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+':'+e.currentToken.sourceEnd);
 
 218         setMarker(fileToParse,
 
 223                   "Line " + e.currentToken.beginLine+", "+errorStart+':'+errorEnd);
 
 227     } catch (CoreException e2) {
 
 228       PHPeclipsePlugin.log(e2);
 
 232   private static void scanLine(final String output,
 
 235                                final int brIndx) throws CoreException {
 
 237     final StringBuffer lineNumberBuffer = new StringBuffer(10);
 
 239     current = output.substring(indx, brIndx);
 
 241     if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
 
 242       final int onLine = current.indexOf("on line <b>");
 
 244         lineNumberBuffer.delete(0, lineNumberBuffer.length());
 
 245         for (int i = onLine; i < current.length(); i++) {
 
 246           ch = current.charAt(i);
 
 247           if ('0' <= ch && '9' >= ch) {
 
 248             lineNumberBuffer.append(ch);
 
 252         final int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
 
 254         final Hashtable attributes = new Hashtable();
 
 256         current = current.replaceAll("\n", "");
 
 257         current = current.replaceAll("<b>", "");
 
 258         current = current.replaceAll("</b>", "");
 
 259         MarkerUtilities.setMessage(attributes, current);
 
 261         if (current.indexOf(PARSE_ERROR_STRING) != -1)
 
 262           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
 
 263         else if (current.indexOf(PARSE_WARNING_STRING) != -1)
 
 264           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
 
 266           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
 
 267         MarkerUtilities.setLineNumber(attributes, lineNumber);
 
 268         MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
 
 273   public final void parse(final String s) {
 
 274     final StringReader stream = new StringReader(s);
 
 275     if (jj_input_stream == null) {
 
 276       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 277       token_source = new PHPParserTokenManager(jj_input_stream);
 
 283     } catch (ParseException e) {
 
 284       processParseException(e);
 
 289    * Call the php parse command ( php -l -f <filename> )
 
 290    * and create markers according to the external parser output
 
 292   public static void phpExternalParse(final IFile file) {
 
 293     final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
 
 294     final String filename = file.getLocation().toString();
 
 296     final String[] arguments = { filename };
 
 297     final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
 
 298     final String command = form.format(arguments);
 
 300     final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
 
 303       // parse the buffer to find the errors and warnings
 
 304       createMarkers(parserResult, file);
 
 305     } catch (CoreException e) {
 
 306       PHPeclipsePlugin.log(e);
 
 311    * Put a new html block in the stack.
 
 313   public final void createNewHTMLCode() {
 
 314     final int currentPosition = token.sourceStart;
 
 315     if (currentPosition == htmlStart ||
 
 316           currentPosition < htmlStart ||
 
 317           currentPosition > jj_input_stream.getCurrentBuffer().length()) {
 
 320     final String html = jj_input_stream.getCurrentBuffer().substring(htmlStart, currentPosition);
 
 321     pushOnAstNodes(new HTMLCode(html, htmlStart,currentPosition));
 
 324   /** Create a new task. */
 
 325   public final void createNewTask(final int todoStart) {
 
 326     final String  todo = jj_input_stream.getCurrentBuffer().substring(todoStart,
 
 327                                                                   jj_input_stream.getCurrentBuffer().indexOf("\n",
 
 331         setMarker(fileToParse,
 
 333                   jj_input_stream.getBeginLine(),
 
 335                   "Line "+jj_input_stream.getBeginLine());
 
 336       } catch (CoreException e) {
 
 337         PHPeclipsePlugin.log(e);
 
 342   private final void parse() throws ParseException {
 
 346   final public void todo() throws ParseException {
 
 348     todoToken = jj_consume_token(23);
 
 349                       createNewTask(todoToken.sourceStart);
 
 352   final public void phpTest() throws ParseException {
 
 357   final public void phpFile() throws ParseException {
 
 361         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 400         case INTEGER_LITERAL:
 
 401         case FLOATING_POINT_LITERAL:
 
 418     } catch (TokenMgrError e) {
 
 419     PHPeclipsePlugin.log(e);
 
 420     errorStart   = jj_input_stream.getBeginOffset();
 
 421     errorEnd     = jj_input_stream.getEndOffset();
 
 422     errorMessage = e.getMessage();
 
 424     {if (true) throw generateParseException();}
 
 429  * A php block is a <?= expression [;]?>
 
 430  * or <?php somephpcode ?>
 
 431  * or <? somephpcode ?>
 
 433   final public void PhpBlock() throws ParseException {
 
 434   final PHPEchoBlock phpEchoBlock;
 
 435   final Token token,phpEnd;
 
 436     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 438       phpEchoBlock = phpEchoBlock();
 
 439    pushOnAstNodes(phpEchoBlock);
 
 478     case INTEGER_LITERAL:
 
 479     case FLOATING_POINT_LITERAL:
 
 487       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 490         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 492           jj_consume_token(PHPSTARTLONG);
 
 495           token = jj_consume_token(PHPSTARTSHORT);
 
 497       setMarker(fileToParse,
 
 498                 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
 
 502                 "Line " + token.beginLine);
 
 503     } catch (CoreException e) {
 
 504       PHPeclipsePlugin.log(e);
 
 509           jj_consume_token(-1);
 
 510           throw new ParseException();
 
 520         phpEnd = jj_consume_token(PHPEND);
 
 521     htmlStart = phpEnd.sourceEnd;
 
 522       } catch (ParseException e) {
 
 523     errorMessage = "'?>' expected";
 
 525     errorStart = e.currentToken.sourceStart;
 
 526     errorEnd   = e.currentToken.sourceEnd;
 
 527     processParseExceptionDebug(e);
 
 532       jj_consume_token(-1);
 
 533       throw new ParseException();
 
 537   final public PHPEchoBlock phpEchoBlock() throws ParseException {
 
 538   final Expression expr;
 
 539   final PHPEchoBlock echoBlock;
 
 540   final Token token, token2;
 
 541     token = jj_consume_token(PHPECHOSTART);
 
 544     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 546       jj_consume_token(SEMICOLON);
 
 552     token2 = jj_consume_token(PHPEND);
 
 553   htmlStart = token2.sourceEnd;
 
 555   echoBlock = new PHPEchoBlock(expr,token.sourceStart,token2.sourceEnd);
 
 556   pushOnAstNodes(echoBlock);
 
 557   {if (true) return echoBlock;}
 
 558     throw new Error("Missing return statement in function");
 
 561   final public void Php() throws ParseException {
 
 564       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 599       case INTEGER_LITERAL:
 
 600       case FLOATING_POINT_LITERAL:
 
 618   final public ClassDeclaration ClassDeclaration() throws ParseException {
 
 619   final ClassDeclaration classDeclaration;
 
 620   Token className = null;
 
 621   final Token superclassName, token, extendsToken;
 
 622   String classNameImage = SYNTAX_ERROR_CHAR;
 
 623   String superclassNameImage = null;
 
 625     token = jj_consume_token(CLASS);
 
 627       className = jj_consume_token(IDENTIFIER);
 
 628      classNameImage = className.image;
 
 629     } catch (ParseException e) {
 
 630     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 632     errorStart   = token.sourceEnd+1;
 
 633     errorEnd     = token.sourceEnd+1;
 
 634     processParseExceptionDebug(e);
 
 636     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 638       extendsToken = jj_consume_token(EXTENDS);
 
 640         superclassName = jj_consume_token(IDENTIFIER);
 
 641        superclassNameImage = superclassName.image;
 
 642       } catch (ParseException e) {
 
 643       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 645       errorStart = extendsToken.sourceEnd+1;
 
 646       errorEnd   = extendsToken.sourceEnd+1;
 
 647       processParseExceptionDebug(e);
 
 648       superclassNameImage = SYNTAX_ERROR_CHAR;
 
 656     if (className == null) {
 
 657       start = token.sourceStart;
 
 658       end = token.sourceEnd;
 
 660       start = className.sourceStart;
 
 661       end = className.sourceEnd;
 
 663     if (superclassNameImage == null) {
 
 665       classDeclaration = new ClassDeclaration(currentSegment,
 
 670       classDeclaration = new ClassDeclaration(currentSegment,
 
 676       currentSegment.add(classDeclaration);
 
 677       currentSegment = classDeclaration;
 
 678     classEnd = ClassBody(classDeclaration);
 
 679    currentSegment = (OutlineableWithChildren) currentSegment.getParent();
 
 680    classDeclaration.sourceEnd = classEnd;
 
 681    pushOnAstNodes(classDeclaration);
 
 682    {if (true) return classDeclaration;}
 
 683     throw new Error("Missing return statement in function");
 
 686   final public int ClassBody(final ClassDeclaration classDeclaration) throws ParseException {
 
 689       jj_consume_token(LBRACE);
 
 690     } catch (ParseException e) {
 
 691     errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
 
 693     errorStart = e.currentToken.sourceStart;
 
 694     errorEnd   = e.currentToken.sourceEnd;
 
 695     processParseExceptionDebug(e);
 
 699       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 708       ClassBodyDeclaration(classDeclaration);
 
 711       token = jj_consume_token(RBRACE);
 
 712      {if (true) return token.sourceEnd;}
 
 713     } catch (ParseException e) {
 
 714     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
 
 716     errorStart = e.currentToken.sourceStart;
 
 717     errorEnd   = e.currentToken.sourceEnd;
 
 718     processParseExceptionDebug(e);
 
 719     {if (true) return this.token.sourceEnd;}
 
 721     throw new Error("Missing return statement in function");
 
 725  * A class can contain only methods and fields.
 
 727   final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException {
 
 728   final MethodDeclaration method;
 
 729   final FieldDeclaration field;
 
 730     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 732       method = MethodDeclaration();
 
 733                                 method.analyzeCode();
 
 734                                 classDeclaration.addMethod(method);
 
 737       field = FieldDeclaration();
 
 738                                 classDeclaration.addField(field);
 
 742       jj_consume_token(-1);
 
 743       throw new ParseException();
 
 748  * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
 
 749  * it is only used by ClassBodyDeclaration()
 
 751   final public FieldDeclaration FieldDeclaration() throws ParseException {
 
 752   VariableDeclaration variableDeclaration;
 
 753   final VariableDeclaration[] list;
 
 754   final ArrayList arrayList = new ArrayList();
 
 758     token = jj_consume_token(VAR);
 
 759     variableDeclaration = VariableDeclaratorNoSuffix();
 
 760     arrayList.add(variableDeclaration);
 
 761     pos = variableDeclaration.sourceEnd;
 
 764       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 772       jj_consume_token(COMMA);
 
 773       variableDeclaration = VariableDeclaratorNoSuffix();
 
 774         arrayList.add(variableDeclaration);
 
 775         outlineInfo.addVariable(variableDeclaration.name());
 
 776         pos = variableDeclaration.sourceEnd;
 
 779       token2 = jj_consume_token(SEMICOLON);
 
 780     } catch (ParseException e) {
 
 781     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
 
 785     processParseExceptionDebug(e);
 
 787    list = new VariableDeclaration[arrayList.size()];
 
 788    arrayList.toArray(list);
 
 790    if (token2 == null) {
 
 791      end = list[list.length-1].sourceEnd;
 
 793      end = token2.sourceEnd;
 
 795    {if (true) return new FieldDeclaration(list,
 
 799     throw new Error("Missing return statement in function");
 
 803  * a strict variable declarator : there cannot be a suffix here.
 
 804  * It will be used by fields and formal parameters
 
 806   final public VariableDeclaration VariableDeclaratorNoSuffix() throws ParseException {
 
 807   final Token token, lbrace,rbrace;
 
 808   Expression expr, initializer = null;
 
 811     jj_consume_token(DOLLAR);
 
 812     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 814       token = jj_consume_token(IDENTIFIER);
 
 815       variable = new Variable(token.image,token.sourceStart,token.sourceEnd);
 
 818       lbrace = jj_consume_token(LBRACE);
 
 820       rbrace = jj_consume_token(RBRACE);
 
 821       variable = new Variable(expr,lbrace.sourceStart,rbrace.sourceEnd);
 
 825       jj_consume_token(-1);
 
 826       throw new ParseException();
 
 828     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 830       assignToken = jj_consume_token(ASSIGN);
 
 832         initializer = VariableInitializer();
 
 833       } catch (ParseException e) {
 
 834       errorMessage = "Literal expression expected in variable initializer";
 
 836       errorStart = assignToken.sourceEnd +1;
 
 837       errorEnd   = assignToken.sourceEnd +1;
 
 838       processParseExceptionDebug(e);
 
 845   if (initializer == null) {
 
 846     {if (true) return new VariableDeclaration(currentSegment,
 
 848                                    variable.sourceStart,
 
 849                                    variable.sourceEnd);}
 
 851   {if (true) return new VariableDeclaration(currentSegment,
 
 854                                  VariableDeclaration.EQUAL,
 
 855                                  variable.sourceStart);}
 
 856     throw new Error("Missing return statement in function");
 
 860  * this will be used by static statement
 
 862   final public VariableDeclaration VariableDeclarator() throws ParseException {
 
 863   final AbstractVariable variable;
 
 864   Expression initializer = null;
 
 866     variable = VariableDeclaratorId();
 
 867     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 869       token = jj_consume_token(ASSIGN);
 
 871         initializer = VariableInitializer();
 
 872       } catch (ParseException e) {
 
 873       errorMessage = "Literal expression expected in variable initializer";
 
 875       errorStart = token.sourceEnd+1;
 
 876       errorEnd   = token.sourceEnd+1;
 
 877       processParseExceptionDebug(e);
 
 884   if (initializer == null) {
 
 885     {if (true) return new VariableDeclaration(currentSegment,
 
 887                                    variable.sourceStart,
 
 888                                    variable.sourceEnd);}
 
 890     {if (true) return new VariableDeclaration(currentSegment,
 
 893                                    VariableDeclaration.EQUAL,
 
 894                                    variable.sourceStart);}
 
 895     throw new Error("Missing return statement in function");
 
 900  * @return the variable name (with suffix)
 
 902   final public AbstractVariable VariableDeclaratorId() throws ParseException {
 
 903   AbstractVariable var;
 
 913         var = VariableSuffix(var);
 
 915      {if (true) return var;}
 
 916     } catch (ParseException e) {
 
 917     errorMessage = "'$' expected for variable identifier";
 
 919     errorStart = e.currentToken.sourceStart;
 
 920     errorEnd   = e.currentToken.sourceEnd;
 
 923     throw new Error("Missing return statement in function");
 
 926   final public Variable Variable() throws ParseException {
 
 927   Variable variable = null;
 
 929     token = jj_consume_token(DOLLAR);
 
 931     {if (true) return variable;}
 
 932     throw new Error("Missing return statement in function");
 
 935   final public Variable Var() throws ParseException {
 
 936   Variable variable = null;
 
 937   final Token token,token2;
 
 938   ConstantIdentifier constant;
 
 939   Expression expression;
 
 940     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 942       token = jj_consume_token(DOLLAR);
 
 944    {if (true) return new Variable(variable,variable.sourceStart,variable.sourceEnd);}
 
 947       token = jj_consume_token(LBRACE);
 
 948       expression = Expression();
 
 949       token2 = jj_consume_token(RBRACE);
 
 950    {if (true) return new Variable(expression,
 
 955       token = jj_consume_token(IDENTIFIER);
 
 956    outlineInfo.addVariable('$' + token.image);
 
 957    {if (true) return new Variable(token.image,token.sourceStart,token.sourceEnd);}
 
 961       jj_consume_token(-1);
 
 962       throw new ParseException();
 
 964     throw new Error("Missing return statement in function");
 
 967   final public Expression VariableInitializer() throws ParseException {
 
 968   final Expression expr;
 
 969   final Token token, token2;
 
 970     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 974     case INTEGER_LITERAL:
 
 975     case FLOATING_POINT_LITERAL:
 
 979    {if (true) return expr;}
 
 982       token2 = jj_consume_token(MINUS);
 
 983       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 984       case INTEGER_LITERAL:
 
 985         token = jj_consume_token(INTEGER_LITERAL);
 
 987       case FLOATING_POINT_LITERAL:
 
 988         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 992         jj_consume_token(-1);
 
 993         throw new ParseException();
 
 995    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
 
 997                                       token2.sourceStart);}
 
1000       token2 = jj_consume_token(PLUS);
 
1001       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1002       case INTEGER_LITERAL:
 
1003         token = jj_consume_token(INTEGER_LITERAL);
 
1005       case FLOATING_POINT_LITERAL:
 
1006         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
1009         jj_la1[15] = jj_gen;
 
1010         jj_consume_token(-1);
 
1011         throw new ParseException();
 
1013    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
 
1015                                       token2.sourceStart);}
 
1018       expr = ArrayDeclarator();
 
1019    {if (true) return expr;}
 
1022       token = jj_consume_token(IDENTIFIER);
 
1023    {if (true) return new ConstantIdentifier(token);}
 
1026       jj_la1[16] = jj_gen;
 
1027       jj_consume_token(-1);
 
1028       throw new ParseException();
 
1030     throw new Error("Missing return statement in function");
 
1033   final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
 
1034 final Expression expr,expr2;
 
1035     expr = Expression();
 
1036     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1038       jj_consume_token(ARRAYASSIGN);
 
1039       expr2 = Expression();
 
1040      {if (true) return new ArrayVariableDeclaration(expr,expr2);}
 
1043       jj_la1[17] = jj_gen;
 
1046    {if (true) return new ArrayVariableDeclaration(expr,jj_input_stream.getPosition());}
 
1047     throw new Error("Missing return statement in function");
 
1050   final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
 
1051   ArrayVariableDeclaration expr;
 
1052   final ArrayList list = new ArrayList();
 
1053     jj_consume_token(LPAREN);
 
1054     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1070     case INTEGER_LITERAL:
 
1071     case FLOATING_POINT_LITERAL:
 
1072     case STRING_LITERAL:
 
1077       expr = ArrayVariable();
 
1086         jj_consume_token(COMMA);
 
1087         expr = ArrayVariable();
 
1092       jj_la1[18] = jj_gen;
 
1095     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1097       jj_consume_token(COMMA);
 
1101       jj_la1[19] = jj_gen;
 
1104     jj_consume_token(RPAREN);
 
1105   final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
 
1107   {if (true) return vars;}
 
1108     throw new Error("Missing return statement in function");
 
1112  * A Method Declaration.
 
1113  * <b>function</b> MetodDeclarator() Block()
 
1115   final public MethodDeclaration MethodDeclaration() throws ParseException {
 
1116   final MethodDeclaration functionDeclaration;
 
1118   final OutlineableWithChildren seg = currentSegment;
 
1120     token = jj_consume_token(FUNCTION);
 
1122       functionDeclaration = MethodDeclarator(token.sourceStart);
 
1123      outlineInfo.addVariable(functionDeclaration.name);
 
1124     } catch (ParseException e) {
 
1125     if (errorMessage != null)  {if (true) throw e;}
 
1126     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1128     errorStart = e.currentToken.sourceStart;
 
1129     errorEnd   = e.currentToken.sourceEnd;
 
1130     {if (true) throw e;}
 
1132    currentSegment = functionDeclaration;
 
1134    functionDeclaration.statements = block.statements;
 
1135    currentSegment = seg;
 
1136    {if (true) return functionDeclaration;}
 
1137     throw new Error("Missing return statement in function");
 
1141  * A MethodDeclarator.
 
1142  * [&] IDENTIFIER(parameters ...).
 
1143  * @return a function description for the outline
 
1145   final public MethodDeclaration MethodDeclarator(final int start) throws ParseException {
 
1146   Token identifier = null;
 
1147   Token reference = null;
 
1148   final ArrayList formalParameters = new ArrayList();
 
1149   String identifierChar = SYNTAX_ERROR_CHAR;
 
1151     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1153       reference = jj_consume_token(BIT_AND);
 
1154                           end = reference.sourceEnd;
 
1157       jj_la1[20] = jj_gen;
 
1161       identifier = jj_consume_token(IDENTIFIER);
 
1162       identifierChar = identifier.image;
 
1163       end = identifier.sourceEnd;
 
1164     } catch (ParseException e) {
 
1165     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1167     errorStart = e.currentToken.sourceEnd;
 
1168     errorEnd   = e.currentToken.next.sourceStart;
 
1169     processParseExceptionDebug(e);
 
1171     end = FormalParameters(formalParameters);
 
1172   int nameStart, nameEnd;
 
1173   if (identifier == null) {
 
1174     if (reference == null) {
 
1175       nameStart = start + 9;
 
1176       nameEnd = start + 10;
 
1178       nameStart = reference.sourceEnd + 1;
 
1179       nameEnd = reference.sourceEnd + 2;
 
1182       nameStart = identifier.sourceStart;
 
1183       nameEnd = identifier.sourceEnd;
 
1185   {if (true) return new MethodDeclaration(currentSegment,
 
1193     throw new Error("Missing return statement in function");
 
1197  * FormalParameters follows method identifier.
 
1198  * (FormalParameter())
 
1200   final public int FormalParameters(final ArrayList parameters) throws ParseException {
 
1201   VariableDeclaration var;
 
1203   Token tok = this.token;
 
1204   int end = tok.sourceEnd;
 
1206       tok = jj_consume_token(LPAREN);
 
1207    end = tok.sourceEnd;
 
1208     } catch (ParseException e) {
 
1209     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
 
1211     errorStart = e.currentToken.next.sourceStart;
 
1212     errorEnd   = e.currentToken.next.sourceEnd;
 
1213     processParseExceptionDebug(e);
 
1215     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1218       var = FormalParameter();
 
1219      parameters.add(var);end = var.sourceEnd;
 
1222         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1227           jj_la1[21] = jj_gen;
 
1230         jj_consume_token(COMMA);
 
1231         var = FormalParameter();
 
1232        parameters.add(var);end = var.sourceEnd;
 
1236       jj_la1[22] = jj_gen;
 
1240       token = jj_consume_token(RPAREN);
 
1241      end = token.sourceEnd;
 
1242     } catch (ParseException e) {
 
1243     errorMessage = "')' expected";
 
1245     errorStart = e.currentToken.next.sourceStart;
 
1246     errorEnd   = e.currentToken.next.sourceEnd;
 
1247     processParseExceptionDebug(e);
 
1249   {if (true) return end;}
 
1250     throw new Error("Missing return statement in function");
 
1254  * A formal parameter.
 
1255  * $varname[=value] (,$varname[=value])
 
1257   final public VariableDeclaration FormalParameter() throws ParseException {
 
1258   final VariableDeclaration variableDeclaration;
 
1260     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1262       token = jj_consume_token(BIT_AND);
 
1265       jj_la1[23] = jj_gen;
 
1268     variableDeclaration = VariableDeclaratorNoSuffix();
 
1269     outlineInfo.addVariable('$'+variableDeclaration.name());
 
1270     if (token != null) {
 
1271       variableDeclaration.setReference(true);
 
1273     {if (true) return variableDeclaration;}
 
1274     throw new Error("Missing return statement in function");
 
1277   final public ConstantIdentifier Type() throws ParseException {
 
1279     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1281       token = jj_consume_token(STRING);
 
1282                        {if (true) return new ConstantIdentifier(token);}
 
1285       token = jj_consume_token(BOOL);
 
1286                        {if (true) return new ConstantIdentifier(token);}
 
1289       token = jj_consume_token(BOOLEAN);
 
1290                        {if (true) return new ConstantIdentifier(token);}
 
1293       token = jj_consume_token(REAL);
 
1294                        {if (true) return new ConstantIdentifier(token);}
 
1297       token = jj_consume_token(DOUBLE);
 
1298                        {if (true) return new ConstantIdentifier(token);}
 
1301       token = jj_consume_token(FLOAT);
 
1302                        {if (true) return new ConstantIdentifier(token);}
 
1305       token = jj_consume_token(INT);
 
1306                        {if (true) return new ConstantIdentifier(token);}
 
1309       token = jj_consume_token(INTEGER);
 
1310                        {if (true) return new ConstantIdentifier(token);}
 
1313       token = jj_consume_token(OBJECT);
 
1314                        {if (true) return new ConstantIdentifier(token);}
 
1317       jj_la1[24] = jj_gen;
 
1318       jj_consume_token(-1);
 
1319       throw new ParseException();
 
1321     throw new Error("Missing return statement in function");
 
1324   final public Expression Expression() throws ParseException {
 
1325   final Expression expr;
 
1326   Expression initializer = null;
 
1327   int assignOperator = -1;
 
1328     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1342     case INTEGER_LITERAL:
 
1343     case FLOATING_POINT_LITERAL:
 
1344     case STRING_LITERAL:
 
1349       expr = ConditionalExpression();
 
1350       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1363       case RSIGNEDSHIFTASSIGN:
 
1364         assignOperator = AssignmentOperator();
 
1366           initializer = Expression();
 
1367         } catch (ParseException e) {
 
1368       if (errorMessage != null) {
 
1369         {if (true) throw e;}
 
1371       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1373       errorEnd   = jj_input_stream.getPosition();
 
1374       {if (true) throw e;}
 
1378         jj_la1[25] = jj_gen;
 
1381     if (assignOperator != -1) {// todo : change this, very very bad :(
 
1382         if (expr instanceof AbstractVariable) {
 
1383           {if (true) return new VariableDeclaration(currentSegment,
 
1384                                          (AbstractVariable) expr,
 
1387                                          initializer.sourceEnd);}
 
1389         String varName = expr.toStringExpression().substring(1);
 
1390         {if (true) return new VariableDeclaration(currentSegment,
 
1391                                        new Variable(varName,
 
1395                                        initializer.sourceEnd);}
 
1397     {if (true) return expr;}
 
1401       expr = ExpressionWBang();
 
1402                                   {if (true) return expr;}
 
1405       jj_la1[26] = jj_gen;
 
1406       jj_consume_token(-1);
 
1407       throw new ParseException();
 
1409     throw new Error("Missing return statement in function");
 
1412   final public Expression ExpressionWBang() throws ParseException {
 
1413   final Expression expr;
 
1415     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1417       token = jj_consume_token(BANG);
 
1418       expr = ExpressionWBang();
 
1419    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
 
1423       expr = ExpressionNoBang();
 
1424                              {if (true) return expr;}
 
1427       jj_la1[27] = jj_gen;
 
1428       jj_consume_token(-1);
 
1429       throw new ParseException();
 
1431     throw new Error("Missing return statement in function");
 
1434   final public Expression ExpressionNoBang() throws ParseException {
 
1436     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1438       expr = ListExpression();
 
1439                               {if (true) return expr;}
 
1442       expr = PrintExpression();
 
1443                               {if (true) return expr;}
 
1446       jj_la1[28] = jj_gen;
 
1447       jj_consume_token(-1);
 
1448       throw new ParseException();
 
1450     throw new Error("Missing return statement in function");
 
1454  * Any assignement operator.
 
1455  * @return the assignement operator id
 
1457   final public int AssignmentOperator() throws ParseException {
 
1458     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1460       jj_consume_token(ASSIGN);
 
1461                         {if (true) return VariableDeclaration.EQUAL;}
 
1464       jj_consume_token(STARASSIGN);
 
1465                         {if (true) return VariableDeclaration.STAR_EQUAL;}
 
1468       jj_consume_token(SLASHASSIGN);
 
1469                         {if (true) return VariableDeclaration.SLASH_EQUAL;}
 
1472       jj_consume_token(REMASSIGN);
 
1473                         {if (true) return VariableDeclaration.REM_EQUAL;}
 
1476       jj_consume_token(PLUSASSIGN);
 
1477                         {if (true) return VariableDeclaration.PLUS_EQUAL;}
 
1480       jj_consume_token(MINUSASSIGN);
 
1481                         {if (true) return VariableDeclaration.MINUS_EQUAL;}
 
1484       jj_consume_token(LSHIFTASSIGN);
 
1485                         {if (true) return VariableDeclaration.LSHIFT_EQUAL;}
 
1487     case RSIGNEDSHIFTASSIGN:
 
1488       jj_consume_token(RSIGNEDSHIFTASSIGN);
 
1489                         {if (true) return VariableDeclaration.RSIGNEDSHIFT_EQUAL;}
 
1492       jj_consume_token(ANDASSIGN);
 
1493                         {if (true) return VariableDeclaration.AND_EQUAL;}
 
1496       jj_consume_token(XORASSIGN);
 
1497                         {if (true) return VariableDeclaration.XOR_EQUAL;}
 
1500       jj_consume_token(ORASSIGN);
 
1501                         {if (true) return VariableDeclaration.OR_EQUAL;}
 
1504       jj_consume_token(DOTASSIGN);
 
1505                         {if (true) return VariableDeclaration.DOT_EQUAL;}
 
1508       jj_consume_token(TILDEEQUAL);
 
1509                         {if (true) return VariableDeclaration.TILDE_EQUAL;}
 
1512       jj_la1[29] = jj_gen;
 
1513       jj_consume_token(-1);
 
1514       throw new ParseException();
 
1516     throw new Error("Missing return statement in function");
 
1519   final public Expression ConditionalExpression() throws ParseException {
 
1520   final Expression expr;
 
1521   Expression expr2 = null;
 
1522   Expression expr3 = null;
 
1523     expr = ConditionalOrExpression();
 
1524     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1526       jj_consume_token(HOOK);
 
1527       expr2 = Expression();
 
1528       jj_consume_token(COLON);
 
1529       expr3 = ConditionalExpression();
 
1532       jj_la1[30] = jj_gen;
 
1535   if (expr3 == null) {
 
1536     {if (true) return expr;}
 
1538   {if (true) return new ConditionalExpression(expr,expr2,expr3);}
 
1539     throw new Error("Missing return statement in function");
 
1542   final public Expression ConditionalOrExpression() throws ParseException {
 
1543   Expression expr,expr2;
 
1545     expr = ConditionalAndExpression();
 
1548       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1554         jj_la1[31] = jj_gen;
 
1557       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1559         jj_consume_token(OR_OR);
 
1560                  operator = OperatorIds.OR_OR;
 
1563         jj_consume_token(_ORL);
 
1564                  operator = OperatorIds.ORL;
 
1567         jj_la1[32] = jj_gen;
 
1568         jj_consume_token(-1);
 
1569         throw new ParseException();
 
1571       expr2 = ConditionalAndExpression();
 
1572       expr = new BinaryExpression(expr,expr2,operator);
 
1574    {if (true) return expr;}
 
1575     throw new Error("Missing return statement in function");
 
1578   final public Expression ConditionalAndExpression() throws ParseException {
 
1579   Expression expr,expr2;
 
1581     expr = ConcatExpression();
 
1584       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1590         jj_la1[33] = jj_gen;
 
1593       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1595         jj_consume_token(AND_AND);
 
1596                 operator = OperatorIds.AND_AND;
 
1599         jj_consume_token(_ANDL);
 
1600                 operator = OperatorIds.ANDL;
 
1603         jj_la1[34] = jj_gen;
 
1604         jj_consume_token(-1);
 
1605         throw new ParseException();
 
1607       expr2 = ConcatExpression();
 
1608                                expr = new BinaryExpression(expr,expr2,operator);
 
1610    {if (true) return expr;}
 
1611     throw new Error("Missing return statement in function");
 
1614   final public Expression ConcatExpression() throws ParseException {
 
1615   Expression expr,expr2;
 
1616     expr = InclusiveOrExpression();
 
1619       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1624         jj_la1[35] = jj_gen;
 
1627       jj_consume_token(DOT);
 
1628       expr2 = InclusiveOrExpression();
 
1629      expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
 
1631    {if (true) return expr;}
 
1632     throw new Error("Missing return statement in function");
 
1635   final public Expression InclusiveOrExpression() throws ParseException {
 
1636   Expression expr,expr2;
 
1637     expr = ExclusiveOrExpression();
 
1640       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1645         jj_la1[36] = jj_gen;
 
1648       jj_consume_token(BIT_OR);
 
1649       expr2 = ExclusiveOrExpression();
 
1650     expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
 
1652    {if (true) return expr;}
 
1653     throw new Error("Missing return statement in function");
 
1656   final public Expression ExclusiveOrExpression() throws ParseException {
 
1657   Expression expr,expr2;
 
1658     expr = AndExpression();
 
1661       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1666         jj_la1[37] = jj_gen;
 
1669       jj_consume_token(XOR);
 
1670       expr2 = AndExpression();
 
1671      expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
 
1673    {if (true) return expr;}
 
1674     throw new Error("Missing return statement in function");
 
1677   final public Expression AndExpression() throws ParseException {
 
1678   Expression expr,expr2;
 
1679     expr = EqualityExpression();
 
1682       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1687         jj_la1[38] = jj_gen;
 
1690       jj_consume_token(BIT_AND);
 
1691       expr2 = EqualityExpression();
 
1692      expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
 
1694    {if (true) return expr;}
 
1695     throw new Error("Missing return statement in function");
 
1698   final public Expression EqualityExpression() throws ParseException {
 
1699   Expression expr,expr2;
 
1702     expr = RelationalExpression();
 
1705       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1709       case BANGDOUBLEEQUAL:
 
1714         jj_la1[39] = jj_gen;
 
1717       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1719         token = jj_consume_token(EQUAL_EQUAL);
 
1720                                   operator = OperatorIds.EQUAL_EQUAL;
 
1723         token = jj_consume_token(DIF);
 
1724                                   operator = OperatorIds.DIF;
 
1727         token = jj_consume_token(NOT_EQUAL);
 
1728                                   operator = OperatorIds.DIF;
 
1730       case BANGDOUBLEEQUAL:
 
1731         token = jj_consume_token(BANGDOUBLEEQUAL);
 
1732                                   operator = OperatorIds.BANG_EQUAL_EQUAL;
 
1735         token = jj_consume_token(TRIPLEEQUAL);
 
1736                                   operator = OperatorIds.EQUAL_EQUAL_EQUAL;
 
1739         jj_la1[40] = jj_gen;
 
1740         jj_consume_token(-1);
 
1741         throw new ParseException();
 
1744         expr2 = RelationalExpression();
 
1745       } catch (ParseException e) {
 
1746     if (errorMessage != null) {
 
1747       {if (true) throw e;}
 
1749     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1751     errorStart = token.sourceEnd +1;
 
1752     errorEnd   = token.sourceEnd +1;
 
1753     expr2 = new ConstantIdentifier(SYNTAX_ERROR_CHAR,token.sourceEnd +1,token.sourceEnd +1);
 
1754     processParseExceptionDebug(e);
 
1756     expr = new BinaryExpression(expr,expr2,operator);
 
1758    {if (true) return expr;}
 
1759     throw new Error("Missing return statement in function");
 
1762   final public Expression RelationalExpression() throws ParseException {
 
1763   Expression expr,expr2;
 
1765     expr = ShiftExpression();
 
1768       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1776         jj_la1[41] = jj_gen;
 
1779       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1781         jj_consume_token(LT);
 
1782           operator = OperatorIds.LESS;
 
1785         jj_consume_token(GT);
 
1786           operator = OperatorIds.GREATER;
 
1789         jj_consume_token(LE);
 
1790           operator = OperatorIds.LESS_EQUAL;
 
1793         jj_consume_token(GE);
 
1794           operator = OperatorIds.GREATER_EQUAL;
 
1797         jj_la1[42] = jj_gen;
 
1798         jj_consume_token(-1);
 
1799         throw new ParseException();
 
1801       expr2 = ShiftExpression();
 
1802    expr = new BinaryExpression(expr,expr2,operator);
 
1804    {if (true) return expr;}
 
1805     throw new Error("Missing return statement in function");
 
1808   final public Expression ShiftExpression() throws ParseException {
 
1809   Expression expr,expr2;
 
1811     expr = AdditiveExpression();
 
1814       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1817       case RUNSIGNEDSHIFT:
 
1821         jj_la1[43] = jj_gen;
 
1824       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1826         jj_consume_token(LSHIFT);
 
1827                       operator = OperatorIds.LEFT_SHIFT;
 
1830         jj_consume_token(RSIGNEDSHIFT);
 
1831                       operator = OperatorIds.RIGHT_SHIFT;
 
1833       case RUNSIGNEDSHIFT:
 
1834         jj_consume_token(RUNSIGNEDSHIFT);
 
1835                       operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
 
1838         jj_la1[44] = jj_gen;
 
1839         jj_consume_token(-1);
 
1840         throw new ParseException();
 
1842       expr2 = AdditiveExpression();
 
1843    expr = new BinaryExpression(expr,expr2,operator);
 
1845    {if (true) return expr;}
 
1846     throw new Error("Missing return statement in function");
 
1849   final public Expression AdditiveExpression() throws ParseException {
 
1850   Expression expr,expr2;
 
1852     expr = MultiplicativeExpression();
 
1855       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1861         jj_la1[45] = jj_gen;
 
1864       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1866         jj_consume_token(PLUS);
 
1867                 operator = OperatorIds.PLUS;
 
1870         jj_consume_token(MINUS);
 
1871                 operator = OperatorIds.MINUS;
 
1874         jj_la1[46] = jj_gen;
 
1875         jj_consume_token(-1);
 
1876         throw new ParseException();
 
1878       expr2 = MultiplicativeExpression();
 
1879    expr = new BinaryExpression(expr,expr2,operator);
 
1881    {if (true) return expr;}
 
1882     throw new Error("Missing return statement in function");
 
1885   final public Expression MultiplicativeExpression() throws ParseException {
 
1886   Expression expr,expr2;
 
1889       expr = UnaryExpression();
 
1890     } catch (ParseException e) {
 
1891     if (errorMessage != null) {if (true) throw e;}
 
1892     errorMessage = "unexpected token '"+e.currentToken.next.image+'\'';
 
1894     errorStart = this.token.sourceStart;
 
1895     errorEnd   = this.token.sourceEnd;
 
1896     {if (true) throw e;}
 
1900       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1907         jj_la1[47] = jj_gen;
 
1910       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1912         jj_consume_token(STAR);
 
1913                    operator = OperatorIds.MULTIPLY;
 
1916         jj_consume_token(SLASH);
 
1917                    operator = OperatorIds.DIVIDE;
 
1920         jj_consume_token(REMAINDER);
 
1921                    operator = OperatorIds.REMAINDER;
 
1924         jj_la1[48] = jj_gen;
 
1925         jj_consume_token(-1);
 
1926         throw new ParseException();
 
1928       expr2 = UnaryExpression();
 
1929      expr = new BinaryExpression(expr,expr2,operator);
 
1931    {if (true) return expr;}
 
1932     throw new Error("Missing return statement in function");
 
1936  * An unary expression starting with @, & or nothing
 
1938   final public Expression UnaryExpression() throws ParseException {
 
1939   final Expression expr;
 
1940     /* <BIT_AND> expr = UnaryExpressionNoPrefix()             //why did I had that ?
 
1941       {return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
 
1943       expr = AtNotTildeUnaryExpression();
 
1944                                       {if (true) return expr;}
 
1945     throw new Error("Missing return statement in function");
 
1948   final public Expression AtNotTildeUnaryExpression() throws ParseException {
 
1949   final Expression expr;
 
1951     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1953       token = jj_consume_token(AT);
 
1954       expr = AtNotTildeUnaryExpression();
 
1955    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
 
1958       token = jj_consume_token(TILDE);
 
1959       expr = AtNotTildeUnaryExpression();
 
1960    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.TWIDDLE,token.sourceStart);}
 
1963       token = jj_consume_token(BANG);
 
1964       expr = AtNotUnaryExpression();
 
1965    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
 
1977     case INTEGER_LITERAL:
 
1978     case FLOATING_POINT_LITERAL:
 
1979     case STRING_LITERAL:
 
1984       expr = UnaryExpressionNoPrefix();
 
1985    {if (true) return expr;}
 
1988       jj_la1[49] = jj_gen;
 
1989       jj_consume_token(-1);
 
1990       throw new ParseException();
 
1992     throw new Error("Missing return statement in function");
 
1996  * An expression prefixed (or not) by one or more @ and !.
 
1997  * @return the expression
 
1999   final public Expression AtNotUnaryExpression() throws ParseException {
 
2000   final Expression expr;
 
2002     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2004       token = jj_consume_token(AT);
 
2005       expr = AtNotUnaryExpression();
 
2006    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
 
2009       token = jj_consume_token(BANG);
 
2010       expr = AtNotUnaryExpression();
 
2011    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
 
2023     case INTEGER_LITERAL:
 
2024     case FLOATING_POINT_LITERAL:
 
2025     case STRING_LITERAL:
 
2030       expr = UnaryExpressionNoPrefix();
 
2031    {if (true) return expr;}
 
2034       jj_la1[50] = jj_gen;
 
2035       jj_consume_token(-1);
 
2036       throw new ParseException();
 
2038     throw new Error("Missing return statement in function");
 
2041   final public Expression UnaryExpressionNoPrefix() throws ParseException {
 
2042   final Expression expr;
 
2044     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2046       token = jj_consume_token(PLUS);
 
2047       expr = AtNotTildeUnaryExpression();
 
2048                                                        {if (true) return new PrefixedUnaryExpression(expr,
 
2050                                                                                      token.sourceStart);}
 
2053       token = jj_consume_token(MINUS);
 
2054       expr = AtNotTildeUnaryExpression();
 
2055                                                        {if (true) return new PrefixedUnaryExpression(expr,
 
2057                                                                                      token.sourceStart);}
 
2061       expr = PreIncDecExpression();
 
2062    {if (true) return expr;}
 
2070     case INTEGER_LITERAL:
 
2071     case FLOATING_POINT_LITERAL:
 
2072     case STRING_LITERAL:
 
2077       expr = UnaryExpressionNotPlusMinus();
 
2078    {if (true) return expr;}
 
2081       jj_la1[51] = jj_gen;
 
2082       jj_consume_token(-1);
 
2083       throw new ParseException();
 
2085     throw new Error("Missing return statement in function");
 
2088   final public Expression PreIncDecExpression() throws ParseException {
 
2089 final Expression expr;
 
2092     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2094       token = jj_consume_token(PLUS_PLUS);
 
2095                              operator = OperatorIds.PLUS_PLUS;
 
2098       token = jj_consume_token(MINUS_MINUS);
 
2099                              operator = OperatorIds.MINUS_MINUS;
 
2102       jj_la1[52] = jj_gen;
 
2103       jj_consume_token(-1);
 
2104       throw new ParseException();
 
2106     expr = PrimaryExpression();
 
2107    {if (true) return new PrefixedUnaryExpression(expr,operator,token.sourceStart);}
 
2108     throw new Error("Missing return statement in function");
 
2111   final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
 
2112   final Expression expr;
 
2113     if (jj_2_3(2147483647)) {
 
2114       expr = CastExpression();
 
2115                                    {if (true) return expr;}
 
2117       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2123         expr = PostfixExpression();
 
2124                                    {if (true) return expr;}
 
2129       case INTEGER_LITERAL:
 
2130       case FLOATING_POINT_LITERAL:
 
2131       case STRING_LITERAL:
 
2134                                    {if (true) return expr;}
 
2137         jj_consume_token(LPAREN);
 
2138         expr = Expression();
 
2140           jj_consume_token(RPAREN);
 
2141         } catch (ParseException e) {
 
2142     errorMessage = "')' expected";
 
2144     errorStart   = expr.sourceEnd +1;
 
2145     errorEnd     = expr.sourceEnd +1;
 
2146     processParseExceptionDebug(e);
 
2148    {if (true) return expr;}
 
2151         jj_la1[53] = jj_gen;
 
2152         jj_consume_token(-1);
 
2153         throw new ParseException();
 
2156     throw new Error("Missing return statement in function");
 
2159   final public CastExpression CastExpression() throws ParseException {
 
2160 final ConstantIdentifier type;
 
2161 final Expression expr;
 
2162 final Token token,token1;
 
2163     token1 = jj_consume_token(LPAREN);
 
2164     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2177       token = jj_consume_token(ARRAY);
 
2178                        type = new ConstantIdentifier(token);
 
2181       jj_la1[54] = jj_gen;
 
2182       jj_consume_token(-1);
 
2183       throw new ParseException();
 
2185     jj_consume_token(RPAREN);
 
2186     expr = UnaryExpression();
 
2187    {if (true) return new CastExpression(type,expr,token1.sourceStart,expr.sourceEnd);}
 
2188     throw new Error("Missing return statement in function");
 
2191   final public Expression PostfixExpression() throws ParseException {
 
2192   final Expression expr;
 
2195     expr = PrimaryExpression();
 
2196     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2199       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2201         token = jj_consume_token(PLUS_PLUS);
 
2202                              operator = OperatorIds.PLUS_PLUS;
 
2205         token = jj_consume_token(MINUS_MINUS);
 
2206                              operator = OperatorIds.MINUS_MINUS;
 
2209         jj_la1[55] = jj_gen;
 
2210         jj_consume_token(-1);
 
2211         throw new ParseException();
 
2215       jj_la1[56] = jj_gen;
 
2218     if (operator == -1) {
 
2219       {if (true) return expr;}
 
2221     {if (true) return new PostfixedUnaryExpression(expr,operator,token.sourceEnd);}
 
2222     throw new Error("Missing return statement in function");
 
2225   final public Expression PrimaryExpression() throws ParseException {
 
2228     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2233       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2235         token = jj_consume_token(BIT_AND);
 
2238         jj_la1[57] = jj_gen;
 
2241       expr = refPrimaryExpression(token);
 
2242    {if (true) return expr;}
 
2245       expr = ArrayDeclarator();
 
2246    {if (true) return expr;}
 
2249       jj_la1[58] = jj_gen;
 
2250       jj_consume_token(-1);
 
2251       throw new ParseException();
 
2253     throw new Error("Missing return statement in function");
 
2256   final public Expression refPrimaryExpression(final Token reference) throws ParseException {
 
2258   Expression expr2 = null;
 
2259   final Token identifier;
 
2260     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2262       identifier = jj_consume_token(IDENTIFIER);
 
2263     expr = new ConstantIdentifier(identifier);
 
2266         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2267         case STATICCLASSACCESS:
 
2271           jj_la1[59] = jj_gen;
 
2274         jj_consume_token(STATICCLASSACCESS);
 
2275         expr2 = ClassIdentifier();
 
2276      expr = new ClassAccess(expr,
 
2278                             ClassAccess.STATIC);
 
2280       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2282         expr2 = Arguments(expr);
 
2285         jj_la1[60] = jj_gen;
 
2288     if (expr2 == null) {
 
2289       if (reference != null) {
 
2290         ParseException e = generateParseException();
 
2291         errorMessage = "you cannot use a constant by reference";
 
2293         errorStart   = reference.sourceStart;
 
2294         errorEnd     = reference.sourceEnd;
 
2295         processParseExceptionDebug(e);
 
2297       {if (true) return expr;}
 
2299     {if (true) return expr2;}
 
2302       expr = VariableDeclaratorId();
 
2303       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2305         expr = Arguments(expr);
 
2308         jj_la1[61] = jj_gen;
 
2311    {if (true) return expr;}
 
2314       token = jj_consume_token(NEW);
 
2315       expr = ClassIdentifier();
 
2317     if (reference == null) {
 
2318       start = token.sourceStart;
 
2320       start = reference.sourceStart;
 
2322     expr = new ClassInstantiation(expr,
 
2325       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2327         expr = Arguments(expr);
 
2330         jj_la1[62] = jj_gen;
 
2333    {if (true) return expr;}
 
2336       jj_la1[63] = jj_gen;
 
2337       jj_consume_token(-1);
 
2338       throw new ParseException();
 
2340     throw new Error("Missing return statement in function");
 
2344  * An array declarator.
 
2348   final public ArrayInitializer ArrayDeclarator() throws ParseException {
 
2349   final ArrayVariableDeclaration[] vars;
 
2351     token = jj_consume_token(ARRAY);
 
2352     vars = ArrayInitializer();
 
2353    {if (true) return new ArrayInitializer(vars,
 
2355                                this.token.sourceEnd);}
 
2356     throw new Error("Missing return statement in function");
 
2359   final public Expression ClassIdentifier() throws ParseException {
 
2360   final Expression expr;
 
2362     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2364       token = jj_consume_token(IDENTIFIER);
 
2365                                  {if (true) return new ConstantIdentifier(token);}
 
2377                                  {if (true) return expr;}
 
2380       expr = VariableDeclaratorId();
 
2381                                  {if (true) return expr;}
 
2384       jj_la1[64] = jj_gen;
 
2385       jj_consume_token(-1);
 
2386       throw new ParseException();
 
2388     throw new Error("Missing return statement in function");
 
2392  * Used by Variabledeclaratorid and primarysuffix
 
2394   final public AbstractVariable VariableSuffix(final AbstractVariable prefix) throws ParseException {
 
2395   Expression expression = null;
 
2396   final Token classAccessToken,lbrace,rbrace;
 
2399     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2401       classAccessToken = jj_consume_token(CLASSACCESS);
 
2403         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2405           lbrace = jj_consume_token(LBRACE);
 
2406           expression = Expression();
 
2407           rbrace = jj_consume_token(RBRACE);
 
2408                  expression = new Variable(expression,
 
2413           token = jj_consume_token(IDENTIFIER);
 
2414          expression = new ConstantIdentifier(token.image,token.sourceStart,token.sourceEnd);
 
2417           expression = Variable();
 
2420           jj_la1[65] = jj_gen;
 
2421           jj_consume_token(-1);
 
2422           throw new ParseException();
 
2424       } catch (ParseException e) {
 
2425     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
 
2427     errorStart = classAccessToken.sourceEnd +1;
 
2428     errorEnd   = classAccessToken.sourceEnd +1;
 
2429     processParseExceptionDebug(e);
 
2431    {if (true) return new ClassAccess(prefix,
 
2433                           ClassAccess.NORMAL);}
 
2436       token = jj_consume_token(LBRACKET);
 
2437                       pos = token.sourceEnd+1;
 
2438       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2463       case INTEGER_LITERAL:
 
2464       case FLOATING_POINT_LITERAL:
 
2465       case STRING_LITERAL:
 
2470         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2486         case INTEGER_LITERAL:
 
2487         case FLOATING_POINT_LITERAL:
 
2488         case STRING_LITERAL:
 
2493           expression = Expression();
 
2494                                 pos = expression.sourceEnd+1;
 
2505           expression = Type();
 
2506                                 pos = expression.sourceEnd+1;
 
2509           jj_la1[66] = jj_gen;
 
2510           jj_consume_token(-1);
 
2511           throw new ParseException();
 
2515         jj_la1[67] = jj_gen;
 
2519         token = jj_consume_token(RBRACKET);
 
2520      pos = token.sourceEnd;
 
2521       } catch (ParseException e) {
 
2522     errorMessage = "']' expected";
 
2526     processParseExceptionDebug(e);
 
2528    {if (true) return new ArrayDeclarator(prefix,expression,pos);}
 
2531       token = jj_consume_token(LBRACE);
 
2532                     pos = token.sourceEnd+1;
 
2533       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2558       case INTEGER_LITERAL:
 
2559       case FLOATING_POINT_LITERAL:
 
2560       case STRING_LITERAL:
 
2565         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2581         case INTEGER_LITERAL:
 
2582         case FLOATING_POINT_LITERAL:
 
2583         case STRING_LITERAL:
 
2588           expression = Expression();
 
2589                                 pos = expression.sourceEnd+1;
 
2600           expression = Type();
 
2601                                 pos = expression.sourceEnd+1;
 
2604           jj_la1[68] = jj_gen;
 
2605           jj_consume_token(-1);
 
2606           throw new ParseException();
 
2610         jj_la1[69] = jj_gen;
 
2614         token = jj_consume_token(RBRACE);
 
2615      pos = token.sourceEnd;
 
2616       } catch (ParseException e) {
 
2617     errorMessage = "']' expected";
 
2621     processParseExceptionDebug(e);
 
2623    {if (true) return new ArrayDeclarator(prefix,expression,pos);}
 
2626       jj_la1[70] = jj_gen;
 
2627       jj_consume_token(-1);
 
2628       throw new ParseException();
 
2630     throw new Error("Missing return statement in function");
 
2633   final public Literal Literal() throws ParseException {
 
2635   StringLiteral literal;
 
2636     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2637     case INTEGER_LITERAL:
 
2638       token = jj_consume_token(INTEGER_LITERAL);
 
2639                                     {if (true) return new NumberLiteral(token);}
 
2641     case FLOATING_POINT_LITERAL:
 
2642       token = jj_consume_token(FLOATING_POINT_LITERAL);
 
2643                                     {if (true) return new NumberLiteral(token);}
 
2645     case STRING_LITERAL:
 
2646       token = jj_consume_token(STRING_LITERAL);
 
2647                                     {if (true) return new StringLiteral(token);}
 
2650       token = jj_consume_token(TRUE);
 
2651                                     {if (true) return new TrueLiteral(token);}
 
2654       token = jj_consume_token(FALSE);
 
2655                                     {if (true) return new FalseLiteral(token);}
 
2658       token = jj_consume_token(NULL);
 
2659                                     {if (true) return new NullLiteral(token);}
 
2662       literal = evaluableString();
 
2663                                       {if (true) return literal;}
 
2666       jj_la1[71] = jj_gen;
 
2667       jj_consume_token(-1);
 
2668       throw new ParseException();
 
2670     throw new Error("Missing return statement in function");
 
2673   final public StringLiteral evaluableString() throws ParseException {
 
2674   ArrayList list = new ArrayList();
 
2676   Token token,lbrace,rbrace;
 
2677   AbstractVariable var;
 
2679     start = jj_consume_token(DOUBLEQUOTE);
 
2682       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2687         jj_la1[72] = jj_gen;
 
2690       jj_consume_token(DOLLARS);
 
2691       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2693         token = jj_consume_token(IDENTIFIER);
 
2694                               list.add(new Variable(token.image,
 
2699         lbrace = jj_consume_token(LBRACE1);
 
2700         token = jj_consume_token(ID);
 
2701           list.add(new Variable(token.image,
 
2704         rbrace = jj_consume_token(RBRACE1);
 
2707         jj_la1[73] = jj_gen;
 
2708         jj_consume_token(-1);
 
2709         throw new ParseException();
 
2712     end = jj_consume_token(DOUBLEQUOTE2);
 
2713   AbstractVariable[] vars = new AbstractVariable[list.size()];
 
2715   {if (true) return new StringLiteral(jj_input_stream.getCurrentBuffer().substring(start.sourceEnd,end.sourceStart),
 
2719     throw new Error("Missing return statement in function");
 
2722   final public FunctionCall Arguments(final Expression func) throws ParseException {
 
2723 Expression[] args = null;
 
2724 final Token token,lparen;
 
2725     lparen = jj_consume_token(LPAREN);
 
2726     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2742     case INTEGER_LITERAL:
 
2743     case FLOATING_POINT_LITERAL:
 
2744     case STRING_LITERAL:
 
2749       args = ArgumentList();
 
2752       jj_la1[74] = jj_gen;
 
2756       token = jj_consume_token(RPAREN);
 
2757      {if (true) return new FunctionCall(func,args,token.sourceEnd);}
 
2758     } catch (ParseException e) {
 
2759     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
 
2762         errorStart = lparen.sourceEnd+1;
 
2763         errorEnd   = lparen.sourceEnd+2;
 
2765         errorStart = args[args.length-1].sourceEnd+1;
 
2766         errorEnd   = args[args.length-1].sourceEnd+2;
 
2768     processParseExceptionDebug(e);
 
2770   int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
 
2771   {if (true) return new FunctionCall(func,args,sourceEnd);}
 
2772     throw new Error("Missing return statement in function");
 
2776  * An argument list is a list of arguments separated by comma :
 
2777  * argumentDeclaration() (, argumentDeclaration)*
 
2778  * @return an array of arguments
 
2780   final public Expression[] ArgumentList() throws ParseException {
 
2782 final ArrayList list = new ArrayList();
 
2786    list.add(arg);pos = arg.sourceEnd;
 
2789       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2794         jj_la1[75] = jj_gen;
 
2797       token = jj_consume_token(COMMA);
 
2798                      pos = token.sourceEnd;
 
2802          pos = arg.sourceEnd;
 
2803       } catch (ParseException e) {
 
2804         errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
 
2808         processParseException(e);
 
2811    final Expression[] arguments = new Expression[list.size()];
 
2812    list.toArray(arguments);
 
2813    {if (true) return arguments;}
 
2814     throw new Error("Missing return statement in function");
 
2818  * A Statement without break.
 
2819  * @return a statement
 
2821   final public Statement StatementNoBreak() throws ParseException {
 
2822   final Statement statement;
 
2825       statement = expressionStatement();
 
2826                                          {if (true) return statement;}
 
2828       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2830         statement = LabeledStatement();
 
2831                                          {if (true) return statement;}
 
2834         statement = Block();
 
2835                                          {if (true) return statement;}
 
2838         statement = EmptyStatement();
 
2839                                          {if (true) return statement;}
 
2842         statement = SwitchStatement();
 
2843                                          {if (true) return statement;}
 
2846         statement = IfStatement();
 
2847                                          {if (true) return statement;}
 
2850         statement = WhileStatement();
 
2851                                          {if (true) return statement;}
 
2854         statement = DoStatement();
 
2855                                          {if (true) return statement;}
 
2858         statement = ForStatement();
 
2859                                          {if (true) return statement;}
 
2862         statement = ForeachStatement();
 
2863                                          {if (true) return statement;}
 
2866         statement = ContinueStatement();
 
2867                                          {if (true) return statement;}
 
2870         statement = ReturnStatement();
 
2871                                          {if (true) return statement;}
 
2874         statement = EchoStatement();
 
2875                                          {if (true) return statement;}
 
2882         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2884           token = jj_consume_token(AT);
 
2887           jj_la1[76] = jj_gen;
 
2890         statement = IncludeStatement();
 
2891    if (token != null) {
 
2892     ((InclusionStatement)statement).silent = true;
 
2893     statement.sourceStart = token.sourceStart;
 
2895   {if (true) return statement;}
 
2898         statement = StaticStatement();
 
2899                                          {if (true) return statement;}
 
2902         statement = GlobalStatement();
 
2903                                          {if (true) return statement;}
 
2906         statement = defineStatement();
 
2907                                          currentSegment.add((Outlineable)statement);{if (true) return statement;}
 
2910         jj_la1[77] = jj_gen;
 
2911         jj_consume_token(-1);
 
2912         throw new ParseException();
 
2915     throw new Error("Missing return statement in function");
 
2919  * A statement expression.
 
2921  * @return an expression
 
2923   final public Statement expressionStatement() throws ParseException {
 
2924   final Statement statement;
 
2926     statement = Expression();
 
2928       token = jj_consume_token(SEMICOLON);
 
2929      statement.sourceEnd = token.sourceEnd;
 
2930     } catch (ParseException e) {
 
2931     if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
 
2932       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2934       errorStart = statement.sourceEnd+1;
 
2935       errorEnd   = statement.sourceEnd+1;
 
2936       processParseExceptionDebug(e);
 
2939    {if (true) return statement;}
 
2940     throw new Error("Missing return statement in function");
 
2943   final public Define defineStatement() throws ParseException {
 
2944   Expression defineName,defineValue;
 
2945   final Token defineToken;
 
2948     defineToken = jj_consume_token(DEFINE);
 
2949                           pos = defineToken.sourceEnd+1;
 
2951       token = jj_consume_token(LPAREN);
 
2952      pos = token.sourceEnd+1;
 
2953     } catch (ParseException e) {
 
2954     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2958     processParseExceptionDebug(e);
 
2961       defineName = Expression();
 
2962      pos = defineName.sourceEnd+1;
 
2963     } catch (ParseException e) {
 
2964     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2968     processParseExceptionDebug(e);
 
2969     defineName = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
 
2972       token = jj_consume_token(COMMA);
 
2973      pos = defineName.sourceEnd+1;
 
2974     } catch (ParseException e) {
 
2975     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2979     processParseExceptionDebug(e);
 
2982       defineValue = Expression();
 
2983      pos = defineValue.sourceEnd+1;
 
2984     } catch (ParseException e) {
 
2985     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2989     processParseExceptionDebug(e);
 
2990     defineValue = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
 
2993       token = jj_consume_token(RPAREN);
 
2994      pos = token.sourceEnd+1;
 
2995     } catch (ParseException e) {
 
2996     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
3000     processParseExceptionDebug(e);
 
3002    {if (true) return new Define(currentSegment,
 
3005                      defineToken.sourceStart,
 
3007     throw new Error("Missing return statement in function");
 
3011  * A Normal statement.
 
3013   final public Statement Statement() throws ParseException {
 
3014   final Statement statement;
 
3015     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3047     case INTEGER_LITERAL:
 
3048     case FLOATING_POINT_LITERAL:
 
3049     case STRING_LITERAL:
 
3056       statement = StatementNoBreak();
 
3057                                   {if (true) return statement;}
 
3060       statement = BreakStatement();
 
3061                                   {if (true) return statement;}
 
3064       jj_la1[78] = jj_gen;
 
3065       jj_consume_token(-1);
 
3066       throw new ParseException();
 
3068     throw new Error("Missing return statement in function");
 
3072  * An html block inside a php syntax.
 
3074   final public HTMLBlock htmlBlock() throws ParseException {
 
3075   final int startIndex = nodePtr;
 
3076   final AstNode[] blockNodes;
 
3079     phpEnd = jj_consume_token(PHPEND);
 
3080    htmlStart = phpEnd.sourceEnd;
 
3083       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3088         jj_la1[79] = jj_gen;
 
3094       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3096         jj_consume_token(PHPSTARTLONG);
 
3099         jj_consume_token(PHPSTARTSHORT);
 
3102         jj_la1[80] = jj_gen;
 
3103         jj_consume_token(-1);
 
3104         throw new ParseException();
 
3106      createNewHTMLCode();
 
3107     } catch (ParseException e) {
 
3108     errorMessage = "unexpected end of file , '<?php' expected";
 
3110     errorStart = e.currentToken.sourceStart;
 
3111     errorEnd   = e.currentToken.sourceEnd;
 
3112     {if (true) throw e;}
 
3114   nbNodes    = nodePtr - startIndex;
 
3116     {if (true) return null;}
 
3118   blockNodes = new AstNode[nbNodes];
 
3119   System.arraycopy(nodes,startIndex+1,blockNodes,0,nbNodes);
 
3120   nodePtr = startIndex;
 
3121   {if (true) return new HTMLBlock(blockNodes);}
 
3122     throw new Error("Missing return statement in function");
 
3126  * An include statement. It's "include" an expression;
 
3128   final public InclusionStatement IncludeStatement() throws ParseException {
 
3131   final InclusionStatement inclusionStatement;
 
3132   final Token token, token2;
 
3134     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3136       token = jj_consume_token(REQUIRE);
 
3137                                  keyword = InclusionStatement.REQUIRE;pos=token.sourceEnd;
 
3140       token = jj_consume_token(REQUIRE_ONCE);
 
3141                                  keyword = InclusionStatement.REQUIRE_ONCE;pos=token.sourceEnd;
 
3144       token = jj_consume_token(INCLUDE);
 
3145                                  keyword = InclusionStatement.INCLUDE;pos=token.sourceEnd;
 
3148       token = jj_consume_token(INCLUDE_ONCE);
 
3149                                  keyword = InclusionStatement.INCLUDE_ONCE;pos=token.sourceEnd;
 
3152       jj_la1[81] = jj_gen;
 
3153       jj_consume_token(-1);
 
3154       throw new ParseException();
 
3157       expr = Expression();
 
3158      pos = expr.sourceEnd;
 
3159     } catch (ParseException e) {
 
3160     if (errorMessage != null) {
 
3161       {if (true) throw e;}
 
3163     errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
 
3165     errorStart   = e.currentToken.next.sourceStart;
 
3166     errorEnd     = e.currentToken.next.sourceEnd;
 
3167     expr = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
 
3168     processParseExceptionDebug(e);
 
3171       token2 = jj_consume_token(SEMICOLON);
 
3172      pos=token2.sourceEnd;
 
3173     } catch (ParseException e) {
 
3174     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
3176     errorStart   = e.currentToken.next.sourceStart;
 
3177     errorEnd     = e.currentToken.next.sourceEnd;
 
3178     processParseExceptionDebug(e);
 
3180    inclusionStatement = new InclusionStatement(currentSegment,
 
3185    currentSegment.add(inclusionStatement);
 
3186    {if (true) return inclusionStatement;}
 
3187     throw new Error("Missing return statement in function");
 
3190   final public PrintExpression PrintExpression() throws ParseException {
 
3191   final Expression expr;
 
3192   final Token printToken;
 
3193     token = jj_consume_token(PRINT);
 
3194     expr = Expression();
 
3195    {if (true) return new PrintExpression(expr,token.sourceStart,expr.sourceEnd);}
 
3196     throw new Error("Missing return statement in function");
 
3199   final public ListExpression ListExpression() throws ParseException {
 
3200   Expression expr = null;
 
3201   final Expression expression;
 
3202   final ArrayList list = new ArrayList();
 
3204   final Token listToken, rParen;
 
3206     listToken = jj_consume_token(LIST);
 
3207                       pos = listToken.sourceEnd;
 
3209       token = jj_consume_token(LPAREN);
 
3210                       pos = token.sourceEnd;
 
3211     } catch (ParseException e) {
 
3212     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
3214     errorStart   = listToken.sourceEnd+1;
 
3215     errorEnd     = listToken.sourceEnd+1;
 
3216     processParseExceptionDebug(e);
 
3218     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3220       expr = VariableDeclaratorId();
 
3221      list.add(expr);pos = expr.sourceEnd;
 
3224       jj_la1[82] = jj_gen;
 
3227    if (expr == null) list.add(null);
 
3230       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3235         jj_la1[83] = jj_gen;
 
3239         token = jj_consume_token(COMMA);
 
3240        pos = token.sourceEnd;
 
3241       } catch (ParseException e) {
 
3242       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
3246       processParseExceptionDebug(e);
 
3248       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3250         expr = VariableDeclaratorId();
 
3251                                     list.add(expr);pos = expr.sourceEnd;
 
3254         jj_la1[84] = jj_gen;
 
3259       rParen = jj_consume_token(RPAREN);
 
3260      pos = rParen.sourceEnd;
 
3261     } catch (ParseException e) {
 
3262     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
3266       processParseExceptionDebug(e);
 
3268     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3270       jj_consume_token(ASSIGN);
 
3271       expression = Expression();
 
3272     final AbstractVariable[] vars = new AbstractVariable[list.size()];
 
3274     {if (true) return new ListExpression(vars,
 
3276                               listToken.sourceStart,
 
3277                               expression.sourceEnd);}
 
3280       jj_la1[85] = jj_gen;
 
3283     final AbstractVariable[] vars = new AbstractVariable[list.size()];
 
3285     {if (true) return new ListExpression(vars,listToken.sourceStart,pos);}
 
3286     throw new Error("Missing return statement in function");
 
3290  * An echo statement.
 
3291  * echo anyexpression (, otherexpression)*
 
3293   final public EchoStatement EchoStatement() throws ParseException {
 
3294   final ArrayList expressions = new ArrayList();
 
3297   Token token2 = null;
 
3298     token = jj_consume_token(ECHO);
 
3299     expr = Expression();
 
3300    expressions.add(expr);
 
3303       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3308         jj_la1[86] = jj_gen;
 
3311       jj_consume_token(COMMA);
 
3312       expr = Expression();
 
3313      expressions.add(expr);
 
3316       token2 = jj_consume_token(SEMICOLON);
 
3317     } catch (ParseException e) {
 
3318     if (e.currentToken.next.kind != 4) {
 
3319       errorMessage = "';' expected after 'echo' statement";
 
3321       errorStart   = e.currentToken.sourceEnd;
 
3322       errorEnd     = e.currentToken.sourceEnd;
 
3323       processParseExceptionDebug(e);
 
3326    final Expression[] exprs = new Expression[expressions.size()];
 
3327    expressions.toArray(exprs);
 
3328    if (token2 == null) {
 
3329      {if (true) return new EchoStatement(exprs,token.sourceStart, exprs[exprs.length-1].sourceEnd);}
 
3331    {if (true) return new EchoStatement(exprs,token.sourceStart, token2.sourceEnd);}
 
3332     throw new Error("Missing return statement in function");
 
3335   final public GlobalStatement GlobalStatement() throws ParseException {
 
3337    final ArrayList vars = new ArrayList();
 
3338    final GlobalStatement global;
 
3339    final Token token, token2;
 
3341     token = jj_consume_token(GLOBAL);
 
3343      vars.add(expr);pos = expr.sourceEnd+1;
 
3346       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3351         jj_la1[87] = jj_gen;
 
3354       jj_consume_token(COMMA);
 
3356      vars.add(expr);pos = expr.sourceEnd+1;
 
3359       token2 = jj_consume_token(SEMICOLON);
 
3360      pos = token2.sourceEnd+1;
 
3361     } catch (ParseException e) {
 
3362     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3366     processParseExceptionDebug(e);
 
3368     final Variable[] variables = new Variable[vars.size()];
 
3369     vars.toArray(variables);
 
3370     global = new GlobalStatement(currentSegment,
 
3374     currentSegment.add(global);
 
3375     {if (true) return global;}
 
3376     throw new Error("Missing return statement in function");
 
3379   final public StaticStatement StaticStatement() throws ParseException {
 
3380   final ArrayList vars = new ArrayList();
 
3381   VariableDeclaration expr;
 
3382   final Token token, token2;
 
3384     token = jj_consume_token(STATIC);
 
3385     expr = VariableDeclarator();
 
3386                                                 vars.add(expr);pos = expr.sourceEnd+1;
 
3389       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3394         jj_la1[88] = jj_gen;
 
3397       jj_consume_token(COMMA);
 
3398       expr = VariableDeclarator();
 
3399                                          vars.add(expr);pos = expr.sourceEnd+1;
 
3402       token2 = jj_consume_token(SEMICOLON);
 
3403      pos = token2.sourceEnd+1;
 
3404     } catch (ParseException e) {
 
3405     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3409     processParseException(e);
 
3411     final VariableDeclaration[] variables = new VariableDeclaration[vars.size()];
 
3412     vars.toArray(variables);
 
3413     {if (true) return new StaticStatement(variables,
 
3416     throw new Error("Missing return statement in function");
 
3419   final public LabeledStatement LabeledStatement() throws ParseException {
 
3421   final Statement statement;
 
3422     label = jj_consume_token(IDENTIFIER);
 
3423     jj_consume_token(COLON);
 
3424     statement = Statement();
 
3425    {if (true) return new LabeledStatement(label.image,statement,label.sourceStart,statement.sourceEnd);}
 
3426     throw new Error("Missing return statement in function");
 
3436   final public Block Block() throws ParseException {
 
3437   final ArrayList list = new ArrayList();
 
3438   Statement statement;
 
3439   final Token token, token2;
 
3442       token = jj_consume_token(LBRACE);
 
3443      pos = token.sourceEnd+1;start=token.sourceStart;
 
3444     } catch (ParseException e) {
 
3445     errorMessage = "'{' expected";
 
3447     pos = this.token.sourceEnd+1;
 
3451     processParseExceptionDebug(e);
 
3455       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3491       case INTEGER_LITERAL:
 
3492       case FLOATING_POINT_LITERAL:
 
3493       case STRING_LITERAL:
 
3503         jj_la1[89] = jj_gen;
 
3506       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3541       case INTEGER_LITERAL:
 
3542       case FLOATING_POINT_LITERAL:
 
3543       case STRING_LITERAL:
 
3550         statement = BlockStatement();
 
3551                                   list.add(statement);pos = statement.sourceEnd+1;
 
3554         statement = htmlBlock();
 
3555                                   if (statement != null) {
 
3556                                     list.add(statement);
 
3557                                     pos = statement.sourceEnd+1;
 
3559                                   pos = this.token.sourceEnd+1;
 
3562         jj_la1[90] = jj_gen;
 
3563         jj_consume_token(-1);
 
3564         throw new ParseException();
 
3568       token2 = jj_consume_token(RBRACE);
 
3569      pos = token2.sourceEnd+1;
 
3570     } catch (ParseException e) {
 
3571     errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
 
3575     processParseExceptionDebug(e);
 
3577   final Statement[] statements = new Statement[list.size()];
 
3578   list.toArray(statements);
 
3579   {if (true) return new Block(statements,start,pos);}
 
3580     throw new Error("Missing return statement in function");
 
3583   final public Statement BlockStatement() throws ParseException {
 
3584   final Statement statement;
 
3585     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3618     case INTEGER_LITERAL:
 
3619     case FLOATING_POINT_LITERAL:
 
3620     case STRING_LITERAL:
 
3628         statement = Statement();
 
3629                                      if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3630                                      {if (true) return statement;}
 
3631       } catch (ParseException e) {
 
3632     errorMessage = "unexpected token : '"+ e.currentToken.image +"', a statement was expected";
 
3634     errorStart = e.currentToken.sourceStart;
 
3635     errorEnd   = e.currentToken.sourceEnd;
 
3636     {if (true) throw e;}
 
3640       statement = ClassDeclaration();
 
3641                                    {if (true) return statement;}
 
3644       statement = MethodDeclaration();
 
3645                                    if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3646                                    currentSegment.add((MethodDeclaration) statement);
 
3647                                    ((MethodDeclaration) statement).analyzeCode();
 
3648                                    {if (true) return statement;}
 
3651       jj_la1[91] = jj_gen;
 
3652       jj_consume_token(-1);
 
3653       throw new ParseException();
 
3655     throw new Error("Missing return statement in function");
 
3659  * A Block statement that will not contain any 'break'
 
3661   final public Statement BlockStatementNoBreak() throws ParseException {
 
3662   final Statement statement;
 
3663     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3695     case INTEGER_LITERAL:
 
3696     case FLOATING_POINT_LITERAL:
 
3697     case STRING_LITERAL:
 
3704       statement = StatementNoBreak();
 
3705                                    {if (true) return statement;}
 
3708       statement = ClassDeclaration();
 
3709                                    {if (true) return statement;}
 
3712       statement = MethodDeclaration();
 
3713                                    currentSegment.add((MethodDeclaration) statement);
 
3714                                    ((MethodDeclaration) statement).analyzeCode();
 
3715                                    {if (true) return statement;}
 
3718       jj_la1[92] = jj_gen;
 
3719       jj_consume_token(-1);
 
3720       throw new ParseException();
 
3722     throw new Error("Missing return statement in function");
 
3726  * used only by ForInit()
 
3728   final public Expression[] LocalVariableDeclaration() throws ParseException {
 
3729   final ArrayList list = new ArrayList();
 
3735       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3740         jj_la1[93] = jj_gen;
 
3743       jj_consume_token(COMMA);
 
3747     final Expression[] vars = new Expression[list.size()];
 
3749     {if (true) return vars;}
 
3750     throw new Error("Missing return statement in function");
 
3754  * used only by LocalVariableDeclaration().
 
3756   final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
 
3757   final Variable varName;
 
3758   Expression initializer = null;
 
3759     varName = Variable();
 
3760     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3762       jj_consume_token(ASSIGN);
 
3763       initializer = Expression();
 
3766       jj_la1[94] = jj_gen;
 
3769    if (initializer == null) {
 
3770     {if (true) return new VariableDeclaration(currentSegment,
 
3772                                    varName.sourceStart,
 
3773                                    varName.sourceEnd);}
 
3775     {if (true) return new VariableDeclaration(currentSegment,
 
3778                                    VariableDeclaration.EQUAL,
 
3779                                    varName.sourceStart);}
 
3780     throw new Error("Missing return statement in function");
 
3783   final public EmptyStatement EmptyStatement() throws ParseException {
 
3785     token = jj_consume_token(SEMICOLON);
 
3786    {if (true) return new EmptyStatement(token.sourceStart,token.sourceEnd);}
 
3787     throw new Error("Missing return statement in function");
 
3791  * used only by StatementExpressionList() which is used only by ForInit() and ForStatement()
 
3793   final public Expression StatementExpression() throws ParseException {
 
3794   final Expression expr;
 
3795   final Token operator;
 
3796     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3799       expr = PreIncDecExpression();
 
3800                                 {if (true) return expr;}
 
3807       expr = PrimaryExpression();
 
3808       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3811         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3813           operator = jj_consume_token(PLUS_PLUS);
 
3814                             {if (true) return new PostfixedUnaryExpression(expr,
 
3815                                                                 OperatorIds.PLUS_PLUS,
 
3816                                                                 operator.sourceEnd);}
 
3819           operator = jj_consume_token(MINUS_MINUS);
 
3820                               {if (true) return new PostfixedUnaryExpression(expr,
 
3821                                                                   OperatorIds.MINUS_MINUS,
 
3822                                                                   operator.sourceEnd);}
 
3825           jj_la1[95] = jj_gen;
 
3826           jj_consume_token(-1);
 
3827           throw new ParseException();
 
3831         jj_la1[96] = jj_gen;
 
3834    {if (true) return expr;}
 
3837       jj_la1[97] = jj_gen;
 
3838       jj_consume_token(-1);
 
3839       throw new ParseException();
 
3841     throw new Error("Missing return statement in function");
 
3844   final public SwitchStatement SwitchStatement() throws ParseException {
 
3845   Expression variable;
 
3846   final AbstractCase[] cases;
 
3847   final Token switchToken,lparenToken,rparenToken;
 
3849     switchToken = jj_consume_token(SWITCH);
 
3850                           pos = switchToken.sourceEnd+1;
 
3852       lparenToken = jj_consume_token(LPAREN);
 
3853      pos = lparenToken.sourceEnd+1;
 
3854     } catch (ParseException e) {
 
3855     errorMessage = "'(' expected after 'switch'";
 
3859     processParseExceptionDebug(e);
 
3862       variable = Expression();
 
3863                              pos = variable.sourceEnd+1;
 
3864     } catch (ParseException e) {
 
3865     if (errorMessage != null) {
 
3866       {if (true) throw e;}
 
3868     errorMessage = "expression expected";
 
3872     processParseExceptionDebug(e);
 
3873     variable = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
 
3876       rparenToken = jj_consume_token(RPAREN);
 
3877                             pos = rparenToken.sourceEnd+1;
 
3878     } catch (ParseException e) {
 
3879     errorMessage = "')' expected";
 
3883     processParseExceptionDebug(e);
 
3885     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3887       cases = switchStatementBrace();
 
3890       cases = switchStatementColon(switchToken.sourceStart, switchToken.sourceEnd);
 
3893       jj_la1[98] = jj_gen;
 
3894       jj_consume_token(-1);
 
3895       throw new ParseException();
 
3897    {if (true) return new SwitchStatement(variable,
 
3899                               switchToken.sourceStart,
 
3900                               this.token.sourceEnd);}
 
3901     throw new Error("Missing return statement in function");
 
3904   final public AbstractCase[] switchStatementBrace() throws ParseException {
 
3906   final ArrayList cases = new ArrayList();
 
3909     token = jj_consume_token(LBRACE);
 
3910                     pos = token.sourceEnd;
 
3913       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3919         jj_la1[99] = jj_gen;
 
3922       cas = switchLabel0();
 
3923                          cases.add(cas);pos = cas.sourceEnd;
 
3926       token = jj_consume_token(RBRACE);
 
3927      pos = token.sourceEnd;
 
3928     } catch (ParseException e) {
 
3929     errorMessage = "'}' expected";
 
3933     processParseExceptionDebug(e);
 
3935     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3936     cases.toArray(abcase);
 
3937     {if (true) return abcase;}
 
3938     throw new Error("Missing return statement in function");
 
3942  * A Switch statement with : ... endswitch;
 
3943  * @param start the begin offset of the switch
 
3944  * @param end the end offset of the switch
 
3946   final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
 
3948   final ArrayList cases = new ArrayList();
 
3951     token = jj_consume_token(COLON);
 
3952                    pos = token.sourceEnd;
 
3954   setMarker(fileToParse,
 
3955             "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
 
3959             "Line " + token.beginLine);
 
3960   } catch (CoreException e) {
 
3961     PHPeclipsePlugin.log(e);
 
3965       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3971         jj_la1[100] = jj_gen;
 
3974       cas = switchLabel0();
 
3975                           cases.add(cas);pos = cas.sourceEnd;
 
3978       token = jj_consume_token(ENDSWITCH);
 
3979                          pos = token.sourceEnd;
 
3980     } catch (ParseException e) {
 
3981     errorMessage = "'endswitch' expected";
 
3985     processParseExceptionDebug(e);
 
3988       token = jj_consume_token(SEMICOLON);
 
3989                          pos = token.sourceEnd;
 
3990     } catch (ParseException e) {
 
3991     errorMessage = "';' expected after 'endswitch' keyword";
 
3995     processParseExceptionDebug(e);
 
3997     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3998     cases.toArray(abcase);
 
3999     {if (true) return abcase;}
 
4000     throw new Error("Missing return statement in function");
 
4003   final public AbstractCase switchLabel0() throws ParseException {
 
4004   final Expression expr;
 
4005   Statement statement;
 
4006   final ArrayList stmts = new ArrayList();
 
4007   final Token token = this.token;
 
4008   final int start = this.token.next.sourceStart;
 
4009     expr = SwitchLabel();
 
4012       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4048       case INTEGER_LITERAL:
 
4049       case FLOATING_POINT_LITERAL:
 
4050       case STRING_LITERAL:
 
4060         jj_la1[101] = jj_gen;
 
4063       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4097       case INTEGER_LITERAL:
 
4098       case FLOATING_POINT_LITERAL:
 
4099       case STRING_LITERAL:
 
4106         statement = BlockStatementNoBreak();
 
4107                                          stmts.add(statement);
 
4110         statement = htmlBlock();
 
4111                                          if (statement != null) {stmts.add(statement);}
 
4114         statement = BreakStatement();
 
4115                                          stmts.add(statement);
 
4118         jj_la1[102] = jj_gen;
 
4119         jj_consume_token(-1);
 
4120         throw new ParseException();
 
4123     final int listSize = stmts.size();
 
4124     final Statement[] stmtsArray = new Statement[listSize];
 
4125     stmts.toArray(stmtsArray);
 
4126     if (expr == null) {//it's a default
 
4127       final int end = this.token.next.sourceStart;
 
4128       {if (true) return new DefaultCase(stmtsArray,start,end);}
 
4130     if (listSize != 0) {
 
4131       {if (true) return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);}
 
4133       {if (true) return new Case(expr,stmtsArray,expr.sourceStart,expr.sourceEnd);}
 
4135     throw new Error("Missing return statement in function");
 
4140  * case Expression() :
 
4142  * @return the if it was a case and null if not
 
4144   final public Expression SwitchLabel() throws ParseException {
 
4145   final Expression expr;
 
4146     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4148       token = jj_consume_token(CASE);
 
4150         expr = Expression();
 
4151       } catch (ParseException e) {
 
4152     if (errorMessage != null) {if (true) throw e;}
 
4153     errorMessage = "expression expected after 'case' keyword";
 
4155     errorStart = token.sourceEnd +1;
 
4156     errorEnd   = token.sourceEnd +1;
 
4157     {if (true) throw e;}
 
4160         token = jj_consume_token(COLON);
 
4161       } catch (ParseException e) {
 
4162     errorMessage = "':' expected after case expression";
 
4164     errorStart = expr.sourceEnd+1;
 
4165     errorEnd   = expr.sourceEnd+1;
 
4166     processParseExceptionDebug(e);
 
4168    {if (true) return expr;}
 
4171       token = jj_consume_token(_DEFAULT);
 
4173         jj_consume_token(COLON);
 
4174       } catch (ParseException e) {
 
4175     errorMessage = "':' expected after 'default' keyword";
 
4177     errorStart = token.sourceEnd+1;
 
4178     errorEnd   = token.sourceEnd+1;
 
4179     processParseExceptionDebug(e);
 
4181    {if (true) return null;}
 
4184       jj_la1[103] = jj_gen;
 
4185       jj_consume_token(-1);
 
4186       throw new ParseException();
 
4188     throw new Error("Missing return statement in function");
 
4191   final public Break BreakStatement() throws ParseException {
 
4192   Expression expression = null;
 
4193   final Token token, token2;
 
4195     token = jj_consume_token(BREAK);
 
4196                    pos = token.sourceEnd+1;
 
4197     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4213     case INTEGER_LITERAL:
 
4214     case FLOATING_POINT_LITERAL:
 
4215     case STRING_LITERAL:
 
4220       expression = Expression();
 
4221                                pos = expression.sourceEnd+1;
 
4224       jj_la1[104] = jj_gen;
 
4228       token2 = jj_consume_token(SEMICOLON);
 
4229      pos = token2.sourceEnd;
 
4230     } catch (ParseException e) {
 
4231     errorMessage = "';' expected after 'break' keyword";
 
4235     processParseExceptionDebug(e);
 
4237    {if (true) return new Break(expression, token.sourceStart, pos);}
 
4238     throw new Error("Missing return statement in function");
 
4241   final public IfStatement IfStatement() throws ParseException {
 
4242   final Expression condition;
 
4243   final IfStatement ifStatement;
 
4245     token = jj_consume_token(IF);
 
4246     condition = Condition("if");
 
4247     ifStatement = IfStatement0(condition,token.sourceStart,token.sourceEnd);
 
4248    {if (true) return ifStatement;}
 
4249     throw new Error("Missing return statement in function");
 
4252   final public Expression Condition(final String keyword) throws ParseException {
 
4253   final Expression condition;
 
4255       jj_consume_token(LPAREN);
 
4256     } catch (ParseException e) {
 
4257     errorMessage = "'(' expected after " + keyword + " keyword";
 
4259     errorStart = this.token.sourceEnd + 1;
 
4260     errorEnd   = this.token.sourceEnd + 1;
 
4261     processParseExceptionDebug(e);
 
4263     condition = Expression();
 
4265       jj_consume_token(RPAREN);
 
4266     } catch (ParseException e) {
 
4267     errorMessage = "')' expected after " + keyword + " keyword";
 
4269     errorStart = condition.sourceEnd+1;
 
4270     errorEnd   = condition.sourceEnd+1;
 
4271     processParseExceptionDebug(e);
 
4273    {if (true) return condition;}
 
4274     throw new Error("Missing return statement in function");
 
4277   final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
 
4278   Statement statement;
 
4279   final Statement stmt;
 
4280   final Statement[] statementsArray;
 
4281   ElseIf elseifStatement;
 
4282   Else elseStatement = null;
 
4283   final ArrayList stmts;
 
4284   final ArrayList elseIfList = new ArrayList();
 
4285   final ElseIf[] elseIfs;
 
4286   int pos = jj_input_stream.getPosition();
 
4287   final int endStatements;
 
4288     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4290       jj_consume_token(COLON);
 
4291    stmts = new ArrayList();
 
4294         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4328         case INTEGER_LITERAL:
 
4329         case FLOATING_POINT_LITERAL:
 
4330         case STRING_LITERAL:
 
4340           jj_la1[105] = jj_gen;
 
4343         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4376         case INTEGER_LITERAL:
 
4377         case FLOATING_POINT_LITERAL:
 
4378         case STRING_LITERAL:
 
4385           statement = Statement();
 
4386                               stmts.add(statement);
 
4389           statement = htmlBlock();
 
4390                               if (statement != null) {stmts.add(statement);}
 
4393           jj_la1[106] = jj_gen;
 
4394           jj_consume_token(-1);
 
4395           throw new ParseException();
 
4398     endStatements = jj_input_stream.getPosition();
 
4401         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4406           jj_la1[107] = jj_gen;
 
4409         elseifStatement = ElseIfStatementColon();
 
4410                                               elseIfList.add(elseifStatement);
 
4412       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4414         elseStatement = ElseStatementColon();
 
4417         jj_la1[108] = jj_gen;
 
4421   setMarker(fileToParse,
 
4422             "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
 
4426             "Line " + token.beginLine);
 
4427   } catch (CoreException e) {
 
4428     PHPeclipsePlugin.log(e);
 
4431         jj_consume_token(ENDIF);
 
4432       } catch (ParseException e) {
 
4433     errorMessage = "'endif' expected";
 
4435     errorStart = e.currentToken.sourceStart;
 
4436     errorEnd   = e.currentToken.sourceEnd;
 
4437     {if (true) throw e;}
 
4440         jj_consume_token(SEMICOLON);
 
4441       } catch (ParseException e) {
 
4442     errorMessage = "';' expected after 'endif' keyword";
 
4444     errorStart = e.currentToken.sourceStart;
 
4445     errorEnd   = e.currentToken.sourceEnd;
 
4446     {if (true) throw e;}
 
4448     elseIfs = new ElseIf[elseIfList.size()];
 
4449     elseIfList.toArray(elseIfs);
 
4450     if (stmts.size() == 1) {
 
4451       {if (true) return new IfStatement(condition,
 
4452                              (Statement) stmts.get(0),
 
4456                               jj_input_stream.getPosition());}
 
4458       statementsArray = new Statement[stmts.size()];
 
4459       stmts.toArray(statementsArray);
 
4460       {if (true) return new IfStatement(condition,
 
4461                              new Block(statementsArray,pos,endStatements),
 
4465                              jj_input_stream.getPosition());}
 
4501     case INTEGER_LITERAL:
 
4502     case FLOATING_POINT_LITERAL:
 
4503     case STRING_LITERAL:
 
4510       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4543       case INTEGER_LITERAL:
 
4544       case FLOATING_POINT_LITERAL:
 
4545       case STRING_LITERAL:
 
4558         jj_la1[109] = jj_gen;
 
4559         jj_consume_token(-1);
 
4560         throw new ParseException();
 
4564         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4569           jj_la1[110] = jj_gen;
 
4572         elseifStatement = ElseIfStatement();
 
4573                                                       elseIfList.add(elseifStatement);
 
4575       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4577         jj_consume_token(ELSE);
 
4579        pos = jj_input_stream.getPosition();
 
4580           statement = Statement();
 
4581        elseStatement = new Else(statement,pos,jj_input_stream.getPosition());
 
4582         } catch (ParseException e) {
 
4583       if (errorMessage != null) {
 
4584         {if (true) throw e;}
 
4586       errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
 
4588       errorStart = e.currentToken.sourceStart;
 
4589       errorEnd   = e.currentToken.sourceEnd;
 
4590       {if (true) throw e;}
 
4594         jj_la1[111] = jj_gen;
 
4597     elseIfs = new ElseIf[elseIfList.size()];
 
4598     elseIfList.toArray(elseIfs);
 
4599     {if (true) return new IfStatement(condition,
 
4604                            jj_input_stream.getPosition());}
 
4607       jj_la1[112] = jj_gen;
 
4608       jj_consume_token(-1);
 
4609       throw new ParseException();
 
4611     throw new Error("Missing return statement in function");
 
4614   final public ElseIf ElseIfStatementColon() throws ParseException {
 
4615   final Expression condition;
 
4616   Statement statement;
 
4617   final ArrayList list = new ArrayList();
 
4618   final Token elseifToken;
 
4619     elseifToken = jj_consume_token(ELSEIF);
 
4620     condition = Condition("elseif");
 
4621     jj_consume_token(COLON);
 
4624       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4658       case INTEGER_LITERAL:
 
4659       case FLOATING_POINT_LITERAL:
 
4660       case STRING_LITERAL:
 
4670         jj_la1[113] = jj_gen;
 
4673       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4706       case INTEGER_LITERAL:
 
4707       case FLOATING_POINT_LITERAL:
 
4708       case STRING_LITERAL:
 
4715         statement = Statement();
 
4716                                       list.add(statement);
 
4719         statement = htmlBlock();
 
4720                                       if (statement != null) {list.add(statement);}
 
4723         jj_la1[114] = jj_gen;
 
4724         jj_consume_token(-1);
 
4725         throw new ParseException();
 
4728   final int sizeList = list.size();
 
4729   final Statement[] stmtsArray = new Statement[sizeList];
 
4730   list.toArray(stmtsArray);
 
4731   {if (true) return new ElseIf(condition,stmtsArray ,
 
4732                     elseifToken.sourceStart,
 
4733                     stmtsArray[sizeList-1].sourceEnd);}
 
4734     throw new Error("Missing return statement in function");
 
4737   final public Else ElseStatementColon() throws ParseException {
 
4738   Statement statement;
 
4739   final ArrayList list = new ArrayList();
 
4740   final Token elseToken;
 
4741     elseToken = jj_consume_token(ELSE);
 
4742     jj_consume_token(COLON);
 
4745       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4779       case INTEGER_LITERAL:
 
4780       case FLOATING_POINT_LITERAL:
 
4781       case STRING_LITERAL:
 
4791         jj_la1[115] = jj_gen;
 
4794       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4827       case INTEGER_LITERAL:
 
4828       case FLOATING_POINT_LITERAL:
 
4829       case STRING_LITERAL:
 
4836         statement = Statement();
 
4837                                                          list.add(statement);
 
4840         statement = htmlBlock();
 
4841                                              if (statement != null) {list.add(statement);}
 
4844         jj_la1[116] = jj_gen;
 
4845         jj_consume_token(-1);
 
4846         throw new ParseException();
 
4849   final int sizeList = list.size();
 
4850   final Statement[] stmtsArray = new Statement[sizeList];
 
4851   list.toArray(stmtsArray);
 
4852   {if (true) return new Else(stmtsArray,elseToken.sourceStart,stmtsArray[sizeList-1].sourceEnd);}
 
4853     throw new Error("Missing return statement in function");
 
4856   final public ElseIf ElseIfStatement() throws ParseException {
 
4857   final Expression condition;
 
4858   //final Statement statement;
 
4859   final Token elseifToken;
 
4860   final Statement[] statement = new Statement[1];
 
4861     elseifToken = jj_consume_token(ELSEIF);
 
4862     condition = Condition("elseif");
 
4863     statement[0] = Statement();
 
4864   {if (true) return new ElseIf(condition,statement,elseifToken.sourceStart,statement[0].sourceEnd);}
 
4865     throw new Error("Missing return statement in function");
 
4868   final public WhileStatement WhileStatement() throws ParseException {
 
4869   final Expression condition;
 
4870   final Statement action;
 
4871   final Token whileToken;
 
4872     whileToken = jj_consume_token(WHILE);
 
4873     condition = Condition("while");
 
4874     action = WhileStatement0(whileToken.sourceStart,whileToken.sourceEnd);
 
4875      {if (true) return new WhileStatement(condition,action,whileToken.sourceStart,action.sourceEnd);}
 
4876     throw new Error("Missing return statement in function");
 
4879   final public Statement WhileStatement0(final int start, final int end) throws ParseException {
 
4880   Statement statement;
 
4881   final ArrayList stmts = new ArrayList();
 
4882   final int pos = jj_input_stream.getPosition();
 
4883     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4885       jj_consume_token(COLON);
 
4888         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4921         case INTEGER_LITERAL:
 
4922         case FLOATING_POINT_LITERAL:
 
4923         case STRING_LITERAL:
 
4933           jj_la1[117] = jj_gen;
 
4936         statement = Statement();
 
4937                                     stmts.add(statement);
 
4940   setMarker(fileToParse,
 
4941             "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
 
4945             "Line " + token.beginLine);
 
4946   } catch (CoreException e) {
 
4947     PHPeclipsePlugin.log(e);
 
4950         jj_consume_token(ENDWHILE);
 
4951       } catch (ParseException e) {
 
4952     errorMessage = "'endwhile' expected";
 
4954     errorStart = e.currentToken.sourceStart;
 
4955     errorEnd   = e.currentToken.sourceEnd;
 
4956     {if (true) throw e;}
 
4959         jj_consume_token(SEMICOLON);
 
4960     final Statement[] stmtsArray = new Statement[stmts.size()];
 
4961     stmts.toArray(stmtsArray);
 
4962     {if (true) return new Block(stmtsArray,pos,jj_input_stream.getPosition());}
 
4963       } catch (ParseException e) {
 
4964     errorMessage = "';' expected after 'endwhile' keyword";
 
4966     errorStart = e.currentToken.sourceStart;
 
4967     errorEnd   = e.currentToken.sourceEnd;
 
4968     {if (true) throw e;}
 
5003     case INTEGER_LITERAL:
 
5004     case FLOATING_POINT_LITERAL:
 
5005     case STRING_LITERAL:
 
5012       statement = Statement();
 
5013    {if (true) return statement;}
 
5016       jj_la1[118] = jj_gen;
 
5017       jj_consume_token(-1);
 
5018       throw new ParseException();
 
5020     throw new Error("Missing return statement in function");
 
5023   final public DoStatement DoStatement() throws ParseException {
 
5024   final Statement action;
 
5025   final Expression condition;
 
5027   Token token2 = null;
 
5028     token = jj_consume_token(DO);
 
5029     action = Statement();
 
5030     jj_consume_token(WHILE);
 
5031     condition = Condition("while");
 
5033       token2 = jj_consume_token(SEMICOLON);
 
5034     } catch (ParseException e) {
 
5035     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
5037     errorStart = condition.sourceEnd+1;
 
5038     errorEnd   = condition.sourceEnd+1;
 
5039     processParseExceptionDebug(e);
 
5041     if (token2 == null) {
 
5042       {if (true) return new DoStatement(condition,action,token.sourceStart,condition.sourceEnd);}
 
5044     {if (true) return new DoStatement(condition,action,token.sourceStart,token2.sourceEnd);}
 
5045     throw new Error("Missing return statement in function");
 
5048   final public ForeachStatement ForeachStatement() throws ParseException {
 
5049   Statement statement = null;
 
5050   Expression expression = null;
 
5051   ArrayVariableDeclaration variable = null;
 
5053   Token lparenToken = null;
 
5054   Token asToken = null;
 
5055   Token rparenToken = null;
 
5057     foreachToken = jj_consume_token(FOREACH);
 
5059       lparenToken = jj_consume_token(LPAREN);
 
5060      pos = lparenToken.sourceEnd+1;
 
5061     } catch (ParseException e) {
 
5062     errorMessage = "'(' expected after 'foreach' keyword";
 
5064     errorStart = e.currentToken.sourceStart;
 
5065     errorEnd   = e.currentToken.sourceEnd;
 
5066     processParseExceptionDebug(e);
 
5067     {pos = foreachToken.sourceEnd+1;}
 
5070       expression = Expression();
 
5071      pos = expression.sourceEnd+1;
 
5072     } catch (ParseException e) {
 
5073     errorMessage = "variable expected";
 
5075     errorStart = e.currentToken.sourceStart;
 
5076     errorEnd   = e.currentToken.sourceEnd;
 
5077     processParseExceptionDebug(e);
 
5080       asToken = jj_consume_token(AS);
 
5081      pos = asToken.sourceEnd+1;
 
5082     } catch (ParseException e) {
 
5083     errorMessage = "'as' expected";
 
5085     errorStart = e.currentToken.sourceStart;
 
5086     errorEnd   = e.currentToken.sourceEnd;
 
5087     processParseExceptionDebug(e);
 
5090       variable = ArrayVariable();
 
5091      pos = variable.sourceEnd+1;
 
5092     } catch (ParseException e) {
 
5093     if (errorMessage != null) {if (true) throw e;}
 
5094     errorMessage = "variable expected";
 
5096     errorStart = e.currentToken.sourceStart;
 
5097     errorEnd   = e.currentToken.sourceEnd;
 
5098     processParseExceptionDebug(e);
 
5101       rparenToken = jj_consume_token(RPAREN);
 
5102      pos = rparenToken.sourceEnd+1;
 
5103     } catch (ParseException e) {
 
5104     errorMessage = "')' expected after 'foreach' keyword";
 
5106     errorStart = e.currentToken.sourceStart;
 
5107     errorEnd   = e.currentToken.sourceEnd;
 
5108     processParseExceptionDebug(e);
 
5111       statement = Statement();
 
5112      pos = statement.sourceEnd+1;
 
5113     } catch (ParseException e) {
 
5114     if (errorMessage != null) {if (true) throw e;}
 
5115     errorMessage = "statement expected";
 
5117     errorStart = e.currentToken.sourceStart;
 
5118     errorEnd   = e.currentToken.sourceEnd;
 
5119     processParseExceptionDebug(e);
 
5121    {if (true) return new ForeachStatement(expression,
 
5124                                foreachToken.sourceStart,
 
5126     throw new Error("Missing return statement in function");
 
5130  * a for declaration.
 
5131  * @return a node representing the for statement
 
5133   final public ForStatement ForStatement() throws ParseException {
 
5134 final Token token,tokenEndFor,token2,tokenColon;
 
5136 Expression[] initializations = null;
 
5137 Expression condition = null;
 
5138 Expression[] increments = null;
 
5140 final ArrayList list = new ArrayList();
 
5141     token = jj_consume_token(FOR);
 
5143       jj_consume_token(LPAREN);
 
5144     } catch (ParseException e) {
 
5145     errorMessage = "'(' expected after 'for' keyword";
 
5147     errorStart = token.sourceEnd;
 
5148     errorEnd   = token.sourceEnd +1;
 
5149     processParseExceptionDebug(e);
 
5151     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5167     case INTEGER_LITERAL:
 
5168     case FLOATING_POINT_LITERAL:
 
5169     case STRING_LITERAL:
 
5174       initializations = ForInit();
 
5177       jj_la1[119] = jj_gen;
 
5180     jj_consume_token(SEMICOLON);
 
5181     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5197     case INTEGER_LITERAL:
 
5198     case FLOATING_POINT_LITERAL:
 
5199     case STRING_LITERAL:
 
5204       condition = Expression();
 
5207       jj_la1[120] = jj_gen;
 
5210     jj_consume_token(SEMICOLON);
 
5211     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5227     case INTEGER_LITERAL:
 
5228     case FLOATING_POINT_LITERAL:
 
5229     case STRING_LITERAL:
 
5234       increments = StatementExpressionList();
 
5237       jj_la1[121] = jj_gen;
 
5240     jj_consume_token(RPAREN);
 
5241     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5274     case INTEGER_LITERAL:
 
5275     case FLOATING_POINT_LITERAL:
 
5276     case STRING_LITERAL:
 
5283       action = Statement();
 
5284        {if (true) return new ForStatement(initializations,
 
5292       tokenColon = jj_consume_token(COLON);
 
5293                             pos = tokenColon.sourceEnd+1;
 
5296         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5329         case INTEGER_LITERAL:
 
5330         case FLOATING_POINT_LITERAL:
 
5331         case STRING_LITERAL:
 
5341           jj_la1[122] = jj_gen;
 
5344         action = Statement();
 
5345                              list.add(action);pos = action.sourceEnd+1;
 
5348         setMarker(fileToParse,
 
5349                   "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
 
5353                   "Line " + token.beginLine);
 
5354         } catch (CoreException e) {
 
5355           PHPeclipsePlugin.log(e);
 
5358         tokenEndFor = jj_consume_token(ENDFOR);
 
5359          pos = tokenEndFor.sourceEnd+1;
 
5360       } catch (ParseException e) {
 
5361         errorMessage = "'endfor' expected";
 
5365         processParseExceptionDebug(e);
 
5368         token2 = jj_consume_token(SEMICOLON);
 
5369          pos = token2.sourceEnd+1;
 
5370       } catch (ParseException e) {
 
5371         errorMessage = "';' expected after 'endfor' keyword";
 
5375         processParseExceptionDebug(e);
 
5377       final Statement[] stmtsArray = new Statement[list.size()];
 
5378       list.toArray(stmtsArray);
 
5379       {if (true) return new ForStatement(initializations,
 
5382                               new Block(stmtsArray,
 
5383                                         stmtsArray[0].sourceStart,
 
5384                                         stmtsArray[stmtsArray.length-1].sourceEnd),
 
5389       jj_la1[123] = jj_gen;
 
5390       jj_consume_token(-1);
 
5391       throw new ParseException();
 
5393     throw new Error("Missing return statement in function");
 
5396   final public Expression[] ForInit() throws ParseException {
 
5397   final Expression[] exprs;
 
5398     if (jj_2_5(2147483647)) {
 
5399       exprs = LocalVariableDeclaration();
 
5400    {if (true) return exprs;}
 
5402       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5418       case INTEGER_LITERAL:
 
5419       case FLOATING_POINT_LITERAL:
 
5420       case STRING_LITERAL:
 
5425         exprs = StatementExpressionList();
 
5426    {if (true) return exprs;}
 
5429         jj_la1[124] = jj_gen;
 
5430         jj_consume_token(-1);
 
5431         throw new ParseException();
 
5434     throw new Error("Missing return statement in function");
 
5437   final public Expression[] StatementExpressionList() throws ParseException {
 
5438   final ArrayList list = new ArrayList();
 
5439   final Expression expr;
 
5440     expr = Expression();
 
5444       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5449         jj_la1[125] = jj_gen;
 
5452       jj_consume_token(COMMA);
 
5456     final Expression[] exprsArray = new Expression[list.size()];
 
5457     list.toArray(exprsArray);
 
5458     {if (true) return exprsArray;}
 
5459     throw new Error("Missing return statement in function");
 
5462   final public Continue ContinueStatement() throws ParseException {
 
5463   Expression expr = null;
 
5465   Token token2 = null;
 
5466     token = jj_consume_token(CONTINUE);
 
5467     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5483     case INTEGER_LITERAL:
 
5484     case FLOATING_POINT_LITERAL:
 
5485     case STRING_LITERAL:
 
5490       expr = Expression();
 
5493       jj_la1[126] = jj_gen;
 
5497       token2 = jj_consume_token(SEMICOLON);
 
5498     } catch (ParseException e) {
 
5499     errorMessage = "';' expected after 'continue' statement";
 
5502       errorStart = token.sourceEnd+1;
 
5503       errorEnd   = token.sourceEnd+1;
 
5505       errorStart = expr.sourceEnd+1;
 
5506       errorEnd   = expr.sourceEnd+1;
 
5508     processParseExceptionDebug(e);
 
5510     if (token2 == null) {
 
5512         {if (true) return new Continue(expr,token.sourceStart,token.sourceEnd);}
 
5514       {if (true) return new Continue(expr,token.sourceStart,expr.sourceEnd);}
 
5516     {if (true) return new Continue(expr,token.sourceStart,token2.sourceEnd);}
 
5517     throw new Error("Missing return statement in function");
 
5520   final public ReturnStatement ReturnStatement() throws ParseException {
 
5521   Expression expr = null;
 
5523   Token token2 = null;
 
5524     token = jj_consume_token(RETURN);
 
5525     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5541     case INTEGER_LITERAL:
 
5542     case FLOATING_POINT_LITERAL:
 
5543     case STRING_LITERAL:
 
5548       expr = Expression();
 
5551       jj_la1[127] = jj_gen;
 
5555       token2 = jj_consume_token(SEMICOLON);
 
5556     } catch (ParseException e) {
 
5557     errorMessage = "';' expected after 'return' statement";
 
5560       errorStart = token.sourceEnd+1;
 
5561       errorEnd   = token.sourceEnd+1;
 
5563       errorStart = expr.sourceEnd+1;
 
5564       errorEnd   = expr.sourceEnd+1;
 
5566     processParseExceptionDebug(e);
 
5568     if (token2 == null) {
 
5570         {if (true) return new ReturnStatement(expr,token.sourceStart,token.sourceEnd);}
 
5572       {if (true) return new ReturnStatement(expr,token.sourceStart,expr.sourceEnd);}
 
5574     {if (true) return new ReturnStatement(expr,token.sourceStart,token2.sourceEnd);}
 
5575     throw new Error("Missing return statement in function");
 
5578   final private boolean jj_2_1(int xla) {
 
5579     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5580     boolean retval = !jj_3_1();
 
5585   final private boolean jj_2_2(int xla) {
 
5586     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5587     boolean retval = !jj_3_2();
 
5592   final private boolean jj_2_3(int xla) {
 
5593     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5594     boolean retval = !jj_3_3();
 
5599   final private boolean jj_2_4(int xla) {
 
5600     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5601     boolean retval = !jj_3_4();
 
5606   final private boolean jj_2_5(int xla) {
 
5607     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5608     boolean retval = !jj_3_5();
 
5613   final private boolean jj_3R_210() {
 
5614     if (jj_3R_116()) return true;
 
5615     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5619   final private boolean jj_3R_209() {
 
5620     if (jj_3R_50()) return true;
 
5621     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5625   final private boolean jj_3R_109() {
 
5626     if (jj_3R_114()) return true;
 
5627     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5631       if (jj_3R_115()) { jj_scanpos = xsp; break; }
 
5632       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5637   final private boolean jj_3R_208() {
 
5638     if (jj_scan_token(IDENTIFIER)) return true;
 
5639     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5643   final private boolean jj_3R_203() {
 
5650     if (jj_3R_210()) return true;
 
5651     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5652     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5653     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5657   final private boolean jj_3R_110() {
 
5658     if (jj_scan_token(BIT_OR)) return true;
 
5659     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5660     if (jj_3R_109()) return true;
 
5661     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5665   final private boolean jj_3R_103() {
 
5666     if (jj_3R_109()) return true;
 
5667     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5671       if (jj_3R_110()) { jj_scanpos = xsp; break; }
 
5672       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5677   final private boolean jj_3R_188() {
 
5678     if (jj_scan_token(ARRAY)) return true;
 
5679     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5680     if (jj_3R_198()) return true;
 
5681     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5685   final private boolean jj_3R_132() {
 
5686     if (jj_scan_token(IDENTIFIER)) return true;
 
5687     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5691   final private boolean jj_3R_106() {
 
5692     if (jj_scan_token(DOT)) return true;
 
5693     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5694     if (jj_3R_103()) return true;
 
5695     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5699   final private boolean jj_3R_131() {
 
5700     if (jj_scan_token(LBRACE)) return true;
 
5701     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5702     if (jj_3R_49()) return true;
 
5703     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5704     if (jj_scan_token(RBRACE)) return true;
 
5705     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5709   final private boolean jj_3R_97() {
 
5710     if (jj_3R_103()) return true;
 
5711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5715       if (jj_3R_106()) { jj_scanpos = xsp; break; }
 
5716       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5721   final private boolean jj_3R_204() {
 
5722     if (jj_3R_207()) return true;
 
5723     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5727   final private boolean jj_3R_122() {
 
5734     if (jj_3R_132()) return true;
 
5735     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5736     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5737     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5741   final private boolean jj_3R_130() {
 
5742     if (jj_scan_token(DOLLAR)) return true;
 
5743     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5744     if (jj_3R_122()) return true;
 
5745     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5749   final private boolean jj_3R_108() {
 
5750     if (jj_scan_token(_ANDL)) return true;
 
5751     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5755   final private boolean jj_3R_107() {
 
5756     if (jj_scan_token(AND_AND)) return true;
 
5757     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5761   final private boolean jj_3R_100() {
 
5766     if (jj_3R_108()) return true;
 
5767     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5768     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5769     if (jj_3R_97()) return true;
 
5770     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5774   final private boolean jj_3R_81() {
 
5775     if (jj_3R_97()) return true;
 
5776     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5780       if (jj_3R_100()) { jj_scanpos = xsp; break; }
 
5781       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5786   final private boolean jj_3R_79() {
 
5787     if (jj_scan_token(HOOK)) return true;
 
5788     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5789     if (jj_3R_49()) return true;
 
5790     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5791     if (jj_scan_token(COLON)) return true;
 
5792     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5793     if (jj_3R_73()) return true;
 
5794     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5798   final private boolean jj_3R_195() {
 
5799     if (jj_scan_token(NEW)) return true;
 
5800     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5801     if (jj_3R_203()) return true;
 
5802     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5805     if (jj_3R_204()) jj_scanpos = xsp;
 
5806     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5810   final private boolean jj_3R_68() {
 
5811     if (jj_scan_token(DOLLAR)) return true;
 
5812     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5813     if (jj_3R_122()) return true;
 
5814     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5818   final private boolean jj_3R_202() {
 
5819     if (jj_3R_207()) return true;
 
5820     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5824   final private boolean jj_3R_194() {
 
5825     if (jj_3R_116()) return true;
 
5826     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5829     if (jj_3R_202()) jj_scanpos = xsp;
 
5830     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5834   final private boolean jj_3R_102() {
 
5835     if (jj_scan_token(_ORL)) return true;
 
5836     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5840   final private boolean jj_3R_101() {
 
5841     if (jj_scan_token(OR_OR)) return true;
 
5842     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5846   final private boolean jj_3R_83() {
 
5851     if (jj_3R_102()) return true;
 
5852     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5853     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5854     if (jj_3R_81()) return true;
 
5855     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5859   final private boolean jj_3_1() {
 
5860     if (jj_3R_40()) return true;
 
5861     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5865   final private boolean jj_3R_201() {
 
5866     if (jj_3R_207()) return true;
 
5867     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5871   final private boolean jj_3R_76() {
 
5872     if (jj_3R_81()) return true;
 
5873     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5877       if (jj_3R_83()) { jj_scanpos = xsp; break; }
 
5878       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5883   final private boolean jj_3R_51() {
 
5884     if (jj_scan_token(COMMA)) return true;
 
5885     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5886     if (jj_3R_49()) return true;
 
5887     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5891   final private boolean jj_3R_200() {
 
5892     if (jj_scan_token(STATICCLASSACCESS)) return true;
 
5893     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5894     if (jj_3R_203()) return true;
 
5895     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5899   final private boolean jj_3R_116() {
 
5900     if (jj_3R_68()) return true;
 
5901     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5905       if (jj_3_1()) { jj_scanpos = xsp; break; }
 
5906       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5911   final private boolean jj_3R_45() {
 
5912     if (jj_3R_49()) return true;
 
5913     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5917       if (jj_3R_51()) { jj_scanpos = xsp; break; }
 
5918       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5923   final private boolean jj_3R_193() {
 
5924     if (jj_scan_token(IDENTIFIER)) return true;
 
5925     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5929       if (jj_3R_200()) { jj_scanpos = xsp; break; }
 
5930       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5933     if (jj_3R_201()) jj_scanpos = xsp;
 
5934     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5938   final private boolean jj_3R_187() {
 
5945     if (jj_3R_195()) return true;
 
5946     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5947     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5948     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5952   final private boolean jj_3R_73() {
 
5953     if (jj_3R_76()) return true;
 
5954     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5957     if (jj_3R_79()) jj_scanpos = xsp;
 
5958     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5962   final private boolean jj_3R_178() {
 
5963     if (jj_3R_188()) return true;
 
5964     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5968   final private boolean jj_3_5() {
 
5969     if (jj_3R_45()) return true;
 
5970     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5974   final private boolean jj_3R_186() {
 
5975     if (jj_scan_token(BIT_AND)) return true;
 
5976     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5980   final private boolean jj_3R_96() {
 
5981     if (jj_scan_token(TILDEEQUAL)) return true;
 
5982     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5986   final private boolean jj_3R_95() {
 
5987     if (jj_scan_token(DOTASSIGN)) return true;
 
5988     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5992   final private boolean jj_3R_173() {
 
5997     if (jj_3R_178()) return true;
 
5998     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5999     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6003   final private boolean jj_3R_177() {
 
6006     if (jj_3R_186()) jj_scanpos = xsp;
 
6007     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6008     if (jj_3R_187()) return true;
 
6009     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6013   final private boolean jj_3R_94() {
 
6014     if (jj_scan_token(ORASSIGN)) return true;
 
6015     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6019   final private boolean jj_3R_93() {
 
6020     if (jj_scan_token(XORASSIGN)) return true;
 
6021     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6025   final private boolean jj_3R_92() {
 
6026     if (jj_scan_token(ANDASSIGN)) return true;
 
6027     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6031   final private boolean jj_3R_91() {
 
6032     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
 
6033     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6037   final private boolean jj_3R_90() {
 
6038     if (jj_scan_token(LSHIFTASSIGN)) return true;
 
6039     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6043   final private boolean jj_3R_89() {
 
6044     if (jj_scan_token(MINUSASSIGN)) return true;
 
6045     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6049   final private boolean jj_3R_88() {
 
6050     if (jj_scan_token(PLUSASSIGN)) return true;
 
6051     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6055   final private boolean jj_3R_87() {
 
6056     if (jj_scan_token(REMASSIGN)) return true;
 
6057     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6061   final private boolean jj_3R_86() {
 
6062     if (jj_scan_token(SLASHASSIGN)) return true;
 
6063     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6067   final private boolean jj_3R_85() {
 
6068     if (jj_scan_token(STARASSIGN)) return true;
 
6069     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6073   final private boolean jj_3R_84() {
 
6074     if (jj_scan_token(ASSIGN)) return true;
 
6075     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6079   final private boolean jj_3R_80() {
 
6106     if (jj_3R_96()) return true;
 
6107     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6108     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6109     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6110     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6111     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6112     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6113     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6114     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6115     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6116     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6117     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6118     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6119     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6123   final private boolean jj_3R_197() {
 
6124     if (jj_scan_token(MINUS_MINUS)) return true;
 
6125     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6129   final private boolean jj_3R_196() {
 
6130     if (jj_scan_token(PLUS_PLUS)) return true;
 
6131     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6135   final private boolean jj_3R_191() {
 
6140     if (jj_3R_197()) return true;
 
6141     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6142     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6146   final private boolean jj_3R_175() {
 
6147     if (jj_3R_173()) return true;
 
6148     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6151     if (jj_3R_191()) jj_scanpos = xsp;
 
6152     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6156   final private boolean jj_3R_99() {
 
6157     if (jj_3R_105()) return true;
 
6158     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6162   final private boolean jj_3R_98() {
 
6163     if (jj_3R_104()) return true;
 
6164     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6168   final private boolean jj_3R_82() {
 
6173     if (jj_3R_99()) return true;
 
6174     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6175     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6179   final private boolean jj_3R_190() {
 
6180     if (jj_scan_token(ARRAY)) return true;
 
6181     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6185   final private boolean jj_3R_189() {
 
6186     if (jj_3R_50()) return true;
 
6187     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6191   final private boolean jj_3R_78() {
 
6192     if (jj_3R_82()) return true;
 
6193     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6197   final private boolean jj_3R_43() {
 
6198     if (jj_scan_token(ARRAY)) return true;
 
6199     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6203   final private boolean jj_3R_77() {
 
6204     if (jj_scan_token(BANG)) return true;
 
6205     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6206     if (jj_3R_74()) return true;
 
6207     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6211   final private boolean jj_3R_74() {
 
6216     if (jj_3R_78()) return true;
 
6217     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6218     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6222   final private boolean jj_3R_174() {
 
6223     if (jj_scan_token(LPAREN)) return true;
 
6224     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6229     if (jj_3R_190()) return true;
 
6230     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6231     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6232     if (jj_scan_token(RPAREN)) return true;
 
6233     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6234     if (jj_3R_144()) return true;
 
6235     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6239   final private boolean jj_3R_42() {
 
6240     if (jj_3R_50()) return true;
 
6241     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6245   final private boolean jj_3R_58() {
 
6246     if (jj_3R_74()) return true;
 
6247     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6251   final private boolean jj_3_3() {
 
6252     if (jj_scan_token(LPAREN)) return true;
 
6253     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6258     if (jj_3R_43()) return true;
 
6259     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6260     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6261     if (jj_scan_token(RPAREN)) return true;
 
6262     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6266   final private boolean jj_3R_172() {
 
6267     if (jj_scan_token(LPAREN)) return true;
 
6268     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6269     if (jj_3R_49()) return true;
 
6270     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6271     if (jj_scan_token(RPAREN)) return true;
 
6272     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6276   final private boolean jj_3R_171() {
 
6277     if (jj_3R_176()) return true;
 
6278     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6282   final private boolean jj_3R_170() {
 
6283     if (jj_3R_175()) return true;
 
6284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6288   final private boolean jj_3R_166() {
 
6297     if (jj_3R_172()) return true;
 
6298     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6299     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6300     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6301     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6305   final private boolean jj_3R_169() {
 
6306     if (jj_3R_174()) return true;
 
6307     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6311   final private boolean jj_3R_44() {
 
6312     if (jj_3R_49()) return true;
 
6313     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6314     if (jj_scan_token(SEMICOLON)) return true;
 
6315     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6319   final private boolean jj_3R_168() {
 
6320     if (jj_scan_token(MINUS_MINUS)) return true;
 
6321     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6325   final private boolean jj_3R_167() {
 
6326     if (jj_scan_token(PLUS_PLUS)) return true;
 
6327     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6331   final private boolean jj_3R_75() {
 
6332     if (jj_3R_80()) return true;
 
6333     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6334     if (jj_3R_49()) return true;
 
6335     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6339   final private boolean jj_3R_165() {
 
6344     if (jj_3R_168()) return true;
 
6345     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6346     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6347     if (jj_3R_173()) return true;
 
6348     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6352   final private boolean jj_3R_49() {
 
6357     if (jj_3R_58()) return true;
 
6358     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6359     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6363   final private boolean jj_3R_57() {
 
6364     if (jj_3R_73()) return true;
 
6365     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6368     if (jj_3R_75()) jj_scanpos = xsp;
 
6369     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6373   final private boolean jj_3R_67() {
 
6374     if (jj_scan_token(OBJECT)) return true;
 
6375     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6379   final private boolean jj_3R_161() {
 
6380     if (jj_3R_166()) return true;
 
6381     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6385   final private boolean jj_3R_66() {
 
6386     if (jj_scan_token(INTEGER)) return true;
 
6387     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6391   final private boolean jj_3R_65() {
 
6392     if (jj_scan_token(INT)) return true;
 
6393     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6397   final private boolean jj_3R_64() {
 
6398     if (jj_scan_token(FLOAT)) return true;
 
6399     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6403   final private boolean jj_3R_160() {
 
6404     if (jj_3R_165()) return true;
 
6405     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6409   final private boolean jj_3R_63() {
 
6410     if (jj_scan_token(DOUBLE)) return true;
 
6411     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6415   final private boolean jj_3R_62() {
 
6416     if (jj_scan_token(REAL)) return true;
 
6417     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6421   final private boolean jj_3R_61() {
 
6422     if (jj_scan_token(BOOLEAN)) return true;
 
6423     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6427   final private boolean jj_3R_60() {
 
6428     if (jj_scan_token(BOOL)) return true;
 
6429     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6433   final private boolean jj_3R_159() {
 
6434     if (jj_scan_token(MINUS)) return true;
 
6435     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6436     if (jj_3R_148()) return true;
 
6437     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6441   final private boolean jj_3R_50() {
 
6460     if (jj_3R_67()) return true;
 
6461     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6462     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6463     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6464     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6465     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6466     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6467     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6468     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6469     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6473   final private boolean jj_3R_59() {
 
6474     if (jj_scan_token(STRING)) return true;
 
6475     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6479   final private boolean jj_3R_156() {
 
6488     if (jj_3R_161()) return true;
 
6489     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6490     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6491     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6492     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6496   final private boolean jj_3R_158() {
 
6497     if (jj_scan_token(PLUS)) return true;
 
6498     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6499     if (jj_3R_148()) return true;
 
6500     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6504   final private boolean jj_3_4() {
 
6505     if (jj_3R_44()) return true;
 
6506     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6510   final private boolean jj_3R_164() {
 
6511     if (jj_3R_156()) return true;
 
6512     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6516   final private boolean jj_3R_163() {
 
6517     if (jj_scan_token(BANG)) return true;
 
6518     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6519     if (jj_3R_157()) return true;
 
6520     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6524   final private boolean jj_3R_157() {
 
6531     if (jj_3R_164()) return true;
 
6532     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6533     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6534     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6538   final private boolean jj_3R_162() {
 
6539     if (jj_scan_token(AT)) return true;
 
6540     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6541     if (jj_3R_157()) return true;
 
6542     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6546   final private boolean jj_3R_155() {
 
6547     if (jj_3R_156()) return true;
 
6548     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6552   final private boolean jj_3R_216() {
 
6553     if (jj_scan_token(COMMA)) return true;
 
6554     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6555     if (jj_3R_49()) return true;
 
6556     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6560   final private boolean jj_3R_154() {
 
6561     if (jj_scan_token(BANG)) return true;
 
6562     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6563     if (jj_3R_157()) return true;
 
6564     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6568   final private boolean jj_3R_215() {
 
6569     if (jj_3R_49()) return true;
 
6570     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6574       if (jj_3R_216()) { jj_scanpos = xsp; break; }
 
6575       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6580   final private boolean jj_3R_153() {
 
6581     if (jj_scan_token(TILDE)) return true;
 
6582     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6583     if (jj_3R_148()) return true;
 
6584     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6588   final private boolean jj_3R_148() {
 
6597     if (jj_3R_155()) return true;
 
6598     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6599     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6600     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6601     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6605   final private boolean jj_3R_152() {
 
6606     if (jj_scan_token(AT)) return true;
 
6607     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6608     if (jj_3R_148()) return true;
 
6609     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6613   final private boolean jj_3R_213() {
 
6614     if (jj_3R_215()) return true;
 
6615     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6619   final private boolean jj_3R_144() {
 
6620     if (jj_3R_148()) return true;
 
6621     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6625   final private boolean jj_3R_151() {
 
6626     if (jj_scan_token(REMAINDER)) return true;
 
6627     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6631   final private boolean jj_3R_150() {
 
6632     if (jj_scan_token(SLASH)) return true;
 
6633     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6637   final private boolean jj_3R_149() {
 
6638     if (jj_scan_token(STAR)) return true;
 
6639     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6643   final private boolean jj_3R_207() {
 
6644     if (jj_scan_token(LPAREN)) return true;
 
6645     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6648     if (jj_3R_213()) jj_scanpos = xsp;
 
6649     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6650     if (jj_scan_token(RPAREN)) return true;
 
6651     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6655   final private boolean jj_3R_145() {
 
6662     if (jj_3R_151()) return true;
 
6663     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6664     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6665     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6666     if (jj_3R_144()) return true;
 
6667     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6671   final private boolean jj_3R_139() {
 
6672     if (jj_3R_144()) return true;
 
6673     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6677       if (jj_3R_145()) { jj_scanpos = xsp; break; }
 
6678       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6683   final private boolean jj_3R_212() {
 
6684     if (jj_scan_token(LBRACE1)) return true;
 
6685     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6686     if (jj_scan_token(ID)) return true;
 
6687     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6688     if (jj_scan_token(RBRACE1)) return true;
 
6689     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6693   final private boolean jj_3R_147() {
 
6694     if (jj_scan_token(MINUS)) return true;
 
6695     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6699   final private boolean jj_3R_211() {
 
6700     if (jj_scan_token(IDENTIFIER)) return true;
 
6701     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6705   final private boolean jj_3R_146() {
 
6706     if (jj_scan_token(PLUS)) return true;
 
6707     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6711   final private boolean jj_3R_140() {
 
6716     if (jj_3R_147()) return true;
 
6717     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6718     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6719     if (jj_3R_139()) return true;
 
6720     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6724   final private boolean jj_3R_199() {
 
6725     if (jj_scan_token(DOLLARS)) return true;
 
6726     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6731     if (jj_3R_212()) return true;
 
6732     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6733     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6737   final private boolean jj_3R_133() {
 
6738     if (jj_3R_139()) return true;
 
6739     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6743       if (jj_3R_140()) { jj_scanpos = xsp; break; }
 
6744       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6749   final private boolean jj_3R_192() {
 
6750     if (jj_scan_token(DOUBLEQUOTE)) return true;
 
6751     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6755       if (jj_3R_199()) { jj_scanpos = xsp; break; }
 
6756       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6758     if (jj_scan_token(DOUBLEQUOTE2)) return true;
 
6759     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6763   final private boolean jj_3R_113() {
 
6764     if (jj_scan_token(ASSIGN)) return true;
 
6765     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6766     if (jj_3R_49()) return true;
 
6767     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6771   final private boolean jj_3R_143() {
 
6772     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
 
6773     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6777   final private boolean jj_3R_142() {
 
6778     if (jj_scan_token(RSIGNEDSHIFT)) return true;
 
6779     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6783   final private boolean jj_3R_141() {
 
6784     if (jj_scan_token(LSHIFT)) return true;
 
6785     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6789   final private boolean jj_3R_185() {
 
6790     if (jj_3R_192()) return true;
 
6791     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6795   final private boolean jj_3R_184() {
 
6796     if (jj_scan_token(NULL)) return true;
 
6797     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6801   final private boolean jj_3R_134() {
 
6808     if (jj_3R_143()) return true;
 
6809     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6810     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6811     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6812     if (jj_3R_133()) return true;
 
6813     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6817   final private boolean jj_3R_183() {
 
6818     if (jj_scan_token(FALSE)) return true;
 
6819     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6823   final private boolean jj_3R_182() {
 
6824     if (jj_scan_token(TRUE)) return true;
 
6825     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6829   final private boolean jj_3R_123() {
 
6830     if (jj_3R_133()) return true;
 
6831     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6835       if (jj_3R_134()) { jj_scanpos = xsp; break; }
 
6836       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6841   final private boolean jj_3R_181() {
 
6842     if (jj_scan_token(STRING_LITERAL)) return true;
 
6843     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6847   final private boolean jj_3R_180() {
 
6848     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
6849     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6853   final private boolean jj_3R_117() {
 
6854     if (jj_3R_116()) return true;
 
6855     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6859   final private boolean jj_3R_179() {
 
6860     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
6861     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6865   final private boolean jj_3R_176() {
 
6880     if (jj_3R_185()) return true;
 
6881     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6882     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6883     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6884     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6885     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6886     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6887     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6891   final private boolean jj_3R_138() {
 
6892     if (jj_scan_token(GE)) return true;
 
6893     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6897   final private boolean jj_3R_137() {
 
6898     if (jj_scan_token(LE)) return true;
 
6899     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6903   final private boolean jj_3R_136() {
 
6904     if (jj_scan_token(GT)) return true;
 
6905     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6909   final private boolean jj_3R_112() {
 
6910     if (jj_scan_token(COMMA)) return true;
 
6911     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6914     if (jj_3R_117()) jj_scanpos = xsp;
 
6915     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6919   final private boolean jj_3R_135() {
 
6920     if (jj_scan_token(LT)) return true;
 
6921     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6925   final private boolean jj_3R_124() {
 
6934     if (jj_3R_138()) return true;
 
6935     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6936     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6937     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6938     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6939     if (jj_3R_123()) return true;
 
6940     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6944   final private boolean jj_3R_120() {
 
6945     if (jj_3R_123()) return true;
 
6946     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6950       if (jj_3R_124()) { jj_scanpos = xsp; break; }
 
6951       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6956   final private boolean jj_3R_111() {
 
6957     if (jj_3R_116()) return true;
 
6958     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6962   final private boolean jj_3R_72() {
 
6963     if (jj_3R_50()) return true;
 
6964     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6968   final private boolean jj_3R_71() {
 
6969     if (jj_3R_49()) return true;
 
6970     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6974   final private boolean jj_3R_56() {
 
6979     if (jj_3R_72()) return true;
 
6980     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6981     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6985   final private boolean jj_3R_48() {
 
6986     if (jj_scan_token(LBRACE)) return true;
 
6987     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6990     if (jj_3R_56()) jj_scanpos = xsp;
 
6991     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6992     if (jj_scan_token(RBRACE)) return true;
 
6993     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6997   final private boolean jj_3R_104() {
 
6998     if (jj_scan_token(LIST)) return true;
 
6999     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7000     if (jj_scan_token(LPAREN)) return true;
 
7001     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7004     if (jj_3R_111()) jj_scanpos = xsp;
 
7005     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7008       if (jj_3R_112()) { jj_scanpos = xsp; break; }
 
7009       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7011     if (jj_scan_token(RPAREN)) return true;
 
7012     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7014     if (jj_3R_113()) jj_scanpos = xsp;
 
7015     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7019   final private boolean jj_3R_206() {
 
7020     if (jj_scan_token(COMMA)) return true;
 
7021     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7025   final private boolean jj_3R_70() {
 
7026     if (jj_3R_50()) return true;
 
7027     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7031   final private boolean jj_3_2() {
 
7032     if (jj_scan_token(COMMA)) return true;
 
7033     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7034     if (jj_3R_41()) return true;
 
7035     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7039   final private boolean jj_3R_55() {
 
7044     if (jj_3R_70()) return true;
 
7045     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7046     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7050   final private boolean jj_3R_69() {
 
7051     if (jj_3R_49()) return true;
 
7052     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7056   final private boolean jj_3R_205() {
 
7057     if (jj_3R_41()) return true;
 
7058     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7062       if (jj_3_2()) { jj_scanpos = xsp; break; }
 
7063       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7068   final private boolean jj_3R_47() {
 
7069     if (jj_scan_token(LBRACKET)) return true;
 
7070     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7073     if (jj_3R_55()) jj_scanpos = xsp;
 
7074     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7075     if (jj_scan_token(RBRACKET)) return true;
 
7076     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7080   final private boolean jj_3R_129() {
 
7081     if (jj_scan_token(TRIPLEEQUAL)) return true;
 
7082     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7086   final private boolean jj_3R_128() {
 
7087     if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
 
7088     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7092   final private boolean jj_3R_127() {
 
7093     if (jj_scan_token(NOT_EQUAL)) return true;
 
7094     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7098   final private boolean jj_3R_126() {
 
7099     if (jj_scan_token(DIF)) return true;
 
7100     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7104   final private boolean jj_3R_105() {
 
7105     if (jj_scan_token(PRINT)) return true;
 
7106     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7107     if (jj_3R_49()) return true;
 
7108     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7112   final private boolean jj_3R_198() {
 
7113     if (jj_scan_token(LPAREN)) return true;
 
7114     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7117     if (jj_3R_205()) jj_scanpos = xsp;
 
7118     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7120     if (jj_3R_206()) jj_scanpos = xsp;
 
7121     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7122     if (jj_scan_token(RPAREN)) return true;
 
7123     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7127   final private boolean jj_3R_125() {
 
7128     if (jj_scan_token(EQUAL_EQUAL)) return true;
 
7129     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7133   final private boolean jj_3R_54() {
 
7134     if (jj_3R_68()) return true;
 
7135     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7139   final private boolean jj_3R_121() {
 
7150     if (jj_3R_129()) return true;
 
7151     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7152     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7153     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7154     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7155     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7156     if (jj_3R_120()) return true;
 
7157     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7161   final private boolean jj_3R_53() {
 
7162     if (jj_scan_token(IDENTIFIER)) return true;
 
7163     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7167   final private boolean jj_3R_118() {
 
7168     if (jj_3R_120()) return true;
 
7169     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7173       if (jj_3R_121()) { jj_scanpos = xsp; break; }
 
7174       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7179   final private boolean jj_3R_214() {
 
7180     if (jj_scan_token(ARRAYASSIGN)) return true;
 
7181     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7182     if (jj_3R_49()) return true;
 
7183     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7187   final private boolean jj_3R_52() {
 
7188     if (jj_scan_token(LBRACE)) return true;
 
7189     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7190     if (jj_3R_49()) return true;
 
7191     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7192     if (jj_scan_token(RBRACE)) return true;
 
7193     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7197   final private boolean jj_3R_41() {
 
7198     if (jj_3R_49()) return true;
 
7199     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7202     if (jj_3R_214()) jj_scanpos = xsp;
 
7203     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7207   final private boolean jj_3R_119() {
 
7208     if (jj_scan_token(BIT_AND)) return true;
 
7209     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7210     if (jj_3R_118()) return true;
 
7211     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7215   final private boolean jj_3R_46() {
 
7216     if (jj_scan_token(CLASSACCESS)) return true;
 
7217     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7224     if (jj_3R_54()) return true;
 
7225     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7226     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7227     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7231   final private boolean jj_3R_40() {
 
7238     if (jj_3R_48()) return true;
 
7239     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7240     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7241     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7245   final private boolean jj_3R_114() {
 
7246     if (jj_3R_118()) return true;
 
7247     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7251       if (jj_3R_119()) { jj_scanpos = xsp; break; }
 
7252       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7257   final private boolean jj_3R_115() {
 
7258     if (jj_scan_token(XOR)) return true;
 
7259     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7260     if (jj_3R_114()) return true;
 
7261     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
7265   public PHPParserTokenManager token_source;
 
7266   SimpleCharStream jj_input_stream;
 
7267   public Token token, jj_nt;
 
7269   private Token jj_scanpos, jj_lastpos;
 
7271   public boolean lookingAhead = false;
 
7272   private boolean jj_semLA;
 
7274   final private int[] jj_la1 = new int[128];
 
7275   static private int[] jj_la1_0;
 
7276   static private int[] jj_la1_1;
 
7277   static private int[] jj_la1_2;
 
7278   static private int[] jj_la1_3;
 
7279   static private int[] jj_la1_4;
 
7287    private static void jj_la1_0() {
 
7288       jj_la1_0 = new int[] {0x5800001e,0x6,0x6,0x5800001e,0x0,0x58000000,0x0,0x30000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x40000000,0x8,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x58000010,0x58000010,0x58000000,0x58000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x58000010,0x58000010,0x0,0x0,0x40000010,0x40000010,0x80000000,0x0,0x40000010,0x80000000,0x0,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000000,0x40000000,0x0,0x0,0x0,0x40000000,0x40000000,0x0,0x0,0x0,0x0,};
 
7290    private static void jj_la1_1() {
 
7291       jj_la1_1 = new int[] {0xd7541ffe,0x0,0x0,0xd7541ffe,0x0,0xd7541ffe,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc2000002,0x8000,0xc300001a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc300001a,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc3000002,0xc3000002,0xc3000002,0x0,0xc3000002,0x2,0x0,0x0,0x0,0x1000002,0x4000,0x0,0x0,0x0,0x1000000,0x0,0x0,0xc300001a,0xc300001a,0xc300001a,0xc300001a,0x2000,0xc2000000,0x0,0x0,0xc300001a,0x0,0x0,0x14541fe0,0xd7541ffe,0x0,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffa,0x0,0x0,0x0,0x0,0x1000002,0x0,0x90000,0x90000,0xd7541ffe,0xd7541ffe,0x90000,0xc300001a,0xd7541ffe,0xd7541ffe,0x0,0x1,0xd7541ffe,0x0,0x1,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xc300001a,0xc300001a,0xc300001a,0xd7541ffe,0xd7541ffe,0xc300001a,0x0,0xc300001a,0xc300001a,};
 
7293    private static void jj_la1_2() {
 
7294       jj_la1_2 = new int[] {0x27870021,0x0,0x0,0x27870021,0x0,0x27870021,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x0,0x27870000,0x0,0x20000000,0x0,0x20000000,0x20000000,0xff80,0x0,0x27870000,0x20000,0x0,0x0,0x80000,0x200000,0x200000,0x400000,0x400000,0x0,0x40000000,0x80000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x6000000,0x18000000,0x18000000,0x27870000,0x27830000,0x27800000,0x1800000,0x20000000,0xff80,0x1800000,0x1800000,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0xff80,0x0,0x2787ff80,0x2787ff80,0x2787ff80,0x2787ff80,0x0,0x0,0x0,0x0,0x27870000,0x0,0x10000,0x10021,0x27870021,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x27870021,0x27870021,0x27870021,0x27870021,0x0,0x0,0x1800000,0x1800000,0x21800000,0x100000,0x0,0x0,0x27870021,0x27870021,0x0,0x27870000,0x27870021,0x27870021,0x0,0x0,0x27870021,0x0,0x0,0x27970021,0x27870021,0x27870021,0x27870021,0x27870021,0x27870021,0x27970021,0x27870000,0x27870000,0x27870000,0x27870021,0x27970021,0x27870000,0x0,0x27870000,0x27870000,};
 
7296    private static void jj_la1_3() {
 
7297       jj_la1_3 = new int[] {0x18011440,0x0,0x0,0x18011440,0x0,0x18011440,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x18000000,0x440,0x440,0x10011440,0x0,0x18011440,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x18011440,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xe,0x0,0x0,0x1,0x1,0x18011440,0x18011440,0x18011440,0x0,0x18011440,0x0,0x0,0x0,0x0,0x18000000,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x18000000,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x11440,0x20000,0x10080000,0x18011440,0x0,0x0,0x10000000,0x18011440,0x0,0x0,0x0,0x8000000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x0,0x0,0x0,0x18000000,0x0,0x0,0x0,0x18011440,0x18011440,0x0,0x18011440,0x18011440,0x18011440,0x0,0x0,0x18011440,0x0,0x0,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x18011440,0x18011440,};
 
7299    private static void jj_la1_4() {
 
7300       jj_la1_4 = new int[] {0x8a,0x0,0x0,0x8a,0x80,0x8a,0x0,0x0,0x0,0x100,0x8,0x80000,0x80000,0x8,0x0,0x0,0x0,0x0,0x2,0x100,0x0,0x100,0x0,0x0,0x0,0xfff80000,0x2,0x0,0x0,0xfff80000,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x79000,0x79000,0x6c00,0x6c00,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x0,0x0,0x8,0x2,0x2,0x2,0x2,0x28,0x0,0x0,0x0,0x2,0x100,0x0,0x88,0x8a,0x0,0x0,0x0,0x0,0x100,0x0,0x80000,0x100,0x100,0x100,0x8a,0x8a,0x8a,0x8a,0x100,0x80000,0x0,0x0,0x0,0x8,0x0,0x0,0x8a,0x8a,0x0,0x2,0x8a,0x8a,0x0,0x0,0x8a,0x0,0x0,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x2,0x2,0x2,0x8a,0x8a,0x2,0x100,0x2,0x2,};
 
7302   final private JJCalls[] jj_2_rtns = new JJCalls[5];
 
7303   private boolean jj_rescan = false;
 
7304   private int jj_gc = 0;
 
7306   public PHPParser(java.io.InputStream stream) {
 
7307     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
7308     token_source = new PHPParserTokenManager(jj_input_stream);
 
7309     token = new Token();
 
7312     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7313     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7316   public void ReInit(java.io.InputStream stream) {
 
7317     jj_input_stream.ReInit(stream, 1, 1);
 
7318     token_source.ReInit(jj_input_stream);
 
7319     token = new Token();
 
7322     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7323     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7326   public PHPParser(java.io.Reader stream) {
 
7327     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
7328     token_source = new PHPParserTokenManager(jj_input_stream);
 
7329     token = new Token();
 
7332     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7333     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7336   public void ReInit(java.io.Reader stream) {
 
7337     jj_input_stream.ReInit(stream, 1, 1);
 
7338     token_source.ReInit(jj_input_stream);
 
7339     token = new Token();
 
7342     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7343     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7346   public PHPParser(PHPParserTokenManager tm) {
 
7348     token = new Token();
 
7351     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7352     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7355   public void ReInit(PHPParserTokenManager tm) {
 
7357     token = new Token();
 
7360     for (int i = 0; i < 128; i++) jj_la1[i] = -1;
 
7361     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
7364   final private Token jj_consume_token(int kind) throws ParseException {
 
7366     if ((oldToken = token).next != null) token = token.next;
 
7367     else token = token.next = token_source.getNextToken();
 
7369     if (token.kind == kind) {
 
7371       if (++jj_gc > 100) {
 
7373         for (int i = 0; i < jj_2_rtns.length; i++) {
 
7374           JJCalls c = jj_2_rtns[i];
 
7376             if (c.gen < jj_gen) c.first = null;
 
7385     throw generateParseException();
 
7388   final private boolean jj_scan_token(int kind) {
 
7389     if (jj_scanpos == jj_lastpos) {
 
7391       if (jj_scanpos.next == null) {
 
7392         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
 
7394         jj_lastpos = jj_scanpos = jj_scanpos.next;
 
7397       jj_scanpos = jj_scanpos.next;
 
7400       int i = 0; Token tok = token;
 
7401       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
 
7402       if (tok != null) jj_add_error_token(kind, i);
 
7404     return (jj_scanpos.kind != kind);
 
7407   final public Token getNextToken() {
 
7408     if (token.next != null) token = token.next;
 
7409     else token = token.next = token_source.getNextToken();
 
7415   final public Token getToken(int index) {
 
7416     Token t = lookingAhead ? jj_scanpos : token;
 
7417     for (int i = 0; i < index; i++) {
 
7418       if (t.next != null) t = t.next;
 
7419       else t = t.next = token_source.getNextToken();
 
7424   final private int jj_ntk() {
 
7425     if ((jj_nt=token.next) == null)
 
7426       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
 
7428       return (jj_ntk = jj_nt.kind);
 
7431   private java.util.Vector jj_expentries = new java.util.Vector();
 
7432   private int[] jj_expentry;
 
7433   private int jj_kind = -1;
 
7434   private int[] jj_lasttokens = new int[100];
 
7435   private int jj_endpos;
 
7437   private void jj_add_error_token(int kind, int pos) {
 
7438     if (pos >= 100) return;
 
7439     if (pos == jj_endpos + 1) {
 
7440       jj_lasttokens[jj_endpos++] = kind;
 
7441     } else if (jj_endpos != 0) {
 
7442       jj_expentry = new int[jj_endpos];
 
7443       for (int i = 0; i < jj_endpos; i++) {
 
7444         jj_expentry[i] = jj_lasttokens[i];
 
7446       boolean exists = false;
 
7447       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
 
7448         int[] oldentry = (int[])(enum.nextElement());
 
7449         if (oldentry.length == jj_expentry.length) {
 
7451           for (int i = 0; i < jj_expentry.length; i++) {
 
7452             if (oldentry[i] != jj_expentry[i]) {
 
7460       if (!exists) jj_expentries.addElement(jj_expentry);
 
7461       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
 
7465   public ParseException generateParseException() {
 
7466     jj_expentries.removeAllElements();
 
7467     boolean[] la1tokens = new boolean[160];
 
7468     for (int i = 0; i < 160; i++) {
 
7469       la1tokens[i] = false;
 
7472       la1tokens[jj_kind] = true;
 
7475     for (int i = 0; i < 128; i++) {
 
7476       if (jj_la1[i] == jj_gen) {
 
7477         for (int j = 0; j < 32; j++) {
 
7478           if ((jj_la1_0[i] & (1<<j)) != 0) {
 
7479             la1tokens[j] = true;
 
7481           if ((jj_la1_1[i] & (1<<j)) != 0) {
 
7482             la1tokens[32+j] = true;
 
7484           if ((jj_la1_2[i] & (1<<j)) != 0) {
 
7485             la1tokens[64+j] = true;
 
7487           if ((jj_la1_3[i] & (1<<j)) != 0) {
 
7488             la1tokens[96+j] = true;
 
7490           if ((jj_la1_4[i] & (1<<j)) != 0) {
 
7491             la1tokens[128+j] = true;
 
7496     for (int i = 0; i < 160; i++) {
 
7498         jj_expentry = new int[1];
 
7500         jj_expentries.addElement(jj_expentry);
 
7505     jj_add_error_token(0, 0);
 
7506     int[][] exptokseq = new int[jj_expentries.size()][];
 
7507     for (int i = 0; i < jj_expentries.size(); i++) {
 
7508       exptokseq[i] = (int[])jj_expentries.elementAt(i);
 
7510     return new ParseException(token, exptokseq, tokenImage);
 
7513   final public void enable_tracing() {
 
7516   final public void disable_tracing() {
 
7519   final private void jj_rescan_token() {
 
7521     for (int i = 0; i < 5; i++) {
 
7522       JJCalls p = jj_2_rtns[i];
 
7524         if (p.gen > jj_gen) {
 
7525           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
 
7527             case 0: jj_3_1(); break;
 
7528             case 1: jj_3_2(); break;
 
7529             case 2: jj_3_3(); break;
 
7530             case 3: jj_3_4(); break;
 
7531             case 4: jj_3_5(); break;
 
7535       } while (p != null);
 
7540   final private void jj_save(int index, int xla) {
 
7541     JJCalls p = jj_2_rtns[index];
 
7542     while (p.gen > jj_gen) {
 
7543       if (p.next == null) { p = p.next = new JJCalls(); break; }
 
7546     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
 
7549   static final class JJCalls {