1 /* Generated By:JavaCC: Do not edit this line. PHPParser.java */
 
   4 import org.eclipse.core.resources.IFile;
 
   5 import org.eclipse.core.resources.IMarker;
 
   6 import org.eclipse.core.runtime.CoreException;
 
   7 import org.eclipse.ui.texteditor.MarkerUtilities;
 
   8 import org.eclipse.jface.preference.IPreferenceStore;
 
  10 import java.util.Hashtable;
 
  11 import java.util.ArrayList;
 
  12 import java.io.StringReader;
 
  14 import java.text.MessageFormat;
 
  16 import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
 
  17 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 
  18 import net.sourceforge.phpdt.internal.compiler.ast.*;
 
  19 import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
 
  20 import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
 
  21 import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
 
  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
 
  29  * @version $Reference: 1.0$
 
  31 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
 
  33   /** The file that is parsed. */
 
  34   private static IFile fileToParse;
 
  36   /** The current segment. */
 
  37   private static OutlineableWithChildren currentSegment;
 
  39   private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
 
  40   private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
 
  41   static PHPOutlineInfo outlineInfo;
 
  43   /** The error level of the current ParseException. */
 
  44   private static int errorLevel = ERROR;
 
  45   /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
 
  46   private static String errorMessage;
 
  48   private static int errorStart = -1;
 
  49   private static int errorEnd = -1;
 
  50   private static PHPDocument phpDocument;
 
  52   private static final char[] SYNTAX_ERROR_CHAR = {'s','y','n','t','a','x',' ','e','r','r','o','r'};
 
  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;
 
  66   public final void setFileToParse(final IFile fileToParse) {
 
  67     this.fileToParse = fileToParse;
 
  73   public PHPParser(final IFile fileToParse) {
 
  74     this(new StringReader(""));
 
  75     this.fileToParse = fileToParse;
 
  79    * Reinitialize the parser.
 
  81   private static final void init() {
 
  82     nodes = new AstNode[AstStackIncrement];
 
  88    * Add an php node on the stack.
 
  89    * @param node the node that will be added to the stack
 
  91   private static final void pushOnAstNodes(final AstNode node) {
 
  93       nodes[++nodePtr] = node;
 
  94     } catch (IndexOutOfBoundsException e) {
 
  95       final int oldStackLength = nodes.length;
 
  96       final AstNode[] oldStack = nodes;
 
  97       nodes = new AstNode[oldStackLength + AstStackIncrement];
 
  98       System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
 
  99       nodePtr = oldStackLength;
 
 100       nodes[nodePtr] = node;
 
 104   public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
 
 105     phpDocument = new PHPDocument(parent,"_root".toCharArray());
 
 106     currentSegment = phpDocument;
 
 107     outlineInfo = new PHPOutlineInfo(parent, currentSegment);
 
 108     final StringReader stream = new StringReader(s);
 
 109     if (jj_input_stream == null) {
 
 110       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 116       phpDocument.nodes = new AstNode[nodes.length];
 
 117       System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length);
 
 118       if (PHPeclipsePlugin.DEBUG) {
 
 119         PHPeclipsePlugin.log(1,phpDocument.toString());
 
 121     } catch (ParseException e) {
 
 122       processParseException(e);
 
 128    * This method will process the parse exception.
 
 129    * If the error message is null, the parse exception wasn't catched and a trace is written in the log
 
 130    * @param e the ParseException
 
 132   private static void processParseException(final ParseException e) {
 
 133     if (errorMessage == null) {
 
 134       PHPeclipsePlugin.log(e);
 
 135       errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
 
 136       errorStart = SimpleCharStream.getPosition();
 
 137       errorEnd   = errorStart + 1;
 
 141   //  if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e);
 
 145    * Create marker for the parse error.
 
 146    * @param e the ParseException
 
 148   private static void setMarker(final ParseException e) {
 
 150       if (errorStart == -1) {
 
 151         setMarker(fileToParse,
 
 153                   SimpleCharStream.tokenBegin,
 
 154                   SimpleCharStream.tokenBegin + e.currentToken.image.length(),
 
 156                   "Line " + e.currentToken.beginLine);
 
 158         setMarker(fileToParse,
 
 163                   "Line " + e.currentToken.beginLine);
 
 167     } catch (CoreException e2) {
 
 168       PHPeclipsePlugin.log(e2);
 
 172   private static void scanLine(final String output,
 
 175                                final int brIndx) throws CoreException {
 
 177     final StringBuffer lineNumberBuffer = new StringBuffer(10);
 
 179     current = output.substring(indx, brIndx);
 
 181     if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
 
 182       final int onLine = current.indexOf("on line <b>");
 
 184         lineNumberBuffer.delete(0, lineNumberBuffer.length());
 
 185         for (int i = onLine; i < current.length(); i++) {
 
 186           ch = current.charAt(i);
 
 187           if ('0' <= ch && '9' >= ch) {
 
 188             lineNumberBuffer.append(ch);
 
 192         final int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
 
 194         final Hashtable attributes = new Hashtable();
 
 196         current = current.replaceAll("\n", "");
 
 197         current = current.replaceAll("<b>", "");
 
 198         current = current.replaceAll("</b>", "");
 
 199         MarkerUtilities.setMessage(attributes, current);
 
 201         if (current.indexOf(PARSE_ERROR_STRING) != -1)
 
 202           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
 
 203         else if (current.indexOf(PARSE_WARNING_STRING) != -1)
 
 204           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
 
 206           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
 
 207         MarkerUtilities.setLineNumber(attributes, lineNumber);
 
 208         MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
 
 213   public final void parse(final String s) throws CoreException {
 
 214     final StringReader stream = new StringReader(s);
 
 215     if (jj_input_stream == null) {
 
 216       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 222     } catch (ParseException e) {
 
 223       processParseException(e);
 
 228    * Call the php parse command ( php -l -f <filename> )
 
 229    * and create markers according to the external parser output
 
 231   public static void phpExternalParse(final IFile file) {
 
 232     final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
 
 233     final String filename = file.getLocation().toString();
 
 235     final String[] arguments = { filename };
 
 236     final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
 
 237     final String command = form.format(arguments);
 
 239     final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
 
 242       // parse the buffer to find the errors and warnings
 
 243       createMarkers(parserResult, file);
 
 244     } catch (CoreException e) {
 
 245       PHPeclipsePlugin.log(e);
 
 250    * Put a new html block in the stack.
 
 252   public static final void createNewHTMLCode() {
 
 253     final int currentPosition = SimpleCharStream.getPosition();
 
 254     if (currentPosition == htmlStart || currentPosition > SimpleCharStream.currentBuffer.length()) {
 
 257     final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition+1).toCharArray();
 
 258     pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
 
 261   /** Create a new task. */
 
 262   public static final void createNewTask() {
 
 263     final int currentPosition = SimpleCharStream.getPosition();
 
 264     final String  todo = SimpleCharStream.currentBuffer.substring(currentPosition-3,
 
 265                                                                   SimpleCharStream.currentBuffer.indexOf("\n",
 
 267     PHPeclipsePlugin.log(1,SimpleCharStream.currentBuffer.toString());
 
 269       setMarker(fileToParse,
 
 271                 SimpleCharStream.getBeginLine(),
 
 273                 "Line "+SimpleCharStream.getBeginLine());
 
 274     } catch (CoreException e) {
 
 275       PHPeclipsePlugin.log(e);
 
 279   private static final void parse() throws ParseException {
 
 283   static final public void phpFile() throws ParseException {
 
 287         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 326         case INTEGER_LITERAL:
 
 327         case FLOATING_POINT_LITERAL:
 
 342      PHPParser.createNewHTMLCode();
 
 343     } catch (TokenMgrError e) {
 
 344     PHPeclipsePlugin.log(e);
 
 345     errorStart   = SimpleCharStream.getPosition();
 
 346     errorEnd     = errorStart + 1;
 
 347     errorMessage = e.getMessage();
 
 349     {if (true) throw generateParseException();}
 
 354  * A php block is a <?= expression [;]?>
 
 355  * or <?php somephpcode ?>
 
 356  * or <? somephpcode ?>
 
 358   static final public void PhpBlock() throws ParseException {
 
 359   final int start = SimpleCharStream.getPosition();
 
 360   final PHPEchoBlock phpEchoBlock;
 
 361     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 363       phpEchoBlock = phpEchoBlock();
 
 364    pushOnAstNodes(phpEchoBlock);
 
 403     case INTEGER_LITERAL:
 
 404     case FLOATING_POINT_LITERAL:
 
 411       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 414         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 416           jj_consume_token(PHPSTARTLONG);
 
 419           jj_consume_token(PHPSTARTSHORT);
 
 421       setMarker(fileToParse,
 
 422                 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
 
 424                 SimpleCharStream.getPosition(),
 
 426                 "Line " + token.beginLine);
 
 427     } catch (CoreException e) {
 
 428       PHPeclipsePlugin.log(e);
 
 433           jj_consume_token(-1);
 
 434           throw new ParseException();
 
 443         jj_consume_token(PHPEND);
 
 444       } catch (ParseException e) {
 
 445     errorMessage = "'?>' expected";
 
 447     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 448     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 449     processParseException(e);
 
 454       jj_consume_token(-1);
 
 455       throw new ParseException();
 
 459   static final public PHPEchoBlock phpEchoBlock() throws ParseException {
 
 460   final Expression expr;
 
 461   final int pos = SimpleCharStream.getPosition();
 
 462   final PHPEchoBlock echoBlock;
 
 463     jj_consume_token(PHPECHOSTART);
 
 465     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 467       jj_consume_token(SEMICOLON);
 
 473     jj_consume_token(PHPEND);
 
 474   echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition());
 
 475   pushOnAstNodes(echoBlock);
 
 476   {if (true) return echoBlock;}
 
 477     throw new Error("Missing return statement in function");
 
 480   static final public void Php() throws ParseException {
 
 483       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 518       case INTEGER_LITERAL:
 
 519       case FLOATING_POINT_LITERAL:
 
 536   static final public ClassDeclaration ClassDeclaration() throws ParseException {
 
 537   final ClassDeclaration classDeclaration;
 
 538   final Token className,superclassName;
 
 540   char[] classNameImage = SYNTAX_ERROR_CHAR;
 
 541   char[] superclassNameImage = null;
 
 542     jj_consume_token(CLASS);
 
 543    pos = SimpleCharStream.getPosition();
 
 545       className = jj_consume_token(IDENTIFIER);
 
 546      classNameImage = className.image.toCharArray();
 
 547     } catch (ParseException e) {
 
 548     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 550     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 551     errorEnd     = SimpleCharStream.getPosition() + 1;
 
 552     processParseException(e);
 
 554     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 556       jj_consume_token(EXTENDS);
 
 558         superclassName = jj_consume_token(IDENTIFIER);
 
 559        superclassNameImage = superclassName.image.toCharArray();
 
 560       } catch (ParseException e) {
 
 561       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 563       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 564       errorEnd   = SimpleCharStream.getPosition() + 1;
 
 565       processParseException(e);
 
 566       superclassNameImage = SYNTAX_ERROR_CHAR;
 
 573     if (superclassNameImage == null) {
 
 574       classDeclaration = new ClassDeclaration(currentSegment,
 
 579       classDeclaration = new ClassDeclaration(currentSegment,
 
 585       currentSegment.add(classDeclaration);
 
 586       currentSegment = classDeclaration;
 
 587     ClassBody(classDeclaration);
 
 588    currentSegment = (OutlineableWithChildren) currentSegment.getParent();
 
 589    classDeclaration.sourceEnd = SimpleCharStream.getPosition();
 
 590    pushOnAstNodes(classDeclaration);
 
 591    {if (true) return classDeclaration;}
 
 592     throw new Error("Missing return statement in function");
 
 595   static final public void ClassBody(final ClassDeclaration classDeclaration) throws ParseException {
 
 597       jj_consume_token(LBRACE);
 
 598     } catch (ParseException e) {
 
 599     errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
 
 601     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 602     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 603     processParseException(e);
 
 607       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 616       ClassBodyDeclaration(classDeclaration);
 
 619       jj_consume_token(RBRACE);
 
 620     } catch (ParseException e) {
 
 621     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
 
 623     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 624     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 625     processParseException(e);
 
 630  * A class can contain only methods and fields.
 
 632   static final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException {
 
 633   final MethodDeclaration method;
 
 634   final FieldDeclaration field;
 
 635     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 637       method = MethodDeclaration();
 
 638                                 classDeclaration.addMethod(method);
 
 641       field = FieldDeclaration();
 
 642                                 classDeclaration.addField(field);
 
 646       jj_consume_token(-1);
 
 647       throw new ParseException();
 
 652  * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
 
 654   static final public FieldDeclaration FieldDeclaration() throws ParseException {
 
 655   VariableDeclaration variableDeclaration;
 
 656   final VariableDeclaration[] list;
 
 657   final ArrayList arrayList = new ArrayList();
 
 658   final int pos = SimpleCharStream.getPosition();
 
 659     jj_consume_token(VAR);
 
 660     variableDeclaration = VariableDeclarator();
 
 661    arrayList.add(variableDeclaration);
 
 662    outlineInfo.addVariable(new String(variableDeclaration.name));
 
 665       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 673       jj_consume_token(COMMA);
 
 674       variableDeclaration = VariableDeclarator();
 
 675        arrayList.add(variableDeclaration);
 
 676        outlineInfo.addVariable(new String(variableDeclaration.name));
 
 679       jj_consume_token(SEMICOLON);
 
 680     } catch (ParseException e) {
 
 681     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
 
 683     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 684     errorEnd     = SimpleCharStream.getPosition() + 1;
 
 685     processParseException(e);
 
 687    list = new VariableDeclaration[arrayList.size()];
 
 688    arrayList.toArray(list);
 
 689    {if (true) return new FieldDeclaration(list,
 
 691                                SimpleCharStream.getPosition(),
 
 693     throw new Error("Missing return statement in function");
 
 696   static final public VariableDeclaration VariableDeclarator() throws ParseException {
 
 697   final String varName;
 
 698   Expression initializer = null;
 
 699   final int pos = SimpleCharStream.getPosition();
 
 700     varName = VariableDeclaratorId();
 
 701     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 703       jj_consume_token(ASSIGN);
 
 705         initializer = VariableInitializer();
 
 706       } catch (ParseException e) {
 
 707       errorMessage = "Literal expression expected in variable initializer";
 
 709       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 710       errorEnd   = SimpleCharStream.getPosition() + 1;
 
 711       processParseException(e);
 
 718   if (initializer == null) {
 
 719     {if (true) return new VariableDeclaration(currentSegment,
 
 720                                   varName.toCharArray(),
 
 722                                   SimpleCharStream.getPosition());}
 
 724     {if (true) return new VariableDeclaration(currentSegment,
 
 725                                     varName.toCharArray(),
 
 728     throw new Error("Missing return statement in function");
 
 733  * @return the variable name (with suffix)
 
 735   static final public String VariableDeclaratorId() throws ParseException {
 
 737   Expression expression = null;
 
 738   final int pos = SimpleCharStream.getPosition();
 
 739   ConstantIdentifier ex;
 
 749        ex = new ConstantIdentifier(expr.toCharArray(),
 
 751                                    SimpleCharStream.getPosition());
 
 752         expression = VariableSuffix(ex);
 
 754      if (expression == null) {
 
 755        {if (true) return expr;}
 
 757      {if (true) return expression.toStringExpression();}
 
 758     } catch (ParseException e) {
 
 759     errorMessage = "'$' expected for variable identifier";
 
 761     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 762     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 765     throw new Error("Missing return statement in function");
 
 769  * Return a variablename without the $.
 
 770  * @return a variable name
 
 772   static final public String Variable() throws ParseException {
 
 773   final StringBuffer buff;
 
 774   Expression expression = null;
 
 777     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 779       token = jj_consume_token(DOLLAR_ID);
 
 780       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 782         jj_consume_token(LBRACE);
 
 783         expression = Expression();
 
 784         jj_consume_token(RBRACE);
 
 790     if (expression == null) {
 
 791       {if (true) return token.image.substring(1);}
 
 793     buff = new StringBuffer(token.image);
 
 795     buff.append(expression.toStringExpression());
 
 797     {if (true) return buff.toString();}
 
 800       jj_consume_token(DOLLAR);
 
 801       expr = VariableName();
 
 802    {if (true) return expr;}
 
 806       jj_consume_token(-1);
 
 807       throw new ParseException();
 
 809     throw new Error("Missing return statement in function");
 
 813  * A Variable name (without the $)
 
 814  * @return a variable name String
 
 816   static final public String VariableName() throws ParseException {
 
 817   final StringBuffer buff;
 
 819   Expression expression = null;
 
 821     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 823       jj_consume_token(LBRACE);
 
 824       expression = Expression();
 
 825       jj_consume_token(RBRACE);
 
 826    buff = new StringBuffer("{");
 
 827    buff.append(expression.toStringExpression());
 
 829    {if (true) return buff.toString();}
 
 832       token = jj_consume_token(IDENTIFIER);
 
 833       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 835         jj_consume_token(LBRACE);
 
 836         expression = Expression();
 
 837         jj_consume_token(RBRACE);
 
 843     if (expression == null) {
 
 844       {if (true) return token.image;}
 
 846     buff = new StringBuffer(token.image);
 
 848     buff.append(expression.toStringExpression());
 
 850     {if (true) return buff.toString();}
 
 853       jj_consume_token(DOLLAR);
 
 854       expr = VariableName();
 
 855     buff = new StringBuffer("$");
 
 857     {if (true) return buff.toString();}
 
 860       token = jj_consume_token(DOLLAR_ID);
 
 861                        {if (true) return token.image;}
 
 865       jj_consume_token(-1);
 
 866       throw new ParseException();
 
 868     throw new Error("Missing return statement in function");
 
 871   static final public Expression VariableInitializer() throws ParseException {
 
 872   final Expression expr;
 
 874   final int pos = SimpleCharStream.getPosition();
 
 875     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 879     case INTEGER_LITERAL:
 
 880     case FLOATING_POINT_LITERAL:
 
 883    {if (true) return expr;}
 
 886       jj_consume_token(MINUS);
 
 887       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 888       case INTEGER_LITERAL:
 
 889         token = jj_consume_token(INTEGER_LITERAL);
 
 891       case FLOATING_POINT_LITERAL:
 
 892         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 896         jj_consume_token(-1);
 
 897         throw new ParseException();
 
 899    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 901                                                         SimpleCharStream.getPosition()),
 
 906       jj_consume_token(PLUS);
 
 907       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 908       case INTEGER_LITERAL:
 
 909         token = jj_consume_token(INTEGER_LITERAL);
 
 911       case FLOATING_POINT_LITERAL:
 
 912         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 916         jj_consume_token(-1);
 
 917         throw new ParseException();
 
 919    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 921                                                         SimpleCharStream.getPosition()),
 
 926       expr = ArrayDeclarator();
 
 927    {if (true) return expr;}
 
 930       token = jj_consume_token(IDENTIFIER);
 
 931    {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());}
 
 935       jj_consume_token(-1);
 
 936       throw new ParseException();
 
 938     throw new Error("Missing return statement in function");
 
 941   static final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
 
 942 final Expression expr,expr2;
 
 944     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 946       jj_consume_token(ARRAYASSIGN);
 
 947       expr2 = Expression();
 
 948    {if (true) return new ArrayVariableDeclaration(expr,expr2);}
 
 954    {if (true) return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
 
 955     throw new Error("Missing return statement in function");
 
 958   static final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
 
 959   ArrayVariableDeclaration expr;
 
 960   final ArrayList list = new ArrayList();
 
 961     jj_consume_token(LPAREN);
 
 962     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 978     case INTEGER_LITERAL:
 
 979     case FLOATING_POINT_LITERAL:
 
 984       expr = ArrayVariable();
 
 993         jj_consume_token(COMMA);
 
 994         expr = ArrayVariable();
 
1002     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1004       jj_consume_token(COMMA);
 
1008       jj_la1[20] = jj_gen;
 
1011     jj_consume_token(RPAREN);
 
1012   final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
 
1014   {if (true) return vars;}
 
1015     throw new Error("Missing return statement in function");
 
1019  * A Method Declaration.
 
1020  * <b>function</b> MetodDeclarator() Block()
 
1022   static final public MethodDeclaration MethodDeclaration() throws ParseException {
 
1023   final MethodDeclaration functionDeclaration;
 
1025   final OutlineableWithChildren seg = currentSegment;
 
1026     jj_consume_token(FUNCTION);
 
1028       functionDeclaration = MethodDeclarator();
 
1029      outlineInfo.addVariable(new String(functionDeclaration.name));
 
1030     } catch (ParseException e) {
 
1031     if (errorMessage != null)  {if (true) throw e;}
 
1032     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1034     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1035     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1036     {if (true) throw e;}
 
1038    currentSegment = functionDeclaration;
 
1040    functionDeclaration.statements = block.statements;
 
1041    currentSegment = seg;
 
1042    {if (true) return functionDeclaration;}
 
1043     throw new Error("Missing return statement in function");
 
1047  * A MethodDeclarator.
 
1048  * [&] IDENTIFIER(parameters ...).
 
1049  * @return a function description for the outline
 
1051   static final public MethodDeclaration MethodDeclarator() throws ParseException {
 
1052   final Token identifier;
 
1053   Token reference = null;
 
1054   final Hashtable formalParameters;
 
1055   final int pos = SimpleCharStream.getPosition();
 
1056   char[] identifierChar = SYNTAX_ERROR_CHAR;
 
1057     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1059       reference = jj_consume_token(BIT_AND);
 
1062       jj_la1[21] = jj_gen;
 
1066       identifier = jj_consume_token(IDENTIFIER);
 
1067      identifierChar = identifier.image.toCharArray();
 
1068     } catch (ParseException e) {
 
1069     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1071     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1072     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1073     processParseException(e);
 
1075     formalParameters = FormalParameters();
 
1076    {if (true) return new MethodDeclaration(currentSegment,
 
1081                                 SimpleCharStream.getPosition());}
 
1082     throw new Error("Missing return statement in function");
 
1086  * FormalParameters follows method identifier.
 
1087  * (FormalParameter())
 
1089   static final public Hashtable FormalParameters() throws ParseException {
 
1090   VariableDeclaration var;
 
1091   final Hashtable parameters = new Hashtable();
 
1093       jj_consume_token(LPAREN);
 
1094     } catch (ParseException e) {
 
1095     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
 
1097     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1098     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1099     processParseException(e);
 
1101     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1105       var = FormalParameter();
 
1106                parameters.put(new String(var.name),var);
 
1109         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1114           jj_la1[22] = jj_gen;
 
1117         jj_consume_token(COMMA);
 
1118         var = FormalParameter();
 
1119                  parameters.put(new String(var.name),var);
 
1123       jj_la1[23] = jj_gen;
 
1127       jj_consume_token(RPAREN);
 
1128     } catch (ParseException e) {
 
1129     errorMessage = "')' expected";
 
1131     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1132     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1133     processParseException(e);
 
1135   {if (true) return parameters;}
 
1136     throw new Error("Missing return statement in function");
 
1140  * A formal parameter.
 
1141  * $varname[=value] (,$varname[=value])
 
1143   static final public VariableDeclaration FormalParameter() throws ParseException {
 
1144   final VariableDeclaration variableDeclaration;
 
1146     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1148       token = jj_consume_token(BIT_AND);
 
1151       jj_la1[24] = jj_gen;
 
1154     variableDeclaration = VariableDeclarator();
 
1155     if (token != null) {
 
1156       variableDeclaration.setReference(true);
 
1158     {if (true) return variableDeclaration;}
 
1159     throw new Error("Missing return statement in function");
 
1162   static final public ConstantIdentifier Type() throws ParseException {
 
1164     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1166       jj_consume_token(STRING);
 
1167                         pos = SimpleCharStream.getPosition();
 
1168                         {if (true) return new ConstantIdentifier(Types.STRING,pos,pos-6);}
 
1171       jj_consume_token(BOOL);
 
1172                         pos = SimpleCharStream.getPosition();
 
1173                         {if (true) return new ConstantIdentifier(Types.BOOL,pos,pos-4);}
 
1176       jj_consume_token(BOOLEAN);
 
1177                         pos = SimpleCharStream.getPosition();
 
1178                         {if (true) return new ConstantIdentifier(Types.BOOLEAN,pos,pos-7);}
 
1181       jj_consume_token(REAL);
 
1182                         pos = SimpleCharStream.getPosition();
 
1183                         {if (true) return new ConstantIdentifier(Types.REAL,pos,pos-4);}
 
1186       jj_consume_token(DOUBLE);
 
1187                         pos = SimpleCharStream.getPosition();
 
1188                         {if (true) return new ConstantIdentifier(Types.DOUBLE,pos,pos-5);}
 
1191       jj_consume_token(FLOAT);
 
1192                         pos = SimpleCharStream.getPosition();
 
1193                         {if (true) return new ConstantIdentifier(Types.FLOAT,pos,pos-5);}
 
1196       jj_consume_token(INT);
 
1197                         pos = SimpleCharStream.getPosition();
 
1198                         {if (true) return new ConstantIdentifier(Types.INT,pos,pos-3);}
 
1201       jj_consume_token(INTEGER);
 
1202                         pos = SimpleCharStream.getPosition();
 
1203                         {if (true) return new ConstantIdentifier(Types.INTEGER,pos,pos-7);}
 
1206       jj_consume_token(OBJECT);
 
1207                         pos = SimpleCharStream.getPosition();
 
1208                         {if (true) return new ConstantIdentifier(Types.OBJECT,pos,pos-6);}
 
1211       jj_la1[25] = jj_gen;
 
1212       jj_consume_token(-1);
 
1213       throw new ParseException();
 
1215     throw new Error("Missing return statement in function");
 
1218   static final public Expression Expression() throws ParseException {
 
1219   final Expression expr;
 
1220   Expression initializer = null;
 
1221   int assignOperator = -1;
 
1222   final int pos = SimpleCharStream.getPosition();
 
1223     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1237     case INTEGER_LITERAL:
 
1238     case FLOATING_POINT_LITERAL:
 
1239     case STRING_LITERAL:
 
1243       expr = ConditionalExpression();
 
1244       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1257       case RSIGNEDSHIFTASSIGN:
 
1258         assignOperator = AssignmentOperator();
 
1260           initializer = Expression();
 
1261         } catch (ParseException e) {
 
1262       if (errorMessage != null) {
 
1263         {if (true) throw e;}
 
1265       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1267       errorEnd   = SimpleCharStream.getPosition();
 
1268       {if (true) throw e;}
 
1272         jj_la1[26] = jj_gen;
 
1275     if (assignOperator == -1) {if (true) return expr;}
 
1276     {if (true) return new VarAssignation(expr,
 
1280                                SimpleCharStream.getPosition());}
 
1281   {if (true) return expr;}
 
1285       expr = ExpressionWBang();
 
1286                                   {if (true) return expr;}
 
1289       jj_la1[27] = jj_gen;
 
1290       jj_consume_token(-1);
 
1291       throw new ParseException();
 
1293     throw new Error("Missing return statement in function");
 
1296   static final public Expression ExpressionWBang() throws ParseException {
 
1297   final Expression expr;
 
1298   final int pos = SimpleCharStream.getPosition();
 
1299     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1301       jj_consume_token(BANG);
 
1302       expr = ExpressionWBang();
 
1303                                    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);}
 
1307       expr = ExpressionNoBang();
 
1308                              {if (true) return expr;}
 
1311       jj_la1[28] = jj_gen;
 
1312       jj_consume_token(-1);
 
1313       throw new ParseException();
 
1315     throw new Error("Missing return statement in function");
 
1318   static final public Expression ExpressionNoBang() throws ParseException {
 
1319   final Expression expr;
 
1320     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1322       expr = PrintExpression();
 
1323                                   {if (true) return expr;}
 
1326       expr = ListExpression();
 
1327                                   {if (true) return expr;}
 
1330       jj_la1[29] = jj_gen;
 
1331       jj_consume_token(-1);
 
1332       throw new ParseException();
 
1334     throw new Error("Missing return statement in function");
 
1338  * Any assignement operator.
 
1339  * @return the assignement operator id
 
1341   static final public int AssignmentOperator() throws ParseException {
 
1342     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1344       jj_consume_token(ASSIGN);
 
1345                         {if (true) return VarAssignation.EQUAL;}
 
1348       jj_consume_token(STARASSIGN);
 
1349                         {if (true) return VarAssignation.STAR_EQUAL;}
 
1352       jj_consume_token(SLASHASSIGN);
 
1353                         {if (true) return VarAssignation.SLASH_EQUAL;}
 
1356       jj_consume_token(REMASSIGN);
 
1357                         {if (true) return VarAssignation.REM_EQUAL;}
 
1360       jj_consume_token(PLUSASSIGN);
 
1361                         {if (true) return VarAssignation.PLUS_EQUAL;}
 
1364       jj_consume_token(MINUSASSIGN);
 
1365                         {if (true) return VarAssignation.MINUS_EQUAL;}
 
1368       jj_consume_token(LSHIFTASSIGN);
 
1369                         {if (true) return VarAssignation.LSHIFT_EQUAL;}
 
1371     case RSIGNEDSHIFTASSIGN:
 
1372       jj_consume_token(RSIGNEDSHIFTASSIGN);
 
1373                         {if (true) return VarAssignation.RSIGNEDSHIFT_EQUAL;}
 
1376       jj_consume_token(ANDASSIGN);
 
1377                         {if (true) return VarAssignation.AND_EQUAL;}
 
1380       jj_consume_token(XORASSIGN);
 
1381                         {if (true) return VarAssignation.XOR_EQUAL;}
 
1384       jj_consume_token(ORASSIGN);
 
1385                         {if (true) return VarAssignation.OR_EQUAL;}
 
1388       jj_consume_token(DOTASSIGN);
 
1389                         {if (true) return VarAssignation.DOT_EQUAL;}
 
1392       jj_consume_token(TILDEEQUAL);
 
1393                         {if (true) return VarAssignation.TILDE_EQUAL;}
 
1396       jj_la1[30] = jj_gen;
 
1397       jj_consume_token(-1);
 
1398       throw new ParseException();
 
1400     throw new Error("Missing return statement in function");
 
1403   static final public Expression ConditionalExpression() throws ParseException {
 
1404   final Expression expr;
 
1405   Expression expr2 = null;
 
1406   Expression expr3 = null;
 
1407     expr = ConditionalOrExpression();
 
1408     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1410       jj_consume_token(HOOK);
 
1411       expr2 = Expression();
 
1412       jj_consume_token(COLON);
 
1413       expr3 = ConditionalExpression();
 
1416       jj_la1[31] = jj_gen;
 
1419   if (expr3 == null) {
 
1420     {if (true) return expr;}
 
1422   {if (true) return new ConditionalExpression(expr,expr2,expr3);}
 
1423     throw new Error("Missing return statement in function");
 
1426   static final public Expression ConditionalOrExpression() throws ParseException {
 
1427   Expression expr,expr2;
 
1429     expr = ConditionalAndExpression();
 
1432       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1438         jj_la1[32] = jj_gen;
 
1441       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1443         jj_consume_token(OR_OR);
 
1444                  operator = OperatorIds.OR_OR;
 
1447         jj_consume_token(_ORL);
 
1448                  operator = OperatorIds.ORL;
 
1451         jj_la1[33] = jj_gen;
 
1452         jj_consume_token(-1);
 
1453         throw new ParseException();
 
1455       expr2 = ConditionalAndExpression();
 
1456       expr = new BinaryExpression(expr,expr2,operator);
 
1458    {if (true) return expr;}
 
1459     throw new Error("Missing return statement in function");
 
1462   static final public Expression ConditionalAndExpression() throws ParseException {
 
1463   Expression expr,expr2;
 
1465     expr = ConcatExpression();
 
1468       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1474         jj_la1[34] = jj_gen;
 
1477       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1479         jj_consume_token(AND_AND);
 
1480                 operator = OperatorIds.AND_AND;
 
1483         jj_consume_token(_ANDL);
 
1484                 operator = OperatorIds.ANDL;
 
1487         jj_la1[35] = jj_gen;
 
1488         jj_consume_token(-1);
 
1489         throw new ParseException();
 
1491       expr2 = ConcatExpression();
 
1492                                expr = new BinaryExpression(expr,expr2,operator);
 
1494    {if (true) return expr;}
 
1495     throw new Error("Missing return statement in function");
 
1498   static final public Expression ConcatExpression() throws ParseException {
 
1499   Expression expr,expr2;
 
1500     expr = InclusiveOrExpression();
 
1503       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1508         jj_la1[36] = jj_gen;
 
1511       jj_consume_token(DOT);
 
1512       expr2 = InclusiveOrExpression();
 
1513      expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
 
1515    {if (true) return expr;}
 
1516     throw new Error("Missing return statement in function");
 
1519   static final public Expression InclusiveOrExpression() throws ParseException {
 
1520   Expression expr,expr2;
 
1521     expr = ExclusiveOrExpression();
 
1524       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1529         jj_la1[37] = jj_gen;
 
1532       jj_consume_token(BIT_OR);
 
1533       expr2 = ExclusiveOrExpression();
 
1534     expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
 
1536    {if (true) return expr;}
 
1537     throw new Error("Missing return statement in function");
 
1540   static final public Expression ExclusiveOrExpression() throws ParseException {
 
1541   Expression expr,expr2;
 
1542     expr = AndExpression();
 
1545       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1550         jj_la1[38] = jj_gen;
 
1553       jj_consume_token(XOR);
 
1554       expr2 = AndExpression();
 
1555      expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
 
1557    {if (true) return expr;}
 
1558     throw new Error("Missing return statement in function");
 
1561   static final public Expression AndExpression() throws ParseException {
 
1562   Expression expr,expr2;
 
1563     expr = EqualityExpression();
 
1566       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1571         jj_la1[39] = jj_gen;
 
1574       jj_consume_token(BIT_AND);
 
1575       expr2 = EqualityExpression();
 
1576      expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
 
1578    {if (true) return expr;}
 
1579     throw new Error("Missing return statement in function");
 
1582   static final public Expression EqualityExpression() throws ParseException {
 
1583   Expression expr,expr2;
 
1585     expr = RelationalExpression();
 
1588       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1592       case BANGDOUBLEEQUAL:
 
1597         jj_la1[40] = jj_gen;
 
1600       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1602         jj_consume_token(EQUAL_EQUAL);
 
1603                           operator = OperatorIds.EQUAL_EQUAL;
 
1606         jj_consume_token(DIF);
 
1607                           operator = OperatorIds.DIF;
 
1610         jj_consume_token(NOT_EQUAL);
 
1611                           operator = OperatorIds.DIF;
 
1613       case BANGDOUBLEEQUAL:
 
1614         jj_consume_token(BANGDOUBLEEQUAL);
 
1615                           operator = OperatorIds.BANG_EQUAL_EQUAL;
 
1618         jj_consume_token(TRIPLEEQUAL);
 
1619                           operator = OperatorIds.EQUAL_EQUAL_EQUAL;
 
1622         jj_la1[41] = jj_gen;
 
1623         jj_consume_token(-1);
 
1624         throw new ParseException();
 
1627         expr2 = RelationalExpression();
 
1628       } catch (ParseException e) {
 
1629     if (errorMessage != null) {
 
1630       {if (true) throw e;}
 
1632     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1634     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1635     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1636     {if (true) throw e;}
 
1638     expr = new BinaryExpression(expr,expr2,operator);
 
1640    {if (true) return expr;}
 
1641     throw new Error("Missing return statement in function");
 
1644   static final public Expression RelationalExpression() throws ParseException {
 
1645   Expression expr,expr2;
 
1647     expr = ShiftExpression();
 
1650       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1658         jj_la1[42] = jj_gen;
 
1661       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1663         jj_consume_token(LT);
 
1664           operator = OperatorIds.LESS;
 
1667         jj_consume_token(GT);
 
1668           operator = OperatorIds.GREATER;
 
1671         jj_consume_token(LE);
 
1672           operator = OperatorIds.LESS_EQUAL;
 
1675         jj_consume_token(GE);
 
1676           operator = OperatorIds.GREATER_EQUAL;
 
1679         jj_la1[43] = jj_gen;
 
1680         jj_consume_token(-1);
 
1681         throw new ParseException();
 
1683       expr2 = ShiftExpression();
 
1684    expr = new BinaryExpression(expr,expr2,operator);
 
1686    {if (true) return expr;}
 
1687     throw new Error("Missing return statement in function");
 
1690   static final public Expression ShiftExpression() throws ParseException {
 
1691   Expression expr,expr2;
 
1693     expr = AdditiveExpression();
 
1696       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1699       case RUNSIGNEDSHIFT:
 
1703         jj_la1[44] = jj_gen;
 
1706       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1708         jj_consume_token(LSHIFT);
 
1709                       operator = OperatorIds.LEFT_SHIFT;
 
1712         jj_consume_token(RSIGNEDSHIFT);
 
1713                       operator = OperatorIds.RIGHT_SHIFT;
 
1715       case RUNSIGNEDSHIFT:
 
1716         jj_consume_token(RUNSIGNEDSHIFT);
 
1717                       operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
 
1720         jj_la1[45] = jj_gen;
 
1721         jj_consume_token(-1);
 
1722         throw new ParseException();
 
1724       expr2 = AdditiveExpression();
 
1725    expr = new BinaryExpression(expr,expr2,operator);
 
1727    {if (true) return expr;}
 
1728     throw new Error("Missing return statement in function");
 
1731   static final public Expression AdditiveExpression() throws ParseException {
 
1732   Expression expr,expr2;
 
1734     expr = MultiplicativeExpression();
 
1737       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1743         jj_la1[46] = jj_gen;
 
1746       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1748         jj_consume_token(PLUS);
 
1749               operator = OperatorIds.PLUS;
 
1752         jj_consume_token(MINUS);
 
1753               operator = OperatorIds.MINUS;
 
1756         jj_la1[47] = jj_gen;
 
1757         jj_consume_token(-1);
 
1758         throw new ParseException();
 
1760       expr2 = MultiplicativeExpression();
 
1761    expr = new BinaryExpression(expr,expr2,operator);
 
1763    {if (true) return expr;}
 
1764     throw new Error("Missing return statement in function");
 
1767   static final public Expression MultiplicativeExpression() throws ParseException {
 
1768   Expression expr,expr2;
 
1771       expr = UnaryExpression();
 
1772     } catch (ParseException e) {
 
1773     if (errorMessage != null) {if (true) throw e;}
 
1774     errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
 
1776     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1777     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1778     {if (true) throw e;}
 
1782       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1789         jj_la1[48] = jj_gen;
 
1792       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1794         jj_consume_token(STAR);
 
1795                    operator = OperatorIds.MULTIPLY;
 
1798         jj_consume_token(SLASH);
 
1799                    operator = OperatorIds.DIVIDE;
 
1802         jj_consume_token(REMAINDER);
 
1803                    operator = OperatorIds.REMAINDER;
 
1806         jj_la1[49] = jj_gen;
 
1807         jj_consume_token(-1);
 
1808         throw new ParseException();
 
1810       expr2 = UnaryExpression();
 
1811      expr = new BinaryExpression(expr,expr2,operator);
 
1813    {if (true) return expr;}
 
1814     throw new Error("Missing return statement in function");
 
1818  * An unary expression starting with @, & or nothing
 
1820   static final public Expression UnaryExpression() throws ParseException {
 
1821   final Expression expr;
 
1822   final int pos = SimpleCharStream.getPosition();
 
1823     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1825       jj_consume_token(BIT_AND);
 
1826       expr = UnaryExpressionNoPrefix();
 
1827    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
 
1841     case INTEGER_LITERAL:
 
1842     case FLOATING_POINT_LITERAL:
 
1843     case STRING_LITERAL:
 
1847       expr = AtUnaryExpression();
 
1848                               {if (true) return expr;}
 
1851       jj_la1[50] = jj_gen;
 
1852       jj_consume_token(-1);
 
1853       throw new ParseException();
 
1855     throw new Error("Missing return statement in function");
 
1858   static final public Expression AtUnaryExpression() throws ParseException {
 
1859   final Expression expr;
 
1860   final int pos = SimpleCharStream.getPosition();
 
1861     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1863       jj_consume_token(AT);
 
1864       expr = AtUnaryExpression();
 
1865    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);}
 
1878     case INTEGER_LITERAL:
 
1879     case FLOATING_POINT_LITERAL:
 
1880     case STRING_LITERAL:
 
1884       expr = UnaryExpressionNoPrefix();
 
1885    {if (true) return expr;}
 
1888       jj_la1[51] = jj_gen;
 
1889       jj_consume_token(-1);
 
1890       throw new ParseException();
 
1892     throw new Error("Missing return statement in function");
 
1895   static final public Expression UnaryExpressionNoPrefix() throws ParseException {
 
1896   final Expression expr;
 
1898   final int pos = SimpleCharStream.getPosition();
 
1899     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1902       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1904         jj_consume_token(PLUS);
 
1905               operator = OperatorIds.PLUS;
 
1908         jj_consume_token(MINUS);
 
1909               operator = OperatorIds.MINUS;
 
1912         jj_la1[52] = jj_gen;
 
1913         jj_consume_token(-1);
 
1914         throw new ParseException();
 
1916       expr = UnaryExpression();
 
1917    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
1921       expr = PreIncDecExpression();
 
1922    {if (true) return expr;}
 
1931     case INTEGER_LITERAL:
 
1932     case FLOATING_POINT_LITERAL:
 
1933     case STRING_LITERAL:
 
1937       expr = UnaryExpressionNotPlusMinus();
 
1938    {if (true) return expr;}
 
1941       jj_la1[53] = jj_gen;
 
1942       jj_consume_token(-1);
 
1943       throw new ParseException();
 
1945     throw new Error("Missing return statement in function");
 
1948   static final public Expression PreIncDecExpression() throws ParseException {
 
1949 final Expression expr;
 
1951   final int pos = SimpleCharStream.getPosition();
 
1952     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1954       jj_consume_token(PLUS_PLUS);
 
1955                   operator = OperatorIds.PLUS_PLUS;
 
1958       jj_consume_token(MINUS_MINUS);
 
1959                     operator = OperatorIds.MINUS_MINUS;
 
1962       jj_la1[54] = jj_gen;
 
1963       jj_consume_token(-1);
 
1964       throw new ParseException();
 
1966     expr = PrimaryExpression();
 
1967    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
1968     throw new Error("Missing return statement in function");
 
1971   static final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
 
1972   final Expression expr;
 
1973   final int pos = SimpleCharStream.getPosition();
 
1974     if (jj_2_3(2147483647)) {
 
1975       expr = CastExpression();
 
1976                                    {if (true) return expr;}
 
1978       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1980         jj_consume_token(BANG);
 
1981         expr = UnaryExpression();
 
1982                                    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);}
 
1989         expr = PostfixExpression();
 
1990                                    {if (true) return expr;}
 
1995       case INTEGER_LITERAL:
 
1996       case FLOATING_POINT_LITERAL:
 
1997       case STRING_LITERAL:
 
1999                                    {if (true) return expr;}
 
2002         jj_consume_token(LPAREN);
 
2003         expr = Expression();
 
2005           jj_consume_token(RPAREN);
 
2006         } catch (ParseException e) {
 
2007     errorMessage = "')' expected";
 
2009     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2010     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2011     {if (true) throw e;}
 
2013    {if (true) return expr;}
 
2016         jj_la1[55] = jj_gen;
 
2017         jj_consume_token(-1);
 
2018         throw new ParseException();
 
2021     throw new Error("Missing return statement in function");
 
2024   static final public CastExpression CastExpression() throws ParseException {
 
2025 final ConstantIdentifier type;
 
2026 final Expression expr;
 
2027 final int pos = SimpleCharStream.getPosition();
 
2028     jj_consume_token(LPAREN);
 
2029     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2042       jj_consume_token(ARRAY);
 
2043              type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition());
 
2046       jj_la1[56] = jj_gen;
 
2047       jj_consume_token(-1);
 
2048       throw new ParseException();
 
2050     jj_consume_token(RPAREN);
 
2051     expr = UnaryExpression();
 
2052    {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());}
 
2053     throw new Error("Missing return statement in function");
 
2056   static final public Expression PostfixExpression() throws ParseException {
 
2057   final Expression expr;
 
2059   final int pos = SimpleCharStream.getPosition();
 
2060     expr = PrimaryExpression();
 
2061     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2064       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2066         jj_consume_token(PLUS_PLUS);
 
2067                  operator = OperatorIds.PLUS_PLUS;
 
2070         jj_consume_token(MINUS_MINUS);
 
2071                    operator = OperatorIds.MINUS_MINUS;
 
2074         jj_la1[57] = jj_gen;
 
2075         jj_consume_token(-1);
 
2076         throw new ParseException();
 
2080       jj_la1[58] = jj_gen;
 
2083     if (operator == -1) {
 
2084       {if (true) return expr;}
 
2086     {if (true) return new PostfixedUnaryExpression(expr,operator,pos);}
 
2087     throw new Error("Missing return statement in function");
 
2090   static final public Expression PrimaryExpression() throws ParseException {
 
2092     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2097       expr = PrimaryPrefix();
 
2100         if (jj_2_4(2147483647)) {
 
2105         expr = PrimarySuffix(expr);
 
2107    {if (true) return expr;}
 
2110       expr = ArrayDeclarator();
 
2111    {if (true) return expr;}
 
2114       jj_la1[59] = jj_gen;
 
2115       jj_consume_token(-1);
 
2116       throw new ParseException();
 
2118     throw new Error("Missing return statement in function");
 
2121   static final public Expression PrimaryPrefix() throws ParseException {
 
2122   final Expression expr;
 
2125   final int pos = SimpleCharStream.getPosition();
 
2126     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2128       token = jj_consume_token(IDENTIFIER);
 
2129                                   {if (true) return new ConstantIdentifier(token.image.toCharArray(),
 
2131                                                                 SimpleCharStream.getPosition());}
 
2134       jj_consume_token(NEW);
 
2135       expr = ClassIdentifier();
 
2136                                   {if (true) return new PrefixedUnaryExpression(expr,
 
2142       var = VariableDeclaratorId();
 
2143                                  {if (true) return new VariableDeclaration(currentSegment,
 
2146                                                                 SimpleCharStream.getPosition());}
 
2149       jj_la1[60] = jj_gen;
 
2150       jj_consume_token(-1);
 
2151       throw new ParseException();
 
2153     throw new Error("Missing return statement in function");
 
2156   static final public AbstractSuffixExpression PrimarySuffix(final Expression prefix) throws ParseException {
 
2157   final AbstractSuffixExpression suffix;
 
2158   final Expression expr;
 
2159     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2161       suffix = Arguments(prefix);
 
2162                                    {if (true) return suffix;}
 
2166       suffix = VariableSuffix(prefix);
 
2167                                    {if (true) return suffix;}
 
2169     case STATICCLASSACCESS:
 
2170       jj_consume_token(STATICCLASSACCESS);
 
2171       expr = ClassIdentifier();
 
2172    suffix = new ClassAccess(prefix,
 
2174                           ClassAccess.STATIC);
 
2175    {if (true) return suffix;}
 
2178       jj_la1[61] = jj_gen;
 
2179       jj_consume_token(-1);
 
2180       throw new ParseException();
 
2182     throw new Error("Missing return statement in function");
 
2186  * An array declarator.
 
2190   static final public ArrayInitializer ArrayDeclarator() throws ParseException {
 
2191   final ArrayVariableDeclaration[] vars;
 
2192   final int pos = SimpleCharStream.getPosition();
 
2193     jj_consume_token(ARRAY);
 
2194     vars = ArrayInitializer();
 
2195    {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());}
 
2196     throw new Error("Missing return statement in function");
 
2199   static final public PrefixedUnaryExpression classInstantiation() throws ParseException {
 
2201   final StringBuffer buff;
 
2202   final int pos = SimpleCharStream.getPosition();
 
2203     jj_consume_token(NEW);
 
2204     expr = ClassIdentifier();
 
2205     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2211      buff = new StringBuffer(expr.toStringExpression());
 
2212       expr = PrimaryExpression();
 
2213      buff.append(expr.toStringExpression());
 
2214     expr = new ConstantIdentifier(buff.toString().toCharArray(),
 
2216                                   SimpleCharStream.getPosition());
 
2219       jj_la1[62] = jj_gen;
 
2222    {if (true) return new PrefixedUnaryExpression(expr,
 
2225     throw new Error("Missing return statement in function");
 
2228   static final public ConstantIdentifier ClassIdentifier() throws ParseException {
 
2231   final int pos = SimpleCharStream.getPosition();
 
2232   final ConstantIdentifier type;
 
2233     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2235       token = jj_consume_token(IDENTIFIER);
 
2236                                  {if (true) return new ConstantIdentifier(token.image.toCharArray(),
 
2238                                                                SimpleCharStream.getPosition());}
 
2250                           {if (true) return type;}
 
2254       expr = VariableDeclaratorId();
 
2255                                  {if (true) return new ConstantIdentifier(expr.toCharArray(),
 
2257                                                                SimpleCharStream.getPosition());}
 
2260       jj_la1[63] = jj_gen;
 
2261       jj_consume_token(-1);
 
2262       throw new ParseException();
 
2264     throw new Error("Missing return statement in function");
 
2267   static final public AbstractSuffixExpression VariableSuffix(final Expression prefix) throws ParseException {
 
2269   final int pos = SimpleCharStream.getPosition();
 
2270   Expression expression = null;
 
2271     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2273       jj_consume_token(CLASSACCESS);
 
2275         expr = VariableName();
 
2276       } catch (ParseException e) {
 
2277     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
 
2279     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2280     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2281     {if (true) throw e;}
 
2283    {if (true) return new ClassAccess(prefix,
 
2284                           new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()),
 
2285                           ClassAccess.NORMAL);}
 
2288       jj_consume_token(LBRACKET);
 
2289       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2314       case INTEGER_LITERAL:
 
2315       case FLOATING_POINT_LITERAL:
 
2316       case STRING_LITERAL:
 
2320         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2336         case INTEGER_LITERAL:
 
2337         case FLOATING_POINT_LITERAL:
 
2338         case STRING_LITERAL:
 
2342           expression = Expression();
 
2353           expression = Type();
 
2356           jj_la1[64] = jj_gen;
 
2357           jj_consume_token(-1);
 
2358           throw new ParseException();
 
2362         jj_la1[65] = jj_gen;
 
2366         jj_consume_token(RBRACKET);
 
2367       } catch (ParseException e) {
 
2368     errorMessage = "']' expected";
 
2370     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2371     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2372     {if (true) throw e;}
 
2374    {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());}
 
2377       jj_la1[66] = jj_gen;
 
2378       jj_consume_token(-1);
 
2379       throw new ParseException();
 
2381     throw new Error("Missing return statement in function");
 
2384   static final public Literal Literal() throws ParseException {
 
2387     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2388     case INTEGER_LITERAL:
 
2389       token = jj_consume_token(INTEGER_LITERAL);
 
2390                                     pos = SimpleCharStream.getPosition();
 
2391                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2393     case FLOATING_POINT_LITERAL:
 
2394       token = jj_consume_token(FLOATING_POINT_LITERAL);
 
2395                                     pos = SimpleCharStream.getPosition();
 
2396                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2398     case STRING_LITERAL:
 
2399       token = jj_consume_token(STRING_LITERAL);
 
2400                                     pos = SimpleCharStream.getPosition();
 
2401                                     {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length());}
 
2404       jj_consume_token(TRUE);
 
2405                                     pos = SimpleCharStream.getPosition();
 
2406                                     {if (true) return new TrueLiteral(pos-4,pos);}
 
2409       jj_consume_token(FALSE);
 
2410                                     pos = SimpleCharStream.getPosition();
 
2411                                     {if (true) return new FalseLiteral(pos-4,pos);}
 
2414       jj_consume_token(NULL);
 
2415                                     pos = SimpleCharStream.getPosition();
 
2416                                     {if (true) return new NullLiteral(pos-4,pos);}
 
2419       jj_la1[67] = jj_gen;
 
2420       jj_consume_token(-1);
 
2421       throw new ParseException();
 
2423     throw new Error("Missing return statement in function");
 
2426   static final public FunctionCall Arguments(final Expression func) throws ParseException {
 
2427 Expression[] args = null;
 
2428     jj_consume_token(LPAREN);
 
2429     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2445     case INTEGER_LITERAL:
 
2446     case FLOATING_POINT_LITERAL:
 
2447     case STRING_LITERAL:
 
2451       args = ArgumentList();
 
2454       jj_la1[68] = jj_gen;
 
2458       jj_consume_token(RPAREN);
 
2459     } catch (ParseException e) {
 
2460     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
 
2462     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2463     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2464     {if (true) throw e;}
 
2466    {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());}
 
2467     throw new Error("Missing return statement in function");
 
2471  * An argument list is a list of arguments separated by comma :
 
2472  * argumentDeclaration() (, argumentDeclaration)*
 
2473  * @return an array of arguments
 
2475   static final public Expression[] ArgumentList() throws ParseException {
 
2477 final ArrayList list = new ArrayList();
 
2482       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2487         jj_la1[69] = jj_gen;
 
2490       jj_consume_token(COMMA);
 
2494       } catch (ParseException e) {
 
2495         errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
 
2497         errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2498         errorEnd     = SimpleCharStream.getPosition() + 1;
 
2499         {if (true) throw e;}
 
2502    final Expression[] arguments = new Expression[list.size()];
 
2503    list.toArray(arguments);
 
2504    {if (true) return arguments;}
 
2505     throw new Error("Missing return statement in function");
 
2509  * A Statement without break.
 
2511   static final public Statement StatementNoBreak() throws ParseException {
 
2512   final Statement statement;
 
2515       statement = Expression();
 
2517         jj_consume_token(SEMICOLON);
 
2518       } catch (ParseException e) {
 
2519     if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
 
2520       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2522       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2523       errorEnd   = SimpleCharStream.getPosition() + 1;
 
2524       {if (true) throw e;}
 
2527    {if (true) return statement;}
 
2528     } else if (jj_2_6(2)) {
 
2529       statement = LabeledStatement();
 
2530                                   {if (true) return statement;}
 
2532       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2534         statement = Block();
 
2535                                   {if (true) return statement;}
 
2538         statement = EmptyStatement();
 
2539                                   {if (true) return statement;}
 
2548         statement = StatementExpression();
 
2550           jj_consume_token(SEMICOLON);
 
2551         } catch (ParseException e) {
 
2552     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2554     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2555     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2556     {if (true) throw e;}
 
2558    {if (true) return statement;}
 
2561         statement = SwitchStatement();
 
2562                                          {if (true) return statement;}
 
2565         statement = IfStatement();
 
2566                                          {if (true) return statement;}
 
2569         statement = WhileStatement();
 
2570                                          {if (true) return statement;}
 
2573         statement = DoStatement();
 
2574                                          {if (true) return statement;}
 
2577         statement = ForStatement();
 
2578                                          {if (true) return statement;}
 
2581         statement = ForeachStatement();
 
2582                                          {if (true) return statement;}
 
2585         statement = ContinueStatement();
 
2586                                          {if (true) return statement;}
 
2589         statement = ReturnStatement();
 
2590                                          {if (true) return statement;}
 
2593         statement = EchoStatement();
 
2594                                          {if (true) return statement;}
 
2601         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2603           token = jj_consume_token(AT);
 
2606           jj_la1[70] = jj_gen;
 
2609         statement = IncludeStatement();
 
2610    if (token != null) {
 
2611     ((InclusionStatement)statement).silent = true;
 
2613   {if (true) return statement;}
 
2616         statement = StaticStatement();
 
2617                                          {if (true) return statement;}
 
2620         statement = GlobalStatement();
 
2621                                          {if (true) return statement;}
 
2624         statement = defineStatement();
 
2625                                          currentSegment.add((Outlineable)statement);{if (true) return statement;}
 
2628         jj_la1[71] = jj_gen;
 
2629         jj_consume_token(-1);
 
2630         throw new ParseException();
 
2633     throw new Error("Missing return statement in function");
 
2636   static final public Define defineStatement() throws ParseException {
 
2637   final int start = SimpleCharStream.getPosition();
 
2638   Expression defineName,defineValue;
 
2639     jj_consume_token(DEFINE);
 
2641       jj_consume_token(LPAREN);
 
2642     } catch (ParseException e) {
 
2643     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2645     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2646     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2647     processParseException(e);
 
2650       defineName = Expression();
 
2651     } catch (ParseException e) {
 
2652     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2654     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2655     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2656     {if (true) throw e;}
 
2659       jj_consume_token(COMMA);
 
2660     } catch (ParseException e) {
 
2661     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2663     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2664     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2665     processParseException(e);
 
2668       defineValue = Expression();
 
2669     } catch (ParseException e) {
 
2670     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2672     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2673     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2674     {if (true) throw e;}
 
2677       jj_consume_token(RPAREN);
 
2678     } catch (ParseException e) {
 
2679     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
2681     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2682     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2683     processParseException(e);
 
2685    {if (true) return new Define(currentSegment,
 
2689                      SimpleCharStream.getPosition());}
 
2690     throw new Error("Missing return statement in function");
 
2694  * A Normal statement.
 
2696   static final public Statement Statement() throws ParseException {
 
2697   final Statement statement;
 
2698     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2730     case INTEGER_LITERAL:
 
2731     case FLOATING_POINT_LITERAL:
 
2732     case STRING_LITERAL:
 
2738       statement = StatementNoBreak();
 
2739                                   {if (true) return statement;}
 
2742       statement = BreakStatement();
 
2743                                   {if (true) return statement;}
 
2746       jj_la1[72] = jj_gen;
 
2747       jj_consume_token(-1);
 
2748       throw new ParseException();
 
2750     throw new Error("Missing return statement in function");
 
2754  * An html block inside a php syntax.
 
2756   static final public HTMLBlock htmlBlock() throws ParseException {
 
2757   final int startIndex = nodePtr;
 
2758   final AstNode[] blockNodes;
 
2760     jj_consume_token(PHPEND);
 
2763       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2768         jj_la1[73] = jj_gen;
 
2774       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2776         jj_consume_token(PHPSTARTLONG);
 
2779         jj_consume_token(PHPSTARTSHORT);
 
2782         jj_la1[74] = jj_gen;
 
2783         jj_consume_token(-1);
 
2784         throw new ParseException();
 
2786     } catch (ParseException e) {
 
2787     errorMessage = "unexpected end of file , '<?php' expected";
 
2789     errorStart   = SimpleCharStream.getPosition();
 
2790     errorEnd     = SimpleCharStream.getPosition();
 
2791     {if (true) throw e;}
 
2793   nbNodes    = nodePtr - startIndex;
 
2794   blockNodes = new AstNode[nbNodes];
 
2795   System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
 
2796   nodePtr = startIndex;
 
2797   {if (true) return new HTMLBlock(blockNodes);}
 
2798     throw new Error("Missing return statement in function");
 
2802  * An include statement. It's "include" an expression;
 
2804   static final public InclusionStatement IncludeStatement() throws ParseException {
 
2805   final Expression expr;
 
2807   final int pos = SimpleCharStream.getPosition();
 
2808   final InclusionStatement inclusionStatement;
 
2809     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2811       jj_consume_token(REQUIRE);
 
2812                          keyword = InclusionStatement.REQUIRE;
 
2815       jj_consume_token(REQUIRE_ONCE);
 
2816                          keyword = InclusionStatement.REQUIRE_ONCE;
 
2819       jj_consume_token(INCLUDE);
 
2820                          keyword = InclusionStatement.INCLUDE;
 
2823       jj_consume_token(INCLUDE_ONCE);
 
2824                          keyword = InclusionStatement.INCLUDE_ONCE;
 
2827       jj_la1[75] = jj_gen;
 
2828       jj_consume_token(-1);
 
2829       throw new ParseException();
 
2832       expr = Expression();
 
2833     } catch (ParseException e) {
 
2834     if (errorMessage != null) {
 
2835       {if (true) throw e;}
 
2837     errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
 
2839     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2840     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2841     {if (true) throw e;}
 
2843    inclusionStatement = new InclusionStatement(currentSegment,
 
2847    currentSegment.add(inclusionStatement);
 
2849       jj_consume_token(SEMICOLON);
 
2850     } catch (ParseException e) {
 
2851     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2853     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2854     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2855     {if (true) throw e;}
 
2857    {if (true) return inclusionStatement;}
 
2858     throw new Error("Missing return statement in function");
 
2861   static final public PrintExpression PrintExpression() throws ParseException {
 
2862   final Expression expr;
 
2863   final int pos = SimpleCharStream.getPosition();
 
2864     jj_consume_token(PRINT);
 
2865     expr = Expression();
 
2866                                {if (true) return new PrintExpression(expr,pos,SimpleCharStream.getPosition());}
 
2867     throw new Error("Missing return statement in function");
 
2870   static final public ListExpression ListExpression() throws ParseException {
 
2872   final Expression expression;
 
2873   final ArrayList list = new ArrayList();
 
2874   final int pos = SimpleCharStream.getPosition();
 
2875     jj_consume_token(LIST);
 
2877       jj_consume_token(LPAREN);
 
2878     } catch (ParseException e) {
 
2879     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2881     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2882     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2883     {if (true) throw e;}
 
2885     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2888       expr = VariableDeclaratorId();
 
2892       jj_la1[76] = jj_gen;
 
2895    if (expr == null) list.add(null);
 
2898       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2903         jj_la1[77] = jj_gen;
 
2907         jj_consume_token(COMMA);
 
2908       } catch (ParseException e) {
 
2909       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2911       errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2912       errorEnd     = SimpleCharStream.getPosition() + 1;
 
2913       {if (true) throw e;}
 
2915       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2918         expr = VariableDeclaratorId();
 
2922         jj_la1[78] = jj_gen;
 
2927       jj_consume_token(RPAREN);
 
2928     } catch (ParseException e) {
 
2929     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
2931     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2932     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2933     {if (true) throw e;}
 
2935     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2937       jj_consume_token(ASSIGN);
 
2938       expression = Expression();
 
2939     final String[] strings = new String[list.size()];
 
2940     list.toArray(strings);
 
2941     {if (true) return new ListExpression(strings,
 
2944                               SimpleCharStream.getPosition());}
 
2947       jj_la1[79] = jj_gen;
 
2950     final String[] strings = new String[list.size()];
 
2951     list.toArray(strings);
 
2952     {if (true) return new ListExpression(strings,pos,SimpleCharStream.getPosition());}
 
2953     throw new Error("Missing return statement in function");
 
2957  * An echo statement.
 
2958  * echo anyexpression (, otherexpression)*
 
2960   static final public EchoStatement EchoStatement() throws ParseException {
 
2961   final ArrayList expressions = new ArrayList();
 
2963   final int pos = SimpleCharStream.getPosition();
 
2964     jj_consume_token(ECHO);
 
2965     expr = Expression();
 
2966    expressions.add(expr);
 
2969       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2974         jj_la1[80] = jj_gen;
 
2977       jj_consume_token(COMMA);
 
2978       expr = Expression();
 
2979      expressions.add(expr);
 
2982       jj_consume_token(SEMICOLON);
 
2983     } catch (ParseException e) {
 
2984     if (e.currentToken.next.kind != 4) {
 
2985       errorMessage = "';' expected after 'echo' statement";
 
2987       errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2988       errorEnd     = SimpleCharStream.getPosition() + 1;
 
2989       {if (true) throw e;}
 
2992    final Expression[] exprs = new Expression[expressions.size()];
 
2993    expressions.toArray(exprs);
 
2994    {if (true) return new EchoStatement(exprs,pos);}
 
2995     throw new Error("Missing return statement in function");
 
2998   static final public GlobalStatement GlobalStatement() throws ParseException {
 
2999    final int pos = SimpleCharStream.getPosition();
 
3001    final ArrayList vars = new ArrayList();
 
3002    final GlobalStatement global;
 
3003     jj_consume_token(GLOBAL);
 
3004     expr = VariableDeclaratorId();
 
3008       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3013         jj_la1[81] = jj_gen;
 
3016       jj_consume_token(COMMA);
 
3017       expr = VariableDeclaratorId();
 
3021       jj_consume_token(SEMICOLON);
 
3022     final String[] strings = new String[vars.size()];
 
3023     vars.toArray(strings);
 
3024     global = new GlobalStatement(currentSegment,
 
3027                                  SimpleCharStream.getPosition());
 
3028     currentSegment.add(global);
 
3029     {if (true) return global;}
 
3030     } catch (ParseException e) {
 
3031     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3033     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3034     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3035     {if (true) throw e;}
 
3037     throw new Error("Missing return statement in function");
 
3040   static final public StaticStatement StaticStatement() throws ParseException {
 
3041   final int pos = SimpleCharStream.getPosition();
 
3042   final ArrayList vars = new ArrayList();
 
3043   VariableDeclaration expr;
 
3044     jj_consume_token(STATIC);
 
3045     expr = VariableDeclarator();
 
3046                                         vars.add(new String(expr.name));
 
3049       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3054         jj_la1[82] = jj_gen;
 
3057       jj_consume_token(COMMA);
 
3058       expr = VariableDeclarator();
 
3059                                         vars.add(new String(expr.name));
 
3062       jj_consume_token(SEMICOLON);
 
3063     final String[] strings = new String[vars.size()];
 
3064     vars.toArray(strings);
 
3065     {if (true) return new StaticStatement(strings,
 
3067                                 SimpleCharStream.getPosition());}
 
3068     } catch (ParseException e) {
 
3069     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3071     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3072     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3073     {if (true) throw e;}
 
3075     throw new Error("Missing return statement in function");
 
3078   static final public LabeledStatement LabeledStatement() throws ParseException {
 
3079   final int pos = SimpleCharStream.getPosition();
 
3081   final Statement statement;
 
3082     label = jj_consume_token(IDENTIFIER);
 
3083     jj_consume_token(COLON);
 
3084     statement = Statement();
 
3085    {if (true) return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());}
 
3086     throw new Error("Missing return statement in function");
 
3096   static final public Block Block() throws ParseException {
 
3097   final int pos = SimpleCharStream.getPosition();
 
3098   final ArrayList list = new ArrayList();
 
3099   Statement statement;
 
3101       jj_consume_token(LBRACE);
 
3102     } catch (ParseException e) {
 
3103     errorMessage = "'{' expected";
 
3105     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3106     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3107     {if (true) throw e;}
 
3111       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3147       case INTEGER_LITERAL:
 
3148       case FLOATING_POINT_LITERAL:
 
3149       case STRING_LITERAL:
 
3158         jj_la1[83] = jj_gen;
 
3161       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3196       case INTEGER_LITERAL:
 
3197       case FLOATING_POINT_LITERAL:
 
3198       case STRING_LITERAL:
 
3204         statement = BlockStatement();
 
3205                                   list.add(statement);
 
3208         statement = htmlBlock();
 
3209                                   list.add(statement);
 
3212         jj_la1[84] = jj_gen;
 
3213         jj_consume_token(-1);
 
3214         throw new ParseException();
 
3218       jj_consume_token(RBRACE);
 
3219     } catch (ParseException e) {
 
3220     errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
 
3222     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3223     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3224     {if (true) throw e;}
 
3226   final Statement[] statements = new Statement[list.size()];
 
3227   list.toArray(statements);
 
3228   {if (true) return new Block(statements,pos,SimpleCharStream.getPosition());}
 
3229     throw new Error("Missing return statement in function");
 
3232   static final public Statement BlockStatement() throws ParseException {
 
3233   final Statement statement;
 
3234     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3267     case INTEGER_LITERAL:
 
3268     case FLOATING_POINT_LITERAL:
 
3269     case STRING_LITERAL:
 
3275       statement = Statement();
 
3276                                    if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3277                                    {if (true) return statement;}
 
3280       statement = ClassDeclaration();
 
3281                                    {if (true) return statement;}
 
3284       statement = MethodDeclaration();
 
3285                                    if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3286                                    currentSegment.add((MethodDeclaration) statement);
 
3287                                    {if (true) return statement;}
 
3290       jj_la1[85] = jj_gen;
 
3291       jj_consume_token(-1);
 
3292       throw new ParseException();
 
3294     throw new Error("Missing return statement in function");
 
3298  * A Block statement that will not contain any 'break'
 
3300   static final public Statement BlockStatementNoBreak() throws ParseException {
 
3301   final Statement statement;
 
3302     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3334     case INTEGER_LITERAL:
 
3335     case FLOATING_POINT_LITERAL:
 
3336     case STRING_LITERAL:
 
3342       statement = StatementNoBreak();
 
3343                                    {if (true) return statement;}
 
3346       statement = ClassDeclaration();
 
3347                                    {if (true) return statement;}
 
3350       statement = MethodDeclaration();
 
3351                                    currentSegment.add((MethodDeclaration) statement);
 
3352                                    {if (true) return statement;}
 
3355       jj_la1[86] = jj_gen;
 
3356       jj_consume_token(-1);
 
3357       throw new ParseException();
 
3359     throw new Error("Missing return statement in function");
 
3362   static final public VariableDeclaration[] LocalVariableDeclaration() throws ParseException {
 
3363   final ArrayList list = new ArrayList();
 
3364   VariableDeclaration var;
 
3365     var = LocalVariableDeclarator();
 
3369       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3374         jj_la1[87] = jj_gen;
 
3377       jj_consume_token(COMMA);
 
3378       var = LocalVariableDeclarator();
 
3381     final VariableDeclaration[] vars = new VariableDeclaration[list.size()];
 
3383   {if (true) return vars;}
 
3384     throw new Error("Missing return statement in function");
 
3387   static final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
 
3388   final String varName;
 
3389   Expression initializer = null;
 
3390   final int pos = SimpleCharStream.getPosition();
 
3391     varName = VariableDeclaratorId();
 
3392     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3394       jj_consume_token(ASSIGN);
 
3395       initializer = Expression();
 
3398       jj_la1[88] = jj_gen;
 
3401    if (initializer == null) {
 
3402     {if (true) return new VariableDeclaration(currentSegment,
 
3403                                   varName.toCharArray(),
 
3405                                   SimpleCharStream.getPosition());}
 
3407     {if (true) return new VariableDeclaration(currentSegment,
 
3408                                     varName.toCharArray(),
 
3411     throw new Error("Missing return statement in function");
 
3414   static final public EmptyStatement EmptyStatement() throws ParseException {
 
3416     jj_consume_token(SEMICOLON);
 
3417    pos = SimpleCharStream.getPosition();
 
3418    {if (true) return new EmptyStatement(pos-1,pos);}
 
3419     throw new Error("Missing return statement in function");
 
3422   static final public Expression StatementExpression() throws ParseException {
 
3423   final Expression expr,expr2;
 
3425     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3428       expr = PreIncDecExpression();
 
3429                                 {if (true) return expr;}
 
3436       expr = PrimaryExpression();
 
3437       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3452       case RSIGNEDSHIFTASSIGN:
 
3453         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3455           jj_consume_token(PLUS_PLUS);
 
3456                  {if (true) return new PostfixedUnaryExpression(expr,
 
3457                                                 OperatorIds.PLUS_PLUS,
 
3458                                                 SimpleCharStream.getPosition());}
 
3461           jj_consume_token(MINUS_MINUS);
 
3462                    {if (true) return new PostfixedUnaryExpression(expr,
 
3463                                                 OperatorIds.MINUS_MINUS,
 
3464                                                 SimpleCharStream.getPosition());}
 
3478         case RSIGNEDSHIFTASSIGN:
 
3479           operator = AssignmentOperator();
 
3480           expr2 = Expression();
 
3481      {if (true) return new BinaryExpression(expr,expr2,operator);}
 
3484           jj_la1[89] = jj_gen;
 
3485           jj_consume_token(-1);
 
3486           throw new ParseException();
 
3490         jj_la1[90] = jj_gen;
 
3493    {if (true) return expr;}
 
3496       jj_la1[91] = jj_gen;
 
3497       jj_consume_token(-1);
 
3498       throw new ParseException();
 
3500     throw new Error("Missing return statement in function");
 
3503   static final public SwitchStatement SwitchStatement() throws ParseException {
 
3504   final Expression variable;
 
3505   final AbstractCase[] cases;
 
3506   final int pos = SimpleCharStream.getPosition();
 
3507     jj_consume_token(SWITCH);
 
3509       jj_consume_token(LPAREN);
 
3510     } catch (ParseException e) {
 
3511     errorMessage = "'(' expected after 'switch'";
 
3513     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3514     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3515     {if (true) throw e;}
 
3518       variable = Expression();
 
3519     } catch (ParseException e) {
 
3520     if (errorMessage != null) {
 
3521       {if (true) throw e;}
 
3523     errorMessage = "expression expected";
 
3525     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3526     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3527     {if (true) throw e;}
 
3530       jj_consume_token(RPAREN);
 
3531     } catch (ParseException e) {
 
3532     errorMessage = "')' expected";
 
3534     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3535     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3536     {if (true) throw e;}
 
3538     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3540       cases = switchStatementBrace();
 
3543       cases = switchStatementColon(pos, pos + 6);
 
3546       jj_la1[92] = jj_gen;
 
3547       jj_consume_token(-1);
 
3548       throw new ParseException();
 
3550    {if (true) return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());}
 
3551     throw new Error("Missing return statement in function");
 
3554   static final public AbstractCase[] switchStatementBrace() throws ParseException {
 
3556   final ArrayList cases = new ArrayList();
 
3557     jj_consume_token(LBRACE);
 
3560       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3566         jj_la1[93] = jj_gen;
 
3569       cas = switchLabel0();
 
3573       jj_consume_token(RBRACE);
 
3574     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3575     cases.toArray(abcase);
 
3576     {if (true) return abcase;}
 
3577     } catch (ParseException e) {
 
3578     errorMessage = "'}' expected";
 
3580     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3581     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3582     {if (true) throw e;}
 
3584     throw new Error("Missing return statement in function");
 
3588  * A Switch statement with : ... endswitch;
 
3589  * @param start the begin offset of the switch
 
3590  * @param end the end offset of the switch
 
3592   static final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
 
3594   final ArrayList cases = new ArrayList();
 
3595     jj_consume_token(COLON);
 
3597   setMarker(fileToParse,
 
3598             "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
 
3602             "Line " + token.beginLine);
 
3603   } catch (CoreException e) {
 
3604     PHPeclipsePlugin.log(e);
 
3608       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3614         jj_la1[94] = jj_gen;
 
3617       cas = switchLabel0();
 
3621       jj_consume_token(ENDSWITCH);
 
3622     } catch (ParseException e) {
 
3623     errorMessage = "'endswitch' expected";
 
3625     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3626     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3627     {if (true) throw e;}
 
3630       jj_consume_token(SEMICOLON);
 
3631     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3632     cases.toArray(abcase);
 
3633     {if (true) return abcase;}
 
3634     } catch (ParseException e) {
 
3635     errorMessage = "';' expected after 'endswitch' keyword";
 
3637     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3638     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3639     {if (true) throw e;}
 
3641     throw new Error("Missing return statement in function");
 
3644   static final public AbstractCase switchLabel0() throws ParseException {
 
3645   final Expression expr;
 
3646   Statement statement;
 
3647   final ArrayList stmts = new ArrayList();
 
3648   final int pos = SimpleCharStream.getPosition();
 
3649     expr = SwitchLabel();
 
3652       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3687       case INTEGER_LITERAL:
 
3688       case FLOATING_POINT_LITERAL:
 
3689       case STRING_LITERAL:
 
3698         jj_la1[95] = jj_gen;
 
3701       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3735       case INTEGER_LITERAL:
 
3736       case FLOATING_POINT_LITERAL:
 
3737       case STRING_LITERAL:
 
3743         statement = BlockStatementNoBreak();
 
3744                                          stmts.add(statement);
 
3747         statement = htmlBlock();
 
3748                                          stmts.add(statement);
 
3751         jj_la1[96] = jj_gen;
 
3752         jj_consume_token(-1);
 
3753         throw new ParseException();
 
3756     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3758       statement = BreakStatement();
 
3759                                          stmts.add(statement);
 
3762       jj_la1[97] = jj_gen;
 
3765   final Statement[] stmtsArray = new Statement[stmts.size()];
 
3766   stmts.toArray(stmtsArray);
 
3767   if (expr == null) {//it's a default
 
3768     {if (true) return new DefaultCase(stmtsArray,pos,SimpleCharStream.getPosition());}
 
3770   {if (true) return new Case(expr,stmtsArray,pos,SimpleCharStream.getPosition());}
 
3771     throw new Error("Missing return statement in function");
 
3776  * case Expression() :
 
3778  * @return the if it was a case and null if not
 
3780   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 = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3792     errorEnd   = SimpleCharStream.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 = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3802     errorEnd   = SimpleCharStream.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 = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3815     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3816     {if (true) throw e;}
 
3820       jj_la1[98] = 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[99] = jj_gen;
 
3860       jj_consume_token(SEMICOLON);
 
3861     } catch (ParseException e) {
 
3862     errorMessage = "';' expected after 'break' keyword";
 
3864     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3865     errorEnd   = SimpleCharStream.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 = SimpleCharStream.getPosition();
 
3874   final Expression condition;
 
3875   final 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 = SimpleCharStream.getPosition() - e.currentToken.next.image.length();
 
3891     errorEnd   = errorStart +1;
 
3892     processParseException(e);
 
3894     condition = Expression();
 
3896       jj_consume_token(RPAREN);
 
3897     } catch (ParseException e) {
 
3898     errorMessage = "')' expected after " + keyword + " keyword";
 
3900     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3901     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3902     processParseException(e);
 
3904    {if (true) return condition;}
 
3905     throw new Error("Missing return statement in function");
 
3908   static final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
 
3909   Statement statement;
 
3910   final Statement stmt;
 
3911   final Statement[] statementsArray;
 
3912   ElseIf elseifStatement;
 
3913   Else elseStatement = null;
 
3914   final ArrayList stmts;
 
3915   final ArrayList elseIfList = new ArrayList();
 
3916   final ElseIf[] elseIfs;
 
3917   int pos = SimpleCharStream.getPosition();
 
3918   final int endStatements;
 
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) {
 
3959         case INTEGER_LITERAL:
 
3960         case FLOATING_POINT_LITERAL:
 
3961         case STRING_LITERAL:
 
3970           jj_la1[100] = jj_gen;
 
3973         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4006         case INTEGER_LITERAL:
 
4007         case FLOATING_POINT_LITERAL:
 
4008         case STRING_LITERAL:
 
4014           statement = Statement();
 
4015                               stmts.add(statement);
 
4018           statement = htmlBlock();
 
4019                               stmts.add(statement);
 
4022           jj_la1[101] = jj_gen;
 
4023           jj_consume_token(-1);
 
4024           throw new ParseException();
 
4027     endStatements = SimpleCharStream.getPosition();
 
4030         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4035           jj_la1[102] = jj_gen;
 
4038         elseifStatement = ElseIfStatementColon();
 
4039                                               elseIfList.add(elseifStatement);
 
4041       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4043         elseStatement = ElseStatementColon();
 
4046         jj_la1[103] = jj_gen;
 
4050   setMarker(fileToParse,
 
4051             "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
 
4055             "Line " + token.beginLine);
 
4056   } catch (CoreException e) {
 
4057     PHPeclipsePlugin.log(e);
 
4060         jj_consume_token(ENDIF);
 
4061       } catch (ParseException e) {
 
4062     errorMessage = "'endif' expected";
 
4064     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4065     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4066     {if (true) throw e;}
 
4069         jj_consume_token(SEMICOLON);
 
4070       } catch (ParseException e) {
 
4071     errorMessage = "';' expected after 'endif' keyword";
 
4073     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4074     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4075     {if (true) throw e;}
 
4077     elseIfs = new ElseIf[elseIfList.size()];
 
4078     elseIfList.toArray(elseIfs);
 
4079     if (stmts.size() == 1) {
 
4080       {if (true) return new IfStatement(condition,
 
4081                              (Statement) stmts.get(0),
 
4085                               SimpleCharStream.getPosition());}
 
4087       statementsArray = new Statement[stmts.size()];
 
4088       stmts.toArray(statementsArray);
 
4089       {if (true) return new IfStatement(condition,
 
4090                              new Block(statementsArray,pos,endStatements),
 
4094                              SimpleCharStream.getPosition());}
 
4130     case INTEGER_LITERAL:
 
4131     case FLOATING_POINT_LITERAL:
 
4132     case STRING_LITERAL:
 
4138       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4171       case INTEGER_LITERAL:
 
4172       case FLOATING_POINT_LITERAL:
 
4173       case STRING_LITERAL:
 
4185         jj_la1[104] = jj_gen;
 
4186         jj_consume_token(-1);
 
4187         throw new ParseException();
 
4191         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4196           jj_la1[105] = jj_gen;
 
4199         elseifStatement = ElseIfStatement();
 
4200                                                       elseIfList.add(elseifStatement);
 
4202       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4204         jj_consume_token(ELSE);
 
4206        pos = SimpleCharStream.getPosition();
 
4207           statement = Statement();
 
4208        elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());
 
4209         } catch (ParseException e) {
 
4210       if (errorMessage != null) {
 
4211         {if (true) throw e;}
 
4213       errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
 
4215       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4216       errorEnd   = SimpleCharStream.getPosition() + 1;
 
4217       {if (true) throw e;}
 
4221         jj_la1[106] = jj_gen;
 
4224     elseIfs = new ElseIf[elseIfList.size()];
 
4225     elseIfList.toArray(elseIfs);
 
4226     {if (true) return new IfStatement(condition,
 
4231                            SimpleCharStream.getPosition());}
 
4234       jj_la1[107] = jj_gen;
 
4235       jj_consume_token(-1);
 
4236       throw new ParseException();
 
4238     throw new Error("Missing return statement in function");
 
4241   static final public ElseIf ElseIfStatementColon() throws ParseException {
 
4242   final Expression condition;
 
4243   Statement statement;
 
4244   final ArrayList list = new ArrayList();
 
4245   final int pos = SimpleCharStream.getPosition();
 
4246     jj_consume_token(ELSEIF);
 
4247     condition = Condition("elseif");
 
4248     jj_consume_token(COLON);
 
4251       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4285       case INTEGER_LITERAL:
 
4286       case FLOATING_POINT_LITERAL:
 
4287       case STRING_LITERAL:
 
4296         jj_la1[108] = jj_gen;
 
4299       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4332       case INTEGER_LITERAL:
 
4333       case FLOATING_POINT_LITERAL:
 
4334       case STRING_LITERAL:
 
4340         statement = Statement();
 
4341                                       list.add(statement);
 
4344         statement = htmlBlock();
 
4345                                       list.add(statement);
 
4348         jj_la1[109] = jj_gen;
 
4349         jj_consume_token(-1);
 
4350         throw new ParseException();
 
4353   final Statement[] stmtsArray = new Statement[list.size()];
 
4354   list.toArray(stmtsArray);
 
4355   {if (true) return new ElseIf(condition,stmtsArray ,pos,SimpleCharStream.getPosition());}
 
4356     throw new Error("Missing return statement in function");
 
4359   static final public Else ElseStatementColon() throws ParseException {
 
4360   Statement statement;
 
4361   final ArrayList list = new ArrayList();
 
4362   final int pos = SimpleCharStream.getPosition();
 
4363     jj_consume_token(ELSE);
 
4364     jj_consume_token(COLON);
 
4367       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4401       case INTEGER_LITERAL:
 
4402       case FLOATING_POINT_LITERAL:
 
4403       case STRING_LITERAL:
 
4412         jj_la1[110] = jj_gen;
 
4415       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4448       case INTEGER_LITERAL:
 
4449       case FLOATING_POINT_LITERAL:
 
4450       case STRING_LITERAL:
 
4456         statement = Statement();
 
4457                                              list.add(statement);
 
4460         statement = htmlBlock();
 
4461                                              list.add(statement);
 
4464         jj_la1[111] = jj_gen;
 
4465         jj_consume_token(-1);
 
4466         throw new ParseException();
 
4469   final Statement[] stmtsArray = new Statement[list.size()];
 
4470   list.toArray(stmtsArray);
 
4471   {if (true) return new Else(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4472     throw new Error("Missing return statement in function");
 
4475   static final public ElseIf ElseIfStatement() throws ParseException {
 
4476   final Expression condition;
 
4477   final Statement statement;
 
4478   final ArrayList list = new ArrayList();
 
4479   final int pos = SimpleCharStream.getPosition();
 
4480     jj_consume_token(ELSEIF);
 
4481     condition = Condition("elseif");
 
4482     statement = Statement();
 
4483                                                                     list.add(statement);/*todo:do better*/
 
4484   final Statement[] stmtsArray = new Statement[list.size()];
 
4485   list.toArray(stmtsArray);
 
4486   {if (true) return new ElseIf(condition,stmtsArray,pos,SimpleCharStream.getPosition());}
 
4487     throw new Error("Missing return statement in function");
 
4490   static final public WhileStatement WhileStatement() throws ParseException {
 
4491   final Expression condition;
 
4492   final Statement action;
 
4493   final int pos = SimpleCharStream.getPosition();
 
4494     jj_consume_token(WHILE);
 
4495     condition = Condition("while");
 
4496     action = WhileStatement0(pos,pos + 5);
 
4497      {if (true) return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4498     throw new Error("Missing return statement in function");
 
4501   static final public Statement WhileStatement0(final int start, final int end) throws ParseException {
 
4502   Statement statement;
 
4503   final ArrayList stmts = new ArrayList();
 
4504   final int pos = SimpleCharStream.getPosition();
 
4505     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4507       jj_consume_token(COLON);
 
4510         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4543         case INTEGER_LITERAL:
 
4544         case FLOATING_POINT_LITERAL:
 
4545         case STRING_LITERAL:
 
4554           jj_la1[112] = jj_gen;
 
4557         statement = Statement();
 
4558                                     stmts.add(statement);
 
4561   setMarker(fileToParse,
 
4562             "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
 
4566             "Line " + token.beginLine);
 
4567   } catch (CoreException e) {
 
4568     PHPeclipsePlugin.log(e);
 
4571         jj_consume_token(ENDWHILE);
 
4572       } catch (ParseException e) {
 
4573     errorMessage = "'endwhile' expected";
 
4575     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4576     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4577     {if (true) throw e;}
 
4580         jj_consume_token(SEMICOLON);
 
4581     final Statement[] stmtsArray = new Statement[stmts.size()];
 
4582     stmts.toArray(stmtsArray);
 
4583     {if (true) return new Block(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4584       } catch (ParseException e) {
 
4585     errorMessage = "';' expected after 'endwhile' keyword";
 
4587     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4588     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4589     {if (true) throw e;}
 
4624     case INTEGER_LITERAL:
 
4625     case FLOATING_POINT_LITERAL:
 
4626     case STRING_LITERAL:
 
4632       statement = Statement();
 
4633    {if (true) return statement;}
 
4636       jj_la1[113] = jj_gen;
 
4637       jj_consume_token(-1);
 
4638       throw new ParseException();
 
4640     throw new Error("Missing return statement in function");
 
4643   static final public DoStatement DoStatement() throws ParseException {
 
4644   final Statement action;
 
4645   final Expression condition;
 
4646   final int pos = SimpleCharStream.getPosition();
 
4647     jj_consume_token(DO);
 
4648     action = Statement();
 
4649     jj_consume_token(WHILE);
 
4650     condition = Condition("while");
 
4652       jj_consume_token(SEMICOLON);
 
4653      {if (true) return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4654     } catch (ParseException e) {
 
4655     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
4657     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4658     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4659     {if (true) throw e;}
 
4661     throw new Error("Missing return statement in function");
 
4664   static final public ForeachStatement ForeachStatement() throws ParseException {
 
4665   Statement statement;
 
4666   Expression expression;
 
4667   final int pos = SimpleCharStream.getPosition();
 
4668   ArrayVariableDeclaration variable;
 
4669     jj_consume_token(FOREACH);
 
4671       jj_consume_token(LPAREN);
 
4672     } catch (ParseException e) {
 
4673     errorMessage = "'(' expected after 'foreach' keyword";
 
4675     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4676     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4677     {if (true) throw e;}
 
4680       expression = Expression();
 
4681     } catch (ParseException e) {
 
4682     errorMessage = "variable expected";
 
4684     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4685     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4686     {if (true) throw e;}
 
4689       jj_consume_token(AS);
 
4690     } catch (ParseException e) {
 
4691     errorMessage = "'as' expected";
 
4693     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4694     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4695     {if (true) throw e;}
 
4698       variable = ArrayVariable();
 
4699     } catch (ParseException e) {
 
4700     errorMessage = "variable expected";
 
4702     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4703     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4704     {if (true) throw e;}
 
4707       jj_consume_token(RPAREN);
 
4708     } catch (ParseException e) {
 
4709     errorMessage = "')' expected after 'foreach' keyword";
 
4711     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4712     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4713     {if (true) throw e;}
 
4716       statement = Statement();
 
4717     } catch (ParseException e) {
 
4718     if (errorMessage != null) {if (true) throw e;}
 
4719     errorMessage = "statement expected";
 
4721     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4722     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4723     {if (true) throw e;}
 
4725    {if (true) return new ForeachStatement(expression,
 
4729                                SimpleCharStream.getPosition());}
 
4730     throw new Error("Missing return statement in function");
 
4733   static final public ForStatement ForStatement() throws ParseException {
 
4735 final int pos = SimpleCharStream.getPosition();
 
4736 Expression[] initializations = null;
 
4737 Expression condition = null;
 
4738 Expression[] increments = null;
 
4740 final ArrayList list = new ArrayList();
 
4741 final int startBlock, endBlock;
 
4742     token = jj_consume_token(FOR);
 
4744       jj_consume_token(LPAREN);
 
4745     } catch (ParseException e) {
 
4746     errorMessage = "'(' expected after 'for' keyword";
 
4748     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4749     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4750     {if (true) throw e;}
 
4752     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4760       initializations = ForInit();
 
4763       jj_la1[114] = jj_gen;
 
4766     jj_consume_token(SEMICOLON);
 
4767     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4783     case INTEGER_LITERAL:
 
4784     case FLOATING_POINT_LITERAL:
 
4785     case STRING_LITERAL:
 
4789       condition = Expression();
 
4792       jj_la1[115] = jj_gen;
 
4795     jj_consume_token(SEMICOLON);
 
4796     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4804       increments = StatementExpressionList();
 
4807       jj_la1[116] = jj_gen;
 
4810     jj_consume_token(RPAREN);
 
4811     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4844     case INTEGER_LITERAL:
 
4845     case FLOATING_POINT_LITERAL:
 
4846     case STRING_LITERAL:
 
4852       action = Statement();
 
4853        {if (true) return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());}
 
4856       jj_consume_token(COLON);
 
4857        startBlock = SimpleCharStream.getPosition();
 
4860         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4893         case INTEGER_LITERAL:
 
4894         case FLOATING_POINT_LITERAL:
 
4895         case STRING_LITERAL:
 
4904           jj_la1[117] = jj_gen;
 
4907         action = Statement();
 
4911         setMarker(fileToParse,
 
4912                   "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
 
4914                   pos+token.image.length(),
 
4916                   "Line " + token.beginLine);
 
4917         } catch (CoreException e) {
 
4918           PHPeclipsePlugin.log(e);
 
4920        endBlock = SimpleCharStream.getPosition();
 
4922         jj_consume_token(ENDFOR);
 
4923       } catch (ParseException e) {
 
4924         errorMessage = "'endfor' expected";
 
4926         errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4927         errorEnd   = SimpleCharStream.getPosition() + 1;
 
4928         {if (true) throw e;}
 
4931         jj_consume_token(SEMICOLON);
 
4932         final Statement[] stmtsArray = new Statement[list.size()];
 
4933         list.toArray(stmtsArray);
 
4934         {if (true) return new ForStatement(initializations,condition,increments,new Block(stmtsArray,startBlock,endBlock),pos,SimpleCharStream.getPosition());}
 
4935       } catch (ParseException e) {
 
4936         errorMessage = "';' expected after 'endfor' keyword";
 
4938         errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4939         errorEnd   = SimpleCharStream.getPosition() + 1;
 
4940         {if (true) throw e;}
 
4944       jj_la1[118] = jj_gen;
 
4945       jj_consume_token(-1);
 
4946       throw new ParseException();
 
4948     throw new Error("Missing return statement in function");
 
4951   static final public Expression[] ForInit() throws ParseException {
 
4952   final Expression[] exprs;
 
4953     if (jj_2_7(2147483647)) {
 
4954       exprs = LocalVariableDeclaration();
 
4955    {if (true) return exprs;}
 
4957       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4965         exprs = StatementExpressionList();
 
4966    {if (true) return exprs;}
 
4969         jj_la1[119] = jj_gen;
 
4970         jj_consume_token(-1);
 
4971         throw new ParseException();
 
4974     throw new Error("Missing return statement in function");
 
4977   static final public Expression[] StatementExpressionList() throws ParseException {
 
4978   final ArrayList list = new ArrayList();
 
4979   final Expression expr;
 
4980     expr = StatementExpression();
 
4984       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4989         jj_la1[120] = jj_gen;
 
4992       jj_consume_token(COMMA);
 
4993       StatementExpression();
 
4996   final Expression[] exprsArray = new Expression[list.size()];
 
4997   list.toArray(exprsArray);
 
4998   {if (true) return exprsArray;}
 
4999     throw new Error("Missing return statement in function");
 
5002   static final public Continue ContinueStatement() throws ParseException {
 
5003   Expression expr = null;
 
5004   final int pos = SimpleCharStream.getPosition();
 
5005     jj_consume_token(CONTINUE);
 
5006     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5022     case INTEGER_LITERAL:
 
5023     case FLOATING_POINT_LITERAL:
 
5024     case STRING_LITERAL:
 
5028       expr = Expression();
 
5031       jj_la1[121] = jj_gen;
 
5035       jj_consume_token(SEMICOLON);
 
5036      {if (true) return new Continue(expr,pos,SimpleCharStream.getPosition());}
 
5037     } catch (ParseException e) {
 
5038     errorMessage = "';' expected after 'continue' statement";
 
5040     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
5041     errorEnd   = SimpleCharStream.getPosition() + 1;
 
5042     {if (true) throw e;}
 
5044     throw new Error("Missing return statement in function");
 
5047   static final public ReturnStatement ReturnStatement() throws ParseException {
 
5048   Expression expr = null;
 
5049   final int pos = SimpleCharStream.getPosition();
 
5050     jj_consume_token(RETURN);
 
5051     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5067     case INTEGER_LITERAL:
 
5068     case FLOATING_POINT_LITERAL:
 
5069     case STRING_LITERAL:
 
5073       expr = Expression();
 
5076       jj_la1[122] = jj_gen;
 
5080       jj_consume_token(SEMICOLON);
 
5081      {if (true) return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());}
 
5082     } catch (ParseException e) {
 
5083     errorMessage = "';' expected after 'return' statement";
 
5085     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
5086     errorEnd   = SimpleCharStream.getPosition() + 1;
 
5087     {if (true) throw e;}
 
5089     throw new Error("Missing return statement in function");
 
5092   static final private boolean jj_2_1(int xla) {
 
5093     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5094     boolean retval = !jj_3_1();
 
5099   static final private boolean jj_2_2(int xla) {
 
5100     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5101     boolean retval = !jj_3_2();
 
5106   static final private boolean jj_2_3(int xla) {
 
5107     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5108     boolean retval = !jj_3_3();
 
5113   static final private boolean jj_2_4(int xla) {
 
5114     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5115     boolean retval = !jj_3_4();
 
5120   static final private boolean jj_2_5(int xla) {
 
5121     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5122     boolean retval = !jj_3_5();
 
5127   static final private boolean jj_2_6(int xla) {
 
5128     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5129     boolean retval = !jj_3_6();
 
5134   static final private boolean jj_2_7(int xla) {
 
5135     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5136     boolean retval = !jj_3_7();
 
5141   static final private boolean jj_3R_203() {
 
5142     if (jj_scan_token(MINUS_MINUS)) return true;
 
5143     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5147   static final private boolean jj_3R_202() {
 
5148     if (jj_scan_token(PLUS_PLUS)) return true;
 
5149     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5153   static final private boolean jj_3R_198() {
 
5158     if (jj_3R_203()) return true;
 
5159     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5160     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5164   static final private boolean jj_3R_71() {
 
5165     if (jj_3R_87()) return true;
 
5166     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5167     if (jj_3R_44()) return true;
 
5168     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5172   static final private boolean jj_3R_183() {
 
5173     if (jj_3R_185()) return true;
 
5174     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5177     if (jj_3R_198()) jj_scanpos = xsp;
 
5178     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5182   static final private boolean jj_3R_44() {
 
5187     if (jj_3R_54()) return true;
 
5188     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5189     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5193   static final private boolean jj_3R_53() {
 
5194     if (jj_3R_70()) return true;
 
5195     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5198     if (jj_3R_71()) jj_scanpos = xsp;
 
5199     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5203   static final private boolean jj_3R_42() {
 
5204     if (jj_scan_token(ARRAY)) return true;
 
5205     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5209   static final private boolean jj_3R_197() {
 
5210     if (jj_scan_token(ARRAY)) return true;
 
5211     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5215   static final private boolean jj_3R_196() {
 
5216     if (jj_3R_49()) return true;
 
5217     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5221   static final private boolean jj_3R_182() {
 
5222     if (jj_scan_token(LPAREN)) return true;
 
5223     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5228     if (jj_3R_197()) return true;
 
5229     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5230     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5231     if (jj_scan_token(RPAREN)) return true;
 
5232     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5233     if (jj_3R_155()) return true;
 
5234     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5238   static final private boolean jj_3R_67() {
 
5239     if (jj_scan_token(OBJECT)) return true;
 
5240     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5244   static final private boolean jj_3R_66() {
 
5245     if (jj_scan_token(INTEGER)) return true;
 
5246     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5250   static final private boolean jj_3R_41() {
 
5251     if (jj_3R_49()) return true;
 
5252     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5256   static final private boolean jj_3R_65() {
 
5257     if (jj_scan_token(INT)) return true;
 
5258     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5262   static final private boolean jj_3R_64() {
 
5263     if (jj_scan_token(FLOAT)) return true;
 
5264     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5268   static final private boolean jj_3R_63() {
 
5269     if (jj_scan_token(DOUBLE)) return true;
 
5270     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5274   static final private boolean jj_3R_62() {
 
5275     if (jj_scan_token(REAL)) return true;
 
5276     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5280   static final private boolean jj_3R_61() {
 
5281     if (jj_scan_token(BOOLEAN)) return true;
 
5282     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5286   static final private boolean jj_3_3() {
 
5287     if (jj_scan_token(LPAREN)) return true;
 
5288     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5293     if (jj_3R_42()) return true;
 
5294     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5295     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5296     if (jj_scan_token(RPAREN)) return true;
 
5297     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5301   static final private boolean jj_3R_60() {
 
5302     if (jj_scan_token(BOOL)) return true;
 
5303     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5307   static final private boolean jj_3R_49() {
 
5326     if (jj_3R_67()) return true;
 
5327     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5328     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5329     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5330     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5331     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5332     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5333     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5334     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5335     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5339   static final private boolean jj_3R_59() {
 
5340     if (jj_scan_token(STRING)) return true;
 
5341     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5345   static final private boolean jj_3R_181() {
 
5346     if (jj_scan_token(LPAREN)) return true;
 
5347     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5348     if (jj_3R_44()) return true;
 
5349     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5350     if (jj_scan_token(RPAREN)) return true;
 
5351     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5355   static final private boolean jj_3R_180() {
 
5356     if (jj_3R_184()) return true;
 
5357     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5361   static final private boolean jj_3R_179() {
 
5362     if (jj_3R_183()) return true;
 
5363     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5367   static final private boolean jj_3R_178() {
 
5368     if (jj_scan_token(BANG)) return true;
 
5369     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5370     if (jj_3R_155()) return true;
 
5371     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5375   static final private boolean jj_3R_177() {
 
5376     if (jj_3R_182()) return true;
 
5377     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5381   static final private boolean jj_3R_174() {
 
5392     if (jj_3R_181()) return true;
 
5393     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5394     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5395     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5396     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5397     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5401   static final private boolean jj_3R_176() {
 
5402     if (jj_scan_token(MINUS_MINUS)) return true;
 
5403     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5407   static final private boolean jj_3R_175() {
 
5408     if (jj_scan_token(PLUS_PLUS)) return true;
 
5409     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5413   static final private boolean jj_3R_74() {
 
5414     if (jj_scan_token(ASSIGN)) return true;
 
5415     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5416     if (jj_3R_44()) return true;
 
5417     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5421   static final private boolean jj_3R_173() {
 
5426     if (jj_3R_176()) return true;
 
5427     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5428     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5429     if (jj_3R_185()) return true;
 
5430     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5434   static final private boolean jj_3R_168() {
 
5435     if (jj_3R_174()) return true;
 
5436     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5440   static final private boolean jj_3R_167() {
 
5441     if (jj_3R_173()) return true;
 
5442     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5446   static final private boolean jj_3R_172() {
 
5447     if (jj_scan_token(MINUS)) return true;
 
5448     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5452   static final private boolean jj_3R_171() {
 
5453     if (jj_scan_token(PLUS)) return true;
 
5454     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5458   static final private boolean jj_3R_164() {
 
5465     if (jj_3R_168()) return true;
 
5466     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5467     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5468     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5472   static final private boolean jj_3R_166() {
 
5477     if (jj_3R_172()) return true;
 
5478     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5479     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5480     if (jj_3R_155()) return true;
 
5481     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5485   static final private boolean jj_3R_170() {
 
5486     if (jj_3R_164()) return true;
 
5487     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5491   static final private boolean jj_3R_55() {
 
5492     if (jj_3R_73()) return true;
 
5493     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5496     if (jj_3R_74()) jj_scanpos = xsp;
 
5497     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5501   static final private boolean jj_3R_165() {
 
5506     if (jj_3R_170()) return true;
 
5507     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5508     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5512   static final private boolean jj_3R_169() {
 
5513     if (jj_scan_token(AT)) return true;
 
5514     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5515     if (jj_3R_165()) return true;
 
5516     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5520   static final private boolean jj_3R_160() {
 
5521     if (jj_3R_165()) return true;
 
5522     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5526   static final private boolean jj_3R_56() {
 
5527     if (jj_scan_token(COMMA)) return true;
 
5528     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5529     if (jj_3R_55()) return true;
 
5530     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5534   static final private boolean jj_3R_155() {
 
5539     if (jj_3R_160()) return true;
 
5540     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5541     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5545   static final private boolean jj_3R_159() {
 
5546     if (jj_scan_token(BIT_AND)) return true;
 
5547     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5548     if (jj_3R_164()) return true;
 
5549     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5553   static final private boolean jj_3R_46() {
 
5554     if (jj_3R_55()) return true;
 
5555     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5559       if (jj_3R_56()) { jj_scanpos = xsp; break; }
 
5560       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5565   static final private boolean jj_3R_163() {
 
5566     if (jj_scan_token(REMAINDER)) return true;
 
5567     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5571   static final private boolean jj_3R_162() {
 
5572     if (jj_scan_token(SLASH)) return true;
 
5573     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5577   static final private boolean jj_3R_161() {
 
5578     if (jj_scan_token(STAR)) return true;
 
5579     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5583   static final private boolean jj_3R_156() {
 
5590     if (jj_3R_163()) return true;
 
5591     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5592     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5593     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5594     if (jj_3R_155()) return true;
 
5595     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5599   static final private boolean jj_3R_150() {
 
5600     if (jj_3R_155()) return true;
 
5601     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5605       if (jj_3R_156()) { jj_scanpos = xsp; break; }
 
5606       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5611   static final private boolean jj_3R_158() {
 
5612     if (jj_scan_token(MINUS)) return true;
 
5613     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5617   static final private boolean jj_3R_157() {
 
5618     if (jj_scan_token(PLUS)) return true;
 
5619     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5623   static final private boolean jj_3R_151() {
 
5628     if (jj_3R_158()) return true;
 
5629     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5630     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5631     if (jj_3R_150()) return true;
 
5632     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5636   static final private boolean jj_3_6() {
 
5637     if (jj_3R_45()) return true;
 
5638     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5642   static final private boolean jj_3R_144() {
 
5643     if (jj_3R_150()) return true;
 
5644     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5648       if (jj_3R_151()) { jj_scanpos = xsp; break; }
 
5649       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5654   static final private boolean jj_3R_207() {
 
5655     if (jj_scan_token(COMMA)) return true;
 
5656     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5660   static final private boolean jj_3_2() {
 
5661     if (jj_scan_token(COMMA)) return true;
 
5662     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5663     if (jj_3R_40()) return true;
 
5664     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5668   static final private boolean jj_3R_154() {
 
5669     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
 
5670     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5674   static final private boolean jj_3R_153() {
 
5675     if (jj_scan_token(RSIGNEDSHIFT)) return true;
 
5676     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5680   static final private boolean jj_3_5() {
 
5681     if (jj_3R_44()) return true;
 
5682     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5683     if (jj_scan_token(SEMICOLON)) return true;
 
5684     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5688   static final private boolean jj_3R_206() {
 
5689     if (jj_3R_40()) return true;
 
5690     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5694       if (jj_3_2()) { jj_scanpos = xsp; break; }
 
5695       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5700   static final private boolean jj_3R_152() {
 
5701     if (jj_scan_token(LSHIFT)) return true;
 
5702     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5706   static final private boolean jj_3R_145() {
 
5713     if (jj_3R_154()) return true;
 
5714     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5715     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5716     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5717     if (jj_3R_144()) return true;
 
5718     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5722   static final private boolean jj_3R_136() {
 
5723     if (jj_3R_144()) return true;
 
5724     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5728       if (jj_3R_145()) { jj_scanpos = xsp; break; }
 
5729       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5734   static final private boolean jj_3R_205() {
 
5735     if (jj_scan_token(LPAREN)) return true;
 
5736     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5739     if (jj_3R_206()) jj_scanpos = xsp;
 
5740     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5742     if (jj_3R_207()) jj_scanpos = xsp;
 
5743     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5744     if (jj_scan_token(RPAREN)) return true;
 
5745     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5749   static final private boolean jj_3R_149() {
 
5750     if (jj_scan_token(GE)) return true;
 
5751     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5755   static final private boolean jj_3R_148() {
 
5756     if (jj_scan_token(LE)) return true;
 
5757     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5761   static final private boolean jj_3R_147() {
 
5762     if (jj_scan_token(GT)) return true;
 
5763     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5767   static final private boolean jj_3R_146() {
 
5768     if (jj_scan_token(LT)) return true;
 
5769     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5773   static final private boolean jj_3R_137() {
 
5782     if (jj_3R_149()) return true;
 
5783     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5784     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5785     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5786     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5787     if (jj_3R_136()) return true;
 
5788     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5792   static final private boolean jj_3R_45() {
 
5793     if (jj_scan_token(IDENTIFIER)) return true;
 
5794     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5795     if (jj_scan_token(COLON)) return true;
 
5796     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5800   static final private boolean jj_3R_208() {
 
5801     if (jj_scan_token(ARRAYASSIGN)) return true;
 
5802     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5803     if (jj_3R_44()) return true;
 
5804     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5808   static final private boolean jj_3R_131() {
 
5809     if (jj_3R_136()) return true;
 
5810     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5814       if (jj_3R_137()) { jj_scanpos = xsp; break; }
 
5815       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5820   static final private boolean jj_3R_40() {
 
5821     if (jj_3R_44()) return true;
 
5822     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5825     if (jj_3R_208()) jj_scanpos = xsp;
 
5826     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5830   static final private boolean jj_3R_110() {
 
5831     if (jj_scan_token(COMMA)) return true;
 
5832     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5833     if (jj_3R_44()) return true;
 
5834     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5838   static final private boolean jj_3_7() {
 
5839     if (jj_3R_46()) return true;
 
5840     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5844   static final private boolean jj_3R_91() {
 
5845     if (jj_3R_44()) return true;
 
5846     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5850       if (jj_3R_110()) { jj_scanpos = xsp; break; }
 
5851       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5856   static final private boolean jj_3R_81() {
 
5857     if (jj_3R_91()) return true;
 
5858     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5862   static final private boolean jj_3R_142() {
 
5863     if (jj_scan_token(TRIPLEEQUAL)) return true;
 
5864     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5868   static final private boolean jj_3R_141() {
 
5869     if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
 
5870     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5874   static final private boolean jj_3R_140() {
 
5875     if (jj_scan_token(NOT_EQUAL)) return true;
 
5876     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5880   static final private boolean jj_3R_139() {
 
5881     if (jj_scan_token(DIF)) return true;
 
5882     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5886   static final private boolean jj_3R_138() {
 
5887     if (jj_scan_token(EQUAL_EQUAL)) return true;
 
5888     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5892   static final private boolean jj_3R_80() {
 
5893     if (jj_3R_49()) return true;
 
5894     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5898   static final private boolean jj_3R_68() {
 
5899     if (jj_scan_token(LPAREN)) return true;
 
5900     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5903     if (jj_3R_81()) jj_scanpos = xsp;
 
5904     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5905     if (jj_scan_token(RPAREN)) return true;
 
5906     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5910   static final private boolean jj_3R_132() {
 
5921     if (jj_3R_142()) return true;
 
5922     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5923     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5924     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5925     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5926     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5927     if (jj_3R_131()) return true;
 
5928     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5932   static final private boolean jj_3R_129() {
 
5933     if (jj_3R_131()) return true;
 
5934     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5938       if (jj_3R_132()) { jj_scanpos = xsp; break; }
 
5939       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5944   static final private boolean jj_3R_118() {
 
5945     if (jj_scan_token(LBRACE)) return true;
 
5946     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5947     if (jj_3R_44()) return true;
 
5948     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5949     if (jj_scan_token(RBRACE)) return true;
 
5950     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5954   static final private boolean jj_3R_191() {
 
5955     if (jj_scan_token(NULL)) return true;
 
5956     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5960   static final private boolean jj_3R_190() {
 
5961     if (jj_scan_token(FALSE)) return true;
 
5962     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5966   static final private boolean jj_3R_78() {
 
5967     if (jj_scan_token(DOLLAR_ID)) return true;
 
5968     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5972   static final private boolean jj_3R_189() {
 
5973     if (jj_scan_token(TRUE)) return true;
 
5974     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5978   static final private boolean jj_3R_130() {
 
5979     if (jj_scan_token(BIT_AND)) return true;
 
5980     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5981     if (jj_3R_129()) return true;
 
5982     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5986   static final private boolean jj_3R_188() {
 
5987     if (jj_scan_token(STRING_LITERAL)) return true;
 
5988     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5992   static final private boolean jj_3R_187() {
 
5993     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
5994     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5998   static final private boolean jj_3R_127() {
 
5999     if (jj_3R_129()) return true;
 
6000     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6004       if (jj_3R_130()) { jj_scanpos = xsp; break; }
 
6005       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6010   static final private boolean jj_3R_77() {
 
6011     if (jj_scan_token(DOLLAR)) return true;
 
6012     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6013     if (jj_3R_57()) return true;
 
6014     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6018   static final private boolean jj_3R_186() {
 
6019     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
6020     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6024   static final private boolean jj_3R_184() {
 
6037     if (jj_3R_191()) 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;
 
6040     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6041     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6042     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6043     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6047   static final private boolean jj_3R_79() {
 
6048     if (jj_3R_44()) return true;
 
6049     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6053   static final private boolean jj_3R_58() {
 
6058     if (jj_3R_80()) return true;
 
6059     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6060     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6064   static final private boolean jj_3R_128() {
 
6065     if (jj_scan_token(XOR)) return true;
 
6066     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6067     if (jj_3R_127()) return true;
 
6068     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6072   static final private boolean jj_3R_76() {
 
6073     if (jj_scan_token(IDENTIFIER)) return true;
 
6074     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6077     if (jj_3R_118()) jj_scanpos = xsp;
 
6078     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6082   static final private boolean jj_3R_125() {
 
6083     if (jj_3R_127()) return true;
 
6084     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6088       if (jj_3R_128()) { jj_scanpos = xsp; break; }
 
6089       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6094   static final private boolean jj_3R_75() {
 
6095     if (jj_scan_token(LBRACE)) return true;
 
6096     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6097     if (jj_3R_44()) return true;
 
6098     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6099     if (jj_scan_token(RBRACE)) return true;
 
6100     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6104   static final private boolean jj_3R_57() {
 
6113     if (jj_3R_78()) return true;
 
6114     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6115     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6116     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6117     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6121   static final private boolean jj_3R_48() {
 
6122     if (jj_scan_token(LBRACKET)) return true;
 
6123     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6126     if (jj_3R_58()) jj_scanpos = xsp;
 
6127     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6128     if (jj_scan_token(RBRACKET)) return true;
 
6129     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6133   static final private boolean jj_3R_126() {
 
6134     if (jj_scan_token(BIT_OR)) return true;
 
6135     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6136     if (jj_3R_125()) return true;
 
6137     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6141   static final private boolean jj_3R_119() {
 
6142     if (jj_3R_125()) return true;
 
6143     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6147       if (jj_3R_126()) { jj_scanpos = xsp; break; }
 
6148       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6153   static final private boolean jj_3R_117() {
 
6154     if (jj_scan_token(LBRACE)) return true;
 
6155     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6156     if (jj_3R_44()) return true;
 
6157     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6158     if (jj_scan_token(RBRACE)) return true;
 
6159     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6163   static final private boolean jj_3R_120() {
 
6164     if (jj_scan_token(DOT)) return true;
 
6165     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6166     if (jj_3R_119()) return true;
 
6167     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6171   static final private boolean jj_3R_109() {
 
6172     if (jj_scan_token(DOLLAR)) return true;
 
6173     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6174     if (jj_3R_57()) return true;
 
6175     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6179   static final private boolean jj_3R_47() {
 
6180     if (jj_scan_token(CLASSACCESS)) return true;
 
6181     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6182     if (jj_3R_57()) return true;
 
6183     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6187   static final private boolean jj_3R_39() {
 
6192     if (jj_3R_48()) return true;
 
6193     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6194     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6198   static final private boolean jj_3R_111() {
 
6199     if (jj_3R_119()) return true;
 
6200     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6204       if (jj_3R_120()) { jj_scanpos = xsp; break; }
 
6205       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6210   static final private boolean jj_3R_122() {
 
6211     if (jj_scan_token(_ANDL)) return true;
 
6212     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6216   static final private boolean jj_3R_90() {
 
6221     if (jj_3R_109()) return true;
 
6222     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6223     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6227   static final private boolean jj_3R_108() {
 
6228     if (jj_scan_token(DOLLAR_ID)) return true;
 
6229     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6232     if (jj_3R_117()) jj_scanpos = xsp;
 
6233     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6237   static final private boolean jj_3R_121() {
 
6238     if (jj_scan_token(AND_AND)) return true;
 
6239     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6243   static final private boolean jj_3R_84() {
 
6244     if (jj_3R_73()) return true;
 
6245     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6249   static final private boolean jj_3R_83() {
 
6250     if (jj_3R_49()) return true;
 
6251     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6255   static final private boolean jj_3R_112() {
 
6260     if (jj_3R_122()) return true;
 
6261     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6262     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6263     if (jj_3R_111()) return true;
 
6264     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6268   static final private boolean jj_3R_86() {
 
6269     if (jj_scan_token(HOOK)) return true;
 
6270     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6271     if (jj_3R_44()) return true;
 
6272     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6273     if (jj_scan_token(COLON)) return true;
 
6274     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6275     if (jj_3R_70()) return true;
 
6276     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6280   static final private boolean jj_3R_82() {
 
6281     if (jj_scan_token(IDENTIFIER)) return true;
 
6282     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6286   static final private boolean jj_3R_69() {
 
6293     if (jj_3R_84()) return true;
 
6294     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6295     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6296     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6300   static final private boolean jj_3R_92() {
 
6301     if (jj_3R_111()) return true;
 
6302     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6306       if (jj_3R_112()) { jj_scanpos = xsp; break; }
 
6307       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6312   static final private boolean jj_3R_114() {
 
6313     if (jj_scan_token(_ORL)) return true;
 
6314     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6318   static final private boolean jj_3R_113() {
 
6319     if (jj_scan_token(OR_OR)) return true;
 
6320     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6324   static final private boolean jj_3R_135() {
 
6325     if (jj_scan_token(ASSIGN)) return true;
 
6326     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6327     if (jj_3R_44()) return true;
 
6328     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6332   static final private boolean jj_3R_93() {
 
6337     if (jj_3R_114()) return true;
 
6338     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6339     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6340     if (jj_3R_92()) return true;
 
6341     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6345   static final private boolean jj_3R_85() {
 
6346     if (jj_3R_92()) return true;
 
6347     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6351       if (jj_3R_93()) { jj_scanpos = xsp; break; }
 
6352       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6357   static final private boolean jj_3_1() {
 
6358     if (jj_3R_39()) return true;
 
6359     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6363   static final private boolean jj_3R_143() {
 
6364     if (jj_3R_73()) return true;
 
6365     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6369   static final private boolean jj_3R_73() {
 
6370     if (jj_3R_90()) return true;
 
6371     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6375       if (jj_3_1()) { jj_scanpos = xsp; break; }
 
6376       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6381   static final private boolean jj_3R_195() {
 
6382     if (jj_scan_token(ARRAY)) return true;
 
6383     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6384     if (jj_3R_205()) return true;
 
6385     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6389   static final private boolean jj_3R_70() {
 
6390     if (jj_3R_85()) return true;
 
6391     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6394     if (jj_3R_86()) jj_scanpos = xsp;
 
6395     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6399   static final private boolean jj_3R_134() {
 
6400     if (jj_scan_token(COMMA)) return true;
 
6401     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6404     if (jj_3R_143()) jj_scanpos = xsp;
 
6405     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6409   static final private boolean jj_3R_133() {
 
6410     if (jj_3R_73()) return true;
 
6411     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6415   static final private boolean jj_3R_106() {
 
6416     if (jj_scan_token(TILDEEQUAL)) return true;
 
6417     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6421   static final private boolean jj_3R_105() {
 
6422     if (jj_scan_token(DOTASSIGN)) return true;
 
6423     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6427   static final private boolean jj_3R_104() {
 
6428     if (jj_scan_token(ORASSIGN)) return true;
 
6429     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6433   static final private boolean jj_3R_103() {
 
6434     if (jj_scan_token(XORASSIGN)) return true;
 
6435     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6439   static final private boolean jj_3R_102() {
 
6440     if (jj_scan_token(ANDASSIGN)) return true;
 
6441     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6445   static final private boolean jj_3R_101() {
 
6446     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
 
6447     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6451   static final private boolean jj_3R_100() {
 
6452     if (jj_scan_token(LSHIFTASSIGN)) return true;
 
6453     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6457   static final private boolean jj_3R_52() {
 
6458     if (jj_scan_token(STATICCLASSACCESS)) return true;
 
6459     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6460     if (jj_3R_69()) return true;
 
6461     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6465   static final private boolean jj_3R_99() {
 
6466     if (jj_scan_token(MINUSASSIGN)) return true;
 
6467     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6471   static final private boolean jj_3R_51() {
 
6472     if (jj_3R_39()) return true;
 
6473     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6477   static final private boolean jj_3R_98() {
 
6478     if (jj_scan_token(PLUSASSIGN)) return true;
 
6479     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6483   static final private boolean jj_3R_43() {
 
6490     if (jj_3R_52()) return true;
 
6491     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6492     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6493     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6497   static final private boolean jj_3R_50() {
 
6498     if (jj_3R_68()) return true;
 
6499     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6503   static final private boolean jj_3R_124() {
 
6504     if (jj_scan_token(LIST)) return true;
 
6505     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6506     if (jj_scan_token(LPAREN)) return true;
 
6507     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6510     if (jj_3R_133()) jj_scanpos = xsp;
 
6511     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6514       if (jj_3R_134()) { jj_scanpos = xsp; break; }
 
6515       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6517     if (jj_scan_token(RPAREN)) return true;
 
6518     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6520     if (jj_3R_135()) jj_scanpos = xsp;
 
6521     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6525   static final private boolean jj_3R_97() {
 
6526     if (jj_scan_token(REMASSIGN)) return true;
 
6527     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6531   static final private boolean jj_3R_96() {
 
6532     if (jj_scan_token(SLASHASSIGN)) return true;
 
6533     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6537   static final private boolean jj_3R_95() {
 
6538     if (jj_scan_token(STARASSIGN)) return true;
 
6539     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6543   static final private boolean jj_3R_94() {
 
6544     if (jj_scan_token(ASSIGN)) return true;
 
6545     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6549   static final private boolean jj_3R_87() {
 
6576     if (jj_3R_106()) return true;
 
6577     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6578     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6579     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6580     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6581     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6582     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6583     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6584     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6585     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6586     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6587     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6588     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6589     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6593   static final private boolean jj_3R_123() {
 
6594     if (jj_scan_token(PRINT)) return true;
 
6595     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6596     if (jj_3R_44()) return true;
 
6597     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6601   static final private boolean jj_3R_201() {
 
6602     if (jj_3R_73()) return true;
 
6603     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6607   static final private boolean jj_3R_116() {
 
6608     if (jj_3R_124()) return true;
 
6609     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6613   static final private boolean jj_3R_200() {
 
6614     if (jj_scan_token(NEW)) return true;
 
6615     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6616     if (jj_3R_69()) return true;
 
6617     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6621   static final private boolean jj_3R_107() {
 
6626     if (jj_3R_116()) return true;
 
6627     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6628     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6632   static final private boolean jj_3R_115() {
 
6633     if (jj_3R_123()) return true;
 
6634     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6638   static final private boolean jj_3R_199() {
 
6639     if (jj_scan_token(IDENTIFIER)) return true;
 
6640     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6644   static final private boolean jj_3R_194() {
 
6651     if (jj_3R_201()) return true;
 
6652     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6653     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6654     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6658   static final private boolean jj_3R_89() {
 
6659     if (jj_3R_107()) return true;
 
6660     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6664   static final private boolean jj_3R_88() {
 
6665     if (jj_scan_token(BANG)) return true;
 
6666     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6667     if (jj_3R_72()) return true;
 
6668     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6672   static final private boolean jj_3R_72() {
 
6677     if (jj_3R_89()) return true;
 
6678     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6679     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6683   static final private boolean jj_3_4() {
 
6684     if (jj_3R_43()) return true;
 
6685     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6689   static final private boolean jj_3R_193() {
 
6690     if (jj_3R_195()) return true;
 
6691     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6695   static final private boolean jj_3R_54() {
 
6696     if (jj_3R_72()) return true;
 
6697     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6701   static final private boolean jj_3R_204() {
 
6702     if (jj_3R_43()) return true;
 
6703     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6707   static final private boolean jj_3R_192() {
 
6708     if (jj_3R_194()) return true;
 
6709     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6713       if (jj_3R_204()) { jj_scanpos = xsp; break; }
 
6714       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6719   static final private boolean jj_3R_185() {
 
6724     if (jj_3R_193()) return true;
 
6725     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6726     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6730   static private boolean jj_initialized_once = false;
 
6731   static public PHPParserTokenManager token_source;
 
6732   static SimpleCharStream jj_input_stream;
 
6733   static public Token token, jj_nt;
 
6734   static private int jj_ntk;
 
6735   static private Token jj_scanpos, jj_lastpos;
 
6736   static private int jj_la;
 
6737   static public boolean lookingAhead = false;
 
6738   static private boolean jj_semLA;
 
6739   static private int jj_gen;
 
6740   static final private int[] jj_la1 = new int[123];
 
6741   static private int[] jj_la1_0;
 
6742   static private int[] jj_la1_1;
 
6743   static private int[] jj_la1_2;
 
6744   static private int[] jj_la1_3;
 
6745   static private int[] jj_la1_4;
 
6753    private static void jj_la1_0() {
 
6754       jj_la1_0 = new int[] {0xf960001e,0x6,0x6,0xf960001e,0x0,0xf9600000,0x0,0xc00000,0xc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x68000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x68000000,0x60000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x0,0x8000000,0x0,0x8000000,0x8000000,0x0,0x0,0x8000000,0x0,0x0,0x8000000,0x0,0x68000000,0x68000000,0x0,0x0,0x68000000,0x0,0x0,0x89000000,0xf9000000,0x8,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf9600010,0xf9600010,0xf9600000,0xe9600000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0xe9600010,0xe9600010,0x10000000,0x0,0x68000000,0xf9000010,0xf9000010,0x2000000,0x4000000,0xf9000010,0x2000000,0x4000000,0xf9000010,0xf9000010,0xf9000010,0xf9000010,0xf9000010,0xf9000000,0xf9000000,0x8000000,0x68000000,0x8000000,0xf9000000,0xf9000000,0x8000000,0x0,0x68000000,0x68000000,};
 
6756    private static void jj_la1_1() {
 
6757       jj_la1_1 = new int[] {0x875d507f,0x0,0x0,0x875d507f,0x0,0x875d507f,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3080000,0x200,0x30c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0x0,0x30c0000,0x0,0x30c0000,0x0,0x0,0x0,0x40000,0x40000,0x180,0x40000,0x0,0x30c0000,0x30c0000,0x80,0x3080000,0x30c0000,0x0,0x0,0x8455507f,0x875d507f,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x0,0x0,0x0,0x0,0x40000,0x0,0x2400,0x2400,0x875d507f,0x875d507f,0x0,0x2400,0x30c0000,0x875d507f,0x875d507f,0x0,0x0,0x875d507f,0x0,0x0,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x40000,0x30c0000,0x40000,0x875d507f,0x875d507f,0x40000,0x0,0x30c0000,0x30c0000,};
 
6759    private static void jj_la1_2() {
 
6760       jj_la1_2 = new int[] {0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x13c1c00,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x300000,0x0,0x13c1c00,0x0,0x1000000,0x0,0x1000800,0x1000000,0x3fe,0x0,0x13c1c00,0x1000,0x0,0x0,0x4000,0x80010000,0x80010000,0x20000,0x20000,0x0,0x2000000,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x70000000,0x70000000,0x300000,0x300000,0x8c00000,0x8c00000,0x13c1c00,0x3c1c00,0x300000,0x3c1800,0xc0000,0x1800,0x3fe,0xc0000,0xc0000,0x800,0x800,0x0,0x800,0xbfe,0x13c1ffe,0x13c1ffe,0x0,0x0,0x13c1c00,0x0,0x400,0xc0c00,0x13c1c00,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0xc0000,0xc0000,0xc0800,0x8000,0x0,0x0,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x0,0x13c9c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c9c00,0xc0800,0x13c1c00,0xc0800,0x13c1c00,0x13c9c00,0xc0800,0x0,0x13c1c00,0x13c1c00,};
 
6762    private static void jj_la1_3() {
 
6763       jj_la1_3 = new int[] {0x2288a2,0x0,0x0,0x2288a2,0x200000,0x2288a2,0x0,0x0,0x0,0x400000,0x0,0x20000,0x0,0x20000,0x20800,0x22,0x22,0x8a2,0x0,0x88a2,0x400000,0x0,0x400000,0x0,0x0,0x0,0x0,0x88a2,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x800000,0x0,0x0,0x0,0xe4000000,0xe4000000,0x1b000000,0x1b000000,0x0,0x0,0x0,0x0,0x0,0x0,0x88a2,0x88a2,0x0,0x88a2,0x0,0x88a2,0x0,0x0,0x0,0x800,0x800,0x88000,0x800,0x800,0x88a2,0x88a2,0x80000,0xa2,0x88a2,0x400000,0x0,0x220800,0x2288a2,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x400000,0x400000,0x400000,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x400000,0x0,0x0,0x0,0x800,0x20000,0x0,0x0,0x2288a2,0x2288a2,0x0,0x0,0x88a2,0x2288a2,0x2288a2,0x0,0x0,0x2288a2,0x0,0x0,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x800,0x88a2,0x800,0x2288a2,0x2288a2,0x800,0x400000,0x88a2,0x88a2,};
 
6765    private static void jj_la1_4() {
 
6766       jj_la1_4 = new int[] {0x4000,0x0,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x2,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x0,0x3ffe,0x4000,0x0,0x0,0x3ffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x4000,0x4000,0x0,0x4000,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x0,0x0,0x0,0x4000,0x0,0x4000,0x2,0x0,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x0,0x2,0x3ffe,0x3ffe,0x4000,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x0,0x4000,0x4000,};
 
6768   static final private JJCalls[] jj_2_rtns = new JJCalls[7];
 
6769   static private boolean jj_rescan = false;
 
6770   static private int jj_gc = 0;
 
6772   public PHPParser(java.io.InputStream stream) {
 
6773     if (jj_initialized_once) {
 
6774       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6775       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6776       System.out.println("       during parser generation.");
 
6779     jj_initialized_once = true;
 
6780     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6781     token_source = new PHPParserTokenManager(jj_input_stream);
 
6782     token = new Token();
 
6785     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6786     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6789   static public void ReInit(java.io.InputStream stream) {
 
6790     jj_input_stream.ReInit(stream, 1, 1);
 
6791     token_source.ReInit(jj_input_stream);
 
6792     token = new Token();
 
6795     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6796     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6799   public PHPParser(java.io.Reader stream) {
 
6800     if (jj_initialized_once) {
 
6801       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6802       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6803       System.out.println("       during parser generation.");
 
6806     jj_initialized_once = true;
 
6807     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6808     token_source = new PHPParserTokenManager(jj_input_stream);
 
6809     token = new Token();
 
6812     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6813     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6816   static public void ReInit(java.io.Reader stream) {
 
6817     jj_input_stream.ReInit(stream, 1, 1);
 
6818     token_source.ReInit(jj_input_stream);
 
6819     token = new Token();
 
6822     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6823     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6826   public PHPParser(PHPParserTokenManager tm) {
 
6827     if (jj_initialized_once) {
 
6828       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6829       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6830       System.out.println("       during parser generation.");
 
6833     jj_initialized_once = true;
 
6835     token = new Token();
 
6838     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6839     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6842   public void ReInit(PHPParserTokenManager tm) {
 
6844     token = new Token();
 
6847     for (int i = 0; i < 123; i++) jj_la1[i] = -1;
 
6848     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6851   static final private Token jj_consume_token(int kind) throws ParseException {
 
6853     if ((oldToken = token).next != null) token = token.next;
 
6854     else token = token.next = token_source.getNextToken();
 
6856     if (token.kind == kind) {
 
6858       if (++jj_gc > 100) {
 
6860         for (int i = 0; i < jj_2_rtns.length; i++) {
 
6861           JJCalls c = jj_2_rtns[i];
 
6863             if (c.gen < jj_gen) c.first = null;
 
6872     throw generateParseException();
 
6875   static final private boolean jj_scan_token(int kind) {
 
6876     if (jj_scanpos == jj_lastpos) {
 
6878       if (jj_scanpos.next == null) {
 
6879         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
 
6881         jj_lastpos = jj_scanpos = jj_scanpos.next;
 
6884       jj_scanpos = jj_scanpos.next;
 
6887       int i = 0; Token tok = token;
 
6888       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
 
6889       if (tok != null) jj_add_error_token(kind, i);
 
6891     return (jj_scanpos.kind != kind);
 
6894   static final public Token getNextToken() {
 
6895     if (token.next != null) token = token.next;
 
6896     else token = token.next = token_source.getNextToken();
 
6902   static final public Token getToken(int index) {
 
6903     Token t = lookingAhead ? jj_scanpos : token;
 
6904     for (int i = 0; i < index; i++) {
 
6905       if (t.next != null) t = t.next;
 
6906       else t = t.next = token_source.getNextToken();
 
6911   static final private int jj_ntk() {
 
6912     if ((jj_nt=token.next) == null)
 
6913       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
 
6915       return (jj_ntk = jj_nt.kind);
 
6918   static private java.util.Vector jj_expentries = new java.util.Vector();
 
6919   static private int[] jj_expentry;
 
6920   static private int jj_kind = -1;
 
6921   static private int[] jj_lasttokens = new int[100];
 
6922   static private int jj_endpos;
 
6924   static private void jj_add_error_token(int kind, int pos) {
 
6925     if (pos >= 100) return;
 
6926     if (pos == jj_endpos + 1) {
 
6927       jj_lasttokens[jj_endpos++] = kind;
 
6928     } else if (jj_endpos != 0) {
 
6929       jj_expentry = new int[jj_endpos];
 
6930       for (int i = 0; i < jj_endpos; i++) {
 
6931         jj_expentry[i] = jj_lasttokens[i];
 
6933       boolean exists = false;
 
6934       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
 
6935         int[] oldentry = (int[])(enum.nextElement());
 
6936         if (oldentry.length == jj_expentry.length) {
 
6938           for (int i = 0; i < jj_expentry.length; i++) {
 
6939             if (oldentry[i] != jj_expentry[i]) {
 
6947       if (!exists) jj_expentries.addElement(jj_expentry);
 
6948       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
 
6952   static public ParseException generateParseException() {
 
6953     jj_expentries.removeAllElements();
 
6954     boolean[] la1tokens = new boolean[143];
 
6955     for (int i = 0; i < 143; i++) {
 
6956       la1tokens[i] = false;
 
6959       la1tokens[jj_kind] = true;
 
6962     for (int i = 0; i < 123; i++) {
 
6963       if (jj_la1[i] == jj_gen) {
 
6964         for (int j = 0; j < 32; j++) {
 
6965           if ((jj_la1_0[i] & (1<<j)) != 0) {
 
6966             la1tokens[j] = true;
 
6968           if ((jj_la1_1[i] & (1<<j)) != 0) {
 
6969             la1tokens[32+j] = true;
 
6971           if ((jj_la1_2[i] & (1<<j)) != 0) {
 
6972             la1tokens[64+j] = true;
 
6974           if ((jj_la1_3[i] & (1<<j)) != 0) {
 
6975             la1tokens[96+j] = true;
 
6977           if ((jj_la1_4[i] & (1<<j)) != 0) {
 
6978             la1tokens[128+j] = true;
 
6983     for (int i = 0; i < 143; i++) {
 
6985         jj_expentry = new int[1];
 
6987         jj_expentries.addElement(jj_expentry);
 
6992     jj_add_error_token(0, 0);
 
6993     int[][] exptokseq = new int[jj_expentries.size()][];
 
6994     for (int i = 0; i < jj_expentries.size(); i++) {
 
6995       exptokseq[i] = (int[])jj_expentries.elementAt(i);
 
6997     return new ParseException(token, exptokseq, tokenImage);
 
7000   static final public void enable_tracing() {
 
7003   static final public void disable_tracing() {
 
7006   static final private void jj_rescan_token() {
 
7008     for (int i = 0; i < 7; i++) {
 
7009       JJCalls p = jj_2_rtns[i];
 
7011         if (p.gen > jj_gen) {
 
7012           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
 
7014             case 0: jj_3_1(); break;
 
7015             case 1: jj_3_2(); break;
 
7016             case 2: jj_3_3(); break;
 
7017             case 3: jj_3_4(); break;
 
7018             case 4: jj_3_5(); break;
 
7019             case 5: jj_3_6(); break;
 
7020             case 6: jj_3_7(); break;
 
7024       } while (p != null);
 
7029   static final private void jj_save(int index, int xla) {
 
7030     JJCalls p = jj_2_rtns[index];
 
7031     while (p.gen > jj_gen) {
 
7032       if (p.next == null) { p = p.next = new JJCalls(); break; }
 
7035     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
 
7038   static final class JJCalls {