/*
 * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/* Generated By:JavaCC: Do not edit this line. ExpressionParser.java */
package com.sun.tools.example.debug.expr;

import com.sun.jdi.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class ExpressionParser implements ExpressionParserConstants {

  Stack<LValue> stack = new Stack<>();
  VirtualMachine vm = null;
  GetFrame frameGetter = null;
  private static GetFrame lastFrameGetter;
  private static LValue lastLValue;

  LValue peek() {
    return stack.peek();
  }

  LValue pop() {
    return stack.pop();
  }

  void push(LValue lval) {
    stack.push(lval);
  }

  public static Value getMassagedValue() throws ParseException {
        return lastLValue.getMassagedValue(lastFrameGetter);
  }

  public interface GetFrame {
        StackFrame get() throws IncompatibleThreadStateException;
  }

  @SuppressWarnings("deprecation")
  public static Value evaluate(String expr, VirtualMachine vm,
                               GetFrame frameGetter) throws ParseException,
                                            InvocationException,
                                            InvalidTypeException,
                                            ClassNotLoadedException,
                                            IncompatibleThreadStateException {
        // TODO StringBufferInputStream is deprecated.
        java.io.InputStream in = new java.io.StringBufferInputStream(expr);
        ExpressionParser parser = new ExpressionParser(in);
        parser.vm = vm;
        parser.frameGetter = frameGetter;
        Value value = null;
        parser.Expression();
        lastFrameGetter = frameGetter;
        lastLValue = parser.pop();
        return lastLValue.getValue();
  }

  public static void main(String args[]) {
    ExpressionParser parser;
    System.out.print("Java Expression Parser:  ");
    if (args.length == 0) {
      System.out.println("Reading from standard input . . .");
      parser = new ExpressionParser(System.in);
    } else if (args.length == 1) {
      System.out.println("Reading from file " + args[0] + " . . .");
      try {
        parser = new ExpressionParser(new java.io.FileInputStream(args[0]));
      } catch (java.io.FileNotFoundException e) {
        System.out.println("Java Parser Version 1.0.2:  File " +
                           args[0] + " not found.");
        return;
      }
    } else {
      System.out.println("Usage is one of:");
      System.out.println("         java ExpressionParser < inputfile");
      System.out.println("OR");
      System.out.println("         java ExpressionParser inputfile");
      return;
    }
    try {
        parser.Expression();
        System.out.print("Java Expression Parser:  ");
        System.out.println("Java program parsed successfully.");
    } catch (ParseException e) {
        System.out.print("Java Expression Parser:  ");
        System.out.println("Encountered errors during parse.");
    }
  }

THE JAVA LANGUAGE GRAMMAR STARTS HERE *
/***************************************** * THE JAVA LANGUAGE GRAMMAR STARTS HERE * *****************************************/
/* * Type, name and expression syntax follows. */ final public void Type() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BOOLEAN: case BYTE: case CHAR: case DOUBLE: case FLOAT: case INT: case LONG: case SHORT: PrimitiveType(); break; case IDENTIFIER: Name(); break; default: jj_la1[0] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACKET: ; break; default: jj_la1[1] = jj_gen; break label_1; } jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); } } final public void PrimitiveType() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BOOLEAN: jj_consume_token(BOOLEAN); break; case CHAR: jj_consume_token(CHAR); break; case BYTE: jj_consume_token(BYTE); break; case SHORT: jj_consume_token(SHORT); break; case INT: jj_consume_token(INT); break; case LONG: jj_consume_token(LONG); break; case FLOAT: jj_consume_token(FLOAT); break; case DOUBLE: jj_consume_token(DOUBLE); break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public String Name() throws ParseException { StringBuilder sb = new StringBuilder(); jj_consume_token(IDENTIFIER); sb.append(token); label_2: while (true) { if (jj_2_1(2)) { ; } else { break label_2; } jj_consume_token(DOT); jj_consume_token(IDENTIFIER); sb.append('.'); sb.append(token); } {if (true) return sb.toString();} throw new Error("Missing return statement in function"); } final public void NameList() throws ParseException { Name(); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: jj_la1[3] = jj_gen; break label_3; } jj_consume_token(COMMA); Name(); } } /* * Expression syntax follows. */ final public void Expression() throws ParseException { if (jj_2_2(2147483647)) { Assignment(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FALSE: case NEW: case NULL: case SUPER: case THIS: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: case BANG: case TILDE: case INCR: case DECR: case PLUS: case MINUS: ConditionalExpression(); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } final public void Assignment() throws ParseException { PrimaryExpression(); AssignmentOperator(); Expression(); LValue exprVal = pop(); pop().setValue(exprVal); push(exprVal); } final public void AssignmentOperator() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASSIGN: jj_consume_token(ASSIGN); break; case STARASSIGN: jj_consume_token(STARASSIGN); break; case SLASHASSIGN: jj_consume_token(SLASHASSIGN); break; case REMASSIGN: jj_consume_token(REMASSIGN); break; case PLUSASSIGN: jj_consume_token(PLUSASSIGN); break; case MINUSASSIGN: jj_consume_token(MINUSASSIGN); break; case LSHIFTASSIGN: jj_consume_token(LSHIFTASSIGN); break; case RSIGNEDSHIFTASSIGN: jj_consume_token(RSIGNEDSHIFTASSIGN); break; case RUNSIGNEDSHIFTASSIGN: jj_consume_token(RUNSIGNEDSHIFTASSIGN); break; case ANDASSIGN: jj_consume_token(ANDASSIGN); break; case XORASSIGN: jj_consume_token(XORASSIGN); break; case ORASSIGN: jj_consume_token(ORASSIGN); break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void ConditionalExpression() throws ParseException { ConditionalOrExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case HOOK: jj_consume_token(HOOK); Expression(); jj_consume_token(COLON); ConditionalExpression(); LValue falseBranch = pop(); LValue trueBranch = pop(); Value cond = pop().interiorGetValue(); if (cond instanceof BooleanValue) { push(((BooleanValue)cond).booleanValue()? trueBranch : falseBranch); } else { {if (true) throw new ParseException("Condition must be boolean");} } break; default: jj_la1[6] = jj_gen; ; } } final public void ConditionalOrExpression() throws ParseException { ConditionalAndExpression(); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SC_OR: ; break; default: jj_la1[7] = jj_gen; break label_4; } jj_consume_token(SC_OR); ConditionalAndExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void ConditionalAndExpression() throws ParseException { InclusiveOrExpression(); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SC_AND: ; break; default: jj_la1[8] = jj_gen; break label_5; } jj_consume_token(SC_AND); InclusiveOrExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void InclusiveOrExpression() throws ParseException { ExclusiveOrExpression(); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BIT_OR: ; break; default: jj_la1[9] = jj_gen; break label_6; } jj_consume_token(BIT_OR); ExclusiveOrExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void ExclusiveOrExpression() throws ParseException { AndExpression(); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case XOR: ; break; default: jj_la1[10] = jj_gen; break label_7; } jj_consume_token(XOR); AndExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void AndExpression() throws ParseException { EqualityExpression(); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BIT_AND: ; break; default: jj_la1[11] = jj_gen; break label_8; } jj_consume_token(BIT_AND); EqualityExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void EqualityExpression() throws ParseException { Token tok; InstanceOfExpression(); label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EQ: case NE: ; break; default: jj_la1[12] = jj_gen; break label_9; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EQ: tok = jj_consume_token(EQ); break; case NE: tok = jj_consume_token(NE); break; default: jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } InstanceOfExpression(); LValue left = pop(); push( LValue.booleanOperation(vm, tok, pop(), left) ); } } final public void InstanceOfExpression() throws ParseException { RelationalExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INSTANCEOF: jj_consume_token(INSTANCEOF); Type(); {if (true) throw new ParseException("operation not yet supported");} break; default: jj_la1[14] = jj_gen; ; } } final public void RelationalExpression() throws ParseException { Token tok; ShiftExpression(); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case GT: case LT: case LE: case GE: ; break; default: jj_la1[15] = jj_gen; break label_10; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LT: tok = jj_consume_token(LT); break; case GT: tok = jj_consume_token(GT); break; case LE: tok = jj_consume_token(LE); break; case GE: tok = jj_consume_token(GE); break; default: jj_la1[16] = jj_gen; jj_consume_token(-1); throw new ParseException(); } ShiftExpression(); LValue left = pop(); push( LValue.booleanOperation(vm, tok, pop(), left) ); } } final public void ShiftExpression() throws ParseException { AdditiveExpression(); label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LSHIFT: case RSIGNEDSHIFT: case RUNSIGNEDSHIFT: ; break; default: jj_la1[17] = jj_gen; break label_11; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LSHIFT: jj_consume_token(LSHIFT); break; case RSIGNEDSHIFT: jj_consume_token(RSIGNEDSHIFT); break; case RUNSIGNEDSHIFT: jj_consume_token(RUNSIGNEDSHIFT); break; default: jj_la1[18] = jj_gen; jj_consume_token(-1); throw new ParseException(); } AdditiveExpression(); {if (true) throw new ParseException("operation not yet supported");} } } final public void AdditiveExpression() throws ParseException { Token tok; MultiplicativeExpression(); label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: ; break; default: jj_la1[19] = jj_gen; break label_12; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: tok = jj_consume_token(PLUS); break; case MINUS: tok = jj_consume_token(MINUS); break; default: jj_la1[20] = jj_gen; jj_consume_token(-1); throw new ParseException(); } MultiplicativeExpression(); LValue left = pop(); push( LValue.operation(vm, tok, pop(), left, frameGetter) ); } } final public void MultiplicativeExpression() throws ParseException { Token tok; UnaryExpression(); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: case SLASH: case REM: ; break; default: jj_la1[21] = jj_gen; break label_13; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: tok = jj_consume_token(STAR); break; case SLASH: tok = jj_consume_token(SLASH); break; case REM: tok = jj_consume_token(REM); break; default: jj_la1[22] = jj_gen; jj_consume_token(-1); throw new ParseException(); } UnaryExpression(); LValue left = pop(); push( LValue.operation(vm, tok, pop(), left, frameGetter) ); } } final public void UnaryExpression() throws ParseException { Token tok; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: tok = jj_consume_token(PLUS); break; case MINUS: tok = jj_consume_token(MINUS); break; default: jj_la1[23] = jj_gen; jj_consume_token(-1); throw new ParseException(); } UnaryExpression(); push( LValue.operation(vm, tok, pop(), frameGetter) ); break; case INCR: PreIncrementExpression(); break; case DECR: PreDecrementExpression(); break; case FALSE: case NEW: case NULL: case SUPER: case THIS: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: case BANG: case TILDE: UnaryExpressionNotPlusMinus(); break; default: jj_la1[24] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void PreIncrementExpression() throws ParseException { jj_consume_token(INCR); PrimaryExpression(); {if (true) throw new ParseException("operation not yet supported");} } final public void PreDecrementExpression() throws ParseException { jj_consume_token(DECR); PrimaryExpression(); {if (true) throw new ParseException("operation not yet supported");} } final public void UnaryExpressionNotPlusMinus() throws ParseException { Token tok; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BANG: case TILDE: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TILDE: tok = jj_consume_token(TILDE); break; case BANG: tok = jj_consume_token(BANG); break; default: jj_la1[25] = jj_gen; jj_consume_token(-1); throw new ParseException(); } UnaryExpression(); push( LValue.operation(vm, tok, pop(), frameGetter) ); break; default: jj_la1[26] = jj_gen; if (jj_2_3(2147483647)) { CastExpression(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FALSE: case NEW: case NULL: case SUPER: case THIS: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: PostfixExpression(); break; default: jj_la1[27] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } } // This production is to determine lookahead only. The LOOKAHEAD specifications // below are not used, but they are there just to indicate that we know about // this. final public void CastLookahead() throws ParseException { if (jj_2_4(2)) { jj_consume_token(LPAREN); PrimitiveType(); } else if (jj_2_5(2147483647)) { jj_consume_token(LPAREN); Name(); jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: jj_consume_token(LPAREN); Name(); jj_consume_token(RPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TILDE: jj_consume_token(TILDE); break; case BANG: jj_consume_token(BANG); break; case LPAREN: jj_consume_token(LPAREN); break; case IDENTIFIER: jj_consume_token(IDENTIFIER); break; case THIS: jj_consume_token(THIS); break; case SUPER: jj_consume_token(SUPER); break; case NEW: jj_consume_token(NEW); break; case FALSE: case NULL: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: Literal(); break; default: jj_la1[28] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[29] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } final public void PostfixExpression() throws ParseException { PrimaryExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: case DECR: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: jj_consume_token(INCR); break; case DECR: jj_consume_token(DECR); {if (true) throw new ParseException("operation not yet supported");} break; default: jj_la1[30] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[31] = jj_gen; ; } } final public void CastExpression() throws ParseException { if (jj_2_6(2)) { jj_consume_token(LPAREN); PrimitiveType(); label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACKET: ; break; default: jj_la1[32] = jj_gen; break label_14; } jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); } jj_consume_token(RPAREN); UnaryExpression(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: jj_consume_token(LPAREN); Name(); label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACKET: ; break; default: jj_la1[33] = jj_gen; break label_15; } jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); } jj_consume_token(RPAREN); UnaryExpressionNotPlusMinus(); break; default: jj_la1[34] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } final public void PrimaryExpression() throws ParseException { PrimaryPrefix(); label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: case LBRACKET: case DOT: ; break; default: jj_la1[35] = jj_gen; break label_16; } PrimarySuffix(); } } final public void PrimaryPrefix() throws ParseException { String name; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FALSE: case NULL: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: Literal(); break; case IDENTIFIER: name = Name(); push(LValue.makeName(vm, frameGetter, name)); break; case THIS: jj_consume_token(THIS); push(LValue.makeThisObject(vm, frameGetter, token)); break; case SUPER: jj_consume_token(SUPER); jj_consume_token(DOT); jj_consume_token(IDENTIFIER); {if (true) throw new ParseException("operation not yet supported");} break; case LPAREN: jj_consume_token(LPAREN); Expression(); jj_consume_token(RPAREN); break; case NEW: AllocationExpression(); break; default: jj_la1[36] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void PrimarySuffix() throws ParseException { List<Value> argList; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACKET: jj_consume_token(LBRACKET); Expression(); jj_consume_token(RBRACKET); LValue index = pop(); push(pop().arrayElementLValue(index)); break; case DOT: jj_consume_token(DOT); jj_consume_token(IDENTIFIER); push(pop().memberLValue(frameGetter, token.image)); break; case LPAREN: argList = Arguments(); peek().invokeWith(argList); break; default: jj_la1[37] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void Literal() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INTEGER_LITERAL: jj_consume_token(INTEGER_LITERAL); push(LValue.makeInteger(vm, token)); break; case FLOATING_POINT_LITERAL: jj_consume_token(FLOATING_POINT_LITERAL); push(LValue.makeFloat(vm, token)); break; case CHARACTER_LITERAL: jj_consume_token(CHARACTER_LITERAL); push(LValue.makeCharacter(vm, token)); break; case STRING_LITERAL: jj_consume_token(STRING_LITERAL); push(LValue.makeString(vm, token)); break; case FALSE: case TRUE: BooleanLiteral(); push(LValue.makeBoolean(vm, token)); break; case NULL: NullLiteral(); push(LValue.makeNull(vm, token)); break; default: jj_la1[38] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void BooleanLiteral() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TRUE: jj_consume_token(TRUE); break; case FALSE: jj_consume_token(FALSE); break; default: jj_la1[39] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void NullLiteral() throws ParseException { jj_consume_token(NULL); } final public List<Value> Arguments() throws ParseException { List<Value> argList = new ArrayList<>(); jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FALSE: case NEW: case NULL: case SUPER: case THIS: case TRUE: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: case BANG: case TILDE: case INCR: case DECR: case PLUS: case MINUS: ArgumentList(argList); break; default: jj_la1[40] = jj_gen; ; } jj_consume_token(RPAREN); {if (true) return argList;} throw new Error("Missing return statement in function"); } final public void ArgumentList(List<Value> argList) throws ParseException { Expression(); argList.add(pop().interiorGetValue()); label_17: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: jj_la1[41] = jj_gen; break label_17; } jj_consume_token(COMMA); Expression(); argList.add(pop().interiorGetValue()); } } final public void AllocationExpression() throws ParseException { List<Value> argList; String className; if (jj_2_7(2)) { jj_consume_token(NEW); PrimitiveType(); ArrayDimensions(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NEW: jj_consume_token(NEW); className = Name(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: argList = Arguments(); push(LValue.makeNewObject(vm, frameGetter, className, argList)); break; case LBRACKET: ArrayDimensions(); {if (true) throw new ParseException("operation not yet supported");} break; default: jj_la1[42] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } /* * The second LOOKAHEAD specification below is to parse to PrimarySuffix * if there is an expression between the "[...]". */ final public void ArrayDimensions() throws ParseException { label_18: while (true) { jj_consume_token(LBRACKET); Expression(); jj_consume_token(RBRACKET); if (jj_2_8(2)) { ; } else { break label_18; } } label_19: while (true) { if (jj_2_9(2)) { ; } else { break label_19; } jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); } } private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_1(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(0, xla); } } private boolean jj_2_2(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_2(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(1, xla); } } private boolean jj_2_3(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_3(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(2, xla); } } private boolean jj_2_4(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_4(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(3, xla); } } private boolean jj_2_5(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_5(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(4, xla); } } private boolean jj_2_6(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_6(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(5, xla); } } private boolean jj_2_7(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_7(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(6, xla); } } private boolean jj_2_8(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_8(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(7, xla); } } private boolean jj_2_9(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_9(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(8, xla); } } private boolean jj_3R_94() { if (jj_scan_token(DECR)) return true; if (jj_3R_20()) return true; return false; } private boolean jj_3R_86() { if (jj_3R_24()) return true; return false; } private boolean jj_3R_93() { if (jj_scan_token(INCR)) return true; if (jj_3R_20()) return true; return false; } private boolean jj_3R_91() { if (jj_3R_95()) return true; return false; } private boolean jj_3R_23() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(10)) { jj_scanpos = xsp; if (jj_scan_token(15)) { jj_scanpos = xsp; if (jj_scan_token(12)) { jj_scanpos = xsp; if (jj_scan_token(45)) { jj_scanpos = xsp; if (jj_scan_token(34)) { jj_scanpos = xsp; if (jj_scan_token(36)) { jj_scanpos = xsp; if (jj_scan_token(27)) { jj_scanpos = xsp; if (jj_scan_token(21)) return true; } } } } } } } return false; } private boolean jj_3R_90() { if (jj_3R_94()) return true; return false; } private boolean jj_3R_89() { if (jj_3R_93()) return true; return false; } private boolean jj_3R_85() { if (jj_3R_23()) return true; return false; } private boolean jj_3R_60() { if (jj_3R_58()) return true; return false; } private boolean jj_3R_88() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(94)) { jj_scanpos = xsp; if (jj_scan_token(95)) return true; } if (jj_3R_83()) return true; return false; } private boolean jj_3R_83() { Token xsp; xsp = jj_scanpos; if (jj_3R_88()) { jj_scanpos = xsp; if (jj_3R_89()) { jj_scanpos = xsp; if (jj_3R_90()) { jj_scanpos = xsp; if (jj_3R_91()) return true; } } } return false; } private boolean jj_3R_82() { Token xsp; xsp = jj_scanpos; if (jj_3R_85()) { jj_scanpos = xsp; if (jj_3R_86()) return true; } while (true) { xsp = jj_scanpos; if (jj_3R_87()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_59() { if (jj_3R_55()) return true; return false; } private boolean jj_3R_96() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(96)) { jj_scanpos = xsp; if (jj_scan_token(97)) { jj_scanpos = xsp; if (jj_scan_token(101)) return true; } } if (jj_3R_83()) return true; return false; } private boolean jj_3R_80() { if (jj_3R_83()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_96()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_92() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(94)) { jj_scanpos = xsp; if (jj_scan_token(95)) return true; } if (jj_3R_80()) return true; return false; } private boolean jj_3_8() { if (jj_scan_token(LBRACKET)) return true; if (jj_3R_25()) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_58() { Token xsp; if (jj_3_8()) return true; while (true) { xsp = jj_scanpos; if (jj_3_8()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; if (jj_3_9()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_84() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(102)) { jj_scanpos = xsp; if (jj_scan_token(103)) { jj_scanpos = xsp; if (jj_scan_token(104)) return true; } } if (jj_3R_78()) return true; return false; } private boolean jj_3R_78() { if (jj_3R_80()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_92()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_54() { if (jj_scan_token(NEW)) return true; if (jj_3R_24()) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_59()) { jj_scanpos = xsp; if (jj_3R_60()) return true; } return false; } private boolean jj_3R_76() { if (jj_3R_78()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_84()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_81() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(81)) { jj_scanpos = xsp; if (jj_scan_token(80)) { jj_scanpos = xsp; if (jj_scan_token(87)) { jj_scanpos = xsp; if (jj_scan_token(88)) return true; } } } if (jj_3R_76()) return true; return false; } private boolean jj_3R_43() { Token xsp; xsp = jj_scanpos; if (jj_3_7()) { jj_scanpos = xsp; if (jj_3R_54()) return true; } return false; } private boolean jj_3_7() { if (jj_scan_token(NEW)) return true; if (jj_3R_23()) return true; if (jj_3R_58()) return true; return false; } private boolean jj_3R_67() { if (jj_scan_token(COMMA)) return true; if (jj_3R_25()) return true; return false; } private boolean jj_3R_64() { if (jj_3R_25()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_67()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_61() { if (jj_3R_64()) return true; return false; } private boolean jj_3R_79() { if (jj_scan_token(INSTANCEOF)) return true; if (jj_3R_82()) return true; return false; } private boolean jj_3R_74() { if (jj_3R_76()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_81()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_55() { if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_61()) jj_scanpos = xsp; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3R_72() { if (jj_3R_74()) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_79()) jj_scanpos = xsp; return false; } private boolean jj_3R_77() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(86)) { jj_scanpos = xsp; if (jj_scan_token(89)) return true; } if (jj_3R_72()) return true; return false; } private boolean jj_3R_75() { if (jj_scan_token(BIT_AND)) return true; if (jj_3R_70()) return true; return false; } private boolean jj_3R_70() { if (jj_3R_72()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_77()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_57() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(54)) { jj_scanpos = xsp; if (jj_scan_token(24)) return true; } return false; } private boolean jj_3R_53() { if (jj_scan_token(39)) return true; return false; } private boolean jj_3R_39() { if (jj_3R_42()) return true; return false; } private boolean jj_3R_68() { if (jj_3R_70()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_75()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_73() { if (jj_scan_token(XOR)) return true; if (jj_3R_68()) return true; return false; } private boolean jj_3R_52() { if (jj_3R_57()) return true; return false; } private boolean jj_3R_51() { if (jj_scan_token(STRING_LITERAL)) return true; return false; } private boolean jj_3R_50() { if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } private boolean jj_3R_65() { if (jj_3R_68()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_73()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_71() { if (jj_scan_token(BIT_OR)) return true; if (jj_3R_65()) return true; return false; } private boolean jj_3R_49() { if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; return false; } private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; if (jj_3R_48()) { jj_scanpos = xsp; if (jj_3R_49()) { jj_scanpos = xsp; if (jj_3R_50()) { jj_scanpos = xsp; if (jj_3R_51()) { jj_scanpos = xsp; if (jj_3R_52()) { jj_scanpos = xsp; if (jj_3R_53()) return true; } } } } } return false; } private boolean jj_3R_48() { if (jj_scan_token(INTEGER_LITERAL)) return true; return false; } private boolean jj_3R_62() { if (jj_3R_65()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_71()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_69() { if (jj_scan_token(SC_AND)) return true; if (jj_3R_62()) return true; return false; } private boolean jj_3R_46() { if (jj_3R_55()) return true; return false; } private boolean jj_3R_45() { if (jj_scan_token(DOT)) return true; if (jj_scan_token(IDENTIFIER)) return true; return false; } private boolean jj_3R_56() { if (jj_3R_62()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_69()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_66() { if (jj_scan_token(SC_OR)) return true; if (jj_3R_56()) return true; return false; } private boolean jj_3R_44() { if (jj_scan_token(LBRACKET)) return true; if (jj_3R_25()) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_38() { Token xsp; xsp = jj_scanpos; if (jj_3R_44()) { jj_scanpos = xsp; if (jj_3R_45()) { jj_scanpos = xsp; if (jj_3R_46()) return true; } } return false; } private boolean jj_3R_37() { if (jj_3R_43()) return true; return false; } private boolean jj_3R_27() { if (jj_3R_38()) return true; return false; } private boolean jj_3R_36() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_25()) return true; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3R_47() { if (jj_3R_56()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_66()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_104() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_35() { if (jj_scan_token(SUPER)) return true; if (jj_scan_token(DOT)) return true; if (jj_scan_token(IDENTIFIER)) return true; return false; } private boolean jj_3R_34() { if (jj_scan_token(THIS)) return true; return false; } private boolean jj_3R_63() { if (jj_scan_token(HOOK)) return true; if (jj_3R_25()) return true; if (jj_scan_token(COLON)) return true; if (jj_3R_41()) return true; return false; } private boolean jj_3R_33() { if (jj_3R_24()) return true; return false; } private boolean jj_3R_105() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_32() { if (jj_3R_42()) return true; return false; } private boolean jj_3R_26() { Token xsp; xsp = jj_scanpos; if (jj_3R_32()) { jj_scanpos = xsp; if (jj_3R_33()) { jj_scanpos = xsp; if (jj_3R_34()) { jj_scanpos = xsp; if (jj_3R_35()) { jj_scanpos = xsp; if (jj_3R_36()) { jj_scanpos = xsp; if (jj_3R_37()) return true; } } } } } return false; } private boolean jj_3R_20() { if (jj_3R_26()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_27()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_41() { if (jj_3R_47()) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_63()) jj_scanpos = xsp; return false; } private boolean jj_3R_106() { if (jj_scan_token(DECR)) return true; return false; } private boolean jj_3R_102() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_24()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_105()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; if (jj_3R_95()) return true; return false; } private boolean jj_3R_21() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(79)) { jj_scanpos = xsp; if (jj_scan_token(107)) { jj_scanpos = xsp; if (jj_scan_token(108)) { jj_scanpos = xsp; if (jj_scan_token(112)) { jj_scanpos = xsp; if (jj_scan_token(105)) { jj_scanpos = xsp; if (jj_scan_token(106)) { jj_scanpos = xsp; if (jj_scan_token(113)) { jj_scanpos = xsp; if (jj_scan_token(114)) { jj_scanpos = xsp; if (jj_scan_token(115)) { jj_scanpos = xsp; if (jj_scan_token(109)) { jj_scanpos = xsp; if (jj_scan_token(111)) { jj_scanpos = xsp; if (jj_scan_token(110)) return true; } } } } } } } } } } } return false; } private boolean jj_3R_103() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(92)) { jj_scanpos = xsp; if (jj_3R_106()) return true; } return false; } private boolean jj_3R_100() { Token xsp; xsp = jj_scanpos; if (jj_3_6()) { jj_scanpos = xsp; if (jj_3R_102()) return true; } return false; } private boolean jj_3_6() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_23()) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_104()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; if (jj_3R_83()) return true; return false; } private boolean jj_3_2() { if (jj_3R_20()) return true; if (jj_3R_21()) return true; return false; } private boolean jj_3R_40() { if (jj_3R_20()) return true; if (jj_3R_21()) return true; if (jj_3R_25()) return true; return false; } private boolean jj_3_5() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_24()) return true; if (jj_scan_token(LBRACKET)) return true; return false; } private boolean jj_3R_101() { if (jj_3R_20()) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_103()) jj_scanpos = xsp; return false; } private boolean jj_3R_31() { if (jj_3R_41()) return true; return false; } private boolean jj_3R_30() { if (jj_3R_40()) return true; return false; } private boolean jj_3R_25() { Token xsp; xsp = jj_scanpos; if (jj_3R_30()) { jj_scanpos = xsp; if (jj_3R_31()) return true; } return false; } private boolean jj_3R_29() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_24()) return true; if (jj_scan_token(RPAREN)) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(83)) { jj_scanpos = xsp; if (jj_scan_token(82)) { jj_scanpos = xsp; if (jj_scan_token(70)) { jj_scanpos = xsp; if (jj_scan_token(67)) { jj_scanpos = xsp; if (jj_scan_token(50)) { jj_scanpos = xsp; if (jj_scan_token(47)) { jj_scanpos = xsp; if (jj_scan_token(38)) { jj_scanpos = xsp; if (jj_3R_39()) return true; } } } } } } } return false; } private boolean jj_3R_28() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_24()) return true; if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3_4() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_23()) return true; return false; } private boolean jj_3R_22() { Token xsp; xsp = jj_scanpos; if (jj_3_4()) { jj_scanpos = xsp; if (jj_3R_28()) { jj_scanpos = xsp; if (jj_3R_29()) return true; } } return false; } private boolean jj_3_3() { if (jj_3R_22()) return true; return false; } private boolean jj_3R_99() { if (jj_3R_101()) return true; return false; } private boolean jj_3R_87() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_98() { if (jj_3R_100()) return true; return false; } private boolean jj_3_1() { if (jj_scan_token(DOT)) return true; if (jj_scan_token(IDENTIFIER)) return true; return false; } private boolean jj_3_9() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_97() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(83)) { jj_scanpos = xsp; if (jj_scan_token(82)) return true; } if (jj_3R_83()) return true; return false; } private boolean jj_3R_95() { Token xsp; xsp = jj_scanpos; if (jj_3R_97()) { jj_scanpos = xsp; if (jj_3R_98()) { jj_scanpos = xsp; if (jj_3R_99()) return true; } } return false; } private boolean jj_3R_24() { if (jj_scan_token(IDENTIFIER)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3_1()) { jj_scanpos = xsp; break; } } return false; }
Generated Token Manager.
/** Generated Token Manager. */
public ExpressionParserTokenManager token_source; JavaCharStream jj_input_stream;
Current token.
/** Current token. */
public Token token;
Next token.
/** Next token. */
public Token jj_nt; private int jj_ntk; private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; final private int[] jj_la1 = new int[44]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; static private int[] jj_la1_3; static { jj_la1_init_0(); jj_la1_init_1(); jj_la1_init_2(); jj_la1_init_3(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x8209400,0x0,0x8209400,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,}; } private static void jj_la1_init_1() { jj_la1_1 = new int[] {0x2014,0x0,0x2014,0x0,0x884480c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x884480c0,0x0,0x0,0x884480c0,0x884480c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x884480c0,0x0,0x88400080,0x400000,0x884480c0,0x0,0x0,0x40,}; } private static void jj_la1_init_2() { jj_la1_2 = new int[] {0x8,0x400,0x0,0x2000,0xf00c004e,0x8000,0x100000,0x4000000,0x8000000,0x0,0x0,0x0,0x2400000,0x2400000,0x0,0x1830000,0x1830000,0x0,0x0,0xc0000000,0xc0000000,0x0,0x0,0xc0000000,0xf00c004e,0xc0000,0xc0000,0x4e,0xc004e,0x40,0x30000000,0x30000000,0x400,0x400,0x40,0x4440,0x4e,0x4440,0x6,0x0,0xf00c004e,0x2000,0x440,0x0,}; } private static void jj_la1_init_3() { jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0xffe00,0x0,0x0,0x0,0x8,0x10,0x4,0x0,0x0,0x0,0x0,0x0,0x1c0,0x1c0,0x0,0x0,0x23,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[9]; private boolean jj_rescan = false; private int jj_gc = 0;
Constructor with InputStream.
/** Constructor with InputStream. */
public ExpressionParser(java.io.InputStream stream) { this(stream, null); }
Constructor with InputStream and supplied encoding
/** Constructor with InputStream and supplied encoding */
public ExpressionParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new ExpressionParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.InputStream stream) { ReInit(stream, null); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Constructor.
/** Constructor. */
public ExpressionParser(java.io.Reader stream) { jj_input_stream = new JavaCharStream(stream, 1, 1); token_source = new ExpressionParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Constructor with generated Token Manager.
/** Constructor with generated Token Manager. */
public ExpressionParser(ExpressionParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(ExpressionParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; if (++jj_gc > 100) { jj_gc = 0; for (int i = 0; i < jj_2_rtns.length; i++) { JJCalls c = jj_2_rtns[i]; while (c != null) { if (c.gen < jj_gen) c.first = null; c = c.next; } } } return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } @SuppressWarnings("serial") // JDK implementation class static private final class LookaheadSuccess extends java.lang.Error { } final private LookaheadSuccess jj_ls = new LookaheadSuccess(); private boolean jj_scan_token(int kind) { if (jj_scanpos == jj_lastpos) { jj_la--; if (jj_scanpos.next == null) { jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); } else { jj_lastpos = jj_scanpos = jj_scanpos.next; } } else { jj_scanpos = jj_scanpos.next; } if (jj_rescan) { int i = 0; Token tok = token; while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } if (tok != null) jj_add_error_token(kind, i); } if (jj_scanpos.kind != kind) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; return false; }
Get the next Token.
/** Get the next Token. */
final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; }
Get the specific Token.
/** Get the specific Token. */
final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); private int[] jj_expentry; private int jj_kind = -1; private int[] jj_lasttokens = new int[100]; private int jj_endpos; private void jj_add_error_token(int kind, int pos) { if (pos >= 100) return; if (pos == jj_endpos + 1) { jj_lasttokens[jj_endpos++] = kind; } else if (jj_endpos != 0) { jj_expentry = new int[jj_endpos]; for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { if (oldentry[i] != jj_expentry[i]) { continue jj_entries_loop; } } jj_expentries.add(jj_expentry); break jj_entries_loop; } } if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; } }
Generate ParseException.
/** Generate ParseException. */
public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[116]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 44; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { la1tokens[j] = true; } if ((jj_la1_1[i] & (1<<j)) != 0) { la1tokens[32+j] = true; } if ((jj_la1_2[i] & (1<<j)) != 0) { la1tokens[64+j] = true; } if ((jj_la1_3[i] & (1<<j)) != 0) { la1tokens[96+j] = true; } } } } for (int i = 0; i < 116; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; jj_expentries.add(jj_expentry); } } jj_endpos = 0; jj_rescan_token(); jj_add_error_token(0, 0); int[][] exptokseq = new int[jj_expentries.size()][]; for (int i = 0; i < jj_expentries.size(); i++) { exptokseq[i] = jj_expentries.get(i); } return new ParseException(token, exptokseq, tokenImage); }
Enable tracing.
/** Enable tracing. */
final public void enable_tracing() { }
Disable tracing.
/** Disable tracing. */
final public void disable_tracing() { } private void jj_rescan_token() { jj_rescan = true; for (int i = 0; i < 9; i++) { try { JJCalls p = jj_2_rtns[i]; do { if (p.gen > jj_gen) { jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; switch (i) { case 0: jj_3_1(); break; case 1: jj_3_2(); break; case 2: jj_3_3(); break; case 3: jj_3_4(); break; case 4: jj_3_5(); break; case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; case 8: jj_3_9(); break; } } p = p.next; } while (p != null); } catch(LookaheadSuccess ls) { } } jj_rescan = false; } private void jj_save(int index, int xla) { JJCalls p = jj_2_rtns[index]; while (p.gen > jj_gen) { if (p.next == null) { p = p.next = new JJCalls(); break; } p = p.next; } p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; } static final class JJCalls { int gen; Token first; int arg; JJCalls next; } }