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
 
  30 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
 
  32   /** The current segment. */
 
  33   private static OutlineableWithChildren currentSegment;
 
  35   private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
 
  36   private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
 
  37   static PHPOutlineInfo outlineInfo;
 
  39   /** The error level of the current ParseException. */
 
  40   private static int errorLevel = ERROR;
 
  41   /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
 
  42   private static String errorMessage;
 
  44   private static int errorStart = -1;
 
  45   private static int errorEnd = -1;
 
  46   private static PHPDocument phpDocument;
 
  48   private static final char[] SYNTAX_ERROR_CHAR = {'s','y','n','t','a','x',' ','e','r','r','o','r'};
 
  50    * The point where html starts.
 
  51    * It will be used by the token manager to create HTMLCode objects
 
  53   public static int htmlStart;
 
  56   private final static int AstStackIncrement = 100;
 
  57   /** The stack of node. */
 
  58   private static AstNode[] nodes;
 
  59   /** The cursor in expression stack. */
 
  60   private static int nodePtr;
 
  62   private static final boolean PARSER_DEBUG = false;
 
  64   public final void setFileToParse(final IFile fileToParse) {
 
  65     PHPParser.fileToParse = fileToParse;
 
  71   public PHPParser(final IFile fileToParse) {
 
  72     this(new StringReader(""));
 
  73     PHPParser.fileToParse = fileToParse;
 
  77    * Reinitialize the parser.
 
  79   private static final void init() {
 
  80     nodes = new AstNode[AstStackIncrement];
 
  86    * Add an php node on the stack.
 
  87    * @param node the node that will be added to the stack
 
  89   private static final void pushOnAstNodes(final AstNode node) {
 
  91       nodes[++nodePtr] = node;
 
  92     } catch (IndexOutOfBoundsException e) {
 
  93       final int oldStackLength = nodes.length;
 
  94       final AstNode[] oldStack = nodes;
 
  95       nodes = new AstNode[oldStackLength + AstStackIncrement];
 
  96       System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
 
  97       nodePtr = oldStackLength;
 
  98       nodes[nodePtr] = node;
 
 102   public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
 
 103     phpDocument = new PHPDocument(parent,"_root".toCharArray());
 
 104     currentSegment = phpDocument;
 
 105     outlineInfo = new PHPOutlineInfo(parent, currentSegment);
 
 106     final StringReader stream = new StringReader(s);
 
 107     if (jj_input_stream == null) {
 
 108       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 114       phpDocument.nodes = new AstNode[nodes.length];
 
 115       System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length);
 
 116       if (PHPeclipsePlugin.DEBUG) {
 
 117         PHPeclipsePlugin.log(1,phpDocument.toString());
 
 119     } catch (ParseException e) {
 
 120       processParseException(e);
 
 126    * This method will process the parse exception.
 
 127    * If the error message is null, the parse exception wasn't catched and a trace is written in the log
 
 128    * @param e the ParseException
 
 130   private static void processParseException(final ParseException e) {
 
 135     if (errorMessage == null) {
 
 136       PHPeclipsePlugin.log(e);
 
 137       errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
 
 138       errorStart = SimpleCharStream.getPosition();
 
 139       errorEnd   = errorStart + 1;
 
 143   //  if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e);
 
 147    * Create marker for the parse error.
 
 148    * @param e the ParseException
 
 150   private static void setMarker(final ParseException e) {
 
 152       if (errorStart == -1) {
 
 153         setMarker(fileToParse,
 
 155                   SimpleCharStream.tokenBegin,
 
 156                   SimpleCharStream.tokenBegin + e.currentToken.image.length(),
 
 158                   "Line " + e.currentToken.beginLine);
 
 160         setMarker(fileToParse,
 
 165                   "Line " + e.currentToken.beginLine);
 
 169     } catch (CoreException e2) {
 
 170       PHPeclipsePlugin.log(e2);
 
 174   private static void scanLine(final String output,
 
 177                                final int brIndx) throws CoreException {
 
 179     final StringBuffer lineNumberBuffer = new StringBuffer(10);
 
 181     current = output.substring(indx, brIndx);
 
 183     if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
 
 184       final int onLine = current.indexOf("on line <b>");
 
 186         lineNumberBuffer.delete(0, lineNumberBuffer.length());
 
 187         for (int i = onLine; i < current.length(); i++) {
 
 188           ch = current.charAt(i);
 
 189           if ('0' <= ch && '9' >= ch) {
 
 190             lineNumberBuffer.append(ch);
 
 194         final int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
 
 196         final Hashtable attributes = new Hashtable();
 
 198         current = current.replaceAll("\n", "");
 
 199         current = current.replaceAll("<b>", "");
 
 200         current = current.replaceAll("</b>", "");
 
 201         MarkerUtilities.setMessage(attributes, current);
 
 203         if (current.indexOf(PARSE_ERROR_STRING) != -1)
 
 204           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
 
 205         else if (current.indexOf(PARSE_WARNING_STRING) != -1)
 
 206           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
 
 208           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
 
 209         MarkerUtilities.setLineNumber(attributes, lineNumber);
 
 210         MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
 
 215   public final void parse(final String s) throws CoreException {
 
 216     final StringReader stream = new StringReader(s);
 
 217     if (jj_input_stream == null) {
 
 218       jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
 224     } catch (ParseException e) {
 
 225       processParseException(e);
 
 230    * Call the php parse command ( php -l -f <filename> )
 
 231    * and create markers according to the external parser output
 
 233   public static void phpExternalParse(final IFile file) {
 
 234     final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
 
 235     final String filename = file.getLocation().toString();
 
 237     final String[] arguments = { filename };
 
 238     final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
 
 239     final String command = form.format(arguments);
 
 241     final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
 
 244       // parse the buffer to find the errors and warnings
 
 245       createMarkers(parserResult, file);
 
 246     } catch (CoreException e) {
 
 247       PHPeclipsePlugin.log(e);
 
 252    * Put a new html block in the stack.
 
 254   public static final void createNewHTMLCode() {
 
 255     final int currentPosition = SimpleCharStream.getPosition();
 
 256     if (currentPosition == htmlStart || currentPosition > SimpleCharStream.currentBuffer.length()) {
 
 259     final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition+1).toCharArray();
 
 260     pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
 
 263   /** Create a new task. */
 
 264   public static final void createNewTask() {
 
 265     final int currentPosition = SimpleCharStream.getPosition();
 
 266     final String  todo = SimpleCharStream.currentBuffer.substring(currentPosition-3,
 
 267                                                                   SimpleCharStream.currentBuffer.indexOf("\n",
 
 269     PHPeclipsePlugin.log(1,SimpleCharStream.currentBuffer.toString());
 
 271       setMarker(fileToParse,
 
 273                 SimpleCharStream.getBeginLine(),
 
 275                 "Line "+SimpleCharStream.getBeginLine());
 
 276     } catch (CoreException e) {
 
 277       PHPeclipsePlugin.log(e);
 
 281   private static final void parse() throws ParseException {
 
 285   static final public void phpFile() throws ParseException {
 
 289         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 328         case INTEGER_LITERAL:
 
 329         case FLOATING_POINT_LITERAL:
 
 344      PHPParser.createNewHTMLCode();
 
 345     } catch (TokenMgrError e) {
 
 346     PHPeclipsePlugin.log(e);
 
 347     errorStart   = SimpleCharStream.getPosition();
 
 348     errorEnd     = errorStart + 1;
 
 349     errorMessage = e.getMessage();
 
 351     {if (true) throw generateParseException();}
 
 356  * A php block is a <?= expression [;]?>
 
 357  * or <?php somephpcode ?>
 
 358  * or <? somephpcode ?>
 
 360   static final public void PhpBlock() throws ParseException {
 
 361   final int start = SimpleCharStream.getPosition();
 
 362   final PHPEchoBlock phpEchoBlock;
 
 363     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 365       phpEchoBlock = phpEchoBlock();
 
 366    pushOnAstNodes(phpEchoBlock);
 
 405     case INTEGER_LITERAL:
 
 406     case FLOATING_POINT_LITERAL:
 
 413       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 416         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 418           jj_consume_token(PHPSTARTLONG);
 
 421           jj_consume_token(PHPSTARTSHORT);
 
 423       setMarker(fileToParse,
 
 424                 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
 
 426                 SimpleCharStream.getPosition(),
 
 428                 "Line " + token.beginLine);
 
 429     } catch (CoreException e) {
 
 430       PHPeclipsePlugin.log(e);
 
 435           jj_consume_token(-1);
 
 436           throw new ParseException();
 
 445         jj_consume_token(PHPEND);
 
 446       } catch (ParseException e) {
 
 447     errorMessage = "'?>' expected";
 
 449     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 450     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 451     processParseException(e);
 
 456       jj_consume_token(-1);
 
 457       throw new ParseException();
 
 461   static final public PHPEchoBlock phpEchoBlock() throws ParseException {
 
 462   final Expression expr;
 
 463   final int pos = SimpleCharStream.getPosition();
 
 464   final PHPEchoBlock echoBlock;
 
 465     jj_consume_token(PHPECHOSTART);
 
 467     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 469       jj_consume_token(SEMICOLON);
 
 475     jj_consume_token(PHPEND);
 
 476   echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition());
 
 477   pushOnAstNodes(echoBlock);
 
 478   {if (true) return echoBlock;}
 
 479     throw new Error("Missing return statement in function");
 
 482   static final public void Php() throws ParseException {
 
 485       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 520       case INTEGER_LITERAL:
 
 521       case FLOATING_POINT_LITERAL:
 
 538   static final public ClassDeclaration ClassDeclaration() throws ParseException {
 
 539   final ClassDeclaration classDeclaration;
 
 540   final Token className,superclassName;
 
 542   char[] classNameImage = SYNTAX_ERROR_CHAR;
 
 543   char[] superclassNameImage = null;
 
 544     jj_consume_token(CLASS);
 
 545    pos = SimpleCharStream.getPosition();
 
 547       className = jj_consume_token(IDENTIFIER);
 
 548      classNameImage = className.image.toCharArray();
 
 549     } catch (ParseException e) {
 
 550     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 552     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 553     errorEnd     = SimpleCharStream.getPosition() + 1;
 
 554     processParseException(e);
 
 556     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 558       jj_consume_token(EXTENDS);
 
 560         superclassName = jj_consume_token(IDENTIFIER);
 
 561        superclassNameImage = superclassName.image.toCharArray();
 
 562       } catch (ParseException e) {
 
 563       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
 
 565       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 566       errorEnd   = SimpleCharStream.getPosition() + 1;
 
 567       processParseException(e);
 
 568       superclassNameImage = SYNTAX_ERROR_CHAR;
 
 575     if (superclassNameImage == null) {
 
 576       classDeclaration = new ClassDeclaration(currentSegment,
 
 581       classDeclaration = new ClassDeclaration(currentSegment,
 
 587       currentSegment.add(classDeclaration);
 
 588       currentSegment = classDeclaration;
 
 589     ClassBody(classDeclaration);
 
 590    currentSegment = (OutlineableWithChildren) currentSegment.getParent();
 
 591    classDeclaration.sourceEnd = SimpleCharStream.getPosition();
 
 592    pushOnAstNodes(classDeclaration);
 
 593    {if (true) return classDeclaration;}
 
 594     throw new Error("Missing return statement in function");
 
 597   static final public void ClassBody(final ClassDeclaration classDeclaration) throws ParseException {
 
 599       jj_consume_token(LBRACE);
 
 600     } catch (ParseException e) {
 
 601     errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
 
 603     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 604     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 605     processParseException(e);
 
 609       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 618       ClassBodyDeclaration(classDeclaration);
 
 621       jj_consume_token(RBRACE);
 
 622     } catch (ParseException e) {
 
 623     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
 
 625     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 626     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 627     processParseException(e);
 
 632  * A class can contain only methods and fields.
 
 634   static final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException {
 
 635   final MethodDeclaration method;
 
 636   final FieldDeclaration field;
 
 637     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 639       method = MethodDeclaration();
 
 640                                 method.analyzeCode();
 
 641                                 classDeclaration.addMethod(method);
 
 644       field = FieldDeclaration();
 
 645                                 classDeclaration.addField(field);
 
 649       jj_consume_token(-1);
 
 650       throw new ParseException();
 
 655  * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
 
 656  * it is only used by ClassBodyDeclaration()
 
 658   static final public FieldDeclaration FieldDeclaration() throws ParseException {
 
 659   VariableDeclaration variableDeclaration;
 
 660   final VariableDeclaration[] list;
 
 661   final ArrayList arrayList = new ArrayList();
 
 662   final int pos = SimpleCharStream.getPosition();
 
 663     jj_consume_token(VAR);
 
 664     variableDeclaration = VariableDeclaratorNoSuffix();
 
 665    arrayList.add(variableDeclaration);
 
 666    outlineInfo.addVariable(new String(variableDeclaration.name));
 
 669       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 677       jj_consume_token(COMMA);
 
 678       variableDeclaration = VariableDeclaratorNoSuffix();
 
 679        arrayList.add(variableDeclaration);
 
 680        outlineInfo.addVariable(new String(variableDeclaration.name));
 
 683       jj_consume_token(SEMICOLON);
 
 684     } catch (ParseException e) {
 
 685     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
 
 687     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 688     errorEnd     = SimpleCharStream.getPosition() + 1;
 
 689     processParseException(e);
 
 691    list = new VariableDeclaration[arrayList.size()];
 
 692    arrayList.toArray(list);
 
 693    {if (true) return new FieldDeclaration(list,
 
 695                                SimpleCharStream.getPosition(),
 
 697     throw new Error("Missing return statement in function");
 
 701  * a strict variable declarator : there cannot be a suffix here.
 
 703   static final public VariableDeclaration VariableDeclaratorNoSuffix() throws ParseException {
 
 705   Expression initializer = null;
 
 706   final int pos = SimpleCharStream.getPosition();
 
 707     varName = jj_consume_token(DOLLAR_ID);
 
 708     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 710       jj_consume_token(ASSIGN);
 
 712         initializer = VariableInitializer();
 
 713       } catch (ParseException e) {
 
 714       errorMessage = "Literal expression expected in variable initializer";
 
 716       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 717       errorEnd   = SimpleCharStream.getPosition() + 1;
 
 718       processParseException(e);
 
 725   if (initializer == null) {
 
 726     {if (true) return new VariableDeclaration(currentSegment,
 
 727                                    varName.image.substring(1).toCharArray(),
 
 729                                    SimpleCharStream.getPosition());}
 
 731   {if (true) return new VariableDeclaration(currentSegment,
 
 732                                  varName.image.substring(1).toCharArray(),
 
 734                                  VariableDeclaration.EQUAL,
 
 736     throw new Error("Missing return statement in function");
 
 739   static final public VariableDeclaration VariableDeclarator() throws ParseException {
 
 740   final String varName;
 
 741   Expression initializer = null;
 
 742   final int pos = SimpleCharStream.getPosition();
 
 743     varName = VariableDeclaratorId();
 
 744     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 746       jj_consume_token(ASSIGN);
 
 748         initializer = VariableInitializer();
 
 749       } catch (ParseException e) {
 
 750       errorMessage = "Literal expression expected in variable initializer";
 
 752       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 753       errorEnd   = SimpleCharStream.getPosition() + 1;
 
 754       processParseException(e);
 
 761   if (initializer == null) {
 
 762     {if (true) return new VariableDeclaration(currentSegment,
 
 763                                   varName.toCharArray(),
 
 765                                   SimpleCharStream.getPosition());}
 
 767     {if (true) return new VariableDeclaration(currentSegment,
 
 768                                     varName.toCharArray(),
 
 770                                     VariableDeclaration.EQUAL,
 
 772     throw new Error("Missing return statement in function");
 
 777  * @return the variable name (with suffix)
 
 779   static final public String VariableDeclaratorId() throws ParseException {
 
 781   Expression expression = null;
 
 782   final int pos = SimpleCharStream.getPosition();
 
 783   ConstantIdentifier ex;
 
 793        ex = new ConstantIdentifier(var.toCharArray(),
 
 795                                    SimpleCharStream.getPosition());
 
 796         expression = VariableSuffix(ex);
 
 798      if (expression == null) {
 
 799        {if (true) return var;}
 
 801      {if (true) return expression.toStringExpression();}
 
 802     } catch (ParseException e) {
 
 803     errorMessage = "'$' expected for variable identifier";
 
 805     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
 806     errorEnd   = SimpleCharStream.getPosition() + 1;
 
 809     throw new Error("Missing return statement in function");
 
 813  * Return a variablename without the $.
 
 814  * @return a variable name
 
 816   static final public String Variable() throws ParseException {
 
 817   final StringBuffer buff;
 
 818   Expression expression = null;
 
 821     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 823       token = jj_consume_token(DOLLAR_ID);
 
 824       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 826         jj_consume_token(LBRACE);
 
 827         expression = Expression();
 
 828         jj_consume_token(RBRACE);
 
 834     if (expression == null) {
 
 835       {if (true) return token.image.substring(1);}
 
 837     buff = new StringBuffer(token.image);
 
 839     buff.append(expression.toStringExpression());
 
 841     {if (true) return buff.toString();}
 
 844       jj_consume_token(DOLLAR);
 
 845       expr = VariableName();
 
 846    {if (true) return expr;}
 
 850       jj_consume_token(-1);
 
 851       throw new ParseException();
 
 853     throw new Error("Missing return statement in function");
 
 857  * A Variable name (without the $)
 
 858  * @return a variable name String
 
 860   static final public String VariableName() throws ParseException {
 
 861   final StringBuffer buff;
 
 863   Expression expression = null;
 
 865     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 867       jj_consume_token(LBRACE);
 
 868       expression = Expression();
 
 869       jj_consume_token(RBRACE);
 
 870    buff = new StringBuffer("{");
 
 871    buff.append(expression.toStringExpression());
 
 873    {if (true) return buff.toString();}
 
 876       token = jj_consume_token(IDENTIFIER);
 
 877       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 879         jj_consume_token(LBRACE);
 
 880         expression = Expression();
 
 881         jj_consume_token(RBRACE);
 
 887     if (expression == null) {
 
 888       {if (true) return token.image;}
 
 890     buff = new StringBuffer(token.image);
 
 892     buff.append(expression.toStringExpression());
 
 894     {if (true) return buff.toString();}
 
 897       jj_consume_token(DOLLAR);
 
 898       expr = VariableName();
 
 899     buff = new StringBuffer("$");
 
 901     {if (true) return buff.toString();}
 
 904       token = jj_consume_token(DOLLAR_ID);
 
 905                        {if (true) return token.image;}
 
 909       jj_consume_token(-1);
 
 910       throw new ParseException();
 
 912     throw new Error("Missing return statement in function");
 
 915   static final public Expression VariableInitializer() throws ParseException {
 
 916   final Expression expr;
 
 918   final int pos = SimpleCharStream.getPosition();
 
 919     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 923     case INTEGER_LITERAL:
 
 924     case FLOATING_POINT_LITERAL:
 
 927    {if (true) return expr;}
 
 930       jj_consume_token(MINUS);
 
 931       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 932       case INTEGER_LITERAL:
 
 933         token = jj_consume_token(INTEGER_LITERAL);
 
 935       case FLOATING_POINT_LITERAL:
 
 936         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 940         jj_consume_token(-1);
 
 941         throw new ParseException();
 
 943    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 945                                                         SimpleCharStream.getPosition()),
 
 950       jj_consume_token(PLUS);
 
 951       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 952       case INTEGER_LITERAL:
 
 953         token = jj_consume_token(INTEGER_LITERAL);
 
 955       case FLOATING_POINT_LITERAL:
 
 956         token = jj_consume_token(FLOATING_POINT_LITERAL);
 
 960         jj_consume_token(-1);
 
 961         throw new ParseException();
 
 963    {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
 
 965                                                         SimpleCharStream.getPosition()),
 
 970       expr = ArrayDeclarator();
 
 971    {if (true) return expr;}
 
 974       token = jj_consume_token(IDENTIFIER);
 
 975    {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());}
 
 979       jj_consume_token(-1);
 
 980       throw new ParseException();
 
 982     throw new Error("Missing return statement in function");
 
 985   static final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
 
 986 final Expression expr,expr2;
 
 988     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
 990       jj_consume_token(ARRAYASSIGN);
 
 991       expr2 = Expression();
 
 992      {if (true) return new ArrayVariableDeclaration(expr,expr2);}
 
 998    {if (true) return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
 
 999     throw new Error("Missing return statement in function");
 
1002   static final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
 
1003   ArrayVariableDeclaration expr;
 
1004   final ArrayList list = new ArrayList();
 
1005     jj_consume_token(LPAREN);
 
1006     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1022     case INTEGER_LITERAL:
 
1023     case FLOATING_POINT_LITERAL:
 
1024     case STRING_LITERAL:
 
1028       expr = ArrayVariable();
 
1037         jj_consume_token(COMMA);
 
1038         expr = ArrayVariable();
 
1043       jj_la1[20] = jj_gen;
 
1046     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1048       jj_consume_token(COMMA);
 
1052       jj_la1[21] = jj_gen;
 
1055     jj_consume_token(RPAREN);
 
1056   final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
 
1058   {if (true) return vars;}
 
1059     throw new Error("Missing return statement in function");
 
1063  * A Method Declaration.
 
1064  * <b>function</b> MetodDeclarator() Block()
 
1066   static final public MethodDeclaration MethodDeclaration() throws ParseException {
 
1067   final MethodDeclaration functionDeclaration;
 
1069   final OutlineableWithChildren seg = currentSegment;
 
1070     jj_consume_token(FUNCTION);
 
1072       functionDeclaration = MethodDeclarator();
 
1073      outlineInfo.addVariable(new String(functionDeclaration.name));
 
1074     } catch (ParseException e) {
 
1075     if (errorMessage != null)  {if (true) throw e;}
 
1076     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1078     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1079     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1080     {if (true) throw e;}
 
1082    currentSegment = functionDeclaration;
 
1084    functionDeclaration.statements = block.statements;
 
1085    currentSegment = seg;
 
1086    {if (true) return functionDeclaration;}
 
1087     throw new Error("Missing return statement in function");
 
1091  * A MethodDeclarator.
 
1092  * [&] IDENTIFIER(parameters ...).
 
1093  * @return a function description for the outline
 
1095   static final public MethodDeclaration MethodDeclarator() throws ParseException {
 
1096   final Token identifier;
 
1097   Token reference = null;
 
1098   final Hashtable formalParameters;
 
1099   final int pos = SimpleCharStream.getPosition();
 
1100   char[] identifierChar = SYNTAX_ERROR_CHAR;
 
1101     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1103       reference = jj_consume_token(BIT_AND);
 
1106       jj_la1[22] = jj_gen;
 
1110       identifier = jj_consume_token(IDENTIFIER);
 
1111      identifierChar = identifier.image.toCharArray();
 
1112     } catch (ParseException e) {
 
1113     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
 
1115     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1116     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1117     processParseException(e);
 
1119     formalParameters = FormalParameters();
 
1120    MethodDeclaration method =  new MethodDeclaration(currentSegment,
 
1125                                                      SimpleCharStream.getPosition());
 
1126    {if (true) return method;}
 
1127     throw new Error("Missing return statement in function");
 
1131  * FormalParameters follows method identifier.
 
1132  * (FormalParameter())
 
1134   static final public Hashtable FormalParameters() throws ParseException {
 
1135   VariableDeclaration var;
 
1136   final Hashtable parameters = new Hashtable();
 
1138       jj_consume_token(LPAREN);
 
1139     } catch (ParseException e) {
 
1140     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
 
1142     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1143     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1144     processParseException(e);
 
1146     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1149       var = FormalParameter();
 
1150      parameters.put(new String(var.name),var);
 
1153         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1158           jj_la1[23] = jj_gen;
 
1161         jj_consume_token(COMMA);
 
1162         var = FormalParameter();
 
1163        parameters.put(new String(var.name),var);
 
1167       jj_la1[24] = jj_gen;
 
1171       jj_consume_token(RPAREN);
 
1172     } catch (ParseException e) {
 
1173     errorMessage = "')' expected";
 
1175     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1176     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1177     processParseException(e);
 
1179   {if (true) return parameters;}
 
1180     throw new Error("Missing return statement in function");
 
1184  * A formal parameter.
 
1185  * $varname[=value] (,$varname[=value])
 
1187   static final public VariableDeclaration FormalParameter() throws ParseException {
 
1188   final VariableDeclaration variableDeclaration;
 
1190     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1192       token = jj_consume_token(BIT_AND);
 
1195       jj_la1[25] = jj_gen;
 
1198     variableDeclaration = VariableDeclaratorNoSuffix();
 
1199     if (token != null) {
 
1200       variableDeclaration.setReference(true);
 
1202     {if (true) return variableDeclaration;}
 
1203     throw new Error("Missing return statement in function");
 
1206   static final public ConstantIdentifier Type() throws ParseException {
 
1208     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1210       jj_consume_token(STRING);
 
1211                         pos = SimpleCharStream.getPosition();
 
1212                         {if (true) return new ConstantIdentifier(Types.STRING,pos,pos-6);}
 
1215       jj_consume_token(BOOL);
 
1216                         pos = SimpleCharStream.getPosition();
 
1217                         {if (true) return new ConstantIdentifier(Types.BOOL,pos,pos-4);}
 
1220       jj_consume_token(BOOLEAN);
 
1221                         pos = SimpleCharStream.getPosition();
 
1222                         {if (true) return new ConstantIdentifier(Types.BOOLEAN,pos,pos-7);}
 
1225       jj_consume_token(REAL);
 
1226                         pos = SimpleCharStream.getPosition();
 
1227                         {if (true) return new ConstantIdentifier(Types.REAL,pos,pos-4);}
 
1230       jj_consume_token(DOUBLE);
 
1231                         pos = SimpleCharStream.getPosition();
 
1232                         {if (true) return new ConstantIdentifier(Types.DOUBLE,pos,pos-5);}
 
1235       jj_consume_token(FLOAT);
 
1236                         pos = SimpleCharStream.getPosition();
 
1237                         {if (true) return new ConstantIdentifier(Types.FLOAT,pos,pos-5);}
 
1240       jj_consume_token(INT);
 
1241                         pos = SimpleCharStream.getPosition();
 
1242                         {if (true) return new ConstantIdentifier(Types.INT,pos,pos-3);}
 
1245       jj_consume_token(INTEGER);
 
1246                         pos = SimpleCharStream.getPosition();
 
1247                         {if (true) return new ConstantIdentifier(Types.INTEGER,pos,pos-7);}
 
1250       jj_consume_token(OBJECT);
 
1251                         pos = SimpleCharStream.getPosition();
 
1252                         {if (true) return new ConstantIdentifier(Types.OBJECT,pos,pos-6);}
 
1255       jj_la1[26] = jj_gen;
 
1256       jj_consume_token(-1);
 
1257       throw new ParseException();
 
1259     throw new Error("Missing return statement in function");
 
1262   static final public Expression Expression() throws ParseException {
 
1263   final Expression expr;
 
1264   Expression initializer = null;
 
1265   final int pos = SimpleCharStream.getPosition();
 
1266     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1278     case INTEGER_LITERAL:
 
1279     case FLOATING_POINT_LITERAL:
 
1280     case STRING_LITERAL:
 
1283       expr = ConditionalExpression();
 
1284                                   {if (true) return expr;}
 
1291       expr = ExpressionWBang();
 
1292                                   {if (true) return expr;}
 
1295       jj_la1[27] = jj_gen;
 
1296       jj_consume_token(-1);
 
1297       throw new ParseException();
 
1299     throw new Error("Missing return statement in function");
 
1302   static final public Expression ExpressionWBang() throws ParseException {
 
1303   final Expression expr;
 
1304   final int pos = SimpleCharStream.getPosition();
 
1305     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1307       jj_consume_token(BANG);
 
1308       expr = ExpressionWBang();
 
1309                                    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);}
 
1315       expr = ExpressionNoBang();
 
1316                              {if (true) return expr;}
 
1319       jj_la1[28] = jj_gen;
 
1320       jj_consume_token(-1);
 
1321       throw new ParseException();
 
1323     throw new Error("Missing return statement in function");
 
1326   static final public Expression ExpressionNoBang() throws ParseException {
 
1327   Expression expr = null;
 
1328   int assignOperator = -1;
 
1330   final int pos = SimpleCharStream.getPosition();
 
1331     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1333       expr = PrintExpression();
 
1334                               {if (true) return expr;}
 
1337       expr = ListExpression();
 
1338                               {if (true) return expr;}
 
1342       var = VariableDeclaratorId();
 
1343       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1356       case RSIGNEDSHIFTASSIGN:
 
1357         assignOperator = AssignmentOperator();
 
1359           expr = Expression();
 
1360         } catch (ParseException e) {
 
1361       if (errorMessage != null) {
 
1362         {if (true) throw e;}
 
1364       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1366       errorEnd   = SimpleCharStream.getPosition();
 
1367       {if (true) throw e;}
 
1371         jj_la1[29] = jj_gen;
 
1374     if (assignOperator == -1) {
 
1375       {if (true) return new VariableDeclaration(currentSegment,
 
1378                                      SimpleCharStream.getPosition());}
 
1380     {if (true) return new VariableDeclaration(currentSegment,
 
1385    {if (true) return expr;}
 
1388       jj_la1[30] = jj_gen;
 
1389       jj_consume_token(-1);
 
1390       throw new ParseException();
 
1392     throw new Error("Missing return statement in function");
 
1396  * Any assignement operator.
 
1397  * @return the assignement operator id
 
1399   static final public int AssignmentOperator() throws ParseException {
 
1400     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1402       jj_consume_token(ASSIGN);
 
1403                         {if (true) return VariableDeclaration.EQUAL;}
 
1406       jj_consume_token(STARASSIGN);
 
1407                         {if (true) return VariableDeclaration.STAR_EQUAL;}
 
1410       jj_consume_token(SLASHASSIGN);
 
1411                         {if (true) return VariableDeclaration.SLASH_EQUAL;}
 
1414       jj_consume_token(REMASSIGN);
 
1415                         {if (true) return VariableDeclaration.REM_EQUAL;}
 
1418       jj_consume_token(PLUSASSIGN);
 
1419                         {if (true) return VariableDeclaration.PLUS_EQUAL;}
 
1422       jj_consume_token(MINUSASSIGN);
 
1423                         {if (true) return VariableDeclaration.MINUS_EQUAL;}
 
1426       jj_consume_token(LSHIFTASSIGN);
 
1427                         {if (true) return VariableDeclaration.LSHIFT_EQUAL;}
 
1429     case RSIGNEDSHIFTASSIGN:
 
1430       jj_consume_token(RSIGNEDSHIFTASSIGN);
 
1431                         {if (true) return VariableDeclaration.RSIGNEDSHIFT_EQUAL;}
 
1434       jj_consume_token(ANDASSIGN);
 
1435                         {if (true) return VariableDeclaration.AND_EQUAL;}
 
1438       jj_consume_token(XORASSIGN);
 
1439                         {if (true) return VariableDeclaration.XOR_EQUAL;}
 
1442       jj_consume_token(ORASSIGN);
 
1443                         {if (true) return VariableDeclaration.OR_EQUAL;}
 
1446       jj_consume_token(DOTASSIGN);
 
1447                         {if (true) return VariableDeclaration.DOT_EQUAL;}
 
1450       jj_consume_token(TILDEEQUAL);
 
1451                         {if (true) return VariableDeclaration.TILDE_EQUAL;}
 
1454       jj_la1[31] = jj_gen;
 
1455       jj_consume_token(-1);
 
1456       throw new ParseException();
 
1458     throw new Error("Missing return statement in function");
 
1461   static final public Expression ConditionalExpression() throws ParseException {
 
1462   final Expression expr;
 
1463   Expression expr2 = null;
 
1464   Expression expr3 = null;
 
1465     expr = ConditionalOrExpression();
 
1466     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1468       jj_consume_token(HOOK);
 
1469       expr2 = Expression();
 
1470       jj_consume_token(COLON);
 
1471       expr3 = ConditionalExpression();
 
1474       jj_la1[32] = jj_gen;
 
1477   if (expr3 == null) {
 
1478     {if (true) return expr;}
 
1480   {if (true) return new ConditionalExpression(expr,expr2,expr3);}
 
1481     throw new Error("Missing return statement in function");
 
1484   static final public Expression ConditionalOrExpression() throws ParseException {
 
1485   Expression expr,expr2;
 
1487     expr = ConditionalAndExpression();
 
1490       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1496         jj_la1[33] = jj_gen;
 
1499       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1501         jj_consume_token(OR_OR);
 
1502                  operator = OperatorIds.OR_OR;
 
1505         jj_consume_token(_ORL);
 
1506                  operator = OperatorIds.ORL;
 
1509         jj_la1[34] = jj_gen;
 
1510         jj_consume_token(-1);
 
1511         throw new ParseException();
 
1513       expr2 = ConditionalAndExpression();
 
1514       expr = new BinaryExpression(expr,expr2,operator);
 
1516    {if (true) return expr;}
 
1517     throw new Error("Missing return statement in function");
 
1520   static final public Expression ConditionalAndExpression() throws ParseException {
 
1521   Expression expr,expr2;
 
1523     expr = ConcatExpression();
 
1526       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1532         jj_la1[35] = jj_gen;
 
1535       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1537         jj_consume_token(AND_AND);
 
1538                 operator = OperatorIds.AND_AND;
 
1541         jj_consume_token(_ANDL);
 
1542                 operator = OperatorIds.ANDL;
 
1545         jj_la1[36] = jj_gen;
 
1546         jj_consume_token(-1);
 
1547         throw new ParseException();
 
1549       expr2 = ConcatExpression();
 
1550                                expr = new BinaryExpression(expr,expr2,operator);
 
1552    {if (true) return expr;}
 
1553     throw new Error("Missing return statement in function");
 
1556   static final public Expression ConcatExpression() throws ParseException {
 
1557   Expression expr,expr2;
 
1558     expr = InclusiveOrExpression();
 
1561       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1566         jj_la1[37] = jj_gen;
 
1569       jj_consume_token(DOT);
 
1570       expr2 = InclusiveOrExpression();
 
1571      expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
 
1573    {if (true) return expr;}
 
1574     throw new Error("Missing return statement in function");
 
1577   static final public Expression InclusiveOrExpression() throws ParseException {
 
1578   Expression expr,expr2;
 
1579     expr = ExclusiveOrExpression();
 
1582       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1587         jj_la1[38] = jj_gen;
 
1590       jj_consume_token(BIT_OR);
 
1591       expr2 = ExclusiveOrExpression();
 
1592     expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
 
1594    {if (true) return expr;}
 
1595     throw new Error("Missing return statement in function");
 
1598   static final public Expression ExclusiveOrExpression() throws ParseException {
 
1599   Expression expr,expr2;
 
1600     expr = AndExpression();
 
1603       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1608         jj_la1[39] = jj_gen;
 
1611       jj_consume_token(XOR);
 
1612       expr2 = AndExpression();
 
1613      expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
 
1615    {if (true) return expr;}
 
1616     throw new Error("Missing return statement in function");
 
1619   static final public Expression AndExpression() throws ParseException {
 
1620   Expression expr,expr2;
 
1621     expr = EqualityExpression();
 
1624       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1629         jj_la1[40] = jj_gen;
 
1632       jj_consume_token(BIT_AND);
 
1633       expr2 = EqualityExpression();
 
1634      expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
 
1636    {if (true) return expr;}
 
1637     throw new Error("Missing return statement in function");
 
1640   static final public Expression EqualityExpression() throws ParseException {
 
1641   Expression expr,expr2;
 
1643     expr = RelationalExpression();
 
1646       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1650       case BANGDOUBLEEQUAL:
 
1655         jj_la1[41] = jj_gen;
 
1658       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1660         jj_consume_token(EQUAL_EQUAL);
 
1661                           operator = OperatorIds.EQUAL_EQUAL;
 
1664         jj_consume_token(DIF);
 
1665                           operator = OperatorIds.DIF;
 
1668         jj_consume_token(NOT_EQUAL);
 
1669                           operator = OperatorIds.DIF;
 
1671       case BANGDOUBLEEQUAL:
 
1672         jj_consume_token(BANGDOUBLEEQUAL);
 
1673                           operator = OperatorIds.BANG_EQUAL_EQUAL;
 
1676         jj_consume_token(TRIPLEEQUAL);
 
1677                           operator = OperatorIds.EQUAL_EQUAL_EQUAL;
 
1680         jj_la1[42] = jj_gen;
 
1681         jj_consume_token(-1);
 
1682         throw new ParseException();
 
1685         expr2 = RelationalExpression();
 
1686       } catch (ParseException e) {
 
1687     if (errorMessage != null) {
 
1688       {if (true) throw e;}
 
1690     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
1692     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1693     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1694     {if (true) throw e;}
 
1696     expr = new BinaryExpression(expr,expr2,operator);
 
1698    {if (true) return expr;}
 
1699     throw new Error("Missing return statement in function");
 
1702   static final public Expression RelationalExpression() throws ParseException {
 
1703   Expression expr,expr2;
 
1705     expr = ShiftExpression();
 
1708       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1716         jj_la1[43] = jj_gen;
 
1719       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1721         jj_consume_token(LT);
 
1722           operator = OperatorIds.LESS;
 
1725         jj_consume_token(GT);
 
1726           operator = OperatorIds.GREATER;
 
1729         jj_consume_token(LE);
 
1730           operator = OperatorIds.LESS_EQUAL;
 
1733         jj_consume_token(GE);
 
1734           operator = OperatorIds.GREATER_EQUAL;
 
1737         jj_la1[44] = jj_gen;
 
1738         jj_consume_token(-1);
 
1739         throw new ParseException();
 
1741       expr2 = ShiftExpression();
 
1742    expr = new BinaryExpression(expr,expr2,operator);
 
1744    {if (true) return expr;}
 
1745     throw new Error("Missing return statement in function");
 
1748   static final public Expression ShiftExpression() throws ParseException {
 
1749   Expression expr,expr2;
 
1751     expr = AdditiveExpression();
 
1754       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1757       case RUNSIGNEDSHIFT:
 
1761         jj_la1[45] = jj_gen;
 
1764       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1766         jj_consume_token(LSHIFT);
 
1767                       operator = OperatorIds.LEFT_SHIFT;
 
1770         jj_consume_token(RSIGNEDSHIFT);
 
1771                       operator = OperatorIds.RIGHT_SHIFT;
 
1773       case RUNSIGNEDSHIFT:
 
1774         jj_consume_token(RUNSIGNEDSHIFT);
 
1775                       operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
 
1778         jj_la1[46] = jj_gen;
 
1779         jj_consume_token(-1);
 
1780         throw new ParseException();
 
1782       expr2 = AdditiveExpression();
 
1783    expr = new BinaryExpression(expr,expr2,operator);
 
1785    {if (true) return expr;}
 
1786     throw new Error("Missing return statement in function");
 
1789   static final public Expression AdditiveExpression() throws ParseException {
 
1790   Expression expr,expr2;
 
1792     expr = MultiplicativeExpression();
 
1795       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1801         jj_la1[47] = jj_gen;
 
1804       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1806         jj_consume_token(PLUS);
 
1807               operator = OperatorIds.PLUS;
 
1810         jj_consume_token(MINUS);
 
1811               operator = OperatorIds.MINUS;
 
1814         jj_la1[48] = jj_gen;
 
1815         jj_consume_token(-1);
 
1816         throw new ParseException();
 
1818       expr2 = MultiplicativeExpression();
 
1819    expr = new BinaryExpression(expr,expr2,operator);
 
1821    {if (true) return expr;}
 
1822     throw new Error("Missing return statement in function");
 
1825   static final public Expression MultiplicativeExpression() throws ParseException {
 
1826   Expression expr,expr2;
 
1829       expr = UnaryExpression();
 
1830     } catch (ParseException e) {
 
1831     if (errorMessage != null) {if (true) throw e;}
 
1832     errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
 
1834     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
1835     errorEnd   = SimpleCharStream.getPosition() + 1;
 
1836     {if (true) throw e;}
 
1840       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1847         jj_la1[49] = jj_gen;
 
1850       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1852         jj_consume_token(STAR);
 
1853                    operator = OperatorIds.MULTIPLY;
 
1856         jj_consume_token(SLASH);
 
1857                    operator = OperatorIds.DIVIDE;
 
1860         jj_consume_token(REMAINDER);
 
1861                    operator = OperatorIds.REMAINDER;
 
1864         jj_la1[50] = jj_gen;
 
1865         jj_consume_token(-1);
 
1866         throw new ParseException();
 
1868       expr2 = UnaryExpression();
 
1869      expr = new BinaryExpression(expr,expr2,operator);
 
1871    {if (true) return expr;}
 
1872     throw new Error("Missing return statement in function");
 
1876  * An unary expression starting with @, & or nothing
 
1878   static final public Expression UnaryExpression() throws ParseException {
 
1879   final Expression expr;
 
1880   final int pos = SimpleCharStream.getPosition();
 
1881     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1883       jj_consume_token(BIT_AND);
 
1884       expr = UnaryExpressionNoPrefix();
 
1885    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
 
1897     case INTEGER_LITERAL:
 
1898     case FLOATING_POINT_LITERAL:
 
1899     case STRING_LITERAL:
 
1902       expr = AtUnaryExpression();
 
1903                               {if (true) return expr;}
 
1906       jj_la1[51] = jj_gen;
 
1907       jj_consume_token(-1);
 
1908       throw new ParseException();
 
1910     throw new Error("Missing return statement in function");
 
1913   static final public Expression AtUnaryExpression() throws ParseException {
 
1914   final Expression expr;
 
1915   final int pos = SimpleCharStream.getPosition();
 
1916     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1918       jj_consume_token(AT);
 
1919       expr = AtUnaryExpression();
 
1920    {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);}
 
1931     case INTEGER_LITERAL:
 
1932     case FLOATING_POINT_LITERAL:
 
1933     case STRING_LITERAL:
 
1936       expr = UnaryExpressionNoPrefix();
 
1937    {if (true) return expr;}
 
1940       jj_la1[52] = jj_gen;
 
1941       jj_consume_token(-1);
 
1942       throw new ParseException();
 
1944     throw new Error("Missing return statement in function");
 
1947   static final public Expression UnaryExpressionNoPrefix() throws ParseException {
 
1948   final Expression expr;
 
1950   final int pos = SimpleCharStream.getPosition();
 
1951     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1954       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
1956         jj_consume_token(PLUS);
 
1957                operator = OperatorIds.PLUS;
 
1960         jj_consume_token(MINUS);
 
1961                operator = OperatorIds.MINUS;
 
1964         jj_la1[53] = jj_gen;
 
1965         jj_consume_token(-1);
 
1966         throw new ParseException();
 
1968       expr = UnaryExpression();
 
1969    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
1973       expr = PreIncDecExpression();
 
1974    {if (true) return expr;}
 
1981     case INTEGER_LITERAL:
 
1982     case FLOATING_POINT_LITERAL:
 
1983     case STRING_LITERAL:
 
1986       expr = UnaryExpressionNotPlusMinus();
 
1987    {if (true) return expr;}
 
1990       jj_la1[54] = jj_gen;
 
1991       jj_consume_token(-1);
 
1992       throw new ParseException();
 
1994     throw new Error("Missing return statement in function");
 
1997   static final public Expression PreIncDecExpression() throws ParseException {
 
1998 final Expression expr;
 
2000   final int pos = SimpleCharStream.getPosition();
 
2001     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2003       jj_consume_token(PLUS_PLUS);
 
2004                      operator = OperatorIds.PLUS_PLUS;
 
2007       jj_consume_token(MINUS_MINUS);
 
2008                      operator = OperatorIds.MINUS_MINUS;
 
2011       jj_la1[55] = jj_gen;
 
2012       jj_consume_token(-1);
 
2013       throw new ParseException();
 
2015     expr = PrimaryExpression();
 
2016    {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
 
2017     throw new Error("Missing return statement in function");
 
2020   static final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
 
2021   final Expression expr;
 
2022   final int pos = SimpleCharStream.getPosition();
 
2023     if (jj_2_3(2147483647)) {
 
2024       expr = CastExpression();
 
2025                                    {if (true) return expr;}
 
2027       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2031         expr = PostfixExpression();
 
2032                                    {if (true) return expr;}
 
2037       case INTEGER_LITERAL:
 
2038       case FLOATING_POINT_LITERAL:
 
2039       case STRING_LITERAL:
 
2041                                    {if (true) return expr;}
 
2044         jj_consume_token(LPAREN);
 
2045         expr = Expression();
 
2047           jj_consume_token(RPAREN);
 
2048         } catch (ParseException e) {
 
2049     errorMessage = "')' expected";
 
2051     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2052     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2053     {if (true) throw e;}
 
2055    {if (true) return expr;}
 
2058         jj_la1[56] = jj_gen;
 
2059         jj_consume_token(-1);
 
2060         throw new ParseException();
 
2063     throw new Error("Missing return statement in function");
 
2066   static final public CastExpression CastExpression() throws ParseException {
 
2067 final ConstantIdentifier type;
 
2068 final Expression expr;
 
2069 final int pos = SimpleCharStream.getPosition();
 
2070     jj_consume_token(LPAREN);
 
2071     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2084       jj_consume_token(ARRAY);
 
2085                type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition());
 
2088       jj_la1[57] = jj_gen;
 
2089       jj_consume_token(-1);
 
2090       throw new ParseException();
 
2092     jj_consume_token(RPAREN);
 
2093     expr = UnaryExpression();
 
2094    {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());}
 
2095     throw new Error("Missing return statement in function");
 
2098   static final public Expression PostfixExpression() throws ParseException {
 
2099   final Expression expr;
 
2101   final int pos = SimpleCharStream.getPosition();
 
2102     expr = PrimaryExpression();
 
2103     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2106       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2108         jj_consume_token(PLUS_PLUS);
 
2109                      operator = OperatorIds.PLUS_PLUS;
 
2112         jj_consume_token(MINUS_MINUS);
 
2113                      operator = OperatorIds.MINUS_MINUS;
 
2116         jj_la1[58] = jj_gen;
 
2117         jj_consume_token(-1);
 
2118         throw new ParseException();
 
2122       jj_la1[59] = jj_gen;
 
2125     if (operator == -1) {
 
2126       {if (true) return expr;}
 
2128     {if (true) return new PostfixedUnaryExpression(expr,operator,pos);}
 
2129     throw new Error("Missing return statement in function");
 
2132   static final public Expression PrimaryExpression() throws ParseException {
 
2134   int assignOperator = -1;
 
2135   final Token identifier;
 
2137   final int pos = SimpleCharStream.getPosition();
 
2138     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2140       identifier = jj_consume_token(IDENTIFIER);
 
2141    expr = new ConstantIdentifier(token.image.toCharArray(),
 
2143                                  SimpleCharStream.getPosition());
 
2146         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2148         case STATICCLASSACCESS:
 
2154           jj_la1[60] = jj_gen;
 
2157         expr = PrimarySuffix(expr);
 
2159    {if (true) return expr;}
 
2162       expr = ArrayDeclarator();
 
2163    {if (true) return expr;}
 
2166       jj_consume_token(NEW);
 
2167       expr = ClassIdentifier();
 
2168    expr = new PrefixedUnaryExpression(expr,OperatorIds.NEW,pos);
 
2169       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2171         expr = Arguments(expr);
 
2174         jj_la1[61] = jj_gen;
 
2177    {if (true) return expr;}
 
2180       jj_la1[62] = jj_gen;
 
2181       jj_consume_token(-1);
 
2182       throw new ParseException();
 
2184     throw new Error("Missing return statement in function");
 
2187   static final public AbstractSuffixExpression PrimarySuffix(final Expression prefix) throws ParseException {
 
2188   final AbstractSuffixExpression suffix;
 
2189   final Expression expr;
 
2190     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2192       suffix = Arguments(prefix);
 
2193                                    {if (true) return suffix;}
 
2197       suffix = VariableSuffix(prefix);
 
2198                                    {if (true) return suffix;}
 
2200     case STATICCLASSACCESS:
 
2201       jj_consume_token(STATICCLASSACCESS);
 
2202       expr = ClassIdentifier();
 
2203    suffix = new ClassAccess(prefix,
 
2205                             ClassAccess.STATIC);
 
2206    {if (true) return suffix;}
 
2209       jj_la1[63] = jj_gen;
 
2210       jj_consume_token(-1);
 
2211       throw new ParseException();
 
2213     throw new Error("Missing return statement in function");
 
2217  * An array declarator.
 
2221   static final public ArrayInitializer ArrayDeclarator() throws ParseException {
 
2222   final ArrayVariableDeclaration[] vars;
 
2223   final int pos = SimpleCharStream.getPosition();
 
2224     jj_consume_token(ARRAY);
 
2225     vars = ArrayInitializer();
 
2226    {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());}
 
2227     throw new Error("Missing return statement in function");
 
2230   static final public PrefixedUnaryExpression classInstantiation() throws ParseException {
 
2232   final StringBuffer buff;
 
2233   final int pos = SimpleCharStream.getPosition();
 
2234     jj_consume_token(NEW);
 
2235     expr = ClassIdentifier();
 
2236     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2240      buff = new StringBuffer(expr.toStringExpression());
 
2241       expr = PrimaryExpression();
 
2242      buff.append(expr.toStringExpression());
 
2243     expr = new ConstantIdentifier(buff.toString().toCharArray(),
 
2245                                   SimpleCharStream.getPosition());
 
2248       jj_la1[64] = jj_gen;
 
2251    {if (true) return new PrefixedUnaryExpression(expr,
 
2254     throw new Error("Missing return statement in function");
 
2257   static final public ConstantIdentifier ClassIdentifier() throws ParseException {
 
2260   final int pos = SimpleCharStream.getPosition();
 
2261   final ConstantIdentifier type;
 
2262     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2264       token = jj_consume_token(IDENTIFIER);
 
2265                                  {if (true) return new ConstantIdentifier(token.image.toCharArray(),
 
2267                                                                SimpleCharStream.getPosition());}
 
2279                           {if (true) return type;}
 
2283       expr = VariableDeclaratorId();
 
2284                                  {if (true) return new ConstantIdentifier(expr.toCharArray(),
 
2286                                                                SimpleCharStream.getPosition());}
 
2289       jj_la1[65] = jj_gen;
 
2290       jj_consume_token(-1);
 
2291       throw new ParseException();
 
2293     throw new Error("Missing return statement in function");
 
2296   static final public AbstractSuffixExpression VariableSuffix(final Expression prefix) throws ParseException {
 
2298   final int pos = SimpleCharStream.getPosition();
 
2299   Expression expression = null;
 
2300     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2302       jj_consume_token(CLASSACCESS);
 
2304         expr = VariableName();
 
2305       } catch (ParseException e) {
 
2306     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
 
2308     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2309     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2310     {if (true) throw e;}
 
2312    {if (true) return new ClassAccess(prefix,
 
2313                           new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()),
 
2314                           ClassAccess.NORMAL);}
 
2317       jj_consume_token(LBRACKET);
 
2318       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2343       case INTEGER_LITERAL:
 
2344       case FLOATING_POINT_LITERAL:
 
2345       case STRING_LITERAL:
 
2349         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2365         case INTEGER_LITERAL:
 
2366         case FLOATING_POINT_LITERAL:
 
2367         case STRING_LITERAL:
 
2371           expression = Expression();
 
2382           expression = Type();
 
2385           jj_la1[66] = jj_gen;
 
2386           jj_consume_token(-1);
 
2387           throw new ParseException();
 
2391         jj_la1[67] = jj_gen;
 
2395         jj_consume_token(RBRACKET);
 
2396       } catch (ParseException e) {
 
2397     errorMessage = "']' expected";
 
2399     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2400     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2401     {if (true) throw e;}
 
2403    {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());}
 
2406       jj_la1[68] = jj_gen;
 
2407       jj_consume_token(-1);
 
2408       throw new ParseException();
 
2410     throw new Error("Missing return statement in function");
 
2413   static final public Literal Literal() throws ParseException {
 
2416     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2417     case INTEGER_LITERAL:
 
2418       token = jj_consume_token(INTEGER_LITERAL);
 
2419                                     pos = SimpleCharStream.getPosition();
 
2420                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2422     case FLOATING_POINT_LITERAL:
 
2423       token = jj_consume_token(FLOATING_POINT_LITERAL);
 
2424                                     pos = SimpleCharStream.getPosition();
 
2425                                     {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
 
2427     case STRING_LITERAL:
 
2428       token = jj_consume_token(STRING_LITERAL);
 
2429                                     pos = SimpleCharStream.getPosition();
 
2430                                     {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length());}
 
2433       jj_consume_token(TRUE);
 
2434                                     pos = SimpleCharStream.getPosition();
 
2435                                     {if (true) return new TrueLiteral(pos-4,pos);}
 
2438       jj_consume_token(FALSE);
 
2439                                     pos = SimpleCharStream.getPosition();
 
2440                                     {if (true) return new FalseLiteral(pos-4,pos);}
 
2443       jj_consume_token(NULL);
 
2444                                     pos = SimpleCharStream.getPosition();
 
2445                                     {if (true) return new NullLiteral(pos-4,pos);}
 
2448       jj_la1[69] = jj_gen;
 
2449       jj_consume_token(-1);
 
2450       throw new ParseException();
 
2452     throw new Error("Missing return statement in function");
 
2455   static final public FunctionCall Arguments(final Expression func) throws ParseException {
 
2456 Expression[] args = null;
 
2457     jj_consume_token(LPAREN);
 
2458     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2474     case INTEGER_LITERAL:
 
2475     case FLOATING_POINT_LITERAL:
 
2476     case STRING_LITERAL:
 
2480       args = ArgumentList();
 
2483       jj_la1[70] = jj_gen;
 
2487       jj_consume_token(RPAREN);
 
2488     } catch (ParseException e) {
 
2489     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
 
2491     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2492     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2493     {if (true) throw e;}
 
2495    {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());}
 
2496     throw new Error("Missing return statement in function");
 
2500  * An argument list is a list of arguments separated by comma :
 
2501  * argumentDeclaration() (, argumentDeclaration)*
 
2502  * @return an array of arguments
 
2504   static final public Expression[] ArgumentList() throws ParseException {
 
2506 final ArrayList list = new ArrayList();
 
2511       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2516         jj_la1[71] = jj_gen;
 
2519       jj_consume_token(COMMA);
 
2523       } catch (ParseException e) {
 
2524         errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
 
2526         errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2527         errorEnd     = SimpleCharStream.getPosition() + 1;
 
2528         {if (true) throw e;}
 
2531    final Expression[] arguments = new Expression[list.size()];
 
2532    list.toArray(arguments);
 
2533    {if (true) return arguments;}
 
2534     throw new Error("Missing return statement in function");
 
2538  * A Statement without break.
 
2540   static final public Statement StatementNoBreak() throws ParseException {
 
2541   final Statement statement;
 
2544       statement = Expression();
 
2546         jj_consume_token(SEMICOLON);
 
2547       } catch (ParseException e) {
 
2548     if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
 
2549       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2551       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2552       errorEnd   = SimpleCharStream.getPosition() + 1;
 
2553       {if (true) throw e;}
 
2556    {if (true) return statement;}
 
2558       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2560         statement = LabeledStatement();
 
2561                                   {if (true) return statement;}
 
2564         statement = Block();
 
2565                                   {if (true) return statement;}
 
2568         statement = EmptyStatement();
 
2569                                   {if (true) return statement;}
 
2572         statement = SwitchStatement();
 
2573                                          {if (true) return statement;}
 
2576         statement = IfStatement();
 
2577                                          {if (true) return statement;}
 
2580         statement = WhileStatement();
 
2581                                          {if (true) return statement;}
 
2584         statement = DoStatement();
 
2585                                          {if (true) return statement;}
 
2588         statement = ForStatement();
 
2589                                          {if (true) return statement;}
 
2592         statement = ForeachStatement();
 
2593                                          {if (true) return statement;}
 
2596         statement = ContinueStatement();
 
2597                                          {if (true) return statement;}
 
2600         statement = ReturnStatement();
 
2601                                          {if (true) return statement;}
 
2604         statement = EchoStatement();
 
2605                                          {if (true) return statement;}
 
2612         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2614           token = jj_consume_token(AT);
 
2617           jj_la1[72] = jj_gen;
 
2620         statement = IncludeStatement();
 
2621    if (token != null) {
 
2622     ((InclusionStatement)statement).silent = true;
 
2624   {if (true) return statement;}
 
2627         statement = StaticStatement();
 
2628                                          {if (true) return statement;}
 
2631         statement = GlobalStatement();
 
2632                                          {if (true) return statement;}
 
2635         statement = defineStatement();
 
2636                                          currentSegment.add((Outlineable)statement);{if (true) return statement;}
 
2639         jj_la1[73] = jj_gen;
 
2640         jj_consume_token(-1);
 
2641         throw new ParseException();
 
2644     throw new Error("Missing return statement in function");
 
2647   static final public Define defineStatement() throws ParseException {
 
2648   final int start = SimpleCharStream.getPosition();
 
2649   Expression defineName,defineValue;
 
2650     jj_consume_token(DEFINE);
 
2652       jj_consume_token(LPAREN);
 
2653     } catch (ParseException e) {
 
2654     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2656     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2657     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2658     processParseException(e);
 
2661       defineName = Expression();
 
2662     } catch (ParseException e) {
 
2663     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2665     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2666     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2667     {if (true) throw e;}
 
2670       jj_consume_token(COMMA);
 
2671     } catch (ParseException e) {
 
2672     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2674     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2675     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2676     processParseException(e);
 
2679       defineValue = Expression();
 
2680     } catch (ParseException e) {
 
2681     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
 
2683     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2684     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2685     {if (true) throw e;}
 
2688       jj_consume_token(RPAREN);
 
2689     } catch (ParseException e) {
 
2690     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
2692     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2693     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2694     processParseException(e);
 
2696    {if (true) return new Define(currentSegment,
 
2700                      SimpleCharStream.getPosition());}
 
2701     throw new Error("Missing return statement in function");
 
2705  * A Normal statement.
 
2707   static final public Statement Statement() throws ParseException {
 
2708   final Statement statement;
 
2709     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2741     case INTEGER_LITERAL:
 
2742     case FLOATING_POINT_LITERAL:
 
2743     case STRING_LITERAL:
 
2749       statement = StatementNoBreak();
 
2750                                   {if (true) return statement;}
 
2753       statement = BreakStatement();
 
2754                                   {if (true) return statement;}
 
2757       jj_la1[74] = jj_gen;
 
2758       jj_consume_token(-1);
 
2759       throw new ParseException();
 
2761     throw new Error("Missing return statement in function");
 
2765  * An html block inside a php syntax.
 
2767   static final public HTMLBlock htmlBlock() throws ParseException {
 
2768   final int startIndex = nodePtr;
 
2769   final AstNode[] blockNodes;
 
2771     jj_consume_token(PHPEND);
 
2774       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2779         jj_la1[75] = jj_gen;
 
2785       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2787         jj_consume_token(PHPSTARTLONG);
 
2790         jj_consume_token(PHPSTARTSHORT);
 
2793         jj_la1[76] = jj_gen;
 
2794         jj_consume_token(-1);
 
2795         throw new ParseException();
 
2797     } catch (ParseException e) {
 
2798     errorMessage = "unexpected end of file , '<?php' expected";
 
2800     errorStart   = SimpleCharStream.getPosition();
 
2801     errorEnd     = SimpleCharStream.getPosition();
 
2802     {if (true) throw e;}
 
2804   nbNodes    = nodePtr - startIndex;
 
2805   blockNodes = new AstNode[nbNodes];
 
2806   System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
 
2807   nodePtr = startIndex;
 
2808   {if (true) return new HTMLBlock(blockNodes);}
 
2809     throw new Error("Missing return statement in function");
 
2813  * An include statement. It's "include" an expression;
 
2815   static final public InclusionStatement IncludeStatement() throws ParseException {
 
2816   final Expression expr;
 
2818   final int pos = SimpleCharStream.getPosition();
 
2819   final InclusionStatement inclusionStatement;
 
2820     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2822       jj_consume_token(REQUIRE);
 
2823                          keyword = InclusionStatement.REQUIRE;
 
2826       jj_consume_token(REQUIRE_ONCE);
 
2827                          keyword = InclusionStatement.REQUIRE_ONCE;
 
2830       jj_consume_token(INCLUDE);
 
2831                          keyword = InclusionStatement.INCLUDE;
 
2834       jj_consume_token(INCLUDE_ONCE);
 
2835                          keyword = InclusionStatement.INCLUDE_ONCE;
 
2838       jj_la1[77] = jj_gen;
 
2839       jj_consume_token(-1);
 
2840       throw new ParseException();
 
2843       expr = Expression();
 
2844     } catch (ParseException e) {
 
2845     if (errorMessage != null) {
 
2846       {if (true) throw e;}
 
2848     errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
 
2850     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2851     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2852     {if (true) throw e;}
 
2854    inclusionStatement = new InclusionStatement(currentSegment,
 
2858    currentSegment.add(inclusionStatement);
 
2860       jj_consume_token(SEMICOLON);
 
2861     } catch (ParseException e) {
 
2862     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
2864     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2865     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2866     {if (true) throw e;}
 
2868    {if (true) return inclusionStatement;}
 
2869     throw new Error("Missing return statement in function");
 
2872   static final public PrintExpression PrintExpression() throws ParseException {
 
2873   final Expression expr;
 
2874   final int pos = SimpleCharStream.getPosition();
 
2875     jj_consume_token(PRINT);
 
2876     expr = Expression();
 
2877                                {if (true) return new PrintExpression(expr,pos,SimpleCharStream.getPosition());}
 
2878     throw new Error("Missing return statement in function");
 
2881   static final public ListExpression ListExpression() throws ParseException {
 
2883   final Expression expression;
 
2884   final ArrayList list = new ArrayList();
 
2885   final int pos = SimpleCharStream.getPosition();
 
2886     jj_consume_token(LIST);
 
2888       jj_consume_token(LPAREN);
 
2889     } catch (ParseException e) {
 
2890     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
 
2892     errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2893     errorEnd     = SimpleCharStream.getPosition() + 1;
 
2894     {if (true) throw e;}
 
2896     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2899       expr = VariableDeclaratorId();
 
2903       jj_la1[78] = jj_gen;
 
2906    if (expr == null) list.add(null);
 
2909       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2914         jj_la1[79] = jj_gen;
 
2918         jj_consume_token(COMMA);
 
2919       } catch (ParseException e) {
 
2920       errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
 
2922       errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2923       errorEnd     = SimpleCharStream.getPosition() + 1;
 
2924       {if (true) throw e;}
 
2926       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2929         expr = VariableDeclaratorId();
 
2933         jj_la1[80] = jj_gen;
 
2938       jj_consume_token(RPAREN);
 
2939     } catch (ParseException e) {
 
2940     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
 
2942     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2943     errorEnd   = SimpleCharStream.getPosition() + 1;
 
2944     {if (true) throw e;}
 
2946     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2948       jj_consume_token(ASSIGN);
 
2949       expression = Expression();
 
2950     final String[] strings = new String[list.size()];
 
2951     list.toArray(strings);
 
2952     {if (true) return new ListExpression(strings,
 
2955                               SimpleCharStream.getPosition());}
 
2958       jj_la1[81] = jj_gen;
 
2961     final String[] strings = new String[list.size()];
 
2962     list.toArray(strings);
 
2963     {if (true) return new ListExpression(strings,pos,SimpleCharStream.getPosition());}
 
2964     throw new Error("Missing return statement in function");
 
2968  * An echo statement.
 
2969  * echo anyexpression (, otherexpression)*
 
2971   static final public EchoStatement EchoStatement() throws ParseException {
 
2972   final ArrayList expressions = new ArrayList();
 
2974   final int pos = SimpleCharStream.getPosition();
 
2975     jj_consume_token(ECHO);
 
2976     expr = Expression();
 
2977    expressions.add(expr);
 
2980       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
2985         jj_la1[82] = jj_gen;
 
2988       jj_consume_token(COMMA);
 
2989       expr = Expression();
 
2990      expressions.add(expr);
 
2993       jj_consume_token(SEMICOLON);
 
2994     } catch (ParseException e) {
 
2995     if (e.currentToken.next.kind != 4) {
 
2996       errorMessage = "';' expected after 'echo' statement";
 
2998       errorStart   = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
2999       errorEnd     = SimpleCharStream.getPosition() + 1;
 
3000       {if (true) throw e;}
 
3003    final Expression[] exprs = new Expression[expressions.size()];
 
3004    expressions.toArray(exprs);
 
3005    {if (true) return new EchoStatement(exprs,pos);}
 
3006     throw new Error("Missing return statement in function");
 
3009   static final public GlobalStatement GlobalStatement() throws ParseException {
 
3010    final int pos = SimpleCharStream.getPosition();
 
3012    final ArrayList vars = new ArrayList();
 
3013    final GlobalStatement global;
 
3014     jj_consume_token(GLOBAL);
 
3015     expr = VariableDeclaratorId();
 
3019       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3024         jj_la1[83] = jj_gen;
 
3027       jj_consume_token(COMMA);
 
3028       expr = VariableDeclaratorId();
 
3032       jj_consume_token(SEMICOLON);
 
3033     final String[] strings = new String[vars.size()];
 
3034     vars.toArray(strings);
 
3035     global = new GlobalStatement(currentSegment,
 
3038                                  SimpleCharStream.getPosition());
 
3039     currentSegment.add(global);
 
3040     {if (true) return global;}
 
3041     } catch (ParseException e) {
 
3042     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3044     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3045     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3046     {if (true) throw e;}
 
3048     throw new Error("Missing return statement in function");
 
3051   static final public StaticStatement StaticStatement() throws ParseException {
 
3052   final int pos = SimpleCharStream.getPosition();
 
3053   final ArrayList vars = new ArrayList();
 
3054   VariableDeclaration expr;
 
3055     jj_consume_token(STATIC);
 
3056     expr = VariableDeclarator();
 
3057                                         vars.add(new String(expr.name));
 
3060       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3065         jj_la1[84] = jj_gen;
 
3068       jj_consume_token(COMMA);
 
3069       expr = VariableDeclarator();
 
3070                                         vars.add(new String(expr.name));
 
3073       jj_consume_token(SEMICOLON);
 
3074     final String[] strings = new String[vars.size()];
 
3075     vars.toArray(strings);
 
3076     {if (true) return new StaticStatement(strings,
 
3078                                 SimpleCharStream.getPosition());}
 
3079     } catch (ParseException e) {
 
3080     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
 
3082     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3083     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3084     {if (true) throw e;}
 
3086     throw new Error("Missing return statement in function");
 
3089   static final public LabeledStatement LabeledStatement() throws ParseException {
 
3090   final int pos = SimpleCharStream.getPosition();
 
3092   final Statement statement;
 
3093     label = jj_consume_token(IDENTIFIER);
 
3094     jj_consume_token(COLON);
 
3095     statement = Statement();
 
3096    {if (true) return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());}
 
3097     throw new Error("Missing return statement in function");
 
3107   static final public Block Block() throws ParseException {
 
3108   final int pos = SimpleCharStream.getPosition();
 
3109   final ArrayList list = new ArrayList();
 
3110   Statement statement;
 
3112       jj_consume_token(LBRACE);
 
3113     } catch (ParseException e) {
 
3114     errorMessage = "'{' expected";
 
3116     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3117     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3118     {if (true) throw e;}
 
3122       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3158       case INTEGER_LITERAL:
 
3159       case FLOATING_POINT_LITERAL:
 
3160       case STRING_LITERAL:
 
3169         jj_la1[85] = jj_gen;
 
3172       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3207       case INTEGER_LITERAL:
 
3208       case FLOATING_POINT_LITERAL:
 
3209       case STRING_LITERAL:
 
3215         statement = BlockStatement();
 
3216                                   list.add(statement);
 
3219         statement = htmlBlock();
 
3220                                   list.add(statement);
 
3223         jj_la1[86] = jj_gen;
 
3224         jj_consume_token(-1);
 
3225         throw new ParseException();
 
3229       jj_consume_token(RBRACE);
 
3230     } catch (ParseException e) {
 
3231     errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
 
3233     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3234     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3235     {if (true) throw e;}
 
3237   final Statement[] statements = new Statement[list.size()];
 
3238   list.toArray(statements);
 
3239   {if (true) return new Block(statements,pos,SimpleCharStream.getPosition());}
 
3240     throw new Error("Missing return statement in function");
 
3243   static final public Statement BlockStatement() throws ParseException {
 
3244   final Statement statement;
 
3245     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3278     case INTEGER_LITERAL:
 
3279     case FLOATING_POINT_LITERAL:
 
3280     case STRING_LITERAL:
 
3286       statement = Statement();
 
3287                                    if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3288                                    {if (true) return statement;}
 
3291       statement = ClassDeclaration();
 
3292                                    {if (true) return statement;}
 
3295       statement = MethodDeclaration();
 
3296                                    if (phpDocument == currentSegment) pushOnAstNodes(statement);
 
3297                                    currentSegment.add((MethodDeclaration) statement);
 
3298                                    ((MethodDeclaration) statement).analyzeCode();
 
3299                                    {if (true) return statement;}
 
3302       jj_la1[87] = jj_gen;
 
3303       jj_consume_token(-1);
 
3304       throw new ParseException();
 
3306     throw new Error("Missing return statement in function");
 
3310  * A Block statement that will not contain any 'break'
 
3312   static final public Statement BlockStatementNoBreak() throws ParseException {
 
3313   final Statement statement;
 
3314     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3346     case INTEGER_LITERAL:
 
3347     case FLOATING_POINT_LITERAL:
 
3348     case STRING_LITERAL:
 
3354       statement = StatementNoBreak();
 
3355                                    {if (true) return statement;}
 
3358       statement = ClassDeclaration();
 
3359                                    {if (true) return statement;}
 
3362       statement = MethodDeclaration();
 
3363                                    currentSegment.add((MethodDeclaration) statement);
 
3364                                    ((MethodDeclaration) statement).analyzeCode();
 
3365                                    {if (true) return statement;}
 
3368       jj_la1[88] = jj_gen;
 
3369       jj_consume_token(-1);
 
3370       throw new ParseException();
 
3372     throw new Error("Missing return statement in function");
 
3375   static final public VariableDeclaration[] LocalVariableDeclaration() throws ParseException {
 
3376   final ArrayList list = new ArrayList();
 
3377   VariableDeclaration var;
 
3378     var = LocalVariableDeclarator();
 
3382       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3387         jj_la1[89] = jj_gen;
 
3390       jj_consume_token(COMMA);
 
3391       var = LocalVariableDeclarator();
 
3394     final VariableDeclaration[] vars = new VariableDeclaration[list.size()];
 
3396   {if (true) return vars;}
 
3397     throw new Error("Missing return statement in function");
 
3400   static final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
 
3401   final String varName;
 
3402   Expression initializer = null;
 
3403   final int pos = SimpleCharStream.getPosition();
 
3404     varName = VariableDeclaratorId();
 
3405     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3407       jj_consume_token(ASSIGN);
 
3408       initializer = Expression();
 
3411       jj_la1[90] = jj_gen;
 
3414    if (initializer == null) {
 
3415     {if (true) return new VariableDeclaration(currentSegment,
 
3416                                   varName.toCharArray(),
 
3418                                   SimpleCharStream.getPosition());}
 
3420     {if (true) return new VariableDeclaration(currentSegment,
 
3421                                     varName.toCharArray(),
 
3423                                     VariableDeclaration.EQUAL,
 
3425     throw new Error("Missing return statement in function");
 
3428   static final public EmptyStatement EmptyStatement() throws ParseException {
 
3430     jj_consume_token(SEMICOLON);
 
3431    pos = SimpleCharStream.getPosition();
 
3432    {if (true) return new EmptyStatement(pos-1,pos);}
 
3433     throw new Error("Missing return statement in function");
 
3436   static final public Expression StatementExpression() throws ParseException {
 
3437   final Expression expr,expr2;
 
3439     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3442       expr = PreIncDecExpression();
 
3443                                 {if (true) return expr;}
 
3448       expr = PrimaryExpression();
 
3449       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3452         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3454           jj_consume_token(PLUS_PLUS);
 
3455                  {if (true) return new PostfixedUnaryExpression(expr,
 
3456                                                 OperatorIds.PLUS_PLUS,
 
3457                                                 SimpleCharStream.getPosition());}
 
3460           jj_consume_token(MINUS_MINUS);
 
3461                    {if (true) return new PostfixedUnaryExpression(expr,
 
3462                                                 OperatorIds.MINUS_MINUS,
 
3463                                                 SimpleCharStream.getPosition());}
 
3466           jj_la1[91] = jj_gen;
 
3467           jj_consume_token(-1);
 
3468           throw new ParseException();
 
3472         jj_la1[92] = jj_gen;
 
3475    {if (true) return expr;}
 
3478       jj_la1[93] = jj_gen;
 
3479       jj_consume_token(-1);
 
3480       throw new ParseException();
 
3482     throw new Error("Missing return statement in function");
 
3485   static final public SwitchStatement SwitchStatement() throws ParseException {
 
3486   final Expression variable;
 
3487   final AbstractCase[] cases;
 
3488   final int pos = SimpleCharStream.getPosition();
 
3489     jj_consume_token(SWITCH);
 
3491       jj_consume_token(LPAREN);
 
3492     } catch (ParseException e) {
 
3493     errorMessage = "'(' expected after 'switch'";
 
3495     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3496     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3497     {if (true) throw e;}
 
3500       variable = Expression();
 
3501     } catch (ParseException e) {
 
3502     if (errorMessage != null) {
 
3503       {if (true) throw e;}
 
3505     errorMessage = "expression expected";
 
3507     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3508     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3509     {if (true) throw e;}
 
3512       jj_consume_token(RPAREN);
 
3513     } catch (ParseException e) {
 
3514     errorMessage = "')' expected";
 
3516     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3517     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3518     {if (true) throw e;}
 
3520     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3522       cases = switchStatementBrace();
 
3525       cases = switchStatementColon(pos, pos + 6);
 
3528       jj_la1[94] = jj_gen;
 
3529       jj_consume_token(-1);
 
3530       throw new ParseException();
 
3532    {if (true) return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());}
 
3533     throw new Error("Missing return statement in function");
 
3536   static final public AbstractCase[] switchStatementBrace() throws ParseException {
 
3538   final ArrayList cases = new ArrayList();
 
3539     jj_consume_token(LBRACE);
 
3542       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3548         jj_la1[95] = jj_gen;
 
3551       cas = switchLabel0();
 
3555       jj_consume_token(RBRACE);
 
3556     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3557     cases.toArray(abcase);
 
3558     {if (true) return abcase;}
 
3559     } catch (ParseException e) {
 
3560     errorMessage = "'}' expected";
 
3562     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3563     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3564     {if (true) throw e;}
 
3566     throw new Error("Missing return statement in function");
 
3570  * A Switch statement with : ... endswitch;
 
3571  * @param start the begin offset of the switch
 
3572  * @param end the end offset of the switch
 
3574   static final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
 
3576   final ArrayList cases = new ArrayList();
 
3577     jj_consume_token(COLON);
 
3579   setMarker(fileToParse,
 
3580             "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
 
3584             "Line " + token.beginLine);
 
3585   } catch (CoreException e) {
 
3586     PHPeclipsePlugin.log(e);
 
3590       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3596         jj_la1[96] = jj_gen;
 
3599       cas = switchLabel0();
 
3603       jj_consume_token(ENDSWITCH);
 
3604     } catch (ParseException e) {
 
3605     errorMessage = "'endswitch' expected";
 
3607     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3608     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3609     {if (true) throw e;}
 
3612       jj_consume_token(SEMICOLON);
 
3613     final AbstractCase[] abcase = new AbstractCase[cases.size()];
 
3614     cases.toArray(abcase);
 
3615     {if (true) return abcase;}
 
3616     } catch (ParseException e) {
 
3617     errorMessage = "';' expected after 'endswitch' keyword";
 
3619     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3620     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3621     {if (true) throw e;}
 
3623     throw new Error("Missing return statement in function");
 
3626   static final public AbstractCase switchLabel0() throws ParseException {
 
3627   final Expression expr;
 
3628   Statement statement;
 
3629   final ArrayList stmts = new ArrayList();
 
3630   final int pos = SimpleCharStream.getPosition();
 
3631     expr = SwitchLabel();
 
3634       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3669       case INTEGER_LITERAL:
 
3670       case FLOATING_POINT_LITERAL:
 
3671       case STRING_LITERAL:
 
3680         jj_la1[97] = jj_gen;
 
3683       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3717       case INTEGER_LITERAL:
 
3718       case FLOATING_POINT_LITERAL:
 
3719       case STRING_LITERAL:
 
3725         statement = BlockStatementNoBreak();
 
3726                                          stmts.add(statement);
 
3729         statement = htmlBlock();
 
3730                                          stmts.add(statement);
 
3733         jj_la1[98] = jj_gen;
 
3734         jj_consume_token(-1);
 
3735         throw new ParseException();
 
3738     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3740       statement = BreakStatement();
 
3741                                          stmts.add(statement);
 
3744       jj_la1[99] = jj_gen;
 
3747   final Statement[] stmtsArray = new Statement[stmts.size()];
 
3748   stmts.toArray(stmtsArray);
 
3749   if (expr == null) {//it's a default
 
3750     {if (true) return new DefaultCase(stmtsArray,pos,SimpleCharStream.getPosition());}
 
3752   {if (true) return new Case(expr,stmtsArray,pos,SimpleCharStream.getPosition());}
 
3753     throw new Error("Missing return statement in function");
 
3758  * case Expression() :
 
3760  * @return the if it was a case and null if not
 
3762   static final public Expression SwitchLabel() throws ParseException {
 
3763   final Expression expr;
 
3764     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3766       token = jj_consume_token(CASE);
 
3768         expr = Expression();
 
3769       } catch (ParseException e) {
 
3770     if (errorMessage != null) {if (true) throw e;}
 
3771     errorMessage = "expression expected after 'case' keyword";
 
3773     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3774     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3775     {if (true) throw e;}
 
3778         jj_consume_token(COLON);
 
3779      {if (true) return expr;}
 
3780       } catch (ParseException e) {
 
3781     errorMessage = "':' expected after case expression";
 
3783     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3784     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3785     {if (true) throw e;}
 
3789       token = jj_consume_token(_DEFAULT);
 
3791         jj_consume_token(COLON);
 
3792      {if (true) return null;}
 
3793       } catch (ParseException e) {
 
3794     errorMessage = "':' expected after 'default' keyword";
 
3796     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3797     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3798     {if (true) throw e;}
 
3802       jj_la1[100] = jj_gen;
 
3803       jj_consume_token(-1);
 
3804       throw new ParseException();
 
3806     throw new Error("Missing return statement in function");
 
3809   static final public Break BreakStatement() throws ParseException {
 
3810   Expression expression = null;
 
3811   final int start = SimpleCharStream.getPosition();
 
3812     jj_consume_token(BREAK);
 
3813     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3829     case INTEGER_LITERAL:
 
3830     case FLOATING_POINT_LITERAL:
 
3831     case STRING_LITERAL:
 
3835       expression = Expression();
 
3838       jj_la1[101] = jj_gen;
 
3842       jj_consume_token(SEMICOLON);
 
3843     } catch (ParseException e) {
 
3844     errorMessage = "';' expected after 'break' keyword";
 
3846     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3847     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3848     {if (true) throw e;}
 
3850    {if (true) return new Break(expression, start, SimpleCharStream.getPosition());}
 
3851     throw new Error("Missing return statement in function");
 
3854   static final public IfStatement IfStatement() throws ParseException {
 
3855   final int pos = SimpleCharStream.getPosition();
 
3856   final Expression condition;
 
3857   final IfStatement ifStatement;
 
3858     jj_consume_token(IF);
 
3859     condition = Condition("if");
 
3860     ifStatement = IfStatement0(condition, pos,pos+2);
 
3861    {if (true) return ifStatement;}
 
3862     throw new Error("Missing return statement in function");
 
3865   static final public Expression Condition(final String keyword) throws ParseException {
 
3866   final Expression condition;
 
3868       jj_consume_token(LPAREN);
 
3869     } catch (ParseException e) {
 
3870     errorMessage = "'(' expected after " + keyword + " keyword";
 
3872     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length();
 
3873     errorEnd   = errorStart +1;
 
3874     processParseException(e);
 
3876     condition = Expression();
 
3878       jj_consume_token(RPAREN);
 
3879     } catch (ParseException e) {
 
3880     errorMessage = "')' expected after " + keyword + " keyword";
 
3882     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
3883     errorEnd   = SimpleCharStream.getPosition() + 1;
 
3884     processParseException(e);
 
3886    {if (true) return condition;}
 
3887     throw new Error("Missing return statement in function");
 
3890   static final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
 
3891   Statement statement;
 
3892   final Statement stmt;
 
3893   final Statement[] statementsArray;
 
3894   ElseIf elseifStatement;
 
3895   Else elseStatement = null;
 
3896   final ArrayList stmts;
 
3897   final ArrayList elseIfList = new ArrayList();
 
3898   final ElseIf[] elseIfs;
 
3899   int pos = SimpleCharStream.getPosition();
 
3900   final int endStatements;
 
3901     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3903       jj_consume_token(COLON);
 
3904    stmts = new ArrayList();
 
3907         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3941         case INTEGER_LITERAL:
 
3942         case FLOATING_POINT_LITERAL:
 
3943         case STRING_LITERAL:
 
3952           jj_la1[102] = jj_gen;
 
3955         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
3988         case INTEGER_LITERAL:
 
3989         case FLOATING_POINT_LITERAL:
 
3990         case STRING_LITERAL:
 
3996           statement = Statement();
 
3997                               stmts.add(statement);
 
4000           statement = htmlBlock();
 
4001                               stmts.add(statement);
 
4004           jj_la1[103] = jj_gen;
 
4005           jj_consume_token(-1);
 
4006           throw new ParseException();
 
4009     endStatements = SimpleCharStream.getPosition();
 
4012         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4017           jj_la1[104] = jj_gen;
 
4020         elseifStatement = ElseIfStatementColon();
 
4021                                               elseIfList.add(elseifStatement);
 
4023       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4025         elseStatement = ElseStatementColon();
 
4028         jj_la1[105] = jj_gen;
 
4032   setMarker(fileToParse,
 
4033             "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
 
4037             "Line " + token.beginLine);
 
4038   } catch (CoreException e) {
 
4039     PHPeclipsePlugin.log(e);
 
4042         jj_consume_token(ENDIF);
 
4043       } catch (ParseException e) {
 
4044     errorMessage = "'endif' expected";
 
4046     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4047     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4048     {if (true) throw e;}
 
4051         jj_consume_token(SEMICOLON);
 
4052       } catch (ParseException e) {
 
4053     errorMessage = "';' expected after 'endif' keyword";
 
4055     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4056     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4057     {if (true) throw e;}
 
4059     elseIfs = new ElseIf[elseIfList.size()];
 
4060     elseIfList.toArray(elseIfs);
 
4061     if (stmts.size() == 1) {
 
4062       {if (true) return new IfStatement(condition,
 
4063                              (Statement) stmts.get(0),
 
4067                               SimpleCharStream.getPosition());}
 
4069       statementsArray = new Statement[stmts.size()];
 
4070       stmts.toArray(statementsArray);
 
4071       {if (true) return new IfStatement(condition,
 
4072                              new Block(statementsArray,pos,endStatements),
 
4076                              SimpleCharStream.getPosition());}
 
4112     case INTEGER_LITERAL:
 
4113     case FLOATING_POINT_LITERAL:
 
4114     case STRING_LITERAL:
 
4120       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4153       case INTEGER_LITERAL:
 
4154       case FLOATING_POINT_LITERAL:
 
4155       case STRING_LITERAL:
 
4167         jj_la1[106] = jj_gen;
 
4168         jj_consume_token(-1);
 
4169         throw new ParseException();
 
4173         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4178           jj_la1[107] = jj_gen;
 
4181         elseifStatement = ElseIfStatement();
 
4182                                                       elseIfList.add(elseifStatement);
 
4184       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4186         jj_consume_token(ELSE);
 
4188        pos = SimpleCharStream.getPosition();
 
4189           statement = Statement();
 
4190        elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());
 
4191         } catch (ParseException e) {
 
4192       if (errorMessage != null) {
 
4193         {if (true) throw e;}
 
4195       errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
 
4197       errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4198       errorEnd   = SimpleCharStream.getPosition() + 1;
 
4199       {if (true) throw e;}
 
4203         jj_la1[108] = jj_gen;
 
4206     elseIfs = new ElseIf[elseIfList.size()];
 
4207     elseIfList.toArray(elseIfs);
 
4208     {if (true) return new IfStatement(condition,
 
4213                            SimpleCharStream.getPosition());}
 
4216       jj_la1[109] = jj_gen;
 
4217       jj_consume_token(-1);
 
4218       throw new ParseException();
 
4220     throw new Error("Missing return statement in function");
 
4223   static final public ElseIf ElseIfStatementColon() throws ParseException {
 
4224   final Expression condition;
 
4225   Statement statement;
 
4226   final ArrayList list = new ArrayList();
 
4227   final int pos = SimpleCharStream.getPosition();
 
4228     jj_consume_token(ELSEIF);
 
4229     condition = Condition("elseif");
 
4230     jj_consume_token(COLON);
 
4233       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4267       case INTEGER_LITERAL:
 
4268       case FLOATING_POINT_LITERAL:
 
4269       case STRING_LITERAL:
 
4278         jj_la1[110] = jj_gen;
 
4281       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4314       case INTEGER_LITERAL:
 
4315       case FLOATING_POINT_LITERAL:
 
4316       case STRING_LITERAL:
 
4322         statement = Statement();
 
4323                                       list.add(statement);
 
4326         statement = htmlBlock();
 
4327                                       list.add(statement);
 
4330         jj_la1[111] = jj_gen;
 
4331         jj_consume_token(-1);
 
4332         throw new ParseException();
 
4335   final Statement[] stmtsArray = new Statement[list.size()];
 
4336   list.toArray(stmtsArray);
 
4337   {if (true) return new ElseIf(condition,stmtsArray ,pos,SimpleCharStream.getPosition());}
 
4338     throw new Error("Missing return statement in function");
 
4341   static final public Else ElseStatementColon() throws ParseException {
 
4342   Statement statement;
 
4343   final ArrayList list = new ArrayList();
 
4344   final int pos = SimpleCharStream.getPosition();
 
4345     jj_consume_token(ELSE);
 
4346     jj_consume_token(COLON);
 
4349       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4383       case INTEGER_LITERAL:
 
4384       case FLOATING_POINT_LITERAL:
 
4385       case STRING_LITERAL:
 
4394         jj_la1[112] = jj_gen;
 
4397       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4430       case INTEGER_LITERAL:
 
4431       case FLOATING_POINT_LITERAL:
 
4432       case STRING_LITERAL:
 
4438         statement = Statement();
 
4439                                              list.add(statement);
 
4442         statement = htmlBlock();
 
4443                                              list.add(statement);
 
4446         jj_la1[113] = jj_gen;
 
4447         jj_consume_token(-1);
 
4448         throw new ParseException();
 
4451   final Statement[] stmtsArray = new Statement[list.size()];
 
4452   list.toArray(stmtsArray);
 
4453   {if (true) return new Else(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4454     throw new Error("Missing return statement in function");
 
4457   static final public ElseIf ElseIfStatement() throws ParseException {
 
4458   final Expression condition;
 
4459   final Statement statement;
 
4460   final ArrayList list = new ArrayList();
 
4461   final int pos = SimpleCharStream.getPosition();
 
4462     jj_consume_token(ELSEIF);
 
4463     condition = Condition("elseif");
 
4464     statement = Statement();
 
4465                                                                     list.add(statement);/*todo:do better*/
 
4466   final Statement[] stmtsArray = new Statement[list.size()];
 
4467   list.toArray(stmtsArray);
 
4468   {if (true) return new ElseIf(condition,stmtsArray,pos,SimpleCharStream.getPosition());}
 
4469     throw new Error("Missing return statement in function");
 
4472   static final public WhileStatement WhileStatement() throws ParseException {
 
4473   final Expression condition;
 
4474   final Statement action;
 
4475   final int pos = SimpleCharStream.getPosition();
 
4476     jj_consume_token(WHILE);
 
4477     condition = Condition("while");
 
4478     action = WhileStatement0(pos,pos + 5);
 
4479      {if (true) return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4480     throw new Error("Missing return statement in function");
 
4483   static final public Statement WhileStatement0(final int start, final int end) throws ParseException {
 
4484   Statement statement;
 
4485   final ArrayList stmts = new ArrayList();
 
4486   final int pos = SimpleCharStream.getPosition();
 
4487     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4489       jj_consume_token(COLON);
 
4492         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4525         case INTEGER_LITERAL:
 
4526         case FLOATING_POINT_LITERAL:
 
4527         case STRING_LITERAL:
 
4536           jj_la1[114] = jj_gen;
 
4539         statement = Statement();
 
4540                                     stmts.add(statement);
 
4543   setMarker(fileToParse,
 
4544             "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
 
4548             "Line " + token.beginLine);
 
4549   } catch (CoreException e) {
 
4550     PHPeclipsePlugin.log(e);
 
4553         jj_consume_token(ENDWHILE);
 
4554       } catch (ParseException e) {
 
4555     errorMessage = "'endwhile' expected";
 
4557     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4558     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4559     {if (true) throw e;}
 
4562         jj_consume_token(SEMICOLON);
 
4563     final Statement[] stmtsArray = new Statement[stmts.size()];
 
4564     stmts.toArray(stmtsArray);
 
4565     {if (true) return new Block(stmtsArray,pos,SimpleCharStream.getPosition());}
 
4566       } catch (ParseException e) {
 
4567     errorMessage = "';' expected after 'endwhile' keyword";
 
4569     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4570     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4571     {if (true) throw e;}
 
4606     case INTEGER_LITERAL:
 
4607     case FLOATING_POINT_LITERAL:
 
4608     case STRING_LITERAL:
 
4614       statement = Statement();
 
4615    {if (true) return statement;}
 
4618       jj_la1[115] = jj_gen;
 
4619       jj_consume_token(-1);
 
4620       throw new ParseException();
 
4622     throw new Error("Missing return statement in function");
 
4625   static final public DoStatement DoStatement() throws ParseException {
 
4626   final Statement action;
 
4627   final Expression condition;
 
4628   final int pos = SimpleCharStream.getPosition();
 
4629     jj_consume_token(DO);
 
4630     action = Statement();
 
4631     jj_consume_token(WHILE);
 
4632     condition = Condition("while");
 
4634       jj_consume_token(SEMICOLON);
 
4635      {if (true) return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());}
 
4636     } catch (ParseException e) {
 
4637     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
 
4639     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4640     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4641     {if (true) throw e;}
 
4643     throw new Error("Missing return statement in function");
 
4646   static final public ForeachStatement ForeachStatement() throws ParseException {
 
4647   Statement statement;
 
4648   Expression expression;
 
4649   final int pos = SimpleCharStream.getPosition();
 
4650   ArrayVariableDeclaration variable;
 
4651     jj_consume_token(FOREACH);
 
4653       jj_consume_token(LPAREN);
 
4654     } catch (ParseException e) {
 
4655     errorMessage = "'(' expected after 'foreach' keyword";
 
4657     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4658     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4659     {if (true) throw e;}
 
4662       expression = Expression();
 
4663     } catch (ParseException e) {
 
4664     errorMessage = "variable expected";
 
4666     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4667     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4668     {if (true) throw e;}
 
4671       jj_consume_token(AS);
 
4672     } catch (ParseException e) {
 
4673     errorMessage = "'as' expected";
 
4675     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4676     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4677     {if (true) throw e;}
 
4680       variable = ArrayVariable();
 
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(RPAREN);
 
4690     } catch (ParseException e) {
 
4691     errorMessage = "')' expected after 'foreach' keyword";
 
4693     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4694     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4695     {if (true) throw e;}
 
4698       statement = Statement();
 
4699     } catch (ParseException e) {
 
4700     if (errorMessage != null) {if (true) throw e;}
 
4701     errorMessage = "statement expected";
 
4703     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4704     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4705     {if (true) throw e;}
 
4707    {if (true) return new ForeachStatement(expression,
 
4711                                SimpleCharStream.getPosition());}
 
4712     throw new Error("Missing return statement in function");
 
4715   static final public ForStatement ForStatement() throws ParseException {
 
4717 final int pos = SimpleCharStream.getPosition();
 
4718 Expression[] initializations = null;
 
4719 Expression condition = null;
 
4720 Expression[] increments = null;
 
4722 final ArrayList list = new ArrayList();
 
4723 final int startBlock, endBlock;
 
4724     token = jj_consume_token(FOR);
 
4726       jj_consume_token(LPAREN);
 
4727     } catch (ParseException e) {
 
4728     errorMessage = "'(' expected after 'for' keyword";
 
4730     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4731     errorEnd   = SimpleCharStream.getPosition() + 1;
 
4732     {if (true) throw e;}
 
4734     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4742       initializations = ForInit();
 
4745       jj_la1[116] = jj_gen;
 
4748     jj_consume_token(SEMICOLON);
 
4749     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4765     case INTEGER_LITERAL:
 
4766     case FLOATING_POINT_LITERAL:
 
4767     case STRING_LITERAL:
 
4771       condition = Expression();
 
4774       jj_la1[117] = jj_gen;
 
4777     jj_consume_token(SEMICOLON);
 
4778     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4784       increments = StatementExpressionList();
 
4787       jj_la1[118] = jj_gen;
 
4790     jj_consume_token(RPAREN);
 
4791     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4824     case INTEGER_LITERAL:
 
4825     case FLOATING_POINT_LITERAL:
 
4826     case STRING_LITERAL:
 
4832       action = Statement();
 
4833        {if (true) return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());}
 
4836       jj_consume_token(COLON);
 
4837        startBlock = SimpleCharStream.getPosition();
 
4840         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4873         case INTEGER_LITERAL:
 
4874         case FLOATING_POINT_LITERAL:
 
4875         case STRING_LITERAL:
 
4884           jj_la1[119] = jj_gen;
 
4887         action = Statement();
 
4891         setMarker(fileToParse,
 
4892                   "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
 
4894                   pos+token.image.length(),
 
4896                   "Line " + token.beginLine);
 
4897         } catch (CoreException e) {
 
4898           PHPeclipsePlugin.log(e);
 
4900        endBlock = SimpleCharStream.getPosition();
 
4902         jj_consume_token(ENDFOR);
 
4903       } catch (ParseException e) {
 
4904         errorMessage = "'endfor' expected";
 
4906         errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4907         errorEnd   = SimpleCharStream.getPosition() + 1;
 
4908         {if (true) throw e;}
 
4911         jj_consume_token(SEMICOLON);
 
4912         final Statement[] stmtsArray = new Statement[list.size()];
 
4913         list.toArray(stmtsArray);
 
4914         {if (true) return new ForStatement(initializations,condition,increments,new Block(stmtsArray,startBlock,endBlock),pos,SimpleCharStream.getPosition());}
 
4915       } catch (ParseException e) {
 
4916         errorMessage = "';' expected after 'endfor' keyword";
 
4918         errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
4919         errorEnd   = SimpleCharStream.getPosition() + 1;
 
4920         {if (true) throw e;}
 
4924       jj_la1[120] = jj_gen;
 
4925       jj_consume_token(-1);
 
4926       throw new ParseException();
 
4928     throw new Error("Missing return statement in function");
 
4931   static final public Expression[] ForInit() throws ParseException {
 
4932   final Expression[] exprs;
 
4933     if (jj_2_5(2147483647)) {
 
4934       exprs = LocalVariableDeclaration();
 
4935    {if (true) return exprs;}
 
4937       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4943         exprs = StatementExpressionList();
 
4944    {if (true) return exprs;}
 
4947         jj_la1[121] = jj_gen;
 
4948         jj_consume_token(-1);
 
4949         throw new ParseException();
 
4952     throw new Error("Missing return statement in function");
 
4955   static final public Expression[] StatementExpressionList() throws ParseException {
 
4956   final ArrayList list = new ArrayList();
 
4957   final Expression expr;
 
4958     expr = StatementExpression();
 
4962       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
4967         jj_la1[122] = jj_gen;
 
4970       jj_consume_token(COMMA);
 
4971       StatementExpression();
 
4974   final Expression[] exprsArray = new Expression[list.size()];
 
4975   list.toArray(exprsArray);
 
4976   {if (true) return exprsArray;}
 
4977     throw new Error("Missing return statement in function");
 
4980   static final public Continue ContinueStatement() throws ParseException {
 
4981   Expression expr = null;
 
4982   final int pos = SimpleCharStream.getPosition();
 
4983     jj_consume_token(CONTINUE);
 
4984     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5000     case INTEGER_LITERAL:
 
5001     case FLOATING_POINT_LITERAL:
 
5002     case STRING_LITERAL:
 
5006       expr = Expression();
 
5009       jj_la1[123] = jj_gen;
 
5013       jj_consume_token(SEMICOLON);
 
5014      {if (true) return new Continue(expr,pos,SimpleCharStream.getPosition());}
 
5015     } catch (ParseException e) {
 
5016     errorMessage = "';' expected after 'continue' statement";
 
5018     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
5019     errorEnd   = SimpleCharStream.getPosition() + 1;
 
5020     {if (true) throw e;}
 
5022     throw new Error("Missing return statement in function");
 
5025   static final public ReturnStatement ReturnStatement() throws ParseException {
 
5026   Expression expr = null;
 
5027   final int pos = SimpleCharStream.getPosition();
 
5028     jj_consume_token(RETURN);
 
5029     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 
5045     case INTEGER_LITERAL:
 
5046     case FLOATING_POINT_LITERAL:
 
5047     case STRING_LITERAL:
 
5051       expr = Expression();
 
5054       jj_la1[124] = jj_gen;
 
5058       jj_consume_token(SEMICOLON);
 
5059      {if (true) return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());}
 
5060     } catch (ParseException e) {
 
5061     errorMessage = "';' expected after 'return' statement";
 
5063     errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
 
5064     errorEnd   = SimpleCharStream.getPosition() + 1;
 
5065     {if (true) throw e;}
 
5067     throw new Error("Missing return statement in function");
 
5070   static final private boolean jj_2_1(int xla) {
 
5071     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5072     boolean retval = !jj_3_1();
 
5077   static final private boolean jj_2_2(int xla) {
 
5078     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5079     boolean retval = !jj_3_2();
 
5084   static final private boolean jj_2_3(int xla) {
 
5085     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5086     boolean retval = !jj_3_3();
 
5091   static final private boolean jj_2_4(int xla) {
 
5092     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5093     boolean retval = !jj_3_4();
 
5098   static final private boolean jj_2_5(int xla) {
 
5099     jj_la = xla; jj_lastpos = jj_scanpos = token;
 
5100     boolean retval = !jj_3_5();
 
5105   static final private boolean jj_3R_155() {
 
5106     if (jj_3R_161()) return true;
 
5107     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5111   static final private boolean jj_3R_160() {
 
5112     if (jj_scan_token(MINUS)) return true;
 
5113     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5117   static final private boolean jj_3R_159() {
 
5118     if (jj_scan_token(PLUS)) return true;
 
5119     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5123   static final private boolean jj_3R_152() {
 
5130     if (jj_3R_156()) return true;
 
5131     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5132     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5133     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5137   static final private boolean jj_3R_154() {
 
5142     if (jj_3R_160()) return true;
 
5143     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5144     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5145     if (jj_3R_143()) return true;
 
5146     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5150   static final private boolean jj_3R_158() {
 
5151     if (jj_3R_152()) return true;
 
5152     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5156   static final private boolean jj_3R_50() {
 
5157     if (jj_3R_65()) return true;
 
5158     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5161     if (jj_3R_66()) jj_scanpos = xsp;
 
5162     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5166   static final private boolean jj_3R_153() {
 
5171     if (jj_3R_158()) return true;
 
5172     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5173     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5177   static final private boolean jj_3R_157() {
 
5178     if (jj_scan_token(AT)) return true;
 
5179     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5180     if (jj_3R_153()) return true;
 
5181     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5185   static final private boolean jj_3R_51() {
 
5186     if (jj_scan_token(COMMA)) return true;
 
5187     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5188     if (jj_3R_50()) return true;
 
5189     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5193   static final private boolean jj_3R_148() {
 
5194     if (jj_3R_153()) return true;
 
5195     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5199   static final private boolean jj_3R_143() {
 
5204     if (jj_3R_148()) return true;
 
5205     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5206     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5210   static final private boolean jj_3R_147() {
 
5211     if (jj_scan_token(BIT_AND)) return true;
 
5212     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5213     if (jj_3R_152()) return true;
 
5214     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5218   static final private boolean jj_3R_44() {
 
5219     if (jj_3R_50()) return true;
 
5220     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5224       if (jj_3R_51()) { jj_scanpos = xsp; break; }
 
5225       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5230   static final private boolean jj_3R_151() {
 
5231     if (jj_scan_token(REMAINDER)) return true;
 
5232     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5236   static final private boolean jj_3R_150() {
 
5237     if (jj_scan_token(SLASH)) return true;
 
5238     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5242   static final private boolean jj_3R_149() {
 
5243     if (jj_scan_token(STAR)) return true;
 
5244     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5248   static final private boolean jj_3R_144() {
 
5255     if (jj_3R_151()) return true;
 
5256     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5257     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5258     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5259     if (jj_3R_143()) return true;
 
5260     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5264   static final private boolean jj_3R_138() {
 
5265     if (jj_3R_143()) return true;
 
5266     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5270       if (jj_3R_144()) { jj_scanpos = xsp; break; }
 
5271       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5276   static final private boolean jj_3R_146() {
 
5277     if (jj_scan_token(MINUS)) return true;
 
5278     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5282   static final private boolean jj_3R_145() {
 
5283     if (jj_scan_token(PLUS)) return true;
 
5284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5288   static final private boolean jj_3R_139() {
 
5293     if (jj_3R_146()) 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_3R_138()) return true;
 
5297     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5301   static final private boolean jj_3R_132() {
 
5302     if (jj_3R_138()) return true;
 
5303     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5307       if (jj_3R_139()) { jj_scanpos = xsp; break; }
 
5308       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5313   static final private boolean jj_3R_142() {
 
5314     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
 
5315     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5319   static final private boolean jj_3_4() {
 
5320     if (jj_3R_43()) return true;
 
5321     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5322     if (jj_scan_token(SEMICOLON)) return true;
 
5323     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5327   static final private boolean jj_3R_141() {
 
5328     if (jj_scan_token(RSIGNEDSHIFT)) return true;
 
5329     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5333   static final private boolean jj_3R_140() {
 
5334     if (jj_scan_token(LSHIFT)) return true;
 
5335     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5339   static final private boolean jj_3R_133() {
 
5346     if (jj_3R_142()) return true;
 
5347     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5348     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5349     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5350     if (jj_3R_132()) return true;
 
5351     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5355   static final private boolean jj_3R_124() {
 
5356     if (jj_3R_132()) return true;
 
5357     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5361       if (jj_3R_133()) { jj_scanpos = xsp; break; }
 
5362       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5367   static final private boolean jj_3R_137() {
 
5368     if (jj_scan_token(GE)) return true;
 
5369     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5373   static final private boolean jj_3R_201() {
 
5374     if (jj_scan_token(COMMA)) return true;
 
5375     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5379   static final private boolean jj_3R_136() {
 
5380     if (jj_scan_token(LE)) return true;
 
5381     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5385   static final private boolean jj_3R_135() {
 
5386     if (jj_scan_token(GT)) return true;
 
5387     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5391   static final private boolean jj_3R_134() {
 
5392     if (jj_scan_token(LT)) return true;
 
5393     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5397   static final private boolean jj_3_2() {
 
5398     if (jj_scan_token(COMMA)) return true;
 
5399     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5400     if (jj_3R_40()) return true;
 
5401     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5405   static final private boolean jj_3R_125() {
 
5414     if (jj_3R_137()) return true;
 
5415     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5416     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5417     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5418     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5419     if (jj_3R_124()) return true;
 
5420     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5424   static final private boolean jj_3R_119() {
 
5425     if (jj_3R_124()) return true;
 
5426     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5430       if (jj_3R_125()) { jj_scanpos = xsp; break; }
 
5431       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5436   static final private boolean jj_3R_205() {
 
5437     if (jj_scan_token(COMMA)) return true;
 
5438     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5439     if (jj_3R_43()) return true;
 
5440     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5444   static final private boolean jj_3R_200() {
 
5445     if (jj_3R_40()) return true;
 
5446     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5450       if (jj_3_2()) { jj_scanpos = xsp; break; }
 
5451       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5456   static final private boolean jj_3_5() {
 
5457     if (jj_3R_44()) return true;
 
5458     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5462   static final private boolean jj_3R_203() {
 
5463     if (jj_3R_43()) return true;
 
5464     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5468       if (jj_3R_205()) { jj_scanpos = xsp; break; }
 
5469       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5474   static final private boolean jj_3R_192() {
 
5475     if (jj_scan_token(LPAREN)) return true;
 
5476     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5479     if (jj_3R_200()) jj_scanpos = xsp;
 
5480     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5482     if (jj_3R_201()) jj_scanpos = xsp;
 
5483     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5484     if (jj_scan_token(RPAREN)) return true;
 
5485     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5489   static final private boolean jj_3R_204() {
 
5490     if (jj_scan_token(ARRAYASSIGN)) return true;
 
5491     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5492     if (jj_3R_43()) return true;
 
5493     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5497   static final private boolean jj_3R_202() {
 
5498     if (jj_3R_203()) return true;
 
5499     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5503   static final private boolean jj_3R_40() {
 
5504     if (jj_3R_43()) return true;
 
5505     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5508     if (jj_3R_204()) jj_scanpos = xsp;
 
5509     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5513   static final private boolean jj_3R_130() {
 
5514     if (jj_scan_token(TRIPLEEQUAL)) return true;
 
5515     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5519   static final private boolean jj_3R_129() {
 
5520     if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
 
5521     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5525   static final private boolean jj_3R_128() {
 
5526     if (jj_scan_token(NOT_EQUAL)) return true;
 
5527     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5531   static final private boolean jj_3R_127() {
 
5532     if (jj_scan_token(DIF)) return true;
 
5533     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5537   static final private boolean jj_3R_72() {
 
5538     if (jj_3R_47()) return true;
 
5539     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5543   static final private boolean jj_3R_126() {
 
5544     if (jj_scan_token(EQUAL_EQUAL)) return true;
 
5545     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5549   static final private boolean jj_3R_196() {
 
5550     if (jj_scan_token(LPAREN)) return true;
 
5551     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5554     if (jj_3R_202()) jj_scanpos = xsp;
 
5555     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5556     if (jj_scan_token(RPAREN)) return true;
 
5557     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5561   static final private boolean jj_3R_120() {
 
5572     if (jj_3R_130()) return true;
 
5573     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5574     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5575     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5576     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5577     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5578     if (jj_3R_119()) return true;
 
5579     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5583   static final private boolean jj_3R_117() {
 
5584     if (jj_3R_119()) return true;
 
5585     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5589       if (jj_3R_120()) { jj_scanpos = xsp; break; }
 
5590       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5595   static final private boolean jj_3R_178() {
 
5596     if (jj_scan_token(NULL)) return true;
 
5597     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5601   static final private boolean jj_3R_177() {
 
5602     if (jj_scan_token(FALSE)) return true;
 
5603     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5607   static final private boolean jj_3R_176() {
 
5608     if (jj_scan_token(TRUE)) return true;
 
5609     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5613   static final private boolean jj_3R_118() {
 
5614     if (jj_scan_token(BIT_AND)) return true;
 
5615     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5616     if (jj_3R_117()) return true;
 
5617     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5621   static final private boolean jj_3R_175() {
 
5622     if (jj_scan_token(STRING_LITERAL)) return true;
 
5623     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5627   static final private boolean jj_3R_174() {
 
5628     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
 
5629     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5633   static final private boolean jj_3R_102() {
 
5634     if (jj_3R_117()) return true;
 
5635     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5639       if (jj_3R_118()) { jj_scanpos = xsp; break; }
 
5640       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5645   static final private boolean jj_3R_171() {
 
5658     if (jj_3R_178()) return true;
 
5659     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5660     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5661     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5662     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5663     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5664     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5668   static final private boolean jj_3R_173() {
 
5669     if (jj_scan_token(INTEGER_LITERAL)) return true;
 
5670     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5674   static final private boolean jj_3R_71() {
 
5675     if (jj_3R_43()) return true;
 
5676     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5680   static final private boolean jj_3R_53() {
 
5685     if (jj_3R_72()) return true;
 
5686     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5687     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5691   static final private boolean jj_3R_101() {
 
5692     if (jj_scan_token(LBRACE)) return true;
 
5693     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5694     if (jj_3R_43()) return true;
 
5695     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5696     if (jj_scan_token(RBRACE)) return true;
 
5697     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5701   static final private boolean jj_3R_103() {
 
5702     if (jj_scan_token(XOR)) return true;
 
5703     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5704     if (jj_3R_102()) return true;
 
5705     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5709   static final private boolean jj_3R_70() {
 
5710     if (jj_scan_token(DOLLAR_ID)) return true;
 
5711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5715   static final private boolean jj_3R_98() {
 
5716     if (jj_3R_102()) return true;
 
5717     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5721       if (jj_3R_103()) { jj_scanpos = xsp; break; }
 
5722       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5727   static final private boolean jj_3R_69() {
 
5728     if (jj_scan_token(DOLLAR)) return true;
 
5729     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5730     if (jj_3R_52()) return true;
 
5731     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5735   static final private boolean jj_3R_46() {
 
5736     if (jj_scan_token(LBRACKET)) return true;
 
5737     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5740     if (jj_3R_53()) jj_scanpos = xsp;
 
5741     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5742     if (jj_scan_token(RBRACKET)) return true;
 
5743     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5747   static final private boolean jj_3R_99() {
 
5748     if (jj_scan_token(BIT_OR)) return true;
 
5749     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5750     if (jj_3R_98()) return true;
 
5751     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5755   static final private boolean jj_3R_91() {
 
5756     if (jj_3R_98()) return true;
 
5757     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5761       if (jj_3R_99()) { jj_scanpos = xsp; break; }
 
5762       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5767   static final private boolean jj_3R_68() {
 
5768     if (jj_scan_token(IDENTIFIER)) return true;
 
5769     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5772     if (jj_3R_101()) jj_scanpos = xsp;
 
5773     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5777   static final private boolean jj_3R_45() {
 
5778     if (jj_scan_token(CLASSACCESS)) return true;
 
5779     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5780     if (jj_3R_52()) return true;
 
5781     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5785   static final private boolean jj_3R_39() {
 
5790     if (jj_3R_46()) return true;
 
5791     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5792     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5796   static final private boolean jj_3R_92() {
 
5797     if (jj_scan_token(DOT)) return true;
 
5798     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5799     if (jj_3R_91()) return true;
 
5800     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5804   static final private boolean jj_3R_52() {
 
5813     if (jj_3R_70()) return true;
 
5814     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5815     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5816     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5817     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5821   static final private boolean jj_3R_67() {
 
5822     if (jj_scan_token(LBRACE)) return true;
 
5823     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5824     if (jj_3R_43()) return true;
 
5825     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5826     if (jj_scan_token(RBRACE)) return true;
 
5827     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5831   static final private boolean jj_3R_83() {
 
5832     if (jj_3R_91()) return true;
 
5833     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5837       if (jj_3R_92()) { jj_scanpos = xsp; break; }
 
5838       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5843   static final private boolean jj_3R_90() {
 
5844     if (jj_scan_token(LBRACE)) return true;
 
5845     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5846     if (jj_3R_43()) return true;
 
5847     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5848     if (jj_scan_token(RBRACE)) return true;
 
5849     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5853   static final private boolean jj_3R_195() {
 
5854     if (jj_3R_65()) return true;
 
5855     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5859   static final private boolean jj_3R_194() {
 
5860     if (jj_3R_47()) return true;
 
5861     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5865   static final private boolean jj_3R_94() {
 
5866     if (jj_scan_token(_ANDL)) return true;
 
5867     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5871   static final private boolean jj_3R_93() {
 
5872     if (jj_scan_token(AND_AND)) return true;
 
5873     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5877   static final private boolean jj_3R_193() {
 
5878     if (jj_scan_token(IDENTIFIER)) return true;
 
5879     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5883   static final private boolean jj_3R_189() {
 
5890     if (jj_3R_195()) return true;
 
5891     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5892     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5893     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5897   static final private boolean jj_3R_84() {
 
5902     if (jj_3R_94()) return true;
 
5903     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5904     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5905     if (jj_3R_83()) return true;
 
5906     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5910   static final private boolean jj_3R_78() {
 
5911     if (jj_3R_83()) return true;
 
5912     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5916       if (jj_3R_84()) { jj_scanpos = xsp; break; }
 
5917       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5922   static final private boolean jj_3R_74() {
 
5923     if (jj_scan_token(HOOK)) return true;
 
5924     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5925     if (jj_3R_43()) return true;
 
5926     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5927     if (jj_scan_token(COLON)) return true;
 
5928     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5929     if (jj_3R_63()) return true;
 
5930     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5934   static final private boolean jj_3R_82() {
 
5935     if (jj_scan_token(DOLLAR)) return true;
 
5936     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5937     if (jj_3R_52()) return true;
 
5938     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5942   static final private boolean jj_3R_86() {
 
5943     if (jj_scan_token(_ORL)) return true;
 
5944     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5948   static final private boolean jj_3R_85() {
 
5949     if (jj_scan_token(OR_OR)) return true;
 
5950     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5954   static final private boolean jj_3R_123() {
 
5955     if (jj_scan_token(ASSIGN)) return true;
 
5956     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5957     if (jj_3R_43()) return true;
 
5958     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5962   static final private boolean jj_3R_81() {
 
5963     if (jj_scan_token(DOLLAR_ID)) return true;
 
5964     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5967     if (jj_3R_90()) jj_scanpos = xsp;
 
5968     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5972   static final private boolean jj_3R_77() {
 
5977     if (jj_3R_82()) return true;
 
5978     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5979     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5983   static final private boolean jj_3R_79() {
 
5988     if (jj_3R_86()) return true;
 
5989     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5990     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5991     if (jj_3R_78()) return true;
 
5992     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
5996   static final private boolean jj_3R_73() {
 
5997     if (jj_3R_78()) return true;
 
5998     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6002       if (jj_3R_79()) { jj_scanpos = xsp; break; }
 
6003       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6008   static final private boolean jj_3R_131() {
 
6009     if (jj_3R_65()) return true;
 
6010     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6014   static final private boolean jj_3R_182() {
 
6015     if (jj_scan_token(ARRAY)) return true;
 
6016     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6017     if (jj_3R_192()) return true;
 
6018     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6022   static final private boolean jj_3R_122() {
 
6023     if (jj_scan_token(COMMA)) return true;
 
6024     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6027     if (jj_3R_131()) jj_scanpos = xsp;
 
6028     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6032   static final private boolean jj_3R_63() {
 
6033     if (jj_3R_73()) return true;
 
6034     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6037     if (jj_3R_74()) jj_scanpos = xsp;
 
6038     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6042   static final private boolean jj_3R_121() {
 
6043     if (jj_3R_65()) return true;
 
6044     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6048   static final private boolean jj_3_1() {
 
6049     if (jj_3R_39()) return true;
 
6050     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6054   static final private boolean jj_3R_116() {
 
6055     if (jj_scan_token(TILDEEQUAL)) return true;
 
6056     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6060   static final private boolean jj_3R_115() {
 
6061     if (jj_scan_token(DOTASSIGN)) return true;
 
6062     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6066   static final private boolean jj_3R_114() {
 
6067     if (jj_scan_token(ORASSIGN)) return true;
 
6068     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6072   static final private boolean jj_3R_199() {
 
6073     if (jj_scan_token(STATICCLASSACCESS)) return true;
 
6074     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6075     if (jj_3R_189()) return true;
 
6076     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6080   static final private boolean jj_3R_113() {
 
6081     if (jj_scan_token(XORASSIGN)) return true;
 
6082     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6086   static final private boolean jj_3R_198() {
 
6087     if (jj_3R_39()) return true;
 
6088     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6092   static final private boolean jj_3R_65() {
 
6093     if (jj_3R_77()) return true;
 
6094     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6098       if (jj_3_1()) { jj_scanpos = xsp; break; }
 
6099       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6104   static final private boolean jj_3R_112() {
 
6105     if (jj_scan_token(ANDASSIGN)) return true;
 
6106     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6110   static final private boolean jj_3R_197() {
 
6111     if (jj_3R_196()) return true;
 
6112     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6116   static final private boolean jj_3R_191() {
 
6123     if (jj_3R_199()) return true;
 
6124     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6125     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6126     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6130   static final private boolean jj_3R_111() {
 
6131     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
 
6132     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6136   static final private boolean jj_3R_96() {
 
6137     if (jj_scan_token(LIST)) return true;
 
6138     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6139     if (jj_scan_token(LPAREN)) return true;
 
6140     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6143     if (jj_3R_121()) jj_scanpos = xsp;
 
6144     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6147       if (jj_3R_122()) { jj_scanpos = xsp; break; }
 
6148       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6150     if (jj_scan_token(RPAREN)) return true;
 
6151     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6153     if (jj_3R_123()) jj_scanpos = xsp;
 
6154     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6158   static final private boolean jj_3R_110() {
 
6159     if (jj_scan_token(LSHIFTASSIGN)) return true;
 
6160     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6164   static final private boolean jj_3R_109() {
 
6165     if (jj_scan_token(MINUSASSIGN)) return true;
 
6166     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6170   static final private boolean jj_3R_108() {
 
6171     if (jj_scan_token(PLUSASSIGN)) return true;
 
6172     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6176   static final private boolean jj_3R_107() {
 
6177     if (jj_scan_token(REMASSIGN)) return true;
 
6178     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6182   static final private boolean jj_3R_106() {
 
6183     if (jj_scan_token(SLASHASSIGN)) return true;
 
6184     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6188   static final private boolean jj_3R_105() {
 
6189     if (jj_scan_token(STARASSIGN)) return true;
 
6190     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6194   static final private boolean jj_3R_104() {
 
6195     if (jj_scan_token(ASSIGN)) return true;
 
6196     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6200   static final private boolean jj_3R_100() {
 
6227     if (jj_3R_116()) return true;
 
6228     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6229     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6230     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6231     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6232     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6233     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6234     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6235     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6236     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6237     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6238     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6239     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6240     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6244   static final private boolean jj_3R_190() {
 
6245     if (jj_3R_196()) return true;
 
6246     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6250   static final private boolean jj_3R_95() {
 
6251     if (jj_scan_token(PRINT)) return true;
 
6252     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6253     if (jj_3R_43()) return true;
 
6254     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6258   static final private boolean jj_3R_181() {
 
6259     if (jj_scan_token(NEW)) return true;
 
6260     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6261     if (jj_3R_189()) return true;
 
6262     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6265     if (jj_3R_190()) jj_scanpos = xsp;
 
6266     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6270   static final private boolean jj_3R_180() {
 
6271     if (jj_3R_182()) return true;
 
6272     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6276   static final private boolean jj_3R_188() {
 
6277     if (jj_3R_191()) return true;
 
6278     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6282   static final private boolean jj_3R_179() {
 
6283     if (jj_scan_token(IDENTIFIER)) return true;
 
6284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6288       if (jj_3R_188()) { jj_scanpos = xsp; break; }
 
6289       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6294   static final private boolean jj_3R_172() {
 
6301     if (jj_3R_181()) return true;
 
6302     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6303     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6304     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6308   static final private boolean jj_3R_187() {
 
6309     if (jj_scan_token(MINUS_MINUS)) return true;
 
6310     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6314   static final private boolean jj_3R_186() {
 
6315     if (jj_scan_token(PLUS_PLUS)) return true;
 
6316     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6320   static final private boolean jj_3R_185() {
 
6325     if (jj_3R_187()) return true;
 
6326     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6327     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6331   static final private boolean jj_3R_97() {
 
6332     if (jj_3R_100()) return true;
 
6333     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6334     if (jj_3R_43()) return true;
 
6335     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6339   static final private boolean jj_3R_89() {
 
6340     if (jj_3R_65()) return true;
 
6341     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6344     if (jj_3R_97()) jj_scanpos = xsp;
 
6345     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6349   static final private boolean jj_3R_170() {
 
6350     if (jj_3R_172()) return true;
 
6351     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6354     if (jj_3R_185()) jj_scanpos = xsp;
 
6355     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6359   static final private boolean jj_3R_88() {
 
6360     if (jj_3R_96()) return true;
 
6361     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6365   static final private boolean jj_3R_87() {
 
6366     if (jj_3R_95()) return true;
 
6367     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6371   static final private boolean jj_3R_80() {
 
6378     if (jj_3R_89()) return true;
 
6379     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6380     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6381     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6385   static final private boolean jj_3R_184() {
 
6386     if (jj_scan_token(ARRAY)) return true;
 
6387     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6391   static final private boolean jj_3R_183() {
 
6392     if (jj_3R_47()) return true;
 
6393     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6397   static final private boolean jj_3R_42() {
 
6398     if (jj_scan_token(ARRAY)) return true;
 
6399     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6403   static final private boolean jj_3R_76() {
 
6404     if (jj_3R_80()) return true;
 
6405     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6409   static final private boolean jj_3R_75() {
 
6410     if (jj_scan_token(BANG)) return true;
 
6411     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6412     if (jj_3R_64()) return true;
 
6413     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6417   static final private boolean jj_3R_64() {
 
6422     if (jj_3R_76()) return true;
 
6423     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6424     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6428   static final private boolean jj_3R_169() {
 
6429     if (jj_scan_token(LPAREN)) return true;
 
6430     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6435     if (jj_3R_184()) return true;
 
6436     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6437     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6438     if (jj_scan_token(RPAREN)) return true;
 
6439     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6440     if (jj_3R_143()) return true;
 
6441     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6445   static final private boolean jj_3R_41() {
 
6446     if (jj_3R_47()) return true;
 
6447     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6451   static final private boolean jj_3R_49() {
 
6452     if (jj_3R_64()) return true;
 
6453     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6457   static final private boolean jj_3R_48() {
 
6458     if (jj_3R_63()) return true;
 
6459     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6463   static final private boolean jj_3R_43() {
 
6468     if (jj_3R_49()) return true;
 
6469     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6470     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6474   static final private boolean jj_3_3() {
 
6475     if (jj_scan_token(LPAREN)) return true;
 
6476     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6481     if (jj_3R_42()) return true;
 
6482     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6483     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6484     if (jj_scan_token(RPAREN)) return true;
 
6485     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6489   static final private boolean jj_3R_62() {
 
6490     if (jj_scan_token(OBJECT)) return true;
 
6491     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6495   static final private boolean jj_3R_168() {
 
6496     if (jj_scan_token(LPAREN)) return true;
 
6497     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6498     if (jj_3R_43()) return true;
 
6499     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6500     if (jj_scan_token(RPAREN)) return true;
 
6501     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6505   static final private boolean jj_3R_61() {
 
6506     if (jj_scan_token(INTEGER)) return true;
 
6507     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6511   static final private boolean jj_3R_167() {
 
6512     if (jj_3R_171()) return true;
 
6513     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6517   static final private boolean jj_3R_166() {
 
6518     if (jj_3R_170()) return true;
 
6519     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6523   static final private boolean jj_3R_60() {
 
6524     if (jj_scan_token(INT)) return true;
 
6525     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6529   static final private boolean jj_3R_162() {
 
6538     if (jj_3R_168()) return true;
 
6539     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6540     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6541     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6542     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6546   static final private boolean jj_3R_165() {
 
6547     if (jj_3R_169()) return true;
 
6548     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6552   static final private boolean jj_3R_59() {
 
6553     if (jj_scan_token(FLOAT)) return true;
 
6554     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6558   static final private boolean jj_3R_58() {
 
6559     if (jj_scan_token(DOUBLE)) return true;
 
6560     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6564   static final private boolean jj_3R_57() {
 
6565     if (jj_scan_token(REAL)) return true;
 
6566     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6570   static final private boolean jj_3R_56() {
 
6571     if (jj_scan_token(BOOLEAN)) return true;
 
6572     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6576   static final private boolean jj_3R_164() {
 
6577     if (jj_scan_token(MINUS_MINUS)) return true;
 
6578     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6582   static final private boolean jj_3R_55() {
 
6583     if (jj_scan_token(BOOL)) return true;
 
6584     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6588   static final private boolean jj_3R_163() {
 
6589     if (jj_scan_token(PLUS_PLUS)) return true;
 
6590     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6594   static final private boolean jj_3R_47() {
 
6613     if (jj_3R_62()) return true;
 
6614     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6615     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6616     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6617     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6618     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6619     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6620     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6621     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6622     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6626   static final private boolean jj_3R_54() {
 
6627     if (jj_scan_token(STRING)) return true;
 
6628     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6632   static final private boolean jj_3R_161() {
 
6637     if (jj_3R_164()) return true;
 
6638     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6639     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6640     if (jj_3R_172()) return true;
 
6641     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6645   static final private boolean jj_3R_66() {
 
6646     if (jj_scan_token(ASSIGN)) return true;
 
6647     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6648     if (jj_3R_43()) return true;
 
6649     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6653   static final private boolean jj_3R_156() {
 
6654     if (jj_3R_162()) return true;
 
6655     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
 
6659   static private boolean jj_initialized_once = false;
 
6660   static public PHPParserTokenManager token_source;
 
6661   static SimpleCharStream jj_input_stream;
 
6662   static public Token token, jj_nt;
 
6663   static private int jj_ntk;
 
6664   static private Token jj_scanpos, jj_lastpos;
 
6665   static private int jj_la;
 
6666   static public boolean lookingAhead = false;
 
6667   static private boolean jj_semLA;
 
6668   static private int jj_gen;
 
6669   static final private int[] jj_la1 = new int[125];
 
6670   static private int[] jj_la1_0;
 
6671   static private int[] jj_la1_1;
 
6672   static private int[] jj_la1_2;
 
6673   static private int[] jj_la1_3;
 
6674   static private int[] jj_la1_4;
 
6682    private static void jj_la1_0() {
 
6683       jj_la1_0 = new int[] {0xf960001e,0x6,0x6,0xf960001e,0x0,0xf9600000,0x0,0xc00000,0xc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x68000000,0x0,0x0,0x0,0x0,0x0,0x0,0x68000000,0x60000000,0x0,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,0x0,0x0,0x8000000,0x0,0x8000000,0x0,0x68000000,0x68000000,0x0,0x0,0x68000000,0x0,0x0,0x81000000,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,};
 
6685    private static void jj_la1_1() {
 
6686       jj_la1_1 = new int[] {0x875d507f,0x0,0x0,0x875d507f,0x0,0x875d507f,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3080000,0x200,0x30c0000,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,0x0,0x30c0000,0x30c0000,0x0,0x30c0000,0x0,0x30c0000,0x0,0x0,0x0,0x180,0x0,0x40000,0x180,0x40000,0x0,0x30c0000,0x30c0000,0x80,0x3080000,0x30c0000,0x0,0x0,0x8451507f,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,};
 
6688    private static void jj_la1_2() {
 
6689       jj_la1_2 = new int[] {0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x13c1c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x300000,0x0,0x13c1c00,0x0,0x1000000,0x0,0x1000000,0x1000000,0x3fe,0x13c1c00,0x1800,0x0,0x800,0x0,0x4000,0x80010000,0x80010000,0x20000,0x20000,0x0,0x2000000,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x70000000,0x70000000,0x300000,0x300000,0x8c00000,0x8c00000,0x13c0400,0x3c0400,0x300000,0x3c0000,0xc0000,0x0,0x3fe,0xc0000,0xc0000,0x0,0x0,0x0,0x0,0x0,0xbfe,0x13c1ffe,0x13c1ffe,0x0,0x0,0x13c1c00,0x0,0x400,0x400,0x13c1c00,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0xc0000,0xc0000,0xc0000,0x8000,0x0,0x0,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x0,0x13c9c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c9c00,0xc0800,0x13c1c00,0xc0000,0x13c1c00,0x13c9c00,0xc0000,0x0,0x13c1c00,0x13c1c00,};
 
6691    private static void jj_la1_3() {
 
6692       jj_la1_3 = new int[] {0x2288a2,0x0,0x0,0x2288a2,0x200000,0x2288a2,0x0,0x0,0x0,0x400000,0x0,0x0,0x20000,0x0,0x20000,0x20800,0x22,0x22,0x8a2,0x0,0x88a2,0x400000,0x0,0x400000,0x0,0x0,0x0,0x88a2,0x0,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,0x88000,0x8000,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,};
 
6694    private static void jj_la1_4() {
 
6695       jj_la1_4 = new int[] {0x4000,0x0,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x3ffe,0x4000,0x3ffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x4000,0x2,0x0,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,};
 
6697   static final private JJCalls[] jj_2_rtns = new JJCalls[5];
 
6698   static private boolean jj_rescan = false;
 
6699   static private int jj_gc = 0;
 
6701   public PHPParser(java.io.InputStream stream) {
 
6702     if (jj_initialized_once) {
 
6703       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6704       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6705       System.out.println("       during parser generation.");
 
6708     jj_initialized_once = true;
 
6709     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6710     token_source = new PHPParserTokenManager(jj_input_stream);
 
6711     token = new Token();
 
6714     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6715     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6718   static public void ReInit(java.io.InputStream stream) {
 
6719     jj_input_stream.ReInit(stream, 1, 1);
 
6720     token_source.ReInit(jj_input_stream);
 
6721     token = new Token();
 
6724     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6725     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6728   public PHPParser(java.io.Reader stream) {
 
6729     if (jj_initialized_once) {
 
6730       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6731       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6732       System.out.println("       during parser generation.");
 
6735     jj_initialized_once = true;
 
6736     jj_input_stream = new SimpleCharStream(stream, 1, 1);
 
6737     token_source = new PHPParserTokenManager(jj_input_stream);
 
6738     token = new Token();
 
6741     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6742     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6745   static public void ReInit(java.io.Reader stream) {
 
6746     jj_input_stream.ReInit(stream, 1, 1);
 
6747     token_source.ReInit(jj_input_stream);
 
6748     token = new Token();
 
6751     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6752     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6755   public PHPParser(PHPParserTokenManager tm) {
 
6756     if (jj_initialized_once) {
 
6757       System.out.println("ERROR: Second call to constructor of static parser.  You must");
 
6758       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
 
6759       System.out.println("       during parser generation.");
 
6762     jj_initialized_once = true;
 
6764     token = new Token();
 
6767     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6768     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6771   public void ReInit(PHPParserTokenManager tm) {
 
6773     token = new Token();
 
6776     for (int i = 0; i < 125; i++) jj_la1[i] = -1;
 
6777     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
 
6780   static final private Token jj_consume_token(int kind) throws ParseException {
 
6782     if ((oldToken = token).next != null) token = token.next;
 
6783     else token = token.next = token_source.getNextToken();
 
6785     if (token.kind == kind) {
 
6787       if (++jj_gc > 100) {
 
6789         for (int i = 0; i < jj_2_rtns.length; i++) {
 
6790           JJCalls c = jj_2_rtns[i];
 
6792             if (c.gen < jj_gen) c.first = null;
 
6801     throw generateParseException();
 
6804   static final private boolean jj_scan_token(int kind) {
 
6805     if (jj_scanpos == jj_lastpos) {
 
6807       if (jj_scanpos.next == null) {
 
6808         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
 
6810         jj_lastpos = jj_scanpos = jj_scanpos.next;
 
6813       jj_scanpos = jj_scanpos.next;
 
6816       int i = 0; Token tok = token;
 
6817       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
 
6818       if (tok != null) jj_add_error_token(kind, i);
 
6820     return (jj_scanpos.kind != kind);
 
6823   static final public Token getNextToken() {
 
6824     if (token.next != null) token = token.next;
 
6825     else token = token.next = token_source.getNextToken();
 
6831   static final public Token getToken(int index) {
 
6832     Token t = lookingAhead ? jj_scanpos : token;
 
6833     for (int i = 0; i < index; i++) {
 
6834       if (t.next != null) t = t.next;
 
6835       else t = t.next = token_source.getNextToken();
 
6840   static final private int jj_ntk() {
 
6841     if ((jj_nt=token.next) == null)
 
6842       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
 
6844       return (jj_ntk = jj_nt.kind);
 
6847   static private java.util.Vector jj_expentries = new java.util.Vector();
 
6848   static private int[] jj_expentry;
 
6849   static private int jj_kind = -1;
 
6850   static private int[] jj_lasttokens = new int[100];
 
6851   static private int jj_endpos;
 
6853   static private void jj_add_error_token(int kind, int pos) {
 
6854     if (pos >= 100) return;
 
6855     if (pos == jj_endpos + 1) {
 
6856       jj_lasttokens[jj_endpos++] = kind;
 
6857     } else if (jj_endpos != 0) {
 
6858       jj_expentry = new int[jj_endpos];
 
6859       for (int i = 0; i < jj_endpos; i++) {
 
6860         jj_expentry[i] = jj_lasttokens[i];
 
6862       boolean exists = false;
 
6863       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
 
6864         int[] oldentry = (int[])(enum.nextElement());
 
6865         if (oldentry.length == jj_expentry.length) {
 
6867           for (int i = 0; i < jj_expentry.length; i++) {
 
6868             if (oldentry[i] != jj_expentry[i]) {
 
6876       if (!exists) jj_expentries.addElement(jj_expentry);
 
6877       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
 
6881   static public ParseException generateParseException() {
 
6882     jj_expentries.removeAllElements();
 
6883     boolean[] la1tokens = new boolean[143];
 
6884     for (int i = 0; i < 143; i++) {
 
6885       la1tokens[i] = false;
 
6888       la1tokens[jj_kind] = true;
 
6891     for (int i = 0; i < 125; i++) {
 
6892       if (jj_la1[i] == jj_gen) {
 
6893         for (int j = 0; j < 32; j++) {
 
6894           if ((jj_la1_0[i] & (1<<j)) != 0) {
 
6895             la1tokens[j] = true;
 
6897           if ((jj_la1_1[i] & (1<<j)) != 0) {
 
6898             la1tokens[32+j] = true;
 
6900           if ((jj_la1_2[i] & (1<<j)) != 0) {
 
6901             la1tokens[64+j] = true;
 
6903           if ((jj_la1_3[i] & (1<<j)) != 0) {
 
6904             la1tokens[96+j] = true;
 
6906           if ((jj_la1_4[i] & (1<<j)) != 0) {
 
6907             la1tokens[128+j] = true;
 
6912     for (int i = 0; i < 143; i++) {
 
6914         jj_expentry = new int[1];
 
6916         jj_expentries.addElement(jj_expentry);
 
6921     jj_add_error_token(0, 0);
 
6922     int[][] exptokseq = new int[jj_expentries.size()][];
 
6923     for (int i = 0; i < jj_expentries.size(); i++) {
 
6924       exptokseq[i] = (int[])jj_expentries.elementAt(i);
 
6926     return new ParseException(token, exptokseq, tokenImage);
 
6929   static final public void enable_tracing() {
 
6932   static final public void disable_tracing() {
 
6935   static final private void jj_rescan_token() {
 
6937     for (int i = 0; i < 5; i++) {
 
6938       JJCalls p = jj_2_rtns[i];
 
6940         if (p.gen > jj_gen) {
 
6941           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
 
6943             case 0: jj_3_1(); break;
 
6944             case 1: jj_3_2(); break;
 
6945             case 2: jj_3_3(); break;
 
6946             case 3: jj_3_4(); break;
 
6947             case 4: jj_3_5(); break;
 
6951       } while (p != null);
 
6956   static final private void jj_save(int index, int xla) {
 
6957     JJCalls p = jj_2_rtns[index];
 
6958     while (p.gen > jj_gen) {
 
6959       if (p.next == null) { p = p.next = new JJCalls(); break; }
 
6962     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
 
6965   static final class JJCalls {