diff --git a/README.md b/README.md index 170fc65..2a4f6cd 100644 --- a/README.md +++ b/README.md @@ -104,8 +104,10 @@ val name = "BeanShell" var lang = "BeanShell" var str1 = "Hello, $lang" print(str1) // "Hello, BeanShell" +// 表达式 var str2 = "1 + 2 = ${1 + 2}" -print(str2) // "1 + 2 = 3" +print(str2) // "1 + 2 = 3" +// 转义 var str3 = "price=\$9" print(str3) // "price=$9" @@ -115,6 +117,34 @@ void hi(String name, int age = 18) { } hi("user") // name: user, age: 18 hi("user", 1) // name: user, age: 1 + +// 类型判断 +print(123 is Number) // true +// 等价 +print(123 instanceof Number) // true + +// 类型转换 +print("1" as int) // 1 +// 等价 +print((int) "1") // 1 + +// 条件分支 +var num = 2 +var out1 = when (num) { + 1 -> "one" + 2, 3 -> "small" + else -> "other" +} +print(out1) // "small" +// 等价 +var out2 +switch (num) { + case 1: out2 = "one"; break; + case 2: + case 3: out2 = "small"; break; + default: out2 = "other"; +} +print(out2) // "small" ``` ## 致谢 diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHBinaryExpression.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHBinaryExpression.java index 0b9ffcb..5298905 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHBinaryExpression.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHBinaryExpression.java @@ -45,7 +45,7 @@ public Object eval( CallStack callstack, Interpreter interpreter) /* Doing instanceof? Next node is a type. */ - if (kind == INSTANCEOF) + if ( (kind == INSTANCEOF || kind == IS) ) { // null object ref is not instance of any type if ( lhs == Primitive.NULL ) @@ -72,6 +72,18 @@ public Object eval( CallStack callstack, Interpreter interpreter) ? Primitive.TRUE : Primitive.FALSE; } + if (kind == AS) + { + Class rhs = ((BSHType)jjtGetChild(1)).getType( + callstack, interpreter ); + + try { + return Types.castObject( lhs, rhs, Types.CAST ); + } catch ( UtilEvalError e ) { + throw e.toEvalError( this, callstack ); + } + } + /* Look ahead and short circuit evaluation of the rhs if: we're a boolean AND and the lhs is false. diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenEntry.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenEntry.java new file mode 100644 index 0000000..c79ee68 --- /dev/null +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenEntry.java @@ -0,0 +1,51 @@ +/***************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + * * + * * + * This file is part of the BeanShell Java Scripting distribution. * + * Documentation and updates may be found at http://www.beanshell.org/ * + * Patrick Niemeyer (pat@pat.net) * + * Author of Learning Java, O'Reilly & Associates * + * * + *****************************************************************************/ +package bsh; + +class BSHWhenEntry extends SimpleNode +{ + boolean isElse; + int numConditions; + + BSHWhenEntry(int id) { super(id); } + + public Object eval( + CallStack callstack, Interpreter interpreter ) throws EvalError + { + return evalResult(callstack, interpreter); + } + + Object evalResult( + CallStack callstack, Interpreter interpreter ) throws EvalError + { + return jjtGetChild(numConditions).eval(callstack, interpreter); + } + + @Override + public String toString() { + return super.toString() + ": " + (isElse ? "else" : "case"); + } +} diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenExpression.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenExpression.java new file mode 100644 index 0000000..83163db --- /dev/null +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/BSHWhenExpression.java @@ -0,0 +1,102 @@ +/***************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + * * + * * + * This file is part of the BeanShell Java Scripting distribution. * + * Documentation and updates may be found at http://www.beanshell.org/ * + * Patrick Niemeyer (pat@pat.net) * + * Author of Learning Java, O'Reilly & Associates * + * * + *****************************************************************************/ +package bsh; + +class BSHWhenExpression extends SimpleNode implements ParserConstants +{ + + BSHWhenExpression(int id) { super(id); } + + public Object eval( CallStack callstack, Interpreter interpreter ) + throws EvalError + { + int numChildren = jjtGetNumChildren(); + if ( numChildren < 2 ) + throw new EvalException("Empty when expression.", this, callstack); + + for ( int i = 1; i < numChildren; i++ ) { + BSHWhenEntry entry = (BSHWhenEntry) jjtGetChild(i); + if ( !entry.isElse ) + continue; + if ( i != numChildren - 1 ) + throw new EvalException( + "Else branch must be the last one in when expression.", + this, callstack ); + } + + Node whenExp = jjtGetChild(0); + Object whenVal = whenExp.eval(callstack, interpreter); + + for ( int i = 1; i < numChildren; i++ ) { + BSHWhenEntry entry = (BSHWhenEntry) jjtGetChild(i); + if ( entry.isElse ) + return entry.evalResult(callstack, interpreter); + + for ( int c = 0; c < entry.numConditions; c++ ) { + Object targetVal = entry.jjtGetChild(c).eval(callstack, interpreter); + if ( primitiveEquals(whenVal, targetVal, callstack, whenExp) ) + return entry.evalResult(callstack, interpreter); + } + } + + throw new EvalException("No matching when branch.", this, callstack); + } + + private boolean primitiveEquals( + Object whenVal, Object targetVal, + CallStack callstack, Node whenExp ) + throws EvalError + { + if ( whenVal == Primitive.VOID || targetVal == Primitive.VOID ) + return false; + + if ( whenVal == Primitive.NULL ) + whenVal = null; + if ( targetVal == Primitive.NULL ) + targetVal = null; + + if ( whenVal == null || targetVal == null ) + return whenVal == targetVal; + + if ( whenVal instanceof Primitive || targetVal instanceof Primitive ) + try { + Object result = Operators.binaryOperation( + whenVal, targetVal, ParserConstants.EQ ); + result = Primitive.unwrap( result ); + return result.equals( Boolean.TRUE ); + } catch ( UtilEvalError e ) { + throw e.toEvalError( + "When value: " + whenExp.getText() + ": ", + this, callstack ); + } + return whenVal.equals( targetVal ); + } + + @Override + public String toString() { + return super.toString() + ": when"; + } +} diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/BshLambda.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/BshLambda.java index 9b7de4f..4bf02be 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/BshLambda.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/BshLambda.java @@ -5,6 +5,8 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Parameter; +import java.lang.reflect.Type; +import java.util.Arrays; import java.util.Base64; import java.util.HashMap; import java.util.Map; @@ -16,7 +18,7 @@ import bsh.org.objectweb.asm.FieldVisitor; import bsh.org.objectweb.asm.MethodVisitor; import bsh.org.objectweb.asm.Opcodes; -import bsh.org.objectweb.asm.Type; +import bsh.util.Util; /** * It's the instance of lambdas written in code. @@ -52,10 +54,25 @@ private static Class generateDummyType() { /** Method with the real implementation to eval the code written */ protected abstract Object invokeImpl(Object[] args) throws UtilEvalError, EvalError, TargetError; - /** Method to invoke the lambda and deal with the expected exceptions */ - public final Object invoke(Object[] args, Class[] exceptionTypes) throws Throwable { + /** + * Method to invoke this lambda where the return must be an Object of a specific Class + * @param args The args to give to the lambda + * @param exceptionTypes An array of accepted exceptions that can be throw when invoking this lambda + * @param returnType This specify of what type must be the return + * @return An value that is assignable to returnType. Note: whether returnType is a primitive ( e.g., int ) the return will be a wrapper instance ( e.g., Integer ) + */ + public final T invoke(Object[] args, Class[] exceptionTypes, Class returnType) throws Throwable { try { - return Primitive.unwrap(this.invokeImpl(args)); + final Object result = returnType.isPrimitive() ? Primitive.unwrap(this.invokeImpl(args)) : this.invokeImpl(args); + if (returnType == void.class) return null; + + try { + return (T) Primitive.unwrap(Types.castObject(result, returnType, Types.ASSIGNMENT)); + } catch (Throwable t) { + final String msg = String.format("Can't assign %s to %s", Types.prettyName(Types.getType(result)), Types.prettyName(returnType)); + throw new RuntimeEvalError(msg, expressionNode, null); + } + } catch (TargetError e) { for (Class exceptionType: exceptionTypes) if (exceptionType.isInstance(e.getTarget())) @@ -68,73 +85,6 @@ public final Object invoke(Object[] args, Class[] exceptionTypes) throws Thro } } - /** Method to invoke the lambda where the return must be a char */ - public final char invokeChar(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Character) return ((Character) result).charValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to char", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a boolean */ - public final boolean invokeBoolean(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Boolean) return ((Boolean) result).booleanValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to boolean", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a byte */ - public final byte invokeByte(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).byteValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to byte", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a boolean */ - public final short invokeShort(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).shortValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to short", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be an int */ - public final int invokeInt(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).intValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to int", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a long */ - public final long invokeLong(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).longValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to long", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a float */ - public final float invokeFloat(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).floatValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to float", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be a double */ - public final double invokeDouble(Object[] args, Class[] exceptionTypes) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result instanceof Number) return ((Number) result).doubleValue(); - throw new RuntimeEvalError("Can't convert " + StringUtil.typeString(result) + " to double", expressionNode, null); - } - - /** Method to invoke the lambda where the return must be an Object of a specific Class */ - public final T invokeObject(Object[] args, Class[] exceptionTypes, Class returnType) throws Throwable { - Object result = this.invoke(args, exceptionTypes); - if (result == null) return null; - try { - return (T) Types.castObject(result, returnType, Types.ASSIGNMENT); - } catch (UtilEvalError e) { - throw new RuntimeEvalError(e.toEvalError(expressionNode, null)); - } - } - /** Creates a lambda from a lambda expression, used by {@link BSHLambdaExpression} */ protected static BshLambda fromLambdaExpression(Node expressionNode, NameSpace declaringNameSpace, Modifiers[] paramsModifiers, Class[] paramsTypes, String[] paramsNames, Node bodyNode) { return new BshLambdaFromLambdaExpression(expressionNode, declaringNameSpace, paramsModifiers, paramsTypes, paramsNames, bodyNode); @@ -253,7 +203,7 @@ private NameSpace initNameSpace(Object[] args) throws UtilEvalError { } protected boolean isAssignable(Method to, int round) { - Class[] toParamsTypes = to.getParameterTypes(); + Type[] toParamsTypes = to.getGenericParameterTypes(); if (this.paramsTypes.length != toParamsTypes.length) return false; // TODO: validate the return type of 'this.bodyNode' ??? @@ -267,48 +217,87 @@ private static class BshLambdaFromMethodReference extends BshLambda { private final Object thisArg; private final String methodName; + // Util variables + private final boolean staticRef; + private final Class _class; + private final Method[] methods; + public BshLambdaFromMethodReference(Node expressionNode, Object thisArg, String methodName) { super(expressionNode); this.thisArg = thisArg; this.methodName = methodName; + this.staticRef = this.thisArg instanceof ClassIdentifier; + this._class = this.staticRef ? ((ClassIdentifier) this.thisArg).clas : this.thisArg.getClass(); + this.methods = this._class.isInterface() + ? Util.concatArrays(this._class.getMethods(), Object.class.getMethods()) + : this._class.getMethods(); } protected final Object invokeImpl(Object[] args) throws UtilEvalError, EvalError, TargetError { try { - NameSpace nameSpace = new NameSpace("MethodReferenceLambda"); - CallStack callStack = new CallStack(nameSpace); - Interpreter interpreter = new Interpreter(nameSpace); - - if (thisArg instanceof ClassIdentifier) { - Class _class = ((ClassIdentifier) thisArg).clas; - return methodName.equals("new") - ? Reflect.constructObject(_class, args) - : Reflect.invokeStaticMethod(nameSpace.getClassManager(), _class, methodName, args, expressionNode); + final NameSpace nameSpace = new NameSpace("MethodReferenceLambda"); + final CallStack callStack = new CallStack(nameSpace); + final Interpreter interpreter = new Interpreter(nameSpace); + + if (!this.staticRef) return Reflect.invokeObjectMethod(this.thisArg, this.methodName, args, interpreter, callStack, this.expressionNode); + if (this.methodName.equals("new")) return Reflect.constructObject(this._class, args); + if (args.length == 0 || !this._class.isInstance(args[0])) return Reflect.invokeStaticMethod(nameSpace.getClassManager(), this._class, this.methodName, args, this.expressionNode); + + final Class[] argsTypes = Types.getTypes(args); + final Class[] nonStaticArgsTypes = Arrays.copyOfRange(argsTypes, 1, argsTypes.length); + + for (Method method: this.methods) { + if (!this.methodName.equals(method.getName())) continue; + + try { + if (Reflect.isStatic(method)) { // Static reference to static method + if (Types.isSignatureAssignable(argsTypes, method.getGenericParameterTypes(), Types.JAVA_BASE_ASSIGNABLE)) + return method.invoke(null, args); + } else { // Static reference to non static method + if (Types.isSignatureAssignable(nonStaticArgsTypes, method.getGenericParameterTypes(), Types.JAVA_BASE_ASSIGNABLE)) + return method.invoke(args[0], Arrays.copyOfRange(args, 1, args.length)); + } + } catch (IllegalAccessException e) {} } - return Reflect.invokeObjectMethod(this.thisArg, methodName, args, interpreter, callStack, expressionNode); + + throw new UtilEvalError("Can't invoke lambda made from method reference!"); } catch (InvocationTargetException e) { throw new TargetError(e.getTargetException(), expressionNode, null); } } protected boolean isAssignable(Method to, int round) { - boolean staticMethod = this.thisArg instanceof ClassIdentifier; - Class _class = this.thisArg instanceof ClassIdentifier ? ((ClassIdentifier) this.thisArg).clas : this.thisArg.getClass(); + if (!this.staticRef) { // Non-Static references + for (Method method: _class.getMethods()) { + if (!this.methodName.equals(method.getName())) continue; + if (Reflect.isStatic(method)) continue; + if (!Types.isSignatureAssignable(method.getParameterTypes(), to.getGenericParameterTypes(), round)) continue; + if (!Types.isAssignable(method.getReturnType(), to.getGenericReturnType(), round)) continue; + return true; + } + return false; + } - if (this.thisArg instanceof ClassIdentifier && this.methodName.equals("new")) { + if (this.methodName.equals("new")) { // Constructor reference for (Constructor constructor: _class.getConstructors()) { - if (!Types.isSignatureAssignable(constructor.getParameterTypes(), to.getParameterTypes(), round)) continue; - if (!Types.isAssignable(_class, to.getReturnType(), round)) continue; + if (!Types.isSignatureAssignable(constructor.getParameterTypes(), to.getGenericParameterTypes(), round)) continue; + if (!Types.isAssignable(_class, to.getGenericReturnType(), round)) continue; return true; } return false; } - for (Method method: _class.getMethods()) { + // Static reference + for (Method method: this.methods) { if (!this.methodName.equals(method.getName())) continue; - if (Reflect.isStatic(method) != staticMethod) continue; - if (!Types.isSignatureAssignable(method.getParameterTypes(), to.getParameterTypes(), round)) continue; - if (!Types.isAssignable(method.getReturnType(), to.getReturnType(), round)) continue; + if (Reflect.isStatic(method)) { // Static reference to static method + if (!Types.isSignatureAssignable(method.getParameterTypes(), to.getGenericParameterTypes(), round)) continue; + if (!Types.isAssignable(method.getReturnType(), to.getGenericReturnType(), round)) continue; + } else { // Static reference to non static method + final Class[] paramTypes = Util.concatArrays(new Class[] { this._class }, method.getParameterTypes()); + if (!Types.isSignatureAssignable(paramTypes, to.getGenericParameterTypes(), round)) continue; + if (!Types.isAssignable(method.getReturnType(), to.getGenericReturnType(), round)) continue; + } return true; } return false; @@ -328,28 +317,23 @@ public Class classFromBytes(String className, byte[] classBytes) { */ private static class WrapperGenerator { - private static String[] getInternalNames(Class[] types) { - final String[] internalNames = new String[types.length]; - for (int i = 0; i < types.length; i++) internalNames[i] = Type.getInternalName(types[i]); - return internalNames; - } - + // TODO: get the FunctionalInterface args names too! /** * Return a new generated class that wraps a bshLambda. Example of a class that is generated: * *

* - *

