/* * 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 stack = new Stack(); VirtualMachine vm = null; GetFrame frameGetter = null; private static GetFrame lastFrameGetter; private static LValue lastLValue; LValue peek() { return (LValue)stack.peek(); } LValue pop() { return (LValue)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; } 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 * *****************************************/ /* * 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 { StringBuffer sb = new StringBuffer(); 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 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 Arguments() throws ParseException { List 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 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 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. */ public ExpressionParserTokenManager token_source; JavaCharStream jj_input_stream; /** Current token. */ public Token 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. */ public ExpressionParser(java.io.InputStream stream) { this(stream, null); } /** 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. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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 jj_expentries = new java.util.ArrayList(); 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. */ 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< 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; } }