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.Enumeration;
 
  12 import java.util.ArrayList;
 
  13 import java.io.StringReader;
 
  15 import java.text.MessageFormat;
 
  17 import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
 
  18 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 
  19 import net.sourceforge.phpdt.internal.compiler.ast.*;
 
  20 import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
 
  21 import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
 
  25  * This php parser is inspired by the Java 1.2 grammar example
 
  26  * given with JavaCC. You can get JavaCC at http://www.webgain.com
 
  27  * You can test the parser with the PHPParserTestCase2.java
 
  28  * @author Matthieu Casanova
 
  30 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
 
  32   /** The file that is parsed. */
 
  33   private static IFile fileToParse;
 
  35   /** The current segment. */
 
  36   private static OutlineableWithChildren currentSegment;
 
  38   private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
 
  39   private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
 
  40   static PHPOutlineInfo outlineInfo;
 
  42   public static MethodDeclaration currentFunction;
 
  43   private static boolean assigning;
 
  45   /** The error level of the current ParseException. */
 
  46   private static int errorLevel = ERROR;
 
  47   /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
 
  48   private static String errorMessage;
 
  50   private static int errorStart = -1;
 
  51   private static int errorEnd = -1;
 
  52   private static PHPDocument phpDocument;
 
  54    * The point where html starts.
 
  55    * It will be used by the token manager to create HTMLCode objects
 
  57   public static int htmlStart;
 
  60   private final static int AstStackIncrement = 100;
 
  61   /** The stack of node. */
 
  62   private static AstNode[] nodes;
 
  63   /** The cursor in expression stack. */
 
  64   private static int nodePtr;
 
  65   private static VariableDeclaration[] variableDeclarationStack;
 
  66   private static int variableDeclarationPtr;
 
  67   private static Statement[] statementStack;
 
  68   private static int statementPtr;
 
  69   private static ElseIf[] elseIfStack;
 
  70   private static int elseIfPtr;
 
  72   public final void setFileToParse(final IFile fileToParse) {
 
  73     this.fileToParse = fileToParse;
 
  79   public PHPParser(final IFile fileToParse) {
 
  80     this(new StringReader(""));
 
  81     this.fileToParse = fileToParse;
 
  85    * Reinitialize the parser.
 
  87   private static final void init() {
 
  88     nodes = new AstNode[AstStackIncrement];
 
  89     statementStack = new Statement[AstStackIncrement];
 
  90     elseIfStack = new ElseIf[AstStackIncrement];
 
  98    * Add an php node on the stack.
 
  99    * @param node the node that will be added to the stack
 
 101   private static final void pushOnAstNodes(AstNode node) {
 
 103       nodes[++nodePtr] = node;
 
 104     } catch (IndexOutOfBoundsException e) {
 
 105       int oldStackLength = nodes.length;
 
 106       AstNode[] oldStack = nodes;
 
 107       nodes = new AstNode[oldStackLength + AstStackIncrement];
 
 108       System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
 
 109       nodePtr = oldStackLength;
 
 110       nodes[nodePtr] = node;
 
 114   private static final void pushOnVariableDeclarationStack(VariableDeclaration var) {
 
 116       variableDeclarationStack[++variableDeclarationPtr] = var;
 
 117     } catch (IndexOutOfBoundsException e) {
 
 118       int oldStackLength = variableDeclarationStack.length;
 
 119       VariableDeclaration[] oldStack = variableDeclarationStack;
 
 120       variableDeclarationStack = new VariableDeclaration[oldStackLength + AstStackIncrement];
 
 121       System.arraycopy(oldStack, 0, variableDeclarationStack, 0, oldStackLength);
 
 122       variableDeclarationPtr = oldStackLength;
 
 123       variableDeclarationStack[variableDeclarationPtr] = var;
 
 127   private static final void pushOnStatementStack(Statement statement) {
 
 129       statementStack[++statementPtr] = statement;
 
 130     } catch (IndexOutOfBoundsException e) {
 
 131       int oldStackLength = statementStack.length;
 
 132       Statement[] oldStack = statementStack;
 
 133       statementStack = new Statement[oldStackLength + AstStackIncrement];
 
 134       System.arraycopy(oldStack, 0, statementStack, 0, oldStackLength);
 
 135       statementPtr = oldStackLength;
 
 136       statementStack[statementPtr] = statement;
 
 140   private static final void pushOnElseIfStack(ElseIf elseIf) {
 
 142       elseIfStack[++elseIfPtr] = elseIf;
 
 143     } catch (IndexOutOfBoundsException e) {
 
 144       int oldStackLength = elseIfStack.length;
 
 145       ElseIf[] oldStack = elseIfStack;
 
 146       elseIfStack = new ElseIf[oldStackLength + AstStackIncrement];
 
 147       System.arraycopy(oldStack, 0, elseIfStack, 0, oldStackLength);
 
 148       elseIfPtr = oldStackLength;
 
 149       elseIfStack[elseIfPtr] = elseIf;
 
 153   public static final void phpParserTester(final String strEval) throws CoreException, ParseException {
 
 154     PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING);
 
 155     final StringReader stream = new StringReader(strEval);
 
 156     if (jj_input_stream == null) {
 
 157       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 159     ReInit(new StringReader(strEval));
 
 164   public static final void htmlParserTester(final File fileName) throws CoreException, ParseException {
 
 166       final Reader stream = new FileReader(fileName);
 
 167       if (jj_input_stream == null) {
 
 168         jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 173     } catch (FileNotFoundException e) {
 
 174       e.printStackTrace();  //To change body of catch statement use Options | File Templates.
 
 178   public static final void htmlParserTester(final String strEval) throws CoreException, ParseException {
 
 179     final StringReader stream = new StringReader(strEval);
 
 180     if (jj_input_stream == null) {
 
 181       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 188   public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
 
 189     currentSegment = new PHPDocument(parent);
 
 190     outlineInfo = new PHPOutlineInfo(parent);
 
 191     final StringReader stream = new StringReader(s);
 
 192     if (jj_input_stream == null) {
 
 193       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 199       phpDocument = new PHPDocument(null);
 
 200       phpDocument.nodes = nodes;
 
 201       PHPeclipsePlugin.log(1,phpDocument.toString());
 
 202     } catch (ParseException e) {
 
 203       processParseException(e);
 
 209    * This method will process the parse exception.
 
 210    * If the error message is null, the parse exception wasn't catched and a trace is written in the log
 
 211    * @param e the ParseException
 
 213   private static void processParseException(final ParseException e) {
 
 214     if (errorMessage == null) {
 
 215       PHPeclipsePlugin.log(e);
 
 216       errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
 
 217       errorStart = jj_input_stream.getPosition();
 
 218       errorEnd   = errorStart + 1;
 
 225    * Create marker for the parse error
 
 226    * @param e the ParseException
 
 228   private static void setMarker(final ParseException e) {
 
 230       if (errorStart == -1) {
 
 231         setMarker(fileToParse,
 
 233                   jj_input_stream.tokenBegin,
 
 234                   jj_input_stream.tokenBegin + e.currentToken.image.length(),
 
 236                   "Line " + e.currentToken.beginLine);
 
 238         setMarker(fileToParse,
 
 243                   "Line " + e.currentToken.beginLine);
 
 247     } catch (CoreException e2) {
 
 248       PHPeclipsePlugin.log(e2);
 
 253    * Create markers according to the external parser output
 
 255   private static void createMarkers(final String output, final IFile file) throws CoreException {
 
 256     // delete all markers
 
 257     file.deleteMarkers(IMarker.PROBLEM, false, 0);
 
 262     while ((brIndx = output.indexOf("<br />", indx)) != -1) {
 
 263       // newer php error output (tested with 4.2.3)
 
 264       scanLine(output, file, indx, brIndx);
 
 269       while ((brIndx = output.indexOf("<br>", indx)) != -1) {
 
 270         // older php error output (tested with 4.2.3)
 
 271         scanLine(output, file, indx, brIndx);
 
 277   private static void scanLine(final String output,
 
 280                                final int brIndx) throws CoreException {
 
 282     StringBuffer lineNumberBuffer = new StringBuffer(10);
 
 284     current = output.substring(indx, brIndx);
 
 286     if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
 
 287       int onLine = current.indexOf("on line <b>");
 
 289         lineNumberBuffer.delete(0, lineNumberBuffer.length());
 
 290         for (int i = onLine; i < current.length(); i++) {
 
 291           ch = current.charAt(i);
 
 292           if ('0' <= ch && '9' >= ch) {
 
 293             lineNumberBuffer.append(ch);
 
 297         int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
 
 299         Hashtable attributes = new Hashtable();
 
 301         current = current.replaceAll("\n", "");
 
 302         current = current.replaceAll("<b>", "");
 
 303         current = current.replaceAll("</b>", "");
 
 304         MarkerUtilities.setMessage(attributes, current);
 
 306         if (current.indexOf(PARSE_ERROR_STRING) != -1)
 
 307           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
 
 308         else if (current.indexOf(PARSE_WARNING_STRING) != -1)
 
 309           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
 
 311           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
 
 312         MarkerUtilities.setLineNumber(attributes, lineNumber);
 
 313         MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
 
 318   public final void parse(final String s) throws CoreException {
 
 319     final StringReader stream = new StringReader(s);
 
 320     if (jj_input_stream == null) {
 
 321       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 327     } catch (ParseException e) {
 
 328       processParseException(e);
 
 333    * Call the php parse command ( php -l -f <filename> )
 
 334    * and create markers according to the external parser output
 
 336   public static void phpExternalParse(final IFile file) {
 
 337     final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
 
 338     final String filename = file.getLocation().toString();
 
 340     final String[] arguments = { filename };
 
 341     final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
 
 342     final String command = form.format(arguments);
 
 344     final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
 
 347       // parse the buffer to find the errors and warnings
 
 348       createMarkers(parserResult, file);
 
 349     } catch (CoreException e) {
 
 350       PHPeclipsePlugin.log(e);
 
 355    * Put a new html block in the stack.
 
 357   public static final void createNewHTMLCode() {
 
 358     final int currentPosition = SimpleCharStream.getPosition();
 
 359     if (currentPosition == htmlStart) {
 
 362     final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition).toCharArray();
 
 363     pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
 
 366   private static final void parse() throws ParseException {
 
 370   static final public void phpTest() throws ParseException {
 
 373    PHPParser.createNewHTMLCode();
 
 376   static final public void phpFile() throws ParseException {
 
 380         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 418         case INTEGER_LITERAL:
 
 419         case FLOATING_POINT_LITERAL:
 
 435     } catch (TokenMgrError e) {
 
 436     PHPeclipsePlugin.log(e);
 
 437     errorStart   = SimpleCharStream.getPosition();
 
 438     errorEnd     = errorStart + 1;
 
 439     errorMessage = e.getMessage();
 
 441     {if (true) throw generateParseException();}
 
 446  * A php block is a <?= expression [;]?>
 
 447  * or <?php somephpcode ?>
 
 448  * or <? somephpcode ?>
 
 450   static final public void PhpBlock() throws ParseException {
 
 451   final int start = jj_input_stream.getPosition();
 
 452     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 492     case INTEGER_LITERAL:
 
 493     case FLOATING_POINT_LITERAL:
 
 500       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 503         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 505           jj_consume_token(PHPSTARTLONG);
 
 508           jj_consume_token(PHPSTARTSHORT);
 
 510       setMarker(fileToParse,
 
 511                 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
 
 513                 jj_input_stream.getPosition(),
 
 515                 "Line " + token.beginLine);
 
 516     } catch (CoreException e) {
 
 517       PHPeclipsePlugin.log(e);
 
 522           jj_consume_token(-1);
 
 523           throw new ParseException();
 
 532         jj_consume_token(PHPEND);
 
 533       } catch (ParseException e) {
 
 534     errorMessage = "'?>' expected";
 
 536     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 537     errorEnd   = jj_input_stream.getPosition() + 1;
 
 543       jj_consume_token(-1);
 
 544       throw new ParseException();
 
 548   static final public PHPEchoBlock phpEchoBlock() throws ParseException {
 
 549   final Expression expr;
 
 550   final int pos = SimpleCharStream.getPosition();
 
 551   PHPEchoBlock echoBlock;
 
 552     jj_consume_token(PHPECHOSTART);
 
 554     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 556       jj_consume_token(SEMICOLON);
 
 562     jj_consume_token(PHPEND);
 
 563   echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition());
 
 564   pushOnAstNodes(echoBlock);
 
 565   {if (true) return echoBlock;}
 
 566     throw new Error("Missing return statement in function");
 
 569   static final public void Php() throws ParseException {
 
 572       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 606       case INTEGER_LITERAL:
 
 607       case FLOATING_POINT_LITERAL:
 
 624   static final public ClassDeclaration ClassDeclaration() throws ParseException {
 
 625   final ClassDeclaration classDeclaration;
 
 626   final Token className;
 
 627   Token superclassName = null;
 
 629     jj_consume_token(CLASS);
 
 631      pos = jj_input_stream.getPosition();
 
 632       className = jj_consume_token(IDENTIFIER);
 
 633     } catch (ParseException e) {
 
 634     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 636     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 637     errorEnd     = jj_input_stream.getPosition() + 1;
 
 640     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 642       jj_consume_token(EXTENDS);
 
 644         superclassName = jj_consume_token(IDENTIFIER);
 
 645       } catch (ParseException e) {
 
 646       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 648       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 649       errorEnd   = jj_input_stream.getPosition() + 1;
 
 657     if (superclassName == null) {
 
 658       classDeclaration = new ClassDeclaration(currentSegment,
 
 659                                               className.image.toCharArray(),
 
 663       classDeclaration = new ClassDeclaration(currentSegment,
 
 664                                               className.image.toCharArray(),
 
 665                                               superclassName.image.toCharArray(),
 
 669       currentSegment.add(classDeclaration);
 
 670       currentSegment = classDeclaration;
 
 671     ClassBody(classDeclaration);
 
 672    currentSegment = (OutlineableWithChildren) currentSegment.getParent();
 
 673    classDeclaration.sourceEnd = SimpleCharStream.getPosition();
 
 674    pushOnAstNodes(classDeclaration);
 
 675    {if (true) return classDeclaration;}
 
 676     throw new Error("Missing return statement in function");
 
 679   static final public void ClassBody(ClassDeclaration classDeclaration) throws ParseException {
 
 681       jj_consume_token(LBRACE);
 
 682     } catch (ParseException e) {
 
 683     errorMessage = "unexpected token : '"+ e.currentToken.next.image + "', '{' expected";
 
 685     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 686     errorEnd   = jj_input_stream.getPosition() + 1;
 
 691       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 700       ClassBodyDeclaration(classDeclaration);
 
 703       jj_consume_token(RBRACE);
 
 704     } catch (ParseException e) {
 
 705     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', 'var', 'function' or '}' expected";
 
 707     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 708     errorEnd   = jj_input_stream.getPosition() + 1;
 
 714  * A class can contain only methods and fields.
 
 716   static final public void ClassBodyDeclaration(ClassDeclaration classDeclaration) throws ParseException {
 
 717   MethodDeclaration method;
 
 718   FieldDeclaration field;
 
 719     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 721       method = MethodDeclaration();
 
 722                                 classDeclaration.addMethod(method);
 
 725       field = FieldDeclaration();
 
 726                                 classDeclaration.addVariable(field);
 
 730       jj_consume_token(-1);
 
 731       throw new ParseException();
 
 736  * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
 
 738   static final public FieldDeclaration FieldDeclaration() throws ParseException {
 
 739   VariableDeclaration variableDeclaration;
 
 740   VariableDeclaration[] list;
 
 741   final ArrayList arrayList = new ArrayList();
 
 742   final int pos = SimpleCharStream.getPosition();
 
 743     jj_consume_token(VAR);
 
 744     variableDeclaration = VariableDeclarator();
 
 745    arrayList.add(variableDeclaration);
 
 746    outlineInfo.addVariable(new String(variableDeclaration.name));
 
 747    currentSegment.add(variableDeclaration);
 
 750       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 758       jj_consume_token(COMMA);
 
 759       variableDeclaration = VariableDeclarator();
 
 760        arrayList.add(variableDeclaration);
 
 761        outlineInfo.addVariable(new String(variableDeclaration.name));
 
 762        currentSegment.add(variableDeclaration);
 
 765       jj_consume_token(SEMICOLON);
 
 766     } catch (ParseException e) {
 
 767     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
 
 769     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 770     errorEnd   = jj_input_stream.getPosition() + 1;
 
 773    list = new VariableDeclaration[arrayList.size()];
 
 774    arrayList.toArray(list);
 
 775    {if (true) return new FieldDeclaration(list,
 
 777                                SimpleCharStream.getPosition());}
 
 778     throw new Error("Missing return statement in function");
 
 781   static final public VariableDeclaration VariableDeclarator() throws ParseException {
 
 782   final String varName, varValue;
 
 783   Expression initializer = null;
 
 784   final int pos = jj_input_stream.getPosition();
 
 785     varName = VariableDeclaratorId();
 
 786     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 788       jj_consume_token(ASSIGN);
 
 790         initializer = VariableInitializer();
 
 791       } catch (ParseException e) {
 
 792       errorMessage = "Literal expression expected in variable initializer";
 
 794       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 795       errorEnd   = jj_input_stream.getPosition() + 1;
 
 803   if (initializer == null) {
 
 804     {if (true) return new VariableDeclaration(currentSegment,
 
 805                                   varName.toCharArray(),
 
 807                                   jj_input_stream.getPosition());}
 
 809     {if (true) return new VariableDeclaration(currentSegment,
 
 810                                     varName.toCharArray(),
 
 813     throw new Error("Missing return statement in function");
 
 818  * @return the variable name (with suffix)
 
 820   static final public String VariableDeclaratorId() throws ParseException {
 
 822   Expression expression;
 
 823   final StringBuffer buff = new StringBuffer();
 
 824   final int pos = SimpleCharStream.getPosition();
 
 825   ConstantIdentifier ex;
 
 836        ex = new ConstantIdentifier(expr.toCharArray(),
 
 838                                    SimpleCharStream.getPosition());
 
 839         expression = VariableSuffix(ex);
 
 840        buff.append(expression.toStringExpression());
 
 842      {if (true) return buff.toString();}
 
 843     } catch (ParseException e) {
 
 844     errorMessage = "'$' expected for variable identifier";
 
 846     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
 847     errorEnd   = jj_input_stream.getPosition() + 1;
 
 850     throw new Error("Missing return statement in function");
 
 853   static final public String Variable() throws ParseException {
 
 854   final StringBuffer buff;
 
 855   Expression expression = null;
 
 858     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 860       token = jj_consume_token(DOLLAR_ID);
 
 861       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 863         jj_consume_token(LBRACE);
 
 864         expression = Expression();
 
 865         jj_consume_token(RBRACE);
 
 871     if (expression == null && !assigning) {
 
 872       {if (true) return token.image.substring(1);}
 
 874     buff = new StringBuffer(token.image);
 
 876     buff.append(expression.toStringExpression());
 
 878     {if (true) return buff.toString();}
 
 881       jj_consume_token(DOLLAR);
 
 882       expr = VariableName();
 
 883    {if (true) return expr;}
 
 887       jj_consume_token(-1);
 
 888       throw new ParseException();
 
 890     throw new Error("Missing return statement in function");
 
 893   static final public String VariableName() throws ParseException {
 
 894   final StringBuffer buff;
 
 896   Expression expression = null;
 
 898     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 900       jj_consume_token(LBRACE);
 
 901       expression = Expression();
 
 902       jj_consume_token(RBRACE);
 
 903    buff = new StringBuffer('{');
 
 904    buff.append(expression.toStringExpression());
 
 906    {if (true) return buff.toString();}
 
 909       token = jj_consume_token(IDENTIFIER);
 
 910       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 912         jj_consume_token(LBRACE);
 
 913         expression = Expression();
 
 914         jj_consume_token(RBRACE);
 
 920     if (expression == null) {
 
 921       {if (true) return token.image;}
 
 923     buff = new StringBuffer(token.image);
 
 925     buff.append(expression.toStringExpression());
 
 927     {if (true) return buff.toString();}
 
 930       jj_consume_token(DOLLAR);
 
 931       expr = VariableName();
 
 932     buff = new StringBuffer('$');
 
 934     {if (true) return buff.toString();}
 
 937       token = jj_consume_token(DOLLAR_ID);
 
 938                        {if (true) return token.image;}
 
 942       jj_consume_token(-1);
 
 943       throw new ParseException();
 
 945     throw new Error("Missing return statement in function");
 
 948   static final public Expression VariableInitializer() throws ParseException {
 
 949   final Expression expr;
 
 951   final int pos = SimpleCharStream.getPosition();
 
 952     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 956     case INTEGER_LITERAL:
 
 957     case FLOATING_POINT_LITERAL:
 
 960    {if (true) return expr;}
 
 963       jj_consume_token(MINUS);
 
 964       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 965       case INTEGER_LITERAL:
 
 966         token = jj_consume_token(INTEGER_LITERAL);
 
 968       case FLOATING_POINT_LITERAL:
 
 969         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 973         jj_consume_token(-1);
 
 974         throw new ParseException();
 
 976    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 978                                                         SimpleCharStream.getPosition()),
 
 983       jj_consume_token(PLUS);
 
 984       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 985       case INTEGER_LITERAL:
 
 986         token = jj_consume_token(INTEGER_LITERAL);
 
 988       case FLOATING_POINT_LITERAL:
 
 989         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 993         jj_consume_token(-1);
 
 994         throw new ParseException();
 
 996    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 998                                                         SimpleCharStream.getPosition()),
 
1003       expr = ArrayDeclarator();
 
1004    {if (true) return expr;}
 
1007       token = jj_consume_token(IDENTIFIER);
 
1008    {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());}
 
1011       jj_la1[17] = jj_gen;
 
1012       jj_consume_token(-1);
 
1013       throw new ParseException();
 
1015     throw new Error("Missing return statement in function");
 
1018   static final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
 
1019 Expression expr,expr2;
 
1020     expr = Expression();
 
1021     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1023       jj_consume_token(ARRAYASSIGN);
 
1024       expr2 = Expression();
 
1025    {if (true) return new ArrayVariableDeclaration(expr,expr2);}
 
1028       jj_la1[18] = jj_gen;
 
1031    {if (true) return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
 
1032     throw new Error("Missing return statement in function");
 
1035   static final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
 
1036   ArrayVariableDeclaration expr;
 
1037   final ArrayList list = new ArrayList();
 
1038     jj_consume_token(LPAREN);
 
1039     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1055     case INTEGER_LITERAL:
 
1056     case FLOATING_POINT_LITERAL:
 
1057     case STRING_LITERAL:
 
1061       expr = ArrayVariable();
 
1070         jj_consume_token(COMMA);
 
1071         expr = ArrayVariable();
 
1076       jj_la1[19] = jj_gen;
 
1079     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1081       jj_consume_token(COMMA);
 
1085       jj_la1[20] = jj_gen;
 
1088     jj_consume_token(RPAREN);
 
1089   ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
 
1091   {if (true) return vars;}
 
1092     throw new Error("Missing return statement in function");
 
1096  * A Method Declaration.
 
1097  * <b>function</b> MetodDeclarator() Block()
 
1099   static final public MethodDeclaration MethodDeclaration() throws ParseException {
 
1100   final MethodDeclaration functionDeclaration;
 
1101   Token functionToken;
 
1103     functionToken = jj_consume_token(FUNCTION);
 
1105       functionDeclaration = MethodDeclarator();
 
1106      outlineInfo.addVariable(new String(functionDeclaration.name));
 
1107     } catch (ParseException e) {
 
1108     if (errorMessage != null) {
 
1109       {if (true) throw e;}
 
1111     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1113     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1114     errorEnd   = jj_input_stream.getPosition() + 1;
 
1115     {if (true) throw e;}
 
1117     if (currentSegment != null) {
 
1118       currentSegment.add(functionDeclaration);
 
1119       currentSegment = functionDeclaration;
 
1121     currentFunction = functionDeclaration;
 
1123     functionDeclaration.statements = block.statements;
 
1124     currentFunction = null;
 
1125     if (currentSegment != null) {
 
1126       currentSegment = (OutlineableWithChildren) currentSegment.getParent();
 
1128     {if (true) return functionDeclaration;}
 
1129     throw new Error("Missing return statement in function");
 
1133  * A MethodDeclarator.
 
1134  * [&] IDENTIFIER(parameters ...).
 
1135  * @return a function description for the outline
 
1137   static final public MethodDeclaration MethodDeclarator() throws ParseException {
 
1138   final Token identifier;
 
1139   Token reference = null;
 
1140   final Hashtable formalParameters;
 
1141   final int pos = SimpleCharStream.getPosition();
 
1142     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1144       reference = jj_consume_token(BIT_AND);
 
1147       jj_la1[21] = jj_gen;
 
1150     identifier = jj_consume_token(IDENTIFIER);
 
1151     formalParameters = FormalParameters();
 
1152    {if (true) return new MethodDeclaration(currentSegment,
 
1153                                  identifier.image.toCharArray(),
 
1157                                  SimpleCharStream.getPosition());}
 
1158     throw new Error("Missing return statement in function");
 
1162  * FormalParameters follows method identifier.
 
1163  * (FormalParameter())
 
1165   static final public Hashtable FormalParameters() throws ParseException {
 
1167   final StringBuffer buff = new StringBuffer("(");
 
1168   VariableDeclaration var;
 
1169   final Hashtable parameters = new Hashtable();
 
1171       jj_consume_token(LPAREN);
 
1172     } catch (ParseException e) {
 
1173     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
 
1175     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1176     errorEnd   = jj_input_stream.getPosition() + 1;
 
1177     {if (true) throw e;}
 
1179     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1183       var = FormalParameter();
 
1184                parameters.put(new String(var.name),var);
 
1187         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1192           jj_la1[22] = jj_gen;
 
1195         jj_consume_token(COMMA);
 
1196         var = FormalParameter();
 
1197                  parameters.put(new String(var.name),var);
 
1201       jj_la1[23] = jj_gen;
 
1205       jj_consume_token(RPAREN);
 
1206     } catch (ParseException e) {
 
1207     errorMessage = "')' expected";
 
1209     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1210     errorEnd   = jj_input_stream.getPosition() + 1;
 
1211     {if (true) throw e;}
 
1213   {if (true) return parameters;}
 
1214     throw new Error("Missing return statement in function");
 
1218  * A formal parameter.
 
1219  * $varname[=value] (,$varname[=value])
 
1221   static final public VariableDeclaration FormalParameter() throws ParseException {
 
1222   final VariableDeclaration variableDeclaration;
 
1224     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1226       token = jj_consume_token(BIT_AND);
 
1229       jj_la1[24] = jj_gen;
 
1232     variableDeclaration = VariableDeclarator();
 
1233     if (token != null) {
 
1234       variableDeclaration.setReference(true);
 
1236     {if (true) return variableDeclaration;}
 
1237     throw new Error("Missing return statement in function");
 
1240   static final public ConstantIdentifier Type() throws ParseException {
 
1242     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1244       jj_consume_token(STRING);
 
1245                         pos = SimpleCharStream.getPosition();
 
1246                         {if (true) return new ConstantIdentifier(Types.STRING,
 
1250       jj_consume_token(BOOL);
 
1251                         pos = SimpleCharStream.getPosition();
 
1252                         {if (true) return new ConstantIdentifier(Types.BOOL,
 
1256       jj_consume_token(BOOLEAN);
 
1257                         pos = SimpleCharStream.getPosition();
 
1258                         {if (true) return new ConstantIdentifier(Types.BOOLEAN,
 
1262       jj_consume_token(REAL);
 
1263                         pos = SimpleCharStream.getPosition();
 
1264                         {if (true) return new ConstantIdentifier(Types.REAL,
 
1268       jj_consume_token(DOUBLE);
 
1269                         pos = SimpleCharStream.getPosition();
 
1270                         {if (true) return new ConstantIdentifier(Types.DOUBLE,
 
1274       jj_consume_token(FLOAT);
 
1275                         pos = SimpleCharStream.getPosition();
 
1276                         {if (true) return new ConstantIdentifier(Types.FLOAT,
 
1280       jj_consume_token(INT);
 
1281                         pos = SimpleCharStream.getPosition();
 
1282                         {if (true) return new ConstantIdentifier(Types.INT,
 
1286       jj_consume_token(INTEGER);
 
1287                         pos = SimpleCharStream.getPosition();
 
1288                         {if (true) return new ConstantIdentifier(Types.INTEGER,
 
1292       jj_consume_token(OBJECT);
 
1293                         pos = SimpleCharStream.getPosition();
 
1294                         {if (true) return new ConstantIdentifier(Types.OBJECT,
 
1298       jj_la1[25] = jj_gen;
 
1299       jj_consume_token(-1);
 
1300       throw new ParseException();
 
1302     throw new Error("Missing return statement in function");
 
1305   static final public Expression Expression() throws ParseException {
 
1306   final Expression expr;
 
1307     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1309       expr = PrintExpression();
 
1310                                   {if (true) return expr;}
 
1313       expr = ListExpression();
 
1314                                   {if (true) return expr;}
 
1317       jj_la1[26] = jj_gen;
 
1318       if (jj_2_3(2147483647)) {
 
1319         expr = varAssignation();
 
1320                                   {if (true) return expr;}
 
1322         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1336         case INTEGER_LITERAL:
 
1337         case FLOATING_POINT_LITERAL:
 
1338         case STRING_LITERAL:
 
1342           expr = ConditionalExpression();
 
1343                                   {if (true) return expr;}
 
1346           jj_la1[27] = jj_gen;
 
1347           jj_consume_token(-1);
 
1348           throw new ParseException();
 
1352     throw new Error("Missing return statement in function");
 
1356  * A Variable assignation.
 
1357  * varName (an assign operator) any expression
 
1359   static final public VarAssignation varAssignation() throws ParseException {
 
1361   final Expression expression;
 
1362   final int assignOperator;
 
1363   final int pos = SimpleCharStream.getPosition();
 
1364     varName = VariableDeclaratorId();
 
1365     assignOperator = AssignmentOperator();
 
1367       expression = Expression();
 
1368     } catch (ParseException e) {
 
1369       if (errorMessage != null) {
 
1370         {if (true) throw e;}
 
1372       errorMessage = "expression expected";
 
1374       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1375       errorEnd   = jj_input_stream.getPosition() + 1;
 
1376       {if (true) throw e;}
 
1378      {if (true) return new VarAssignation(varName.toCharArray(),
 
1382                                SimpleCharStream.getPosition());}
 
1383     throw new Error("Missing return statement in function");
 
1386   static final public int AssignmentOperator() throws ParseException {
 
1387     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1389       jj_consume_token(ASSIGN);
 
1390                         {if (true) return VarAssignation.EQUAL;}
 
1393       jj_consume_token(STARASSIGN);
 
1394                         {if (true) return VarAssignation.STAR_EQUAL;}
 
1397       jj_consume_token(SLASHASSIGN);
 
1398                         {if (true) return VarAssignation.SLASH_EQUAL;}
 
1401       jj_consume_token(REMASSIGN);
 
1402                         {if (true) return VarAssignation.REM_EQUAL;}
 
1405       jj_consume_token(PLUSASSIGN);
 
1406                         {if (true) return VarAssignation.PLUS_EQUAL;}
 
1409       jj_consume_token(MINUSASSIGN);
 
1410                         {if (true) return VarAssignation.MINUS_EQUAL;}
 
1413       jj_consume_token(LSHIFTASSIGN);
 
1414                         {if (true) return VarAssignation.LSHIFT_EQUAL;}
 
1416     case RSIGNEDSHIFTASSIGN:
 
1417       jj_consume_token(RSIGNEDSHIFTASSIGN);
 
1418                         {if (true) return VarAssignation.RSIGNEDSHIFT_EQUAL;}
 
1421       jj_consume_token(ANDASSIGN);
 
1422                         {if (true) return VarAssignation.AND_EQUAL;}
 
1425       jj_consume_token(XORASSIGN);
 
1426                         {if (true) return VarAssignation.XOR_EQUAL;}
 
1429       jj_consume_token(ORASSIGN);
 
1430                         {if (true) return VarAssignation.OR_EQUAL;}
 
1433       jj_consume_token(DOTASSIGN);
 
1434                         {if (true) return VarAssignation.DOT_EQUAL;}
 
1437       jj_consume_token(TILDEEQUAL);
 
1438                         {if (true) return VarAssignation.TILDE_EQUAL;}
 
1441       jj_la1[28] = jj_gen;
 
1442       jj_consume_token(-1);
 
1443       throw new ParseException();
 
1445     throw new Error("Missing return statement in function");
 
1448   static final public Expression ConditionalExpression() throws ParseException {
 
1449   final Expression expr;
 
1450   Expression expr2 = null;
 
1451   Expression expr3 = null;
 
1452     expr = ConditionalOrExpression();
 
1453     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1455       jj_consume_token(HOOK);
 
1456       expr2 = Expression();
 
1457       jj_consume_token(COLON);
 
1458       expr3 = ConditionalExpression();
 
1461       jj_la1[29] = jj_gen;
 
1464   if (expr3 == null) {
 
1465     {if (true) return expr;}
 
1467   {if (true) return new ConditionalExpression(expr,expr2,expr3);}
 
1468     throw new Error("Missing return statement in function");
 
1471   static final public Expression ConditionalOrExpression() throws ParseException {
 
1472   Expression expr,expr2;
 
1474     expr = ConditionalAndExpression();
 
1477       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1483         jj_la1[30] = jj_gen;
 
1486       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1488         jj_consume_token(OR_OR);
 
1489                  operator = OperatorIds.OR_OR;
 
1492         jj_consume_token(_ORL);
 
1493                  operator = OperatorIds.ORL;
 
1496         jj_la1[31] = jj_gen;
 
1497         jj_consume_token(-1);
 
1498         throw new ParseException();
 
1500       expr2 = ConditionalAndExpression();
 
1501       expr = new BinaryExpression(expr,expr2,operator);
 
1503    {if (true) return expr;}
 
1504     throw new Error("Missing return statement in function");
 
1507   static final public Expression ConditionalAndExpression() throws ParseException {
 
1508   Expression expr,expr2;
 
1510     expr = ConcatExpression();
 
1513       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1519         jj_la1[32] = jj_gen;
 
1522       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1524         jj_consume_token(AND_AND);
 
1525                 operator = OperatorIds.AND_AND;
 
1528         jj_consume_token(_ANDL);
 
1529                 operator = OperatorIds.ANDL;
 
1532         jj_la1[33] = jj_gen;
 
1533         jj_consume_token(-1);
 
1534         throw new ParseException();
 
1536       expr2 = ConcatExpression();
 
1537                                expr = new BinaryExpression(expr,expr2,operator);
 
1539    {if (true) return expr;}
 
1540     throw new Error("Missing return statement in function");
 
1543   static final public Expression ConcatExpression() throws ParseException {
 
1544   Expression expr,expr2;
 
1545     expr = InclusiveOrExpression();
 
1548       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1553         jj_la1[34] = jj_gen;
 
1556       jj_consume_token(DOT);
 
1557       expr2 = InclusiveOrExpression();
 
1558      expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
 
1560    {if (true) return expr;}
 
1561     throw new Error("Missing return statement in function");
 
1564   static final public Expression InclusiveOrExpression() throws ParseException {
 
1565   Expression expr,expr2;
 
1566     expr = ExclusiveOrExpression();
 
1569       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1574         jj_la1[35] = jj_gen;
 
1577       jj_consume_token(BIT_OR);
 
1578       expr2 = ExclusiveOrExpression();
 
1579     expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
 
1581    {if (true) return expr;}
 
1582     throw new Error("Missing return statement in function");
 
1585   static final public Expression ExclusiveOrExpression() throws ParseException {
 
1586   Expression expr,expr2;
 
1587     expr = AndExpression();
 
1590       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1595         jj_la1[36] = jj_gen;
 
1598       jj_consume_token(XOR);
 
1599       expr2 = AndExpression();
 
1600      expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
 
1602    {if (true) return expr;}
 
1603     throw new Error("Missing return statement in function");
 
1606   static final public Expression AndExpression() throws ParseException {
 
1607   Expression expr,expr2;
 
1608     expr = EqualityExpression();
 
1611       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1616         jj_la1[37] = jj_gen;
 
1619       jj_consume_token(BIT_AND);
 
1620       expr2 = EqualityExpression();
 
1621      expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
 
1623    {if (true) return expr;}
 
1624     throw new Error("Missing return statement in function");
 
1627   static final public Expression EqualityExpression() throws ParseException {
 
1628   Expression expr,expr2;
 
1630     expr = RelationalExpression();
 
1633       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1637       case BANGDOUBLEEQUAL:
 
1642         jj_la1[38] = jj_gen;
 
1645       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1647         jj_consume_token(EQUAL_EQUAL);
 
1648                           operator = OperatorIds.EQUAL_EQUAL;
 
1651         jj_consume_token(DIF);
 
1652                           operator = OperatorIds.DIF;
 
1655         jj_consume_token(NOT_EQUAL);
 
1656                           operator = OperatorIds.DIF;
 
1658       case BANGDOUBLEEQUAL:
 
1659         jj_consume_token(BANGDOUBLEEQUAL);
 
1660                           operator = OperatorIds.BANG_EQUAL_EQUAL;
 
1663         jj_consume_token(TRIPLEEQUAL);
 
1664                           operator = OperatorIds.EQUAL_EQUAL_EQUAL;
 
1667         jj_la1[39] = jj_gen;
 
1668         jj_consume_token(-1);
 
1669         throw new ParseException();
 
1672         expr2 = RelationalExpression();
 
1673       } catch (ParseException e) {
 
1674     if (errorMessage != null) {
 
1675       {if (true) throw e;}
 
1677     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1679     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1680     errorEnd   = jj_input_stream.getPosition() + 1;
 
1681     {if (true) throw e;}
 
1683     expr = new BinaryExpression(expr,expr2,operator);
 
1685    {if (true) return expr;}
 
1686     throw new Error("Missing return statement in function");
 
1689   static final public Expression RelationalExpression() throws ParseException {
 
1690   Expression expr,expr2;
 
1692     expr = ShiftExpression();
 
1695       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1703         jj_la1[40] = jj_gen;
 
1706       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1708         jj_consume_token(LT);
 
1709           operator = OperatorIds.LESS;
 
1712         jj_consume_token(GT);
 
1713           operator = OperatorIds.GREATER;
 
1716         jj_consume_token(LE);
 
1717           operator = OperatorIds.LESS_EQUAL;
 
1720         jj_consume_token(GE);
 
1721           operator = OperatorIds.GREATER_EQUAL;
 
1724         jj_la1[41] = jj_gen;
 
1725         jj_consume_token(-1);
 
1726         throw new ParseException();
 
1728       expr2 = ShiftExpression();
 
1729    expr = new BinaryExpression(expr,expr2,operator);
 
1731    {if (true) return expr;}
 
1732     throw new Error("Missing return statement in function");
 
1735   static final public Expression ShiftExpression() throws ParseException {
 
1736   Expression expr,expr2;
 
1738     expr = AdditiveExpression();
 
1741       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1744       case RUNSIGNEDSHIFT:
 
1748         jj_la1[42] = jj_gen;
 
1751       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1753         jj_consume_token(LSHIFT);
 
1754                       operator = OperatorIds.LEFT_SHIFT;
 
1757         jj_consume_token(RSIGNEDSHIFT);
 
1758                       operator = OperatorIds.RIGHT_SHIFT;
 
1760       case RUNSIGNEDSHIFT:
 
1761         jj_consume_token(RUNSIGNEDSHIFT);
 
1762                       operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
 
1765         jj_la1[43] = jj_gen;
 
1766         jj_consume_token(-1);
 
1767         throw new ParseException();
 
1769       expr2 = AdditiveExpression();
 
1770    expr = new BinaryExpression(expr,expr2,operator);
 
1772    {if (true) return expr;}
 
1773     throw new Error("Missing return statement in function");
 
1776   static final public Expression AdditiveExpression() throws ParseException {
 
1777   Expression expr,expr2;
 
1779     expr = MultiplicativeExpression();
 
1782       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1788         jj_la1[44] = jj_gen;
 
1791       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1793         jj_consume_token(PLUS);
 
1794               operator = OperatorIds.PLUS;
 
1797         jj_consume_token(MINUS);
 
1798               operator = OperatorIds.MINUS;
 
1801         jj_la1[45] = jj_gen;
 
1802         jj_consume_token(-1);
 
1803         throw new ParseException();
 
1805       expr2 = MultiplicativeExpression();
 
1806    expr = new BinaryExpression(expr,expr2,operator);
 
1808    {if (true) return expr;}
 
1809     throw new Error("Missing return statement in function");
 
1812   static final public Expression MultiplicativeExpression() throws ParseException {
 
1813   Expression expr,expr2;
 
1816       expr = UnaryExpression();
 
1817     } catch (ParseException e) {
 
1818     if (errorMessage != null) {
 
1819       {if (true) throw e;}
 
1821     errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
 
1823     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
1824     errorEnd   = jj_input_stream.getPosition() + 1;
 
1825     {if (true) throw e;}
 
1829       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1836         jj_la1[46] = jj_gen;
 
1839       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1841         jj_consume_token(STAR);
 
1842                    operator = OperatorIds.MULTIPLY;
 
1845         jj_consume_token(SLASH);
 
1846                    operator = OperatorIds.DIVIDE;
 
1849         jj_consume_token(REMAINDER);
 
1850                    operator = OperatorIds.REMAINDER;
 
1853         jj_la1[47] = jj_gen;
 
1854         jj_consume_token(-1);
 
1855         throw new ParseException();
 
1857       expr2 = UnaryExpression();
 
1858      expr = new BinaryExpression(expr,expr2,operator);
 
1860    {if (true) return expr;}
 
1861     throw new Error("Missing return statement in function");
 
1865  * An unary expression starting with @, & or nothing
 
1867   static final public Expression UnaryExpression() throws ParseException {
 
1869   final int pos = SimpleCharStream.getPosition();
 
1870     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1872       jj_consume_token(BIT_AND);
 
1873       expr = UnaryExpressionNoPrefix();
 
1874    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
 
1888     case INTEGER_LITERAL:
 
1889     case FLOATING_POINT_LITERAL:
 
1890     case STRING_LITERAL:
 
1894       expr = AtUnaryExpression();
 
1895    {if (true) return expr;}
 
1898       jj_la1[48] = jj_gen;
 
1899       jj_consume_token(-1);
 
1900       throw new ParseException();
 
1902     throw new Error("Missing return statement in function");
 
1905   static final public Expression AtUnaryExpression() throws ParseException {
 
1907   final int pos = SimpleCharStream.getPosition();
 
1908     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1910       jj_consume_token(AT);
 
1911       expr = AtUnaryExpression();
 
1912    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);}
 
1925     case INTEGER_LITERAL:
 
1926     case FLOATING_POINT_LITERAL:
 
1927     case STRING_LITERAL:
 
1931       expr = UnaryExpressionNoPrefix();
 
1932    {if (true) return expr;}
 
1935       jj_la1[49] = jj_gen;
 
1936       jj_consume_token(-1);
 
1937       throw new ParseException();
 
1939     throw new Error("Missing return statement in function");
 
1942   static final public Expression UnaryExpressionNoPrefix() throws ParseException {
 
1945   final int pos = SimpleCharStream.getPosition();
 
1946     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1949       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1951         jj_consume_token(PLUS);
 
1952               operator = OperatorIds.PLUS;
 
1955         jj_consume_token(MINUS);
 
1956               operator = OperatorIds.MINUS;
 
1959         jj_la1[50] = jj_gen;
 
1960         jj_consume_token(-1);
 
1961         throw new ParseException();
 
1963       expr = UnaryExpression();
 
1964    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
1968       expr = PreIncDecExpression();
 
1969    {if (true) return expr;}
 
1978     case INTEGER_LITERAL:
 
1979     case FLOATING_POINT_LITERAL:
 
1980     case STRING_LITERAL:
 
1984       expr = UnaryExpressionNotPlusMinus();
 
1985    {if (true) return expr;}
 
1988       jj_la1[51] = jj_gen;
 
1989       jj_consume_token(-1);
 
1990       throw new ParseException();
 
1992     throw new Error("Missing return statement in function");
 
1995   static final public Expression PreIncDecExpression() throws ParseException {
 
1996 final Expression expr;
 
1998   final int pos = SimpleCharStream.getPosition();
 
1999     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2001       jj_consume_token(INCR);
 
2002              operator = OperatorIds.PLUS_PLUS;
 
2005       jj_consume_token(DECR);
 
2006              operator = OperatorIds.MINUS_MINUS;
 
2009       jj_la1[52] = jj_gen;
 
2010       jj_consume_token(-1);
 
2011       throw new ParseException();
 
2013     expr = PrimaryExpression();
 
2014    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
2015     throw new Error("Missing return statement in function");
 
2018   static final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
 
2020   final int pos = SimpleCharStream.getPosition();
 
2021     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2023       jj_consume_token(BANG);
 
2024       expr = UnaryExpression();
 
2025                                    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);}
 
2028       jj_la1[53] = jj_gen;
 
2029       if (jj_2_4(2147483647)) {
 
2030         expr = CastExpression();
 
2031                                    {if (true) return expr;}
 
2033         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2039           expr = PostfixExpression();
 
2040                                    {if (true) return expr;}
 
2045         case INTEGER_LITERAL:
 
2046         case FLOATING_POINT_LITERAL:
 
2047         case STRING_LITERAL:
 
2049                                    {if (true) return expr;}
 
2052           jj_consume_token(LPAREN);
 
2053           expr = Expression();
 
2055             jj_consume_token(RPAREN);
 
2056           } catch (ParseException e) {
 
2057     errorMessage = "')' expected";
 
2059     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2060     errorEnd     = jj_input_stream.getPosition() + 1;
 
2061     {if (true) throw e;}
 
2063    {if (true) return expr;}
 
2066           jj_la1[54] = jj_gen;
 
2067           jj_consume_token(-1);
 
2068           throw new ParseException();
 
2072     throw new Error("Missing return statement in function");
 
2075   static final public CastExpression CastExpression() throws ParseException {
 
2076 final ConstantIdentifier type;
 
2077 final Expression expr;
 
2078 final int pos = SimpleCharStream.getPosition();
 
2079     jj_consume_token(LPAREN);
 
2080     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2093       jj_consume_token(ARRAY);
 
2094              type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition());
 
2097       jj_la1[55] = jj_gen;
 
2098       jj_consume_token(-1);
 
2099       throw new ParseException();
 
2101     jj_consume_token(RPAREN);
 
2102     expr = UnaryExpression();
 
2103    {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());}
 
2104     throw new Error("Missing return statement in function");
 
2107   static final public Expression PostfixExpression() throws ParseException {
 
2110   final int pos = SimpleCharStream.getPosition();
 
2111     expr = PrimaryExpression();
 
2112     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2115       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2117         jj_consume_token(INCR);
 
2118             operator = OperatorIds.PLUS_PLUS;
 
2121         jj_consume_token(DECR);
 
2122             operator = OperatorIds.MINUS_MINUS;
 
2125         jj_la1[56] = jj_gen;
 
2126         jj_consume_token(-1);
 
2127         throw new ParseException();
 
2131       jj_la1[57] = jj_gen;
 
2134     if (operator == -1) {
 
2135       {if (true) return expr;}
 
2137     {if (true) return new PostfixedUnaryExpression(expr,operator,pos);}
 
2138     throw new Error("Missing return statement in function");
 
2141   static final public Expression PrimaryExpression() throws ParseException {
 
2142   final Token identifier;
 
2144   final StringBuffer buff = new StringBuffer();
 
2145   final int pos = SimpleCharStream.getPosition();
 
2147       identifier = jj_consume_token(IDENTIFIER);
 
2148       jj_consume_token(STATICCLASSACCESS);
 
2149       expr = ClassIdentifier();
 
2150    expr = new ClassAccess(new ConstantIdentifier(identifier.image.toCharArray(),
 
2152                                                  SimpleCharStream.getPosition()),
 
2154                           ClassAccess.STATIC);
 
2157         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2164           jj_la1[58] = jj_gen;
 
2167         expr = PrimarySuffix(expr);
 
2169    {if (true) return expr;}
 
2171       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2176         expr = PrimaryPrefix();
 
2179           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2186             jj_la1[59] = jj_gen;
 
2189           expr = PrimarySuffix(expr);
 
2191    {if (true) return expr;}
 
2194         expr = ArrayDeclarator();
 
2195    {if (true) return expr;}
 
2198         jj_la1[60] = jj_gen;
 
2199         jj_consume_token(-1);
 
2200         throw new ParseException();
 
2203     throw new Error("Missing return statement in function");
 
2206   static final public ArrayInitializer ArrayDeclarator() throws ParseException {
 
2207   final ArrayVariableDeclaration[] vars;
 
2208   final int pos = SimpleCharStream.getPosition();
 
2209     jj_consume_token(ARRAY);
 
2210     vars = ArrayInitializer();
 
2211    {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());}
 
2212     throw new Error("Missing return statement in function");
 
2215   static final public Expression PrimaryPrefix() throws ParseException {
 
2216   final Expression expr;
 
2219   final int pos = SimpleCharStream.getPosition();
 
2220     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2222       token = jj_consume_token(IDENTIFIER);
 
2223                                   {if (true) return new ConstantIdentifier(token.image.toCharArray(),
 
2225                                                                 SimpleCharStream.getPosition());}
 
2228       jj_consume_token(NEW);
 
2229       expr = ClassIdentifier();
 
2230                                   {if (true) return new PrefixedUnaryExpression(expr,
 
2236       var = VariableDeclaratorId();
 
2237                                  {if (true) return new ConstantIdentifier(var.toCharArray(),
 
2239                                                                SimpleCharStream.getPosition());}
 
2242       jj_la1[61] = jj_gen;
 
2243       jj_consume_token(-1);
 
2244       throw new ParseException();
 
2246     throw new Error("Missing return statement in function");
 
2249   static final public PrefixedUnaryExpression classInstantiation() throws ParseException {
 
2251   final StringBuffer buff;
 
2252   final int pos = SimpleCharStream.getPosition();
 
2253     jj_consume_token(NEW);
 
2254     expr = ClassIdentifier();
 
2255     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2261      buff = new StringBuffer(expr.toStringExpression());
 
2262       expr = PrimaryExpression();
 
2263      buff.append(expr.toStringExpression());
 
2264     expr = new ConstantIdentifier(buff.toString().toCharArray(),
 
2266                                   SimpleCharStream.getPosition());
 
2269       jj_la1[62] = jj_gen;
 
2272    {if (true) return new PrefixedUnaryExpression(expr,
 
2275     throw new Error("Missing return statement in function");
 
2278   static final public ConstantIdentifier ClassIdentifier() throws ParseException {
 
2281   final int pos = SimpleCharStream.getPosition();
 
2282     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2284       token = jj_consume_token(IDENTIFIER);
 
2285                                  {if (true) return new ConstantIdentifier(token.image.toCharArray(),
 
2287                                                                SimpleCharStream.getPosition());}
 
2291       expr = VariableDeclaratorId();
 
2292                                  {if (true) return new ConstantIdentifier(expr.toCharArray(),
 
2294                                                                SimpleCharStream.getPosition());}
 
2297       jj_la1[63] = jj_gen;
 
2298       jj_consume_token(-1);
 
2299       throw new ParseException();
 
2301     throw new Error("Missing return statement in function");
 
2304   static final public AbstractSuffixExpression PrimarySuffix(Expression prefix) throws ParseException {
 
2305   final AbstractSuffixExpression expr;
 
2306     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2308       expr = Arguments(prefix);
 
2309                                  {if (true) return expr;}
 
2313       expr = VariableSuffix(prefix);
 
2314                                  {if (true) return expr;}
 
2317       jj_la1[64] = jj_gen;
 
2318       jj_consume_token(-1);
 
2319       throw new ParseException();
 
2321     throw new Error("Missing return statement in function");
 
2324   static final public AbstractSuffixExpression VariableSuffix(Expression prefix) throws ParseException {
 
2326   final int pos = SimpleCharStream.getPosition();
 
2327   Expression expression = null;
 
2328     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2330       jj_consume_token(CLASSACCESS);
 
2332         expr = VariableName();
 
2333       } catch (ParseException e) {
 
2334     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
 
2336     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2337     errorEnd   = jj_input_stream.getPosition() + 1;
 
2338     {if (true) throw e;}
 
2340    {if (true) return new ClassAccess(prefix,
 
2341                           new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()),
 
2342                           ClassAccess.NORMAL);}
 
2345       jj_consume_token(LBRACKET);
 
2346       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2371       case INTEGER_LITERAL:
 
2372       case FLOATING_POINT_LITERAL:
 
2373       case STRING_LITERAL:
 
2377         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2393         case INTEGER_LITERAL:
 
2394         case FLOATING_POINT_LITERAL:
 
2395         case STRING_LITERAL:
 
2399           expression = Expression();
 
2410           expression = Type();
 
2413           jj_la1[65] = jj_gen;
 
2414           jj_consume_token(-1);
 
2415           throw new ParseException();
 
2419         jj_la1[66] = jj_gen;
 
2423         jj_consume_token(RBRACKET);
 
2424       } catch (ParseException e) {
 
2425     errorMessage = "']' expected";
 
2427     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2428     errorEnd   = jj_input_stream.getPosition() + 1;
 
2429     {if (true) throw e;}
 
2431    {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());}
 
2434       jj_la1[67] = jj_gen;
 
2435       jj_consume_token(-1);
 
2436       throw new ParseException();
 
2438     throw new Error("Missing return statement in function");
 
2441   static final public Literal Literal() throws ParseException {
 
2444     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2445     case INTEGER_LITERAL:
 
2446       token = jj_consume_token(INTEGER_LITERAL);
 
2447                                     pos = SimpleCharStream.getPosition();
 
2448                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2450     case FLOATING_POINT_LITERAL:
 
2451       token = jj_consume_token(FLOATING_POINT_LITERAL);
 
2452                                     pos = SimpleCharStream.getPosition();
 
2453                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2455     case STRING_LITERAL:
 
2456       token = jj_consume_token(STRING_LITERAL);
 
2457                                     pos = SimpleCharStream.getPosition();
 
2458                                     {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2461       jj_consume_token(TRUE);
 
2462                                     pos = SimpleCharStream.getPosition();
 
2463                                     {if (true) return new TrueLiteral(pos-4,pos);}
 
2466       jj_consume_token(FALSE);
 
2467                                     pos = SimpleCharStream.getPosition();
 
2468                                     {if (true) return new FalseLiteral(pos-4,pos);}
 
2471       jj_consume_token(NULL);
 
2472                                     pos = SimpleCharStream.getPosition();
 
2473                                     {if (true) return new NullLiteral(pos-4,pos);}
 
2476       jj_la1[68] = jj_gen;
 
2477       jj_consume_token(-1);
 
2478       throw new ParseException();
 
2480     throw new Error("Missing return statement in function");
 
2483   static final public FunctionCall Arguments(Expression func) throws ParseException {
 
2484 ArgumentDeclaration[] args = null;
 
2485     jj_consume_token(LPAREN);
 
2486     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2490       args = ArgumentList();
 
2493       jj_la1[69] = jj_gen;
 
2497       jj_consume_token(RPAREN);
 
2498     } catch (ParseException e) {
 
2499     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
 
2501     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2502     errorEnd   = jj_input_stream.getPosition() + 1;
 
2503     {if (true) throw e;}
 
2505    {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());}
 
2506     throw new Error("Missing return statement in function");
 
2509   static final public ArgumentDeclaration[] ArgumentList() throws ParseException {
 
2510 ArgumentDeclaration arg;
 
2511 final ArrayList list = new ArrayList();
 
2512 ArgumentDeclaration argument;
 
2513     arg = argumentDeclaration();
 
2517       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2522         jj_la1[70] = jj_gen;
 
2525       jj_consume_token(COMMA);
 
2527         arg = argumentDeclaration();
 
2529       } catch (ParseException e) {
 
2530         errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
 
2532         errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2533         errorEnd     = jj_input_stream.getPosition() + 1;
 
2534         {if (true) throw e;}
 
2537    ArgumentDeclaration[] args = new ArgumentDeclaration[list.size()];
 
2539    {if (true) return args;}
 
2540     throw new Error("Missing return statement in function");
 
2543   static final public ArgumentDeclaration argumentDeclaration() throws ParseException {
 
2544   boolean reference = false;
 
2546   Expression initializer = null;
 
2547   final int pos = SimpleCharStream.getPosition();
 
2548     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2550       jj_consume_token(BIT_AND);
 
2554       jj_la1[71] = jj_gen;
 
2557     varName = VariableDeclaratorId();
 
2558     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2560       jj_consume_token(ASSIGN);
 
2562         initializer = VariableInitializer();
 
2563       } catch (ParseException e) {
 
2564       errorMessage = "Literal expression expected in variable initializer";
 
2566       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2567       errorEnd   = jj_input_stream.getPosition() + 1;
 
2568       {if (true) throw e;}
 
2572       jj_la1[72] = jj_gen;
 
2575   if (initializer == null) {
 
2576     {if (true) return new ArgumentDeclaration(varName.toCharArray(),
 
2580   {if (true) return new ArgumentDeclaration(varName.toCharArray(),
 
2584     throw new Error("Missing return statement in function");
 
2588  * A Statement without break.
 
2590   static final public Statement StatementNoBreak() throws ParseException {
 
2591   final Statement statement;
 
2594       statement = Expression();
 
2596         jj_consume_token(SEMICOLON);
 
2597       } catch (ParseException e) {
 
2598     if (e.currentToken.next.kind != 4) {
 
2599       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2601       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2602       errorEnd   = jj_input_stream.getPosition() + 1;
 
2603       {if (true) throw e;}
 
2606    {if (true) return statement;}
 
2607     } else if (jj_2_7(2)) {
 
2608       statement = LabeledStatement();
 
2609                                   {if (true) return statement;}
 
2611       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2613         statement = Block();
 
2614                                   {if (true) return statement;}
 
2617         statement = EmptyStatement();
 
2618                                   {if (true) return statement;}
 
2627         statement = StatementExpression();
 
2629           jj_consume_token(SEMICOLON);
 
2630         } catch (ParseException e) {
 
2631     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2633     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2634     errorEnd     = jj_input_stream.getPosition() + 1;
 
2635     {if (true) throw e;}
 
2637    {if (true) return statement;}
 
2640         statement = SwitchStatement();
 
2641                                          {if (true) return statement;}
 
2644         statement = IfStatement();
 
2645                                          {if (true) return statement;}
 
2648         statement = WhileStatement();
 
2649                                          {if (true) return statement;}
 
2652         statement = DoStatement();
 
2653                                          {if (true) return statement;}
 
2656         statement = ForStatement();
 
2657                                          {if (true) return statement;}
 
2660         statement = ForeachStatement();
 
2661                                          {if (true) return statement;}
 
2664         statement = ContinueStatement();
 
2665                                          {if (true) return statement;}
 
2668         statement = ReturnStatement();
 
2669                                          {if (true) return statement;}
 
2672         statement = EchoStatement();
 
2673                                          {if (true) return statement;}
 
2680         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2682           token = jj_consume_token(AT);
 
2685           jj_la1[73] = jj_gen;
 
2688         statement = IncludeStatement();
 
2689    if (token != null) {
 
2690     ((InclusionStatement)statement).silent = true;
 
2692   {if (true) return statement;}
 
2695         statement = StaticStatement();
 
2696                                          {if (true) return statement;}
 
2699         statement = GlobalStatement();
 
2700                                          {if (true) return statement;}
 
2703         jj_la1[74] = jj_gen;
 
2704         jj_consume_token(-1);
 
2705         throw new ParseException();
 
2708     throw new Error("Missing return statement in function");
 
2712  * A Normal statement.
 
2714   static final public Statement Statement() throws ParseException {
 
2715   final Statement statement;
 
2716     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2747     case INTEGER_LITERAL:
 
2748     case FLOATING_POINT_LITERAL:
 
2749     case STRING_LITERAL:
 
2755       statement = StatementNoBreak();
 
2756                                   {if (true) return statement;}
 
2759       statement = BreakStatement();
 
2760                                   {if (true) return statement;}
 
2763       jj_la1[75] = jj_gen;
 
2764       jj_consume_token(-1);
 
2765       throw new ParseException();
 
2767     throw new Error("Missing return statement in function");
 
2771  * An html block inside a php syntax.
 
2773   static final public HTMLBlock htmlBlock() throws ParseException {
 
2774   final int startIndex = nodePtr;
 
2775   AstNode[] blockNodes;
 
2777     jj_consume_token(PHPEND);
 
2780       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2785         jj_la1[76] = jj_gen;
 
2791       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2793         jj_consume_token(PHPSTARTLONG);
 
2796         jj_consume_token(PHPSTARTSHORT);
 
2799         jj_la1[77] = jj_gen;
 
2800         jj_consume_token(-1);
 
2801         throw new ParseException();
 
2803     } catch (ParseException e) {
 
2804     errorMessage = "End of file unexpected, '<?php' expected";
 
2806     errorStart   = jj_input_stream.getPosition();
 
2807     errorEnd     = jj_input_stream.getPosition();
 
2808     {if (true) throw e;}
 
2810   nbNodes = nodePtr-startIndex - 1;
 
2811   blockNodes = new AstNode[nbNodes];
 
2812   System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
 
2813   {if (true) return new HTMLBlock(nodes);}
 
2814     throw new Error("Missing return statement in function");
 
2818  * An include statement. It's "include" an expression;
 
2820   static final public InclusionStatement IncludeStatement() throws ParseException {
 
2821   final Expression expr;
 
2824   final int pos = jj_input_stream.getPosition();
 
2825   final InclusionStatement inclusionStatement;
 
2826     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2828       jj_consume_token(REQUIRE);
 
2829                          keyword = InclusionStatement.REQUIRE;
 
2832       jj_consume_token(REQUIRE_ONCE);
 
2833                          keyword = InclusionStatement.REQUIRE_ONCE;
 
2836       jj_consume_token(INCLUDE);
 
2837                          keyword = InclusionStatement.INCLUDE;
 
2840       jj_consume_token(INCLUDE_ONCE);
 
2841                          keyword = InclusionStatement.INCLUDE_ONCE;
 
2844       jj_la1[78] = jj_gen;
 
2845       jj_consume_token(-1);
 
2846       throw new ParseException();
 
2849       expr = Expression();
 
2850     } catch (ParseException e) {
 
2851     if (errorMessage != null) {
 
2852       {if (true) throw e;}
 
2854     errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
 
2856     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2857     errorEnd     = jj_input_stream.getPosition() + 1;
 
2858     {if (true) throw e;}
 
2860    inclusionStatement = new InclusionStatement(currentSegment,
 
2864    currentSegment.add(inclusionStatement);
 
2866       jj_consume_token(SEMICOLON);
 
2867     } catch (ParseException e) {
 
2868     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2870     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2871     errorEnd     = jj_input_stream.getPosition() + 1;
 
2872     {if (true) throw e;}
 
2874    {if (true) return inclusionStatement;}
 
2875     throw new Error("Missing return statement in function");
 
2878   static final public PrintExpression PrintExpression() throws ParseException {
 
2879   final Expression expr;
 
2880   final int pos = SimpleCharStream.getPosition();
 
2881     jj_consume_token(PRINT);
 
2882     expr = Expression();
 
2883                                {if (true) return new PrintExpression(expr,pos,SimpleCharStream.getPosition());}
 
2884     throw new Error("Missing return statement in function");
 
2887   static final public ListExpression ListExpression() throws ParseException {
 
2889   Expression expression = null;
 
2890   ArrayList list = new ArrayList();
 
2891   final int pos = SimpleCharStream.getPosition();
 
2892     jj_consume_token(LIST);
 
2894       jj_consume_token(LPAREN);
 
2895     } catch (ParseException e) {
 
2896     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2898     errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2899     errorEnd     = jj_input_stream.getPosition() + 1;
 
2900     {if (true) throw e;}
 
2902     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2905       expr = VariableDeclaratorId();
 
2909       jj_la1[79] = jj_gen;
 
2912    if (expr == null) list.add(null);
 
2915       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2920         jj_la1[80] = jj_gen;
 
2924         jj_consume_token(COMMA);
 
2925       } catch (ParseException e) {
 
2926       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2928       errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2929       errorEnd     = jj_input_stream.getPosition() + 1;
 
2930       {if (true) throw e;}
 
2932       expr = VariableDeclaratorId();
 
2936       jj_consume_token(RPAREN);
 
2937     } catch (ParseException e) {
 
2938     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
2940     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
2941     errorEnd   = jj_input_stream.getPosition() + 1;
 
2942     {if (true) throw e;}
 
2944     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2946       jj_consume_token(ASSIGN);
 
2947       expression = Expression();
 
2948     String[] strings = new String[list.size()];
 
2949     list.toArray(strings);
 
2950     {if (true) return new ListExpression(strings,
 
2953                               SimpleCharStream.getPosition());}
 
2956       jj_la1[81] = jj_gen;
 
2959     String[] strings = new String[list.size()];
 
2960     list.toArray(strings);
 
2961     {if (true) return new ListExpression(strings,pos,SimpleCharStream.getPosition());}
 
2962     throw new Error("Missing return statement in function");
 
2966  * An echo statement.
 
2967  * echo anyexpression (, otherexpression)*
 
2969   static final public EchoStatement EchoStatement() throws ParseException {
 
2970   final ArrayList expressions = new ArrayList();
 
2972   final int pos = SimpleCharStream.getPosition();
 
2973     jj_consume_token(ECHO);
 
2974     expr = Expression();
 
2975    expressions.add(expr);
 
2978       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2983         jj_la1[82] = jj_gen;
 
2986       jj_consume_token(COMMA);
 
2987       expr = Expression();
 
2988      expressions.add(expr);
 
2991       jj_consume_token(SEMICOLON);
 
2992     Expression[] exprs = new Expression[expressions.size()];
 
2993     expressions.toArray(exprs);
 
2994     {if (true) return new EchoStatement(exprs,pos);}
 
2995     } catch (ParseException e) {
 
2996     if (e.currentToken.next.kind != 4) {
 
2997       errorMessage = "';' expected after 'echo' statement";
 
2999       errorStart   = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3000       errorEnd     = jj_input_stream.getPosition() + 1;
 
3001       {if (true) throw e;}
 
3004     throw new Error("Missing return statement in function");
 
3007   static final public GlobalStatement GlobalStatement() throws ParseException {
 
3008    final int pos = jj_input_stream.getPosition();
 
3010    ArrayList vars = new ArrayList();
 
3011    GlobalStatement global;
 
3012     jj_consume_token(GLOBAL);
 
3013     expr = VariableDeclaratorId();
 
3017       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3022         jj_la1[83] = jj_gen;
 
3025       jj_consume_token(COMMA);
 
3026       expr = VariableDeclaratorId();
 
3030       jj_consume_token(SEMICOLON);
 
3031     String[] strings = new String[vars.size()];
 
3032     vars.toArray(strings);
 
3033     global = new GlobalStatement(currentSegment,
 
3036                                  SimpleCharStream.getPosition());
 
3037     currentSegment.add(global);
 
3038     {if (true) return global;}
 
3039     } catch (ParseException e) {
 
3040     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3042     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3043     errorEnd   = jj_input_stream.getPosition() + 1;
 
3044     {if (true) throw e;}
 
3046     throw new Error("Missing return statement in function");
 
3049   static final public StaticStatement StaticStatement() throws ParseException {
 
3050   final int pos = SimpleCharStream.getPosition();
 
3051   final ArrayList vars = new ArrayList();
 
3052   VariableDeclaration expr;
 
3053     jj_consume_token(STATIC);
 
3054     expr = VariableDeclarator();
 
3055                                         vars.add(new String(expr.name));
 
3058       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3063         jj_la1[84] = jj_gen;
 
3066       jj_consume_token(COMMA);
 
3067       expr = VariableDeclarator();
 
3068                                         vars.add(new String(expr.name));
 
3071       jj_consume_token(SEMICOLON);
 
3072     String[] strings = new String[vars.size()];
 
3073     vars.toArray(strings);
 
3074     {if (true) return new StaticStatement(strings,
 
3076                                 SimpleCharStream.getPosition());}
 
3077     } catch (ParseException e) {
 
3078     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3080     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3081     errorEnd   = jj_input_stream.getPosition() + 1;
 
3082     {if (true) throw e;}
 
3084     throw new Error("Missing return statement in function");
 
3087   static final public LabeledStatement LabeledStatement() throws ParseException {
 
3088   final int pos = SimpleCharStream.getPosition();
 
3090   final Statement statement;
 
3091     label = jj_consume_token(IDENTIFIER);
 
3092     jj_consume_token(COLON);
 
3093     statement = Statement();
 
3094    {if (true) return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());}
 
3095     throw new Error("Missing return statement in function");
 
3105   static final public Block Block() throws ParseException {
 
3106   final int pos = SimpleCharStream.getPosition();
 
3107   final ArrayList list = new ArrayList();
 
3108   Statement statement;
 
3110       jj_consume_token(LBRACE);
 
3111     } catch (ParseException e) {
 
3112     errorMessage = "'{' expected";
 
3114     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3115     errorEnd   = jj_input_stream.getPosition() + 1;
 
3116     {if (true) throw e;}
 
3120       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3155       case INTEGER_LITERAL:
 
3156       case FLOATING_POINT_LITERAL:
 
3157       case STRING_LITERAL:
 
3166         jj_la1[85] = jj_gen;
 
3169       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3203       case INTEGER_LITERAL:
 
3204       case FLOATING_POINT_LITERAL:
 
3205       case STRING_LITERAL:
 
3211         statement = BlockStatement();
 
3212                                   list.add(statement);
 
3215         statement = htmlBlock();
 
3216                                   list.add(statement);
 
3219         jj_la1[86] = jj_gen;
 
3220         jj_consume_token(-1);
 
3221         throw new ParseException();
 
3225       jj_consume_token(RBRACE);
 
3226     } catch (ParseException e) {
 
3227     errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
 
3229     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3230     errorEnd   = jj_input_stream.getPosition() + 1;
 
3231     {if (true) throw e;}
 
3233   Statement[] statements = new Statement[list.size()];
 
3234   list.toArray(statements);
 
3235   {if (true) return new Block(statements,pos,SimpleCharStream.getPosition());}
 
3236     throw new Error("Missing return statement in function");
 
3239   static final public Statement BlockStatement() throws ParseException {
 
3240   final Statement statement;
 
3241     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3273     case INTEGER_LITERAL:
 
3274     case FLOATING_POINT_LITERAL:
 
3275     case STRING_LITERAL:
 
3281       statement = Statement();
 
3282                                    {if (true) return statement;}
 
3285       statement = ClassDeclaration();
 
3286                                    {if (true) return statement;}
 
3289       statement = MethodDeclaration();
 
3290                                    {if (true) return statement;}
 
3293       jj_la1[87] = jj_gen;
 
3294       jj_consume_token(-1);
 
3295       throw new ParseException();
 
3297     throw new Error("Missing return statement in function");
 
3301  * A Block statement that will not contain any 'break'
 
3303   static final public Statement BlockStatementNoBreak() throws ParseException {
 
3304   final Statement statement;
 
3305     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3336     case INTEGER_LITERAL:
 
3337     case FLOATING_POINT_LITERAL:
 
3338     case STRING_LITERAL:
 
3344       statement = StatementNoBreak();
 
3345                                    {if (true) return statement;}
 
3348       statement = ClassDeclaration();
 
3349                                    {if (true) return statement;}
 
3352       statement = MethodDeclaration();
 
3353                                    {if (true) return statement;}
 
3356       jj_la1[88] = jj_gen;
 
3357       jj_consume_token(-1);
 
3358       throw new ParseException();
 
3360     throw new Error("Missing return statement in function");
 
3363   static final public VariableDeclaration[] LocalVariableDeclaration() throws ParseException {
 
3364   final ArrayList list = new ArrayList();
 
3365   VariableDeclaration var;
 
3366     var = LocalVariableDeclarator();
 
3370       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3375         jj_la1[89] = jj_gen;
 
3378       jj_consume_token(COMMA);
 
3379       var = LocalVariableDeclarator();
 
3382     VariableDeclaration[] vars = new VariableDeclaration[list.size()];
 
3384   {if (true) return vars;}
 
3385     throw new Error("Missing return statement in function");
 
3388   static final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
 
3389   final String varName;
 
3390   Expression initializer = null;
 
3391   final int pos = SimpleCharStream.getPosition();
 
3392     varName = VariableDeclaratorId();
 
3393     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3395       jj_consume_token(ASSIGN);
 
3396       initializer = Expression();
 
3399       jj_la1[90] = jj_gen;
 
3402    if (initializer == null) {
 
3403     {if (true) return new VariableDeclaration(currentSegment,
 
3404                                   varName.toCharArray(),
 
3406                                   jj_input_stream.getPosition());}
 
3408     {if (true) return new VariableDeclaration(currentSegment,
 
3409                                     varName.toCharArray(),
 
3412     throw new Error("Missing return statement in function");
 
3415   static final public EmptyStatement EmptyStatement() throws ParseException {
 
3417     jj_consume_token(SEMICOLON);
 
3418    pos = SimpleCharStream.getPosition();
 
3419    {if (true) return new EmptyStatement(pos-1,pos);}
 
3420     throw new Error("Missing return statement in function");
 
3423   static final public Statement StatementExpression() throws ParseException {
 
3424   Expression expr,expr2;
 
3426     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3429       expr = PreIncDecExpression();
 
3430                                 {if (true) return expr;}
 
3437       expr = PrimaryExpression();
 
3438       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3453       case RSIGNEDSHIFTASSIGN:
 
3454         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3456           jj_consume_token(INCR);
 
3457             {if (true) return new PostfixedUnaryExpression(expr,
 
3458                                                 OperatorIds.PLUS_PLUS,
 
3459                                                 SimpleCharStream.getPosition());}
 
3462           jj_consume_token(DECR);
 
3463             {if (true) return new PostfixedUnaryExpression(expr,
 
3464                                                 OperatorIds.MINUS_MINUS,
 
3465                                                 SimpleCharStream.getPosition());}
 
3479         case RSIGNEDSHIFTASSIGN:
 
3480           operator = AssignmentOperator();
 
3481           expr2 = Expression();
 
3482      {if (true) return new BinaryExpression(expr,expr2,operator);}
 
3485           jj_la1[91] = jj_gen;
 
3486           jj_consume_token(-1);
 
3487           throw new ParseException();
 
3491         jj_la1[92] = jj_gen;
 
3494    {if (true) return expr;}
 
3497       jj_la1[93] = jj_gen;
 
3498       jj_consume_token(-1);
 
3499       throw new ParseException();
 
3501     throw new Error("Missing return statement in function");
 
3504   static final public SwitchStatement SwitchStatement() throws ParseException {
 
3505   final Expression variable;
 
3506   final AbstractCase[] cases;
 
3507   final int pos = SimpleCharStream.getPosition();
 
3508     jj_consume_token(SWITCH);
 
3510       jj_consume_token(LPAREN);
 
3511     } catch (ParseException e) {
 
3512     errorMessage = "'(' expected after 'switch'";
 
3514     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3515     errorEnd   = jj_input_stream.getPosition() + 1;
 
3516     {if (true) throw e;}
 
3519       variable = Expression();
 
3520     } catch (ParseException e) {
 
3521     if (errorMessage != null) {
 
3522       {if (true) throw e;}
 
3524     errorMessage = "expression expected";
 
3526     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3527     errorEnd   = jj_input_stream.getPosition() + 1;
 
3528     {if (true) throw e;}
 
3531       jj_consume_token(RPAREN);
 
3532     } catch (ParseException e) {
 
3533     errorMessage = "')' expected";
 
3535     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3536     errorEnd   = jj_input_stream.getPosition() + 1;
 
3537     {if (true) throw e;}
 
3539     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3541       cases = switchStatementBrace();
 
3544       cases = switchStatementColon(pos, pos + 6);
 
3547       jj_la1[94] = jj_gen;
 
3548       jj_consume_token(-1);
 
3549       throw new ParseException();
 
3551    {if (true) return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());}
 
3552     throw new Error("Missing return statement in function");
 
3555   static final public AbstractCase[] switchStatementBrace() throws ParseException {
 
3557   final ArrayList cases = new ArrayList();
 
3558     jj_consume_token(LBRACE);
 
3561       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3567         jj_la1[95] = jj_gen;
 
3570       cas = switchLabel0();
 
3574       jj_consume_token(RBRACE);
 
3575     AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3576     cases.toArray(abcase);
 
3577     {if (true) return abcase;}
 
3578     } catch (ParseException e) {
 
3579     errorMessage = "'}' expected";
 
3581     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3582     errorEnd   = jj_input_stream.getPosition() + 1;
 
3583     {if (true) throw e;}
 
3585     throw new Error("Missing return statement in function");
 
3589  * A Switch statement with : ... endswitch;
 
3590  * @param start the begin offset of the switch
 
3591  * @param end the end offset of the switch
 
3593   static final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
 
3595   final ArrayList cases = new ArrayList();
 
3596     jj_consume_token(COLON);
 
3598   setMarker(fileToParse,
 
3599             "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
 
3603             "Line " + token.beginLine);
 
3604   } catch (CoreException e) {
 
3605     PHPeclipsePlugin.log(e);
 
3609       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3615         jj_la1[96] = jj_gen;
 
3618       cas = switchLabel0();
 
3622       jj_consume_token(ENDSWITCH);
 
3623     } catch (ParseException e) {
 
3624     errorMessage = "'endswitch' expected";
 
3626     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3627     errorEnd   = jj_input_stream.getPosition() + 1;
 
3628     {if (true) throw e;}
 
3631       jj_consume_token(SEMICOLON);
 
3632     AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3633     cases.toArray(abcase);
 
3634     {if (true) return abcase;}
 
3635     } catch (ParseException e) {
 
3636     errorMessage = "';' expected after 'endswitch' keyword";
 
3638     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3639     errorEnd   = jj_input_stream.getPosition() + 1;
 
3640     {if (true) throw e;}
 
3642     throw new Error("Missing return statement in function");
 
3645   static final public AbstractCase switchLabel0() throws ParseException {
 
3646   final Expression expr;
 
3647   Statement statement;
 
3648   final ArrayList stmts = new ArrayList();
 
3649   final int pos = SimpleCharStream.getPosition();
 
3650     expr = SwitchLabel();
 
3653       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3687       case INTEGER_LITERAL:
 
3688       case FLOATING_POINT_LITERAL:
 
3689       case STRING_LITERAL:
 
3698         jj_la1[97] = jj_gen;
 
3701       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3734       case INTEGER_LITERAL:
 
3735       case FLOATING_POINT_LITERAL:
 
3736       case STRING_LITERAL:
 
3742         statement = BlockStatementNoBreak();
 
3743                                          stmts.add(statement);
 
3746         statement = htmlBlock();
 
3747                                          stmts.add(statement);
 
3750         jj_la1[98] = jj_gen;
 
3751         jj_consume_token(-1);
 
3752         throw new ParseException();
 
3755     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3757       statement = BreakStatement();
 
3758                                          stmts.add(statement);
 
3761       jj_la1[99] = jj_gen;
 
3764   Statement[] stmtsArray = new Statement[stmts.size()];
 
3765   stmts.toArray(stmtsArray);
 
3766   if (expr == null) {//it's a default
 
3767     {if (true) return new DefaultCase(stmtsArray,pos,SimpleCharStream.getPosition());}
 
3769   {if (true) return new Case(expr,stmtsArray,pos,SimpleCharStream.getPosition());}
 
3770     throw new Error("Missing return statement in function");
 
3775  * case Expression() :
 
3777  * @return the if it was a case and null if not
 
3779   static final public Expression SwitchLabel() throws ParseException {
 
3781   final Expression expr;
 
3782     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3784       token = jj_consume_token(CASE);
 
3786         expr = Expression();
 
3787       } catch (ParseException e) {
 
3788     if (errorMessage != null) {if (true) throw e;}
 
3789     errorMessage = "expression expected after 'case' keyword";
 
3791     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3792     errorEnd   = jj_input_stream.getPosition() + 1;
 
3793     {if (true) throw e;}
 
3796         jj_consume_token(COLON);
 
3797      {if (true) return expr;}
 
3798       } catch (ParseException e) {
 
3799     errorMessage = "':' expected after case expression";
 
3801     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3802     errorEnd   = jj_input_stream.getPosition() + 1;
 
3803     {if (true) throw e;}
 
3807       token = jj_consume_token(_DEFAULT);
 
3809         jj_consume_token(COLON);
 
3810      {if (true) return null;}
 
3811       } catch (ParseException e) {
 
3812     errorMessage = "':' expected after 'default' keyword";
 
3814     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3815     errorEnd   = jj_input_stream.getPosition() + 1;
 
3816     {if (true) throw e;}
 
3820       jj_la1[100] = jj_gen;
 
3821       jj_consume_token(-1);
 
3822       throw new ParseException();
 
3824     throw new Error("Missing return statement in function");
 
3827   static final public Break BreakStatement() throws ParseException {
 
3828   Expression expression = null;
 
3829   final int start = SimpleCharStream.getPosition();
 
3830     jj_consume_token(BREAK);
 
3831     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3847     case INTEGER_LITERAL:
 
3848     case FLOATING_POINT_LITERAL:
 
3849     case STRING_LITERAL:
 
3853       expression = Expression();
 
3856       jj_la1[101] = jj_gen;
 
3860       jj_consume_token(SEMICOLON);
 
3861     } catch (ParseException e) {
 
3862     errorMessage = "';' expected after 'break' keyword";
 
3864     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3865     errorEnd   = jj_input_stream.getPosition() + 1;
 
3866     {if (true) throw e;}
 
3868    {if (true) return new Break(expression, start, SimpleCharStream.getPosition());}
 
3869     throw new Error("Missing return statement in function");
 
3872   static final public IfStatement IfStatement() throws ParseException {
 
3873   final int pos = jj_input_stream.getPosition();
 
3874   Expression condition;
 
3875   IfStatement ifStatement;
 
3876     jj_consume_token(IF);
 
3877     condition = Condition("if");
 
3878     ifStatement = IfStatement0(condition, pos,pos+2);
 
3879    {if (true) return ifStatement;}
 
3880     throw new Error("Missing return statement in function");
 
3883   static final public Expression Condition(final String keyword) throws ParseException {
 
3884   final Expression condition;
 
3886       jj_consume_token(LPAREN);
 
3887     } catch (ParseException e) {
 
3888     errorMessage = "'(' expected after " + keyword + " keyword";
 
3890     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length();
 
3891     errorEnd   = errorStart +1;
 
3892     processParseException(e);
 
3894     condition = Expression();
 
3896       jj_consume_token(RPAREN);
 
3897       {if (true) return condition;}
 
3898     } catch (ParseException e) {
 
3899     errorMessage = "')' expected after " + keyword + " keyword";
 
3901     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
3902     errorEnd   = jj_input_stream.getPosition() + 1;
 
3903     {if (true) throw e;}
 
3905     throw new Error("Missing return statement in function");
 
3908   static final public IfStatement IfStatement0(Expression condition, final int start,final int end) throws ParseException {
 
3909   Statement statement;
 
3911   final Statement[] statementsArray;
 
3912   ElseIf elseifStatement;
 
3913   Else elseStatement = null;
 
3915   final ArrayList elseIfList = new ArrayList();
 
3917   int pos = SimpleCharStream.getPosition();
 
3919     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3921       jj_consume_token(COLON);
 
3922    stmts = new ArrayList();
 
3925         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3958         case INTEGER_LITERAL:
 
3959         case FLOATING_POINT_LITERAL:
 
3960         case STRING_LITERAL:
 
3969           jj_la1[102] = jj_gen;
 
3972         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4004         case INTEGER_LITERAL:
 
4005         case FLOATING_POINT_LITERAL:
 
4006         case STRING_LITERAL:
 
4012           statement = Statement();
 
4013                               stmts.add(statement);
 
4016           statement = htmlBlock();
 
4017                               stmts.add(statement);
 
4020           jj_la1[103] = jj_gen;
 
4021           jj_consume_token(-1);
 
4022           throw new ParseException();
 
4025     endStatements = SimpleCharStream.getPosition();
 
4028         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4033           jj_la1[104] = jj_gen;
 
4036         elseifStatement = ElseIfStatementColon();
 
4037                                               elseIfList.add(elseifStatement);
 
4039       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4041         elseStatement = ElseStatementColon();
 
4044         jj_la1[105] = jj_gen;
 
4048   setMarker(fileToParse,
 
4049             "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
 
4053             "Line " + token.beginLine);
 
4054   } catch (CoreException e) {
 
4055     PHPeclipsePlugin.log(e);
 
4058         jj_consume_token(ENDIF);
 
4059       } catch (ParseException e) {
 
4060     errorMessage = "'endif' expected";
 
4062     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4063     errorEnd   = jj_input_stream.getPosition() + 1;
 
4064     {if (true) throw e;}
 
4067         jj_consume_token(SEMICOLON);
 
4068       } catch (ParseException e) {
 
4069     errorMessage = "';' expected after 'endif' keyword";
 
4071     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4072     errorEnd   = jj_input_stream.getPosition() + 1;
 
4073     {if (true) throw e;}
 
4075     elseIfs = new ElseIf[elseIfList.size()];
 
4076     elseIfList.toArray(elseIfs);
 
4077     if (stmts.size() == 1) {
 
4078       {if (true) return new IfStatement(condition,
 
4079                              (Statement) stmts.get(0),
 
4083                               SimpleCharStream.getPosition());}
 
4085       statementsArray = new Statement[stmts.size()];
 
4086       stmts.toArray(statementsArray);
 
4087       {if (true) return new IfStatement(condition,
 
4088                              new Block(statementsArray,pos,endStatements),
 
4092                               SimpleCharStream.getPosition());}
 
4127     case INTEGER_LITERAL:
 
4128     case FLOATING_POINT_LITERAL:
 
4129     case STRING_LITERAL:
 
4135       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4167       case INTEGER_LITERAL:
 
4168       case FLOATING_POINT_LITERAL:
 
4169       case STRING_LITERAL:
 
4181         jj_la1[106] = jj_gen;
 
4182         jj_consume_token(-1);
 
4183         throw new ParseException();
 
4187         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4192           jj_la1[107] = jj_gen;
 
4195         elseifStatement = ElseIfStatement();
 
4196                                                       elseIfList.add(elseifStatement);
 
4198       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4200         jj_consume_token(ELSE);
 
4202        pos = SimpleCharStream.getPosition();
 
4203           statement = Statement();
 
4204        elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());
 
4205         } catch (ParseException e) {
 
4206       if (errorMessage != null) {
 
4207         {if (true) throw e;}
 
4209       errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
 
4211       errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4212       errorEnd   = jj_input_stream.getPosition() + 1;
 
4213       {if (true) throw e;}
 
4217         jj_la1[108] = jj_gen;
 
4220     elseIfs = new ElseIf[elseIfList.size()];
 
4221     elseIfList.toArray(elseIfs);
 
4222     {if (true) return new IfStatement(condition,
 
4227                            SimpleCharStream.getPosition());}
 
4230       jj_la1[109] = jj_gen;
 
4231       jj_consume_token(-1);
 
4232       throw new ParseException();
 
4234     throw new Error("Missing return statement in function");
 
4237   static final public ElseIf ElseIfStatementColon() throws ParseException {
 
4238   Expression condition;
 
4239   Statement statement;
 
4240   final ArrayList list = new ArrayList();
 
4241   final int pos = SimpleCharStream.getPosition();
 
4242     jj_consume_token(ELSEIF);
 
4243     condition = Condition("elseif");
 
4244     jj_consume_token(COLON);
 
4247       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4280       case INTEGER_LITERAL:
 
4281       case FLOATING_POINT_LITERAL:
 
4282       case STRING_LITERAL:
 
4291         jj_la1[110] = jj_gen;
 
4294       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4326       case INTEGER_LITERAL:
 
4327       case FLOATING_POINT_LITERAL:
 
4328       case STRING_LITERAL:
 
4334         statement = Statement();
 
4335                                       list.add(statement);
 
4338         statement = htmlBlock();
 
4339                                       list.add(statement);
 
4342         jj_la1[111] = jj_gen;
 
4343         jj_consume_token(-1);
 
4344         throw new ParseException();
 
4347   Statement[] stmtsArray = new Statement[list.size()];
 
4348   list.toArray(stmtsArray);
 
4349   {if (true) return new ElseIf(condition,stmtsArray ,pos,SimpleCharStream.getPosition());}
 
4350     throw new Error("Missing return statement in function");
 
4353   static final public Else ElseStatementColon() throws ParseException {
 
4354   Statement statement;
 
4355   final ArrayList list = new ArrayList();
 
4356   final int pos = SimpleCharStream.getPosition();
 
4357     jj_consume_token(ELSE);
 
4358     jj_consume_token(COLON);
 
4361       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4394       case INTEGER_LITERAL:
 
4395       case FLOATING_POINT_LITERAL:
 
4396       case STRING_LITERAL:
 
4405         jj_la1[112] = jj_gen;
 
4408       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4440       case INTEGER_LITERAL:
 
4441       case FLOATING_POINT_LITERAL:
 
4442       case STRING_LITERAL:
 
4448         statement = Statement();
 
4449                                              list.add(statement);
 
4452         statement = htmlBlock();
 
4453                                              list.add(statement);
 
4456         jj_la1[113] = jj_gen;
 
4457         jj_consume_token(-1);
 
4458         throw new ParseException();
 
4461   Statement[] stmtsArray = new Statement[list.size()];
 
4462   list.toArray(stmtsArray);
 
4463   {if (true) return new Else(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4464     throw new Error("Missing return statement in function");
 
4467   static final public ElseIf ElseIfStatement() throws ParseException {
 
4468   Expression condition;
 
4469   Statement statement;
 
4470   final ArrayList list = new ArrayList();
 
4471   final int pos = SimpleCharStream.getPosition();
 
4472     jj_consume_token(ELSEIF);
 
4473     condition = Condition("elseif");
 
4474     statement = Statement();
 
4475                                                                     list.add(statement);/*todo:do better*/
 
4476   Statement[] stmtsArray = new Statement[list.size()];
 
4477   list.toArray(stmtsArray);
 
4478   {if (true) return new ElseIf(condition,stmtsArray,pos,SimpleCharStream.getPosition());}
 
4479     throw new Error("Missing return statement in function");
 
4482   static final public WhileStatement WhileStatement() throws ParseException {
 
4483   final Expression condition;
 
4484   final Statement action;
 
4485   final int pos = SimpleCharStream.getPosition();
 
4486     jj_consume_token(WHILE);
 
4487     condition = Condition("while");
 
4488     action = WhileStatement0(pos,pos + 5);
 
4489      {if (true) return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4490     throw new Error("Missing return statement in function");
 
4493   static final public Statement WhileStatement0(final int start, final int end) throws ParseException {
 
4494   Statement statement;
 
4495   final ArrayList stmts = new ArrayList();
 
4496   final int pos = SimpleCharStream.getPosition();
 
4497     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4499       jj_consume_token(COLON);
 
4502         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4534         case INTEGER_LITERAL:
 
4535         case FLOATING_POINT_LITERAL:
 
4536         case STRING_LITERAL:
 
4545           jj_la1[114] = jj_gen;
 
4548         statement = Statement();
 
4549                                     stmts.add(statement);
 
4552   setMarker(fileToParse,
 
4553             "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
 
4557             "Line " + token.beginLine);
 
4558   } catch (CoreException e) {
 
4559     PHPeclipsePlugin.log(e);
 
4562         jj_consume_token(ENDWHILE);
 
4563       } catch (ParseException e) {
 
4564     errorMessage = "'endwhile' expected";
 
4566     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4567     errorEnd   = jj_input_stream.getPosition() + 1;
 
4568     {if (true) throw e;}
 
4571         jj_consume_token(SEMICOLON);
 
4572     Statement[] stmtsArray = new Statement[stmts.size()];
 
4573     stmts.toArray(stmtsArray);
 
4574     {if (true) return new Block(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4575       } catch (ParseException e) {
 
4576     errorMessage = "';' expected after 'endwhile' keyword";
 
4578     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4579     errorEnd   = jj_input_stream.getPosition() + 1;
 
4580     {if (true) throw e;}
 
4614     case INTEGER_LITERAL:
 
4615     case FLOATING_POINT_LITERAL:
 
4616     case STRING_LITERAL:
 
4622       statement = Statement();
 
4623    {if (true) return statement;}
 
4626       jj_la1[115] = jj_gen;
 
4627       jj_consume_token(-1);
 
4628       throw new ParseException();
 
4630     throw new Error("Missing return statement in function");
 
4633   static final public DoStatement DoStatement() throws ParseException {
 
4634   final Statement action;
 
4635   final Expression condition;
 
4636   final int pos = SimpleCharStream.getPosition();
 
4637     jj_consume_token(DO);
 
4638     action = Statement();
 
4639     jj_consume_token(WHILE);
 
4640     condition = Condition("while");
 
4642       jj_consume_token(SEMICOLON);
 
4643      {if (true) return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4644     } catch (ParseException e) {
 
4645     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
4647     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4648     errorEnd   = jj_input_stream.getPosition() + 1;
 
4649     {if (true) throw e;}
 
4651     throw new Error("Missing return statement in function");
 
4654   static final public ForeachStatement ForeachStatement() throws ParseException {
 
4655   Statement statement;
 
4656   Expression expression;
 
4657   final StringBuffer buff = new StringBuffer();
 
4658   final int pos = SimpleCharStream.getPosition();
 
4659   ArrayVariableDeclaration variable;
 
4660     jj_consume_token(FOREACH);
 
4662       jj_consume_token(LPAREN);
 
4663     } catch (ParseException e) {
 
4664     errorMessage = "'(' expected after 'foreach' keyword";
 
4666     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4667     errorEnd   = jj_input_stream.getPosition() + 1;
 
4668     {if (true) throw e;}
 
4671       expression = Expression();
 
4672     } catch (ParseException e) {
 
4673     errorMessage = "variable expected";
 
4675     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4676     errorEnd   = jj_input_stream.getPosition() + 1;
 
4677     {if (true) throw e;}
 
4680       jj_consume_token(AS);
 
4681     } catch (ParseException e) {
 
4682     errorMessage = "'as' expected";
 
4684     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4685     errorEnd   = jj_input_stream.getPosition() + 1;
 
4686     {if (true) throw e;}
 
4689       variable = ArrayVariable();
 
4690     } catch (ParseException e) {
 
4691     errorMessage = "variable expected";
 
4693     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4694     errorEnd   = jj_input_stream.getPosition() + 1;
 
4695     {if (true) throw e;}
 
4698       jj_consume_token(RPAREN);
 
4699     } catch (ParseException e) {
 
4700     errorMessage = "')' expected after 'foreach' keyword";
 
4702     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4703     errorEnd   = jj_input_stream.getPosition() + 1;
 
4704     {if (true) throw e;}
 
4707       statement = Statement();
 
4708     } catch (ParseException e) {
 
4709     if (errorMessage != null) {if (true) throw e;}
 
4710     errorMessage = "statement expected";
 
4712     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4713     errorEnd   = jj_input_stream.getPosition() + 1;
 
4714     {if (true) throw e;}
 
4716    {if (true) return new ForeachStatement(expression,
 
4720                                SimpleCharStream.getPosition());}
 
4721     throw new Error("Missing return statement in function");
 
4724   static final public ForStatement ForStatement() throws ParseException {
 
4726 final int pos = SimpleCharStream.getPosition();
 
4727 Statement[] initializations = null;
 
4728 Expression condition = null;
 
4729 Statement[] increments = null;
 
4731 final ArrayList list = new ArrayList();
 
4732 final int startBlock, endBlock;
 
4733     token = jj_consume_token(FOR);
 
4735       jj_consume_token(LPAREN);
 
4736     } catch (ParseException e) {
 
4737     errorMessage = "'(' expected after 'for' keyword";
 
4739     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4740     errorEnd   = jj_input_stream.getPosition() + 1;
 
4741     {if (true) throw e;}
 
4743     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4751       initializations = ForInit();
 
4754       jj_la1[116] = jj_gen;
 
4757     jj_consume_token(SEMICOLON);
 
4758     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4774     case INTEGER_LITERAL:
 
4775     case FLOATING_POINT_LITERAL:
 
4776     case STRING_LITERAL:
 
4780       condition = Expression();
 
4783       jj_la1[117] = jj_gen;
 
4786     jj_consume_token(SEMICOLON);
 
4787     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4795       increments = StatementExpressionList();
 
4798       jj_la1[118] = jj_gen;
 
4801     jj_consume_token(RPAREN);
 
4802     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4834     case INTEGER_LITERAL:
 
4835     case FLOATING_POINT_LITERAL:
 
4836     case STRING_LITERAL:
 
4842       action = Statement();
 
4843        {if (true) return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());}
 
4846       jj_consume_token(COLON);
 
4847        startBlock = SimpleCharStream.getPosition();
 
4850         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4882         case INTEGER_LITERAL:
 
4883         case FLOATING_POINT_LITERAL:
 
4884         case STRING_LITERAL:
 
4893           jj_la1[119] = jj_gen;
 
4896         action = Statement();
 
4900         setMarker(fileToParse,
 
4901                   "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
 
4903                   pos+token.image.length(),
 
4905                   "Line " + token.beginLine);
 
4906         } catch (CoreException e) {
 
4907           PHPeclipsePlugin.log(e);
 
4909        endBlock = SimpleCharStream.getPosition();
 
4911         jj_consume_token(ENDFOR);
 
4912       } catch (ParseException e) {
 
4913         errorMessage = "'endfor' expected";
 
4915         errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4916         errorEnd   = jj_input_stream.getPosition() + 1;
 
4917         {if (true) throw e;}
 
4920         jj_consume_token(SEMICOLON);
 
4921         Statement[] stmtsArray = new Statement[list.size()];
 
4922         list.toArray(stmtsArray);
 
4923         {if (true) return new ForStatement(initializations,condition,increments,new Block(stmtsArray,startBlock,endBlock),pos,SimpleCharStream.getPosition());}
 
4924       } catch (ParseException e) {
 
4925         errorMessage = "';' expected after 'endfor' keyword";
 
4927         errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
4928         errorEnd   = jj_input_stream.getPosition() + 1;
 
4929         {if (true) throw e;}
 
4933       jj_la1[120] = jj_gen;
 
4934       jj_consume_token(-1);
 
4935       throw new ParseException();
 
4937     throw new Error("Missing return statement in function");
 
4940   static final public Statement[] ForInit() throws ParseException {
 
4941   Statement[] statements;
 
4942     if (jj_2_8(2147483647)) {
 
4943       statements = LocalVariableDeclaration();
 
4944    {if (true) return statements;}
 
4946       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4954         statements = StatementExpressionList();
 
4955    {if (true) return statements;}
 
4958         jj_la1[121] = jj_gen;
 
4959         jj_consume_token(-1);
 
4960         throw new ParseException();
 
4963     throw new Error("Missing return statement in function");
 
4966   static final public Statement[] StatementExpressionList() throws ParseException {
 
4967   final ArrayList list = new ArrayList();
 
4969     expr = StatementExpression();
 
4973       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4978         jj_la1[122] = jj_gen;
 
4981       jj_consume_token(COMMA);
 
4982       StatementExpression();
 
4985   Statement[] stmtsArray = new Statement[list.size()];
 
4986   list.toArray(stmtsArray);
 
4987   {if (true) return stmtsArray;}
 
4988     throw new Error("Missing return statement in function");
 
4991   static final public Continue ContinueStatement() throws ParseException {
 
4992   Expression expr = null;
 
4993   final int pos = SimpleCharStream.getPosition();
 
4994     jj_consume_token(CONTINUE);
 
4995     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5011     case INTEGER_LITERAL:
 
5012     case FLOATING_POINT_LITERAL:
 
5013     case STRING_LITERAL:
 
5017       expr = Expression();
 
5020       jj_la1[123] = jj_gen;
 
5024       jj_consume_token(SEMICOLON);
 
5025      {if (true) return new Continue(expr,pos,SimpleCharStream.getPosition());}
 
5026     } catch (ParseException e) {
 
5027     errorMessage = "';' expected after 'continue' statement";
 
5029     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
5030     errorEnd   = jj_input_stream.getPosition() + 1;
 
5031     {if (true) throw e;}
 
5033     throw new Error("Missing return statement in function");
 
5036   static final public ReturnStatement ReturnStatement() throws ParseException {
 
5037   Expression expr = null;
 
5038   final int pos = SimpleCharStream.getPosition();
 
5039     jj_consume_token(RETURN);
 
5040     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5056     case INTEGER_LITERAL:
 
5057     case FLOATING_POINT_LITERAL:
 
5058     case STRING_LITERAL:
 
5062       expr = Expression();
 
5065       jj_la1[124] = jj_gen;
 
5069       jj_consume_token(SEMICOLON);
 
5070      {if (true) return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());}
 
5071     } catch (ParseException e) {
 
5072     errorMessage = "';' expected after 'return' statement";
 
5074     errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
 
5075     errorEnd   = jj_input_stream.getPosition() + 1;
 
5076     {if (true) throw e;}
 
5078     throw new Error("Missing return statement in function");
 
5081   static final private boolean jj_2_1(int xla) {
 
5082     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5083     boolean retval = !jj_3_1();
 
5088   static final private boolean jj_2_2(int xla) {
 
5089     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5090     boolean retval = !jj_3_2();
 
5095   static final private boolean jj_2_3(int xla) {
 
5096     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5097     boolean retval = !jj_3_3();
 
5102   static final private boolean jj_2_4(int xla) {
 
5103     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5104     boolean retval = !jj_3_4();
 
5109   static final private boolean jj_2_5(int xla) {
 
5110     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5111     boolean retval = !jj_3_5();
 
5116   static final private boolean jj_2_6(int xla) {
 
5117     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5118     boolean retval = !jj_3_6();
 
5123   static final private boolean jj_2_7(int xla) {
 
5124     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5125     boolean retval = !jj_3_7();
 
5130   static final private boolean jj_2_8(int xla) {
 
5131     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5132     boolean retval = !jj_3_8();
 
5137   static final private boolean jj_3R_147() {
 
5138     if (jj_scan_token(REMAINDER)) return true;
 
5139     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5143   static final private boolean jj_3R_146() {
 
5144     if (jj_scan_token(SLASH)) return true;
 
5145     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5149   static final private boolean jj_3R_145() {
 
5150     if (jj_scan_token(STAR)) return true;
 
5151     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5155   static final private boolean jj_3_7() {
 
5156     if (jj_3R_46()) return true;
 
5157     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5161   static final private boolean jj_3R_140() {
 
5168     if (jj_3R_147()) return true;
 
5169     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5170     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5171     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5172     if (jj_3R_139()) return true;
 
5173     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5177   static final private boolean jj_3R_57() {
 
5178     if (jj_3R_50()) return true;
 
5179     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5182     if (jj_3R_87()) jj_scanpos = xsp;
 
5183     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5187   static final private boolean jj_3_6() {
 
5188     if (jj_3R_45()) return true;
 
5189     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5190     if (jj_scan_token(SEMICOLON)) return true;
 
5191     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5195   static final private boolean jj_3R_134() {
 
5196     if (jj_3R_139()) return true;
 
5197     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5201       if (jj_3R_140()) { jj_scanpos = xsp; break; }
 
5202       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5207   static final private boolean jj_3R_58() {
 
5208     if (jj_scan_token(COMMA)) return true;
 
5209     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5210     if (jj_3R_57()) return true;
 
5211     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5215   static final private boolean jj_3R_47() {
 
5216     if (jj_3R_57()) return true;
 
5217     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5221       if (jj_3R_58()) { jj_scanpos = xsp; break; }
 
5222       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5227   static final private boolean jj_3R_142() {
 
5228     if (jj_scan_token(MINUS)) return true;
 
5229     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5233   static final private boolean jj_3R_141() {
 
5234     if (jj_scan_token(PLUS)) return true;
 
5235     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5239   static final private boolean jj_3R_135() {
 
5244     if (jj_3R_142()) return true;
 
5245     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5246     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5247     if (jj_3R_134()) return true;
 
5248     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5252   static final private boolean jj_3R_128() {
 
5253     if (jj_3R_134()) return true;
 
5254     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5258       if (jj_3R_135()) { jj_scanpos = xsp; break; }
 
5259       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5264   static final private boolean jj_3R_198() {
 
5265     if (jj_scan_token(COMMA)) return true;
 
5266     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5270   static final private boolean jj_3R_138() {
 
5271     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
 
5272     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5276   static final private boolean jj_3_2() {
 
5277     if (jj_scan_token(COMMA)) return true;
 
5278     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5279     if (jj_3R_41()) return true;
 
5280     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5284   static final private boolean jj_3R_137() {
 
5285     if (jj_scan_token(RSIGNEDSHIFT)) return true;
 
5286     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5290   static final private boolean jj_3R_206() {
 
5291     if (jj_scan_token(ASSIGN)) return true;
 
5292     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5293     if (jj_3R_207()) return true;
 
5294     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5298   static final private boolean jj_3R_136() {
 
5299     if (jj_scan_token(LSHIFT)) return true;
 
5300     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5304   static final private boolean jj_3R_197() {
 
5305     if (jj_3R_41()) return true;
 
5306     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5310       if (jj_3_2()) { jj_scanpos = xsp; break; }
 
5311       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5316   static final private boolean jj_3R_129() {
 
5323     if (jj_3R_138()) return true;
 
5324     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5325     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5326     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5327     if (jj_3R_128()) return true;
 
5328     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5332   static final private boolean jj_3R_205() {
 
5333     if (jj_scan_token(BIT_AND)) return true;
 
5334     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5338   static final private boolean jj_3R_121() {
 
5339     if (jj_3R_128()) return true;
 
5340     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5344       if (jj_3R_129()) { jj_scanpos = xsp; break; }
 
5345       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5350   static final private boolean jj_3R_203() {
 
5353     if (jj_3R_205()) jj_scanpos = xsp;
 
5354     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5355     if (jj_3R_50()) return true;
 
5356     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5358     if (jj_3R_206()) jj_scanpos = xsp;
 
5359     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5363   static final private boolean jj_3R_216() {
 
5364     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
5365     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5369   static final private boolean jj_3R_192() {
 
5370     if (jj_scan_token(LPAREN)) return true;
 
5371     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5374     if (jj_3R_197()) jj_scanpos = xsp;
 
5375     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5377     if (jj_3R_198()) jj_scanpos = xsp;
 
5378     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5379     if (jj_scan_token(RPAREN)) return true;
 
5380     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5384   static final private boolean jj_3R_214() {
 
5385     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
5386     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5390   static final private boolean jj_3R_133() {
 
5391     if (jj_scan_token(GE)) return true;
 
5392     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5396   static final private boolean jj_3R_132() {
 
5397     if (jj_scan_token(LE)) return true;
 
5398     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5402   static final private boolean jj_3R_131() {
 
5403     if (jj_scan_token(GT)) return true;
 
5404     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5408   static final private boolean jj_3R_130() {
 
5409     if (jj_scan_token(LT)) return true;
 
5410     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5414   static final private boolean jj_3R_122() {
 
5423     if (jj_3R_133()) return true;
 
5424     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5425     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5426     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5427     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5428     if (jj_3R_121()) return true;
 
5429     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5433   static final private boolean jj_3R_119() {
 
5434     if (jj_3R_121()) return true;
 
5435     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5439       if (jj_3R_122()) { jj_scanpos = xsp; break; }
 
5440       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5445   static final private boolean jj_3R_201() {
 
5446     if (jj_scan_token(ARRAYASSIGN)) return true;
 
5447     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5448     if (jj_3R_45()) return true;
 
5449     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5453   static final private boolean jj_3R_41() {
 
5454     if (jj_3R_45()) return true;
 
5455     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5458     if (jj_3R_201()) jj_scanpos = xsp;
 
5459     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5463   static final private boolean jj_3R_204() {
 
5464     if (jj_scan_token(COMMA)) return true;
 
5465     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5466     if (jj_3R_203()) return true;
 
5467     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5471   static final private boolean jj_3R_202() {
 
5472     if (jj_3R_203()) return true;
 
5473     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5477       if (jj_3R_204()) { jj_scanpos = xsp; break; }
 
5478       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5483   static final private boolean jj_3R_212() {
 
5484     if (jj_scan_token(IDENTIFIER)) return true;
 
5485     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5489   static final private boolean jj_3R_215() {
 
5490     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
5491     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5495   static final private boolean jj_3R_211() {
 
5496     if (jj_3R_182()) return true;
 
5497     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5501   static final private boolean jj_3R_200() {
 
5502     if (jj_3R_202()) return true;
 
5503     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5507   static final private boolean jj_3R_213() {
 
5508     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
5509     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5513   static final private boolean jj_3R_210() {
 
5514     if (jj_scan_token(PLUS)) return true;
 
5515     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5520     if (jj_3R_216()) return true;
 
5521     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5522     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5526   static final private boolean jj_3R_127() {
 
5527     if (jj_scan_token(TRIPLEEQUAL)) return true;
 
5528     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5532   static final private boolean jj_3R_126() {
 
5533     if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
 
5534     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5538   static final private boolean jj_3R_125() {
 
5539     if (jj_scan_token(NOT_EQUAL)) return true;
 
5540     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5544   static final private boolean jj_3R_124() {
 
5545     if (jj_scan_token(DIF)) return true;
 
5546     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5550   static final private boolean jj_3R_123() {
 
5551     if (jj_scan_token(EQUAL_EQUAL)) return true;
 
5552     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5556   static final private boolean jj_3R_93() {
 
5557     if (jj_3R_52()) return true;
 
5558     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5562   static final private boolean jj_3R_46() {
 
5563     if (jj_scan_token(IDENTIFIER)) return true;
 
5564     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5565     if (jj_scan_token(COLON)) return true;
 
5566     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5570   static final private boolean jj_3R_209() {
 
5571     if (jj_scan_token(MINUS)) return true;
 
5572     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5577     if (jj_3R_214()) return true;
 
5578     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5579     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5583   static final private boolean jj_3R_199() {
 
5584     if (jj_scan_token(LPAREN)) return true;
 
5585     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5588     if (jj_3R_200()) jj_scanpos = xsp;
 
5589     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5590     if (jj_scan_token(RPAREN)) return true;
 
5591     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5595   static final private boolean jj_3R_120() {
 
5606     if (jj_3R_127()) return true;
 
5607     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5608     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5609     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5610     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5611     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5612     if (jj_3R_119()) return true;
 
5613     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5617   static final private boolean jj_3R_208() {
 
5618     if (jj_3R_169()) return true;
 
5619     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5623   static final private boolean jj_3R_207() {
 
5634     if (jj_3R_212()) return true;
 
5635     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5636     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5637     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5638     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5639     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5643   static final private boolean jj_3R_117() {
 
5644     if (jj_3R_119()) return true;
 
5645     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5649       if (jj_3R_120()) { jj_scanpos = xsp; break; }
 
5650       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5655   static final private boolean jj_3_8() {
 
5656     if (jj_3R_47()) return true;
 
5657     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5661   static final private boolean jj_3R_177() {
 
5662     if (jj_scan_token(NULL)) return true;
 
5663     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5667   static final private boolean jj_3R_108() {
 
5668     if (jj_scan_token(LBRACE)) return true;
 
5669     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5670     if (jj_3R_45()) return true;
 
5671     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5672     if (jj_scan_token(RBRACE)) return true;
 
5673     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5677   static final private boolean jj_3R_176() {
 
5678     if (jj_scan_token(FALSE)) return true;
 
5679     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5683   static final private boolean jj_3R_91() {
 
5684     if (jj_scan_token(DOLLAR_ID)) return true;
 
5685     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5689   static final private boolean jj_3R_118() {
 
5690     if (jj_scan_token(BIT_AND)) return true;
 
5691     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5692     if (jj_3R_117()) return true;
 
5693     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5697   static final private boolean jj_3R_175() {
 
5698     if (jj_scan_token(TRUE)) return true;
 
5699     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5703   static final private boolean jj_3R_174() {
 
5704     if (jj_scan_token(STRING_LITERAL)) return true;
 
5705     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5709   static final private boolean jj_3R_115() {
 
5710     if (jj_3R_117()) return true;
 
5711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5715       if (jj_3R_118()) { jj_scanpos = xsp; break; }
 
5716       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5721   static final private boolean jj_3R_173() {
 
5722     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
5723     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5727   static final private boolean jj_3R_90() {
 
5728     if (jj_scan_token(DOLLAR)) return true;
 
5729     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5730     if (jj_3R_59()) return true;
 
5731     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5735   static final private boolean jj_3R_169() {
 
5748     if (jj_3R_177()) return true;
 
5749     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5750     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5751     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5752     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5753     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5754     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5758   static final private boolean jj_3R_172() {
 
5759     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
5760     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5764   static final private boolean jj_3R_116() {
 
5765     if (jj_scan_token(XOR)) return true;
 
5766     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5767     if (jj_3R_115()) return true;
 
5768     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5772   static final private boolean jj_3R_92() {
 
5773     if (jj_3R_45()) return true;
 
5774     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5778   static final private boolean jj_3R_60() {
 
5783     if (jj_3R_93()) return true;
 
5784     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5785     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5789   static final private boolean jj_3R_113() {
 
5790     if (jj_3R_115()) return true;
 
5791     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5795       if (jj_3R_116()) { jj_scanpos = xsp; break; }
 
5796       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5801   static final private boolean jj_3R_89() {
 
5802     if (jj_scan_token(IDENTIFIER)) return true;
 
5803     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5806     if (jj_3R_108()) jj_scanpos = xsp;
 
5807     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5811   static final private boolean jj_3R_88() {
 
5812     if (jj_scan_token(LBRACE)) return true;
 
5813     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5814     if (jj_3R_45()) return true;
 
5815     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5816     if (jj_scan_token(RBRACE)) return true;
 
5817     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5821   static final private boolean jj_3R_59() {
 
5830     if (jj_3R_91()) return true;
 
5831     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5832     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5833     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5834     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5838   static final private boolean jj_3R_49() {
 
5839     if (jj_scan_token(LBRACKET)) return true;
 
5840     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5843     if (jj_3R_60()) jj_scanpos = xsp;
 
5844     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5845     if (jj_scan_token(RBRACKET)) return true;
 
5846     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5850   static final private boolean jj_3R_114() {
 
5851     if (jj_scan_token(BIT_OR)) return true;
 
5852     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5853     if (jj_3R_113()) return true;
 
5854     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5858   static final private boolean jj_3R_98() {
 
5859     if (jj_scan_token(LBRACE)) return true;
 
5860     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5861     if (jj_3R_45()) return true;
 
5862     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5863     if (jj_scan_token(RBRACE)) return true;
 
5864     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5868   static final private boolean jj_3R_109() {
 
5869     if (jj_3R_113()) return true;
 
5870     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5874       if (jj_3R_114()) { jj_scanpos = xsp; break; }
 
5875       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5880   static final private boolean jj_3R_95() {
 
5881     if (jj_scan_token(DOLLAR)) return true;
 
5882     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5883     if (jj_3R_59()) return true;
 
5884     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5888   static final private boolean jj_3R_110() {
 
5889     if (jj_scan_token(DOT)) return true;
 
5890     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5891     if (jj_3R_109()) return true;
 
5892     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5896   static final private boolean jj_3R_48() {
 
5897     if (jj_scan_token(CLASSACCESS)) return true;
 
5898     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5899     if (jj_3R_59()) return true;
 
5900     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5904   static final private boolean jj_3R_40() {
 
5909     if (jj_3R_49()) return true;
 
5910     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5911     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5915   static final private boolean jj_3R_104() {
 
5916     if (jj_3R_109()) return true;
 
5917     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5921       if (jj_3R_110()) { jj_scanpos = xsp; break; }
 
5922       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5927   static final private boolean jj_3R_94() {
 
5928     if (jj_scan_token(DOLLAR_ID)) return true;
 
5929     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5932     if (jj_3R_98()) jj_scanpos = xsp;
 
5933     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5937   static final private boolean jj_3R_61() {
 
5942     if (jj_3R_95()) return true;
 
5943     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5944     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5948   static final private boolean jj_3R_196() {
 
5949     if (jj_3R_40()) return true;
 
5950     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5954   static final private boolean jj_3R_112() {
 
5955     if (jj_scan_token(_ANDL)) return true;
 
5956     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5960   static final private boolean jj_3R_195() {
 
5961     if (jj_3R_199()) return true;
 
5962     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5966   static final private boolean jj_3R_188() {
 
5971     if (jj_3R_196()) return true;
 
5972     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5973     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5977   static final private boolean jj_3R_111() {
 
5978     if (jj_scan_token(AND_AND)) return true;
 
5979     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5983   static final private boolean jj_3R_105() {
 
5988     if (jj_3R_112()) return true;
 
5989     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5990     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5991     if (jj_3R_104()) return true;
 
5992     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5996   static final private boolean jj_3R_97() {
 
5997     if (jj_scan_token(HOOK)) return true;
 
5998     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5999     if (jj_3R_45()) return true;
 
6000     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6001     if (jj_scan_token(COLON)) return true;
 
6002     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6003     if (jj_3R_86()) return true;
 
6004     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6008   static final private boolean jj_3R_102() {
 
6009     if (jj_3R_104()) return true;
 
6010     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6014       if (jj_3R_105()) { jj_scanpos = xsp; break; }
 
6015       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6020   static final private boolean jj_3R_187() {
 
6021     if (jj_3R_50()) return true;
 
6022     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6026   static final private boolean jj_3R_186() {
 
6027     if (jj_scan_token(IDENTIFIER)) return true;
 
6028     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6032   static final private boolean jj_3R_178() {
 
6037     if (jj_3R_187()) return true;
 
6038     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6039     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6043   static final private boolean jj_3R_107() {
 
6044     if (jj_scan_token(_ORL)) return true;
 
6045     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6049   static final private boolean jj_3R_106() {
 
6050     if (jj_scan_token(OR_OR)) return true;
 
6051     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6055   static final private boolean jj_3_1() {
 
6056     if (jj_3R_40()) return true;
 
6057     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6061   static final private boolean jj_3R_103() {
 
6066     if (jj_3R_107()) return true;
 
6067     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6068     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6069     if (jj_3R_102()) return true;
 
6070     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6074   static final private boolean jj_3R_96() {
 
6075     if (jj_3R_102()) return true;
 
6076     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6080       if (jj_3R_103()) { jj_scanpos = xsp; break; }
 
6081       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6086   static final private boolean jj_3R_50() {
 
6087     if (jj_3R_61()) return true;
 
6088     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6092       if (jj_3_1()) { jj_scanpos = xsp; break; }
 
6093       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6098   static final private boolean jj_3R_86() {
 
6099     if (jj_3R_96()) return true;
 
6100     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6103     if (jj_3R_97()) jj_scanpos = xsp;
 
6104     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6108   static final private boolean jj_3R_191() {
 
6109     if (jj_3R_50()) return true;
 
6110     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6114   static final private boolean jj_3R_190() {
 
6115     if (jj_scan_token(NEW)) return true;
 
6116     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6117     if (jj_3R_178()) return true;
 
6118     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6122   static final private boolean jj_3R_74() {
 
6123     if (jj_scan_token(TILDEEQUAL)) return true;
 
6124     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6128   static final private boolean jj_3R_101() {
 
6129     if (jj_scan_token(ASSIGN)) return true;
 
6130     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6131     if (jj_3R_45()) return true;
 
6132     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6136   static final private boolean jj_3R_73() {
 
6137     if (jj_scan_token(DOTASSIGN)) return true;
 
6138     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6142   static final private boolean jj_3R_72() {
 
6143     if (jj_scan_token(ORASSIGN)) return true;
 
6144     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6148   static final private boolean jj_3R_189() {
 
6149     if (jj_scan_token(IDENTIFIER)) return true;
 
6150     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6154   static final private boolean jj_3R_180() {
 
6161     if (jj_3R_191()) return true;
 
6162     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6163     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6164     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6168   static final private boolean jj_3R_71() {
 
6169     if (jj_scan_token(XORASSIGN)) return true;
 
6170     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6174   static final private boolean jj_3R_70() {
 
6175     if (jj_scan_token(ANDASSIGN)) return true;
 
6176     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6180   static final private boolean jj_3R_69() {
 
6181     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
 
6182     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6186   static final private boolean jj_3R_68() {
 
6187     if (jj_scan_token(LSHIFTASSIGN)) return true;
 
6188     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6192   static final private boolean jj_3R_67() {
 
6193     if (jj_scan_token(MINUSASSIGN)) return true;
 
6194     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6198   static final private boolean jj_3R_66() {
 
6199     if (jj_scan_token(PLUSASSIGN)) return true;
 
6200     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6204   static final private boolean jj_3R_65() {
 
6205     if (jj_scan_token(REMASSIGN)) return true;
 
6206     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6210   static final private boolean jj_3R_64() {
 
6211     if (jj_scan_token(SLASHASSIGN)) return true;
 
6212     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6216   static final private boolean jj_3R_63() {
 
6217     if (jj_scan_token(STARASSIGN)) return true;
 
6218     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6222   static final private boolean jj_3R_51() {
 
6249     if (jj_3R_74()) return true;
 
6250     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6251     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6252     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6253     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6254     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6255     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6256     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6257     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6258     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6259     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6260     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6261     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6262     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6266   static final private boolean jj_3R_62() {
 
6267     if (jj_scan_token(ASSIGN)) return true;
 
6268     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6272   static final private boolean jj_3R_182() {
 
6273     if (jj_scan_token(ARRAY)) return true;
 
6274     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6275     if (jj_3R_192()) return true;
 
6276     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6280   static final private boolean jj_3R_100() {
 
6281     if (jj_scan_token(COMMA)) return true;
 
6282     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6283     if (jj_3R_50()) return true;
 
6284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6288   static final private boolean jj_3R_171() {
 
6289     if (jj_3R_182()) return true;
 
6290     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6294   static final private boolean jj_3R_99() {
 
6295     if (jj_3R_50()) return true;
 
6296     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6300   static final private boolean jj_3R_181() {
 
6301     if (jj_3R_188()) return true;
 
6302     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6306   static final private boolean jj_3R_170() {
 
6307     if (jj_3R_180()) return true;
 
6308     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6312       if (jj_3R_181()) { jj_scanpos = xsp; break; }
 
6313       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6318   static final private boolean jj_3R_179() {
 
6319     if (jj_3R_188()) return true;
 
6320     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6324   static final private boolean jj_3R_42() {
 
6325     if (jj_3R_50()) return true;
 
6326     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6327     if (jj_3R_51()) return true;
 
6328     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6329     if (jj_3R_45()) return true;
 
6330     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6334   static final private boolean jj_3_5() {
 
6335     if (jj_scan_token(IDENTIFIER)) return true;
 
6336     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6337     if (jj_scan_token(STATICCLASSACCESS)) return true;
 
6338     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6339     if (jj_3R_178()) return true;
 
6340     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6344       if (jj_3R_179()) { jj_scanpos = xsp; break; }
 
6345       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6350   static final private boolean jj_3R_166() {
 
6357     if (jj_3R_171()) 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;
 
6360     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6364   static final private boolean jj_3R_85() {
 
6365     if (jj_scan_token(LIST)) return true;
 
6366     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6367     if (jj_scan_token(LPAREN)) return true;
 
6368     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6371     if (jj_3R_99()) jj_scanpos = xsp;
 
6372     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6375       if (jj_3R_100()) { jj_scanpos = xsp; break; }
 
6376       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6378     if (jj_scan_token(RPAREN)) return true;
 
6379     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6381     if (jj_3R_101()) jj_scanpos = xsp;
 
6382     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6386   static final private boolean jj_3_3() {
 
6387     if (jj_3R_42()) return true;
 
6388     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6392   static final private boolean jj_3R_84() {
 
6393     if (jj_scan_token(PRINT)) return true;
 
6394     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6395     if (jj_3R_45()) return true;
 
6396     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6400   static final private boolean jj_3R_56() {
 
6401     if (jj_3R_86()) return true;
 
6402     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6406   static final private boolean jj_3R_55() {
 
6407     if (jj_3R_42()) return true;
 
6408     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6412   static final private boolean jj_3R_194() {
 
6413     if (jj_scan_token(DECR)) return true;
 
6414     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6418   static final private boolean jj_3R_54() {
 
6419     if (jj_3R_85()) return true;
 
6420     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6424   static final private boolean jj_3R_193() {
 
6425     if (jj_scan_token(INCR)) return true;
 
6426     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6430   static final private boolean jj_3R_185() {
 
6435     if (jj_3R_194()) return true;
 
6436     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6437     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6441   static final private boolean jj_3R_45() {
 
6450     if (jj_3R_56()) return true;
 
6451     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6452     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6453     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6454     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6458   static final private boolean jj_3R_53() {
 
6459     if (jj_3R_84()) return true;
 
6460     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6464   static final private boolean jj_3R_168() {
 
6465     if (jj_3R_166()) return true;
 
6466     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6469     if (jj_3R_185()) jj_scanpos = xsp;
 
6470     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6474   static final private boolean jj_3R_83() {
 
6475     if (jj_scan_token(OBJECT)) return true;
 
6476     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6480   static final private boolean jj_3R_44() {
 
6481     if (jj_scan_token(ARRAY)) return true;
 
6482     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6486   static final private boolean jj_3R_184() {
 
6487     if (jj_scan_token(ARRAY)) return true;
 
6488     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6492   static final private boolean jj_3R_82() {
 
6493     if (jj_scan_token(INTEGER)) return true;
 
6494     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6498   static final private boolean jj_3R_183() {
 
6499     if (jj_3R_52()) return true;
 
6500     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6504   static final private boolean jj_3R_81() {
 
6505     if (jj_scan_token(INT)) return true;
 
6506     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6510   static final private boolean jj_3R_167() {
 
6511     if (jj_scan_token(LPAREN)) return true;
 
6512     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6517     if (jj_3R_184()) return true;
 
6518     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6519     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6520     if (jj_scan_token(RPAREN)) return true;
 
6521     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6522     if (jj_3R_139()) return true;
 
6523     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6527   static final private boolean jj_3R_80() {
 
6528     if (jj_scan_token(FLOAT)) return true;
 
6529     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6533   static final private boolean jj_3R_43() {
 
6534     if (jj_3R_52()) return true;
 
6535     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6539   static final private boolean jj_3R_79() {
 
6540     if (jj_scan_token(DOUBLE)) return true;
 
6541     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6545   static final private boolean jj_3R_78() {
 
6546     if (jj_scan_token(REAL)) return true;
 
6547     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6551   static final private boolean jj_3R_77() {
 
6552     if (jj_scan_token(BOOLEAN)) return true;
 
6553     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6557   static final private boolean jj_3_4() {
 
6558     if (jj_scan_token(LPAREN)) return true;
 
6559     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6564     if (jj_3R_44()) return true;
 
6565     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6566     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6567     if (jj_scan_token(RPAREN)) return true;
 
6568     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6572   static final private boolean jj_3R_76() {
 
6573     if (jj_scan_token(BOOL)) return true;
 
6574     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6578   static final private boolean jj_3R_75() {
 
6579     if (jj_scan_token(STRING)) return true;
 
6580     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6584   static final private boolean jj_3R_52() {
 
6603     if (jj_3R_83()) return true;
 
6604     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6605     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6606     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6607     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6608     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6609     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6610     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6611     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6612     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6616   static final private boolean jj_3R_165() {
 
6617     if (jj_scan_token(LPAREN)) return true;
 
6618     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6619     if (jj_3R_45()) return true;
 
6620     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6621     if (jj_scan_token(RPAREN)) return true;
 
6622     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6626   static final private boolean jj_3R_164() {
 
6627     if (jj_3R_169()) return true;
 
6628     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6632   static final private boolean jj_3R_163() {
 
6633     if (jj_3R_168()) return true;
 
6634     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6638   static final private boolean jj_3R_162() {
 
6639     if (jj_3R_167()) return true;
 
6640     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6644   static final private boolean jj_3R_158() {
 
6655     if (jj_3R_165()) return true;
 
6656     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6657     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6658     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6659     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6660     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6664   static final private boolean jj_3R_161() {
 
6665     if (jj_scan_token(BANG)) return true;
 
6666     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6667     if (jj_3R_139()) return true;
 
6668     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6672   static final private boolean jj_3R_160() {
 
6673     if (jj_scan_token(DECR)) return true;
 
6674     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6678   static final private boolean jj_3R_159() {
 
6679     if (jj_scan_token(INCR)) return true;
 
6680     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6684   static final private boolean jj_3R_157() {
 
6689     if (jj_3R_160()) return true;
 
6690     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6691     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6692     if (jj_3R_166()) return true;
 
6693     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6697   static final private boolean jj_3R_152() {
 
6698     if (jj_3R_158()) return true;
 
6699     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6703   static final private boolean jj_3R_151() {
 
6704     if (jj_3R_157()) return true;
 
6705     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6709   static final private boolean jj_3R_156() {
 
6710     if (jj_scan_token(MINUS)) return true;
 
6711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6715   static final private boolean jj_3R_155() {
 
6716     if (jj_scan_token(PLUS)) return true;
 
6717     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6721   static final private boolean jj_3R_148() {
 
6728     if (jj_3R_152()) return true;
 
6729     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6730     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6731     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6735   static final private boolean jj_3R_150() {
 
6740     if (jj_3R_156()) return true;
 
6741     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6742     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6743     if (jj_3R_139()) return true;
 
6744     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6748   static final private boolean jj_3R_154() {
 
6749     if (jj_3R_148()) return true;
 
6750     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6754   static final private boolean jj_3R_87() {
 
6755     if (jj_scan_token(ASSIGN)) return true;
 
6756     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6757     if (jj_3R_45()) return true;
 
6758     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6762   static final private boolean jj_3R_149() {
 
6767     if (jj_3R_154()) return true;
 
6768     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6769     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6773   static final private boolean jj_3R_153() {
 
6774     if (jj_scan_token(AT)) return true;
 
6775     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6776     if (jj_3R_149()) return true;
 
6777     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6781   static final private boolean jj_3R_144() {
 
6782     if (jj_3R_149()) return true;
 
6783     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6787   static final private boolean jj_3R_139() {
 
6792     if (jj_3R_144()) return true;
 
6793     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6794     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6798   static final private boolean jj_3R_143() {
 
6799     if (jj_scan_token(BIT_AND)) return true;
 
6800     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6801     if (jj_3R_148()) return true;
 
6802     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6806   static private boolean jj_initialized_once = false;
 
6807   static public PHPParserTokenManager token_source;
 
6808   static SimpleCharStream jj_input_stream;
 
6809   static public Token token, jj_nt;
 
6810   static private int jj_ntk;
 
6811   static private Token jj_scanpos, jj_lastpos;
 
6812   static private int jj_la;
 
6813   static public boolean lookingAhead = false;
 
6814   static private boolean jj_semLA;
 
6815   static private int jj_gen;
 
6816   static final private int[] jj_la1 = new int[125];
 
6817   static private int[] jj_la1_0;
 
6818   static private int[] jj_la1_1;
 
6819   static private int[] jj_la1_2;
 
6820   static private int[] jj_la1_3;
 
6821   static private int[] jj_la1_4;
 
6829    private static void jj_la1_0() {
 
6830       jj_la1_0 = new int[] {0xfcb0001e,0x6,0x6,0xfcb0001e,0x0,0xfcb00000,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x34000000,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x4000000,0x0,0x4000000,0x0,0x0,0x4000000,0x4000000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x4000000,0x0,0x0,0x34000000,0x34000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4800000,0xfc800000,0x8,0x6,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0xfcb00010,0xfcb00010,0xfcb00000,0xf4b00000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0xf4b00010,0xf4b00010,0x8000000,0x0,0x34000000,0xfc800010,0xfc800010,0x1000000,0x2000000,0xfc800010,0x1000000,0x2000000,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800000,0xfc800000,0x4000000,0x34000000,0x4000000,0xfc800000,0xfc800000,0x4000000,0x0,0x34000000,0x34000000,};
 
6832    private static void jj_la1_1() {
 
6833       jj_la1_1 = new int[] {0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x21d7541f,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc20000,0x80,0xc30000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0xc30000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc30000,0xc30000,0x0,0xc30000,0x0,0x0,0xc30000,0x80000000,0x0,0x0,0x20,0x20,0x10000,0x10000,0x10000,0x0,0x20,0x80c30000,0x80c30000,0x20,0xc20000,0x0,0x0,0x0,0x0,0x0,0x2115541f,0x21d7541f,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x0,0x0,0x0,0x0,0x10000,0x0,0x900,0x900,0x21d7541f,0x21d7541f,0x0,0x900,0xc30000,0x21d7541f,0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x10000,0xc30000,0x10000,0x21d7541f,0x21d7541f,0x10000,0x0,0xc30000,0xc30000,};
 
6835    private static void jj_la1_2() {
 
6836       jj_la1_2 = new int[] {0x804f0700,0x0,0x0,0x804f0700,0x0,0x804f0700,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x200,0x80000000,0x80000000,0x800c0000,0x0,0x804f0700,0x0,0x400000,0x0,0x400200,0x400000,0xff,0x0,0x804f0700,0x0,0x1000,0x20004000,0x20004000,0x40008000,0x40008000,0x0,0x800000,0x1000000,0x400000,0x0,0x0,0x0,0x0,0x1c000000,0x1c000000,0xc0000,0xc0000,0x2300000,0x2300000,0x804f0700,0x800f0700,0xc0000,0x800f0600,0x30000,0x400,0x80000200,0xff,0x30000,0x30000,0x0,0x0,0x200,0x200,0x200,0x200,0x0,0x804f07ff,0x804f07ff,0x0,0x80000000,0x400200,0x0,0x400000,0x0,0x100,0x30300,0x804f0700,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x0,0x0,0x30000,0x30000,0x30200,0x2000,0x0,0x0,0x804f0700,0x804f0700,0x0,0x0,0x804f0700,0x804f0700,0x804f0700,0x0,0x0,0x804f0700,0x0,0x0,0x804f2700,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x804f2700,0x30200,0x804f0700,0x30200,0x804f0700,0x804f2700,0x30200,0x0,0x804f0700,0x804f0700,};
 
6838    private static void jj_la1_3() {
 
6839       jj_la1_3 = new int[] {0x8a228,0x0,0x0,0x8a228,0x80000,0x8a228,0x0,0x0,0x0,0x100000,0x80000000,0x8000,0x0,0x8000,0x8200,0x8,0x8,0x228,0x0,0x2228,0x100000,0x0,0x100000,0x0,0x0,0x0,0x0,0x2228,0x80000000,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x79000000,0x79000000,0x6c00000,0x6c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x2228,0x2228,0x0,0x2228,0x0,0x0,0x2228,0x0,0x0,0x0,0x22000,0x22000,0x200,0x200,0x200,0x200,0x22000,0x2228,0x2228,0x20000,0x28,0x0,0x100000,0x0,0x80000000,0x0,0x88200,0x8a228,0x0,0x0,0x0,0x0,0x100000,0x80000000,0x100000,0x100000,0x100000,0x8a228,0x8a228,0x8a228,0x8a228,0x100000,0x80000000,0x80000000,0x80000000,0x200,0x8000,0x0,0x0,0x8a228,0x8a228,0x0,0x0,0x2228,0x8a228,0x8a228,0x0,0x0,0x8a228,0x0,0x0,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x200,0x2228,0x200,0x8a228,0x8a228,0x200,0x100000,0x2228,0x2228,};
 
6841    private static void jj_la1_4() {
 
6842       jj_la1_4 = new int[] {0x1000,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0xfff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x1000,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x0,0x0,0xfff,0xfff,0x1000,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x1000,0x1000,0x0,0x0,0x1000,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0,0x1000,0x1000,};
 
6844   static final private JJCalls[] jj_2_rtns = new JJCalls[8];
 
6845   static private boolean jj_rescan = false;
 
6846   static private int jj_gc = 0;
 
6848   public PHPParser(java.io.InputStream stream) {
 
6849     if (jj_initialized_once) {
 
6850       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6851       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6852       System.out.println("       during parser generation.");
 
6855     jj_initialized_once = true;
 
6856     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6857     token_source = new PHPParserTokenManager(jj_input_stream);
 
6858     token = new Token();
 
6861     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6862     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6865   static public void ReInit(java.io.InputStream stream) {
 
6866     jj_input_stream.ReInit(stream, 1, 1);
 
6867     token_source.ReInit(jj_input_stream);
 
6868     token = new Token();
 
6871     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6872     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6875   public PHPParser(java.io.Reader stream) {
 
6876     if (jj_initialized_once) {
 
6877       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6878       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6879       System.out.println("       during parser generation.");
 
6882     jj_initialized_once = true;
 
6883     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6884     token_source = new PHPParserTokenManager(jj_input_stream);
 
6885     token = new Token();
 
6888     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6889     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6892   static public void ReInit(java.io.Reader stream) {
 
6893     jj_input_stream.ReInit(stream, 1, 1);
 
6894     token_source.ReInit(jj_input_stream);
 
6895     token = new Token();
 
6898     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6899     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6902   public PHPParser(PHPParserTokenManager tm) {
 
6903     if (jj_initialized_once) {
 
6904       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6905       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6906       System.out.println("       during parser generation.");
 
6909     jj_initialized_once = true;
 
6911     token = new Token();
 
6914     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6915     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6918   public void ReInit(PHPParserTokenManager tm) {
 
6920     token = new Token();
 
6923     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6924     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6927   static final private Token jj_consume_token(int kind) throws ParseException {
 
6929     if ((oldToken = token).next != null) token = token.next;
 
6930     else token = token.next = token_source.getNextToken();
 
6932     if (token.kind == kind) {
 
6934       if (++jj_gc > 100) {
 
6936         for (int i = 0; i < jj_2_rtns.length; i++) {
 
6937           JJCalls c = jj_2_rtns[i];
 
6939             if (c.gen < jj_gen) c.first = null;
 
6948     throw generateParseException();
 
6951   static final private boolean jj_scan_token(int kind) {
 
6952     if (jj_scanpos == jj_lastpos) {
 
6954       if (jj_scanpos.next == null) {
 
6955         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
 
6957         jj_lastpos = jj_scanpos = jj_scanpos.next;
 
6960       jj_scanpos = jj_scanpos.next;
 
6963       int i = 0; Token tok = token;
 
6964       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
 
6965       if (tok != null) jj_add_error_token(kind, i);
 
6967     return (jj_scanpos.kind != kind);
 
6970   static final public Token getNextToken() {
 
6971     if (token.next != null) token = token.next;
 
6972     else token = token.next = token_source.getNextToken();
 
6978   static final public Token getToken(int index) {
 
6979     Token t = lookingAhead ? jj_scanpos : token;
 
6980     for (int i = 0; i < index; i++) {
 
6981       if (t.next != null) t = t.next;
 
6982       else t = t.next = token_source.getNextToken();
 
6987   static final private int jj_ntk() {
 
6988     if ((jj_nt=token.next) == null)
 
6989       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
 
6991       return (jj_ntk = jj_nt.kind);
 
6994   static private java.util.Vector jj_expentries = new java.util.Vector();
 
6995   static private int[] jj_expentry;
 
6996   static private int jj_kind = -1;
 
6997   static private int[] jj_lasttokens = new int[100];
 
6998   static private int jj_endpos;
 
7000   static private void jj_add_error_token(int kind, int pos) {
 
7001     if (pos >= 100) return;
 
7002     if (pos == jj_endpos + 1) {
 
7003       jj_lasttokens[jj_endpos++] = kind;
 
7004     } else if (jj_endpos != 0) {
 
7005       jj_expentry = new int[jj_endpos];
 
7006       for (int i = 0; i < jj_endpos; i++) {
 
7007         jj_expentry[i] = jj_lasttokens[i];
 
7009       boolean exists = false;
 
7010       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
 
7011         int[] oldentry = (int[])(enum.nextElement());
 
7012         if (oldentry.length == jj_expentry.length) {
 
7014           for (int i = 0; i < jj_expentry.length; i++) {
 
7015             if (oldentry[i] != jj_expentry[i]) {
 
7023       if (!exists) jj_expentries.addElement(jj_expentry);
 
7024       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
 
7028   static public ParseException generateParseException() {
 
7029     jj_expentries.removeAllElements();
 
7030     boolean[] la1tokens = new boolean[141];
 
7031     for (int i = 0; i < 141; i++) {
 
7032       la1tokens[i] = false;
 
7035       la1tokens[jj_kind] = true;
 
7038     for (int i = 0; i < 125; i++) {
 
7039       if (jj_la1[i] == jj_gen) {
 
7040         for (int j = 0; j < 32; j++) {
 
7041           if ((jj_la1_0[i] & (1<<j)) != 0) {
 
7042             la1tokens[j] = true;
 
7044           if ((jj_la1_1[i] & (1<<j)) != 0) {
 
7045             la1tokens[32+j] = true;
 
7047           if ((jj_la1_2[i] & (1<<j)) != 0) {
 
7048             la1tokens[64+j] = true;
 
7050           if ((jj_la1_3[i] & (1<<j)) != 0) {
 
7051             la1tokens[96+j] = true;
 
7053           if ((jj_la1_4[i] & (1<<j)) != 0) {
 
7054             la1tokens[128+j] = true;
 
7059     for (int i = 0; i < 141; i++) {
 
7061         jj_expentry = new int[1];
 
7063         jj_expentries.addElement(jj_expentry);
 
7068     jj_add_error_token(0, 0);
 
7069     int[][] exptokseq = new int[jj_expentries.size()][];
 
7070     for (int i = 0; i < jj_expentries.size(); i++) {
 
7071       exptokseq[i] = (int[])jj_expentries.elementAt(i);
 
7073     return new ParseException(token, exptokseq, tokenImage);
 
7076   static final public void enable_tracing() {
 
7079   static final public void disable_tracing() {
 
7082   static final private void jj_rescan_token() {
 
7084     for (int i = 0; i < 8; i++) {
 
7085       JJCalls p = jj_2_rtns[i];
 
7087         if (p.gen > jj_gen) {
 
7088           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
 
7090             case 0: jj_3_1(); break;
 
7091             case 1: jj_3_2(); break;
 
7092             case 2: jj_3_3(); break;
 
7093             case 3: jj_3_4(); break;
 
7094             case 4: jj_3_5(); break;
 
7095             case 5: jj_3_6(); break;
 
7096             case 6: jj_3_7(); break;
 
7097             case 7: jj_3_8(); break;
 
7101       } while (p != null);
 
7106   static final private void jj_save(int index, int xla) {
 
7107     JJCalls p = jj_2_rtns[index];
 
7108     while (p.gen > jj_gen) {
 
7109       if (p.next == null) { p = p.next = new JJCalls(); break; }
 
7112     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
 
7115   static final class JJCalls {