+         * 
{@code
          * import java.util.function.Function;
          *
-         * public class MyClass implements Function {
+         * public class MyClass implements Function {
          *  private BshLambda bshLambda;
          *
          *  public MyClass(BshLambda bshLambda) {
          *      this.bshLambda = bshLambda;
          *  }
          *
-         *  public Object apply(Object arg1) {
+         *  public R apply(T arg1) {
          *      return this.bshLambda.invokeObject(new Object[] { arg1 }, new Class[0], Object.class);
          *  }
          * }
@@ -386,12 +370,14 @@ protected static  Class generateClass(Class functionalInterface) {
         private static byte[] generateClassBytes(String className, Class functionalInterface) {
             ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
 
-            final String[] interfacesPrimitiveNames = { Type.getInternalName(functionalInterface) };
+            final String[] interfacesPrimitiveNames = { Types.getInternalName(functionalInterface) };
             final String superPrimitiveName = "java/lang/Object";
-            cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, className, null, superPrimitiveName, interfacesPrimitiveNames);
+            final String signature =  generateClassSignature(functionalInterface);
+
+            cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, className, signature, superPrimitiveName, interfacesPrimitiveNames);
 
             // Declare the 'bshLambda' field
-            FieldVisitor fieldVisitor = cw.visitField(Opcodes.ACC_PRIVATE, "bshLambda", Type.getDescriptor(BshLambda.class), null, null);
+            FieldVisitor fieldVisitor = cw.visitField(Opcodes.ACC_PRIVATE, "bshLambda", Types.getDescriptor(BshLambda.class), null, null);
             fieldVisitor.visitEnd();
 
             WrapperGenerator.writeConstructor(cw, className);
@@ -403,6 +389,13 @@ private static byte[] generateClassBytes(String className, Class functionalIn
             return cw.toByteArray();
         }
 
+        private static String generateClassSignature(Class functionalInterface) {
+            Type _interface = functionalInterface.getTypeParameters().length != 0
+                                                    ? Types.createParameterizedType(functionalInterface, functionalInterface.getTypeParameters())
+                                                    : functionalInterface;
+            return Types.getASMClassSignature(functionalInterface.getTypeParameters(), Object.class, _interface);
+        }
+
         /**
          * Just write the constructor in the ClassWriter. Example of a class with the constructor that is written with this method:
          *
@@ -420,7 +413,7 @@ private static byte[] generateClassBytes(String className, Class functionalIn
          */
         private static void writeConstructor(ClassWriter cw, String className) {
             // Add a default constructor
-            final String constructorDescriptor = Type.getMethodDescriptor(Type.getType(void.class), Type.getType(BshLambda.class));
+            final String constructorDescriptor = Types.getMethodDescriptor(void.class, BshLambda.class);
             MethodVisitor constructor = cw.visitMethod(Opcodes.ACC_PUBLIC, "", constructorDescriptor, null, null);
             constructor.visitCode();
 
@@ -431,7 +424,7 @@ private static void writeConstructor(ClassWriter cw, String className) {
             // Write the implementation: this.bshLambda = bshLambda;
             constructor.visitVarInsn(Opcodes.ALOAD, 0); // Load this
             constructor.visitVarInsn(Opcodes.ALOAD, 1); // Load the first arg
-            constructor.visitFieldInsn(Opcodes.PUTFIELD, className, "bshLambda", Type.getDescriptor(BshLambda.class)); // Set the 'bshLambda' field
+            constructor.visitFieldInsn(Opcodes.PUTFIELD, className, "bshLambda", Types.getDescriptor(BshLambda.class)); // Set the 'bshLambda' field
 
             // Default end
             constructor.visitInsn(Opcodes.RETURN); // Return void
@@ -495,15 +488,15 @@ private static void writeConstructor(ClassWriter cw, String className) {
          * 
*/ private static void writeMethod(ClassWriter cw, String className, Method method) { - final String BSH_LAMBDA_NAME = Type.getInternalName(BshLambda.class); + final String BSH_LAMBDA_NAME = Types.getInternalName(BshLambda.class); final Parameter[] params = method.getParameters(); final Class[] exceptionTypes = method.getExceptionTypes(); - MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, method.getName(), Type.getMethodDescriptor(method), null, getInternalNames(exceptionTypes)); + MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, method.getName(), Types.getMethodDescriptor(method), Types.getASMMethodSignature(method), Types.getInternalNames(exceptionTypes)); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 0); // Load 'this' onto the stack - mv.visitFieldInsn(Opcodes.GETFIELD, className, "bshLambda", Type.getDescriptor(BshLambda.class)); // Get the field value + mv.visitFieldInsn(Opcodes.GETFIELD, className, "bshLambda", Types.getDescriptor(BshLambda.class)); // Get the field value // Define and create the Object[] array to store the 'args' mv.visitLdcInsn(params.length); // Size of the array @@ -562,42 +555,49 @@ private static void writeMethod(ClassWriter cw, String className, Method method) Class exceptionType = exceptionTypes[i]; mv.visitInsn(Opcodes.DUP); mv.visitLdcInsn(i); - mv.visitLdcInsn(Type.getType(exceptionType)); + mv.visitLdcInsn(Types.getASMType(exceptionType)); mv.visitInsn(Opcodes.AASTORE); } final Class returnType = method.getReturnType(); + final Class invokeReturnType = returnType.isPrimitive() ? Primitive.boxType(returnType) : returnType; + + if (returnType.isPrimitive()) + mv.visitFieldInsn(Opcodes.GETSTATIC, Types.getInternalName(invokeReturnType), "TYPE", "Ljava/lang/Class;"); // Primitive type + else + mv.visitLdcInsn(Types.getASMType(returnType)); // Other types, just load it :P + + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invoke", "([Ljava/lang/Object;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;", false); + mv.visitTypeInsn(Opcodes.CHECKCAST, Types.getInternalName(invokeReturnType)); + if (returnType == void.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invoke", "([Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;", false); mv.visitInsn(Opcodes.POP); mv.visitInsn(Opcodes.RETURN); } else if (returnType == boolean.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeBoolean", "([Ljava/lang/Object;[Ljava/lang/Class;)Z", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false); mv.visitInsn(Opcodes.IRETURN); } else if (returnType == char.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeChar", "([Ljava/lang/Object;[Ljava/lang/Class;)C", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C", false); mv.visitInsn(Opcodes.IRETURN); } else if (returnType == byte.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeByte", "([Ljava/lang/Object;[Ljava/lang/Class;)B", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Byte", "byteValue", "()B", false); mv.visitInsn(Opcodes.IRETURN); } else if (returnType == short.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeShort", "([Ljava/lang/Object;[Ljava/lang/Class;)S", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Short", "shortValue", "()S", false); mv.visitInsn(Opcodes.IRETURN); } else if (returnType == int.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeInt", "([Ljava/lang/Object;[Ljava/lang/Class;)I", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I", false); mv.visitInsn(Opcodes.IRETURN); } else if (returnType == long.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeLong", "([Ljava/lang/Object;[Ljava/lang/Class;)J", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J", false); mv.visitInsn(Opcodes.LRETURN); } else if (returnType == float.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeFloat", "([Ljava/lang/Object;[Ljava/lang/Class;)F", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Float", "floatValue", "()F", false); mv.visitInsn(Opcodes.FRETURN); } else if (returnType == double.class) { - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeDouble", "([Ljava/lang/Object;[Ljava/lang/Class;)D", false); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D", false); mv.visitInsn(Opcodes.DRETURN); } else { - mv.visitLdcInsn(Type.getType(returnType)); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, BSH_LAMBDA_NAME, "invokeObject", "([Ljava/lang/Object;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;", false); mv.visitInsn(Opcodes.ARETURN); } diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/Interpreter.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/Interpreter.java index 54b4158..df627ed 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/Interpreter.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/Interpreter.java @@ -41,9 +41,10 @@ import java.net.URL; import java.util.ResourceBundle; +import bsh.preprocess.AnnotationIgnorePreprocess; import bsh.preprocess.DefaultArgsDesugar; -import bsh.security.MainSecurityGuard; import bsh.preprocess.KtStringTemplate; +import bsh.security.MainSecurityGuard; /** The BeanShell script interpreter. @@ -845,6 +846,7 @@ private String readSource(Reader in, String sourceFileInfo) throws EvalError { private String preprocessScript(String source) { String rewritten = source; + rewritten = AnnotationIgnorePreprocess.rewrite(rewritten); rewritten = DefaultArgsDesugar.rewrite(rewritten); rewritten = KtStringTemplate.rewrite(rewritten); return rewritten; diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/LHS.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/LHS.java index ae04af7..94a1f0d 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/LHS.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/LHS.java @@ -275,6 +275,12 @@ public Object assign( Object val, boolean strictJava ) nameSpace.setVariableOrProperty( varName, val, strictJava ); return getValueImpl(); } else if ( type == FIELD ) try { + // Validate if can set this field + if (Reflect.isStatic(field)) + Interpreter.mainSecurityGuard.canSetStaticField(field.getDeclaringClass(), field.getName(), val); + else + Interpreter.mainSecurityGuard.canSetField(object, field.getName(), val); + Objects.requireNonNull(field, "assign value, field cannot be null").invoke( object, val); return getValueImpl(); diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/Parser.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/Parser.java index eb1acfc..9bcfba5 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/Parser.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/Parser.java @@ -949,6 +949,7 @@ final public void VariableInitializer() throws ParseException { case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -996,6 +997,7 @@ final public void ArrayInitializer() throws ParseException {/*@bgen(jjtree) Arra case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2052,32 +2054,81 @@ final public void ConditionalExpression() throws ParseException { final public void InstanceOfExpression() throws ParseException {Token t = null; RelationalExpression(); switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { - case INSTANCEOF:{ - t = jj_consume_token(INSTANCEOF); - Type(); + case INSTANCEOF: + case IS: + case AS:{ + switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { + case INSTANCEOF: + case IS:{ + switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { + case INSTANCEOF:{ + t = jj_consume_token(INSTANCEOF); + break; + } + case IS:{ + t = jj_consume_token(IS); + break; + } + default: + jj_la1[51] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + Type(); BSHBinaryExpression jjtn001 = new BSHBinaryExpression(JJTBINARYEXPRESSION); - boolean jjtc001 = true; - jjtree.openNodeScope(jjtn001); - jjtreeOpenNodeScope(jjtn001); - try { + boolean jjtc001 = true; + jjtree.openNodeScope(jjtn001); + jjtreeOpenNodeScope(jjtn001); + try { jjtree.closeNodeScope(jjtn001, 2); - jjtc001 = false; - if (jjtree.nodeCreated()) { - jjtreeCloseNodeScope(jjtn001); - } + jjtc001 = false; + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn001); + } jjtn001.kind = t.kind; - } finally { + } finally { if (jjtc001) { - jjtree.closeNodeScope(jjtn001, 2); - if (jjtree.nodeCreated()) { - jjtreeCloseNodeScope(jjtn001); - } - } + jjtree.closeNodeScope(jjtn001, 2); + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn001); + } + } + } + break; + } + case AS:{ + t = jj_consume_token(AS); + Type(); +BSHBinaryExpression jjtn002 = new BSHBinaryExpression(JJTBINARYEXPRESSION); + boolean jjtc002 = true; + jjtree.openNodeScope(jjtn002); + jjtreeOpenNodeScope(jjtn002); + try { +jjtree.closeNodeScope(jjtn002, 2); + jjtc002 = false; + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn002); + } +jjtn002.kind = t.kind; + } finally { +if (jjtc002) { + jjtree.closeNodeScope(jjtn002, 2); + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn002); + } + } + } + break; + } + default: + jj_la1[52] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); } break; } default: - jj_la1[51] = jj_gen; + jj_la1[53] = jj_gen; ; } } @@ -2098,7 +2149,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[52] = jj_gen; + jj_la1[54] = jj_gen; break label_18; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2135,7 +2186,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[53] = jj_gen; + jj_la1[55] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2176,7 +2227,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[54] = jj_gen; + jj_la1[56] = jj_gen; break label_19; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2205,7 +2256,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[55] = jj_gen; + jj_la1[57] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2242,7 +2293,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[56] = jj_gen; + jj_la1[58] = jj_gen; break label_20; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2255,7 +2306,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[57] = jj_gen; + jj_la1[59] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2294,7 +2345,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[58] = jj_gen; + jj_la1[60] = jj_gen; break label_21; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2315,7 +2366,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[59] = jj_gen; + jj_la1[61] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2352,7 +2403,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[60] = jj_gen; + jj_la1[62] = jj_gen; break label_22; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2365,7 +2416,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[61] = jj_gen; + jj_la1[63] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2416,7 +2467,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[62] = jj_gen; + jj_la1[64] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2454,7 +2505,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[63] = jj_gen; + jj_la1[65] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2481,7 +2532,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[66] = jj_gen; + jj_la1[68] = jj_gen; if (jj_2_10(2147483647)) { LambdaExpression(); } else if (jj_2_11(2147483647)) { @@ -2501,6 +2552,7 @@ final public void ConditionalExpression() throws ParseException { case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2524,7 +2576,7 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[64] = jj_gen; + jj_la1[66] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2550,13 +2602,13 @@ final public void ConditionalExpression() throws ParseException { break; } default: - jj_la1[65] = jj_gen; + jj_la1[67] = jj_gen; ; } break; } default: - jj_la1[67] = jj_gen; + jj_la1[69] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2685,7 +2737,7 @@ final public void LambdaExpression() throws ParseException {/*@bgen(jjtree) Lamb break; } default: - jj_la1[68] = jj_gen; + jj_la1[70] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2709,6 +2761,7 @@ final public void LambdaExpression() throws ParseException {/*@bgen(jjtree) Lamb case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2727,7 +2780,7 @@ final public void LambdaExpression() throws ParseException {/*@bgen(jjtree) Lamb break; } default: - jj_la1[69] = jj_gen; + jj_la1[71] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2761,6 +2814,181 @@ final public void LambdaExpression() throws ParseException {/*@bgen(jjtree) Lamb } } + final public void WhenExpression() throws ParseException {/*@bgen(jjtree) WhenExpression */ + BSHWhenExpression jjtn000 = new BSHWhenExpression(JJTWHENEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + jjtreeOpenNodeScope(jjtn000); + try { + jj_consume_token(WHEN); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + jj_consume_token(LBRACE); + label_24: + while (true) { + WhenEntry(); + switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case ELSE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case TRUE: + case VOID: + case WHEN: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case LONG_STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case LBRACKET: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS:{ + break; + } + default: + jj_la1[72] = jj_gen; + break label_24; + } + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { +if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof ParseException) { + throw (ParseException)jjte000; + } + if (jjte000 instanceof RuntimeException) { + throw (RuntimeException)jjte000; + } + throw (Error)jjte000; + } finally { +if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn000); + } + } + } +} + + final public void WhenEntry() throws ParseException {/*@bgen(jjtree) WhenEntry */ + BSHWhenEntry jjtn000 = new BSHWhenEntry(JJTWHENENTRY); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + jjtreeOpenNodeScope(jjtn000);int count = 0; + try { + switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { + case ELSE:{ + jj_consume_token(ELSE); +jjtn000.isElse = true; + jj_consume_token(ARROW); + Expression(); + break; + } + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case TRUE: + case VOID: + case WHEN: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case LONG_STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case LBRACKET: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS:{ + Expression(); +count = 1; + label_25: + while (true) { + switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { + case COMMA:{ + break; + } + default: + jj_la1[73] = jj_gen; + break label_25; + } + jj_consume_token(COMMA); + Expression(); +count++; + } + jj_consume_token(ARROW); + Expression(); +jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn000); + } +jjtn000.numConditions = count; + break; + } + default: + jj_la1[74] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { +if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof ParseException) { + throw (ParseException)jjte000; + } + if (jjte000 instanceof RuntimeException) { + throw (RuntimeException)jjte000; + } + throw (Error)jjte000; + } finally { +if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + if (jjtree.nodeCreated()) { + jjtreeCloseNodeScope(jjtn000); + } + } + } +} + final public void PrimaryPrefix() throws ParseException { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case FALSE: @@ -2781,6 +3009,10 @@ final public void PrimaryPrefix() throws ParseException { jj_consume_token(RPAREN); break; } + case WHEN:{ + WhenExpression(); + break; + } case NEW: case LBRACE: case LBRACKET:{ @@ -2788,7 +3020,7 @@ final public void PrimaryPrefix() throws ParseException { break; } default: - jj_la1[70] = jj_gen; + jj_la1[75] = jj_gen; if (jj_2_13(2147483647)) { MethodInvocation(); } else if (jj_2_14(2147483647)) { @@ -2800,7 +3032,7 @@ final public void PrimaryPrefix() throws ParseException { break; } default: - jj_la1[71] = jj_gen; + jj_la1[76] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2841,6 +3073,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2861,7 +3094,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[72] = jj_gen; + jj_la1[77] = jj_gen; ; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2884,6 +3117,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2903,7 +3137,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[73] = jj_gen; + jj_la1[78] = jj_gen; ; } jjtn000.slice = true; jjtn000.step = true; @@ -2926,6 +3160,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2946,7 +3181,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[74] = jj_gen; + jj_la1[79] = jj_gen; ; } switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -2967,6 +3202,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -2986,26 +3222,26 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[75] = jj_gen; + jj_la1[80] = jj_gen; ; } break; } default: - jj_la1[76] = jj_gen; + jj_la1[81] = jj_gen; ; } break; } default: - jj_la1[77] = jj_gen; + jj_la1[82] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[78] = jj_gen; + jj_la1[83] = jj_gen; ; } jj_consume_token(RBRACKET); @@ -3018,7 +3254,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[82] = jj_gen; + jj_la1[87] = jj_gen; if (getToken(1).kind == COLON_COLON && (getToken(2).kind == IDENTIFIER || getToken(2).kind == NEW ) && getToken(3).kind != RBRACKET) { jj_consume_token(COLON_COLON); switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { @@ -3031,7 +3267,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[79] = jj_gen; + jj_la1[84] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3043,7 +3279,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary jjtn000.operation = BSHPrimarySuffix.METHODREF; jjtn000.field = t.image; } else if (jj_2_16(2)) { - jj_consume_token(152); + jj_consume_token(155); t = jj_consume_token(IDENTIFIER); switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case LPAREN:{ @@ -3051,7 +3287,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[80] = jj_gen; + jj_la1[85] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -3071,7 +3307,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[81] = jj_gen; + jj_la1[86] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -3096,7 +3332,7 @@ final public void PrimarySuffix() throws ParseException {/*@bgen(jjtree) Primary break; } default: - jj_la1[83] = jj_gen; + jj_la1[88] = jj_gen; if (jj_2_18(2)) { jj_consume_token(DOT); AllocationExpression(); @@ -3265,7 +3501,7 @@ final public void Literal() throws ParseException {/*@bgen(jjtree) Literal */ break; } default: - jj_la1[84] = jj_gen; + jj_la1[89] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3306,7 +3542,7 @@ final public boolean BooleanLiteral() throws ParseException { break; } default: - jj_la1[85] = jj_gen; + jj_la1[90] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3342,6 +3578,7 @@ final public void Arguments() throws ParseException {/*@bgen(jjtree) Arguments * case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -3361,7 +3598,7 @@ final public void Arguments() throws ParseException {/*@bgen(jjtree) Arguments * break; } default: - jj_la1[86] = jj_gen; + jj_la1[91] = jj_gen; ; } jj_consume_token(RPAREN); @@ -3392,15 +3629,15 @@ final public void Arguments() throws ParseException {/*@bgen(jjtree) Arguments * // leave these on the stack for Arguments() to handle final public void ArgumentList() throws ParseException { Expression(); - label_24: + label_26: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case COMMA:{ break; } default: - jj_la1[87] = jj_gen; - break label_24; + jj_la1[92] = jj_gen; + break label_26; } jj_consume_token(COMMA); Expression(); @@ -3447,7 +3684,7 @@ final public void AllocationExpression() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[88] = jj_gen; + jj_la1[93] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3459,7 +3696,7 @@ final public void AllocationExpression() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[89] = jj_gen; + jj_la1[94] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3471,7 +3708,7 @@ final public void AllocationExpression() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[90] = jj_gen; + jj_la1[95] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3506,7 +3743,7 @@ final public void ArrayDimensions() throws ParseException {/*@bgen(jjtree) Array jjtreeOpenNodeScope(jjtn000); try { if (jj_2_22(2)) { - label_25: + label_27: while (true) { jj_consume_token(LBRACKET); Expression(); @@ -3514,14 +3751,14 @@ final public void ArrayDimensions() throws ParseException {/*@bgen(jjtree) Array jjtn000.addDefinedDimension(); if (jj_2_20(2)) { } else { - break label_25; + break label_27; } } - label_26: + label_28: while (true) { if (jj_2_21(2)) { } else { - break label_26; + break label_28; } jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); @@ -3530,7 +3767,7 @@ final public void ArrayDimensions() throws ParseException {/*@bgen(jjtree) Array } else { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case LBRACKET:{ - label_27: + label_29: while (true) { jj_consume_token(LBRACKET); jj_consume_token(RBRACKET); @@ -3540,8 +3777,8 @@ final public void ArrayDimensions() throws ParseException {/*@bgen(jjtree) Array break; } default: - jj_la1[91] = jj_gen; - break label_27; + jj_la1[96] = jj_gen; + break label_29; } } ArrayInitializer(); @@ -3558,7 +3795,7 @@ final public void ArrayDimensions() throws ParseException {/*@bgen(jjtree) Array break; } default: - jj_la1[92] = jj_gen; + jj_la1[97] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3615,6 +3852,7 @@ void Statement() throws ParseException { case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -3651,7 +3889,7 @@ void Statement() throws ParseException { break; } default: - jj_la1[93] = jj_gen; + jj_la1[98] = jj_gen; if (isRegularForStatement()) { ForStatement(); } else { @@ -3685,7 +3923,7 @@ void Statement() throws ParseException { break; } default: - jj_la1[94] = jj_gen; + jj_la1[99] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3745,15 +3983,15 @@ final public void Block() throws ParseException {/*@bgen(jjtree) Block */ break; } default: - jj_la1[95] = jj_gen; + jj_la1[100] = jj_gen; ; } jj_consume_token(LBRACE); - label_28: + label_30: while (true) { if (jj_2_25(1)) { } else { - break label_28; + break label_30; } BlockStatement(); } @@ -3811,7 +4049,7 @@ final public void BlockStatement() throws ParseException { break; } default: - jj_la1[96] = jj_gen; + jj_la1[101] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3829,7 +4067,7 @@ final public void MethodDeclTerminator() throws ParseException { break; } default: - jj_la1[97] = jj_gen; + jj_la1[102] = jj_gen; if (isImplicitMethodTerminator()) { } else { @@ -3846,7 +4084,7 @@ final public void StatementTerminator() throws ParseException { break; } default: - jj_la1[98] = jj_gen; + jj_la1[103] = jj_gen; ; } } @@ -3866,23 +4104,23 @@ final public void SwitchStatement() throws ParseException {/*@bgen(jjtree) Switc Expression(); jj_consume_token(RPAREN); jj_consume_token(LBRACE); - label_29: + label_31: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case CASE: - case 153:{ + case 156:{ break; } default: - jj_la1[99] = jj_gen; - break label_29; + jj_la1[104] = jj_gen; + break label_31; } SwitchLabel(); - label_30: + label_32: while (true) { if (jj_2_31(1)) { } else { - break label_30; + break label_32; } BlockStatement(); } @@ -3925,8 +4163,8 @@ final public void SwitchLabel() throws ParseException {/*@bgen(jjtree) SwitchLab jj_consume_token(COLON); break; } - case 153:{ - jj_consume_token(153); + case 156:{ + jj_consume_token(156); jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; if (jjtree.nodeCreated()) { @@ -3936,7 +4174,7 @@ final public void SwitchLabel() throws ParseException {/*@bgen(jjtree) SwitchLab break; } default: - jj_la1[100] = jj_gen; + jj_la1[105] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3981,7 +4219,7 @@ final public void IfStatement() throws ParseException {/*@bgen(jjtree) IfStateme break; } default: - jj_la1[101] = jj_gen; + jj_la1[106] = jj_gen; if (jj_2_32(1)) { Statement(); } else { @@ -3996,7 +4234,7 @@ final public void IfStatement() throws ParseException {/*@bgen(jjtree) IfStateme break; } default: - jj_la1[102] = jj_gen; + jj_la1[107] = jj_gen; ; } } catch (Throwable jjte000) { @@ -4139,6 +4377,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState case TRUE: case VOID: case VOLATILE: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -4159,7 +4398,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState break; } default: - jj_la1[103] = jj_gen; + jj_la1[108] = jj_gen; ; } jj_consume_token(SEMICOLON); @@ -4177,6 +4416,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -4197,7 +4437,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState break; } default: - jj_la1[104] = jj_gen; + jj_la1[109] = jj_gen; ; } jj_consume_token(SEMICOLON); @@ -4215,6 +4455,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -4235,7 +4476,7 @@ final public void ForStatement() throws ParseException {/*@bgen(jjtree) ForState break; } default: - jj_la1[105] = jj_gen; + jj_la1[110] = jj_gen; ; } jj_consume_token(RPAREN); @@ -4299,7 +4540,7 @@ final public void EnhancedForStatement() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[106] = jj_gen; + jj_la1[111] = jj_gen; ; } Type(); @@ -4317,7 +4558,7 @@ final public void EnhancedForStatement() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[107] = jj_gen; + jj_la1[112] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4364,6 +4605,7 @@ final public void EnhancedForStatement() throws ParseException {/*@bgen(jjtree) case SHORT: case TRUE: case VOID: + case WHEN: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case CHARACTER_LITERAL: @@ -4383,7 +4625,7 @@ final public void EnhancedForStatement() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[108] = jj_gen; + jj_la1[113] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4405,15 +4647,15 @@ final public void TypedVariableDeclaration() throws ParseException {/*@bgen(jjtr mods = Modifiers(Modifiers.FIELD, false); Type(); VariableDeclarator(); - label_31: + label_33: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case COMMA:{ break; } default: - jj_la1[109] = jj_gen; - break label_31; + jj_la1[114] = jj_gen; + break label_33; } jj_consume_token(COMMA); VariableDeclarator(); @@ -4455,15 +4697,15 @@ final public void StatementExpressionList() throws ParseException {/*@bgen(jjtre jjtreeOpenNodeScope(jjtn000); try { StatementExpression(); - label_32: + label_34: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case COMMA:{ break; } default: - jj_la1[110] = jj_gen; - break label_32; + jj_la1[115] = jj_gen; + break label_34; } jj_consume_token(COMMA); StatementExpression(); @@ -4714,19 +4956,19 @@ final public void TryStatement() throws ParseException {/*@bgen(jjtree) TryState break; } default: - jj_la1[111] = jj_gen; + jj_la1[116] = jj_gen; ; } Block(); - label_33: + label_35: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case CATCH:{ break; } default: - jj_la1[112] = jj_gen; - break label_33; + jj_la1[117] = jj_gen; + break label_35; } jj_consume_token(CATCH); jj_consume_token(LPAREN); @@ -4743,7 +4985,7 @@ final public void TryStatement() throws ParseException {/*@bgen(jjtree) TryState break; } default: - jj_la1[113] = jj_gen; + jj_la1[118] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -4790,19 +5032,19 @@ final public void MultiCatch() throws ParseException {/*@bgen(jjtree) MultiCatch break; } default: - jj_la1[114] = jj_gen; + jj_la1[119] = jj_gen; ; } Type(); - label_34: + label_36: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case BIT_OR:{ break; } default: - jj_la1[115] = jj_gen; - break label_34; + jj_la1[120] = jj_gen; + break label_36; } jj_consume_token(BIT_OR); Type(); @@ -4827,7 +5069,7 @@ final public void MultiCatch() throws ParseException {/*@bgen(jjtree) MultiCatch break; } default: - jj_la1[116] = jj_gen; + jj_la1[121] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4864,15 +5106,15 @@ final public void TryWithResources() throws ParseException {/*@bgen(jjtree) TryW try { jj_consume_token(LPAREN); AutoCloseable(); - label_35: + label_37: while (true) { switch (jj_ntk == -1 ? jj_ntk_f() : jj_ntk) { case SEMICOLON:{ break; } default: - jj_la1[117] = jj_gen; - break label_35; + jj_la1[122] = jj_gen; + break label_37; } jj_consume_token(SEMICOLON); AutoCloseable(); @@ -4918,7 +5160,7 @@ final public void AutoCloseable() throws ParseException {/*@bgen(jjtree) AutoClo break; } default: - jj_la1[118] = jj_gen; + jj_la1[123] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -5327,202 +5569,273 @@ private boolean jj_2_38(int xla) finally { jj_save(37, xla); } } - private boolean jj_3_34() + private boolean jj_3R_256() { if (jj_3R_53()) return true; - if (jj_3R_44()) return true; - if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_168() + private boolean jj_3R_257() { - if (jj_3R_170()) return true; + if (jj_3R_263()) return true; + return false; + } + + private boolean jj_3R_170() + { + if (jj_3R_172()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_171()) { jj_scanpos = xsp; break; } + if (jj_3R_173()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_171() + private boolean jj_3R_255() + { + if (jj_3R_262()) return true; + return false; + } + + private boolean jj_3_33() + { + if (jj_scan_token(FOR)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_59()) return true; + return false; + } + + private boolean jj_3R_115() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(105)) { + if (jj_3_33()) { jj_scanpos = xsp; + if (jj_3R_142()) return true; + } + return false; + } + + private boolean jj_3R_173() + { + Token xsp; + xsp = jj_scanpos; if (jj_scan_token(106)) { jj_scanpos = xsp; - if (jj_scan_token(113)) { - jj_scanpos = xsp; - if (jj_scan_token(114)) return true; + if (jj_scan_token(107)) return true; } - } - } - if (jj_3R_170()) return true; + if (jj_3R_172()) return true; return false; } - private boolean jj_3R_97() + private boolean jj_3R_142() { - if (jj_3R_53()) return true; - if (jj_3R_44()) return true; - if (jj_3R_60()) return true; + if (jj_scan_token(FOR)) return true; + if (jj_scan_token(LPAREN)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_228()) { jj_scanpos = xsp; break; } - } + xsp = jj_scanpos; + if (jj_3R_264()) jj_scanpos = xsp; + if (jj_3R_46()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_170() + private boolean jj_3R_172() { - if (jj_3R_172()) return true; + if (jj_3R_174()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_173()) { jj_scanpos = xsp; break; } + if (jj_3R_175()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_32() + private boolean jj_3R_175() { - if (jj_3R_57()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(108)) { + jj_scanpos = xsp; + if (jj_scan_token(109)) { + jj_scanpos = xsp; + if (jj_scan_token(116)) { + jj_scanpos = xsp; + if (jj_scan_token(117)) return true; + } + } + } + if (jj_3R_174()) return true; return false; } - private boolean jj_3R_173() + private boolean jj_3R_262() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(115)) { + if (jj_3R_270()) { jj_scanpos = xsp; - if (jj_scan_token(116)) return true; + if (jj_3R_271()) return true; } - if (jj_3R_172()) return true; return false; } - private boolean jj_3R_261() + private boolean jj_3R_270() + { + if (jj_3R_99()) return true; + return false; + } + + private boolean jj_3R_174() { - if (jj_3R_107()) return true; + if (jj_3R_176()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_265()) { jj_scanpos = xsp; break; } + if (jj_3R_177()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_172() + private boolean jj_3R_271() + { + if (jj_3R_272()) return true; + return false; + } + + private boolean jj_3R_264() + { + if (jj_scan_token(FINAL)) return true; + return false; + } + + private boolean jj_3R_177() { Token xsp; xsp = jj_scanpos; - if (jj_3R_174()) { - jj_scanpos = xsp; - if (jj_3R_175()) { - jj_scanpos = xsp; - if (jj_3R_176()) { - jj_scanpos = xsp; - if (jj_3R_177()) { + if (jj_scan_token(118)) { jj_scanpos = xsp; - if (jj_3R_178()) return true; - } - } - } + if (jj_scan_token(119)) return true; } + if (jj_3R_176()) return true; return false; } - private boolean jj_3R_174() + private boolean jj_3_34() + { + if (jj_3R_55()) return true; + if (jj_3R_46()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + return false; + } + + private boolean jj_3R_176() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(103)) { + if (jj_3R_178()) { jj_scanpos = xsp; - if (jj_scan_token(104)) { + if (jj_3R_179()) { jj_scanpos = xsp; - if (jj_scan_token(90)) { + if (jj_3R_180()) { jj_scanpos = xsp; - if (jj_scan_token(89)) return true; + if (jj_3R_181()) { + jj_scanpos = xsp; + if (jj_3R_182()) return true; + } } } } - if (jj_3R_172()) return true; - return false; - } - - private boolean jj_3R_252() - { - if (jj_3R_261()) return true; return false; } - private boolean jj_3R_175() + private boolean jj_3R_178() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(101)) { + if (jj_scan_token(106)) { + jj_scanpos = xsp; + if (jj_scan_token(107)) { jj_scanpos = xsp; - if (jj_scan_token(102)) return true; + if (jj_scan_token(93)) { + jj_scanpos = xsp; + if (jj_scan_token(92)) return true; + } + } } - if (jj_3R_181()) return true; + if (jj_3R_176()) return true; return false; } - private boolean jj_3R_114() + private boolean jj_3R_179() { - if (jj_scan_token(BREAK)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_35()) { + if (jj_scan_token(104)) { jj_scanpos = xsp; - if (jj_3R_152()) return true; + if (jj_scan_token(105)) return true; } + if (jj_3R_185()) return true; return false; } - private boolean jj_3R_176() + private boolean jj_3R_99() { - if (jj_3R_179()) return true; + if (jj_3R_55()) return true; + if (jj_3R_46()) return true; + if (jj_3R_62()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_239()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_243() + private boolean jj_3R_180() { - if (jj_scan_token(ELSE)) return true; - if (jj_3R_57()) return true; + if (jj_3R_183()) return true; return false; } - private boolean jj_3_35() + private boolean jj_3R_181() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(SEMICOLON)) return true; + if (jj_3R_184()) return true; return false; } - private boolean jj_3R_177() + private boolean jj_3_32() { - if (jj_3R_180()) return true; + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_152() + private boolean jj_3R_272() { - if (jj_3R_40()) return true; + if (jj_3R_109()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_276()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_178() + private boolean jj_3R_182() { - if (jj_3R_181()) return true; + if (jj_3R_185()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_182()) jj_scanpos = xsp; + if (jj_3R_186()) jj_scanpos = xsp; return false; } @@ -5530,189 +5843,283 @@ private boolean jj_3_10() { Token xsp; xsp = jj_scanpos; - if (jj_3R_46()) { + if (jj_3R_48()) { jj_scanpos = xsp; - if (jj_scan_token(72)) return true; + if (jj_scan_token(75)) return true; } if (jj_scan_token(ARROW)) return true; return false; } - private boolean jj_3R_228() + private boolean jj_3R_48() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_60()) return true; + if (jj_3R_57()) return true; return false; } - private boolean jj_3R_115() + private boolean jj_3R_263() { - if (jj_scan_token(CONTINUE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_36()) { - jj_scanpos = xsp; - if (jj_3R_153()) return true; - } + if (jj_3R_272()) return true; return false; } - private boolean jj_3R_265() + private boolean jj_3R_184() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_107()) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_46()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_176()) return true; return false; } - private boolean jj_3R_46() + private boolean jj_3_11() { - if (jj_3R_55()) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_46()) return true; + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_180() + private boolean jj_3R_116() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_44()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_3R_172()) return true; + if (jj_scan_token(BREAK)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_35()) { + jj_scanpos = xsp; + if (jj_3R_154()) return true; + } return false; } - private boolean jj_3_11() + private boolean jj_3R_185() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_44()) return true; - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_188()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_12()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3_36() + private boolean jj_3R_254() + { + if (jj_scan_token(ELSE)) return true; + if (jj_3R_59()) return true; + return false; + } + + private boolean jj_3_35() { if (jj_scan_token(IDENTIFIER)) return true; if (jj_scan_token(SEMICOLON)) return true; return false; } - private boolean jj_3R_153() + private boolean jj_3R_154() { - if (jj_3R_40()) return true; + if (jj_3R_42()) return true; return false; } - private boolean jj_3R_181() + private boolean jj_3R_200() { - if (jj_3R_184()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_12()) { jj_scanpos = xsp; break; } - } + if (jj_3R_40()) return true; + if (jj_3R_210()) return true; return false; } - private boolean jj_3R_116() + private boolean jj_3R_186() { - if (jj_scan_token(RETURN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_154()) jj_scanpos = xsp; - if (jj_3R_40()) return true; + if (jj_scan_token(104)) { + jj_scanpos = xsp; + if (jj_scan_token(105)) return true; + } return false; } - private boolean jj_3R_194() + private boolean jj_3R_239() { - if (jj_3R_38()) return true; - if (jj_3R_203()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_62()) return true; return false; } - private boolean jj_3R_182() + private boolean jj_3R_117() { + if (jj_scan_token(CONTINUE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(101)) { + if (jj_3_36()) { jj_scanpos = xsp; - if (jj_scan_token(102)) return true; + if (jj_3R_155()) return true; } return false; } - private boolean jj_3R_179() + private boolean jj_3R_183() { Token xsp; xsp = jj_scanpos; - if (jj_3R_183()) { + if (jj_3R_187()) { jj_scanpos = xsp; - if (jj_scan_token(72)) return true; + if (jj_scan_token(75)) return true; } if (jj_scan_token(ARROW)) return true; xsp = jj_scanpos; - if (jj_3R_185()) { + if (jj_3R_189()) { jj_scanpos = xsp; - if (jj_3R_186()) return true; + if (jj_3R_190()) return true; } return false; } - private boolean jj_3R_117() + private boolean jj_3R_276() { - if (jj_scan_token(SYNCHRONIZED)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_3R_50()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_109()) return true; return false; } - private boolean jj_3R_183() + private boolean jj_3R_187() { - if (jj_3R_55()) return true; + if (jj_3R_57()) return true; return false; } - private boolean jj_3R_154() + private boolean jj_3_36() { - if (jj_3R_51()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(SEMICOLON)) return true; return false; } - private boolean jj_3R_185() + private boolean jj_3R_189() { - if (jj_3R_50()) return true; + if (jj_3R_52()) return true; + return false; + } + + private boolean jj_3R_155() + { + if (jj_3R_42()) return true; return false; } private boolean jj_3_12() { - if (jj_3R_47()) return true; + if (jj_3R_49()) return true; + return false; + } + + private boolean jj_3R_199() + { + if (jj_scan_token(WHEN)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_scan_token(LBRACE)) return true; + Token xsp; + if (jj_3R_209()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_209()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; return false; } private boolean jj_3R_118() { - if (jj_scan_token(THROW)) return true; - if (jj_3R_51()) return true; - if (jj_3R_40()) return true; + if (jj_scan_token(RETURN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_156()) jj_scanpos = xsp; + if (jj_3R_42()) return true; return false; } - private boolean jj_3R_184() + private boolean jj_3R_190() + { + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3R_209() + { + if (jj_3R_216()) return true; + return false; + } + + private boolean jj_3R_216() { Token xsp; xsp = jj_scanpos; - if (jj_3R_187()) { + if (jj_3R_225()) { + jj_scanpos = xsp; + if (jj_3R_226()) return true; + } + return false; + } + + private boolean jj_3R_225() + { + if (jj_scan_token(ELSE)) return true; + if (jj_scan_token(ARROW)) return true; + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3R_119() + { + if (jj_scan_token(SYNCHRONIZED)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_52()) return true; + return false; + } + + private boolean jj_3R_226() + { + if (jj_3R_53()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_233()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(ARROW)) return true; + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3R_156() + { + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3R_188() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_191()) { jj_scanpos = xsp; - if (jj_3R_188()) { + if (jj_3R_192()) { jj_scanpos = xsp; - if (jj_3R_189()) { + if (jj_3R_193()) { jj_scanpos = xsp; - if (jj_3R_190()) { + if (jj_3R_194()) { jj_scanpos = xsp; - if (jj_3R_191()) { + if (jj_3R_195()) { + jj_scanpos = xsp; + if (jj_3R_196()) { jj_scanpos = xsp; - if (jj_3R_192()) return true; + if (jj_3R_197()) return true; + } } } } @@ -5721,107 +6128,115 @@ private boolean jj_3R_184() return false; } - private boolean jj_3R_187() + private boolean jj_3R_191() { - if (jj_3R_193()) return true; + if (jj_3R_198()) return true; return false; } - private boolean jj_3R_188() + private boolean jj_3R_120() + { + if (jj_scan_token(THROW)) return true; + if (jj_3R_53()) return true; + if (jj_3R_42()) return true; + return false; + } + + private boolean jj_3R_192() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_189() + private boolean jj_3R_193() { - if (jj_3R_49()) return true; + if (jj_3R_199()) return true; return false; } - private boolean jj_3R_186() + private boolean jj_3R_194() { if (jj_3R_51()) return true; return false; } - private boolean jj_3R_190() + private boolean jj_3R_195() { - if (jj_3R_194()) return true; + if (jj_3R_200()) return true; return false; } - private boolean jj_3R_191() + private boolean jj_3R_196() { - if (jj_3R_44()) return true; + if (jj_3R_46()) return true; return false; } - private boolean jj_3R_119() + private boolean jj_3R_121() { if (jj_scan_token(TRY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_155()) jj_scanpos = xsp; - if (jj_3R_50()) return true; + if (jj_3R_157()) jj_scanpos = xsp; + if (jj_3R_52()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_247()) { jj_scanpos = xsp; break; } + if (jj_3R_258()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_248()) jj_scanpos = xsp; + if (jj_3R_259()) jj_scanpos = xsp; return false; } - private boolean jj_3R_192() + private boolean jj_3R_197() { - if (jj_3R_38()) return true; + if (jj_3R_40()) return true; return false; } - private boolean jj_3R_247() + private boolean jj_3R_258() { if (jj_scan_token(CATCH)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_254()) return true; + if (jj_3R_265()) return true; if (jj_scan_token(RPAREN)) return true; - if (jj_3R_50()) return true; + if (jj_3R_52()) return true; return false; } - private boolean jj_3R_248() + private boolean jj_3R_259() { if (jj_scan_token(FINALLY)) return true; - if (jj_3R_50()) return true; + if (jj_3R_52()) return true; return false; } private boolean jj_3_13() { - if (jj_3R_38()) return true; + if (jj_3R_40()) return true; if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_48()) { + if (jj_3R_50()) { jj_scanpos = xsp; - if (jj_scan_token(76)) return true; + if (jj_scan_token(79)) return true; } return false; } private boolean jj_3_14() { - if (jj_3R_44()) return true; + if (jj_3R_46()) return true; if (jj_scan_token(DOT)) return true; if (jj_scan_token(CLASS)) return true; return false; } - private boolean jj_3R_155() + private boolean jj_3R_157() { - if (jj_3R_158()) return true; + if (jj_3R_160()) return true; return false; } @@ -5829,27 +6244,34 @@ private boolean jj_3_37() { Token xsp; xsp = jj_scanpos; - if (jj_3R_58()) jj_scanpos = xsp; - if (jj_3R_44()) return true; + if (jj_3R_60()) jj_scanpos = xsp; + if (jj_3R_46()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_59()) { jj_scanpos = xsp; break; } + if (jj_3R_61()) { jj_scanpos = xsp; break; } } if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_254() + private boolean jj_3R_265() { Token xsp; xsp = jj_scanpos; if (jj_3_37()) { jj_scanpos = xsp; - if (jj_3R_264()) return true; + if (jj_3R_275()) return true; } return false; } + private boolean jj_3R_233() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_53()) return true; + return false; + } + private boolean jj_3_15() { if (jj_scan_token(DOT)) return true; @@ -5857,24 +6279,24 @@ private boolean jj_3_15() return false; } - private boolean jj_3R_47() + private boolean jj_3R_49() { Token xsp; xsp = jj_scanpos; if (jj_3_15()) { jj_scanpos = xsp; - if (jj_3R_71()) { + if (jj_3R_73()) { jj_scanpos = xsp; jj_lookingAhead = true; jj_semLA = getToken(1).kind == COLON_COLON && (getToken(2).kind == IDENTIFIER || getToken(2).kind == NEW ) && getToken(3).kind != RBRACKET; jj_lookingAhead = false; - if (!jj_semLA || jj_3R_72()) { + if (!jj_semLA || jj_3R_74()) { jj_scanpos = xsp; if (jj_3_16()) { jj_scanpos = xsp; if (jj_3_17()) { jj_scanpos = xsp; - if (jj_3R_73()) { + if (jj_3R_75()) { jj_scanpos = xsp; if (jj_3_18()) return true; } @@ -5886,51 +6308,51 @@ private boolean jj_3R_47() return false; } - private boolean jj_3R_264() + private boolean jj_3R_275() { if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_71() + private boolean jj_3R_73() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_204()) jj_scanpos = xsp; + if (jj_3R_211()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_205()) jj_scanpos = xsp; + if (jj_3R_212()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_59() + private boolean jj_3R_61() { if (jj_scan_token(BIT_OR)) return true; - if (jj_3R_44()) return true; + if (jj_3R_46()) return true; return false; } - private boolean jj_3R_158() + private boolean jj_3R_160() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_262()) return true; + if (jj_3R_273()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_263()) { jj_scanpos = xsp; break; } + if (jj_3R_274()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_204() + private boolean jj_3R_211() { - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3R_58() + private boolean jj_3R_60() { if (jj_scan_token(FINAL)) return true; return false; @@ -5938,106 +6360,112 @@ private boolean jj_3R_58() private boolean jj_3_38() { - if (jj_3R_44()) return true; - if (jj_3R_60()) return true; + if (jj_3R_46()) return true; + if (jj_3R_62()) return true; return false; } - private boolean jj_3R_205() + private boolean jj_3R_212() { Token xsp; xsp = jj_scanpos; - if (jj_3R_213()) { + if (jj_3R_221()) { jj_scanpos = xsp; - if (jj_3R_214()) return true; + if (jj_3R_222()) return true; } return false; } - private boolean jj_3R_213() + private boolean jj_3R_221() { if (jj_scan_token(COLON_COLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_220()) jj_scanpos = xsp; + if (jj_3R_230()) jj_scanpos = xsp; return false; } - private boolean jj_3R_262() + private boolean jj_3R_273() { Token xsp; xsp = jj_scanpos; if (jj_3_38()) { jj_scanpos = xsp; - if (jj_3R_266()) return true; + if (jj_3R_277()) return true; } return false; } - private boolean jj_3R_214() + private boolean jj_3R_222() { if (jj_scan_token(COLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_221()) jj_scanpos = xsp; + if (jj_3R_231()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_222()) jj_scanpos = xsp; + if (jj_3R_232()) jj_scanpos = xsp; return false; } - private boolean jj_3R_48() + private boolean jj_3R_50() { - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3R_72() + private boolean jj_3R_74() { if (jj_scan_token(COLON_COLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(72)) { + if (jj_scan_token(75)) { jj_scanpos = xsp; - if (jj_scan_token(41)) return true; + if (jj_scan_token(43)) return true; } return false; } - private boolean jj_3R_220() + private boolean jj_3R_230() { - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3R_222() + private boolean jj_3R_232() { if (jj_scan_token(COLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_224()) jj_scanpos = xsp; + if (jj_3R_235()) jj_scanpos = xsp; return false; } - private boolean jj_3R_266() + private boolean jj_3_1() + { + if (jj_3R_38()) return true; + return false; + } + + private boolean jj_3R_277() { - if (jj_3R_60()) return true; + if (jj_3R_62()) return true; return false; } private boolean jj_3_16() { - if (jj_scan_token(152)) return true; + if (jj_scan_token(155)) return true; if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_206()) jj_scanpos = xsp; + if (jj_3R_213()) jj_scanpos = xsp; return false; } - private boolean jj_3R_263() + private boolean jj_3R_274() { if (jj_scan_token(SEMICOLON)) return true; - if (jj_3R_262()) return true; + if (jj_3R_273()) return true; return false; } @@ -6047,74 +6475,62 @@ private boolean jj_3_17() if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_207()) jj_scanpos = xsp; + if (jj_3R_214()) jj_scanpos = xsp; return false; } - private boolean jj_3R_73() + private boolean jj_3R_75() { if (jj_scan_token(LBRACE)) return true; - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3_18() - { - if (jj_scan_token(DOT)) return true; - if (jj_3R_49()) return true; - return false; - } - - private boolean jj_3_1() - { - if (jj_3R_36()) return true; - return false; - } - - private boolean jj_3R_221() - { - if (jj_3R_51()) return true; - return false; - } - - private boolean jj_3R_206() + private boolean jj_3R_55() { - if (jj_3R_203()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_79()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_224() + private boolean jj_3_18() { + if (jj_scan_token(DOT)) return true; if (jj_3R_51()) return true; return false; } - private boolean jj_3R_207() - { - if (jj_3R_203()) return true; - return false; - } - - private boolean jj_3R_193() + private boolean jj_3R_79() { Token xsp; xsp = jj_scanpos; - if (jj_3R_195()) { + if (jj_scan_token(46)) { jj_scanpos = xsp; - if (jj_3R_196()) { + if (jj_scan_token(47)) { + jj_scanpos = xsp; + if (jj_scan_token(48)) { jj_scanpos = xsp; - if (jj_3R_197()) { + if (jj_scan_token(54)) { jj_scanpos = xsp; - if (jj_3R_198()) { + if (jj_scan_token(28)) { jj_scanpos = xsp; - if (jj_3R_199()) { + if (jj_scan_token(42)) { jj_scanpos = xsp; - if (jj_3R_200()) { + if (jj_scan_token(55)) { jj_scanpos = xsp; - if (jj_3R_201()) { + if (jj_scan_token(61)) { jj_scanpos = xsp; - if (jj_3R_202()) return true; + if (jj_scan_token(11)) { + jj_scanpos = xsp; + if (jj_scan_token(51)) { + jj_scanpos = xsp; + if (jj_scan_token(52)) { + jj_scanpos = xsp; + if (jj_scan_token(21)) return true; } } } @@ -6122,56 +6538,56 @@ private boolean jj_3R_193() } } } - return false; - } + } + } + } + } + return false; + } - private boolean jj_3R_195() + private boolean jj_3R_231() { - if (jj_scan_token(INTEGER_LITERAL)) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3R_53() + private boolean jj_3R_213() { - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_77()) { jj_scanpos = xsp; break; } - } + if (jj_3R_210()) return true; return false; } - private boolean jj_3R_77() + private boolean jj_3R_235() + { + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3R_214() + { + if (jj_3R_210()) return true; + return false; + } + + private boolean jj_3R_198() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(44)) { - jj_scanpos = xsp; - if (jj_scan_token(45)) { - jj_scanpos = xsp; - if (jj_scan_token(46)) { - jj_scanpos = xsp; - if (jj_scan_token(52)) { - jj_scanpos = xsp; - if (jj_scan_token(28)) { + if (jj_3R_201()) { jj_scanpos = xsp; - if (jj_scan_token(40)) { + if (jj_3R_202()) { jj_scanpos = xsp; - if (jj_scan_token(53)) { + if (jj_3R_203()) { jj_scanpos = xsp; - if (jj_scan_token(59)) { + if (jj_3R_204()) { jj_scanpos = xsp; - if (jj_scan_token(11)) { + if (jj_3R_205()) { jj_scanpos = xsp; - if (jj_scan_token(49)) { + if (jj_3R_206()) { jj_scanpos = xsp; - if (jj_scan_token(50)) { + if (jj_3R_207()) { jj_scanpos = xsp; - if (jj_scan_token(21)) return true; - } - } - } - } + if (jj_3R_208()) return true; } } } @@ -6182,278 +6598,250 @@ private boolean jj_3R_77() return false; } - private boolean jj_3R_196() - { - if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; - return false; - } - - private boolean jj_3R_197() + private boolean jj_3R_201() { - if (jj_scan_token(CHARACTER_LITERAL)) return true; + if (jj_scan_token(INTEGER_LITERAL)) return true; return false; } - private boolean jj_3R_95() + private boolean jj_3R_97() { - if (jj_3R_53()) return true; + if (jj_3R_55()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_120()) { + if (jj_3R_122()) { jj_scanpos = xsp; - if (jj_3R_121()) return true; + if (jj_3R_123()) return true; } return false; } - private boolean jj_3R_120() + private boolean jj_3R_122() { Token xsp; xsp = jj_scanpos; - if (jj_3R_141()) { + if (jj_3R_143()) { jj_scanpos = xsp; - if (jj_3R_142()) return true; + if (jj_3R_144()) return true; } - if (jj_3R_50()) return true; + if (jj_3R_52()) return true; return false; } - private boolean jj_3R_198() + private boolean jj_3R_202() { - if (jj_scan_token(STRING_LITERAL)) return true; + if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; return false; } - private boolean jj_3R_141() + private boolean jj_3R_143() { if (jj_scan_token(CLASS)) return true; if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_234()) jj_scanpos = xsp; + if (jj_3R_245()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_235()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_199() - { - if (jj_scan_token(LONG_STRING_LITERAL)) return true; + if (jj_3R_246()) jj_scanpos = xsp; return false; } - private boolean jj_3R_234() + private boolean jj_3R_245() { if (jj_scan_token(EXTENDS)) return true; - if (jj_3R_38()) return true; + if (jj_3R_40()) return true; return false; } - private boolean jj_3R_235() + private boolean jj_3R_246() { if (jj_scan_token(IMPLEMENTS)) return true; - if (jj_3R_81()) return true; + if (jj_3R_83()) return true; return false; } - private boolean jj_3R_142() + private boolean jj_3R_144() { if (jj_scan_token(INTERFACE)) return true; if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_236()) jj_scanpos = xsp; + if (jj_3R_247()) jj_scanpos = xsp; return false; } - private boolean jj_3R_121() + private boolean jj_3R_123() { if (jj_scan_token(ENUM)) return true; if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_229()) jj_scanpos = xsp; - if (jj_3R_230()) return true; + if (jj_3R_240()) jj_scanpos = xsp; + if (jj_3R_241()) return true; return false; } - private boolean jj_3R_236() + private boolean jj_3R_247() { if (jj_scan_token(EXTENDS)) return true; - if (jj_3R_81()) return true; + if (jj_3R_83()) return true; return false; } - private boolean jj_3R_229() + private boolean jj_3R_240() { if (jj_scan_token(IMPLEMENTS)) return true; - if (jj_3R_81()) return true; - return false; - } - - private boolean jj_3R_200() - { - if (jj_3R_208()) return true; + if (jj_3R_83()) return true; return false; } - private boolean jj_3R_201() + private boolean jj_3R_203() { - if (jj_scan_token(42)) return true; + if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_202() + private boolean jj_3R_204() { - if (jj_scan_token(58)) return true; + if (jj_scan_token(STRING_LITERAL)) return true; return false; } - private boolean jj_3R_249() + private boolean jj_3R_260() { if (jj_scan_token(IDENTIFIER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_255()) jj_scanpos = xsp; + if (jj_3R_266()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_256()) jj_scanpos = xsp; + if (jj_3R_267()) jj_scanpos = xsp; return false; } - private boolean jj_3R_208() + private boolean jj_3R_205() + { + if (jj_scan_token(LONG_STRING_LITERAL)) return true; + return false; + } + + private boolean jj_3R_241() { + if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_215()) { - jj_scanpos = xsp; - if (jj_3R_216()) return true; + if (jj_3R_248()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_249()) { jj_scanpos = xsp; break; } } + xsp = jj_scanpos; + if (jj_3R_250()) jj_scanpos = xsp; + if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_215() + private boolean jj_3R_206() { - if (jj_scan_token(TRUE)) return true; + if (jj_3R_215()) return true; return false; } - private boolean jj_3R_216() + private boolean jj_3R_266() { - if (jj_scan_token(FALSE)) return true; + if (jj_3R_210()) return true; return false; } - private boolean jj_3R_230() + private boolean jj_3R_207() { - if (jj_scan_token(LBRACE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_237()) jj_scanpos = xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_238()) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_239()) jj_scanpos = xsp; - if (jj_scan_token(RBRACE)) return true; + if (jj_scan_token(44)) return true; return false; } - private boolean jj_3R_255() + private boolean jj_3R_248() { - if (jj_3R_203()) return true; + if (jj_3R_260()) return true; return false; } - private boolean jj_3R_237() + private boolean jj_3R_208() { - if (jj_3R_249()) return true; + if (jj_scan_token(60)) return true; return false; } - private boolean jj_3R_96() + private boolean jj_3R_98() { - if (jj_3R_53()) return true; + if (jj_3R_55()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_122()) { + if (jj_3R_124()) { jj_scanpos = xsp; - if (jj_3R_123()) return true; + if (jj_3R_125()) return true; } - if (jj_3R_55()) return true; + if (jj_3R_57()) return true; xsp = jj_scanpos; - if (jj_3R_225()) jj_scanpos = xsp; + if (jj_3R_236()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_226()) { + if (jj_3R_237()) { jj_scanpos = xsp; - if (jj_3R_227()) return true; + if (jj_3R_238()) return true; } return false; } - private boolean jj_3R_203() - { - if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_212()) jj_scanpos = xsp; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - private boolean jj_3R_122() + private boolean jj_3R_124() { if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_123() + private boolean jj_3R_125() { - if (jj_3R_54()) return true; + if (jj_3R_56()) return true; if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_212() + private boolean jj_3R_215() { - if (jj_3R_219()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_223()) { + jj_scanpos = xsp; + if (jj_3R_224()) return true; + } return false; } - private boolean jj_3R_219() + private boolean jj_3R_223() { - if (jj_3R_51()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_223()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(TRUE)) return true; return false; } - private boolean jj_3R_256() + private boolean jj_3R_224() { - if (jj_3R_50()) return true; + if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_223() + private boolean jj_3R_267() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_51()) return true; + if (jj_3R_52()) return true; return false; } - private boolean jj_3R_225() + private boolean jj_3R_236() { if (jj_scan_token(THROWS)) return true; - if (jj_3R_81()) return true; + if (jj_3R_83()) return true; return false; } - private boolean jj_3R_226() + private boolean jj_3R_237() { - if (jj_3R_50()) return true; + if (jj_3R_52()) return true; return false; } @@ -6464,43 +6852,17 @@ private boolean jj_3_3() return false; } - private boolean jj_3R_49() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_74()) { - jj_scanpos = xsp; - if (jj_3R_75()) return true; - } - return false; - } - - private boolean jj_3R_74() - { - if (jj_scan_token(NEW)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_209()) { - jj_scanpos = xsp; - if (jj_3R_210()) { - jj_scanpos = xsp; - if (jj_3R_211()) return true; - } - } - return false; - } - - private boolean jj_3R_99() + private boolean jj_3R_101() { if (jj_scan_token(PACKAGE)) return true; - if (jj_3R_38()) return true; + if (jj_3R_40()) return true; return false; } - private boolean jj_3R_238() + private boolean jj_3R_249() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_249()) return true; + if (jj_3R_260()) return true; return false; } @@ -6509,182 +6871,140 @@ private boolean jj_3_4() if (jj_scan_token(IMPORT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_37()) jj_scanpos = xsp; - if (jj_3R_38()) return true; - xsp = jj_scanpos; if (jj_3R_39()) jj_scanpos = xsp; if (jj_3R_40()) return true; + xsp = jj_scanpos; + if (jj_3R_41()) jj_scanpos = xsp; + if (jj_3R_42()) return true; return false; } - private boolean jj_3R_98() + private boolean jj_3R_100() { Token xsp; xsp = jj_scanpos; if (jj_3_4()) { jj_scanpos = xsp; - if (jj_3R_124()) return true; + if (jj_3R_126()) return true; } return false; } - private boolean jj_3R_209() + private boolean jj_3R_238() { - if (jj_3R_100()) return true; - if (jj_3R_102()) return true; + if (jj_3R_242()) return true; return false; } - private boolean jj_3R_210() + private boolean jj_3R_126() { - if (jj_3R_38()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_217()) { - jj_scanpos = xsp; - if (jj_3R_218()) return true; - } + if (jj_scan_token(IMPORT)) return true; + if (jj_scan_token(STAR)) return true; + if (jj_3R_42()) return true; return false; } - private boolean jj_3R_227() + private boolean jj_3R_210() { - if (jj_3R_231()) return true; - return false; - } - - private boolean jj_3R_124() - { - if (jj_scan_token(IMPORT)) return true; - if (jj_scan_token(STAR)) return true; - if (jj_3R_40()) return true; - return false; - } - - private boolean jj_3R_217() - { - if (jj_3R_102()) return true; - return false; - } - - private boolean jj_3R_218() - { - if (jj_3R_203()) return true; + if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_19()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_75() - { - if (jj_3R_102()) return true; - return false; - } - - private boolean jj_3R_211() - { - if (jj_3R_102()) return true; + if (jj_3R_220()) jj_scanpos = xsp; + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_37() + private boolean jj_3R_39() { if (jj_scan_token(STATIC)) return true; return false; } - private boolean jj_3R_102() + private boolean jj_3R_220() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_22()) { - jj_scanpos = xsp; - if (jj_3R_135()) { - jj_scanpos = xsp; - if (jj_3R_136()) return true; - } - } + if (jj_3R_229()) return true; return false; } - private boolean jj_3_22() + private boolean jj_3R_229() { + if (jj_3R_53()) return true; Token xsp; - if (jj_3_20()) return true; while (true) { xsp = jj_scanpos; - if (jj_3_20()) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_3_21()) { jj_scanpos = xsp; break; } + if (jj_3R_234()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_60() + private boolean jj_3R_62() { if (jj_scan_token(IDENTIFIER)) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_232()) { jj_scanpos = xsp; break; } + if (jj_3R_243()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_233()) jj_scanpos = xsp; + if (jj_3R_244()) jj_scanpos = xsp; return false; } - private boolean jj_3_20() + private boolean jj_3R_234() { - if (jj_scan_token(LBRACKET)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RBRACKET)) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3_21() + private boolean jj_3R_243() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_232() + private boolean jj_3R_244() { - if (jj_scan_token(LBRACKET)) return true; - if (jj_scan_token(RBRACKET)) return true; + if (jj_scan_token(ASSIGN)) return true; + if (jj_3R_44()) return true; return false; } - private boolean jj_3R_135() + private boolean jj_3R_41() { - Token xsp; - if (jj_3R_144()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_144()) { jj_scanpos = xsp; break; } - } - if (jj_3R_41()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_233() + private boolean jj_3R_51() { - if (jj_scan_token(ASSIGN)) return true; - if (jj_3R_42()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_76()) { + jj_scanpos = xsp; + if (jj_3R_77()) return true; + } return false; } - private boolean jj_3R_39() + private boolean jj_3R_76() { - if (jj_scan_token(DOT)) return true; - if (jj_scan_token(STAR)) return true; + if (jj_scan_token(NEW)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_217()) { + jj_scanpos = xsp; + if (jj_3R_218()) { + jj_scanpos = xsp; + if (jj_3R_219()) return true; + } + } return false; } - private boolean jj_3R_239() + private boolean jj_3R_250() { if (jj_scan_token(SEMICOLON)) return true; Token xsp; @@ -6695,137 +7015,96 @@ private boolean jj_3R_239() return false; } - private boolean jj_3_19() + private boolean jj_3_5() { - if (jj_3R_50()) return true; + if (jj_3R_43()) return true; return false; } - private boolean jj_3R_144() + private boolean jj_3R_44() { - if (jj_scan_token(LBRACKET)) return true; - if (jj_scan_token(RBRACKET)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_5()) { + jj_scanpos = xsp; + if (jj_3R_70()) return true; + } return false; } - private boolean jj_3_5() + private boolean jj_3R_70() { - if (jj_3R_41()) return true; + if (jj_3R_53()) return true; return false; } - private boolean jj_3R_42() + private boolean jj_3R_217() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_5()) { - jj_scanpos = xsp; - if (jj_3R_68()) return true; - } + if (jj_3R_102()) return true; + if (jj_3R_104()) return true; return false; } - private boolean jj_3R_136() + private boolean jj_3_2() { - if (jj_3R_41()) return true; + if (jj_3R_38()) return true; return false; } - private boolean jj_3R_68() + private boolean jj_3R_218() { - if (jj_3R_51()) return true; + if (jj_3R_40()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_227()) { + jj_scanpos = xsp; + if (jj_3R_228()) return true; + } return false; } - private boolean jj_3_2() + private boolean jj_3R_227() { - if (jj_3R_36()) return true; + if (jj_3R_104()) return true; return false; } - private boolean jj_3R_41() + private boolean jj_3R_43() { if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_67()) jj_scanpos = xsp; + if (jj_3R_69()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_scan_token(82)) jj_scanpos = xsp; + if (jj_scan_token(85)) jj_scanpos = xsp; if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3_23() + private boolean jj_3R_228() { - if (jj_3R_52()) return true; + if (jj_3R_210()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_19()) jj_scanpos = xsp; return false; } - private boolean jj_3R_57() + private boolean jj_3R_77() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_23()) { - jj_scanpos = xsp; - if (jj_3_24()) { - jj_scanpos = xsp; - if (jj_scan_token(81)) { - jj_scanpos = xsp; - if (jj_3R_82()) { - jj_scanpos = xsp; - if (jj_3R_83()) { - jj_scanpos = xsp; - if (jj_3R_84()) { - jj_scanpos = xsp; - if (jj_3R_85()) { - jj_scanpos = xsp; - if (jj_3R_86()) { - jj_scanpos = xsp; - jj_lookingAhead = true; - jj_semLA = isRegularForStatement(); - jj_lookingAhead = false; - if (!jj_semLA || jj_3R_87()) { - jj_scanpos = xsp; - 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()) { - jj_scanpos = xsp; - if (jj_3R_92()) { - jj_scanpos = xsp; - if (jj_3R_93()) { - jj_scanpos = xsp; - if (jj_3R_94()) return true; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + if (jj_3R_104()) return true; return false; } - private boolean jj_3_24() + private boolean jj_3R_219() { - if (jj_3R_50()) return true; + if (jj_3R_104()) return true; return false; } - private boolean jj_3R_67() + private boolean jj_3R_69() { - if (jj_3R_42()) return true; + if (jj_3R_44()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -6834,160 +7113,236 @@ private boolean jj_3R_67() return false; } - private boolean jj_3R_55() + private boolean jj_3R_57() { if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_80()) jj_scanpos = xsp; + if (jj_3R_82()) jj_scanpos = xsp; if (jj_scan_token(RPAREN)) return true; return false; } + private boolean jj_3R_104() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3_22()) { + jj_scanpos = xsp; + if (jj_3R_137()) { + jj_scanpos = xsp; + if (jj_3R_138()) return true; + } + } + return false; + } + + private boolean jj_3_22() + { + Token xsp; + if (jj_3_20()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_20()) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3_21()) { jj_scanpos = xsp; break; } + } + return false; + } + private boolean jj_3_6() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_42()) return true; + if (jj_3R_44()) return true; return false; } - private boolean jj_3R_82() + private boolean jj_3_20() { - if (jj_3R_107()) return true; - if (jj_3R_40()) return true; + if (jj_scan_token(LBRACKET)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_83() + private boolean jj_3_21() { - if (jj_3R_108()) return true; + if (jj_scan_token(LBRACKET)) return true; + if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_80() + private boolean jj_3R_82() { - if (jj_3R_104()) return true; + if (jj_3R_106()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_105()) { jj_scanpos = xsp; break; } + if (jj_3R_107()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_84() - { - if (jj_3R_109()) return true; - return false; - } - - private boolean jj_3R_104() + private boolean jj_3R_106() { Token xsp; xsp = jj_scanpos; if (jj_3_7()) { jj_scanpos = xsp; - if (jj_3R_138()) return true; + if (jj_3R_140()) return true; } while (true) { xsp = jj_scanpos; - if (jj_3R_139()) { jj_scanpos = xsp; break; } + if (jj_3R_141()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_7() + private boolean jj_3R_137() { Token xsp; - xsp = jj_scanpos; - if (jj_3R_43()) jj_scanpos = xsp; - if (jj_3R_44()) return true; - xsp = jj_scanpos; - if (jj_3R_45()) jj_scanpos = xsp; - if (jj_scan_token(IDENTIFIER)) return true; + if (jj_3R_146()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_146()) { jj_scanpos = xsp; break; } + } + if (jj_3R_43()) return true; return false; } - private boolean jj_3R_85() + private boolean jj_3_7() { - if (jj_3R_110()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_45()) jj_scanpos = xsp; + if (jj_3R_46()) return true; + xsp = jj_scanpos; + if (jj_3R_47()) jj_scanpos = xsp; + if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_86() + private boolean jj_3_19() { - if (jj_3R_111()) return true; + if (jj_3R_52()) return true; return false; } - private boolean jj_3R_87() + private boolean jj_3R_146() { - if (jj_3R_112()) return true; + if (jj_scan_token(LBRACKET)) return true; + if (jj_scan_token(RBRACKET)) return true; return false; } private boolean jj_3R_138() { - if (jj_scan_token(IDENTIFIER)) return true; + if (jj_3R_43()) return true; return false; } - private boolean jj_3R_88() + private boolean jj_3R_140() { - if (jj_3R_113()) return true; + if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_139() + private boolean jj_3R_141() { if (jj_scan_token(LBRACKET)) return true; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_45() + private boolean jj_3R_47() { if (jj_scan_token(ELLIPSIS)) return true; return false; } - private boolean jj_3R_89() + private boolean jj_3_23() { - if (jj_3R_114()) return true; + if (jj_3R_54()) return true; return false; } - private boolean jj_3R_90() + private boolean jj_3R_59() { - if (jj_3R_115()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_23()) { + jj_scanpos = xsp; + if (jj_3_24()) { + jj_scanpos = xsp; + if (jj_scan_token(84)) { + jj_scanpos = xsp; + if (jj_3R_84()) { + jj_scanpos = xsp; + if (jj_3R_85()) { + jj_scanpos = xsp; + if (jj_3R_86()) { + jj_scanpos = xsp; + if (jj_3R_87()) { + jj_scanpos = xsp; + if (jj_3R_88()) { + jj_scanpos = xsp; + jj_lookingAhead = true; + jj_semLA = isRegularForStatement(); + jj_lookingAhead = false; + if (!jj_semLA || jj_3R_89()) { + jj_scanpos = xsp; + if (jj_3R_90()) { + jj_scanpos = xsp; + if (jj_3R_91()) { + jj_scanpos = xsp; + if (jj_3R_92()) { + jj_scanpos = xsp; + if (jj_3R_93()) { + jj_scanpos = xsp; + if (jj_3R_94()) { + jj_scanpos = xsp; + if (jj_3R_95()) { + jj_scanpos = xsp; + if (jj_3R_96()) return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } return false; } - private boolean jj_3R_91() + private boolean jj_3_24() { - if (jj_3R_116()) return true; + if (jj_3R_52()) return true; return false; } - private boolean jj_3R_43() + private boolean jj_3R_45() { if (jj_scan_token(FINAL)) return true; return false; } - private boolean jj_3R_92() - { - if (jj_3R_117()) return true; - return false; - } - - private boolean jj_3R_44() + private boolean jj_3R_46() { Token xsp; xsp = jj_scanpos; - if (jj_3R_69()) { + if (jj_3R_71()) { jj_scanpos = xsp; - if (jj_3R_70()) return true; + if (jj_3R_72()) return true; } while (true) { xsp = jj_scanpos; @@ -6996,36 +7351,41 @@ private boolean jj_3R_44() return false; } - private boolean jj_3R_93() + private boolean jj_3R_107() { - if (jj_3R_118()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_106()) return true; return false; } - private boolean jj_3R_105() + private boolean jj_3R_84() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_104()) return true; + if (jj_3R_109()) return true; + if (jj_3R_42()) return true; return false; } - private boolean jj_3R_94() + private boolean jj_3R_85() { - if (jj_3R_119()) return true; + if (jj_3R_110()) return true; return false; } - private boolean jj_3R_69() + private boolean jj_3R_71() { - if (jj_3R_100()) return true; + if (jj_3R_102()) return true; return false; } - private boolean jj_3R_52() + private boolean jj_3R_86() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_57()) return true; + if (jj_3R_111()) return true; + return false; + } + + private boolean jj_3R_87() + { + if (jj_3R_112()) return true; return false; } @@ -7036,51 +7396,69 @@ private boolean jj_3_8() return false; } - private boolean jj_3R_54() + private boolean jj_3R_88() + { + if (jj_3R_113()) return true; + return false; + } + + private boolean jj_3R_89() + { + if (jj_3R_114()) return true; + return false; + } + + private boolean jj_3R_56() { Token xsp; xsp = jj_scanpos; - if (jj_3R_78()) { + if (jj_3R_80()) { jj_scanpos = xsp; - if (jj_3R_79()) return true; + if (jj_3R_81()) return true; } return false; } - private boolean jj_3R_78() + private boolean jj_3R_80() { if (jj_scan_token(VOID)) return true; return false; } - private boolean jj_3R_79() + private boolean jj_3R_90() { - if (jj_3R_44()) return true; + if (jj_3R_115()) return true; return false; } - private boolean jj_3R_50() + private boolean jj_3R_81() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(49)) jj_scanpos = xsp; - if (jj_scan_token(LBRACE)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3_25()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACE)) return true; + if (jj_3R_46()) return true; return false; } - private boolean jj_3R_100() + private boolean jj_3R_91() + { + if (jj_3R_116()) return true; + return false; + } + + private boolean jj_3R_92() + { + if (jj_3R_117()) return true; + return false; + } + + private boolean jj_3R_93() + { + if (jj_3R_118()) return true; + return false; + } + + private boolean jj_3R_102() { Token xsp; xsp = jj_scanpos; - if (jj_3R_125()) { - jj_scanpos = xsp; - if (jj_3R_126()) { - jj_scanpos = xsp; if (jj_3R_127()) { jj_scanpos = xsp; if (jj_3R_128()) { @@ -7091,7 +7469,11 @@ private boolean jj_3R_100() jj_scanpos = xsp; if (jj_3R_131()) { jj_scanpos = xsp; - if (jj_3R_132()) return true; + if (jj_3R_132()) { + jj_scanpos = xsp; + if (jj_3R_133()) { + jj_scanpos = xsp; + if (jj_3R_134()) return true; } } } @@ -7102,297 +7484,280 @@ private boolean jj_3R_100() return false; } - private boolean jj_3R_125() + private boolean jj_3R_127() { if (jj_scan_token(BOOLEAN)) return true; return false; } - private boolean jj_3R_126() + private boolean jj_3R_128() { if (jj_scan_token(CHAR)) return true; return false; } - private boolean jj_3R_127() + private boolean jj_3R_94() { - if (jj_scan_token(BYTE)) return true; + if (jj_3R_119()) return true; return false; } - private boolean jj_3R_70() + private boolean jj_3R_129() { - if (jj_3R_38()) return true; + if (jj_scan_token(BYTE)) return true; return false; } - private boolean jj_3R_128() + private boolean jj_3R_72() { - if (jj_scan_token(SHORT)) return true; + if (jj_3R_40()) return true; return false; } - private boolean jj_3R_129() + private boolean jj_3R_130() { - if (jj_scan_token(INT)) return true; + if (jj_scan_token(SHORT)) return true; return false; } - private boolean jj_3R_130() + private boolean jj_3R_95() { - if (jj_scan_token(LONG)) return true; + if (jj_3R_120()) return true; return false; } private boolean jj_3R_131() { - if (jj_scan_token(FLOAT)) return true; + if (jj_scan_token(INT)) return true; return false; } private boolean jj_3R_132() { - if (jj_scan_token(DOUBLE)) return true; - return false; - } - - private boolean jj_3R_36() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_61()) { - jj_scanpos = xsp; - if (jj_3R_62()) { - jj_scanpos = xsp; - if (jj_3R_63()) { - jj_scanpos = xsp; - if (jj_3R_64()) { - jj_scanpos = xsp; - if (jj_3_30()) { - jj_scanpos = xsp; - if (jj_3R_65()) { - jj_scanpos = xsp; - if (jj_3R_66()) return true; - } - } - } - } - } - } - return false; - } - - private boolean jj_3R_61() - { - if (jj_3R_95()) return true; - return false; - } - - private boolean jj_3R_62() - { - if (jj_3R_96()) return true; - return false; - } - - private boolean jj_3R_38() - { - if (jj_scan_token(IDENTIFIER)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_9()) { jj_scanpos = xsp; break; } - } - return false; - } - - private boolean jj_3R_63() - { - if (jj_3R_96()) return true; + if (jj_scan_token(LONG)) return true; return false; } - private boolean jj_3_26() + private boolean jj_3R_96() { - if (jj_3R_53()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(14)) { - jj_scanpos = xsp; - if (jj_scan_token(38)) { - jj_scanpos = xsp; - if (jj_scan_token(25)) return true; - } - } + if (jj_3R_121()) return true; return false; } - private boolean jj_3_9() + private boolean jj_3R_133() { - if (jj_scan_token(DOT)) return true; - if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(FLOAT)) return true; return false; } - private boolean jj_3R_64() + private boolean jj_3R_134() { - if (jj_3R_97()) return true; - if (jj_3R_40()) return true; + if (jj_scan_token(DOUBLE)) return true; return false; } - private boolean jj_3_25() + private boolean jj_3R_54() { - if (jj_3R_36()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_59()) return true; return false; } - private boolean jj_3_27() + private boolean jj_3R_40() { - if (jj_3R_53()) return true; - if (jj_3R_54()) return true; if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(LPAREN)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_9()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3_30() + private boolean jj_3R_52() { - if (jj_3R_57()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(51)) jj_scanpos = xsp; + if (jj_scan_token(LBRACE)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_25()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_65() + private boolean jj_3_9() { - if (jj_3R_98()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_81() + private boolean jj_3R_83() { - if (jj_3R_38()) return true; + if (jj_3R_40()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_106()) { jj_scanpos = xsp; break; } + if (jj_3R_108()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_28() + private boolean jj_3R_38() { - if (jj_3R_53()) return true; - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_3R_55()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_56()) jj_scanpos = xsp; - if (jj_scan_token(LBRACE)) return true; + if (jj_3R_63()) { + jj_scanpos = xsp; + if (jj_3R_64()) { + jj_scanpos = xsp; + if (jj_3R_65()) { + jj_scanpos = xsp; + if (jj_3R_66()) { + jj_scanpos = xsp; + if (jj_3_30()) { + jj_scanpos = xsp; + if (jj_3R_67()) { + jj_scanpos = xsp; + if (jj_3R_68()) return true; + } + } + } + } + } + } return false; } - private boolean jj_3R_66() + private boolean jj_3R_63() { - if (jj_3R_99()) return true; + if (jj_3R_97()) return true; return false; } - private boolean jj_3_29() + private boolean jj_3R_64() { - if (jj_3R_53()) return true; - if (jj_3R_44()) return true; - if (jj_scan_token(IDENTIFIER)) return true; + if (jj_3R_98()) return true; return false; } - private boolean jj_3R_51() + private boolean jj_3R_53() { - if (jj_3R_76()) return true; + if (jj_3R_78()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_101()) jj_scanpos = xsp; + if (jj_3R_103()) jj_scanpos = xsp; return false; } - private boolean jj_3R_101() + private boolean jj_3R_65() { - if (jj_3R_134()) return true; - if (jj_3R_51()) return true; + if (jj_3R_98()) return true; return false; } - private boolean jj_3R_231() + private boolean jj_3R_103() + { + if (jj_3R_136()) return true; + if (jj_3R_53()) return true; + return false; + } + + private boolean jj_3_26() { + if (jj_3R_55()) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(81)) { + if (jj_scan_token(14)) { jj_scanpos = xsp; - jj_lookingAhead = true; - jj_semLA = isImplicitMethodTerminator(); - jj_lookingAhead = false; - if (!jj_semLA || jj_3R_240()) return true; + if (jj_scan_token(40)) { + jj_scanpos = xsp; + if (jj_scan_token(25)) return true; + } } return false; } - private boolean jj_3R_240() + private boolean jj_3R_108() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_40()) return true; return false; } - private boolean jj_3R_106() + private boolean jj_3R_66() + { + if (jj_3R_99()) return true; + if (jj_3R_42()) return true; + return false; + } + + private boolean jj_3_25() { - if (jj_scan_token(COMMA)) return true; if (jj_3R_38()) return true; return false; } - private boolean jj_3R_134() + private boolean jj_3_27() + { + if (jj_3R_55()) return true; + if (jj_3R_56()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + private boolean jj_3R_136() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(84)) { - jj_scanpos = xsp; - if (jj_scan_token(125)) { + if (jj_scan_token(87)) { jj_scanpos = xsp; - if (jj_scan_token(135)) { + if (jj_scan_token(128)) { jj_scanpos = xsp; - if (jj_scan_token(136)) { + if (jj_scan_token(138)) { jj_scanpos = xsp; - if (jj_scan_token(126)) { + if (jj_scan_token(139)) { jj_scanpos = xsp; - if (jj_scan_token(133)) { + if (jj_scan_token(129)) { jj_scanpos = xsp; - if (jj_scan_token(134)) { + if (jj_scan_token(136)) { jj_scanpos = xsp; - if (jj_scan_token(123)) { + if (jj_scan_token(137)) { jj_scanpos = xsp; - if (jj_scan_token(124)) { + if (jj_scan_token(126)) { jj_scanpos = xsp; if (jj_scan_token(127)) { jj_scanpos = xsp; - if (jj_scan_token(128)) { + if (jj_scan_token(130)) { jj_scanpos = xsp; if (jj_scan_token(131)) { jj_scanpos = xsp; - if (jj_scan_token(132)) { + if (jj_scan_token(134)) { jj_scanpos = xsp; - if (jj_scan_token(129)) { + if (jj_scan_token(135)) { jj_scanpos = xsp; - if (jj_scan_token(130)) { + if (jj_scan_token(132)) { jj_scanpos = xsp; - if (jj_scan_token(137)) { + if (jj_scan_token(133)) { jj_scanpos = xsp; - if (jj_scan_token(138)) { + if (jj_scan_token(140)) { jj_scanpos = xsp; - if (jj_scan_token(139)) { + if (jj_scan_token(141)) { jj_scanpos = xsp; - if (jj_scan_token(145)) { + if (jj_scan_token(142)) { jj_scanpos = xsp; - if (jj_scan_token(140)) { + if (jj_scan_token(148)) { jj_scanpos = xsp; - if (jj_scan_token(141)) { + if (jj_scan_token(143)) { jj_scanpos = xsp; - if (jj_scan_token(142)) return true; + if (jj_scan_token(144)) { + jj_scanpos = xsp; + if (jj_scan_token(145)) return true; } } } @@ -7417,151 +7782,133 @@ private boolean jj_3R_134() return false; } - private boolean jj_3R_40() + private boolean jj_3_30() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(81)) jj_scanpos = xsp; + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_56() + private boolean jj_3R_67() { - if (jj_scan_token(THROWS)) return true; - if (jj_3R_81()) return true; + if (jj_3R_100()) return true; return false; } - private boolean jj_3R_76() + private boolean jj_3_28() { - if (jj_3R_103()) return true; + if (jj_3R_55()) return true; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_3R_57()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_133()) jj_scanpos = xsp; + if (jj_3R_58()) jj_scanpos = xsp; + if (jj_scan_token(LBRACE)) return true; return false; } - private boolean jj_3R_107() + private boolean jj_3R_68() { - if (jj_3R_51()) return true; + if (jj_3R_101()) return true; return false; } - private boolean jj_3R_103() + private boolean jj_3_29() { - if (jj_3R_137()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_143()) { jj_scanpos = xsp; break; } - } + if (jj_3R_55()) return true; + if (jj_3R_46()) return true; + if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_143() + private boolean jj_3R_78() { + if (jj_3R_105()) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(146)) { - jj_scanpos = xsp; - if (jj_scan_token(147)) { - jj_scanpos = xsp; - if (jj_scan_token(144)) return true; - } - } - if (jj_3R_137()) return true; + if (jj_3R_135()) jj_scanpos = xsp; return false; } - private boolean jj_3R_137() + private boolean jj_3R_105() { - if (jj_3R_145()) return true; + if (jj_3R_139()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_146()) { jj_scanpos = xsp; break; } + if (jj_3R_145()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_146() + private boolean jj_3R_242() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(97)) { + if (jj_scan_token(84)) { jj_scanpos = xsp; - if (jj_scan_token(98)) return true; + jj_lookingAhead = true; + jj_semLA = isImplicitMethodTerminator(); + jj_lookingAhead = false; + if (!jj_semLA || jj_3R_251()) return true; } - if (jj_3R_145()) return true; return false; } - private boolean jj_3R_108() + private boolean jj_3R_145() { - if (jj_scan_token(SWITCH)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_scan_token(LBRACE)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_241()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_scan_token(149)) { + jj_scanpos = xsp; + if (jj_scan_token(150)) { + jj_scanpos = xsp; + if (jj_scan_token(147)) return true; } - if (jj_scan_token(RBRACE)) return true; + } + if (jj_3R_139()) return true; return false; } - private boolean jj_3R_145() + private boolean jj_3R_251() { - if (jj_3R_147()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_148()) { jj_scanpos = xsp; break; } - } return false; } - private boolean jj_3R_148() + private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(99)) { - jj_scanpos = xsp; - if (jj_scan_token(100)) return true; - } - if (jj_3R_147()) return true; + if (jj_scan_token(84)) jj_scanpos = xsp; return false; } - private boolean jj_3R_241() + private boolean jj_3R_139() { - if (jj_3R_250()) return true; + if (jj_3R_147()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_31()) { jj_scanpos = xsp; break; } + if (jj_3R_148()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_250() + private boolean jj_3R_148() { Token xsp; xsp = jj_scanpos; - if (jj_3R_257()) { + if (jj_scan_token(100)) { jj_scanpos = xsp; - if (jj_3R_258()) return true; + if (jj_scan_token(101)) return true; } + if (jj_3R_147()) return true; return false; } - private boolean jj_3R_257() + private boolean jj_3R_58() { - if (jj_scan_token(CASE)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(COLON)) return true; + if (jj_scan_token(THROWS)) return true; + if (jj_3R_83()) return true; return false; } @@ -7576,9 +7923,9 @@ private boolean jj_3R_147() return false; } - private boolean jj_3R_258() + private boolean jj_3R_109() { - if (jj_scan_token(153)) return true; + if (jj_3R_53()) return true; return false; } @@ -7586,117 +7933,88 @@ private boolean jj_3R_150() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(109)) { + if (jj_scan_token(102)) { jj_scanpos = xsp; - if (jj_scan_token(110)) return true; + if (jj_scan_token(103)) return true; } if (jj_3R_149()) return true; return false; } - private boolean jj_3R_133() - { - if (jj_scan_token(HOOK)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_76()) return true; - return false; - } - private boolean jj_3R_149() { if (jj_3R_151()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_156()) { jj_scanpos = xsp; break; } + if (jj_3R_152()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_31() - { - if (jj_3R_36()) return true; - return false; - } - - private boolean jj_3R_109() + private boolean jj_3R_152() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_242()) { + if (jj_scan_token(112)) { jj_scanpos = xsp; - if (jj_3_32()) return true; + if (jj_scan_token(113)) return true; } - xsp = jj_scanpos; - if (jj_3R_243()) jj_scanpos = xsp; + if (jj_3R_151()) return true; return false; } - private boolean jj_3R_156() + private boolean jj_3R_135() { + if (jj_scan_token(HOOK)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_78()) return true; + return false; + } + + private boolean jj_3R_151() + { + if (jj_3R_153()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(111)) { - jj_scanpos = xsp; - if (jj_scan_token(112)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_158()) { jj_scanpos = xsp; break; } } - if (jj_3R_151()) return true; return false; } private boolean jj_3R_110() { - if (jj_scan_token(WHILE)) return true; + if (jj_scan_token(SWITCH)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; if (jj_scan_token(RPAREN)) return true; - if (jj_3R_57()) return true; - return false; - } - - private boolean jj_3R_151() - { - if (jj_3R_157()) return true; + if (jj_scan_token(LBRACE)) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_159()) { jj_scanpos = xsp; break; } + if (jj_3R_252()) { jj_scanpos = xsp; break; } } + if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_159() + private boolean jj_3R_158() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(107)) { + if (jj_scan_token(114)) { jj_scanpos = xsp; - if (jj_scan_token(108)) return true; + if (jj_scan_token(115)) return true; } - if (jj_3R_157()) return true; - return false; - } - - private boolean jj_3R_111() - { - if (jj_scan_token(DO)) return true; - if (jj_3R_57()) return true; - if (jj_scan_token(WHILE)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_3R_40()) return true; + if (jj_3R_153()) return true; return false; } - private boolean jj_3R_157() + private boolean jj_3R_153() { - if (jj_3R_160()) return true; + if (jj_3R_159()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -7709,149 +8027,142 @@ private boolean jj_3R_161() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(91)) { + if (jj_scan_token(110)) { jj_scanpos = xsp; - if (jj_scan_token(96)) return true; + if (jj_scan_token(111)) return true; } - if (jj_3R_160()) return true; + if (jj_3R_159()) return true; return false; } - private boolean jj_3R_112() + private boolean jj_3R_252() { - if (jj_scan_token(FOR)) return true; - if (jj_scan_token(LPAREN)) return true; + if (jj_3R_261()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_244()) jj_scanpos = xsp; - if (jj_scan_token(SEMICOLON)) return true; - xsp = jj_scanpos; - if (jj_3R_245()) jj_scanpos = xsp; - if (jj_scan_token(SEMICOLON)) return true; - xsp = jj_scanpos; - if (jj_3R_246()) jj_scanpos = xsp; - if (jj_scan_token(RPAREN)) return true; - if (jj_3R_57()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_31()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_160() + private boolean jj_3R_261() { - if (jj_3R_162()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_163()) jj_scanpos = xsp; + if (jj_3R_268()) { + jj_scanpos = xsp; + if (jj_3R_269()) return true; + } return false; } - private boolean jj_3R_242() + private boolean jj_3R_268() { - if (jj_scan_token(SEMICOLON)) return true; + if (jj_scan_token(CASE)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(COLON)) return true; return false; } - private boolean jj_3R_163() + private boolean jj_3R_269() { - if (jj_scan_token(INSTANCEOF)) return true; - if (jj_3R_44()) return true; + if (jj_scan_token(156)) return true; return false; } - private boolean jj_3R_245() + private boolean jj_3R_159() { - if (jj_3R_51()) return true; + if (jj_3R_162()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_163()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_162() + private boolean jj_3R_163() { - if (jj_3R_164()) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_165()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_scan_token(94)) { + jj_scanpos = xsp; + if (jj_scan_token(99)) return true; } + if (jj_3R_162()) return true; return false; } - private boolean jj_3R_246() + private boolean jj_3_31() { - if (jj_3R_252()) return true; + if (jj_3R_38()) return true; return false; } - private boolean jj_3R_165() + private boolean jj_3R_111() { + if (jj_scan_token(IF)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(87)) { - jj_scanpos = xsp; - if (jj_scan_token(88)) { - jj_scanpos = xsp; - if (jj_scan_token(85)) { - jj_scanpos = xsp; - if (jj_scan_token(86)) { - jj_scanpos = xsp; - if (jj_scan_token(92)) { - jj_scanpos = xsp; - if (jj_scan_token(93)) { + if (jj_3R_253()) { jj_scanpos = xsp; - if (jj_scan_token(94)) { - jj_scanpos = xsp; - if (jj_scan_token(95)) return true; - } - } - } - } - } - } + if (jj_3_32()) return true; } - if (jj_3R_164()) return true; + xsp = jj_scanpos; + if (jj_3R_254()) jj_scanpos = xsp; return false; } - private boolean jj_3R_244() + private boolean jj_3R_162() { - if (jj_3R_251()) return true; + if (jj_3R_164()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_165()) jj_scanpos = xsp; return false; } - private boolean jj_3_33() + private boolean jj_3R_165() { - if (jj_scan_token(FOR)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_51()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_3R_57()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_168()) { + jj_scanpos = xsp; + if (jj_3R_169()) return true; + } return false; } - private boolean jj_3R_113() + private boolean jj_3R_168() { Token xsp; xsp = jj_scanpos; - if (jj_3_33()) { + if (jj_scan_token(36)) { jj_scanpos = xsp; - if (jj_3R_140()) return true; + if (jj_scan_token(37)) return true; } + if (jj_3R_46()) return true; return false; } - private boolean jj_3R_140() + private boolean jj_3R_112() { - if (jj_scan_token(FOR)) return true; + if (jj_scan_token(WHILE)) return true; if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_253()) jj_scanpos = xsp; - if (jj_3R_44()) return true; - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_51()) return true; + if (jj_3R_53()) return true; if (jj_scan_token(RPAREN)) return true; - if (jj_3R_57()) return true; + if (jj_3R_59()) return true; + return false; + } + + private boolean jj_3R_169() + { + if (jj_scan_token(AS)) return true; + if (jj_3R_46()) return true; return false; } @@ -7866,21 +8177,39 @@ private boolean jj_3R_164() return false; } + private boolean jj_3R_113() + { + if (jj_scan_token(DO)) return true; + if (jj_3R_59()) return true; + if (jj_scan_token(WHILE)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_53()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_42()) return true; + return false; + } + private boolean jj_3R_167() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(117)) { + if (jj_scan_token(90)) { jj_scanpos = xsp; - if (jj_scan_token(118)) { + if (jj_scan_token(91)) { jj_scanpos = xsp; - if (jj_scan_token(119)) { + if (jj_scan_token(88)) { jj_scanpos = xsp; - if (jj_scan_token(120)) { + if (jj_scan_token(89)) { jj_scanpos = xsp; - if (jj_scan_token(121)) { + if (jj_scan_token(95)) { + jj_scanpos = xsp; + if (jj_scan_token(96)) { jj_scanpos = xsp; - if (jj_scan_token(122)) return true; + if (jj_scan_token(97)) { + jj_scanpos = xsp; + if (jj_scan_token(98)) return true; + } + } } } } @@ -7890,55 +8219,62 @@ private boolean jj_3R_167() return false; } - private boolean jj_3R_251() + private boolean jj_3R_114() { + if (jj_scan_token(FOR)) return true; + if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_259()) { - jj_scanpos = xsp; - if (jj_3R_260()) return true; - } - return false; - } - - private boolean jj_3R_259() - { - if (jj_3R_97()) return true; - return false; - } - - private boolean jj_3R_260() - { - if (jj_3R_261()) return true; + if (jj_3R_255()) jj_scanpos = xsp; + if (jj_scan_token(SEMICOLON)) return true; + xsp = jj_scanpos; + if (jj_3R_256()) jj_scanpos = xsp; + if (jj_scan_token(SEMICOLON)) return true; + xsp = jj_scanpos; + if (jj_3R_257()) jj_scanpos = xsp; + if (jj_scan_token(RPAREN)) return true; + if (jj_3R_59()) return true; return false; } private boolean jj_3R_166() { - if (jj_3R_168()) return true; + if (jj_3R_170()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_169()) { jj_scanpos = xsp; break; } + if (jj_3R_171()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_253() - { - if (jj_scan_token(FINAL)) return true; - return false; - } - - private boolean jj_3R_169() + private boolean jj_3R_171() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(103)) { + if (jj_scan_token(120)) { + jj_scanpos = xsp; + if (jj_scan_token(121)) { jj_scanpos = xsp; - if (jj_scan_token(104)) return true; + if (jj_scan_token(122)) { + jj_scanpos = xsp; + if (jj_scan_token(123)) { + jj_scanpos = xsp; + if (jj_scan_token(124)) { + jj_scanpos = xsp; + if (jj_scan_token(125)) return true; + } + } + } } - if (jj_3R_168()) return true; + } + if (jj_3R_170()) return true; + return false; + } + + private boolean jj_3R_253() + { + if (jj_scan_token(SEMICOLON)) return true; return false; } @@ -7956,7 +8292,7 @@ private boolean jj_3R_169() private boolean jj_lookingAhead = false; private boolean jj_semLA; private int jj_gen; - final private int[] jj_la1 = new int[119]; + final private int[] jj_la1 = new int[124]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -7970,19 +8306,19 @@ private boolean jj_3R_169() jj_la1_init_4(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0x1,0x10200800,0x10200800,0x4000000,0x0,0x4000000,0x4000,0x0,0x2004000,0x0,0x0,0x0,0x0,0x0,0x40849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48849000,0x48849000,0x0,0x0,0x50849000,0x10000000,0x0,0x0,0x40849000,0x40849000,0x40849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48849000,0x0,0x48849000,0x8000000,0x0,0x48849000,0x48849000,0x48849000,0x48849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x48849000,0x0,0x0,0x40849000,0x0,0x0,0x0,0x48c49000,0x80102000,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x1000000,0x58a49800,0x48849000,0x48849000,0x10000000,0x80000000,0x48849000,0x0,0x0,0x0,0x20000,0x20000000,0x10000000,0x0,0x0,0x0,0x0,}; + jj_la1_0 = new int[] {0x1,0x10200800,0x10200800,0x4000000,0x0,0x4000000,0x4000,0x0,0x2004000,0x0,0x0,0x0,0x0,0x0,0x40849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48849000,0x48849000,0x0,0x0,0x50849000,0x10000000,0x0,0x0,0x40849000,0x40849000,0x40849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48849000,0x0,0x48849000,0x49849000,0x0,0x49849000,0x8000000,0x0,0x48849000,0x48849000,0x48849000,0x48849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x48849000,0x0,0x0,0x40849000,0x0,0x0,0x0,0x48c49000,0x80102000,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x1000000,0x58a49800,0x48849000,0x48849000,0x10000000,0x80000000,0x48849000,0x0,0x0,0x0,0x20000,0x20000000,0x10000000,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x8367100,0x8367100,0x0,0x4,0x0,0x40,0x4,0x40,0x0,0x20000,0x0,0x0,0x0,0x40100a0,0x800000,0x20000,0x20000,0x0,0x8,0x0,0x0,0x250106a0,0x250106a0,0x0,0x0,0x100a0,0x0,0x0,0x0,0x100a0,0x40100a0,0x100a0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x250106a0,0x0,0x250306a0,0x25000600,0x0,0x250106a0,0x250106a0,0x250106a0,0x250106a0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x25000400,0x1000000,0x250106a0,0x0,0x0,0x100a0,0x200,0x0,0x0,0x350906a2,0x2508000,0x20000,0x808,0x0,0x0,0x0,0x0,0x0,0x0,0x2d3777a0,0x250106a0,0x250106a0,0x0,0x0,0x250106a0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_1 = new int[] {0x0,0x20d9c400,0x20d9c400,0x0,0x4,0x0,0x100,0x4,0x100,0x0,0x80000,0x0,0x0,0x0,0x10040280,0x2000000,0x80000,0x80000,0x0,0x8,0x0,0x0,0x54041a80,0x54041a80,0x0,0x0,0x40280,0x0,0x0,0x0,0x40280,0x10040280,0x40280,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x70,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54041a80,0x0,0x540c1a80,0x54041a80,0x0,0x54041a80,0x54001800,0x0,0x54041a80,0x54041a80,0x54041a80,0x54041a80,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x14001000,0x4000000,0x54041a80,0x0,0x0,0x40280,0x800,0x0,0x0,0xd4241a82,0x9420000,0x80000,0x2008,0x0,0x0,0x0,0x0,0x0,0x0,0x74ddde80,0x54041a80,0x54041a80,0x0,0x0,0x54041a80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_2() { - jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x2000,0x100,0x40000,0x20000,0x100,0x0,0x2000,0x0,0x80000,0x0,0x8000,0x100000,0x600a9e4,0x600a9e4,0x40000,0x40000,0x100,0x0,0x0,0x100,0x100,0x100,0x0,0x40000,0x100000,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x0,0xf1e00000,0xf1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x0,0x6000000,0xa9e4,0x900,0x600a9e4,0xa8e4,0x100,0x600a9e4,0x600a9e4,0x600a9e4,0x600a9e4,0x0,0x0,0x0,0x100,0x800,0x800,0x8000,0x2000,0xe4,0x0,0x600a9e4,0x40000,0xa800,0xa100,0xa000,0x8000,0xa000,0x602a9e4,0x0,0x0,0x0,0x20000,0x20000,0x0,0x0,0x20000,0x0,0x600a9e4,0x600a9e4,0x600a9e4,0x0,0x0,0x600a9e4,0x40000,0x40000,0x800,0x0,0x0,0x0,0x0,0x100,0x20000,0x100,}; + jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x10000,0x800,0x200000,0x100000,0x800,0x0,0x10000,0x0,0x400000,0x0,0x40000,0x800000,0x30054f21,0x30054f21,0x200000,0x200000,0x800,0x0,0x0,0x800,0x800,0x800,0x0,0x200000,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x40000000,0x0,0x0,0x0,0x8f000000,0x8f000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0x0,0x30000000,0x54f21,0x4800,0x30054f21,0x30054f21,0x200000,0x30054f21,0x54721,0x800,0x30054f21,0x30054f21,0x30054f21,0x30054f21,0x0,0x0,0x0,0x800,0x4000,0x4000,0x40000,0x10000,0x721,0x0,0x30054f21,0x200000,0x54000,0x50800,0x50000,0x40000,0x50000,0x30154f21,0x0,0x0,0x0,0x100000,0x100000,0x0,0x0,0x100000,0x0,0x30054f21,0x30054f21,0x30054f21,0x0,0x0,0x30054f21,0x200000,0x200000,0x4000,0x0,0x0,0x0,0x0,0x800,0x100000,0x800,}; } private static void jj_la1_init_3() { - jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0,0x1e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000000,0xf8000000,0x0,0x0,0x0,0x6,0x6,0x18,0x18,0x6000,0x6000,0x18000,0x18000,0x1800,0x1800,0x1,0x1,0x0,0x0,0x0,0x7e00000,0x7e00000,0x180,0x180,0x60600,0x60600,0x180000,0x180000,0x180,0x60,0x60,0x60,0x1e0,0x0,0x0,0x1e0,0x0,0x0,0x1e0,0x1e0,0x1e0,0x1e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0,0x1e0,0x1e0,0x0,0x0,0x1e0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,}; + jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf00,0xf00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000000,0xc0000000,0x0,0x0,0x0,0x30,0x30,0xc0,0xc0,0x30000,0x30000,0xc0000,0xc0000,0xc000,0xc000,0x8,0x8,0x0,0x0,0x0,0x7,0x7,0x3f000000,0x3f000000,0xc00,0xc00,0x303000,0x303000,0xc00000,0xc00000,0xc00,0x300,0x300,0x300,0xf00,0x0,0x0,0xf00,0xf00,0x0,0xf00,0x0,0x0,0xf00,0xf00,0xf00,0xf00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf00,0x0,0x0,0x0,0x0,0x0,0x0,0xf00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf00,0xf00,0xf00,0x0,0x0,0xf00,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x0,0x0,0x0,}; } private static void jj_la1_init_4() { - jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x27fff,0x27fff,0x100000,0xd0000,0xd0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x13ffff,0x13ffff,0x800000,0x680000,0x680000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private final JJCalls[] jj_2_rtns = new JJCalls[38]; private boolean jj_rescan = false; @@ -7999,7 +8335,7 @@ public Parser(final java.io.InputStream stream, final java.nio.charset.Charset e token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) jj_la1[i] = -1; + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -8014,7 +8350,7 @@ public void ReInit(final java.io.InputStream stream, final java.nio.charset.Char token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) jj_la1[i] = -1; + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -8028,7 +8364,7 @@ public Parser(final java.io.Reader stream) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -8052,7 +8388,7 @@ public void ReInit(final java.io.Reader stream) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -8067,7 +8403,7 @@ public Parser(final ParserTokenManager tm) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) jj_la1[i] = -1; + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -8080,7 +8416,7 @@ public void ReInit(final ParserTokenManager tm) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 119; i++) jj_la1[i] = -1; + for (int i = 0; i < 124; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -8225,12 +8561,12 @@ private void jj_add_error_token(int kind, int pos) { */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[154]; + boolean[] la1tokens = new boolean[157]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 119; i++) { + for (int i = 0; i < 124; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTokenManager.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTokenManager.java index 6945b53..3925eb9 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTokenManager.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTokenManager.java @@ -38,140 +38,140 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1, switch (pos) { case 0: - if ((active1 & 0x20000010800000L) != 0x0L || (active2 & 0x10200L) != 0x0L) + if ((active1 & 0x100000084000000L) != 0x0L || (active2 & 0x81000L) != 0x0L) return 75; - if ((active1 & 0x80000L) != 0x0L || (active2 & 0x800000L) != 0x0L) + if ((active1 & 0x400000L) != 0x0L || (active2 & 0x4000000L) != 0x0L) return 18; - if ((active1 & 0x4000040000000000L) != 0x0L) + if ((active1 & 0x200000000000L) != 0x0L || (active2 & 0x2L) != 0x0L) return 64; - if ((active0 & 0x1ffffffffffff800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active0 & 0xfffffffffffff800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { - jjmatchedKind = 72; + jjmatchedKind = 75; return 42; } if ((active0 & 0x3eL) != 0x0L) return 0; return -1; case 1: - if ((active0 & 0x1ffffffdff3ff800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active1 & 0x100000000000000L) != 0x0L || (active2 & 0x1000L) != 0x0L) + return 75; + if ((active0 & 0x6200c00000L) != 0x0L) + return 42; + if ((active0 & 0xffffff9dff3ff800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { if (jjmatchedPos != 1) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 1; } return 42; } - if ((active1 & 0x20000000000000L) != 0x0L || (active2 & 0x200L) != 0x0L) - return 75; - if ((active0 & 0x200c00000L) != 0x0L) - return 42; return -1; case 2: - if ((active0 & 0x200026080000000L) != 0x0L) - return 42; - if ((active0 & 0x1dfffd9d7fbff800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active0 & 0xf7fff61d7fbff800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { if (jjmatchedPos != 2) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 2; } return 42; } + if ((active0 & 0x800098080000000L) != 0x0L) + return 42; return -1; case 3: - if ((active0 & 0x500048103058000L) != 0x0L) + if ((active0 & 0x5400120103058000L) != 0x0L) return 42; - if ((active0 & 0x18fff95c7cba7800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active0 & 0xa3ffe51c7cba7800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { if (jjmatchedPos != 3) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 3; } return 42; } return -1; case 4: - if ((active0 & 0x10c10000780a6000L) != 0x0L) + if ((active0 & 0x83040000780a6000L) != 0x0L) return 42; - if ((active0 & 0x83ef95c04b01800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active0 & 0x20fbe51c04b01800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { if (jjmatchedPos != 4) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 4; } return 42; } return -1; case 5: - if ((active0 & 0x834385424301800L) != 0x0L || (active2 & 0x2000000L) != 0x0L) + if ((active0 & 0x22b040800800000L) != 0x0L) + return 42; + if ((active0 & 0x20d0e11424301800L) != 0x0L || (active2 & 0x10000000L) != 0x0L) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 5; return 42; } - if ((active0 & 0x8ac10800800000L) != 0x0L) - return 42; return -1; case 6: - if ((active0 & 0x180024201000L) != 0x0L || (active2 & 0x2000000L) != 0x0L) - return 42; - if ((active0 & 0x834205400100800L) != 0x0L) + if ((active0 & 0x20d0811400100800L) != 0x0L) { if (jjmatchedPos != 6) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 6; } return 42; } + if ((active0 & 0x600024201000L) != 0x0L || (active2 & 0x10000000L) != 0x0L) + return 42; return -1; case 7: - if ((active0 & 0x804000000100800L) != 0x0L) + if ((active0 & 0x2010000000100800L) != 0x0L) return 42; - if ((active0 & 0x30205400000000L) != 0x0L) + if ((active0 & 0xc0811400000000L) != 0x0L) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 7; return 42; } return -1; case 8: - if ((active0 & 0x20204000000000L) != 0x0L) + if ((active0 & 0x80810000000000L) != 0x0L) return 42; - if ((active0 & 0x10001400000000L) != 0x0L) + if ((active0 & 0x40001400000000L) != 0x0L) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 8; return 42; } return -1; case 9: - if ((active0 & 0x10000000000000L) != 0x0L) + if ((active0 & 0x1400000000L) != 0x0L) + return 42; + if ((active0 & 0x40000000000000L) != 0x0L) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 9; return 42; } - if ((active0 & 0x1400000000L) != 0x0L) - return 42; return -1; case 10: - if ((active0 & 0x10000000000000L) != 0x0L) + if ((active0 & 0x40000000000000L) != 0x0L) { if (jjmatchedPos != 10) { - jjmatchedKind = 72; + jjmatchedKind = 75; jjmatchedPos = 10; } return 42; } return -1; case 11: - if ((active0 & 0x10000000000000L) != 0x0L) + if ((active0 & 0x40000000000000L) != 0x0L) return 42; return -1; default : @@ -201,69 +201,69 @@ private int jjMoveStringLiteralDfa0_0(){ case ' ': return jjStartNfaWithStates_0(0, 1, 0); case '!': - jjmatchedKind = 89; - return jjMoveStringLiteralDfa1_0(0x0L, 0x100000000L, 0x0L); + jjmatchedKind = 92; + return jjMoveStringLiteralDfa1_0(0x0L, 0x800000000L, 0x0L); case '%': - jjmatchedKind = 113; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x20L); + jjmatchedKind = 116; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x100L); case '&': - jjmatchedKind = 107; - return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000800000000L, 0x0L); + jjmatchedKind = 110; + return jjMoveStringLiteralDfa1_0(0x0L, 0x4000000000L, 0x4L); case '(': - return jjStopAtPos(0, 75); + return jjStopAtPos(0, 78); case ')': - return jjStopAtPos(0, 76); + return jjStopAtPos(0, 79); case '*': - jjmatchedKind = 105; - return jjMoveStringLiteralDfa1_0(0x0L, 0x2008000000000000L, 0x80L); + jjmatchedKind = 108; + return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000000000L, 0x401L); case '+': - jjmatchedKind = 103; - return jjMoveStringLiteralDfa1_0(0x0L, 0x800002000000000L, 0x0L); + jjmatchedKind = 106; + return jjMoveStringLiteralDfa1_0(0x0L, 0x4000010000000000L, 0x0L); case ',': - return jjStopAtPos(0, 82); + return jjStopAtPos(0, 85); case '-': - jjmatchedKind = 104; - return jjMoveStringLiteralDfa1_0(0x0L, 0x1000004000000000L, 0x8000L); + jjmatchedKind = 107; + return jjMoveStringLiteralDfa1_0(0x0L, 0x8000020000000000L, 0x40000L); case '.': - jjmatchedKind = 83; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x800000L); + jjmatchedKind = 86; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x4000000L); case '/': - jjmatchedKind = 106; - return jjMoveStringLiteralDfa1_0(0x0L, 0x4000000000000000L, 0x0L); + jjmatchedKind = 109; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x2L); case ':': - jjmatchedKind = 149; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x400000L); + jjmatchedKind = 152; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x2000000L); case ';': - return jjStopAtPos(0, 81); + return jjStopAtPos(0, 84); case '<': - jjmatchedKind = 87; - return jjMoveStringLiteralDfa1_0(0x0L, 0x20000010000000L, 0x10200L); + jjmatchedKind = 90; + return jjMoveStringLiteralDfa1_0(0x0L, 0x100000080000000L, 0x81000L); case '=': - jjmatchedKind = 84; - return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000L, 0x0L); + jjmatchedKind = 87; + return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000L, 0x0L); case '>': - jjmatchedKind = 85; - return jjMoveStringLiteralDfa1_0(0x0L, 0x280000040000000L, 0x2800L); + jjmatchedKind = 88; + return jjMoveStringLiteralDfa1_0(0x0L, 0x1400000200000000L, 0x14000L); case '?': - jjmatchedKind = 148; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x10e0000L); + jjmatchedKind = 151; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x8700000L); case '@': - return jjMoveStringLiteralDfa1_0(0x0L, 0x5555014a1400000L, 0x5555L); + return jjMoveStringLiteralDfa1_0(0x0L, 0x2aaa80a50a000000L, 0x2aaa8L); case '[': - return jjStopAtPos(0, 79); + return jjStopAtPos(0, 82); case ']': - return jjStopAtPos(0, 80); + return jjStopAtPos(0, 83); case '^': - jjmatchedKind = 111; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x8L); + jjmatchedKind = 114; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x40L); case 'a': - return jjMoveStringLiteralDfa1_0(0x800L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x4000000800L, 0x0L, 0x0L); case 'b': return jjMoveStringLiteralDfa1_0(0xb000L, 0x0L, 0x0L); case 'c': return jjMoveStringLiteralDfa1_0(0x1f4000L, 0x0L, 0x0L); case 'd': - return jjMoveStringLiteralDfa1_0(0xe00000L, 0x0L, 0x2000000L); + return jjMoveStringLiteralDfa1_0(0xe00000L, 0x0L, 0x10000000L); case 'e': return jjMoveStringLiteralDfa1_0(0x7000000L, 0x0L, 0x0L); case 'f': @@ -271,32 +271,32 @@ private int jjMoveStringLiteralDfa0_0(){ case 'g': return jjMoveStringLiteralDfa1_0(0x100000000L, 0x0L, 0x0L); case 'i': - return jjMoveStringLiteralDfa1_0(0x7e00000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x1be00000000L, 0x0L, 0x0L); case 'l': - return jjMoveStringLiteralDfa1_0(0x8000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x20000000000L, 0x0L, 0x0L); case 'n': - return jjMoveStringLiteralDfa1_0(0x70000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x1c0000000000L, 0x0L, 0x0L); case 'p': - return jjMoveStringLiteralDfa1_0(0x780000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x1e00000000000L, 0x0L, 0x0L); case 'r': - return jjMoveStringLiteralDfa1_0(0x800000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x2000000000000L, 0x0L, 0x0L); case 's': - return jjMoveStringLiteralDfa1_0(0x1f000000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x7c000000000000L, 0x0L, 0x0L); case 't': - return jjMoveStringLiteralDfa1_0(0x3e0000000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0xf80000000000000L, 0x0L, 0x0L); case 'v': - return jjMoveStringLiteralDfa1_0(0xc00000000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0x3000000000000000L, 0x0L, 0x0L); case 'w': - return jjMoveStringLiteralDfa1_0(0x1000000000000000L, 0x0L, 0x0L); + return jjMoveStringLiteralDfa1_0(0xc000000000000000L, 0x0L, 0x0L); case '{': - return jjStopAtPos(0, 77); + return jjStopAtPos(0, 80); case '|': - jjmatchedKind = 109; - return jjMoveStringLiteralDfa1_0(0x0L, 0x200000000L, 0x2L); + jjmatchedKind = 112; + return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000L, 0x10L); case '}': - return jjStopAtPos(0, 78); + return jjStopAtPos(0, 81); case '~': - return jjStopAtPos(0, 90); + return jjStopAtPos(0, 93); default : return jjMoveNfa_0(1, 0); } @@ -310,132 +310,138 @@ private int jjMoveStringLiteralDfa1_0(long active0, long active1, long active2){ switch(curChar) { case '&': - if ((active1 & 0x800000000L) != 0x0L) - return jjStopAtPos(1, 99); + if ((active1 & 0x4000000000L) != 0x0L) + return jjStopAtPos(1, 102); break; case '*': - if ((active1 & 0x8000000000000L) != 0x0L) + if ((active1 & 0x40000000000000L) != 0x0L) { - jjmatchedKind = 115; + jjmatchedKind = 118; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x80L); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x400L); case '+': - if ((active1 & 0x2000000000L) != 0x0L) - return jjStopAtPos(1, 101); + if ((active1 & 0x10000000000L) != 0x0L) + return jjStopAtPos(1, 104); break; case '-': - if ((active1 & 0x4000000000L) != 0x0L) - return jjStopAtPos(1, 102); + if ((active1 & 0x20000000000L) != 0x0L) + return jjStopAtPos(1, 105); break; case '.': - if ((active2 & 0x1000000L) != 0x0L) - return jjStopAtPos(1, 152); - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x800000L); + if ((active2 & 0x8000000L) != 0x0L) + return jjStopAtPos(1, 155); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x4000000L); case ':': - if ((active2 & 0x80000L) != 0x0L) - return jjStopAtPos(1, 147); - else if ((active2 & 0x400000L) != 0x0L) + if ((active2 & 0x400000L) != 0x0L) return jjStopAtPos(1, 150); + else if ((active2 & 0x2000000L) != 0x0L) + return jjStopAtPos(1, 153); break; case '<': - if ((active1 & 0x20000000000000L) != 0x0L) + if ((active1 & 0x100000000000000L) != 0x0L) { - jjmatchedKind = 117; + jjmatchedKind = 120; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x200L); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x1000L); case '=': - if ((active1 & 0x8000000L) != 0x0L) - return jjStopAtPos(1, 91); - else if ((active1 & 0x10000000L) != 0x0L) + if ((active1 & 0x40000000L) != 0x0L) + return jjStopAtPos(1, 94); + else if ((active1 & 0x80000000L) != 0x0L) { - jjmatchedKind = 92; + jjmatchedKind = 95; jjmatchedPos = 1; } - else if ((active1 & 0x40000000L) != 0x0L) - return jjStopAtPos(1, 94); - else if ((active1 & 0x100000000L) != 0x0L) - return jjStopAtPos(1, 96); - else if ((active1 & 0x800000000000000L) != 0x0L) - return jjStopAtPos(1, 123); - else if ((active1 & 0x1000000000000000L) != 0x0L) - return jjStopAtPos(1, 124); - else if ((active1 & 0x2000000000000000L) != 0x0L) - return jjStopAtPos(1, 125); + else if ((active1 & 0x200000000L) != 0x0L) + return jjStopAtPos(1, 97); + else if ((active1 & 0x800000000L) != 0x0L) + return jjStopAtPos(1, 99); else if ((active1 & 0x4000000000000000L) != 0x0L) return jjStopAtPos(1, 126); else if ((active1 & 0x8000000000000000L) != 0x0L) return jjStopAtPos(1, 127); + else if ((active2 & 0x1L) != 0x0L) + return jjStopAtPos(1, 128); else if ((active2 & 0x2L) != 0x0L) return jjStopAtPos(1, 129); - else if ((active2 & 0x8L) != 0x0L) - return jjStopAtPos(1, 131); - else if ((active2 & 0x20L) != 0x0L) - return jjStopAtPos(1, 133); - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x10000L); + else if ((active2 & 0x4L) != 0x0L) + return jjStopAtPos(1, 130); + else if ((active2 & 0x10L) != 0x0L) + return jjStopAtPos(1, 132); + else if ((active2 & 0x40L) != 0x0L) + return jjStopAtPos(1, 134); + else if ((active2 & 0x100L) != 0x0L) + return jjStopAtPos(1, 136); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x80000L); case '>': - if ((active1 & 0x80000000000000L) != 0x0L) + if ((active1 & 0x400000000000000L) != 0x0L) { - jjmatchedKind = 119; + jjmatchedKind = 122; jjmatchedPos = 1; } - else if ((active2 & 0x8000L) != 0x0L) - return jjStopAtPos(1, 143); - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x200000000000000L, active2, 0x2800L); + else if ((active2 & 0x40000L) != 0x0L) + return jjStopAtPos(1, 146); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x1000000000000000L, active2, 0x14000L); case '?': - if ((active2 & 0x40000L) != 0x0L) + if ((active2 & 0x200000L) != 0x0L) { - jjmatchedKind = 146; + jjmatchedKind = 149; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x20000L); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x0L, active2, 0x100000L); case 'a': - return jjMoveStringLiteralDfa2_0(active0, 0x90008030000L, active1, 0x1000000000L, active2, 0x1L); + return jjMoveStringLiteralDfa2_0(active0, 0x240008030000L, active1, 0x8000000000L, active2, 0x8L); case 'b': - return jjMoveStringLiteralDfa2_0(active0, 0x800L, active1, 0x1500000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x800L, active1, 0xa800000000000L, active2, 0x0L); case 'e': - return jjMoveStringLiteralDfa2_0(active0, 0x820000200000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa2_0(active0, 0x2080000200000L, active1, 0x0L, active2, 0x10000000L); case 'f': if ((active0 & 0x200000000L) != 0x0L) return jjStartNfaWithStates_0(1, 33, 42); break; case 'g': - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x80400000L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x402000000L, active2, 0x0L); case 'h': - return jjMoveStringLiteralDfa2_0(active0, 0x10c1000000040000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0xc304000000040000L, active1, 0x0L, active2, 0x0L); case 'i': return jjMoveStringLiteralDfa2_0(active0, 0x30000000L, active1, 0x0L, active2, 0x0L); case 'l': - return jjMoveStringLiteralDfa2_0(active0, 0x41004000L, active1, 0x40000021000000L, active2, 0x400L); + return jjMoveStringLiteralDfa2_0(active0, 0x41004000L, active1, 0x200000108000000L, active2, 0x2000L); case 'm': - return jjMoveStringLiteralDfa2_0(active0, 0xc00000000L, active1, 0x4000000000000L, active2, 0x40L); + return jjMoveStringLiteralDfa2_0(active0, 0xc00000000L, active1, 0x20000000000000L, active2, 0x200L); case 'n': - return jjMoveStringLiteralDfa2_0(active0, 0x7002000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x19002000000L, active1, 0x0L, active2, 0x0L); case 'o': if ((active0 & 0x400000L) != 0x0L) { jjmatchedKind = 22; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0xc00008180981000L, active1, 0x400000000L, active2, 0x4L); + return jjMoveStringLiteralDfa2_0(active0, 0x3000020180981000L, active1, 0x2000000000L, active2, 0x20L); case 'p': - return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x10000000000000L, active2, 0x100L); + return jjMoveStringLiteralDfa2_0(active0, 0x0L, active1, 0x80000000000000L, active2, 0x800L); case 'r': - return jjMoveStringLiteralDfa2_0(active0, 0x320300000002000L, active1, 0x500000000000000L, active2, 0x5000L); + return jjMoveStringLiteralDfa2_0(active0, 0xc80c00000002000L, active1, 0x2800000000000000L, active2, 0x28000L); + case 's': + if ((active0 & 0x2000000000L) != 0x0L) + return jjStartNfaWithStates_0(1, 37, 42); + else if ((active0 & 0x4000000000L) != 0x0L) + return jjStartNfaWithStates_0(1, 38, 42); + break; case 't': - return jjMoveStringLiteralDfa2_0(active0, 0x6000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x18000000000000L, active1, 0x0L, active2, 0x0L); case 'u': - return jjMoveStringLiteralDfa2_0(active0, 0x440000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x1100000000000L, active1, 0x0L, active2, 0x0L); case 'w': - return jjMoveStringLiteralDfa2_0(active0, 0x8000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x20000000000000L, active1, 0x0L, active2, 0x0L); case 'x': - return jjMoveStringLiteralDfa2_0(active0, 0x4000000L, active1, 0x0L, active2, 0x10L); + return jjMoveStringLiteralDfa2_0(active0, 0x4000000L, active1, 0x0L, active2, 0x80L); case 'y': - return jjMoveStringLiteralDfa2_0(active0, 0x10000000008000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa2_0(active0, 0x40000000008000L, active1, 0x0L, active2, 0x0L); case '|': - if ((active1 & 0x200000000L) != 0x0L) - return jjStopAtPos(1, 97); + if ((active1 & 0x1000000000L) != 0x0L) + return jjStopAtPos(1, 100); break; default : break; @@ -453,85 +459,85 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long a switch(curChar) { case '.': - if ((active2 & 0x800000L) != 0x0L) - return jjStopAtPos(2, 151); + if ((active2 & 0x4000000L) != 0x0L) + return jjStopAtPos(2, 154); break; case '=': - if ((active2 & 0x80L) != 0x0L) - return jjStopAtPos(2, 135); - else if ((active2 & 0x200L) != 0x0L) - return jjStopAtPos(2, 137); - else if ((active2 & 0x800L) != 0x0L) - return jjStopAtPos(2, 139); - else if ((active2 & 0x20000L) != 0x0L) - return jjStopAtPos(2, 145); + if ((active2 & 0x400L) != 0x0L) + return jjStopAtPos(2, 138); + else if ((active2 & 0x1000L) != 0x0L) + return jjStopAtPos(2, 140); + else if ((active2 & 0x4000L) != 0x0L) + return jjStopAtPos(2, 142); + else if ((active2 & 0x100000L) != 0x0L) + return jjStopAtPos(2, 148); break; case '>': - if ((active1 & 0x200000000000000L) != 0x0L) + if ((active1 & 0x1000000000000000L) != 0x0L) { - jjmatchedKind = 121; + jjmatchedKind = 124; jjmatchedPos = 2; } - else if ((active2 & 0x10000L) != 0x0L) - return jjStopAtPos(2, 144); - return jjMoveStringLiteralDfa3_0(active0, 0x0L, active1, 0x0L, active2, 0x2000L); + else if ((active2 & 0x80000L) != 0x0L) + return jjStopAtPos(2, 147); + return jjMoveStringLiteralDfa3_0(active0, 0x0L, active1, 0x0L, active2, 0x10000L); case 'a': - return jjMoveStringLiteralDfa3_0(active0, 0x22000000044000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x88000000044000L, active1, 0x0L, active2, 0x0L); case 'b': - return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L, active1, 0x0L, active2, 0x0L); case 'c': - return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L, active1, 0x0L, active2, 0x0L); case 'e': - return jjMoveStringLiteralDfa3_0(active0, 0x2000L, active1, 0x40000000000000L, active2, 0x400L); + return jjMoveStringLiteralDfa3_0(active0, 0x4000000000002000L, active1, 0x200000000000000L, active2, 0x2000L); case 'f': - return jjMoveStringLiteralDfa3_0(active0, 0x200000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa3_0(active0, 0x200000L, active1, 0x0L, active2, 0x10000000L); case 'i': - return jjMoveStringLiteralDfa3_0(active0, 0x1408100000000000L, active1, 0x501500000000000L, active2, 0x5000L); + return jjMoveStringLiteralDfa3_0(active0, 0x9020400000000000L, active1, 0x280a800000000000L, active2, 0x28000L); case 'l': - return jjMoveStringLiteralDfa3_0(active0, 0x800040008000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x2000100008000000L, active1, 0x0L, active2, 0x0L); case 'n': - return jjMoveStringLiteralDfa3_0(active0, 0x10008030180000L, active1, 0x1000000000L, active2, 0x1L); + return jjMoveStringLiteralDfa3_0(active0, 0x40020030180000L, active1, 0x8000000000L, active2, 0x8L); case 'o': - return jjMoveStringLiteralDfa3_0(active0, 0x1200040001000L, active1, 0x14000000000000L, active2, 0x150L); + return jjMoveStringLiteralDfa3_0(active0, 0x4800040001000L, active1, 0xa0000000000000L, active2, 0xa80L); case 'p': return jjMoveStringLiteralDfa3_0(active0, 0xc00000000L, active1, 0x0L, active2, 0x0L); case 'r': if ((active0 & 0x80000000L) != 0x0L) return jjStartNfaWithStates_0(2, 31, 42); - else if ((active1 & 0x400000000L) != 0x0L) + else if ((active1 & 0x2000000000L) != 0x0L) { - jjmatchedKind = 98; + jjmatchedKind = 101; jjmatchedPos = 2; } - return jjMoveStringLiteralDfa3_0(active0, 0xc4000000000000L, active1, 0x0L, active2, 0x4L); + return jjMoveStringLiteralDfa3_0(active0, 0x310000000000000L, active1, 0x0L, active2, 0x20L); case 's': return jjMoveStringLiteralDfa3_0(active0, 0x1001010800L, active1, 0x0L, active2, 0x0L); case 't': - if ((active0 & 0x2000000000L) != 0x0L) + if ((active0 & 0x8000000000L) != 0x0L) { - jjmatchedKind = 37; + jjmatchedKind = 39; jjmatchedPos = 2; } - else if ((active1 & 0x400000L) != 0x0L) + else if ((active1 & 0x2000000L) != 0x0L) { - jjmatchedKind = 86; + jjmatchedKind = 89; jjmatchedPos = 2; } - else if ((active1 & 0x1000000L) != 0x0L) + else if ((active1 & 0x8000000L) != 0x0L) { - jjmatchedKind = 88; + jjmatchedKind = 91; jjmatchedPos = 2; } - return jjMoveStringLiteralDfa3_0(active0, 0x814104028000L, active1, 0xa0000000L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x2050104028000L, active1, 0x500000000L, active2, 0x0L); case 'u': - return jjMoveStringLiteralDfa3_0(active0, 0x100000002800000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa3_0(active0, 0x400000002800000L, active1, 0x0L, active2, 0x0L); case 'w': - if ((active0 & 0x20000000000L) != 0x0L) - return jjStartNfaWithStates_0(2, 41, 42); + if ((active0 & 0x80000000000L) != 0x0L) + return jjStartNfaWithStates_0(2, 43, 42); break; case 'y': - if ((active0 & 0x200000000000000L) != 0x0L) - return jjStartNfaWithStates_0(2, 57, 42); + if ((active0 & 0x800000000000000L) != 0x0L) + return jjStartNfaWithStates_0(2, 59, 42); break; default : break; @@ -549,31 +555,31 @@ private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long a switch(curChar) { case '=': - if ((active2 & 0x2000L) != 0x0L) - return jjStopAtPos(3, 141); + if ((active2 & 0x10000L) != 0x0L) + return jjStopAtPos(3, 144); break; case '_': - return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x4L); + return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x20L); case 'a': - return jjMoveStringLiteralDfa4_0(active0, 0x800000070202000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa4_0(active0, 0x2000000070202000L, active1, 0x0L, active2, 0x10000000L); case 'b': return jjMoveStringLiteralDfa4_0(active0, 0x800000L, active1, 0x0L, active2, 0x0L); case 'c': - return jjMoveStringLiteralDfa4_0(active0, 0x10000000020000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x40000000020000L, active1, 0x0L, active2, 0x0L); case 'd': - if ((active0 & 0x400000000000000L) != 0x0L) - return jjStartNfaWithStates_0(3, 58, 42); - else if ((active1 & 0x1000000000L) != 0x0L) + if ((active0 & 0x1000000000000000L) != 0x0L) + return jjStartNfaWithStates_0(3, 60, 42); + else if ((active1 & 0x8000000000L) != 0x0L) { - jjmatchedKind = 100; + jjmatchedKind = 103; jjmatchedPos = 3; } - else if ((active1 & 0x4000000000000L) != 0x0L) + else if ((active1 & 0x20000000000000L) != 0x0L) { - jjmatchedKind = 114; + jjmatchedKind = 117; jjmatchedPos = 3; } - return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x41L); + return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x208L); case 'e': if ((active0 & 0x8000L) != 0x0L) return jjStartNfaWithStates_0(3, 15, 42); @@ -581,52 +587,54 @@ else if ((active0 & 0x10000L) != 0x0L) return jjStartNfaWithStates_0(3, 16, 42); else if ((active0 & 0x1000000L) != 0x0L) return jjStartNfaWithStates_0(3, 24, 42); - else if ((active0 & 0x100000000000000L) != 0x0L) - return jjStartNfaWithStates_0(3, 56, 42); - return jjMoveStringLiteralDfa4_0(active0, 0x4004000000L, active1, 0xa0000000L, active2, 0x0L); + else if ((active0 & 0x400000000000000L) != 0x0L) + return jjStartNfaWithStates_0(3, 58, 42); + return jjMoveStringLiteralDfa4_0(active0, 0x10004000000L, active1, 0x500000000L, active2, 0x0L); case 'f': - return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x40000000000000L, active2, 0x400L); + return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x200000000000000L, active2, 0x2000L); case 'g': - if ((active0 & 0x8000000000L) != 0x0L) - return jjStartNfaWithStates_0(3, 39, 42); - return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x500000000000000L, active2, 0x5000L); + if ((active0 & 0x20000000000L) != 0x0L) + return jjStartNfaWithStates_0(3, 41, 42); + return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x2800000000000000L, active2, 0x28000L); case 'i': - return jjMoveStringLiteralDfa4_0(active0, 0x4010000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x10040000000000L, active1, 0x0L, active2, 0x0L); case 'k': - return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x200000000000L, active1, 0x0L, active2, 0x0L); case 'l': - if ((active0 & 0x40000000000L) != 0x0L) - return jjStartNfaWithStates_0(3, 42, 42); - return jjMoveStringLiteralDfa4_0(active0, 0x1000400400001000L, active1, 0x0L, active2, 0x0L); + if ((active0 & 0x100000000000L) != 0x0L) + return jjStartNfaWithStates_0(3, 44, 42); + return jjMoveStringLiteralDfa4_0(active0, 0x8001000400001000L, active1, 0x0L, active2, 0x0L); case 'm': if ((active0 & 0x2000000L) != 0x0L) return jjStartNfaWithStates_0(3, 25, 42); break; case 'n': - return jjMoveStringLiteralDfa4_0(active0, 0x20000000000000L, active1, 0x0L, active2, 0x0L); + if ((active0 & 0x4000000000000000L) != 0x0L) + return jjStartNfaWithStates_0(3, 62, 42); + return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0x0L, active2, 0x0L); case 'o': if ((active0 & 0x100000000L) != 0x0L) return jjStartNfaWithStates_0(3, 32, 42); - return jjMoveStringLiteralDfa4_0(active0, 0xc0000800000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x300000800000000L, active1, 0x0L, active2, 0x0L); case 'r': if ((active0 & 0x40000L) != 0x0L) return jjStartNfaWithStates_0(3, 18, 42); - return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L, active1, 0x0L, active2, 0x10L); + return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L, active1, 0x0L, active2, 0x80L); case 's': return jjMoveStringLiteralDfa4_0(active0, 0x8084000L, active1, 0x0L, active2, 0x0L); case 't': - return jjMoveStringLiteralDfa4_0(active0, 0xa201000100800L, active1, 0x1500000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x28801000100800L, active1, 0xa800000000000L, active2, 0x0L); case 'u': - return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000L, active1, 0x0L, active2, 0x0L); case 'v': - return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa4_0(active0, 0x400000000000L, active1, 0x0L, active2, 0x0L); case 'w': - if ((active1 & 0x10000000000000L) != 0x0L) + if ((active1 & 0x80000000000000L) != 0x0L) { - jjmatchedKind = 116; + jjmatchedKind = 119; jjmatchedPos = 3; } - return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x100L); + return jjMoveStringLiteralDfa4_0(active0, 0x0L, active1, 0x0L, active2, 0x800L); default : break; } @@ -643,23 +651,23 @@ private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long a switch(curChar) { case '_': - return jjMoveStringLiteralDfa5_0(active0, 0x0L, active1, 0x0L, active2, 0x151L); + return jjMoveStringLiteralDfa5_0(active0, 0x0L, active1, 0x0L, active2, 0xa88L); case 'a': - return jjMoveStringLiteralDfa5_0(active0, 0x181000000000L, active1, 0x0L, active2, 0x4L); + return jjMoveStringLiteralDfa5_0(active0, 0x601000000000L, active1, 0x0L, active2, 0x20L); case 'c': - return jjMoveStringLiteralDfa5_0(active0, 0xc000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x30000000000000L, active1, 0x0L, active2, 0x0L); case 'e': if ((active0 & 0x8000000L) != 0x0L) return jjStartNfaWithStates_0(4, 27, 42); - else if ((active0 & 0x1000000000000000L) != 0x0L) - return jjStartNfaWithStates_0(4, 60, 42); - return jjMoveStringLiteralDfa5_0(active0, 0x200400001000L, active1, 0x0L, active2, 0x0L); + else if ((active0 & 0x8000000000000000L) != 0x0L) + return jjStartNfaWithStates_0(4, 63, 42); + return jjMoveStringLiteralDfa5_0(active0, 0x800400001000L, active1, 0x0L, active2, 0x0L); case 'h': if ((active0 & 0x20000L) != 0x0L) return jjStartNfaWithStates_0(4, 17, 42); - return jjMoveStringLiteralDfa5_0(active0, 0x10000000000000L, active1, 0x500000000000000L, active2, 0x5000L); + return jjMoveStringLiteralDfa5_0(active0, 0x40000000000000L, active1, 0x2800000000000000L, active2, 0x28000L); case 'i': - return jjMoveStringLiteralDfa5_0(active0, 0x2400000100000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x9000000100000L, active1, 0x0L, active2, 0x0L); case 'k': if ((active0 & 0x2000L) != 0x0L) return jjStartNfaWithStates_0(4, 13, 42); @@ -674,36 +682,36 @@ else if ((active0 & 0x1000000000000000L) != 0x0L) case 'n': return jjMoveStringLiteralDfa5_0(active0, 0x4000000L, active1, 0x0L, active2, 0x0L); case 'q': - if ((active1 & 0x20000000L) != 0x0L) - return jjStopAtPos(4, 93); - else if ((active1 & 0x80000000L) != 0x0L) - return jjStopAtPos(4, 95); + if ((active1 & 0x100000000L) != 0x0L) + return jjStopAtPos(4, 96); + else if ((active1 & 0x400000000L) != 0x0L) + return jjStopAtPos(4, 98); break; case 'r': - return jjMoveStringLiteralDfa5_0(active0, 0x804800000800L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x2010800000800L, active1, 0x0L, active2, 0x0L); case 's': if ((active0 & 0x4000L) != 0x0L) return jjStartNfaWithStates_0(4, 14, 42); - return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0x0L, active2, 0x0L); case 't': if ((active0 & 0x80000L) != 0x0L) return jjStartNfaWithStates_0(4, 19, 42); else if ((active0 & 0x40000000L) != 0x0L) return jjStartNfaWithStates_0(4, 30, 42); - else if ((active0 & 0x1000000000000L) != 0x0L) - return jjStartNfaWithStates_0(4, 48, 42); - return jjMoveStringLiteralDfa5_0(active0, 0x800000000000000L, active1, 0x40000000000000L, active2, 0x400L); + else if ((active0 & 0x4000000000000L) != 0x0L) + return jjStartNfaWithStates_0(4, 50, 42); + return jjMoveStringLiteralDfa5_0(active0, 0x2000000000000000L, active1, 0x200000000000000L, active2, 0x2000L); case 'u': - return jjMoveStringLiteralDfa5_0(active0, 0x200000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa5_0(active0, 0x200000L, active1, 0x0L, active2, 0x10000000L); case 'v': - return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L, active1, 0x0L, active2, 0x0L); case 'w': - if ((active0 & 0x40000000000000L) != 0x0L) + if ((active0 & 0x100000000000000L) != 0x0L) { - jjmatchedKind = 54; + jjmatchedKind = 56; jjmatchedPos = 4; } - return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0x1500000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa5_0(active0, 0x200000000000000L, active1, 0xa800000000000L, active2, 0x0L); default : break; } @@ -720,51 +728,51 @@ private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long a switch(curChar) { case '_': - return jjMoveStringLiteralDfa6_0(active0, 0x0L, active1, 0x40000000000000L, active2, 0x400L); + return jjMoveStringLiteralDfa6_0(active0, 0x0L, active1, 0x200000000000000L, active2, 0x2000L); case 'a': - return jjMoveStringLiteralDfa6_0(active0, 0x1800L, active1, 0x0L, active2, 0x151L); + return jjMoveStringLiteralDfa6_0(active0, 0x1800L, active1, 0x0L, active2, 0xa88L); case 'c': - if ((active0 & 0x400000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 46, 42); - else if ((active0 & 0x2000000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 49, 42); - return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L, active1, 0x0L, active2, 0x0L); + if ((active0 & 0x1000000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 48, 42); + else if ((active0 & 0x8000000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 51, 42); + return jjMoveStringLiteralDfa6_0(active0, 0x800000000000L, active1, 0x0L, active2, 0x0L); case 'd': return jjMoveStringLiteralDfa6_0(active0, 0x4000000L, active1, 0x0L, active2, 0x0L); case 'e': if ((active0 & 0x800000L) != 0x0L) return jjStartNfaWithStates_0(5, 23, 42); - else if ((active0 & 0x10000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 40, 42); + else if ((active0 & 0x40000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 42, 42); break; case 'f': - return jjMoveStringLiteralDfa6_0(active0, 0x4000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa6_0(active0, 0x10000000000L, active1, 0x0L, active2, 0x0L); case 'g': - return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L, active1, 0x0L, active2, 0x0L); case 'h': - if ((active0 & 0x8000000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 51, 42); + if ((active0 & 0x20000000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 53, 42); break; case 'i': - return jjMoveStringLiteralDfa6_0(active0, 0x820000000000000L, active1, 0x1500000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa6_0(active0, 0x2080000000000000L, active1, 0xa800000000000L, active2, 0x0L); case 'l': - return jjMoveStringLiteralDfa6_0(active0, 0x20200000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa6_0(active0, 0x20200000L, active1, 0x0L, active2, 0x10000000L); case 'm': return jjMoveStringLiteralDfa6_0(active0, 0x400000000L, active1, 0x0L, active2, 0x0L); case 'n': - if ((active0 & 0x800000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 47, 42); + if ((active0 & 0x2000000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 49, 42); return jjMoveStringLiteralDfa6_0(active0, 0x1000100000L, active1, 0x0L, active2, 0x0L); case 'r': - return jjMoveStringLiteralDfa6_0(active0, 0x10000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa6_0(active0, 0x40000000000000L, active1, 0x0L, active2, 0x0L); case 's': - if ((active0 & 0x80000000000000L) != 0x0L) - return jjStartNfaWithStates_0(5, 55, 42); - return jjMoveStringLiteralDfa6_0(active0, 0x0L, active1, 0x0L, active2, 0x4L); + if ((active0 & 0x200000000000000L) != 0x0L) + return jjStartNfaWithStates_0(5, 57, 42); + return jjMoveStringLiteralDfa6_0(active0, 0x0L, active1, 0x0L, active2, 0x20L); case 't': if ((active0 & 0x800000000L) != 0x0L) return jjStartNfaWithStates_0(5, 35, 42); - return jjMoveStringLiteralDfa6_0(active0, 0x4100000000000L, active1, 0x500000000000000L, active2, 0x5000L); + return jjMoveStringLiteralDfa6_0(active0, 0x10400000000000L, active1, 0x2800000000000000L, active2, 0x28000L); default : break; } @@ -781,38 +789,38 @@ private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long a switch(curChar) { case '_': - return jjMoveStringLiteralDfa7_0(active0, 0x0L, active1, 0x500000000000000L, active2, 0x5000L); + return jjMoveStringLiteralDfa7_0(active0, 0x0L, active1, 0x2800000000000000L, active2, 0x28000L); case 'a': - return jjMoveStringLiteralDfa7_0(active0, 0x4000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa7_0(active0, 0x10000000000L, active1, 0x0L, active2, 0x0L); case 'c': return jjMoveStringLiteralDfa7_0(active0, 0x1000000800L, active1, 0x0L, active2, 0x0L); case 'e': - if ((active0 & 0x80000000000L) != 0x0L) - return jjStartNfaWithStates_0(6, 43, 42); - else if ((active0 & 0x100000000000L) != 0x0L) - return jjStartNfaWithStates_0(6, 44, 42); - return jjMoveStringLiteralDfa7_0(active0, 0x20000400000000L, active1, 0x0L, active2, 0x0L); + if ((active0 & 0x200000000000L) != 0x0L) + return jjStartNfaWithStates_0(6, 45, 42); + else if ((active0 & 0x400000000000L) != 0x0L) + return jjStartNfaWithStates_0(6, 46, 42); + return jjMoveStringLiteralDfa7_0(active0, 0x80000400000000L, active1, 0x0L, active2, 0x0L); case 'f': - return jjMoveStringLiteralDfa7_0(active0, 0x4000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa7_0(active0, 0x10000000000000L, active1, 0x0L, active2, 0x0L); case 'l': - return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa7_0(active0, 0x2000000000000000L, active1, 0x0L, active2, 0x0L); case 'n': if ((active0 & 0x1000L) != 0x0L) return jjStartNfaWithStates_0(6, 12, 42); break; case 'o': - return jjMoveStringLiteralDfa7_0(active0, 0x10000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa7_0(active0, 0x40000000000000L, active1, 0x0L, active2, 0x0L); case 's': if ((active0 & 0x4000000L) != 0x0L) return jjStartNfaWithStates_0(6, 26, 42); - return jjMoveStringLiteralDfa7_0(active0, 0x0L, active1, 0x41500000000000L, active2, 0x555L); + return jjMoveStringLiteralDfa7_0(active0, 0x0L, active1, 0x20a800000000000L, active2, 0x2aa8L); case 't': if ((active0 & 0x200000L) != 0x0L) { jjmatchedKind = 21; jjmatchedPos = 6; } - return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L, active1, 0x0L, active2, 0x2000000L); + return jjMoveStringLiteralDfa7_0(active0, 0x800000000000L, active1, 0x0L, active2, 0x10000000L); case 'u': return jjMoveStringLiteralDfa7_0(active0, 0x100000L, active1, 0x0L, active2, 0x0L); case 'y': @@ -835,35 +843,35 @@ private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long a switch(curChar) { case ':': - if ((active2 & 0x2000000L) != 0x0L) - return jjStopAtPos(7, 153); + if ((active2 & 0x10000000L) != 0x0L) + return jjStopAtPos(7, 156); break; case 'c': - return jjMoveStringLiteralDfa8_0(active0, 0x4000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa8_0(active0, 0x10000000000L, active1, 0x0L, active2, 0x0L); case 'e': if ((active0 & 0x100000L) != 0x0L) return jjStartNfaWithStates_0(7, 20, 42); - else if ((active0 & 0x800000000000000L) != 0x0L) - return jjStartNfaWithStates_0(7, 59, 42); - return jjMoveStringLiteralDfa8_0(active0, 0x201000000000L, active1, 0x1500000000000L, active2, 0x0L); + else if ((active0 & 0x2000000000000000L) != 0x0L) + return jjStartNfaWithStates_0(7, 61, 42); + return jjMoveStringLiteralDfa8_0(active0, 0x801000000000L, active1, 0xa800000000000L, active2, 0x0L); case 'h': - return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x40000000000000L, active2, 0x400L); + return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x200000000000000L, active2, 0x2000L); case 'i': - return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x0L, active2, 0x4L); + return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x0L, active2, 0x20L); case 'n': - return jjMoveStringLiteralDfa8_0(active0, 0x30000400000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa8_0(active0, 0xc0000400000000L, active1, 0x0L, active2, 0x0L); case 'p': - if ((active0 & 0x4000000000000L) != 0x0L) - return jjStartNfaWithStates_0(7, 50, 42); + if ((active0 & 0x10000000000000L) != 0x0L) + return jjStartNfaWithStates_0(7, 52, 42); break; case 's': - return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x100000000000000L, active2, 0x1151L); + return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x800000000000000L, active2, 0x8a88L); case 't': if ((active0 & 0x800L) != 0x0L) return jjStartNfaWithStates_0(7, 11, 42); break; case 'u': - return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa8_0(active0, 0x0L, active1, 0x2000000000000000L, active2, 0x20000L); default : break; } @@ -880,28 +888,28 @@ private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long a switch(curChar) { case '_': - return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x1500000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0xa800000000000L, active2, 0x0L); case 'd': - if ((active0 & 0x200000000000L) != 0x0L) - return jjStartNfaWithStates_0(8, 45, 42); + if ((active0 & 0x800000000000L) != 0x0L) + return jjStartNfaWithStates_0(8, 47, 42); break; case 'e': - if ((active0 & 0x4000000000L) != 0x0L) - return jjStartNfaWithStates_0(8, 38, 42); + if ((active0 & 0x10000000000L) != 0x0L) + return jjStartNfaWithStates_0(8, 40, 42); break; case 'g': - return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x0L, active2, 0x4L); + return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x0L, active2, 0x20L); case 'h': - return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x100000000000000L, active2, 0x1000L); + return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x800000000000000L, active2, 0x8000L); case 'i': - return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L, active1, 0x40000000000000L, active2, 0x551L); + return jjMoveStringLiteralDfa9_0(active0, 0x40000000000000L, active1, 0x200000000000000L, active2, 0x2a88L); case 'n': - return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa9_0(active0, 0x0L, active1, 0x2000000000000000L, active2, 0x20000L); case 'o': return jjMoveStringLiteralDfa9_0(active0, 0x1000000000L, active1, 0x0L, active2, 0x0L); case 't': - if ((active0 & 0x20000000000000L) != 0x0L) - return jjStartNfaWithStates_0(8, 53, 42); + if ((active0 & 0x80000000000000L) != 0x0L) + return jjStartNfaWithStates_0(8, 55, 42); return jjMoveStringLiteralDfa9_0(active0, 0x400000000L, active1, 0x0L, active2, 0x0L); default : break; @@ -919,29 +927,29 @@ private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long a switch(curChar) { case 'a': - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x100000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x800000000000L, active2, 0x0L); case 'f': if ((active0 & 0x1000000000L) != 0x0L) return jjStartNfaWithStates_0(9, 36, 42); - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x40000000000000L, active2, 0x400L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x200000000000000L, active2, 0x2000L); case 'g': - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x0L, active2, 0x151L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x0L, active2, 0xa88L); case 'i': - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x100000000000000L, active2, 0x1000L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x800000000000000L, active2, 0x8000L); case 'n': - if ((active2 & 0x4L) != 0x0L) - return jjStopAtPos(9, 130); + if ((active2 & 0x20L) != 0x0L) + return jjStopAtPos(9, 133); break; case 'o': - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x400000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x2000000000000L, active2, 0x0L); case 's': if ((active0 & 0x400000000L) != 0x0L) return jjStartNfaWithStates_0(9, 34, 42); - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x2000000000000000L, active2, 0x20000L); case 'x': - return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x1000000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa10_0(active0, 0x0L, active1, 0x8000000000000L, active2, 0x0L); case 'z': - return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa10_0(active0, 0x40000000000000L, active1, 0x0L, active2, 0x0L); default : break; } @@ -958,34 +966,34 @@ private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old1, long switch(curChar) { case 'e': - return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L, active1, 0x0L, active2, 0x0L); + return jjMoveStringLiteralDfa11_0(active0, 0x40000000000000L, active1, 0x0L, active2, 0x0L); case 'f': - return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x100000000000000L, active2, 0x1000L); + return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x800000000000000L, active2, 0x8000L); case 'i': - return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x2000000000000000L, active2, 0x20000L); case 'n': - if ((active2 & 0x1L) != 0x0L) - return jjStopAtPos(10, 128); - else if ((active2 & 0x10L) != 0x0L) - return jjStopAtPos(10, 132); - else if ((active2 & 0x40L) != 0x0L) - return jjStopAtPos(10, 134); - else if ((active2 & 0x100L) != 0x0L) - return jjStopAtPos(10, 136); - return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x100000000000L, active2, 0x0L); + if ((active2 & 0x8L) != 0x0L) + return jjStopAtPos(10, 131); + else if ((active2 & 0x80L) != 0x0L) + return jjStopAtPos(10, 135); + else if ((active2 & 0x200L) != 0x0L) + return jjStopAtPos(10, 137); + else if ((active2 & 0x800L) != 0x0L) + return jjStopAtPos(10, 139); + return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x800000000000L, active2, 0x0L); case 'o': - return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x1000000000000L, active2, 0x0L); + return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x8000000000000L, active2, 0x0L); case 'r': - if ((active1 & 0x400000000000L) != 0x0L) - return jjStopAtPos(10, 110); + if ((active1 & 0x2000000000000L) != 0x0L) + return jjStopAtPos(10, 113); break; case 't': - if ((active1 & 0x40000000000000L) != 0x0L) + if ((active1 & 0x200000000000000L) != 0x0L) { - jjmatchedKind = 118; + jjmatchedKind = 121; jjmatchedPos = 10; } - return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa11_0(active0, 0x0L, active1, 0x0L, active2, 0x2000L); default : break; } @@ -1002,26 +1010,26 @@ private int jjMoveStringLiteralDfa11_0(long old0, long active0, long old1, long switch(curChar) { case '_': - return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x0L, active2, 0x2000L); case 'd': - if ((active0 & 0x10000000000000L) != 0x0L) - return jjStartNfaWithStates_0(11, 52, 42); - else if ((active1 & 0x100000000000L) != 0x0L) - return jjStopAtPos(11, 108); + if ((active0 & 0x40000000000000L) != 0x0L) + return jjStartNfaWithStates_0(11, 54, 42); + else if ((active1 & 0x800000000000L) != 0x0L) + return jjStopAtPos(11, 111); break; case 'g': - return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x2000000000000000L, active2, 0x20000L); case 'r': - if ((active1 & 0x1000000000000L) != 0x0L) - return jjStopAtPos(11, 112); + if ((active1 & 0x8000000000000L) != 0x0L) + return jjStopAtPos(11, 115); break; case 't': - if ((active1 & 0x100000000000000L) != 0x0L) + if ((active1 & 0x800000000000000L) != 0x0L) { - jjmatchedKind = 120; + jjmatchedKind = 123; jjmatchedPos = 11; } - return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa12_0(active0, 0x0L, active1, 0x0L, active2, 0x8000L); default : break; } @@ -1038,11 +1046,11 @@ private int jjMoveStringLiteralDfa12_0(long old0, long active0, long old1, long switch(curChar) { case '_': - return jjMoveStringLiteralDfa13_0(active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa13_0(active1, 0x0L, active2, 0x8000L); case 'a': - return jjMoveStringLiteralDfa13_0(active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa13_0(active1, 0x0L, active2, 0x2000L); case 'n': - return jjMoveStringLiteralDfa13_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa13_0(active1, 0x2000000000000000L, active2, 0x20000L); default : break; } @@ -1059,11 +1067,11 @@ private int jjMoveStringLiteralDfa13_0(long old1, long active1, long old2, long switch(curChar) { case 'a': - return jjMoveStringLiteralDfa14_0(active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa14_0(active1, 0x0L, active2, 0x8000L); case 'e': - return jjMoveStringLiteralDfa14_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa14_0(active1, 0x2000000000000000L, active2, 0x20000L); case 's': - return jjMoveStringLiteralDfa14_0(active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa14_0(active1, 0x0L, active2, 0x2000L); default : break; } @@ -1080,9 +1088,9 @@ private int jjMoveStringLiteralDfa14_0(long old1, long active1, long old2, long switch(curChar) { case 'd': - return jjMoveStringLiteralDfa15_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa15_0(active1, 0x2000000000000000L, active2, 0x20000L); case 's': - return jjMoveStringLiteralDfa15_0(active1, 0x0L, active2, 0x1400L); + return jjMoveStringLiteralDfa15_0(active1, 0x0L, active2, 0xa000L); default : break; } @@ -1099,11 +1107,11 @@ private int jjMoveStringLiteralDfa15_0(long old1, long active1, long old2, long switch(curChar) { case '_': - return jjMoveStringLiteralDfa16_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa16_0(active1, 0x2000000000000000L, active2, 0x20000L); case 'i': - return jjMoveStringLiteralDfa16_0(active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa16_0(active1, 0x0L, active2, 0x2000L); case 's': - return jjMoveStringLiteralDfa16_0(active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa16_0(active1, 0x0L, active2, 0x8000L); default : break; } @@ -1120,11 +1128,11 @@ private int jjMoveStringLiteralDfa16_0(long old1, long active1, long old2, long switch(curChar) { case 'g': - return jjMoveStringLiteralDfa17_0(active1, 0x0L, active2, 0x400L); + return jjMoveStringLiteralDfa17_0(active1, 0x0L, active2, 0x2000L); case 'i': - return jjMoveStringLiteralDfa17_0(active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa17_0(active1, 0x0L, active2, 0x8000L); case 's': - return jjMoveStringLiteralDfa17_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa17_0(active1, 0x2000000000000000L, active2, 0x20000L); default : break; } @@ -1141,12 +1149,12 @@ private int jjMoveStringLiteralDfa17_0(long old1, long active1, long old2, long switch(curChar) { case 'g': - return jjMoveStringLiteralDfa18_0(active1, 0x0L, active2, 0x1000L); + return jjMoveStringLiteralDfa18_0(active1, 0x0L, active2, 0x8000L); case 'h': - return jjMoveStringLiteralDfa18_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa18_0(active1, 0x2000000000000000L, active2, 0x20000L); case 'n': - if ((active2 & 0x400L) != 0x0L) - return jjStopAtPos(17, 138); + if ((active2 & 0x2000L) != 0x0L) + return jjStopAtPos(17, 141); break; default : break; @@ -1164,10 +1172,10 @@ private int jjMoveStringLiteralDfa18_0(long old1, long active1, long old2, long switch(curChar) { case 'i': - return jjMoveStringLiteralDfa19_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa19_0(active1, 0x2000000000000000L, active2, 0x20000L); case 'n': - if ((active2 & 0x1000L) != 0x0L) - return jjStopAtPos(18, 140); + if ((active2 & 0x8000L) != 0x0L) + return jjStopAtPos(18, 143); break; default : break; @@ -1185,7 +1193,7 @@ private int jjMoveStringLiteralDfa19_0(long old1, long active1, long old2, long switch(curChar) { case 'f': - return jjMoveStringLiteralDfa20_0(active1, 0x400000000000000L, active2, 0x4000L); + return jjMoveStringLiteralDfa20_0(active1, 0x2000000000000000L, active2, 0x20000L); default : break; } @@ -1202,12 +1210,12 @@ private int jjMoveStringLiteralDfa20_0(long old1, long active1, long old2, long switch(curChar) { case 't': - if ((active1 & 0x400000000000000L) != 0x0L) + if ((active1 & 0x2000000000000000L) != 0x0L) { - jjmatchedKind = 122; + jjmatchedKind = 125; jjmatchedPos = 20; } - return jjMoveStringLiteralDfa21_0(active1, 0x0L, active2, 0x4000L); + return jjMoveStringLiteralDfa21_0(active1, 0x0L, active2, 0x20000L); default : break; } @@ -1224,7 +1232,7 @@ private int jjMoveStringLiteralDfa21_0(long old1, long active1, long old2, long switch(curChar) { case '_': - return jjMoveStringLiteralDfa22_0(active2, 0x4000L); + return jjMoveStringLiteralDfa22_0(active2, 0x20000L); default : break; } @@ -1241,7 +1249,7 @@ private int jjMoveStringLiteralDfa22_0(long old2, long active2){ switch(curChar) { case 'a': - return jjMoveStringLiteralDfa23_0(active2, 0x4000L); + return jjMoveStringLiteralDfa23_0(active2, 0x20000L); default : break; } @@ -1258,7 +1266,7 @@ private int jjMoveStringLiteralDfa23_0(long old2, long active2){ switch(curChar) { case 's': - return jjMoveStringLiteralDfa24_0(active2, 0x4000L); + return jjMoveStringLiteralDfa24_0(active2, 0x20000L); default : break; } @@ -1275,7 +1283,7 @@ private int jjMoveStringLiteralDfa24_0(long old2, long active2){ switch(curChar) { case 's': - return jjMoveStringLiteralDfa25_0(active2, 0x4000L); + return jjMoveStringLiteralDfa25_0(active2, 0x20000L); default : break; } @@ -1292,7 +1300,7 @@ private int jjMoveStringLiteralDfa25_0(long old2, long active2){ switch(curChar) { case 'i': - return jjMoveStringLiteralDfa26_0(active2, 0x4000L); + return jjMoveStringLiteralDfa26_0(active2, 0x20000L); default : break; } @@ -1309,7 +1317,7 @@ private int jjMoveStringLiteralDfa26_0(long old2, long active2){ switch(curChar) { case 'g': - return jjMoveStringLiteralDfa27_0(active2, 0x4000L); + return jjMoveStringLiteralDfa27_0(active2, 0x20000L); default : break; } @@ -1326,8 +1334,8 @@ private int jjMoveStringLiteralDfa27_0(long old2, long active2){ switch(curChar) { case 'n': - if ((active2 & 0x4000L) != 0x0L) - return jjStopAtPos(27, 142); + if ((active2 & 0x20000L) != 0x0L) + return jjStopAtPos(27, 145); break; default : break; @@ -1421,8 +1429,8 @@ else if (curChar == 47) { jjAddStates(13, 14); } else if (curChar == 36) { - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } } else if (curChar == 34) @@ -1437,14 +1445,14 @@ else if (curChar == 60) { jjCheckNAddStates(0, 3); } if ((0x3fe000000000000L & l) != 0x0L) { - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(15, 16); } } else if (curChar == 48) { - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddStates(18, 21); } } else if (curChar == 34) @@ -1511,15 +1519,15 @@ else if (curChar == 34) case 14: if ((0x3fe000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(15, 16); } break; case 15: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(15, 16); } break; case 17: @@ -1529,8 +1537,8 @@ else if (curChar == 34) case 18: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddStates(28, 30); } break; case 20: @@ -1540,8 +1548,8 @@ else if (curChar == 34) case 21: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddTwoStates(21, 22); } break; case 23: @@ -1556,8 +1564,8 @@ else if (curChar == 34) { jjCheckNAddStates(15, 17); } break; case 27: - if (curChar == 39 && kind > 69) - kind = 69; + if (curChar == 39 && kind > 72) + kind = 72; break; case 28: if (curChar == 34) @@ -1571,8 +1579,8 @@ else if (curChar == 34) { jjCheckNAddStates(22, 24); } break; case 32: - if (curChar == 34 && kind > 70) - kind = 70; + if (curChar == 34 && kind > 73) + kind = 73; break; case 33: case 35: @@ -1584,8 +1592,8 @@ else if (curChar == 34) { jjCheckNAddStates(31, 33); } break; case 36: - if (curChar == 34 && kind > 71) - kind = 71; + if (curChar == 34 && kind > 74) + kind = 74; break; case 37: if (curChar == 34) @@ -1606,15 +1614,15 @@ else if (curChar == 34) case 41: if (curChar != 36) break; - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } break; case 42: if ((0x3ff001000000000L & l) == 0x0L) break; - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } break; case 43: @@ -1628,15 +1636,15 @@ else if (curChar == 34) case 45: if (curChar != 46) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddStates(34, 36); } break; case 46: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddStates(34, 36); } break; case 48: @@ -1646,8 +1654,8 @@ else if (curChar == 34) case 49: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddTwoStates(49, 22); } break; case 50: @@ -1661,8 +1669,8 @@ else if (curChar == 34) case 53: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 66) - kind = 66; + if (kind > 69) + kind = 69; { jjCheckNAddTwoStates(53, 22); } break; case 54: @@ -1672,36 +1680,36 @@ else if (curChar == 34) case 56: if (curChar != 48) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddStates(18, 21); } break; case 58: if ((0x3ff000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(58, 16); } break; case 60: if ((0x3000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddStates(37, 39); } break; case 61: if ((0x3000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAdd(16); } break; case 62: if ((0xff000000000000L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(62, 16); } break; case 63: @@ -1771,8 +1779,8 @@ else if (curChar < 128) case 42: if ((0x7fffffe87fffffeL & l) == 0x0L) break; - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } break; case 9: @@ -1781,21 +1789,21 @@ else if (curChar < 128) case 15: if (curChar != 95) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(15, 16); } break; case 16: - if ((0x88920000889200L & l) != 0x0L && kind > 61) - kind = 61; + if ((0x88920000889200L & l) != 0x0L && kind > 64) + kind = 64; break; case 19: if ((0x2000000020L & l) != 0x0L) { jjAddStates(43, 44); } break; case 22: - if ((0x80005000800050L & l) != 0x0L && kind > 66) - kind = 66; + if ((0x80005000800050L & l) != 0x0L && kind > 69) + kind = 69; break; case 24: if ((0xffffffffefffffffL & l) != 0x0L) @@ -1831,8 +1839,8 @@ else if (curChar < 128) { jjAddStates(47, 48); } break; case 55: - if ((0x5000000050L & l) != 0x0L && kind > 66) - kind = 66; + if ((0x5000000050L & l) != 0x0L && kind > 69) + kind = 69; break; case 57: if ((0x100000001000000L & l) != 0x0L) @@ -1841,22 +1849,22 @@ else if (curChar < 128) case 58: if ((0x7e8000007eL & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddTwoStates(58, 16); } break; case 59: if ((0x400000004L & l) == 0x0L) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddStates(37, 39); } break; case 60: if (curChar != 95) break; - if (kind > 61) - kind = 61; + if (kind > 64) + kind = 64; { jjCheckNAddStates(37, 39); } break; case 65: @@ -1900,8 +1908,8 @@ else if (curChar < 128) } if (jjCanMove_2(hiByte, i1, i2, l1, l2)) { - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } } break; @@ -1934,8 +1942,8 @@ else if (curChar < 128) case 42: if (!jjCanMove_2(hiByte, i1, i2, l1, l2)) break; - if (kind > 72) - kind = 72; + if (kind > 75) + kind = 75; { jjCheckNAdd(42); } break; case 65: @@ -1984,21 +1992,21 @@ else if (curChar < 128) "\144\157\165\142\154\145", "\145\154\163\145", "\145\156\165\155", "\145\170\164\145\156\144\163", "\146\141\154\163\145", "\146\151\156\141\154", "\146\151\156\141\154\154\171", "\146\154\157\141\164", "\146\157\162", "\147\157\164\157", "\151\146", "\151\155\160\154\145\155\145\156\164\163", -"\151\155\160\157\162\164", "\151\156\163\164\141\156\143\145\157\146", "\151\156\164", -"\151\156\164\145\162\146\141\143\145", "\154\157\156\147", "\156\141\164\151\166\145", "\156\145\167", -"\156\165\154\154", "\160\141\143\153\141\147\145", "\160\162\151\166\141\164\145", -"\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", "\162\145\164\165\162\156", "\163\150\157\162\164", -"\163\164\141\164\151\143", "\163\164\162\151\143\164\146\160", "\163\167\151\164\143\150", -"\163\171\156\143\150\162\157\156\151\172\145\144", "\164\162\141\156\163\151\145\156\164", "\164\150\162\157\167", -"\164\150\162\157\167\163", "\164\162\165\145", "\164\162\171", "\166\157\151\144", -"\166\157\154\141\164\151\154\145", "\167\150\151\154\145", null, null, null, null, null, null, null, null, null, -null, null, null, null, null, "\50", "\51", "\173", "\175", "\133", "\135", "\73", -"\54", "\56", "\75", "\76", "\100\147\164", "\74", "\100\154\164", "\41", "\176", -"\75\75", "\74\75", "\100\154\164\145\161", "\76\75", "\100\147\164\145\161", "\41\75", -"\174\174", "\100\157\162", "\46\46", "\100\141\156\144", "\53\53", "\55\55", "\53", "\55", -"\52", "\57", "\46", "\100\142\151\164\167\151\163\145\137\141\156\144", "\174", -"\100\142\151\164\167\151\163\145\137\157\162", "\136", "\100\142\151\164\167\151\163\145\137\170\157\162", "\45", -"\100\155\157\144", "\52\52", "\100\160\157\167", "\74\74", +"\151\155\160\157\162\164", "\151\156\163\164\141\156\143\145\157\146", "\151\163", "\141\163", +"\151\156\164", "\151\156\164\145\162\146\141\143\145", "\154\157\156\147", +"\156\141\164\151\166\145", "\156\145\167", "\156\165\154\154", "\160\141\143\153\141\147\145", +"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", +"\162\145\164\165\162\156", "\163\150\157\162\164", "\163\164\141\164\151\143", +"\163\164\162\151\143\164\146\160", "\163\167\151\164\143\150", "\163\171\156\143\150\162\157\156\151\172\145\144", +"\164\162\141\156\163\151\145\156\164", "\164\150\162\157\167", "\164\150\162\157\167\163", "\164\162\165\145", +"\164\162\171", "\166\157\151\144", "\166\157\154\141\164\151\154\145", "\167\150\145\156", +"\167\150\151\154\145", null, null, null, null, null, null, null, null, null, null, null, null, null, +null, "\50", "\51", "\173", "\175", "\133", "\135", "\73", "\54", "\56", "\75", +"\76", "\100\147\164", "\74", "\100\154\164", "\41", "\176", "\75\75", "\74\75", +"\100\154\164\145\161", "\76\75", "\100\147\164\145\161", "\41\75", "\174\174", "\100\157\162", +"\46\46", "\100\141\156\144", "\53\53", "\55\55", "\53", "\55", "\52", "\57", "\46", +"\100\142\151\164\167\151\163\145\137\141\156\144", "\174", "\100\142\151\164\167\151\163\145\137\157\162", "\136", +"\100\142\151\164\167\151\163\145\137\170\157\162", "\45", "\100\155\157\144", "\52\52", "\100\160\157\167", "\74\74", "\100\154\145\146\164\137\163\150\151\146\164", "\76\76", "\100\162\151\147\150\164\137\163\150\151\146\164", "\76\76\76", "\100\162\151\147\150\164\137\165\156\163\151\147\156\145\144\137\163\150\151\146\164", "\53\75", "\55\75", "\52\75", "\57\75", "\46\75", "\100\141\156\144\137\141\163\163\151\147\156", "\174\75", "\100\157\162\137\141\163\163\151\147\156", "\136\75", @@ -2282,10 +2290,10 @@ public void SwitchTo(int lexState) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, }; static final long[] jjtoToken = { - 0x3ffffffffffff801L, 0xfffffffffffff9e4L, 0x3ffffffL, + 0xfffffffffffff801L, 0xffffffffffffcf21L, 0x1fffffffL, }; static final long[] jjtoSkip = { 0x7feL, 0x0L, 0x0L, diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTreeConstants.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTreeConstants.java index 518f778..0e3680d 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTreeConstants.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/ParserTreeConstants.java @@ -26,26 +26,28 @@ public interface ParserTreeConstants public int JJTPRIMARYEXPRESSION = 20; public int JJTMETHODINVOCATION = 21; public int JJTLAMBDAEXPRESSION = 22; - public int JJTPRIMARYSUFFIX = 23; - public int JJTLITERAL = 24; - public int JJTARGUMENTS = 25; - public int JJTALLOCATIONEXPRESSION = 26; - public int JJTARRAYDIMENSIONS = 27; - public int JJTLABELEDSTATEMENT = 28; - public int JJTSWITCHSTATEMENT = 29; - public int JJTSWITCHLABEL = 30; - public int JJTIFSTATEMENT = 31; - public int JJTWHILESTATEMENT = 32; - public int JJTFORSTATEMENT = 33; - public int JJTENHANCEDFORSTATEMENT = 34; - public int JJTTYPEDVARIABLEDECLARATION = 35; - public int JJTSTATEMENTEXPRESSIONLIST = 36; - public int JJTRETURNSTATEMENT = 37; - public int JJTTHROWSTATEMENT = 38; - public int JJTTRYSTATEMENT = 39; - public int JJTMULTICATCH = 40; - public int JJTTRYWITHRESOURCES = 41; - public int JJTAUTOCLOSEABLE = 42; + public int JJTWHENEXPRESSION = 23; + public int JJTWHENENTRY = 24; + public int JJTPRIMARYSUFFIX = 25; + public int JJTLITERAL = 26; + public int JJTARGUMENTS = 27; + public int JJTALLOCATIONEXPRESSION = 28; + public int JJTARRAYDIMENSIONS = 29; + public int JJTLABELEDSTATEMENT = 30; + public int JJTSWITCHSTATEMENT = 31; + public int JJTSWITCHLABEL = 32; + public int JJTIFSTATEMENT = 33; + public int JJTWHILESTATEMENT = 34; + public int JJTFORSTATEMENT = 35; + public int JJTENHANCEDFORSTATEMENT = 36; + public int JJTTYPEDVARIABLEDECLARATION = 37; + public int JJTSTATEMENTEXPRESSIONLIST = 38; + public int JJTRETURNSTATEMENT = 39; + public int JJTTHROWSTATEMENT = 40; + public int JJTTRYSTATEMENT = 41; + public int JJTMULTICATCH = 42; + public int JJTTRYWITHRESOURCES = 43; + public int JJTAUTOCLOSEABLE = 44; public String[] jjtNodeName = { @@ -72,6 +74,8 @@ public interface ParserTreeConstants "PrimaryExpression", "MethodInvocation", "LambdaExpression", + "WhenExpression", + "WhenEntry", "PrimarySuffix", "Literal", "Arguments", @@ -94,4 +98,4 @@ public interface ParserTreeConstants "AutoCloseable", }; } -/* ParserGeneratorCC - OriginalChecksum=8f20f6be71fceaf418d56fe7f536b30f (do not edit this line) */ +/* ParserGeneratorCC - OriginalChecksum=ffec6fb3060f8e5edbf35756f68095b0 (do not edit this line) */ diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/Primitive.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/Primitive.java index d5d83e7..1e4834f 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/Primitive.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/Primitive.java @@ -54,6 +54,7 @@ public final class Primitive implements Serializable { static final Map, Class> wrapperMap = new HashMap<>(); static { + wrapperMap.put( Void.TYPE, Void.class ); wrapperMap.put( Boolean.TYPE, Boolean.class ); wrapperMap.put( Byte.TYPE, Byte.class ); wrapperMap.put( Short.TYPE, Short.class ); @@ -62,6 +63,7 @@ public final class Primitive implements Serializable { wrapperMap.put( Long.TYPE, Long.class ); wrapperMap.put( Float.TYPE, Float.class ); wrapperMap.put( Double.TYPE, Double.class ); + wrapperMap.put( Void.class, Void.TYPE ); wrapperMap.put( Boolean.class, Boolean.TYPE ); wrapperMap.put( Byte.class, Byte.TYPE ); wrapperMap.put( Short.class, Short.TYPE ); diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/Types.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/Types.java index f8fa5ca..870ba2e 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/Types.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/Types.java @@ -28,7 +28,11 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Proxy; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; import java.math.BigDecimal; import java.math.BigInteger; import java.util.AbstractMap.SimpleEntry; @@ -208,6 +212,64 @@ static boolean isAssignable(Class from, Class to, int round) { } } + static boolean isAssignable(Class from, Type to, int round) { + if (to instanceof Class) // Handle a simple type ( like void or Integer ) + return isAssignable(from, (Class) to, round); + + if (to instanceof ParameterizedType) // Handle parameterized types (like List) + return isAssignable(from, ((ParameterizedType) to).getRawType(), round); + + if (to instanceof TypeVariable) { // Handle type variables (like T or R) + TypeVariable typeVar = (TypeVariable) to; + for (Type bound: typeVar.getBounds()) + if (!isAssignable(from, bound, round)) + return false; + return true; + } + + if (to instanceof WildcardType) { // Handle wildcards (like ? extends Number) + WildcardType wildcardType = (WildcardType) to; + for (Type bound: wildcardType.getUpperBounds()) + if (!isAssignable(from, bound, round)) + return false; + for (Type bound: wildcardType.getLowerBounds()) + if (!isAssignable(bound, from, round)) + return false; + return true; + } + + return to == null; + } + + static boolean isAssignable(Type from, Class to, int round) { + if (from instanceof Class) // Handle a simple type ( like void or Integer ) + return isAssignable(from, (Class) to, round); + + if (from instanceof ParameterizedType) // Handle parameterized types (like List) + return isAssignable(((ParameterizedType) from).getRawType(), to, round); + + if (from instanceof TypeVariable) { // Handle type variables (like T or R) + TypeVariable typeVar = (TypeVariable) from; + for (Type bound: typeVar.getBounds()) + if (!isAssignable(bound, to, round)) + return false; + return true; + } + + if (from instanceof WildcardType) { // Handle wildcards (like ? extends Number) + WildcardType wildcardType = (WildcardType) from; + for (Type bound: wildcardType.getUpperBounds()) + if (!isAssignable(bound, to, round)) + return false; + for (Type bound: wildcardType.getLowerBounds()) + if (!isAssignable(to, bound, round)) + return false; + return true; + } + + return to == null; + } + /** Is the 'from' signature (argument types) assignable to the 'to' signature (candidate method types) @@ -226,6 +288,17 @@ static boolean isSignatureAssignable( Class[] from, Class[] to, int round return true; } + static boolean isSignatureAssignable( Class[] from, Type[] to, int round ) + { + if ( round != JAVA_VARARGS_ASSIGNABLE && from.length != to.length ) + return false; + + for (int i = 0; i < from.length; i++) + if (!isAssignable(from[i], to[i], round)) + return false; + return true; + } + /** * Are the two signatures exactly equal? This is checked for a special * case in overload resolution. @@ -763,6 +836,7 @@ public static boolean isCollectionType(Class clas) { *
*/ public static String prettyName(Class clas) { + if (clas == null) return "null"; if (!clas.isArray()) return clas.getName(); // Return a string like "int[]", "double[]", "double[][]", etc... @@ -770,6 +844,65 @@ public static String prettyName(Class clas) { return prettyName(arrayType) + "[]"; } + public static String[] prettyNames(Type[] types) { + String[] result = new String[types.length]; + for (int i = 0; i < types.length; i++) result[i] = prettyName(types[i]); + return result; + } + + public static String prettyName(Type type) { + return prettyName(type, true); + } + + private static String prettyName(Type type, boolean showTypeVariableBounds) { + if (type instanceof Class) // Handle a simple type ( like void or Integer ) + return prettyName((Class) type); + + if (type instanceof ParameterizedType) { // Handle parameterized types (like List) + ParameterizedType paramType = (ParameterizedType) type; + Type[] params = paramType.getActualTypeArguments(); + String[] paramsNames = new String[params.length]; + for (int i = 0; i < params.length; i++) paramsNames[i] = prettyName(params[i], false); + return String.format("%s<%s>", prettyName(paramType.getRawType()), String.join(", ", paramsNames)); + } + + if (type instanceof TypeVariable) { // Handle type variables (like T or R) + TypeVariable typeVar = (TypeVariable) type; + + Type[] bounds = typeVar.getBounds(); + if (!showTypeVariableBounds || (bounds.length == 1 && bounds[0] == Object.class)) return typeVar.getName(); + + String[] boundsStr = new String[bounds.length]; + for (int i = 0; i < bounds.length; i++) boundsStr[i] = prettyName(bounds[i]); + + return String.format("%s extends %s", typeVar.getName(), String.join(" & ", boundsStr)); + } + + if (type instanceof WildcardType) { // Handle wildcards (like '? extends Number' and '? super Integer') + WildcardType wildcardType = (WildcardType) type; + + Type[] upperBounds = wildcardType.getUpperBounds(); + if (upperBounds[0] != Object.class) { + String[] upperBoundsStr = new String[upperBounds.length]; + for (int i = 0; i < upperBounds.length; i++) upperBoundsStr[i] = prettyName(upperBounds[i]); + return String.format("? extends %s", String.join(" & ", upperBoundsStr)); + } + + Type[] lowerBounds = wildcardType.getLowerBounds(); + if (lowerBounds.length != 0) { + String[] lowerBoundsStr = new String[lowerBounds.length]; + for (int i = 0; i < lowerBounds.length; i++) lowerBoundsStr[i] = prettyName(lowerBounds[i]); + return String.format("? super %s", String.join(" & ", lowerBoundsStr)); + } + + return "?"; + } + + if (type == null) return "null"; + + throw new RuntimeException("Can't return a pretty name because the type is unknown!"); + } + public static boolean isObjectClassMethod(Method m) { try { Object.class.getMethod(m.getName(), m.getParameterTypes()); @@ -780,12 +913,12 @@ public static boolean isObjectClassMethod(Method m) { } /** Returns if a specific class is a functional interface */ - public static boolean isFunctionalInterface(Class clas) { - if (clas == null || !clas.isInterface()) return false; - if (clas.getAnnotation(FunctionalInterface.class) != null) return true; + public static boolean isFunctionalInterface(Class _class) { + if (_class == null || !_class.isInterface()) return false; + if (_class.getAnnotation(FunctionalInterface.class) != null) return true; int abstractCount = 0; - for (Method m : clas.getMethods()) { + for (Method m : _class.getMethods()) { if ( Modifier.isAbstract(m.getModifiers()) && !m.isBridge() && !m.isSynthetic() @@ -794,4 +927,166 @@ public static boolean isFunctionalInterface(Class clas) { } return abstractCount == 1; } + + public static bsh.org.objectweb.asm.Type getASMType(Class type) { + return bsh.org.objectweb.asm.Type.getType(type); + } + + public static String getInternalName(Class type) { + return bsh.org.objectweb.asm.Type.getInternalName(type); + } + + public static String[] getInternalNames(Class[] types) { + final String[] internalNames = new String[types.length]; + for (int i = 0; i < types.length; i++) internalNames[i] = bsh.org.objectweb.asm.Type.getInternalName(types[i]); + return internalNames; + } + + public static String getDescriptor(Class type) { + return bsh.org.objectweb.asm.Type.getDescriptor(type); + } + + public static String getMethodDescriptor(Method method) { + return bsh.org.objectweb.asm.Type.getMethodDescriptor(method); + } + + public static String getMethodDescriptor(Class returnType, Class ...argumentTypes) { + final bsh.org.objectweb.asm.Type[] _types = new bsh.org.objectweb.asm.Type[argumentTypes.length]; + for (int i = 0; i < argumentTypes.length; i++) _types[i] = bsh.org.objectweb.asm.Type.getType(argumentTypes[i]); + return bsh.org.objectweb.asm.Type.getMethodDescriptor(bsh.org.objectweb.asm.Type.getType(returnType), _types); + } + + // Helper method to convert Type to ASM style signature + /** Return the signature of a specific type to be used in ASM bytecodes */ + public static String getASMSignature(Type type) { + if (type instanceof Class) return bsh.org.objectweb.asm.Type.getDescriptor((Class) type); // Handle a simple type ( like void or Integer ) + + if (type instanceof ParameterizedType) { // Handle parameterized types (like List) + ParameterizedType paramType = (ParameterizedType) type; + StringBuilder paramSignature = new StringBuilder(); + paramSignature.append("L" + bsh.org.objectweb.asm.Type.getInternalName((Class) paramType.getRawType())); // Base type + paramSignature.append("<"); + for (Type arg : paramType.getActualTypeArguments()) { + paramSignature.append(getASMSignature(arg)); + } + paramSignature.append(">;"); + return paramSignature.toString(); + } + + if (type instanceof TypeVariable) // Handle type variables (like T or R) + return "T" + ((TypeVariable) type).getName() + ";"; + + if (type instanceof WildcardType) { // Handle wildcards (like ? extends Number) + WildcardType wildcard = (WildcardType) type; + Type[] lowerBounds = wildcard.getLowerBounds(); + return lowerBounds.length > 0 + ? "-" + bsh.org.objectweb.asm.Type.getDescriptor((Class) lowerBounds[0]) + : "+" + bsh.org.objectweb.asm.Type.getDescriptor((Class) wildcard.getUpperBounds()[0]); + } + + throw new IllegalArgumentException("Can't get the signature of this type because its Class is unknown: " + (type != null ? type.getClass() : null)); + } + + // TODO: testes com enums, interfaces e classes + public static String getASMClassSignature(TypeVariable[] types, Type superClass, Type ...interfaces) { + StringBuilder signature = new StringBuilder(); + + // 1. Extract type parameters (generics) + if (types.length != 0) { + signature.append("<"); + for (TypeVariable typeParam : types) { + signature.append(typeParam.getName()); // Add the type variable (e.g.: "T") + + for (Type bound : typeParam.getBounds()) // Add the bound of the type variable (e.g.: 'extends Number' => ":Ljava/lang/Number;") + signature.append(":").append(getASMSignature(bound)); + } + signature.append(">"); + } + + // 2. Add the superclass in the signature + signature.append(getASMSignature(superClass)); // All wrapper classes doesn't have a superclass, thus extends Object + + // 3. Add interfaces in the signature + for (Type interface_: interfaces) signature.append(getASMSignature(interface_)); + + return signature.toString(); + } + + // TODO: testes com vários métodos + public static String getASMMethodSignature(Method method) { + return getASMMethodSignature(method.getTypeParameters(), method.getGenericParameterTypes(), method.getGenericReturnType(), method.getGenericExceptionTypes()); + } + + public static String getASMMethodSignature(TypeVariable[] types, Type[] params, Type returnType, Type[] exceptions) { + StringBuilder signature = new StringBuilder(); + + // 1. Handle generic type parameters (if any) + if (types.length > 0) { + signature.append("<"); + for (TypeVariable typeParam : types) { + signature.append(typeParam.getName()); // Add type variable (e.g., "T") + for (Type bound : typeParam.getBounds()) + signature.append(":").append(getASMSignature(bound)); // Add the bound + } + signature.append(">"); + } + + // 2. Add the method parameter types + signature.append("("); + for (Type param : params) signature.append(getASMSignature(param)); + signature.append(")"); + + // 3. Add the return type + signature.append(getASMSignature(returnType)); + + // 4. Add the exception types (if any) + for (Type exceptionType : exceptions) signature.append("^").append(getASMSignature(exceptionType)); + + return signature.toString(); + } + + // if (type instanceof ParameterizedType) { // Handle parameterized types (like List) + // ParameterizedType paramType = (ParameterizedType) type; + // StringBuilder paramSignature = new StringBuilder(); + // paramSignature.append("L" + bsh.org.objectweb.asm.Type.getInternalName((Class) paramType.getRawType())); // Base type + // paramSignature.append("<"); + // for (Type arg : paramType.getActualTypeArguments()) { + // paramSignature.append(getASMSignature(arg)); + // } + // paramSignature.append(">;"); + // return paramSignature.toString(); + // } + + // // if (type instanceof TypeVariable) // Handle type variables (like T or R) + // // return "T" + ((TypeVariable) type).getName() + ";"; + // public static TypeVariable createTypeVariable(String name, Type[] bounds) { + // // TODO: see it! + // // bounds = bounds == null || bounds.length == 0 ? new Type[] { Object.class } : bounds; + + // return new TypeVariable() { + // public String getName() { return name; } + // public T getAnnotation(Class annotationClass) { return null; } + // public Annotation[] getAnnotations() { return new Annotation[0]; } + // public Annotation[] getDeclaredAnnotations() { return new Annotation[0]; } + // public AnnotatedType[] getAnnotatedBounds() { throw new UnsupportedOperationException("Unimplemented method 'getAnnotatedBounds'"); } + // public Type[] getBounds() { return bounds; } + // public GenericDeclaration getGenericDeclaration() { throw new UnsupportedOperationException("Unimplemented method 'getGenericDeclaration'"); }; + // }; + // } + public static ParameterizedType createParameterizedType(Type rawType, Type[] typeArguments) { + return new ParameterizedType() { + public Type[] getActualTypeArguments() { return typeArguments; } + public Type getRawType() { return rawType; } + public Type getOwnerType() { return null; } + }; + } + + // if (type instanceof WildcardType) { // Handle wildcards (like ? extends Number) + // WildcardType wildcard = (WildcardType) type; + // Type[] lowerBounds = wildcard.getLowerBounds(); + // return lowerBounds.length > 0 + // ? "-" + bsh.org.objectweb.asm.Type.getDescriptor((Class) lowerBounds[0]) + // : "+" + bsh.org.objectweb.asm.Type.getDescriptor((Class) wildcard.getUpperBounds()[0]); + // } + } diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/AnnotationIgnorePreprocess.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/AnnotationIgnorePreprocess.java new file mode 100644 index 0000000..3a2e9d9 --- /dev/null +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/AnnotationIgnorePreprocess.java @@ -0,0 +1,259 @@ +package bsh.preprocess; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * Removes Java/Kotlin annotation usages from script text while preserving + * BeanShell @-operator aliases (e.g. @gt, @and, @pow_assign). + */ +public final class AnnotationIgnorePreprocess { + private static final Set BSH_AT_OPERATORS = new HashSet(Arrays.asList( + "gt", "lt", "lteq", "gteq", "or", "and", + "bitwise_and", "bitwise_or", "bitwise_xor", + "mod", "pow", "left_shift", "right_shift", "right_unsigned_shift", + "and_assign", "or_assign", "xor_assign", "mod_assign", "pow_assign", + "left_shift_assign", "right_shift_assign", "right_unsigned_shift_assign" + )); + + private AnnotationIgnorePreprocess() { + } + + public static String rewrite(String source) { + if (source == null || source.indexOf('@') < 0) { + return source; + } + + final int len = source.length(); + StringBuilder out = new StringBuilder(len); + int i = 0; + + while (i < len) { + int skip = skipLiteralOrComment(source, i); + if (skip > i) { + out.append(source, i, skip); + i = skip; + continue; + } + + if (source.charAt(i) != '@') { + out.append(source.charAt(i)); + i++; + continue; + } + + int operatorEnd = parseBshOperatorAlias(source, i); + if (operatorEnd > i) { + out.append(source, i, operatorEnd); + i = operatorEnd; + continue; + } + + int annotationEnd = parseAnnotationEnd(source, i); + if (annotationEnd > i) { + // Keep line separators stable while removing annotation tokens. + for (int j = i; j < annotationEnd; j++) { + char c = source.charAt(j); + if (c == '\n' || c == '\r') { + out.append(c); + } + } + i = annotationEnd; + while (i < len && (source.charAt(i) == ' ' || source.charAt(i) == '\t')) { + i++; + } + continue; + } + + out.append('@'); + i++; + } + + return out.toString(); + } + + private static int parseBshOperatorAlias(String source, int atPos) { + int len = source.length(); + int start = atPos + 1; + if (start >= len || !isAliasPart(source.charAt(start))) { + return -1; + } + int end = start; + while (end < len && isAliasPart(source.charAt(end))) { + end++; + } + String alias = source.substring(start, end); + if (!BSH_AT_OPERATORS.contains(alias)) { + return -1; + } + if (end < len && Character.isJavaIdentifierPart(source.charAt(end))) { + return -1; + } + return end; + } + + private static int parseAnnotationEnd(String source, int atPos) { + int len = source.length(); + int i = atPos + 1; + if (i >= len || !Character.isJavaIdentifierStart(source.charAt(i))) { + return -1; + } + + while (i < len && Character.isJavaIdentifierPart(source.charAt(i))) { + i++; + } + if (source.substring(atPos + 1, i).equals("interface")) { + return -1; + } + + while (i < len && source.charAt(i) == '.') { + int segStart = ++i; + if (segStart >= len || !Character.isJavaIdentifierStart(source.charAt(segStart))) { + return -1; + } + while (i < len && Character.isJavaIdentifierPart(source.charAt(i))) { + i++; + } + } + + while (i < len && isInlineWhitespace(source.charAt(i))) { + i++; + } + + if (i < len && source.charAt(i) == '(') { + int end = findMatchingParen(source, i); + if (end < 0) { + return -1; + } + i = end + 1; + } + return i; + } + + private static int findMatchingParen(String source, int openPos) { + final int len = source.length(); + int depth = 0; + for (int i = openPos; i < len; i++) { + int skip = skipLiteralOrComment(source, i); + if (skip > i) { + i = skip - 1; + continue; + } + + char ch = source.charAt(i); + if (ch == '(') { + depth++; + } else if (ch == ')') { + depth--; + if (depth == 0) { + return i; + } + } + } + return -1; + } + + private static int skipLiteralOrComment(String source, int i) { + final int len = source.length(); + if (i >= len) { + return i; + } + char ch = source.charAt(i); + + if (ch == '"') { + if (isTripleQuote(source, i)) { + int end = findTripleQuoteEnd(source, i + 3); + return end < 0 ? len : end + 3; + } + int end = findNormalStringEnd(source, i + 1); + return end < 0 ? len : end + 1; + } + + if (ch == '\'') { + int end = findCharLiteralEnd(source, i + 1); + return end < 0 ? len : end + 1; + } + + if (ch == '/' && i + 1 < len) { + char next = source.charAt(i + 1); + if (next == '/') { + int j = i + 2; + while (j < len && source.charAt(j) != '\n' && source.charAt(j) != '\r') { + j++; + } + return j; + } + if (next == '*') { + int end = findBlockCommentEnd(source, i + 2); + return end < 0 ? len : end + 2; + } + } + + return i; + } + + private static int findNormalStringEnd(String text, int start) { + for (int i = start; i < text.length(); i++) { + char ch = text.charAt(i); + if (ch == '\\') { + i++; + continue; + } + if (ch == '"') { + return i; + } + } + return -1; + } + + private static int findCharLiteralEnd(String text, int start) { + for (int i = start; i < text.length(); i++) { + char ch = text.charAt(i); + if (ch == '\\') { + i++; + continue; + } + if (ch == '\'') { + return i; + } + if (ch == '\n' || ch == '\r') { + return -1; + } + } + return -1; + } + + private static int findBlockCommentEnd(String text, int start) { + for (int i = start; i + 1 < text.length(); i++) { + if (text.charAt(i) == '*' && text.charAt(i + 1) == '/') { + return i; + } + } + return -1; + } + + private static boolean isTripleQuote(String text, int index) { + return index + 2 < text.length() + && text.charAt(index) == '"' + && text.charAt(index + 1) == '"' + && text.charAt(index + 2) == '"'; + } + + private static int findTripleQuoteEnd(String text, int start) { + for (int i = start; i + 2 < text.length(); i++) { + if (isTripleQuote(text, i)) { + return i; + } + } + return -1; + } + + private static boolean isAliasPart(char ch) { + return ch == '_' || Character.isLetterOrDigit(ch); + } + + private static boolean isInlineWhitespace(char ch) { + return ch == ' ' || ch == '\t' || ch == '\f'; + } +} diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/DefaultArgsDesugar.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/DefaultArgsDesugar.java index c920adf..26960c7 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/DefaultArgsDesugar.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/preprocess/DefaultArgsDesugar.java @@ -134,9 +134,8 @@ private static MethodShape tryParseMethodShape(String source, int openParen) { return null; } - int bodyStart = skipThrowsClause(source, next); - bodyStart = skipWsAndCommentsForward(source, bodyStart); - if (bodyStart >= source.length() || source.charAt(bodyStart) != '{') { + int bodyStart = findMethodBodyStart(source, closeParen + 1); + if (bodyStart < 0) { return null; } @@ -170,8 +169,10 @@ private static MethodRewrite tryRewriteMethod( int declStart = shape.declStart; int closeParen = findMatching(source, openParen, '(', ')'); String prefix = source.substring(declStart, openParen); - int next = skipWsAndCommentsForward(source, closeParen + 1); - int bodyStart = skipWsAndCommentsForward(source, skipThrowsClause(source, next)); + int bodyStart = findMethodBodyStart(source, closeParen + 1); + if (bodyStart < 0) { + return null; + } String betweenParenAndBody = source.substring(closeParen + 1, bodyStart); int bodyEnd = findMatching(source, bodyStart, '{', '}'); String body = source.substring(bodyStart, bodyEnd + 1); @@ -542,11 +543,50 @@ private static int findDeclarationStart(String source, int methodNameStart) { if (ch == ';' || ch == '{' || ch == '}') { break; } + if (ch == '\n' || ch == '\r') { + int lineStart = i; + while (lineStart > 0) { + char c = source.charAt(lineStart - 1); + if (c == '\n' || c == '\r') { + break; + } + lineStart--; + } + + String line = source.substring(lineStart, i).trim(); + if (line.isEmpty()) { + break; + } + if (line.startsWith("@") || isModifierOnlyLine(line)) { + i--; + continue; + } + break; + } i--; } return i; } + private static boolean isModifierOnlyLine(String line) { + if (line.startsWith("//") || line.startsWith("/*") || line.startsWith("*")) { + return false; + } + String[] tokens = line.split("\\s+"); + if (tokens.length == 0) { + return false; + } + for (String token : tokens) { + if (token.isEmpty()) { + continue; + } + if (!METHOD_MODIFIERS.contains(token)) { + return false; + } + } + return true; + } + private static int skipThrowsClause(String source, int index) { int i = skipWsAndCommentsForward(source, index); if (!startsWithWord(source, i, "throws")) { @@ -555,19 +595,64 @@ private static int skipThrowsClause(String source, int index) { i += "throws".length(); int len = source.length(); + boolean needType = true; while (i < len) { - int skip = skipLiteralOrComment(source, i); - if (skip > i) { - i = skip; - continue; + i = skipWsAndCommentsForward(source, i); + if (i >= len) { + return -1; } + char ch = source.charAt(i); - if (ch == '{' || ch == ';') { - return i; + if (ch == '{') { + return needType ? -1 : i; } - i++; + if (ch == ';') { + return -1; + } + + if (needType) { + if (!Character.isJavaIdentifierStart(ch)) { + return -1; + } + i++; + while (i < len) { + char c = source.charAt(i); + if (Character.isJavaIdentifierPart(c) || c == '.' || c == '$') { + i++; + continue; + } + break; + } + needType = false; + continue; + } + + if (ch == ',') { + needType = true; + i++; + continue; + } + return -1; } - return i; + return -1; + } + + private static int findMethodBodyStart(String source, int afterCloseParen) { + int next = skipWsAndCommentsForward(source, afterCloseParen); + if (next >= source.length()) { + return -1; + } + if (startsWithWord(source, next, "throws")) { + int afterThrows = skipThrowsClause(source, next); + if (afterThrows < 0) { + return -1; + } + next = skipWsAndCommentsForward(source, afterThrows); + } + if (next < source.length() && source.charAt(next) == '{') { + return next; + } + return -1; } private static boolean startsWithWord(String source, int index, String word) { diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/MainSecurityGuard.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/MainSecurityGuard.java index 0881751..b4a93d0 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/MainSecurityGuard.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/MainSecurityGuard.java @@ -73,6 +73,7 @@ private void canInvokeStaticMethodImplToReflectionCanGetArrayLength(Class _cl public void canInvokeMethod(Object thisArg, String methodName, Object[] args) throws SecurityError { final Object[] _args = Primitive.unwrap(args); this.canInvokeMethodImpl(thisArg, methodName, _args); + this.canInvokeMethodImplToReflectionCanSetField(thisArg, methodName, _args); this.canInvokeMethodImplToReflectionCanGetField(thisArg, methodName, _args); this.canInvokeMethodImplToReflectionCanConstruct(thisArg, methodName, _args); this.canInvokeMethodImplToReflectionCanInvokeMethod(thisArg, methodName, _args); @@ -109,6 +110,31 @@ private final void canInvokeMethodImplToReflectionCanGetField(Object thisArg, St } } + /** Validate if can set a field when using Reflection API */ + private final void canInvokeMethodImplToReflectionCanSetField(Object thisArg, String methodName, Object[] args) throws SecurityError { + if (!methodName.equals("set") || args.length != 2 || !(thisArg instanceof Field)) return; + + Field field = (Field) thisArg; + String fieldName = field.getName(); + Object value = args[1]; + + if (Reflect.isStatic(field)) { + Class _class = field.getDeclaringClass(); + try { + this.canSetStaticField(_class, fieldName, value); + } catch (SecurityError error) { + throw SecurityError.reflectCantSetStaticField(_class, fieldName, value); + } + } else { + Object _thisArg = args[0]; + try { + this.canSetField(_thisArg, fieldName, value); + } catch (SecurityError error) { + throw SecurityError.reflectCantSetField(_thisArg, fieldName, value); + } + } + } + /** Validate if can invoke a method when using Reflection API */ private final void canInvokeMethodImplToReflectionCanInvokeMethod(Object thisArg, String methodName, Object[] args) throws SecurityError { if (!methodName.equals("invoke") || args.length == 0 || !(thisArg instanceof Method)) return; @@ -170,6 +196,22 @@ public void canInvokeLocalMethod(String methodName, Object[] args) throws Securi throw SecurityError.cantInvokeLocalMethod(methodName, _args); } + /** Validate if can set a field of a specific object */ + public void canSetField(Object thisArg, String fieldName, Object value) throws SecurityError { + final Object _value = Primitive.unwrap(value); + for (SecurityGuard guard: this.securityGuards) + if (!guard.canSetField(thisArg, fieldName, _value)) + throw SecurityError.cantSetField(thisArg, fieldName, _value); + } + + /** Validate if can set a static field of a specific class */ + public void canSetStaticField(Class _class, String fieldName, Object value) throws SecurityError { + final Object _value = Primitive.unwrap(value); + for (SecurityGuard guard: this.securityGuards) + if (!guard.canSetStaticField(_class, fieldName, _value)) + throw SecurityError.cantSetStaticField(_class, fieldName, _value); + } + /** Validate if can get a field of a specific object */ public void canGetField(Object thisArg, String fieldName) throws SecurityError { for (SecurityGuard guard: this.securityGuards) @@ -211,6 +253,15 @@ public boolean canInvokeMethod(Object thisArg, String methodName, Object[] args) return !(thisArg instanceof MainSecurityGuard); } + public boolean canSetField(Object thisArg, String fieldName, Object value) { + return !(thisArg instanceof MainSecurityGuard); + } + + public boolean canSetStaticField(Class _class, String fieldName, Object value) { + if (_class == Interpreter.class && fieldName.equals("mainSecurityGuard")) return false; + return true; + } + public boolean canGetStaticField(Class _class, String fieldName) { if (_class == Interpreter.class && fieldName.equals("mainSecurityGuard")) return false; return true; diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityError.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityError.java index 5c17558..72a201c 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityError.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityError.java @@ -1,8 +1,5 @@ package bsh.security; -import java.util.ArrayList; -import java.util.List; - import bsh.CallStack; import bsh.EvalError; import bsh.Node; @@ -78,6 +75,34 @@ static SecurityError cantInvokeLocalMethod(String methodName, Object[] args) { return new SecurityError(msg); } + /** Create a error for when can't set a field */ + static SecurityError cantSetField(Object thisArg, String fieldName, Object value) { + String msg = String.format("Can't set this field: %s.%s (%s)", + thisArg.getClass().getTypeName(), fieldName, argsTypesString(new Object[] { value })); + return new SecurityError(msg); + } + + /** Create a error for when can't set a field using reflection */ + static SecurityError reflectCantSetField(Object thisArg, String fieldName, Object value) { + String msg = String.format("Can't set this field using reflection: %s.%s (%s)", + thisArg.getClass().getTypeName(), fieldName, argsTypesString(new Object[] { value })); + return new SecurityError(msg); + } + + /** Create a error for when can't set a static field */ + static SecurityError cantSetStaticField(Class _class, String fieldName, Object value) { + String msg = String.format("Can't set this static field: %s.%s (%s)", + _class.getTypeName(), fieldName, argsTypesString(new Object[] { value })); + return new SecurityError(msg); + } + + /** Create a error for when can't set a static field using reflection */ + static SecurityError reflectCantSetStaticField(Class _class, String fieldName, Object value) { + String msg = String.format("Can't set this static field using reflection: %s.%s (%s)", + _class.getTypeName(), fieldName, argsTypesString(new Object[] { value })); + return new SecurityError(msg); + } + /** Create a error for when can't get a field */ static SecurityError cantGetField(Object thisArg, String fieldName) { String msg = String.format("Can't get this field: %s.%s", thisArg.getClass().getTypeName(), fieldName); diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityGuard.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityGuard.java index 219f6f3..de19545 100644 --- a/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityGuard.java +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/security/SecurityGuard.java @@ -27,7 +27,15 @@ public default boolean canInvokeLocalMethod(String methodName, Object[] args) { return true; } - // TODO: implement a 'canSetField' and 'canSetStaticField' + /** Validate and return if can set a field of a specific object */ + public default boolean canSetField(Object thisArg, String fieldName, Object value) { + return true; + } + + /** Validate and return if can set a static field of a specific class */ + public default boolean canSetStaticField(Class _class, String fieldName, Object value) { + return true; + } /** Validate and return if can get a field of a specific object */ public default boolean canGetField(Object thisArg, String fieldName) { diff --git a/bsh-lambda-300-eee36c8/src/main/java/bsh/util/Util.java b/bsh-lambda-300-eee36c8/src/main/java/bsh/util/Util.java new file mode 100644 index 0000000..fea9b18 --- /dev/null +++ b/bsh-lambda-300-eee36c8/src/main/java/bsh/util/Util.java @@ -0,0 +1,64 @@ +/***************************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + * * + * * + * This file is part of the BeanShell Java Scripting distribution. * + * Documentation and updates may be found at http://www.beanshell.org/ * + * Patrick Niemeyer (pat@pat.net) * + * Author of Learning Java, O'Reilly & Associates * + * * + *****************************************************************************/ +package bsh.util; + +import java.lang.reflect.Array; + +/** + Misc utilities for the bsh.util package. + Nothing in the core language (bsh package) should depend on this. + Note: that promise is currently broken... fix it. +*/ +public class Util +{ + /** Just concat 2 arrays */ + @SuppressWarnings("unchecked") + public static T[] concatArrays(T[] ...arrays) { + if (arrays.length == 0) throw new NullPointerException("There is no arrays to concat!"); + if (arrays.length == 1) return arrays[0]; + + int totalLength = 0; + for (T[] array: arrays) totalLength += array.length; + + final Class baseType = arrays[0].getClass().getComponentType(); + T[] result = (T[]) Array.newInstance(baseType, totalLength); + + int offset = 0; + for (T[] array: arrays) { + System.arraycopy(array, 0, result, offset, array.length); + offset += array.length; + } + + // final Class baseType = a.getClass().getComponentType(); + // T[] result = (T[]) Array.newInstance(baseType, a.length + b.length); + + // System.arraycopy(baseType, 0, result, 0, 0); + // for (int i = 0; i < a.length; i++) result[i] = a[i]; + // for (int i = 0; i < b.length; i++) result[i + a.length] = b[i]; + + return result; + } +} diff --git a/bsh-lambda-300-eee36c8/src/main/jjtree/bsh.jjt b/bsh-lambda-300-eee36c8/src/main/jjtree/bsh.jjt index 24e5b9e..9182739 100644 --- a/bsh-lambda-300-eee36c8/src/main/jjtree/bsh.jjt +++ b/bsh-lambda-300-eee36c8/src/main/jjtree/bsh.jjt @@ -444,6 +444,8 @@ TOKEN : /* RESERVED WORDS AND LITERALS */ | < IMPLEMENTS: "implements" > | < IMPORT: "import" > | < INSTANCEOF: "instanceof" > +| < IS: "is" > +| < AS: "as" > | < INT: "int" > | < INTERFACE: "interface" > | < LONG: "long" > @@ -467,6 +469,7 @@ TOKEN : /* RESERVED WORDS AND LITERALS */ | < TRY: "try" > | < VOID: "void" > | < VOLATILE: "volatile" > +| < WHEN: "when" > | < WHILE: "while" > } @@ -987,7 +990,13 @@ void InstanceOfExpression() : { Token t = null; } { RelationalExpression() - [t = Type() { jjtThis.kind = t.kind; } #BinaryExpression(2) ] + [ + (t = | t = ) Type() + { jjtThis.kind = t.kind; } #BinaryExpression(2) + | + t = Type() + { jjtThis.kind = t.kind; } #BinaryExpression(2) + ] } void RelationalExpression() : @@ -1086,11 +1095,30 @@ void LambdaExpression() #LambdaExpression : { jjtThis.singleParamName = t != null ? t.image : null; } } +void WhenExpression() #WhenExpression : +{} +{ + "when" "(" Expression() ")" "{" + ( WhenEntry() )+ + "}" +} + +void WhenEntry() #WhenEntry : +{ int count = 0; } +{ + "else" { jjtThis.isElse = true; } "->" Expression() +| + Expression() { count = 1; } ( "," Expression() { count++; } )* + "->" Expression() { jjtThis.numConditions = count; } +} + void PrimaryPrefix() : { } { Literal() | "(" Expression() ")" +| + WhenExpression() | AllocationExpression() |