diff --git a/.classpath b/.classpath index 17138751..73d9cd59 100644 --- a/.classpath +++ b/.classpath @@ -6,5 +6,6 @@ + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 3a215370..a698e596 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,6 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 diff --git a/bin/log4jTesting.xml b/bin/log4jTesting.xml deleted file mode 100755 index dc30c245..00000000 --- a/bin/log4jTesting.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/parser/BoundedParameter.jav b/bin/parser/BoundedParameter.jav deleted file mode 100644 index 6d7518a9..00000000 --- a/bin/parser/BoundedParameter.jav +++ /dev/null @@ -1,3 +0,0 @@ -class Matrix{ - String op = "String"; -} diff --git a/bin/parser/FieldInitializationTest.jav b/bin/parser/FieldInitializationTest.jav deleted file mode 100644 index 302667b9..00000000 --- a/bin/parser/FieldInitializationTest.jav +++ /dev/null @@ -1,3 +0,0 @@ -class FieldInitializationTest{ - String var = "hallo"; -} \ No newline at end of file diff --git a/bin/parser/GenericFieldVarTest.jav b/bin/parser/GenericFieldVarTest.jav deleted file mode 100644 index a47b41eb..00000000 --- a/bin/parser/GenericFieldVarTest.jav +++ /dev/null @@ -1,3 +0,0 @@ -class Test{ - A var; -} diff --git a/bin/parser/ImportTest.jav b/bin/parser/ImportTest.jav deleted file mode 100644 index 2de55cee..00000000 --- a/bin/parser/ImportTest.jav +++ /dev/null @@ -1,4 +0,0 @@ -import java.util.*; - -class ImportTest{ -} \ No newline at end of file diff --git a/doc/LambdaJavadoc/de/dhbwstuttgart/parser/JavaClassName.html b/doc/LambdaJavadoc/de/dhbwstuttgart/parser/JavaClassName.html index 97aaa791..f38b65ea 100644 --- a/doc/LambdaJavadoc/de/dhbwstuttgart/parser/JavaClassName.html +++ b/doc/LambdaJavadoc/de/dhbwstuttgart/parser/JavaClassName.html @@ -100,7 +100,7 @@ var activeTableTab = "activeTableTab";
  • java.lang.Object
    • -
    • de.dhbwstuttgart.parser.JavaClassName
    • +
    • de.dhbwstuttgart.typecheck.JavaClassName
  • diff --git a/doc/LambdaJavadoc/de/dhbwstuttgart/parser/class-use/JavaClassName.html b/doc/LambdaJavadoc/de/dhbwstuttgart/parser/class-use/JavaClassName.html index 71ba8f6f..5a0ee480 100644 --- a/doc/LambdaJavadoc/de/dhbwstuttgart/parser/class-use/JavaClassName.html +++ b/doc/LambdaJavadoc/de/dhbwstuttgart/parser/class-use/JavaClassName.html @@ -3,7 +3,7 @@ -Uses of Class de.dhbwstuttgart.parser.JavaClassName +Uses of Class de.dhbwstuttgart.typecheck.JavaClassName @@ -70,7 +70,7 @@
    -

    Uses of Class
    de.dhbwstuttgart.parser.JavaClassName

    +

    Uses of Class
    de.dhbwstuttgart.parser.JavaClassName

      diff --git a/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.html b/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.html index fcdf2197..77026755 100644 --- a/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.html +++ b/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.html @@ -112,7 +112,7 @@ var activeTableTab = "activeTableTab";
    • de.dhbwstuttgart.syntaxtree.type.GenericTypeVar
      • -
      • de.dhbwstuttgart.syntaxtree.type.BoundedGenericTypeVar
      • +
      • de.dhbwstuttgart.syntaxtree.GenericTypeVar
    diff --git a/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/class-use/BoundedGenericTypeVar.html b/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/class-use/BoundedGenericTypeVar.html index 1327735c..65cb922f 100644 --- a/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/class-use/BoundedGenericTypeVar.html +++ b/doc/LambdaJavadoc/de/dhbwstuttgart/syntaxtree/type/class-use/BoundedGenericTypeVar.html @@ -3,7 +3,7 @@ -Uses of Class de.dhbwstuttgart.syntaxtree.type.BoundedGenericTypeVar +Uses of Class de.dhbwstuttgart.syntaxtree.GenericTypeVar @@ -70,7 +70,7 @@
    -

    Uses of Class
    de.dhbwstuttgart.syntaxtree.type.BoundedGenericTypeVar

    +

    Uses of Class
    de.dhbwstuttgart.syntaxtree.BoundedGenericTypeVar

      diff --git a/lib/antlr-complete.jar b/lib/antlr-complete.jar new file mode 100755 index 00000000..8203e15e Binary files /dev/null and b/lib/antlr-complete.jar differ diff --git a/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java b/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java index d55f9daf..8d9a3fe9 100644 --- a/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java +++ b/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java @@ -1,10 +1,7 @@ package de.dhbwstuttgart.bytecode; -import de.dhbwstuttgart.syntaxtree.type.BoundedGenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.ObjectType; +import de.dhbwstuttgart.syntaxtree.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; public class BytecodeTypeFactory { @@ -12,7 +9,7 @@ public class BytecodeTypeFactory { /** * @see https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-FieldType */ - public static String generateFieldDescriptor(Type t){ + public static String generateFieldDescriptor(RefType t){ String ret = ""; if(t instanceof RefType){ ret += "L" + t.getName().toString().replace('.', '/') + ";"; @@ -40,15 +37,15 @@ public class BytecodeTypeFactory { return ret; } - public static String generateSuperClassSignature(Type superClass){ + public static String generateSuperClassSignature(RefType superClass){ String ret = ""; //TODO: throw new NotImplementedException(); } private static String generateTypeParameter(GenericTypeVar gtv){ - String ret = gtv.get_Name() + ":"; - for(ObjectType t : gtv.getBounds()){ + String ret = gtv.getName() + ":"; + for(RefType t : gtv.getBounds()){ ret += generateReferenceTypeSignature(t); ret += ":"; } @@ -66,17 +63,16 @@ public class BytecodeTypeFactory { /** * @see https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-ReferenceTypeSignature */ - private static String generateReferenceTypeSignature(Type t){ + private static String generateReferenceTypeSignature(RefType t){ if(t instanceof RefType)return generateReferenceTypeSignature((RefType)t); - if(t instanceof GenericTypeVar)return generateReferenceTypeSignature((GenericTypeVar)t); throw new NotImplementedException(); } private static String generateReferenceTypeSignature(RefType t){ - String ret = "L" + t.get_Name(); + String ret = "L" + t.getName(); if(t.getParaList() != null && t.getParaList().size() > 0){ ret += "<"; - for(Type p : t.getParaList()){ + for(RefType p : t.getParaList()){ ret += generateReferenceTypeSignature(p); } ret+=">"; diff --git a/src/de/dhbwstuttgart/bytecode/ClassGenerator.java b/src/de/dhbwstuttgart/bytecode/ClassGenerator.java index 2b8fe81e..1c4faf12 100644 --- a/src/de/dhbwstuttgart/bytecode/ClassGenerator.java +++ b/src/de/dhbwstuttgart/bytecode/ClassGenerator.java @@ -3,15 +3,12 @@ package de.dhbwstuttgart.bytecode; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Vector; import org.apache.bcel.classfile.BootstrapMethod; import org.apache.bcel.classfile.BootstrapMethods; -import org.apache.bcel.classfile.ConstantPool; import org.apache.bcel.classfile.InnerClass; import org.apache.bcel.classfile.InnerClasses; import org.apache.bcel.classfile.JavaClass; @@ -20,14 +17,12 @@ import org.apache.bcel.classfile.Signature; import org.apache.bcel.generic.ClassGen; import org.apache.bcel.generic.ConstantPoolGen; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResults; import de.dhbwstuttgart.typeinference.exceptions.DebugException; diff --git a/src/de/dhbwstuttgart/bytecode/MethodGenerator.java b/src/de/dhbwstuttgart/bytecode/MethodGenerator.java index 7784e5a9..f208f34d 100644 --- a/src/de/dhbwstuttgart/bytecode/MethodGenerator.java +++ b/src/de/dhbwstuttgart/bytecode/MethodGenerator.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.bytecode; +import java.awt.List; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; @@ -65,10 +66,11 @@ public class MethodGenerator extends MethodGen{ //TODO: Das ist schlecht! Der Parser oder der Typinferenzalgorithmus muss dafür sorgen, dass sich in jeder Methode ein Return befindet. if (block.get_Statement().size() == 0) { il.append(factory.createReturn( org.apache.bcel.generic.Type.VOID)); } else { - if (!(block.get_Statement().lastElement() instanceof Return) && - this.getType().equals(org.apache.bcel.generic.Type.VOID)) { - il.append(factory.createReturn( org.apache.bcel.generic.Type.VOID)); - } + java.util.List stmts = block.get_Statement(); + if (!(stmts.get(stmts.size()-1) instanceof Return) && + this.getType().equals(org.apache.bcel.generic.Type.VOID)) { + il.append(factory.createReturn( org.apache.bcel.generic.Type.VOID)); + } } method.getInstructionList().setPositions(); diff --git a/src/de/dhbwstuttgart/core/AClassOrInterface.java b/src/de/dhbwstuttgart/core/AClassOrInterface.java deleted file mode 100755 index db2df4fd..00000000 --- a/src/de/dhbwstuttgart/core/AClassOrInterface.java +++ /dev/null @@ -1,209 +0,0 @@ - -// ino.module.AClassOrInterface.8526.package -package de.dhbwstuttgart.core; -// ino.end - -// ino.module.AClassOrInterface.8526.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.logger.Logger; -// ino.end - - - -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Interface; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; - -// ino.class.AClassOrInterface.21186.description type=javadoc -/** - * Superklasse von Class und Interface. Beinhaltet gemeinsame Attribute - * der beiden Objekte. - * - * @author Juergen Schmiing - * - */ -// ino.end -// ino.class.AClassOrInterface.21186.declaration -public interface AClassOrInterface -// ino.end -// ino.class.AClassOrInterface.21186.body -{ - - public JavaClassName getName(); - public Menge getSuperInterfaces(); - public void setSuperInterfaces(Menge Menge); - - /* - // ino.attribute.inferencelog.21189.decldescription type=javadoc - // ino.end - // ino.attribute.inferencelog.21189.declaration - protected static Logger inferencelog = Logger.getLogger("inference"); - // ino.end - // ino.attribute.codegenlog.21192.declaration - protected static Logger codegenlog = Logger.getLogger("codegen"); - // ino.end - // ino.attribute.parserlog.21195.declaration - protected static Logger parserlog = Logger.getLogger("parser"); - // ino.end - - // ino.attribute.pkgName.21198.decldescription type=line - // Package-Name - // ino.end - // ino.attribute.pkgName.21198.declaration - protected UsedId pkgName; - // ino.end - - // ino.attribute.modifiers.21201.decldescription type=line - // Class/Interface-Name und Access-Modifiers - // ino.end - // ino.attribute.modifiers.21201.declaration - protected Modifiers modifiers; - // ino.end - // ino.attribute.name.21204.declaration - protected String name; - // ino.end - - // ino.attribute.superif.21207.decldescription type=line - // Superinterfaces. Interfaces erweitern die Liste, - // Klassen implementieren die Liste. - // ino.end - // ino.attribute.superif.21207.declaration - private Menge superif = new Menge(); - // ino.end - - // ino.method.AClassOrInterface.21210.defdescription type=line - // Konstruktoren - // ino.end - // ino.method.AClassOrInterface.21210.definition - public AClassOrInterface() - // ino.end - // ino.method.AClassOrInterface.21210.body - {} - // ino.end - - // ino.method.AClassOrInterface.21213.definition - public AClassOrInterface(String strName) - // ino.end - // ino.method.AClassOrInterface.21213.body - { - name = strName; - } - // ino.end - // ino.method.AClassOrInterface.21216.definition - public AClassOrInterface(String strName, Modifiers mod) - // ino.end - // ino.method.AClassOrInterface.21216.body - { - name = strName; - this.modifiers = mod; - } - // ino.end - - // ino.method.getPackageName.21219.defdescription type=line - // Handling fuer Packages - // ino.end - // ino.method.getPackageName.21219.definition - public UsedId getPackageName() - // ino.end - // ino.method.getPackageName.21219.body - { - return pkgName; - } - // ino.end - - // ino.method.setPackageName.21222.definition - public void setPackageName(UsedId pkgName) - // ino.end - // ino.method.setPackageName.21222.body - { - this.pkgName = pkgName; - } - // ino.end - - // ino.method.getName.21225.definition - public String getName() - // ino.end - // ino.method.getName.21225.body - { - return name; - } - // ino.end - - // ino.method.setName.21228.definition - public void setName(String strName) - // ino.end - // ino.method.setName.21228.body - { - name = strName; - } - // ino.end - - // ino.method.setModifiers.21231.definition - public void setModifiers(Modifiers mod) - // ino.end - // ino.method.setModifiers.21231.body - { - this.modifiers = mod; - } - // ino.end - - // ino.method.getModifiers.21234.definition - public Modifiers getModifiers() - // ino.end - // ino.method.getModifiers.21234.body - { - return this.modifiers; - } - // ino.end - - // ino.method.getAccessFlags.21237.defdescription type=javadoc - // ino.end - // ino.method.getAccessFlags.21237.definition - public short getAccessFlags() - // ino.end - // ino.method.getAccessFlags.21237.body - { - short ret = 0; - if (modifiers != null) { - ret = modifiers.calculate_access_flags(); - } - //if (ret != 0) - // return ret; - //else - // return (short) 32; - - //feda 04.07.07 wird bei der Codegenerierung des Class File beachtet. - - return ret; - } - // ino.end - - // ino.method.getSuperInterfaces.21240.definition - public Menge getSuperInterfaces() - // ino.end - // ino.method.getSuperInterfaces.21240.body - { - return superif; - } - // ino.end - - // ino.method.setSuperInterfaces.21243.definition - public void setSuperInterfaces(Menge superif) - // ino.end - // ino.method.setSuperInterfaces.21243.body - { - this.superif = superif; - } - // ino.end - - // ino.method.codegen.21246.declaration - public abstract void codegen(SourceFile sf) - throws JVMCodeException; - // ino.end - */ -} -// ino.end diff --git a/src/de/dhbwstuttgart/core/IItemWithOffset.java b/src/de/dhbwstuttgart/core/IItemWithOffset.java index 8dc277f9..d6b7f3bf 100755 --- a/src/de/dhbwstuttgart/core/IItemWithOffset.java +++ b/src/de/dhbwstuttgart/core/IItemWithOffset.java @@ -1,17 +1,7 @@ -// ino.module.IItemWithOffset.8527.package package de.dhbwstuttgart.core; -// ino.end -// ino.class.IItemWithOffset.21249.declaration + public interface IItemWithOffset -// ino.end -// ino.class.IItemWithOffset.21249.body { - // ino.method.getOffset.21252.declaration public int getOffset(); - // ino.end - // ino.method.getVariableLength.21255.declaration - public int getVariableLength(); - // ino.end } -// ino.end diff --git a/src/de/dhbwstuttgart/core/MyCompiler.java b/src/de/dhbwstuttgart/core/MyCompiler.java index 9591cffc..2bd5b2c1 100755 --- a/src/de/dhbwstuttgart/core/MyCompiler.java +++ b/src/de/dhbwstuttgart/core/MyCompiler.java @@ -13,18 +13,12 @@ import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.logger.LoggerConfiguration; import de.dhbwstuttgart.logger.Section; -import de.dhbwstuttgart.parser.JavaParser; -import de.dhbwstuttgart.parser.Scanner; -import de.dhbwstuttgart.parser.JavaParser.yyException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.ClassBody; import de.dhbwstuttgart.syntaxtree.FormalParameter; -import de.dhbwstuttgart.syntaxtree.ImportDeclarations; import de.dhbwstuttgart.syntaxtree.Method; import de.dhbwstuttgart.syntaxtree.ParameterList; import de.dhbwstuttgart.syntaxtree.SourceFile; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.IMatchable; import de.dhbwstuttgart.syntaxtree.type.ITypeContainer; diff --git a/src/de/dhbwstuttgart/parser/.cvsignore b/src/de/dhbwstuttgart/parser/.cvsignore deleted file mode 100755 index 4f70a70a..00000000 --- a/src/de/dhbwstuttgart/parser/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -JavaLexer.java -JavaParser.java - diff --git a/src/de/dhbwstuttgart/parser/BoundedClassIdentifierList.java b/src/de/dhbwstuttgart/parser/BoundedClassIdentifierList.java deleted file mode 100644 index 0531cbd0..00000000 --- a/src/de/dhbwstuttgart/parser/BoundedClassIdentifierList.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.ObjectType; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; - -public class BoundedClassIdentifierList extends Menge{ - - private int endOffset; - private Menge list; - - public BoundedClassIdentifierList(Menge list, int endOffset){ - this.endOffset = endOffset; - this.addAll(list); - } - - public int getEndOffset() { - return endOffset; - } - - public void addOffsetOff(RefType refType) { - this.endOffset = refType.getOffset() + refType.getName().toString().length(); - } -} diff --git a/src/de/dhbwstuttgart/parser/ClassAndParameter.java b/src/de/dhbwstuttgart/parser/ClassAndParameter.java deleted file mode 100755 index 7936aeab..00000000 --- a/src/de/dhbwstuttgart/parser/ClassAndParameter.java +++ /dev/null @@ -1,97 +0,0 @@ -// ino.module.ClassAndParameter.8613.package -package de.dhbwstuttgart.parser; -// ino.end - -// ino.module.ClassAndParameter.8613.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.ParaList; -import de.dhbwstuttgart.syntaxtree.type.Type; - -// ino.class.ClassAndParameter.24323.description type=javadoc -/** - * Hilfskonstrukt, um die Grammatik fuer einen Klassenheader - * ueberschaubar zu halten. Klassenname und optionale Generics - * werden hiermit kombiniert und sofort nach dem Parsen in der - * Klasse Class zueruck aufgeloest. - * @author SCJU - * - */ -// ino.end -// ino.class.ClassAndParameter.24323.declaration -public class ClassAndParameter -// ino.end -// ino.class.ClassAndParameter.24323.body -{ - // ino.attribute.name.24326.declaration - private String name; - // ino.end - // ino.attribute.plist.24329.declaration - private ParaList plist; - // ino.end - - // ino.method.ClassAndParameter.24332.definition - public ClassAndParameter(String name) - // ino.end - // ino.method.ClassAndParameter.24332.body - { - this.name = name; - } - // ino.end - - // ino.method.ClassAndParameter.24335.definition - public ClassAndParameter(String name, ParaList plist) - // ino.end - // ino.method.ClassAndParameter.24335.body - { - this.name = name; - this.plist = plist; - } - // ino.end - - // ino.method.getParaMenge.24338.definition - public Menge getParaMenge() - // ino.end - // ino.method.getParaMenge.24338.body - { - if (plist == null) return null; - - return plist.get_ParaList(); - } - // ino.end - - // ino.method.getName.24341.definition - public String getName() - // ino.end - // ino.method.getName.24341.body - { - return name; - } - // ino.end - // ino.method.setName.24344.definition - public void setName(String name) - // ino.end - // ino.method.setName.24344.body - { - this.name = name; - } - // ino.end - // ino.method.getParalist.24347.definition - public ParaList getParalist() - // ino.end - // ino.method.getParalist.24347.body - { - return plist; - } - // ino.end - // ino.method.setParalist.24350.definition - public void setParalist(ParaList plist) - // ino.end - // ino.method.setParalist.24350.body - { - this.plist = plist; - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java b/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java new file mode 100644 index 00000000..fa1b7d1d --- /dev/null +++ b/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java @@ -0,0 +1,24 @@ +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.tree.*; +import de.dhbwstuttgart.syntaxtree.*; +public class CompilationUnitEvaluator extends Java8BaseListener{ + @Override + public void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx) { + System.out.println("SourceFile("); + } + @Override + public void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx) { + System.out.println(")"); + } + + @Override + public void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { + System.out.println("package("); + } + + @Override + public void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { + System.out.println(ctx.Identifier()); + System.out.println(")"); + } +} diff --git a/src/de/dhbwstuttgart/parser/GenericVarDeclarationList.java b/src/de/dhbwstuttgart/parser/GenericVarDeclarationList.java deleted file mode 100644 index d53679b0..00000000 --- a/src/de/dhbwstuttgart/parser/GenericVarDeclarationList.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; - -public class GenericVarDeclarationList { - - private Menge elements = new Menge<>(); - - public void addElement(GenericTypeVar e){ - elements.addElement(e); - } - - public int getEndOffset() { - int ret; - if(elements.isEmpty())throw new DebugException("Es wurde eine GenericVarDeclarationList ohne Elemente geparst"); - ret = elements.lastElement().getEndOffset(); - return ret; - } - - public Menge getElements(){ - return elements; - } -} diff --git a/src/de/dhbwstuttgart/parser/InterfaceAndParameter.java b/src/de/dhbwstuttgart/parser/InterfaceAndParameter.java deleted file mode 100755 index 732349ae..00000000 --- a/src/de/dhbwstuttgart/parser/InterfaceAndParameter.java +++ /dev/null @@ -1,98 +0,0 @@ -// ino.module.InterfaceAndParameter.8614.package -package de.dhbwstuttgart.parser; -// ino.end - -// ino.module.InterfaceAndParameter.8614.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.ParaList; -import de.dhbwstuttgart.syntaxtree.type.Type; - -// ino.class.InterfaceAndParameter.24353.description type=javadoc -/** - * Hilfskonstrukt, um die Grammatik fuer einen Interfaceheader - * ueberschaubar zu halten. Interface und optionale Generics - * werden hiermit kombiniert und sofort nach dem Parsen in der - * Klasse Interface zueruck aufgeloest. - * @author HOTI - * - */ -// ino.end -// ino.class.InterfaceAndParameter.24353.declaration -public class InterfaceAndParameter -// ino.end -// ino.class.InterfaceAndParameter.24353.body -{ - // ino.attribute.name.24356.declaration - private String name; - // ino.end - // ino.attribute.plist.24359.declaration - private ParaList plist=new ParaList(); - // ino.end - - // ino.method.InterfaceAndParameter.24362.definition - public InterfaceAndParameter(String name) - // ino.end - // ino.method.InterfaceAndParameter.24362.body - { - this.name = name; - - } - // ino.end - - // ino.method.InterfaceAndParameter.24365.definition - public InterfaceAndParameter(String name, ParaList plist) - // ino.end - // ino.method.InterfaceAndParameter.24365.body - { - this.name = name; - this.plist = plist; - } - // ino.end - - // ino.method.getParaMenge.24368.definition - public Menge getParaMenge() - // ino.end - // ino.method.getParaMenge.24368.body - { - if (plist == null) return null; - - return plist.get_ParaList(); - } - // ino.end - - // ino.method.getName.24371.definition - public String getName() - // ino.end - // ino.method.getName.24371.body - { - return name; - } - // ino.end - // ino.method.setName.24374.definition - public void setName(String name) - // ino.end - // ino.method.setName.24374.body - { - this.name = name; - } - // ino.end - // ino.method.getParalist.24377.definition - public ParaList getParalist() - // ino.end - // ino.method.getParalist.24377.body - { - return plist; - } - // ino.end - // ino.method.setParalist.24380.definition - public void setParalist(ParaList plist) - // ino.end - // ino.method.setParalist.24380.body - { - this.plist = plist; - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/parser/InterfaceList.java b/src/de/dhbwstuttgart/parser/InterfaceList.java deleted file mode 100755 index 045b6ad9..00000000 --- a/src/de/dhbwstuttgart/parser/InterfaceList.java +++ /dev/null @@ -1,54 +0,0 @@ -// ino.module.InterfaceList.8615.package -package de.dhbwstuttgart.parser; -// ino.end - -// ino.module.InterfaceList.8615.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.Interface; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; - -// ino.class.InterfaceList.24383.description type=javadoc -/** - * Hilfskonstrukt fuer die Grammatik, um ungepruefte - * Typcasts fuer Mengeen zu umgehen. Wird nuer fuer den - * Parser benoetigt. - * @author SCJU - * - */ -// ino.end -// ino.class.InterfaceList.24383.declaration -public class InterfaceList -// ino.end -// ino.class.InterfaceList.24383.body -{ - // ino.attribute.superif.24386.declaration - private Menge superif = new Menge(); - // ino.end - - // ino.method.addInterface.24389.definition - public void addInterface(UsedId uid) - // ino.end - // ino.method.addInterface.24389.body - { - superif.addElement(uid); - } - // ino.end - - // ino.method.getMenge.24392.definition - public Menge getTypeMenge() - // ino.end - // ino.method.getMenge.24392.body - { - Menge ret = new Menge<>(); - for(UsedId name : superif){ - ret.add(new Interface(name.get_Name_1Element(), name.getOffset()).getType()); - } - return ret; - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/parser/Java8.g4 b/src/de/dhbwstuttgart/parser/Java8.g4 new file mode 100644 index 00000000..9f186404 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8.g4 @@ -0,0 +1,1779 @@ +/* + * [The "BSD license"] + * Copyright (c) 2014 Terence Parr + * Copyright (c) 2014 Sam Harwell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * A Java 8 grammar for ANTLR 4 derived from the Java Language Specification + * chapter 19. + * + * NOTE: This grammar results in a generated parser that is much slower + * than the Java 7 grammar in the grammars-v4/java directory. This + * one is, however, extremely close to the spec. + * + * You can test with + * + * $ antlr4 Java8.g4 + * $ javac *.java + * $ grun Java8 compilationUnit *.java + * + * Or, +~/antlr/code/grammars-v4/java8 $ java Test . +/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java +/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java +/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java +/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java +/Users/parrt/antlr/code/grammars-v4/java8/./Test.java +Total lexer+parser time 30844ms. + */ +grammar Java8; + +/* + * Productions from §3 (Lexical Structure) + */ + +literal + : IntegerLiteral + | FloatingPointLiteral + | BooleanLiteral + | CharacterLiteral + | StringLiteral + | NullLiteral + ; + +/* + * Productions from §4 (Types, Values, and Variables) + */ + +type + : primitiveType + | referenceType + ; + +primitiveType + : annotation* numericType + | annotation* 'boolean' + ; + +numericType + : integralType + | floatingPointType + ; + +integralType + : 'byte' + | 'short' + | 'int' + | 'long' + | 'char' + ; + +floatingPointType + : 'float' + | 'double' + ; + +referenceType + : classOrInterfaceType + | typeVariable + | arrayType + ; + +classOrInterfaceType + : ( classType_lfno_classOrInterfaceType + | interfaceType_lfno_classOrInterfaceType + ) + ( classType_lf_classOrInterfaceType + | interfaceType_lf_classOrInterfaceType + )* + ; + +classType + : annotation* Identifier typeArguments? + | classOrInterfaceType '.' annotation* Identifier typeArguments? + ; + +classType_lf_classOrInterfaceType + : '.' annotation* Identifier typeArguments? + ; + +classType_lfno_classOrInterfaceType + : annotation* Identifier typeArguments? + ; + +interfaceType + : classType + ; + +interfaceType_lf_classOrInterfaceType + : classType_lf_classOrInterfaceType + ; + +interfaceType_lfno_classOrInterfaceType + : classType_lfno_classOrInterfaceType + ; + +typeVariable + : annotation* Identifier + ; + +arrayType + : primitiveType dims + | classOrInterfaceType dims + | typeVariable dims + ; + +dims + : annotation* '[' ']' (annotation* '[' ']')* + ; + +typeParameter + : typeParameterModifier* Identifier typeBound? + ; + +typeParameterModifier + : annotation + ; + +typeBound + : 'extends' typeVariable + | 'extends' classOrInterfaceType additionalBound* + ; + +additionalBound + : '&' interfaceType + ; + +typeArguments + : '<' typeArgumentList '>' + ; + +typeArgumentList + : typeArgument (',' typeArgument)* + ; + +typeArgument + : referenceType + | wildcard + ; + +wildcard + : annotation* '?' wildcardBounds? + ; + +wildcardBounds + : 'extends' referenceType + | 'super' referenceType + ; + +/* + * Productions from §6 (Names) + */ + +packageName + : Identifier + | packageName '.' Identifier + ; + +typeName + : Identifier + | packageOrTypeName '.' Identifier + ; + +packageOrTypeName + : Identifier + | packageOrTypeName '.' Identifier + ; + +expressionName + : Identifier + | ambiguousName '.' Identifier + ; + +methodName + : Identifier + ; + +ambiguousName + : Identifier + | ambiguousName '.' Identifier + ; + +/* + * Productions from §7 (Packages) + */ + +compilationUnit + : packageDeclaration? importDeclaration* typeDeclaration* EOF + ; + +packageDeclaration + : packageModifier* 'package' Identifier ('.' Identifier)* ';' + ; + +packageModifier + : annotation + ; + +importDeclaration + : singleTypeImportDeclaration + | typeImportOnDemandDeclaration + | singleStaticImportDeclaration + | staticImportOnDemandDeclaration + ; + +singleTypeImportDeclaration + : 'import' typeName ';' + ; + +typeImportOnDemandDeclaration + : 'import' packageOrTypeName '.' '*' ';' + ; + +singleStaticImportDeclaration + : 'import' 'static' typeName '.' Identifier ';' + ; + +staticImportOnDemandDeclaration + : 'import' 'static' typeName '.' '*' ';' + ; + +typeDeclaration + : classDeclaration + | interfaceDeclaration + | ';' + ; + +/* + * Productions from §8 (Classes) + */ + +classDeclaration + : normalClassDeclaration + | enumDeclaration + ; + +normalClassDeclaration + : classModifier* 'class' Identifier typeParameters? superclass? superinterfaces? classBody + ; + +classModifier + : annotation + | 'public' + | 'protected' + | 'private' + | 'abstract' + | 'static' + | 'final' + | 'strictfp' + ; + +typeParameters + : '<' typeParameterList '>' + ; + +typeParameterList + : typeParameter (',' typeParameter)* + ; + +superclass + : 'extends' classType + ; + +superinterfaces + : 'implements' interfaceTypeList + ; + +interfaceTypeList + : interfaceType (',' interfaceType)* + ; + +classBody + : '{' classBodyDeclaration* '}' + ; + +classBodyDeclaration + : classMemberDeclaration + | instanceInitializer + | staticInitializer + | constructorDeclaration + ; + +classMemberDeclaration + : fieldDeclaration + | methodDeclaration + | classDeclaration + | interfaceDeclaration + | ';' + ; + +fieldDeclaration + : fieldModifier* unannType? variableDeclaratorList ';' + ; + +fieldModifier + : annotation + | 'public' + | 'protected' + | 'private' + | 'static' + | 'final' + | 'transient' + | 'volatile' + ; + +variableDeclaratorList + : variableDeclarator (',' variableDeclarator)* + ; + +variableDeclarator + : variableDeclaratorId ('=' variableInitializer)? + ; + +variableDeclaratorId + : Identifier dims? + ; + +variableInitializer + : expression + | arrayInitializer + ; + +unannType + : unannPrimitiveType + | unannReferenceType + ; + +unannPrimitiveType + : numericType + | 'boolean' + ; + +unannReferenceType + : unannClassOrInterfaceType + | unannTypeVariable + | unannArrayType + ; + +unannClassOrInterfaceType + : ( unannClassType_lfno_unannClassOrInterfaceType + | unannInterfaceType_lfno_unannClassOrInterfaceType + ) + ( unannClassType_lf_unannClassOrInterfaceType + | unannInterfaceType_lf_unannClassOrInterfaceType + )* + ; + +unannClassType + : Identifier typeArguments? + | unannClassOrInterfaceType '.' annotation* Identifier typeArguments? + ; + +unannClassType_lf_unannClassOrInterfaceType + : '.' annotation* Identifier typeArguments? + ; + +unannClassType_lfno_unannClassOrInterfaceType + : Identifier typeArguments? + ; + +unannInterfaceType + : unannClassType + ; + +unannInterfaceType_lf_unannClassOrInterfaceType + : unannClassType_lf_unannClassOrInterfaceType + ; + +unannInterfaceType_lfno_unannClassOrInterfaceType + : unannClassType_lfno_unannClassOrInterfaceType + ; + +unannTypeVariable + : Identifier + ; + +unannArrayType + : unannPrimitiveType dims + | unannClassOrInterfaceType dims + | unannTypeVariable dims + ; + +methodDeclaration + : methodModifier* methodHeader methodBody + ; + +methodModifier + : annotation + | 'public' + | 'protected' + | 'private' + | 'abstract' + | 'static' + | 'final' + | 'synchronized' + | 'native' + | 'strictfp' + ; + +methodHeader + : result? methodDeclarator throws_? + | typeParameters annotation* result methodDeclarator throws_? + ; + +result + : unannType + | 'void' + ; + +methodDeclarator + : Identifier '(' formalParameterList? ')' dims? + ; + +formalParameterList + : formalParameters ',' lastFormalParameter + | lastFormalParameter + ; + +formalParameters + : formalParameter (',' formalParameter)* + | receiverParameter (',' formalParameter)* + ; + +formalParameter + : variableModifier* unannType? variableDeclaratorId + ; + +variableModifier + : annotation + | 'final' + ; + +lastFormalParameter + : variableModifier* unannType annotation* '...' variableDeclaratorId + | formalParameter + ; + +receiverParameter + : annotation* unannType (Identifier '.')? 'this' + ; + +throws_ + : 'throws' exceptionTypeList + ; + +exceptionTypeList + : exceptionType (',' exceptionType)* + ; + +exceptionType + : classType + | typeVariable + ; + +methodBody + : block + | ';' + ; + +instanceInitializer + : block + ; + +staticInitializer + : 'static' block + ; + +constructorDeclaration + : constructorModifier* constructorDeclarator throws_? constructorBody + ; + +constructorModifier + : annotation + | 'public' + | 'protected' + | 'private' + ; + +constructorDeclarator + : typeParameters? simpleTypeName '(' formalParameterList? ')' + ; + +simpleTypeName + : Identifier + ; + +constructorBody + : '{' explicitConstructorInvocation? blockStatements? '}' + ; + +explicitConstructorInvocation + : typeArguments? 'this' '(' argumentList? ')' ';' + | typeArguments? 'super' '(' argumentList? ')' ';' + | expressionName '.' typeArguments? 'super' '(' argumentList? ')' ';' + | primary '.' typeArguments? 'super' '(' argumentList? ')' ';' + ; + +enumDeclaration + : classModifier* 'enum' Identifier superinterfaces? enumBody + ; + +enumBody + : '{' enumConstantList? ','? enumBodyDeclarations? '}' + ; + +enumConstantList + : enumConstant (',' enumConstant)* + ; + +enumConstant + : enumConstantModifier* Identifier ('(' argumentList? ')')? classBody? + ; + +enumConstantModifier + : annotation + ; + +enumBodyDeclarations + : ';' classBodyDeclaration* + ; + +/* + * Productions from §9 (Interfaces) + */ + +interfaceDeclaration + : normalInterfaceDeclaration + | annotationTypeDeclaration + ; + +normalInterfaceDeclaration + : interfaceModifier* 'interface' Identifier typeParameters? extendsInterfaces? interfaceBody + ; + +interfaceModifier + : annotation + | 'public' + | 'protected' + | 'private' + | 'abstract' + | 'static' + | 'strictfp' + ; + +extendsInterfaces + : 'extends' interfaceTypeList + ; + +interfaceBody + : '{' interfaceMemberDeclaration* '}' + ; + +interfaceMemberDeclaration + : constantDeclaration + | interfaceMethodDeclaration + | classDeclaration + | interfaceDeclaration + | ';' + ; + +constantDeclaration + : constantModifier* unannType variableDeclaratorList ';' + ; + +constantModifier + : annotation + | 'public' + | 'static' + | 'final' + ; + +interfaceMethodDeclaration + : interfaceMethodModifier* methodHeader methodBody + ; + +interfaceMethodModifier + : annotation + | 'public' + | 'abstract' + | 'default' + | 'static' + | 'strictfp' + ; + +annotationTypeDeclaration + : interfaceModifier* '@' 'interface' Identifier annotationTypeBody + ; + +annotationTypeBody + : '{' annotationTypeMemberDeclaration* '}' + ; + +annotationTypeMemberDeclaration + : annotationTypeElementDeclaration + | constantDeclaration + | classDeclaration + | interfaceDeclaration + | ';' + ; + +annotationTypeElementDeclaration + : annotationTypeElementModifier* unannType Identifier '(' ')' dims? defaultValue? ';' + ; + +annotationTypeElementModifier + : annotation + | 'public' + | 'abstract' + ; + +defaultValue + : 'default' elementValue + ; + +annotation + : normalAnnotation + | markerAnnotation + | singleElementAnnotation + ; + +normalAnnotation + : '@' typeName '(' elementValuePairList? ')' + ; + +elementValuePairList + : elementValuePair (',' elementValuePair)* + ; + +elementValuePair + : Identifier '=' elementValue + ; + +elementValue + : conditionalExpression + | elementValueArrayInitializer + | annotation + ; + +elementValueArrayInitializer + : '{' elementValueList? ','? '}' + ; + +elementValueList + : elementValue (',' elementValue)* + ; + +markerAnnotation + : '@' typeName + ; + +singleElementAnnotation + : '@' typeName '(' elementValue ')' + ; + +/* + * Productions from §10 (Arrays) + */ + +arrayInitializer + : '{' variableInitializerList? ','? '}' + ; + +variableInitializerList + : variableInitializer (',' variableInitializer)* + ; + +/* + * Productions from §14 (Blocks and Statements) + */ + +block + : '{' blockStatements? '}' + ; + +blockStatements + : blockStatement blockStatement* + ; + +blockStatement + : localVariableDeclarationStatement + | classDeclaration + | statement + ; + +localVariableDeclarationStatement + : localVariableDeclaration ';' + ; + +localVariableDeclaration + : variableModifier* unannType variableDeclaratorList + ; + +statement + : statementWithoutTrailingSubstatement + | labeledStatement + | ifThenStatement + | ifThenElseStatement + | whileStatement + | forStatement + ; + +statementNoShortIf + : statementWithoutTrailingSubstatement + | labeledStatementNoShortIf + | ifThenElseStatementNoShortIf + | whileStatementNoShortIf + | forStatementNoShortIf + ; + +statementWithoutTrailingSubstatement + : block + | emptyStatement + | expressionStatement + | assertStatement + | switchStatement + | doStatement + | breakStatement + | continueStatement + | returnStatement + | synchronizedStatement + | throwStatement + | tryStatement + ; + +emptyStatement + : ';' + ; + +labeledStatement + : Identifier ':' statement + ; + +labeledStatementNoShortIf + : Identifier ':' statementNoShortIf + ; + +expressionStatement + : statementExpression ';' + ; + +statementExpression + : assignment + | preIncrementExpression + | preDecrementExpression + | postIncrementExpression + | postDecrementExpression + | methodInvocation + | classInstanceCreationExpression + ; + +ifThenStatement + : 'if' '(' expression ')' statement + ; + +ifThenElseStatement + : 'if' '(' expression ')' statementNoShortIf 'else' statement + ; + +ifThenElseStatementNoShortIf + : 'if' '(' expression ')' statementNoShortIf 'else' statementNoShortIf + ; + +assertStatement + : 'assert' expression ';' + | 'assert' expression ':' expression ';' + ; + +switchStatement + : 'switch' '(' expression ')' switchBlock + ; + +switchBlock + : '{' switchBlockStatementGroup* switchLabel* '}' + ; + +switchBlockStatementGroup + : switchLabels blockStatements + ; + +switchLabels + : switchLabel switchLabel* + ; + +switchLabel + : 'case' constantExpression ':' + | 'case' enumConstantName ':' + | 'default' ':' + ; + +enumConstantName + : Identifier + ; + +whileStatement + : 'while' '(' expression ')' statement + ; + +whileStatementNoShortIf + : 'while' '(' expression ')' statementNoShortIf + ; + +doStatement + : 'do' statement 'while' '(' expression ')' ';' + ; + +forStatement + : basicForStatement + | enhancedForStatement + ; + +forStatementNoShortIf + : basicForStatementNoShortIf + | enhancedForStatementNoShortIf + ; + +basicForStatement + : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statement + ; + +basicForStatementNoShortIf + : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statementNoShortIf + ; + +forInit + : statementExpressionList + | localVariableDeclaration + ; + +forUpdate + : statementExpressionList + ; + +statementExpressionList + : statementExpression (',' statementExpression)* + ; + +enhancedForStatement + : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statement + ; + +enhancedForStatementNoShortIf + : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statementNoShortIf + ; + +breakStatement + : 'break' Identifier? ';' + ; + +continueStatement + : 'continue' Identifier? ';' + ; + +returnStatement + : 'return' expression? ';' + ; + +throwStatement + : 'throw' expression ';' + ; + +synchronizedStatement + : 'synchronized' '(' expression ')' block + ; + +tryStatement + : 'try' block catches + | 'try' block catches? finally_ + | tryWithResourcesStatement + ; + +catches + : catchClause catchClause* + ; + +catchClause + : 'catch' '(' catchFormalParameter ')' block + ; + +catchFormalParameter + : variableModifier* catchType variableDeclaratorId + ; + +catchType + : unannClassType ('|' classType)* + ; + +finally_ + : 'finally' block + ; + +tryWithResourcesStatement + : 'try' resourceSpecification block catches? finally_? + ; + +resourceSpecification + : '(' resourceList ';'? ')' + ; + +resourceList + : resource (';' resource)* + ; + +resource + : variableModifier* unannType variableDeclaratorId '=' expression + ; + +/* + * Productions from §15 (Expressions) + */ + +primary + : ( primaryNoNewArray_lfno_primary + | arrayCreationExpression + ) + ( primaryNoNewArray_lf_primary + )* + ; + +primaryNoNewArray + : literal + | typeName ('[' ']')* '.' 'class' + | 'void' '.' 'class' + | 'this' + | typeName '.' 'this' + | '(' expression ')' + | classInstanceCreationExpression + | fieldAccess + | arrayAccess + | methodInvocation + | methodReference + ; + +primaryNoNewArray_lf_arrayAccess + : + ; + +primaryNoNewArray_lfno_arrayAccess + : literal + | typeName ('[' ']')* '.' 'class' + | 'void' '.' 'class' + | 'this' + | typeName '.' 'this' + | '(' expression ')' + | classInstanceCreationExpression + | fieldAccess + | methodInvocation + | methodReference + ; + +primaryNoNewArray_lf_primary + : classInstanceCreationExpression_lf_primary + | fieldAccess_lf_primary + | arrayAccess_lf_primary + | methodInvocation_lf_primary + | methodReference_lf_primary + ; + +primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary + : + ; + +primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary + : classInstanceCreationExpression_lf_primary + | fieldAccess_lf_primary + | methodInvocation_lf_primary + | methodReference_lf_primary + ; + +primaryNoNewArray_lfno_primary + : literal + | typeName ('[' ']')* '.' 'class' + | unannPrimitiveType ('[' ']')* '.' 'class' + | 'void' '.' 'class' + | 'this' + | typeName '.' 'this' + | '(' expression ')' + | classInstanceCreationExpression_lfno_primary + | fieldAccess_lfno_primary + | arrayAccess_lfno_primary + | methodInvocation_lfno_primary + | methodReference_lfno_primary + ; + +primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary + : + ; + +primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary + : literal + | typeName ('[' ']')* '.' 'class' + | unannPrimitiveType ('[' ']')* '.' 'class' + | 'void' '.' 'class' + | 'this' + | typeName '.' 'this' + | '(' expression ')' + | classInstanceCreationExpression_lfno_primary + | fieldAccess_lfno_primary + | methodInvocation_lfno_primary + | methodReference_lfno_primary + ; + +classInstanceCreationExpression + : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + | primary '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + ; + +classInstanceCreationExpression_lf_primary + : '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + ; + +classInstanceCreationExpression_lfno_primary + : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? + ; + +typeArgumentsOrDiamond + : typeArguments + | '<' '>' + ; + +fieldAccess + : primary '.' Identifier + | 'super' '.' Identifier + | typeName '.' 'super' '.' Identifier + ; + +fieldAccess_lf_primary + : '.' Identifier + ; + +fieldAccess_lfno_primary + : 'super' '.' Identifier + | typeName '.' 'super' '.' Identifier + ; + +arrayAccess + : ( expressionName '[' expression ']' + | primaryNoNewArray_lfno_arrayAccess '[' expression ']' + ) + ( primaryNoNewArray_lf_arrayAccess '[' expression ']' + )* + ; + +arrayAccess_lf_primary + : ( primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary '[' expression ']' + ) + ( primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary '[' expression ']' + )* + ; + +arrayAccess_lfno_primary + : ( expressionName '[' expression ']' + | primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary '[' expression ']' + ) + ( primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary '[' expression ']' + )* + ; + +methodInvocation + : methodName '(' argumentList? ')' + | typeName '.' typeArguments? Identifier '(' argumentList? ')' + | expressionName '.' typeArguments? Identifier '(' argumentList? ')' + | primary '.' typeArguments? Identifier '(' argumentList? ')' + | 'super' '.' typeArguments? Identifier '(' argumentList? ')' + | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' + ; + +methodInvocation_lf_primary + : '.' typeArguments? Identifier '(' argumentList? ')' + ; + +methodInvocation_lfno_primary + : methodName '(' argumentList? ')' + | typeName '.' typeArguments? Identifier '(' argumentList? ')' + | expressionName '.' typeArguments? Identifier '(' argumentList? ')' + | 'super' '.' typeArguments? Identifier '(' argumentList? ')' + | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' + ; + +argumentList + : expression (',' expression)* + ; + +methodReference + : expressionName '::' typeArguments? Identifier + | referenceType '::' typeArguments? Identifier + | primary '::' typeArguments? Identifier + | 'super' '::' typeArguments? Identifier + | typeName '.' 'super' '::' typeArguments? Identifier + | classType '::' typeArguments? 'new' + | arrayType '::' 'new' + ; + +methodReference_lf_primary + : '::' typeArguments? Identifier + ; + +methodReference_lfno_primary + : expressionName '::' typeArguments? Identifier + | referenceType '::' typeArguments? Identifier + | 'super' '::' typeArguments? Identifier + | typeName '.' 'super' '::' typeArguments? Identifier + | classType '::' typeArguments? 'new' + | arrayType '::' 'new' + ; + +arrayCreationExpression + : 'new' primitiveType dimExprs dims? + | 'new' classOrInterfaceType dimExprs dims? + | 'new' primitiveType dims arrayInitializer + | 'new' classOrInterfaceType dims arrayInitializer + ; + +dimExprs + : dimExpr dimExpr* + ; + +dimExpr + : annotation* '[' expression ']' + ; + +constantExpression + : expression + ; + +expression + : lambdaExpression + | assignmentExpression + ; + +lambdaExpression + : lambdaParameters '->' lambdaBody + ; + +lambdaParameters + : Identifier + | '(' formalParameterList? ')' + | '(' inferredFormalParameterList ')' + ; + +inferredFormalParameterList + : Identifier (',' Identifier)* + ; + +lambdaBody + : expression + | block + ; + +assignmentExpression + : conditionalExpression + | assignment + ; + +assignment + : leftHandSide assignmentOperator expression + ; + +leftHandSide + : expressionName + | fieldAccess + | arrayAccess + ; + +assignmentOperator + : '=' + | '*=' + | '/=' + | '%=' + | '+=' + | '-=' + | '<<=' + | '>>=' + | '>>>=' + | '&=' + | '^=' + | '|=' + ; + +conditionalExpression + : conditionalOrExpression + | conditionalOrExpression '?' expression ':' conditionalExpression + ; + +conditionalOrExpression + : conditionalAndExpression + | conditionalOrExpression '||' conditionalAndExpression + ; + +conditionalAndExpression + : inclusiveOrExpression + | conditionalAndExpression '&&' inclusiveOrExpression + ; + +inclusiveOrExpression + : exclusiveOrExpression + | inclusiveOrExpression '|' exclusiveOrExpression + ; + +exclusiveOrExpression + : andExpression + | exclusiveOrExpression '^' andExpression + ; + +andExpression + : equalityExpression + | andExpression '&' equalityExpression + ; + +equalityExpression + : relationalExpression + | equalityExpression '==' relationalExpression + | equalityExpression '!=' relationalExpression + ; + +relationalExpression + : shiftExpression + | relationalExpression '<' shiftExpression + | relationalExpression '>' shiftExpression + | relationalExpression '<=' shiftExpression + | relationalExpression '>=' shiftExpression + | relationalExpression 'instanceof' referenceType + ; + +shiftExpression + : additiveExpression + | shiftExpression '<' '<' additiveExpression + | shiftExpression '>' '>' additiveExpression + | shiftExpression '>' '>' '>' additiveExpression + ; + +additiveExpression + : multiplicativeExpression + | additiveExpression '+' multiplicativeExpression + | additiveExpression '-' multiplicativeExpression + ; + +multiplicativeExpression + : unaryExpression + | multiplicativeExpression '*' unaryExpression + | multiplicativeExpression '/' unaryExpression + | multiplicativeExpression '%' unaryExpression + ; + +unaryExpression + : preIncrementExpression + | preDecrementExpression + | '+' unaryExpression + | '-' unaryExpression + | unaryExpressionNotPlusMinus + ; + +preIncrementExpression + : '++' unaryExpression + ; + +preDecrementExpression + : '--' unaryExpression + ; + +unaryExpressionNotPlusMinus + : postfixExpression + | '~' unaryExpression + | '!' unaryExpression + | castExpression + ; + +postfixExpression + : ( primary + | expressionName + ) + ( postIncrementExpression_lf_postfixExpression + | postDecrementExpression_lf_postfixExpression + )* + ; + +postIncrementExpression + : postfixExpression '++' + ; + +postIncrementExpression_lf_postfixExpression + : '++' + ; + +postDecrementExpression + : postfixExpression '--' + ; + +postDecrementExpression_lf_postfixExpression + : '--' + ; + +castExpression + : '(' primitiveType ')' unaryExpression + | '(' referenceType additionalBound* ')' unaryExpressionNotPlusMinus + | '(' referenceType additionalBound* ')' lambdaExpression + ; + +// LEXER + +// §3.9 Keywords + +ABSTRACT : 'abstract'; +ASSERT : 'assert'; +BOOLEAN : 'boolean'; +BREAK : 'break'; +BYTE : 'byte'; +CASE : 'case'; +CATCH : 'catch'; +CHAR : 'char'; +CLASS : 'class'; +CONST : 'const'; +CONTINUE : 'continue'; +DEFAULT : 'default'; +DO : 'do'; +DOUBLE : 'double'; +ELSE : 'else'; +ENUM : 'enum'; +EXTENDS : 'extends'; +FINAL : 'final'; +FINALLY : 'finally'; +FLOAT : 'float'; +FOR : 'for'; +IF : 'if'; +GOTO : 'goto'; +IMPLEMENTS : 'implements'; +IMPORT : 'import'; +INSTANCEOF : 'instanceof'; +INT : 'int'; +INTERFACE : 'interface'; +LONG : 'long'; +NATIVE : 'native'; +NEW : 'new'; +PACKAGE : 'package'; +PRIVATE : 'private'; +PROTECTED : 'protected'; +PUBLIC : 'public'; +RETURN : 'return'; +SHORT : 'short'; +STATIC : 'static'; +STRICTFP : 'strictfp'; +SUPER : 'super'; +SWITCH : 'switch'; +SYNCHRONIZED : 'synchronized'; +THIS : 'this'; +THROW : 'throw'; +THROWS : 'throws'; +TRANSIENT : 'transient'; +TRY : 'try'; +VOID : 'void'; +VOLATILE : 'volatile'; +WHILE : 'while'; + +// §3.10.1 Integer Literals + +IntegerLiteral + : DecimalIntegerLiteral + | HexIntegerLiteral + | OctalIntegerLiteral + | BinaryIntegerLiteral + ; + +fragment +DecimalIntegerLiteral + : DecimalNumeral IntegerTypeSuffix? + ; + +fragment +HexIntegerLiteral + : HexNumeral IntegerTypeSuffix? + ; + +fragment +OctalIntegerLiteral + : OctalNumeral IntegerTypeSuffix? + ; + +fragment +BinaryIntegerLiteral + : BinaryNumeral IntegerTypeSuffix? + ; + +fragment +IntegerTypeSuffix + : [lL] + ; + +fragment +DecimalNumeral + : '0' + | NonZeroDigit (Digits? | Underscores Digits) + ; + +fragment +Digits + : Digit (DigitsAndUnderscores? Digit)? + ; + +fragment +Digit + : '0' + | NonZeroDigit + ; + +fragment +NonZeroDigit + : [1-9] + ; + +fragment +DigitsAndUnderscores + : DigitOrUnderscore+ + ; + +fragment +DigitOrUnderscore + : Digit + | '_' + ; + +fragment +Underscores + : '_'+ + ; + +fragment +HexNumeral + : '0' [xX] HexDigits + ; + +fragment +HexDigits + : HexDigit (HexDigitsAndUnderscores? HexDigit)? + ; + +fragment +HexDigit + : [0-9a-fA-F] + ; + +fragment +HexDigitsAndUnderscores + : HexDigitOrUnderscore+ + ; + +fragment +HexDigitOrUnderscore + : HexDigit + | '_' + ; + +fragment +OctalNumeral + : '0' Underscores? OctalDigits + ; + +fragment +OctalDigits + : OctalDigit (OctalDigitsAndUnderscores? OctalDigit)? + ; + +fragment +OctalDigit + : [0-7] + ; + +fragment +OctalDigitsAndUnderscores + : OctalDigitOrUnderscore+ + ; + +fragment +OctalDigitOrUnderscore + : OctalDigit + | '_' + ; + +fragment +BinaryNumeral + : '0' [bB] BinaryDigits + ; + +fragment +BinaryDigits + : BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)? + ; + +fragment +BinaryDigit + : [01] + ; + +fragment +BinaryDigitsAndUnderscores + : BinaryDigitOrUnderscore+ + ; + +fragment +BinaryDigitOrUnderscore + : BinaryDigit + | '_' + ; + +// §3.10.2 Floating-Point Literals + +FloatingPointLiteral + : DecimalFloatingPointLiteral + | HexadecimalFloatingPointLiteral + ; + +fragment +DecimalFloatingPointLiteral + : Digits '.' Digits? ExponentPart? FloatTypeSuffix? + | '.' Digits ExponentPart? FloatTypeSuffix? + | Digits ExponentPart FloatTypeSuffix? + | Digits FloatTypeSuffix + ; + +fragment +ExponentPart + : ExponentIndicator SignedInteger + ; + +fragment +ExponentIndicator + : [eE] + ; + +fragment +SignedInteger + : Sign? Digits + ; + +fragment +Sign + : [+-] + ; + +fragment +FloatTypeSuffix + : [fFdD] + ; + +fragment +HexadecimalFloatingPointLiteral + : HexSignificand BinaryExponent FloatTypeSuffix? + ; + +fragment +HexSignificand + : HexNumeral '.'? + | '0' [xX] HexDigits? '.' HexDigits + ; + +fragment +BinaryExponent + : BinaryExponentIndicator SignedInteger + ; + +fragment +BinaryExponentIndicator + : [pP] + ; + +// §3.10.3 Boolean Literals + +BooleanLiteral + : 'true' + | 'false' + ; + +// §3.10.4 Character Literals + +CharacterLiteral + : '\'' SingleCharacter '\'' + | '\'' EscapeSequence '\'' + ; + +fragment +SingleCharacter + : ~['\\] + ; + +// §3.10.5 String Literals + +StringLiteral + : '"' StringCharacters? '"' + ; + +fragment +StringCharacters + : StringCharacter+ + ; + +fragment +StringCharacter + : ~["\\] + | EscapeSequence + ; + +// §3.10.6 Escape Sequences for Character and String Literals + +fragment +EscapeSequence + : '\\' [btnfr"'\\] + | OctalEscape + | UnicodeEscape // This is not in the spec but prevents having to preprocess the input + ; + +fragment +OctalEscape + : '\\' OctalDigit + | '\\' OctalDigit OctalDigit + | '\\' ZeroToThree OctalDigit OctalDigit + ; + +fragment +ZeroToThree + : [0-3] + ; + +// This is not in the spec but prevents having to preprocess the input +fragment +UnicodeEscape + : '\\' 'u' HexDigit HexDigit HexDigit HexDigit + ; + +// §3.10.7 The Null Literal + +NullLiteral + : 'null' + ; + +// §3.11 Separators + +LPAREN : '('; +RPAREN : ')'; +LBRACE : '{'; +RBRACE : '}'; +LBRACK : '['; +RBRACK : ']'; +SEMI : ';'; +COMMA : ','; +DOT : '.'; + +// §3.12 Operators + +ASSIGN : '='; +GT : '>'; +LT : '<'; +BANG : '!'; +TILDE : '~'; +QUESTION : '?'; +COLON : ':'; +EQUAL : '=='; +LE : '<='; +GE : '>='; +NOTEQUAL : '!='; +AND : '&&'; +OR : '||'; +INC : '++'; +DEC : '--'; +ADD : '+'; +SUB : '-'; +MUL : '*'; +DIV : '/'; +BITAND : '&'; +BITOR : '|'; +CARET : '^'; +MOD : '%'; +ARROW : '->'; +COLONCOLON : '::'; + +ADD_ASSIGN : '+='; +SUB_ASSIGN : '-='; +MUL_ASSIGN : '*='; +DIV_ASSIGN : '/='; +AND_ASSIGN : '&='; +OR_ASSIGN : '|='; +XOR_ASSIGN : '^='; +MOD_ASSIGN : '%='; +LSHIFT_ASSIGN : '<<='; +RSHIFT_ASSIGN : '>>='; +URSHIFT_ASSIGN : '>>>='; + +// §3.8 Identifiers (must appear after all keywords in the grammar) + +Identifier + : JavaLetter JavaLetterOrDigit* + ; + +fragment +JavaLetter + : [a-zA-Z$_] // these are the "java letters" below 0x7F + | // covers all characters above 0x7F which are not a surrogate + ~[\u0000-\u007F\uD800-\uDBFF] + {Character.isJavaIdentifierStart(_input.LA(-1))}? + | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF + [\uD800-\uDBFF] [\uDC00-\uDFFF] + {Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? + ; + +fragment +JavaLetterOrDigit + : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F + | // covers all characters above 0x7F which are not a surrogate + ~[\u0000-\u007F\uD800-\uDBFF] + {Character.isJavaIdentifierPart(_input.LA(-1))}? + | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF + [\uD800-\uDBFF] [\uDC00-\uDFFF] + {Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? + ; + +// +// Additional symbols not defined in the lexical specification +// + +AT : '@'; +ELLIPSIS : '...'; + +// +// Whitespace and comments +// + +WS : [ \t\r\n\u000C]+ -> skip + ; + +COMMENT + : '/*' .*? '*/' -> skip + ; + +LINE_COMMENT + : '//' ~[\r\n]* -> skip + ; diff --git a/src/de/dhbwstuttgart/parser/Java8.tokens b/src/de/dhbwstuttgart/parser/Java8.tokens new file mode 100644 index 00000000..52ef1eee --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=67 +'<'=68 +'!'=69 +'~'=70 +'?'=71 +':'=72 +'=='=73 +'<='=74 +'>='=75 +'!='=76 +'&&'=77 +'||'=78 +'++'=79 +'--'=80 +'+'=81 +'-'=82 +'*'=83 +'/'=84 +'&'=85 +'|'=86 +'^'=87 +'%'=88 +'->'=89 +'::'=90 +'+='=91 +'-='=92 +'*='=93 +'/='=94 +'&='=95 +'|='=96 +'^='=97 +'%='=98 +'<<='=99 +'>>='=100 +'>>>='=101 +'@'=103 +'...'=104 diff --git a/src/de/dhbwstuttgart/parser/Java8BaseListener.java b/src/de/dhbwstuttgart/parser/Java8BaseListener.java new file mode 100644 index 00000000..0d26fe00 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8BaseListener.java @@ -0,0 +1,2883 @@ +// Generated from Java8.g4 by ANTLR 4.5.3 +package de.dhbwstuttgart.parser; + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link Java8Listener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class Java8BaseListener implements Java8Listener { + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLiteral(Java8Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLiteral(Java8Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterType(Java8Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitType(Java8Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterNumericType(Java8Parser.NumericTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitNumericType(Java8Parser.NumericTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterIntegralType(Java8Parser.IntegralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitIntegralType(Java8Parser.IntegralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterReferenceType(Java8Parser.ReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitReferenceType(Java8Parser.ReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassType(Java8Parser.ClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassType(Java8Parser.ClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeVariable(Java8Parser.TypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeVariable(Java8Parser.TypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayType(Java8Parser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayType(Java8Parser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterDims(Java8Parser.DimsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitDims(Java8Parser.DimsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeParameter(Java8Parser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeParameter(Java8Parser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeBound(Java8Parser.TypeBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeBound(Java8Parser.TypeBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeArgument(Java8Parser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeArgument(Java8Parser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterWildcard(Java8Parser.WildcardContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitWildcard(Java8Parser.WildcardContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPackageName(Java8Parser.PackageNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPackageName(Java8Parser.PackageNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeName(Java8Parser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeName(Java8Parser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExpressionName(Java8Parser.ExpressionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExpressionName(Java8Parser.ExpressionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodName(Java8Parser.MethodNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodName(Java8Parser.MethodNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPackageModifier(Java8Parser.PackageModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPackageModifier(Java8Parser.PackageModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassModifier(Java8Parser.ClassModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassModifier(Java8Parser.ClassModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeParameters(Java8Parser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeParameters(Java8Parser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSuperclass(Java8Parser.SuperclassContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSuperclass(Java8Parser.SuperclassContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassBody(Java8Parser.ClassBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassBody(Java8Parser.ClassBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFieldModifier(Java8Parser.FieldModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFieldModifier(Java8Parser.FieldModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannType(Java8Parser.UnannTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannType(Java8Parser.UnannTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodModifier(Java8Parser.MethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodModifier(Java8Parser.MethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodHeader(Java8Parser.MethodHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodHeader(Java8Parser.MethodHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterResult(Java8Parser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitResult(Java8Parser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFormalParameters(Java8Parser.FormalParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFormalParameters(Java8Parser.FormalParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFormalParameter(Java8Parser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFormalParameter(Java8Parser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableModifier(Java8Parser.VariableModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableModifier(Java8Parser.VariableModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterThrows_(Java8Parser.Throws_Context ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitThrows_(Java8Parser.Throws_Context ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExceptionType(Java8Parser.ExceptionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExceptionType(Java8Parser.ExceptionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodBody(Java8Parser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodBody(Java8Parser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumBody(Java8Parser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumBody(Java8Parser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumConstant(Java8Parser.EnumConstantContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumConstant(Java8Parser.EnumConstantContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstantModifier(Java8Parser.ConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstantModifier(Java8Parser.ConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterDefaultValue(Java8Parser.DefaultValueContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitDefaultValue(Java8Parser.DefaultValueContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAnnotation(Java8Parser.AnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAnnotation(Java8Parser.AnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterElementValuePair(Java8Parser.ElementValuePairContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitElementValuePair(Java8Parser.ElementValuePairContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterElementValue(Java8Parser.ElementValueContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitElementValue(Java8Parser.ElementValueContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterElementValueList(Java8Parser.ElementValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitElementValueList(Java8Parser.ElementValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBlock(Java8Parser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBlock(Java8Parser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBlockStatements(Java8Parser.BlockStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBlockStatements(Java8Parser.BlockStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBlockStatement(Java8Parser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBlockStatement(Java8Parser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStatement(Java8Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStatement(Java8Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStatementExpression(Java8Parser.StatementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStatementExpression(Java8Parser.StatementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAssertStatement(Java8Parser.AssertStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAssertStatement(Java8Parser.AssertStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterWhileStatement(Java8Parser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitWhileStatement(Java8Parser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterDoStatement(Java8Parser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitDoStatement(Java8Parser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterForStatement(Java8Parser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitForStatement(Java8Parser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterForInit(Java8Parser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitForInit(Java8Parser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterForUpdate(Java8Parser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitForUpdate(Java8Parser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterBreakStatement(Java8Parser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitBreakStatement(Java8Parser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterContinueStatement(Java8Parser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitContinueStatement(Java8Parser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterReturnStatement(Java8Parser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitReturnStatement(Java8Parser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterThrowStatement(Java8Parser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitThrowStatement(Java8Parser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTryStatement(Java8Parser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTryStatement(Java8Parser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCatches(Java8Parser.CatchesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCatches(Java8Parser.CatchesContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCatchClause(Java8Parser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCatchClause(Java8Parser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCatchType(Java8Parser.CatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCatchType(Java8Parser.CatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFinally_(Java8Parser.Finally_Context ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFinally_(Java8Parser.Finally_Context ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterResourceList(Java8Parser.ResourceListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitResourceList(Java8Parser.ResourceListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterResource(Java8Parser.ResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitResource(Java8Parser.ResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimary(Java8Parser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimary(Java8Parser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFieldAccess(Java8Parser.FieldAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFieldAccess(Java8Parser.FieldAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayAccess(Java8Parser.ArrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayAccess(Java8Parser.ArrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArgumentList(Java8Parser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArgumentList(Java8Parser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodReference(Java8Parser.MethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodReference(Java8Parser.MethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterDimExprs(Java8Parser.DimExprsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitDimExprs(Java8Parser.DimExprsContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterDimExpr(Java8Parser.DimExprContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitDimExpr(Java8Parser.DimExprContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExpression(Java8Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExpression(Java8Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLambdaBody(Java8Parser.LambdaBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLambdaBody(Java8Parser.LambdaBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAssignment(Java8Parser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAssignment(Java8Parser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAndExpression(Java8Parser.AndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAndExpression(Java8Parser.AndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterCastExpression(Java8Parser.CastExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitCastExpression(Java8Parser.CastExpressionContext ctx) { } + + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

      The default implementation does nothing.

      + */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/Java8Lexer.java b/src/de/dhbwstuttgart/parser/Java8Lexer.java new file mode 100644 index 00000000..25cab56a --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8Lexer.java @@ -0,0 +1,584 @@ +// Generated from Java8.g4 by ANTLR 4.5.3 +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class Java8Lexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.5.3", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, + CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, + ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, + IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, + NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, + SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, + THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, + WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, + CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, + LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, + ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, + LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, + MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, + ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, + OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, + URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, + LINE_COMMENT=107; + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + public static final String[] ruleNames = { + "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR", + "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", + "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", + "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", + "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", + "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", + "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "DecimalIntegerLiteral", + "HexIntegerLiteral", "OctalIntegerLiteral", "BinaryIntegerLiteral", "IntegerTypeSuffix", + "DecimalNumeral", "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores", + "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits", "HexDigit", + "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "OctalNumeral", "OctalDigits", + "OctalDigit", "OctalDigitsAndUnderscores", "OctalDigitOrUnderscore", "BinaryNumeral", + "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", "BinaryDigitOrUnderscore", + "FloatingPointLiteral", "DecimalFloatingPointLiteral", "ExponentPart", + "ExponentIndicator", "SignedInteger", "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral", + "HexSignificand", "BinaryExponent", "BinaryExponentIndicator", "BooleanLiteral", + "CharacterLiteral", "SingleCharacter", "StringLiteral", "StringCharacters", + "StringCharacter", "EscapeSequence", "OctalEscape", "ZeroToThree", "UnicodeEscape", + "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", + "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", + "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", + "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", + "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", + "URSHIFT_ASSIGN", "Identifier", "JavaLetter", "JavaLetterOrDigit", "AT", + "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'", + "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", + "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'", + "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'", + "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'", + "'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'", + "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'", + "'transient'", "'try'", "'void'", "'volatile'", "'while'", null, null, + null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", + "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", + "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='", + "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", + "'>>>='", null, "'@'", "'...'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", + "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", + "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", + "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", + "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", + "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", + "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "FloatingPointLiteral", + "BooleanLiteral", "CharacterLiteral", "StringLiteral", "NullLiteral", + "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", + "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL", + "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", + "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", + "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", + "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", + "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public Java8Lexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "Java8.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 146: + return JavaLetter_sempred((RuleContext)_localctx, predIndex); + case 147: + return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return Character.isJavaIdentifierStart(_input.LA(-1)); + case 1: + return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))); + } + return true; + } + private boolean JavaLetterOrDigit_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return Character.isJavaIdentifierPart(_input.LA(-1)); + case 3: + return Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))); + } + return true; + } + + public static final String _serializedATN = + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2m\u0448\b\1\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ + "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+ + "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+ + "\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+ + "\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+ + "\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+ + "\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+ + "\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097"+ + "\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\3\2\3\2\3\2\3"+ + "\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3"+ + "\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n"+ + "\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f"+ + "\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3"+ + "\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22\3"+ + "\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3"+ + "\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3"+ + "\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3"+ + "\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3"+ + "\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3"+ + "\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3"+ + "\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3!\3!\3!"+ + "\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3"+ + "#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3"+ + "\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3"+ + ")\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3"+ + ",\3,\3,\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3"+ + "/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3"+ + "\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3"+ + "\64\3\64\5\64\u028d\n\64\3\65\3\65\5\65\u0291\n\65\3\66\3\66\5\66\u0295"+ + "\n\66\3\67\3\67\5\67\u0299\n\67\38\38\58\u029d\n8\39\39\3:\3:\3:\5:\u02a4"+ + "\n:\3:\3:\3:\5:\u02a9\n:\5:\u02ab\n:\3;\3;\5;\u02af\n;\3;\5;\u02b2\n;"+ + "\3<\3<\5<\u02b6\n<\3=\3=\3>\6>\u02bb\n>\r>\16>\u02bc\3?\3?\5?\u02c1\n"+ + "?\3@\6@\u02c4\n@\r@\16@\u02c5\3A\3A\3A\3A\3B\3B\5B\u02ce\nB\3B\5B\u02d1"+ + "\nB\3C\3C\3D\6D\u02d6\nD\rD\16D\u02d7\3E\3E\5E\u02dc\nE\3F\3F\5F\u02e0"+ + "\nF\3F\3F\3G\3G\5G\u02e6\nG\3G\5G\u02e9\nG\3H\3H\3I\6I\u02ee\nI\rI\16"+ + "I\u02ef\3J\3J\5J\u02f4\nJ\3K\3K\3K\3K\3L\3L\5L\u02fc\nL\3L\5L\u02ff\n"+ + "L\3M\3M\3N\6N\u0304\nN\rN\16N\u0305\3O\3O\5O\u030a\nO\3P\3P\5P\u030e\n"+ + "P\3Q\3Q\3Q\5Q\u0313\nQ\3Q\5Q\u0316\nQ\3Q\5Q\u0319\nQ\3Q\3Q\3Q\5Q\u031e"+ + "\nQ\3Q\5Q\u0321\nQ\3Q\3Q\3Q\5Q\u0326\nQ\3Q\3Q\3Q\5Q\u032b\nQ\3R\3R\3R"+ + "\3S\3S\3T\5T\u0333\nT\3T\3T\3U\3U\3V\3V\3W\3W\3W\5W\u033e\nW\3X\3X\5X"+ + "\u0342\nX\3X\3X\3X\5X\u0347\nX\3X\3X\5X\u034b\nX\3Y\3Y\3Y\3Z\3Z\3[\3["+ + "\3[\3[\3[\3[\3[\3[\3[\5[\u035b\n[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\5\\"+ + "\u0365\n\\\3]\3]\3^\3^\5^\u036b\n^\3^\3^\3_\6_\u0370\n_\r_\16_\u0371\3"+ + "`\3`\5`\u0376\n`\3a\3a\3a\3a\5a\u037c\na\3b\3b\3b\3b\3b\3b\3b\3b\3b\3"+ + "b\3b\5b\u0389\nb\3c\3c\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3g\3"+ + "g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3"+ + "s\3s\3t\3t\3u\3u\3v\3v\3v\3w\3w\3w\3x\3x\3x\3y\3y\3y\3z\3z\3z\3{\3{\3"+ + "{\3|\3|\3|\3}\3}\3}\3~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081"+ + "\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084\3\u0085\3\u0085\3\u0086"+ + "\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0089"+ + "\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c"+ + "\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008f"+ + "\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091"+ + "\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\7\u0093"+ + "\u040e\n\u0093\f\u0093\16\u0093\u0411\13\u0093\3\u0094\3\u0094\3\u0094"+ + "\3\u0094\3\u0094\3\u0094\5\u0094\u0419\n\u0094\3\u0095\3\u0095\3\u0095"+ + "\3\u0095\3\u0095\3\u0095\5\u0095\u0421\n\u0095\3\u0096\3\u0096\3\u0097"+ + "\3\u0097\3\u0097\3\u0097\3\u0098\6\u0098\u042a\n\u0098\r\u0098\16\u0098"+ + "\u042b\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099\7\u0099\u0434\n"+ + "\u0099\f\u0099\16\u0099\u0437\13\u0099\3\u0099\3\u0099\3\u0099\3\u0099"+ + "\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\7\u009a\u0442\n\u009a\f\u009a"+ + "\16\u009a\u0445\13\u009a\3\u009a\3\u009a\3\u0435\2\u009b\3\3\5\4\7\5\t"+ + "\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23"+ + "%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G"+ + "%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\2k\2m\2o\2q\2s\2u\2w\2"+ + "y\2{\2}\2\177\2\u0081\2\u0083\2\u0085\2\u0087\2\u0089\2\u008b\2\u008d"+ + "\2\u008f\2\u0091\2\u0093\2\u0095\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f"+ + "\66\u00a1\2\u00a3\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1"+ + "\2\u00b3\2\u00b5\67\u00b78\u00b9\2\u00bb9\u00bd\2\u00bf\2\u00c1\2\u00c3"+ + "\2\u00c5\2\u00c7\2\u00c9:\u00cb;\u00cd<\u00cf=\u00d1>\u00d3?\u00d5@\u00d7"+ + "A\u00d9B\u00dbC\u00ddD\u00dfE\u00e1F\u00e3G\u00e5H\u00e7I\u00e9J\u00eb"+ + "K\u00edL\u00efM\u00f1N\u00f3O\u00f5P\u00f7Q\u00f9R\u00fbS\u00fdT\u00ff"+ + "U\u0101V\u0103W\u0105X\u0107Y\u0109Z\u010b[\u010d\\\u010f]\u0111^\u0113"+ + "_\u0115`\u0117a\u0119b\u011bc\u011dd\u011fe\u0121f\u0123g\u0125h\u0127"+ + "\2\u0129\2\u012bi\u012dj\u012fk\u0131l\u0133m\3\2\30\4\2NNnn\3\2\63;\4"+ + "\2ZZzz\5\2\62;CHch\3\2\629\4\2DDdd\3\2\62\63\4\2GGgg\4\2--//\6\2FFHHf"+ + "fhh\4\2RRrr\4\2))^^\4\2$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac"+ + "|\4\2\2\u0081\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001\7\2&&\62;C\\"+ + "aac|\5\2\13\f\16\17\"\"\4\2\f\f\17\17\u0456\2\3\3\2\2\2\2\5\3\2\2\2\2"+ + "\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2"+ + "\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2"+ + "\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2"+ + "\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2"+ + "\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2"+ + "\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2"+ + "M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3"+ + "\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2"+ + "\2\2g\3\2\2\2\2\u009f\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00bb"+ + "\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2"+ + "\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9"+ + "\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2"+ + "\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb"+ + "\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2"+ + "\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd"+ + "\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2"+ + "\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\2\u010f"+ + "\3\2\2\2\2\u0111\3\2\2\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2"+ + "\2\2\u0119\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121"+ + "\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u012b\3\2\2\2\2\u012d\3\2\2"+ + "\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2\2\3\u0135\3\2\2\2\5\u013e"+ + "\3\2\2\2\7\u0145\3\2\2\2\t\u014d\3\2\2\2\13\u0153\3\2\2\2\r\u0158\3\2"+ + "\2\2\17\u015d\3\2\2\2\21\u0163\3\2\2\2\23\u0168\3\2\2\2\25\u016e\3\2\2"+ + "\2\27\u0174\3\2\2\2\31\u017d\3\2\2\2\33\u0185\3\2\2\2\35\u0188\3\2\2\2"+ + "\37\u018f\3\2\2\2!\u0194\3\2\2\2#\u0199\3\2\2\2%\u01a1\3\2\2\2\'\u01a7"+ + "\3\2\2\2)\u01af\3\2\2\2+\u01b5\3\2\2\2-\u01b9\3\2\2\2/\u01bc\3\2\2\2\61"+ + "\u01c1\3\2\2\2\63\u01cc\3\2\2\2\65\u01d3\3\2\2\2\67\u01de\3\2\2\29\u01e2"+ + "\3\2\2\2;\u01ec\3\2\2\2=\u01f1\3\2\2\2?\u01f8\3\2\2\2A\u01fc\3\2\2\2C"+ + "\u0204\3\2\2\2E\u020c\3\2\2\2G\u0216\3\2\2\2I\u021d\3\2\2\2K\u0224\3\2"+ + "\2\2M\u022a\3\2\2\2O\u0231\3\2\2\2Q\u023a\3\2\2\2S\u0240\3\2\2\2U\u0247"+ + "\3\2\2\2W\u0254\3\2\2\2Y\u0259\3\2\2\2[\u025f\3\2\2\2]\u0266\3\2\2\2_"+ + "\u0270\3\2\2\2a\u0274\3\2\2\2c\u0279\3\2\2\2e\u0282\3\2\2\2g\u028c\3\2"+ + "\2\2i\u028e\3\2\2\2k\u0292\3\2\2\2m\u0296\3\2\2\2o\u029a\3\2\2\2q\u029e"+ + "\3\2\2\2s\u02aa\3\2\2\2u\u02ac\3\2\2\2w\u02b5\3\2\2\2y\u02b7\3\2\2\2{"+ + "\u02ba\3\2\2\2}\u02c0\3\2\2\2\177\u02c3\3\2\2\2\u0081\u02c7\3\2\2\2\u0083"+ + "\u02cb\3\2\2\2\u0085\u02d2\3\2\2\2\u0087\u02d5\3\2\2\2\u0089\u02db\3\2"+ + "\2\2\u008b\u02dd\3\2\2\2\u008d\u02e3\3\2\2\2\u008f\u02ea\3\2\2\2\u0091"+ + "\u02ed\3\2\2\2\u0093\u02f3\3\2\2\2\u0095\u02f5\3\2\2\2\u0097\u02f9\3\2"+ + "\2\2\u0099\u0300\3\2\2\2\u009b\u0303\3\2\2\2\u009d\u0309\3\2\2\2\u009f"+ + "\u030d\3\2\2\2\u00a1\u032a\3\2\2\2\u00a3\u032c\3\2\2\2\u00a5\u032f\3\2"+ + "\2\2\u00a7\u0332\3\2\2\2\u00a9\u0336\3\2\2\2\u00ab\u0338\3\2\2\2\u00ad"+ + "\u033a\3\2\2\2\u00af\u034a\3\2\2\2\u00b1\u034c\3\2\2\2\u00b3\u034f\3\2"+ + "\2\2\u00b5\u035a\3\2\2\2\u00b7\u0364\3\2\2\2\u00b9\u0366\3\2\2\2\u00bb"+ + "\u0368\3\2\2\2\u00bd\u036f\3\2\2\2\u00bf\u0375\3\2\2\2\u00c1\u037b\3\2"+ + "\2\2\u00c3\u0388\3\2\2\2\u00c5\u038a\3\2\2\2\u00c7\u038c\3\2\2\2\u00c9"+ + "\u0393\3\2\2\2\u00cb\u0398\3\2\2\2\u00cd\u039a\3\2\2\2\u00cf\u039c\3\2"+ + "\2\2\u00d1\u039e\3\2\2\2\u00d3\u03a0\3\2\2\2\u00d5\u03a2\3\2\2\2\u00d7"+ + "\u03a4\3\2\2\2\u00d9\u03a6\3\2\2\2\u00db\u03a8\3\2\2\2\u00dd\u03aa\3\2"+ + "\2\2\u00df\u03ac\3\2\2\2\u00e1\u03ae\3\2\2\2\u00e3\u03b0\3\2\2\2\u00e5"+ + "\u03b2\3\2\2\2\u00e7\u03b4\3\2\2\2\u00e9\u03b6\3\2\2\2\u00eb\u03b8\3\2"+ + "\2\2\u00ed\u03bb\3\2\2\2\u00ef\u03be\3\2\2\2\u00f1\u03c1\3\2\2\2\u00f3"+ + "\u03c4\3\2\2\2\u00f5\u03c7\3\2\2\2\u00f7\u03ca\3\2\2\2\u00f9\u03cd\3\2"+ + "\2\2\u00fb\u03d0\3\2\2\2\u00fd\u03d2\3\2\2\2\u00ff\u03d4\3\2\2\2\u0101"+ + "\u03d6\3\2\2\2\u0103\u03d8\3\2\2\2\u0105\u03da\3\2\2\2\u0107\u03dc\3\2"+ + "\2\2\u0109\u03de\3\2\2\2\u010b\u03e0\3\2\2\2\u010d\u03e3\3\2\2\2\u010f"+ + "\u03e6\3\2\2\2\u0111\u03e9\3\2\2\2\u0113\u03ec\3\2\2\2\u0115\u03ef\3\2"+ + "\2\2\u0117\u03f2\3\2\2\2\u0119\u03f5\3\2\2\2\u011b\u03f8\3\2\2\2\u011d"+ + "\u03fb\3\2\2\2\u011f\u03fe\3\2\2\2\u0121\u0402\3\2\2\2\u0123\u0406\3\2"+ + "\2\2\u0125\u040b\3\2\2\2\u0127\u0418\3\2\2\2\u0129\u0420\3\2\2\2\u012b"+ + "\u0422\3\2\2\2\u012d\u0424\3\2\2\2\u012f\u0429\3\2\2\2\u0131\u042f\3\2"+ + "\2\2\u0133\u043d\3\2\2\2\u0135\u0136\7c\2\2\u0136\u0137\7d\2\2\u0137\u0138"+ + "\7u\2\2\u0138\u0139\7v\2\2\u0139\u013a\7t\2\2\u013a\u013b\7c\2\2\u013b"+ + "\u013c\7e\2\2\u013c\u013d\7v\2\2\u013d\4\3\2\2\2\u013e\u013f\7c\2\2\u013f"+ + "\u0140\7u\2\2\u0140\u0141\7u\2\2\u0141\u0142\7g\2\2\u0142\u0143\7t\2\2"+ + "\u0143\u0144\7v\2\2\u0144\6\3\2\2\2\u0145\u0146\7d\2\2\u0146\u0147\7q"+ + "\2\2\u0147\u0148\7q\2\2\u0148\u0149\7n\2\2\u0149\u014a\7g\2\2\u014a\u014b"+ + "\7c\2\2\u014b\u014c\7p\2\2\u014c\b\3\2\2\2\u014d\u014e\7d\2\2\u014e\u014f"+ + "\7t\2\2\u014f\u0150\7g\2\2\u0150\u0151\7c\2\2\u0151\u0152\7m\2\2\u0152"+ + "\n\3\2\2\2\u0153\u0154\7d\2\2\u0154\u0155\7{\2\2\u0155\u0156\7v\2\2\u0156"+ + "\u0157\7g\2\2\u0157\f\3\2\2\2\u0158\u0159\7e\2\2\u0159\u015a\7c\2\2\u015a"+ + "\u015b\7u\2\2\u015b\u015c\7g\2\2\u015c\16\3\2\2\2\u015d\u015e\7e\2\2\u015e"+ + "\u015f\7c\2\2\u015f\u0160\7v\2\2\u0160\u0161\7e\2\2\u0161\u0162\7j\2\2"+ + "\u0162\20\3\2\2\2\u0163\u0164\7e\2\2\u0164\u0165\7j\2\2\u0165\u0166\7"+ + "c\2\2\u0166\u0167\7t\2\2\u0167\22\3\2\2\2\u0168\u0169\7e\2\2\u0169\u016a"+ + "\7n\2\2\u016a\u016b\7c\2\2\u016b\u016c\7u\2\2\u016c\u016d\7u\2\2\u016d"+ + "\24\3\2\2\2\u016e\u016f\7e\2\2\u016f\u0170\7q\2\2\u0170\u0171\7p\2\2\u0171"+ + "\u0172\7u\2\2\u0172\u0173\7v\2\2\u0173\26\3\2\2\2\u0174\u0175\7e\2\2\u0175"+ + "\u0176\7q\2\2\u0176\u0177\7p\2\2\u0177\u0178\7v\2\2\u0178\u0179\7k\2\2"+ + "\u0179\u017a\7p\2\2\u017a\u017b\7w\2\2\u017b\u017c\7g\2\2\u017c\30\3\2"+ + "\2\2\u017d\u017e\7f\2\2\u017e\u017f\7g\2\2\u017f\u0180\7h\2\2\u0180\u0181"+ + "\7c\2\2\u0181\u0182\7w\2\2\u0182\u0183\7n\2\2\u0183\u0184\7v\2\2\u0184"+ + "\32\3\2\2\2\u0185\u0186\7f\2\2\u0186\u0187\7q\2\2\u0187\34\3\2\2\2\u0188"+ + "\u0189\7f\2\2\u0189\u018a\7q\2\2\u018a\u018b\7w\2\2\u018b\u018c\7d\2\2"+ + "\u018c\u018d\7n\2\2\u018d\u018e\7g\2\2\u018e\36\3\2\2\2\u018f\u0190\7"+ + "g\2\2\u0190\u0191\7n\2\2\u0191\u0192\7u\2\2\u0192\u0193\7g\2\2\u0193 "+ + "\3\2\2\2\u0194\u0195\7g\2\2\u0195\u0196\7p\2\2\u0196\u0197\7w\2\2\u0197"+ + "\u0198\7o\2\2\u0198\"\3\2\2\2\u0199\u019a\7g\2\2\u019a\u019b\7z\2\2\u019b"+ + "\u019c\7v\2\2\u019c\u019d\7g\2\2\u019d\u019e\7p\2\2\u019e\u019f\7f\2\2"+ + "\u019f\u01a0\7u\2\2\u01a0$\3\2\2\2\u01a1\u01a2\7h\2\2\u01a2\u01a3\7k\2"+ + "\2\u01a3\u01a4\7p\2\2\u01a4\u01a5\7c\2\2\u01a5\u01a6\7n\2\2\u01a6&\3\2"+ + "\2\2\u01a7\u01a8\7h\2\2\u01a8\u01a9\7k\2\2\u01a9\u01aa\7p\2\2\u01aa\u01ab"+ + "\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad\7n\2\2\u01ad\u01ae\7{\2\2\u01ae"+ + "(\3\2\2\2\u01af\u01b0\7h\2\2\u01b0\u01b1\7n\2\2\u01b1\u01b2\7q\2\2\u01b2"+ + "\u01b3\7c\2\2\u01b3\u01b4\7v\2\2\u01b4*\3\2\2\2\u01b5\u01b6\7h\2\2\u01b6"+ + "\u01b7\7q\2\2\u01b7\u01b8\7t\2\2\u01b8,\3\2\2\2\u01b9\u01ba\7k\2\2\u01ba"+ + "\u01bb\7h\2\2\u01bb.\3\2\2\2\u01bc\u01bd\7i\2\2\u01bd\u01be\7q\2\2\u01be"+ + "\u01bf\7v\2\2\u01bf\u01c0\7q\2\2\u01c0\60\3\2\2\2\u01c1\u01c2\7k\2\2\u01c2"+ + "\u01c3\7o\2\2\u01c3\u01c4\7r\2\2\u01c4\u01c5\7n\2\2\u01c5\u01c6\7g\2\2"+ + "\u01c6\u01c7\7o\2\2\u01c7\u01c8\7g\2\2\u01c8\u01c9\7p\2\2\u01c9\u01ca"+ + "\7v\2\2\u01ca\u01cb\7u\2\2\u01cb\62\3\2\2\2\u01cc\u01cd\7k\2\2\u01cd\u01ce"+ + "\7o\2\2\u01ce\u01cf\7r\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7t\2\2\u01d1"+ + "\u01d2\7v\2\2\u01d2\64\3\2\2\2\u01d3\u01d4\7k\2\2\u01d4\u01d5\7p\2\2\u01d5"+ + "\u01d6\7u\2\2\u01d6\u01d7\7v\2\2\u01d7\u01d8\7c\2\2\u01d8\u01d9\7p\2\2"+ + "\u01d9\u01da\7e\2\2\u01da\u01db\7g\2\2\u01db\u01dc\7q\2\2\u01dc\u01dd"+ + "\7h\2\2\u01dd\66\3\2\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7p\2\2\u01e0\u01e1"+ + "\7v\2\2\u01e18\3\2\2\2\u01e2\u01e3\7k\2\2\u01e3\u01e4\7p\2\2\u01e4\u01e5"+ + "\7v\2\2\u01e5\u01e6\7g\2\2\u01e6\u01e7\7t\2\2\u01e7\u01e8\7h\2\2\u01e8"+ + "\u01e9\7c\2\2\u01e9\u01ea\7e\2\2\u01ea\u01eb\7g\2\2\u01eb:\3\2\2\2\u01ec"+ + "\u01ed\7n\2\2\u01ed\u01ee\7q\2\2\u01ee\u01ef\7p\2\2\u01ef\u01f0\7i\2\2"+ + "\u01f0<\3\2\2\2\u01f1\u01f2\7p\2\2\u01f2\u01f3\7c\2\2\u01f3\u01f4\7v\2"+ + "\2\u01f4\u01f5\7k\2\2\u01f5\u01f6\7x\2\2\u01f6\u01f7\7g\2\2\u01f7>\3\2"+ + "\2\2\u01f8\u01f9\7p\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb\7y\2\2\u01fb@\3"+ + "\2\2\2\u01fc\u01fd\7r\2\2\u01fd\u01fe\7c\2\2\u01fe\u01ff\7e\2\2\u01ff"+ + "\u0200\7m\2\2\u0200\u0201\7c\2\2\u0201\u0202\7i\2\2\u0202\u0203\7g\2\2"+ + "\u0203B\3\2\2\2\u0204\u0205\7r\2\2\u0205\u0206\7t\2\2\u0206\u0207\7k\2"+ + "\2\u0207\u0208\7x\2\2\u0208\u0209\7c\2\2\u0209\u020a\7v\2\2\u020a\u020b"+ + "\7g\2\2\u020bD\3\2\2\2\u020c\u020d\7r\2\2\u020d\u020e\7t\2\2\u020e\u020f"+ + "\7q\2\2\u020f\u0210\7v\2\2\u0210\u0211\7g\2\2\u0211\u0212\7e\2\2\u0212"+ + "\u0213\7v\2\2\u0213\u0214\7g\2\2\u0214\u0215\7f\2\2\u0215F\3\2\2\2\u0216"+ + "\u0217\7r\2\2\u0217\u0218\7w\2\2\u0218\u0219\7d\2\2\u0219\u021a\7n\2\2"+ + "\u021a\u021b\7k\2\2\u021b\u021c\7e\2\2\u021cH\3\2\2\2\u021d\u021e\7t\2"+ + "\2\u021e\u021f\7g\2\2\u021f\u0220\7v\2\2\u0220\u0221\7w\2\2\u0221\u0222"+ + "\7t\2\2\u0222\u0223\7p\2\2\u0223J\3\2\2\2\u0224\u0225\7u\2\2\u0225\u0226"+ + "\7j\2\2\u0226\u0227\7q\2\2\u0227\u0228\7t\2\2\u0228\u0229\7v\2\2\u0229"+ + "L\3\2\2\2\u022a\u022b\7u\2\2\u022b\u022c\7v\2\2\u022c\u022d\7c\2\2\u022d"+ + "\u022e\7v\2\2\u022e\u022f\7k\2\2\u022f\u0230\7e\2\2\u0230N\3\2\2\2\u0231"+ + "\u0232\7u\2\2\u0232\u0233\7v\2\2\u0233\u0234\7t\2\2\u0234\u0235\7k\2\2"+ + "\u0235\u0236\7e\2\2\u0236\u0237\7v\2\2\u0237\u0238\7h\2\2\u0238\u0239"+ + "\7r\2\2\u0239P\3\2\2\2\u023a\u023b\7u\2\2\u023b\u023c\7w\2\2\u023c\u023d"+ + "\7r\2\2\u023d\u023e\7g\2\2\u023e\u023f\7t\2\2\u023fR\3\2\2\2\u0240\u0241"+ + "\7u\2\2\u0241\u0242\7y\2\2\u0242\u0243\7k\2\2\u0243\u0244\7v\2\2\u0244"+ + "\u0245\7e\2\2\u0245\u0246\7j\2\2\u0246T\3\2\2\2\u0247\u0248\7u\2\2\u0248"+ + "\u0249\7{\2\2\u0249\u024a\7p\2\2\u024a\u024b\7e\2\2\u024b\u024c\7j\2\2"+ + "\u024c\u024d\7t\2\2\u024d\u024e\7q\2\2\u024e\u024f\7p\2\2\u024f\u0250"+ + "\7k\2\2\u0250\u0251\7|\2\2\u0251\u0252\7g\2\2\u0252\u0253\7f\2\2\u0253"+ + "V\3\2\2\2\u0254\u0255\7v\2\2\u0255\u0256\7j\2\2\u0256\u0257\7k\2\2\u0257"+ + "\u0258\7u\2\2\u0258X\3\2\2\2\u0259\u025a\7v\2\2\u025a\u025b\7j\2\2\u025b"+ + "\u025c\7t\2\2\u025c\u025d\7q\2\2\u025d\u025e\7y\2\2\u025eZ\3\2\2\2\u025f"+ + "\u0260\7v\2\2\u0260\u0261\7j\2\2\u0261\u0262\7t\2\2\u0262\u0263\7q\2\2"+ + "\u0263\u0264\7y\2\2\u0264\u0265\7u\2\2\u0265\\\3\2\2\2\u0266\u0267\7v"+ + "\2\2\u0267\u0268\7t\2\2\u0268\u0269\7c\2\2\u0269\u026a\7p\2\2\u026a\u026b"+ + "\7u\2\2\u026b\u026c\7k\2\2\u026c\u026d\7g\2\2\u026d\u026e\7p\2\2\u026e"+ + "\u026f\7v\2\2\u026f^\3\2\2\2\u0270\u0271\7v\2\2\u0271\u0272\7t\2\2\u0272"+ + "\u0273\7{\2\2\u0273`\3\2\2\2\u0274\u0275\7x\2\2\u0275\u0276\7q\2\2\u0276"+ + "\u0277\7k\2\2\u0277\u0278\7f\2\2\u0278b\3\2\2\2\u0279\u027a\7x\2\2\u027a"+ + "\u027b\7q\2\2\u027b\u027c\7n\2\2\u027c\u027d\7c\2\2\u027d\u027e\7v\2\2"+ + "\u027e\u027f\7k\2\2\u027f\u0280\7n\2\2\u0280\u0281\7g\2\2\u0281d\3\2\2"+ + "\2\u0282\u0283\7y\2\2\u0283\u0284\7j\2\2\u0284\u0285\7k\2\2\u0285\u0286"+ + "\7n\2\2\u0286\u0287\7g\2\2\u0287f\3\2\2\2\u0288\u028d\5i\65\2\u0289\u028d"+ + "\5k\66\2\u028a\u028d\5m\67\2\u028b\u028d\5o8\2\u028c\u0288\3\2\2\2\u028c"+ + "\u0289\3\2\2\2\u028c\u028a\3\2\2\2\u028c\u028b\3\2\2\2\u028dh\3\2\2\2"+ + "\u028e\u0290\5s:\2\u028f\u0291\5q9\2\u0290\u028f\3\2\2\2\u0290\u0291\3"+ + "\2\2\2\u0291j\3\2\2\2\u0292\u0294\5\u0081A\2\u0293\u0295\5q9\2\u0294\u0293"+ + "\3\2\2\2\u0294\u0295\3\2\2\2\u0295l\3\2\2\2\u0296\u0298\5\u008bF\2\u0297"+ + "\u0299\5q9\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299n\3\2\2\2\u029a"+ + "\u029c\5\u0095K\2\u029b\u029d\5q9\2\u029c\u029b\3\2\2\2\u029c\u029d\3"+ + "\2\2\2\u029dp\3\2\2\2\u029e\u029f\t\2\2\2\u029fr\3\2\2\2\u02a0\u02ab\7"+ + "\62\2\2\u02a1\u02a8\5y=\2\u02a2\u02a4\5u;\2\u02a3\u02a2\3\2\2\2\u02a3"+ + "\u02a4\3\2\2\2\u02a4\u02a9\3\2\2\2\u02a5\u02a6\5\177@\2\u02a6\u02a7\5"+ + "u;\2\u02a7\u02a9\3\2\2\2\u02a8\u02a3\3\2\2\2\u02a8\u02a5\3\2\2\2\u02a9"+ + "\u02ab\3\2\2\2\u02aa\u02a0\3\2\2\2\u02aa\u02a1\3\2\2\2\u02abt\3\2\2\2"+ + "\u02ac\u02b1\5w<\2\u02ad\u02af\5{>\2\u02ae\u02ad\3\2\2\2\u02ae\u02af\3"+ + "\2\2\2\u02af\u02b0\3\2\2\2\u02b0\u02b2\5w<\2\u02b1\u02ae\3\2\2\2\u02b1"+ + "\u02b2\3\2\2\2\u02b2v\3\2\2\2\u02b3\u02b6\7\62\2\2\u02b4\u02b6\5y=\2\u02b5"+ + "\u02b3\3\2\2\2\u02b5\u02b4\3\2\2\2\u02b6x\3\2\2\2\u02b7\u02b8\t\3\2\2"+ + "\u02b8z\3\2\2\2\u02b9\u02bb\5}?\2\u02ba\u02b9\3\2\2\2\u02bb\u02bc\3\2"+ + "\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2\u02bd|\3\2\2\2\u02be\u02c1"+ + "\5w<\2\u02bf\u02c1\7a\2\2\u02c0\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1"+ + "~\3\2\2\2\u02c2\u02c4\7a\2\2\u02c3\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5"+ + "\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0080\3\2\2\2\u02c7\u02c8\7\62"+ + "\2\2\u02c8\u02c9\t\4\2\2\u02c9\u02ca\5\u0083B\2\u02ca\u0082\3\2\2\2\u02cb"+ + "\u02d0\5\u0085C\2\u02cc\u02ce\5\u0087D\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce"+ + "\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cf\u02d1\5\u0085C\2\u02d0\u02cd\3\2\2"+ + "\2\u02d0\u02d1\3\2\2\2\u02d1\u0084\3\2\2\2\u02d2\u02d3\t\5\2\2\u02d3\u0086"+ + "\3\2\2\2\u02d4\u02d6\5\u0089E\2\u02d5\u02d4\3\2\2\2\u02d6\u02d7\3\2\2"+ + "\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u0088\3\2\2\2\u02d9\u02dc"+ + "\5\u0085C\2\u02da\u02dc\7a\2\2\u02db\u02d9\3\2\2\2\u02db\u02da\3\2\2\2"+ + "\u02dc\u008a\3\2\2\2\u02dd\u02df\7\62\2\2\u02de\u02e0\5\177@\2\u02df\u02de"+ + "\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e2\5\u008dG"+ + "\2\u02e2\u008c\3\2\2\2\u02e3\u02e8\5\u008fH\2\u02e4\u02e6\5\u0091I\2\u02e5"+ + "\u02e4\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e9\5\u008f"+ + "H\2\u02e8\u02e5\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u008e\3\2\2\2\u02ea"+ + "\u02eb\t\6\2\2\u02eb\u0090\3\2\2\2\u02ec\u02ee\5\u0093J\2\u02ed\u02ec"+ + "\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0"+ + "\u0092\3\2\2\2\u02f1\u02f4\5\u008fH\2\u02f2\u02f4\7a\2\2\u02f3\u02f1\3"+ + "\2\2\2\u02f3\u02f2\3\2\2\2\u02f4\u0094\3\2\2\2\u02f5\u02f6\7\62\2\2\u02f6"+ + "\u02f7\t\7\2\2\u02f7\u02f8\5\u0097L\2\u02f8\u0096\3\2\2\2\u02f9\u02fe"+ + "\5\u0099M\2\u02fa\u02fc\5\u009bN\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2"+ + "\2\2\u02fc\u02fd\3\2\2\2\u02fd\u02ff\5\u0099M\2\u02fe\u02fb\3\2\2\2\u02fe"+ + "\u02ff\3\2\2\2\u02ff\u0098\3\2\2\2\u0300\u0301\t\b\2\2\u0301\u009a\3\2"+ + "\2\2\u0302\u0304\5\u009dO\2\u0303\u0302\3\2\2\2\u0304\u0305\3\2\2\2\u0305"+ + "\u0303\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u009c\3\2\2\2\u0307\u030a\5\u0099"+ + "M\2\u0308\u030a\7a\2\2\u0309\u0307\3\2\2\2\u0309\u0308\3\2\2\2\u030a\u009e"+ + "\3\2\2\2\u030b\u030e\5\u00a1Q\2\u030c\u030e\5\u00adW\2\u030d\u030b\3\2"+ + "\2\2\u030d\u030c\3\2\2\2\u030e\u00a0\3\2\2\2\u030f\u0310\5u;\2\u0310\u0312"+ + "\7\60\2\2\u0311\u0313\5u;\2\u0312\u0311\3\2\2\2\u0312\u0313\3\2\2\2\u0313"+ + "\u0315\3\2\2\2\u0314\u0316\5\u00a3R\2\u0315\u0314\3\2\2\2\u0315\u0316"+ + "\3\2\2\2\u0316\u0318\3\2\2\2\u0317\u0319\5\u00abV\2\u0318\u0317\3\2\2"+ + "\2\u0318\u0319\3\2\2\2\u0319\u032b\3\2\2\2\u031a\u031b\7\60\2\2\u031b"+ + "\u031d\5u;\2\u031c\u031e\5\u00a3R\2\u031d\u031c\3\2\2\2\u031d\u031e\3"+ + "\2\2\2\u031e\u0320\3\2\2\2\u031f\u0321\5\u00abV\2\u0320\u031f\3\2\2\2"+ + "\u0320\u0321\3\2\2\2\u0321\u032b\3\2\2\2\u0322\u0323\5u;\2\u0323\u0325"+ + "\5\u00a3R\2\u0324\u0326\5\u00abV\2\u0325\u0324\3\2\2\2\u0325\u0326\3\2"+ + "\2\2\u0326\u032b\3\2\2\2\u0327\u0328\5u;\2\u0328\u0329\5\u00abV\2\u0329"+ + "\u032b\3\2\2\2\u032a\u030f\3\2\2\2\u032a\u031a\3\2\2\2\u032a\u0322\3\2"+ + "\2\2\u032a\u0327\3\2\2\2\u032b\u00a2\3\2\2\2\u032c\u032d\5\u00a5S\2\u032d"+ + "\u032e\5\u00a7T\2\u032e\u00a4\3\2\2\2\u032f\u0330\t\t\2\2\u0330\u00a6"+ + "\3\2\2\2\u0331\u0333\5\u00a9U\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2"+ + "\2\u0333\u0334\3\2\2\2\u0334\u0335\5u;\2\u0335\u00a8\3\2\2\2\u0336\u0337"+ + "\t\n\2\2\u0337\u00aa\3\2\2\2\u0338\u0339\t\13\2\2\u0339\u00ac\3\2\2\2"+ + "\u033a\u033b\5\u00afX\2\u033b\u033d\5\u00b1Y\2\u033c\u033e\5\u00abV\2"+ + "\u033d\u033c\3\2\2\2\u033d\u033e\3\2\2\2\u033e\u00ae\3\2\2\2\u033f\u0341"+ + "\5\u0081A\2\u0340\u0342\7\60\2\2\u0341\u0340\3\2\2\2\u0341\u0342\3\2\2"+ + "\2\u0342\u034b\3\2\2\2\u0343\u0344\7\62\2\2\u0344\u0346\t\4\2\2\u0345"+ + "\u0347\5\u0083B\2\u0346\u0345\3\2\2\2\u0346\u0347\3\2\2\2\u0347\u0348"+ + "\3\2\2\2\u0348\u0349\7\60\2\2\u0349\u034b\5\u0083B\2\u034a\u033f\3\2\2"+ + "\2\u034a\u0343\3\2\2\2\u034b\u00b0\3\2\2\2\u034c\u034d\5\u00b3Z\2\u034d"+ + "\u034e\5\u00a7T\2\u034e\u00b2\3\2\2\2\u034f\u0350\t\f\2\2\u0350\u00b4"+ + "\3\2\2\2\u0351\u0352\7v\2\2\u0352\u0353\7t\2\2\u0353\u0354\7w\2\2\u0354"+ + "\u035b\7g\2\2\u0355\u0356\7h\2\2\u0356\u0357\7c\2\2\u0357\u0358\7n\2\2"+ + "\u0358\u0359\7u\2\2\u0359\u035b\7g\2\2\u035a\u0351\3\2\2\2\u035a\u0355"+ + "\3\2\2\2\u035b\u00b6\3\2\2\2\u035c\u035d\7)\2\2\u035d\u035e\5\u00b9]\2"+ + "\u035e\u035f\7)\2\2\u035f\u0365\3\2\2\2\u0360\u0361\7)\2\2\u0361\u0362"+ + "\5\u00c1a\2\u0362\u0363\7)\2\2\u0363\u0365\3\2\2\2\u0364\u035c\3\2\2\2"+ + "\u0364\u0360\3\2\2\2\u0365\u00b8\3\2\2\2\u0366\u0367\n\r\2\2\u0367\u00ba"+ + "\3\2\2\2\u0368\u036a\7$\2\2\u0369\u036b\5\u00bd_\2\u036a\u0369\3\2\2\2"+ + "\u036a\u036b\3\2\2\2\u036b\u036c\3\2\2\2\u036c\u036d\7$\2\2\u036d\u00bc"+ + "\3\2\2\2\u036e\u0370\5\u00bf`\2\u036f\u036e\3\2\2\2\u0370\u0371\3\2\2"+ + "\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u00be\3\2\2\2\u0373\u0376"+ + "\n\16\2\2\u0374\u0376\5\u00c1a\2\u0375\u0373\3\2\2\2\u0375\u0374\3\2\2"+ + "\2\u0376\u00c0\3\2\2\2\u0377\u0378\7^\2\2\u0378\u037c\t\17\2\2\u0379\u037c"+ + "\5\u00c3b\2\u037a\u037c\5\u00c7d\2\u037b\u0377\3\2\2\2\u037b\u0379\3\2"+ + "\2\2\u037b\u037a\3\2\2\2\u037c\u00c2\3\2\2\2\u037d\u037e\7^\2\2\u037e"+ + "\u0389\5\u008fH\2\u037f\u0380\7^\2\2\u0380\u0381\5\u008fH\2\u0381\u0382"+ + "\5\u008fH\2\u0382\u0389\3\2\2\2\u0383\u0384\7^\2\2\u0384\u0385\5\u00c5"+ + "c\2\u0385\u0386\5\u008fH\2\u0386\u0387\5\u008fH\2\u0387\u0389\3\2\2\2"+ + "\u0388\u037d\3\2\2\2\u0388\u037f\3\2\2\2\u0388\u0383\3\2\2\2\u0389\u00c4"+ + "\3\2\2\2\u038a\u038b\t\20\2\2\u038b\u00c6\3\2\2\2\u038c\u038d\7^\2\2\u038d"+ + "\u038e\7w\2\2\u038e\u038f\5\u0085C\2\u038f\u0390\5\u0085C\2\u0390\u0391"+ + "\5\u0085C\2\u0391\u0392\5\u0085C\2\u0392\u00c8\3\2\2\2\u0393\u0394\7p"+ + "\2\2\u0394\u0395\7w\2\2\u0395\u0396\7n\2\2\u0396\u0397\7n\2\2\u0397\u00ca"+ + "\3\2\2\2\u0398\u0399\7*\2\2\u0399\u00cc\3\2\2\2\u039a\u039b\7+\2\2\u039b"+ + "\u00ce\3\2\2\2\u039c\u039d\7}\2\2\u039d\u00d0\3\2\2\2\u039e\u039f\7\177"+ + "\2\2\u039f\u00d2\3\2\2\2\u03a0\u03a1\7]\2\2\u03a1\u00d4\3\2\2\2\u03a2"+ + "\u03a3\7_\2\2\u03a3\u00d6\3\2\2\2\u03a4\u03a5\7=\2\2\u03a5\u00d8\3\2\2"+ + "\2\u03a6\u03a7\7.\2\2\u03a7\u00da\3\2\2\2\u03a8\u03a9\7\60\2\2\u03a9\u00dc"+ + "\3\2\2\2\u03aa\u03ab\7?\2\2\u03ab\u00de\3\2\2\2\u03ac\u03ad\7@\2\2\u03ad"+ + "\u00e0\3\2\2\2\u03ae\u03af\7>\2\2\u03af\u00e2\3\2\2\2\u03b0\u03b1\7#\2"+ + "\2\u03b1\u00e4\3\2\2\2\u03b2\u03b3\7\u0080\2\2\u03b3\u00e6\3\2\2\2\u03b4"+ + "\u03b5\7A\2\2\u03b5\u00e8\3\2\2\2\u03b6\u03b7\7<\2\2\u03b7\u00ea\3\2\2"+ + "\2\u03b8\u03b9\7?\2\2\u03b9\u03ba\7?\2\2\u03ba\u00ec\3\2\2\2\u03bb\u03bc"+ + "\7>\2\2\u03bc\u03bd\7?\2\2\u03bd\u00ee\3\2\2\2\u03be\u03bf\7@\2\2\u03bf"+ + "\u03c0\7?\2\2\u03c0\u00f0\3\2\2\2\u03c1\u03c2\7#\2\2\u03c2\u03c3\7?\2"+ + "\2\u03c3\u00f2\3\2\2\2\u03c4\u03c5\7(\2\2\u03c5\u03c6\7(\2\2\u03c6\u00f4"+ + "\3\2\2\2\u03c7\u03c8\7~\2\2\u03c8\u03c9\7~\2\2\u03c9\u00f6\3\2\2\2\u03ca"+ + "\u03cb\7-\2\2\u03cb\u03cc\7-\2\2\u03cc\u00f8\3\2\2\2\u03cd\u03ce\7/\2"+ + "\2\u03ce\u03cf\7/\2\2\u03cf\u00fa\3\2\2\2\u03d0\u03d1\7-\2\2\u03d1\u00fc"+ + "\3\2\2\2\u03d2\u03d3\7/\2\2\u03d3\u00fe\3\2\2\2\u03d4\u03d5\7,\2\2\u03d5"+ + "\u0100\3\2\2\2\u03d6\u03d7\7\61\2\2\u03d7\u0102\3\2\2\2\u03d8\u03d9\7"+ + "(\2\2\u03d9\u0104\3\2\2\2\u03da\u03db\7~\2\2\u03db\u0106\3\2\2\2\u03dc"+ + "\u03dd\7`\2\2\u03dd\u0108\3\2\2\2\u03de\u03df\7\'\2\2\u03df\u010a\3\2"+ + "\2\2\u03e0\u03e1\7/\2\2\u03e1\u03e2\7@\2\2\u03e2\u010c\3\2\2\2\u03e3\u03e4"+ + "\7<\2\2\u03e4\u03e5\7<\2\2\u03e5\u010e\3\2\2\2\u03e6\u03e7\7-\2\2\u03e7"+ + "\u03e8\7?\2\2\u03e8\u0110\3\2\2\2\u03e9\u03ea\7/\2\2\u03ea\u03eb\7?\2"+ + "\2\u03eb\u0112\3\2\2\2\u03ec\u03ed\7,\2\2\u03ed\u03ee\7?\2\2\u03ee\u0114"+ + "\3\2\2\2\u03ef\u03f0\7\61\2\2\u03f0\u03f1\7?\2\2\u03f1\u0116\3\2\2\2\u03f2"+ + "\u03f3\7(\2\2\u03f3\u03f4\7?\2\2\u03f4\u0118\3\2\2\2\u03f5\u03f6\7~\2"+ + "\2\u03f6\u03f7\7?\2\2\u03f7\u011a\3\2\2\2\u03f8\u03f9\7`\2\2\u03f9\u03fa"+ + "\7?\2\2\u03fa\u011c\3\2\2\2\u03fb\u03fc\7\'\2\2\u03fc\u03fd\7?\2\2\u03fd"+ + "\u011e\3\2\2\2\u03fe\u03ff\7>\2\2\u03ff\u0400\7>\2\2\u0400\u0401\7?\2"+ + "\2\u0401\u0120\3\2\2\2\u0402\u0403\7@\2\2\u0403\u0404\7@\2\2\u0404\u0405"+ + "\7?\2\2\u0405\u0122\3\2\2\2\u0406\u0407\7@\2\2\u0407\u0408\7@\2\2\u0408"+ + "\u0409\7@\2\2\u0409\u040a\7?\2\2\u040a\u0124\3\2\2\2\u040b\u040f\5\u0127"+ + "\u0094\2\u040c\u040e\5\u0129\u0095\2\u040d\u040c\3\2\2\2\u040e\u0411\3"+ + "\2\2\2\u040f\u040d\3\2\2\2\u040f\u0410\3\2\2\2\u0410\u0126\3\2\2\2\u0411"+ + "\u040f\3\2\2\2\u0412\u0419\t\21\2\2\u0413\u0414\n\22\2\2\u0414\u0419\6"+ + "\u0094\2\2\u0415\u0416\t\23\2\2\u0416\u0417\t\24\2\2\u0417\u0419\6\u0094"+ + "\3\2\u0418\u0412\3\2\2\2\u0418\u0413\3\2\2\2\u0418\u0415\3\2\2\2\u0419"+ + "\u0128\3\2\2\2\u041a\u0421\t\25\2\2\u041b\u041c\n\22\2\2\u041c\u0421\6"+ + "\u0095\4\2\u041d\u041e\t\23\2\2\u041e\u041f\t\24\2\2\u041f\u0421\6\u0095"+ + "\5\2\u0420\u041a\3\2\2\2\u0420\u041b\3\2\2\2\u0420\u041d\3\2\2\2\u0421"+ + "\u012a\3\2\2\2\u0422\u0423\7B\2\2\u0423\u012c\3\2\2\2\u0424\u0425\7\60"+ + "\2\2\u0425\u0426\7\60\2\2\u0426\u0427\7\60\2\2\u0427\u012e\3\2\2\2\u0428"+ + "\u042a\t\26\2\2\u0429\u0428\3\2\2\2\u042a\u042b\3\2\2\2\u042b\u0429\3"+ + "\2\2\2\u042b\u042c\3\2\2\2\u042c\u042d\3\2\2\2\u042d\u042e\b\u0098\2\2"+ + "\u042e\u0130\3\2\2\2\u042f\u0430\7\61\2\2\u0430\u0431\7,\2\2\u0431\u0435"+ + "\3\2\2\2\u0432\u0434\13\2\2\2\u0433\u0432\3\2\2\2\u0434\u0437\3\2\2\2"+ + "\u0435\u0436\3\2\2\2\u0435\u0433\3\2\2\2\u0436\u0438\3\2\2\2\u0437\u0435"+ + "\3\2\2\2\u0438\u0439\7,\2\2\u0439\u043a\7\61\2\2\u043a\u043b\3\2\2\2\u043b"+ + "\u043c\b\u0099\2\2\u043c\u0132\3\2\2\2\u043d\u043e\7\61\2\2\u043e\u043f"+ + "\7\61\2\2\u043f\u0443\3\2\2\2\u0440\u0442\n\27\2\2\u0441\u0440\3\2\2\2"+ + "\u0442\u0445\3\2\2\2\u0443\u0441\3\2\2\2\u0443\u0444\3\2\2\2\u0444\u0446"+ + "\3\2\2\2\u0445\u0443\3\2\2\2\u0446\u0447\b\u009a\2\2\u0447\u0134\3\2\2"+ + "\28\2\u028c\u0290\u0294\u0298\u029c\u02a3\u02a8\u02aa\u02ae\u02b1\u02b5"+ + "\u02bc\u02c0\u02c5\u02cd\u02d0\u02d7\u02db\u02df\u02e5\u02e8\u02ef\u02f3"+ + "\u02fb\u02fe\u0305\u0309\u030d\u0312\u0315\u0318\u031d\u0320\u0325\u032a"+ + "\u0332\u033d\u0341\u0346\u034a\u035a\u0364\u036a\u0371\u0375\u037b\u0388"+ + "\u040f\u0418\u0420\u042b\u0435\u0443\3\b\2\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/Java8Lexer.tokens b/src/de/dhbwstuttgart/parser/Java8Lexer.tokens new file mode 100644 index 00000000..52ef1eee --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8Lexer.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=67 +'<'=68 +'!'=69 +'~'=70 +'?'=71 +':'=72 +'=='=73 +'<='=74 +'>='=75 +'!='=76 +'&&'=77 +'||'=78 +'++'=79 +'--'=80 +'+'=81 +'-'=82 +'*'=83 +'/'=84 +'&'=85 +'|'=86 +'^'=87 +'%'=88 +'->'=89 +'::'=90 +'+='=91 +'-='=92 +'*='=93 +'/='=94 +'&='=95 +'|='=96 +'^='=97 +'%='=98 +'<<='=99 +'>>='=100 +'>>>='=101 +'@'=103 +'...'=104 diff --git a/src/de/dhbwstuttgart/parser/Java8Listener.java b/src/de/dhbwstuttgart/parser/Java8Listener.java new file mode 100644 index 00000000..42e85a1a --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8Listener.java @@ -0,0 +1,2380 @@ +// Generated from Java8.g4 by ANTLR 4.5.3 +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link Java8Parser}. + */ +public interface Java8Listener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link Java8Parser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(Java8Parser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(Java8Parser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#type}. + * @param ctx the parse tree + */ + void enterType(Java8Parser.TypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#type}. + * @param ctx the parse tree + */ + void exitType(Java8Parser.TypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primitiveType}. + * @param ctx the parse tree + */ + void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primitiveType}. + * @param ctx the parse tree + */ + void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#numericType}. + * @param ctx the parse tree + */ + void enterNumericType(Java8Parser.NumericTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#numericType}. + * @param ctx the parse tree + */ + void exitNumericType(Java8Parser.NumericTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#integralType}. + * @param ctx the parse tree + */ + void enterIntegralType(Java8Parser.IntegralTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#integralType}. + * @param ctx the parse tree + */ + void exitIntegralType(Java8Parser.IntegralTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#floatingPointType}. + * @param ctx the parse tree + */ + void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#floatingPointType}. + * @param ctx the parse tree + */ + void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#referenceType}. + * @param ctx the parse tree + */ + void enterReferenceType(Java8Parser.ReferenceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#referenceType}. + * @param ctx the parse tree + */ + void exitReferenceType(Java8Parser.ReferenceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType}. + * @param ctx the parse tree + */ + void enterClassType(Java8Parser.ClassTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType}. + * @param ctx the parse tree + */ + void exitClassType(Java8Parser.ClassTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeVariable}. + * @param ctx the parse tree + */ + void enterTypeVariable(Java8Parser.TypeVariableContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeVariable}. + * @param ctx the parse tree + */ + void exitTypeVariable(Java8Parser.TypeVariableContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayType}. + * @param ctx the parse tree + */ + void enterArrayType(Java8Parser.ArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayType}. + * @param ctx the parse tree + */ + void exitArrayType(Java8Parser.ArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dims}. + * @param ctx the parse tree + */ + void enterDims(Java8Parser.DimsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dims}. + * @param ctx the parse tree + */ + void exitDims(Java8Parser.DimsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameter}. + * @param ctx the parse tree + */ + void enterTypeParameter(Java8Parser.TypeParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameter}. + * @param ctx the parse tree + */ + void exitTypeParameter(Java8Parser.TypeParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameterModifier}. + * @param ctx the parse tree + */ + void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameterModifier}. + * @param ctx the parse tree + */ + void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeBound}. + * @param ctx the parse tree + */ + void enterTypeBound(Java8Parser.TypeBoundContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeBound}. + * @param ctx the parse tree + */ + void exitTypeBound(Java8Parser.TypeBoundContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#additionalBound}. + * @param ctx the parse tree + */ + void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#additionalBound}. + * @param ctx the parse tree + */ + void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArguments}. + * @param ctx the parse tree + */ + void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArguments}. + * @param ctx the parse tree + */ + void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgumentList}. + * @param ctx the parse tree + */ + void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgumentList}. + * @param ctx the parse tree + */ + void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgument}. + * @param ctx the parse tree + */ + void enterTypeArgument(Java8Parser.TypeArgumentContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgument}. + * @param ctx the parse tree + */ + void exitTypeArgument(Java8Parser.TypeArgumentContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#wildcard}. + * @param ctx the parse tree + */ + void enterWildcard(Java8Parser.WildcardContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#wildcard}. + * @param ctx the parse tree + */ + void exitWildcard(Java8Parser.WildcardContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#wildcardBounds}. + * @param ctx the parse tree + */ + void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#wildcardBounds}. + * @param ctx the parse tree + */ + void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageName}. + * @param ctx the parse tree + */ + void enterPackageName(Java8Parser.PackageNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageName}. + * @param ctx the parse tree + */ + void exitPackageName(Java8Parser.PackageNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeName}. + * @param ctx the parse tree + */ + void enterTypeName(Java8Parser.TypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeName}. + * @param ctx the parse tree + */ + void exitTypeName(Java8Parser.TypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageOrTypeName}. + * @param ctx the parse tree + */ + void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageOrTypeName}. + * @param ctx the parse tree + */ + void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expressionName}. + * @param ctx the parse tree + */ + void enterExpressionName(Java8Parser.ExpressionNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expressionName}. + * @param ctx the parse tree + */ + void exitExpressionName(Java8Parser.ExpressionNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodName}. + * @param ctx the parse tree + */ + void enterMethodName(Java8Parser.MethodNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodName}. + * @param ctx the parse tree + */ + void exitMethodName(Java8Parser.MethodNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ambiguousName}. + * @param ctx the parse tree + */ + void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ambiguousName}. + * @param ctx the parse tree + */ + void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#compilationUnit}. + * @param ctx the parse tree + */ + void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#compilationUnit}. + * @param ctx the parse tree + */ + void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageDeclaration}. + * @param ctx the parse tree + */ + void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageDeclaration}. + * @param ctx the parse tree + */ + void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageModifier}. + * @param ctx the parse tree + */ + void enterPackageModifier(Java8Parser.PackageModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageModifier}. + * @param ctx the parse tree + */ + void exitPackageModifier(Java8Parser.PackageModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#importDeclaration}. + * @param ctx the parse tree + */ + void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#importDeclaration}. + * @param ctx the parse tree + */ + void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}. + * @param ctx the parse tree + */ + void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}. + * @param ctx the parse tree + */ + void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}. + * @param ctx the parse tree + */ + void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}. + * @param ctx the parse tree + */ + void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeDeclaration}. + * @param ctx the parse tree + */ + void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeDeclaration}. + * @param ctx the parse tree + */ + void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classDeclaration}. + * @param ctx the parse tree + */ + void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classDeclaration}. + * @param ctx the parse tree + */ + void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalClassDeclaration}. + * @param ctx the parse tree + */ + void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalClassDeclaration}. + * @param ctx the parse tree + */ + void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classModifier}. + * @param ctx the parse tree + */ + void enterClassModifier(Java8Parser.ClassModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classModifier}. + * @param ctx the parse tree + */ + void exitClassModifier(Java8Parser.ClassModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameters}. + * @param ctx the parse tree + */ + void enterTypeParameters(Java8Parser.TypeParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameters}. + * @param ctx the parse tree + */ + void exitTypeParameters(Java8Parser.TypeParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameterList}. + * @param ctx the parse tree + */ + void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameterList}. + * @param ctx the parse tree + */ + void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#superclass}. + * @param ctx the parse tree + */ + void enterSuperclass(Java8Parser.SuperclassContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#superclass}. + * @param ctx the parse tree + */ + void exitSuperclass(Java8Parser.SuperclassContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#superinterfaces}. + * @param ctx the parse tree + */ + void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#superinterfaces}. + * @param ctx the parse tree + */ + void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceTypeList}. + * @param ctx the parse tree + */ + void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceTypeList}. + * @param ctx the parse tree + */ + void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classBody}. + * @param ctx the parse tree + */ + void enterClassBody(Java8Parser.ClassBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classBody}. + * @param ctx the parse tree + */ + void exitClassBody(Java8Parser.ClassBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classBodyDeclaration}. + * @param ctx the parse tree + */ + void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classBodyDeclaration}. + * @param ctx the parse tree + */ + void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classMemberDeclaration}. + * @param ctx the parse tree + */ + void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classMemberDeclaration}. + * @param ctx the parse tree + */ + void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldDeclaration}. + * @param ctx the parse tree + */ + void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldDeclaration}. + * @param ctx the parse tree + */ + void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldModifier}. + * @param ctx the parse tree + */ + void enterFieldModifier(Java8Parser.FieldModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldModifier}. + * @param ctx the parse tree + */ + void exitFieldModifier(Java8Parser.FieldModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorList}. + * @param ctx the parse tree + */ + void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorList}. + * @param ctx the parse tree + */ + void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclarator}. + * @param ctx the parse tree + */ + void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclarator}. + * @param ctx the parse tree + */ + void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorId}. + * @param ctx the parse tree + */ + void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorId}. + * @param ctx the parse tree + */ + void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableInitializer}. + * @param ctx the parse tree + */ + void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableInitializer}. + * @param ctx the parse tree + */ + void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannType}. + * @param ctx the parse tree + */ + void enterUnannType(Java8Parser.UnannTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannType}. + * @param ctx the parse tree + */ + void exitUnannType(Java8Parser.UnannTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannPrimitiveType}. + * @param ctx the parse tree + */ + void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannPrimitiveType}. + * @param ctx the parse tree + */ + void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannReferenceType}. + * @param ctx the parse tree + */ + void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannReferenceType}. + * @param ctx the parse tree + */ + void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType}. + * @param ctx the parse tree + */ + void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType}. + * @param ctx the parse tree + */ + void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannTypeVariable}. + * @param ctx the parse tree + */ + void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannTypeVariable}. + * @param ctx the parse tree + */ + void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannArrayType}. + * @param ctx the parse tree + */ + void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannArrayType}. + * @param ctx the parse tree + */ + void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodDeclaration}. + * @param ctx the parse tree + */ + void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodDeclaration}. + * @param ctx the parse tree + */ + void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodModifier}. + * @param ctx the parse tree + */ + void enterMethodModifier(Java8Parser.MethodModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodModifier}. + * @param ctx the parse tree + */ + void exitMethodModifier(Java8Parser.MethodModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodHeader}. + * @param ctx the parse tree + */ + void enterMethodHeader(Java8Parser.MethodHeaderContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodHeader}. + * @param ctx the parse tree + */ + void exitMethodHeader(Java8Parser.MethodHeaderContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#result}. + * @param ctx the parse tree + */ + void enterResult(Java8Parser.ResultContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#result}. + * @param ctx the parse tree + */ + void exitResult(Java8Parser.ResultContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodDeclarator}. + * @param ctx the parse tree + */ + void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodDeclarator}. + * @param ctx the parse tree + */ + void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameterList}. + * @param ctx the parse tree + */ + void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameterList}. + * @param ctx the parse tree + */ + void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameters}. + * @param ctx the parse tree + */ + void enterFormalParameters(Java8Parser.FormalParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameters}. + * @param ctx the parse tree + */ + void exitFormalParameters(Java8Parser.FormalParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameter}. + * @param ctx the parse tree + */ + void enterFormalParameter(Java8Parser.FormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameter}. + * @param ctx the parse tree + */ + void exitFormalParameter(Java8Parser.FormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableModifier}. + * @param ctx the parse tree + */ + void enterVariableModifier(Java8Parser.VariableModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableModifier}. + * @param ctx the parse tree + */ + void exitVariableModifier(Java8Parser.VariableModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lastFormalParameter}. + * @param ctx the parse tree + */ + void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lastFormalParameter}. + * @param ctx the parse tree + */ + void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#receiverParameter}. + * @param ctx the parse tree + */ + void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#receiverParameter}. + * @param ctx the parse tree + */ + void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#throws_}. + * @param ctx the parse tree + */ + void enterThrows_(Java8Parser.Throws_Context ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#throws_}. + * @param ctx the parse tree + */ + void exitThrows_(Java8Parser.Throws_Context ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exceptionTypeList}. + * @param ctx the parse tree + */ + void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exceptionTypeList}. + * @param ctx the parse tree + */ + void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exceptionType}. + * @param ctx the parse tree + */ + void enterExceptionType(Java8Parser.ExceptionTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exceptionType}. + * @param ctx the parse tree + */ + void exitExceptionType(Java8Parser.ExceptionTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodBody}. + * @param ctx the parse tree + */ + void enterMethodBody(Java8Parser.MethodBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodBody}. + * @param ctx the parse tree + */ + void exitMethodBody(Java8Parser.MethodBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#instanceInitializer}. + * @param ctx the parse tree + */ + void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#instanceInitializer}. + * @param ctx the parse tree + */ + void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#staticInitializer}. + * @param ctx the parse tree + */ + void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#staticInitializer}. + * @param ctx the parse tree + */ + void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorDeclaration}. + * @param ctx the parse tree + */ + void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorDeclaration}. + * @param ctx the parse tree + */ + void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorModifier}. + * @param ctx the parse tree + */ + void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorModifier}. + * @param ctx the parse tree + */ + void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorDeclarator}. + * @param ctx the parse tree + */ + void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorDeclarator}. + * @param ctx the parse tree + */ + void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#simpleTypeName}. + * @param ctx the parse tree + */ + void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#simpleTypeName}. + * @param ctx the parse tree + */ + void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorBody}. + * @param ctx the parse tree + */ + void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorBody}. + * @param ctx the parse tree + */ + void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}. + * @param ctx the parse tree + */ + void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}. + * @param ctx the parse tree + */ + void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumDeclaration}. + * @param ctx the parse tree + */ + void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumDeclaration}. + * @param ctx the parse tree + */ + void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumBody}. + * @param ctx the parse tree + */ + void enterEnumBody(Java8Parser.EnumBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumBody}. + * @param ctx the parse tree + */ + void exitEnumBody(Java8Parser.EnumBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantList}. + * @param ctx the parse tree + */ + void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantList}. + * @param ctx the parse tree + */ + void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstant}. + * @param ctx the parse tree + */ + void enterEnumConstant(Java8Parser.EnumConstantContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstant}. + * @param ctx the parse tree + */ + void exitEnumConstant(Java8Parser.EnumConstantContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantModifier}. + * @param ctx the parse tree + */ + void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantModifier}. + * @param ctx the parse tree + */ + void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. + * @param ctx the parse tree + */ + void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. + * @param ctx the parse tree + */ + void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}. + * @param ctx the parse tree + */ + void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}. + * @param ctx the parse tree + */ + void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceModifier}. + * @param ctx the parse tree + */ + void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceModifier}. + * @param ctx the parse tree + */ + void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#extendsInterfaces}. + * @param ctx the parse tree + */ + void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#extendsInterfaces}. + * @param ctx the parse tree + */ + void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceBody}. + * @param ctx the parse tree + */ + void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceBody}. + * @param ctx the parse tree + */ + void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantDeclaration}. + * @param ctx the parse tree + */ + void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantDeclaration}. + * @param ctx the parse tree + */ + void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantModifier}. + * @param ctx the parse tree + */ + void enterConstantModifier(Java8Parser.ConstantModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantModifier}. + * @param ctx the parse tree + */ + void exitConstantModifier(Java8Parser.ConstantModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMethodModifier}. + * @param ctx the parse tree + */ + void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMethodModifier}. + * @param ctx the parse tree + */ + void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeBody}. + * @param ctx the parse tree + */ + void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeBody}. + * @param ctx the parse tree + */ + void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}. + * @param ctx the parse tree + */ + void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}. + * @param ctx the parse tree + */ + void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#defaultValue}. + * @param ctx the parse tree + */ + void enterDefaultValue(Java8Parser.DefaultValueContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#defaultValue}. + * @param ctx the parse tree + */ + void exitDefaultValue(Java8Parser.DefaultValueContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotation}. + * @param ctx the parse tree + */ + void enterAnnotation(Java8Parser.AnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotation}. + * @param ctx the parse tree + */ + void exitAnnotation(Java8Parser.AnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalAnnotation}. + * @param ctx the parse tree + */ + void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalAnnotation}. + * @param ctx the parse tree + */ + void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValuePairList}. + * @param ctx the parse tree + */ + void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValuePairList}. + * @param ctx the parse tree + */ + void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValuePair}. + * @param ctx the parse tree + */ + void enterElementValuePair(Java8Parser.ElementValuePairContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValuePair}. + * @param ctx the parse tree + */ + void exitElementValuePair(Java8Parser.ElementValuePairContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValue}. + * @param ctx the parse tree + */ + void enterElementValue(Java8Parser.ElementValueContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValue}. + * @param ctx the parse tree + */ + void exitElementValue(Java8Parser.ElementValueContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. + * @param ctx the parse tree + */ + void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. + * @param ctx the parse tree + */ + void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValueList}. + * @param ctx the parse tree + */ + void enterElementValueList(Java8Parser.ElementValueListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValueList}. + * @param ctx the parse tree + */ + void exitElementValueList(Java8Parser.ElementValueListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#markerAnnotation}. + * @param ctx the parse tree + */ + void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#markerAnnotation}. + * @param ctx the parse tree + */ + void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleElementAnnotation}. + * @param ctx the parse tree + */ + void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleElementAnnotation}. + * @param ctx the parse tree + */ + void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayInitializer}. + * @param ctx the parse tree + */ + void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayInitializer}. + * @param ctx the parse tree + */ + void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableInitializerList}. + * @param ctx the parse tree + */ + void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableInitializerList}. + * @param ctx the parse tree + */ + void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#block}. + * @param ctx the parse tree + */ + void enterBlock(Java8Parser.BlockContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#block}. + * @param ctx the parse tree + */ + void exitBlock(Java8Parser.BlockContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#blockStatements}. + * @param ctx the parse tree + */ + void enterBlockStatements(Java8Parser.BlockStatementsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#blockStatements}. + * @param ctx the parse tree + */ + void exitBlockStatements(Java8Parser.BlockStatementsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#blockStatement}. + * @param ctx the parse tree + */ + void enterBlockStatement(Java8Parser.BlockStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#blockStatement}. + * @param ctx the parse tree + */ + void exitBlockStatement(Java8Parser.BlockStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. + * @param ctx the parse tree + */ + void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. + * @param ctx the parse tree + */ + void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#localVariableDeclaration}. + * @param ctx the parse tree + */ + void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#localVariableDeclaration}. + * @param ctx the parse tree + */ + void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statement}. + * @param ctx the parse tree + */ + void enterStatement(Java8Parser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statement}. + * @param ctx the parse tree + */ + void exitStatement(Java8Parser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementNoShortIf}. + * @param ctx the parse tree + */ + void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementNoShortIf}. + * @param ctx the parse tree + */ + void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}. + * @param ctx the parse tree + */ + void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}. + * @param ctx the parse tree + */ + void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#emptyStatement}. + * @param ctx the parse tree + */ + void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#emptyStatement}. + * @param ctx the parse tree + */ + void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#labeledStatement}. + * @param ctx the parse tree + */ + void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#labeledStatement}. + * @param ctx the parse tree + */ + void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expressionStatement}. + * @param ctx the parse tree + */ + void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expressionStatement}. + * @param ctx the parse tree + */ + void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementExpression}. + * @param ctx the parse tree + */ + void enterStatementExpression(Java8Parser.StatementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementExpression}. + * @param ctx the parse tree + */ + void exitStatementExpression(Java8Parser.StatementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenStatement}. + * @param ctx the parse tree + */ + void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenStatement}. + * @param ctx the parse tree + */ + void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatement}. + * @param ctx the parse tree + */ + void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatement}. + * @param ctx the parse tree + */ + void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assertStatement}. + * @param ctx the parse tree + */ + void enterAssertStatement(Java8Parser.AssertStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assertStatement}. + * @param ctx the parse tree + */ + void exitAssertStatement(Java8Parser.AssertStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchStatement}. + * @param ctx the parse tree + */ + void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchStatement}. + * @param ctx the parse tree + */ + void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchBlock}. + * @param ctx the parse tree + */ + void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchBlock}. + * @param ctx the parse tree + */ + void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. + * @param ctx the parse tree + */ + void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. + * @param ctx the parse tree + */ + void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchLabels}. + * @param ctx the parse tree + */ + void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchLabels}. + * @param ctx the parse tree + */ + void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchLabel}. + * @param ctx the parse tree + */ + void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchLabel}. + * @param ctx the parse tree + */ + void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantName}. + * @param ctx the parse tree + */ + void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantName}. + * @param ctx the parse tree + */ + void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#whileStatement}. + * @param ctx the parse tree + */ + void enterWhileStatement(Java8Parser.WhileStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#whileStatement}. + * @param ctx the parse tree + */ + void exitWhileStatement(Java8Parser.WhileStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#doStatement}. + * @param ctx the parse tree + */ + void enterDoStatement(Java8Parser.DoStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#doStatement}. + * @param ctx the parse tree + */ + void exitDoStatement(Java8Parser.DoStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forStatement}. + * @param ctx the parse tree + */ + void enterForStatement(Java8Parser.ForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forStatement}. + * @param ctx the parse tree + */ + void exitForStatement(Java8Parser.ForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#basicForStatement}. + * @param ctx the parse tree + */ + void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#basicForStatement}. + * @param ctx the parse tree + */ + void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forInit}. + * @param ctx the parse tree + */ + void enterForInit(Java8Parser.ForInitContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forInit}. + * @param ctx the parse tree + */ + void exitForInit(Java8Parser.ForInitContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forUpdate}. + * @param ctx the parse tree + */ + void enterForUpdate(Java8Parser.ForUpdateContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forUpdate}. + * @param ctx the parse tree + */ + void exitForUpdate(Java8Parser.ForUpdateContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementExpressionList}. + * @param ctx the parse tree + */ + void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementExpressionList}. + * @param ctx the parse tree + */ + void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enhancedForStatement}. + * @param ctx the parse tree + */ + void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enhancedForStatement}. + * @param ctx the parse tree + */ + void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#breakStatement}. + * @param ctx the parse tree + */ + void enterBreakStatement(Java8Parser.BreakStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#breakStatement}. + * @param ctx the parse tree + */ + void exitBreakStatement(Java8Parser.BreakStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#continueStatement}. + * @param ctx the parse tree + */ + void enterContinueStatement(Java8Parser.ContinueStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#continueStatement}. + * @param ctx the parse tree + */ + void exitContinueStatement(Java8Parser.ContinueStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(Java8Parser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(Java8Parser.ReturnStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#throwStatement}. + * @param ctx the parse tree + */ + void enterThrowStatement(Java8Parser.ThrowStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#throwStatement}. + * @param ctx the parse tree + */ + void exitThrowStatement(Java8Parser.ThrowStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#synchronizedStatement}. + * @param ctx the parse tree + */ + void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#synchronizedStatement}. + * @param ctx the parse tree + */ + void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#tryStatement}. + * @param ctx the parse tree + */ + void enterTryStatement(Java8Parser.TryStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#tryStatement}. + * @param ctx the parse tree + */ + void exitTryStatement(Java8Parser.TryStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catches}. + * @param ctx the parse tree + */ + void enterCatches(Java8Parser.CatchesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catches}. + * @param ctx the parse tree + */ + void exitCatches(Java8Parser.CatchesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchClause}. + * @param ctx the parse tree + */ + void enterCatchClause(Java8Parser.CatchClauseContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchClause}. + * @param ctx the parse tree + */ + void exitCatchClause(Java8Parser.CatchClauseContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchFormalParameter}. + * @param ctx the parse tree + */ + void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchFormalParameter}. + * @param ctx the parse tree + */ + void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchType}. + * @param ctx the parse tree + */ + void enterCatchType(Java8Parser.CatchTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchType}. + * @param ctx the parse tree + */ + void exitCatchType(Java8Parser.CatchTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#finally_}. + * @param ctx the parse tree + */ + void enterFinally_(Java8Parser.Finally_Context ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#finally_}. + * @param ctx the parse tree + */ + void exitFinally_(Java8Parser.Finally_Context ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}. + * @param ctx the parse tree + */ + void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}. + * @param ctx the parse tree + */ + void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resourceSpecification}. + * @param ctx the parse tree + */ + void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resourceSpecification}. + * @param ctx the parse tree + */ + void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resourceList}. + * @param ctx the parse tree + */ + void enterResourceList(Java8Parser.ResourceListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resourceList}. + * @param ctx the parse tree + */ + void exitResourceList(Java8Parser.ResourceListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resource}. + * @param ctx the parse tree + */ + void enterResource(Java8Parser.ResourceContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resource}. + * @param ctx the parse tree + */ + void exitResource(Java8Parser.ResourceContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primary}. + * @param ctx the parse tree + */ + void enterPrimary(Java8Parser.PrimaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primary}. + * @param ctx the parse tree + */ + void exitPrimary(Java8Parser.PrimaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. + * @param ctx the parse tree + */ + void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. + * @param ctx the parse tree + */ + void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess}. + * @param ctx the parse tree + */ + void enterFieldAccess(Java8Parser.FieldAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess}. + * @param ctx the parse tree + */ + void exitFieldAccess(Java8Parser.FieldAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess}. + * @param ctx the parse tree + */ + void enterArrayAccess(Java8Parser.ArrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess}. + * @param ctx the parse tree + */ + void exitArrayAccess(Java8Parser.ArrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation}. + * @param ctx the parse tree + */ + void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation}. + * @param ctx the parse tree + */ + void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}. + * @param ctx the parse tree + */ + void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}. + * @param ctx the parse tree + */ + void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}. + * @param ctx the parse tree + */ + void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}. + * @param ctx the parse tree + */ + void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#argumentList}. + * @param ctx the parse tree + */ + void enterArgumentList(Java8Parser.ArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#argumentList}. + * @param ctx the parse tree + */ + void exitArgumentList(Java8Parser.ArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference}. + * @param ctx the parse tree + */ + void enterMethodReference(Java8Parser.MethodReferenceContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference}. + * @param ctx the parse tree + */ + void exitMethodReference(Java8Parser.MethodReferenceContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference_lf_primary}. + * @param ctx the parse tree + */ + void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference_lf_primary}. + * @param ctx the parse tree + */ + void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}. + * @param ctx the parse tree + */ + void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}. + * @param ctx the parse tree + */ + void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayCreationExpression}. + * @param ctx the parse tree + */ + void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayCreationExpression}. + * @param ctx the parse tree + */ + void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dimExprs}. + * @param ctx the parse tree + */ + void enterDimExprs(Java8Parser.DimExprsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dimExprs}. + * @param ctx the parse tree + */ + void exitDimExprs(Java8Parser.DimExprsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dimExpr}. + * @param ctx the parse tree + */ + void enterDimExpr(Java8Parser.DimExprContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dimExpr}. + * @param ctx the parse tree + */ + void exitDimExpr(Java8Parser.DimExprContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantExpression}. + * @param ctx the parse tree + */ + void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantExpression}. + * @param ctx the parse tree + */ + void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expression}. + * @param ctx the parse tree + */ + void enterExpression(Java8Parser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expression}. + * @param ctx the parse tree + */ + void exitExpression(Java8Parser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaExpression}. + * @param ctx the parse tree + */ + void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaExpression}. + * @param ctx the parse tree + */ + void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaParameters}. + * @param ctx the parse tree + */ + void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaParameters}. + * @param ctx the parse tree + */ + void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#inferredFormalParameterList}. + * @param ctx the parse tree + */ + void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#inferredFormalParameterList}. + * @param ctx the parse tree + */ + void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaBody}. + * @param ctx the parse tree + */ + void enterLambdaBody(Java8Parser.LambdaBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaBody}. + * @param ctx the parse tree + */ + void exitLambdaBody(Java8Parser.LambdaBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignmentExpression}. + * @param ctx the parse tree + */ + void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignmentExpression}. + * @param ctx the parse tree + */ + void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignment}. + * @param ctx the parse tree + */ + void enterAssignment(Java8Parser.AssignmentContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignment}. + * @param ctx the parse tree + */ + void exitAssignment(Java8Parser.AssignmentContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#leftHandSide}. + * @param ctx the parse tree + */ + void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#leftHandSide}. + * @param ctx the parse tree + */ + void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignmentOperator}. + * @param ctx the parse tree + */ + void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignmentOperator}. + * @param ctx the parse tree + */ + void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalExpression}. + * @param ctx the parse tree + */ + void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalExpression}. + * @param ctx the parse tree + */ + void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalOrExpression}. + * @param ctx the parse tree + */ + void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalOrExpression}. + * @param ctx the parse tree + */ + void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalAndExpression}. + * @param ctx the parse tree + */ + void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalAndExpression}. + * @param ctx the parse tree + */ + void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#inclusiveOrExpression}. + * @param ctx the parse tree + */ + void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#inclusiveOrExpression}. + * @param ctx the parse tree + */ + void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exclusiveOrExpression}. + * @param ctx the parse tree + */ + void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exclusiveOrExpression}. + * @param ctx the parse tree + */ + void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#andExpression}. + * @param ctx the parse tree + */ + void enterAndExpression(Java8Parser.AndExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#andExpression}. + * @param ctx the parse tree + */ + void exitAndExpression(Java8Parser.AndExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#equalityExpression}. + * @param ctx the parse tree + */ + void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#equalityExpression}. + * @param ctx the parse tree + */ + void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#relationalExpression}. + * @param ctx the parse tree + */ + void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#relationalExpression}. + * @param ctx the parse tree + */ + void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#shiftExpression}. + * @param ctx the parse tree + */ + void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#shiftExpression}. + * @param ctx the parse tree + */ + void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#additiveExpression}. + * @param ctx the parse tree + */ + void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#additiveExpression}. + * @param ctx the parse tree + */ + void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#multiplicativeExpression}. + * @param ctx the parse tree + */ + void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#multiplicativeExpression}. + * @param ctx the parse tree + */ + void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unaryExpression}. + * @param ctx the parse tree + */ + void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unaryExpression}. + * @param ctx the parse tree + */ + void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#preIncrementExpression}. + * @param ctx the parse tree + */ + void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#preIncrementExpression}. + * @param ctx the parse tree + */ + void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#preDecrementExpression}. + * @param ctx the parse tree + */ + void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#preDecrementExpression}. + * @param ctx the parse tree + */ + void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}. + * @param ctx the parse tree + */ + void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}. + * @param ctx the parse tree + */ + void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postfixExpression}. + * @param ctx the parse tree + */ + void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postfixExpression}. + * @param ctx the parse tree + */ + void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression}. + * @param ctx the parse tree + */ + void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression}. + * @param ctx the parse tree + */ + void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression}. + * @param ctx the parse tree + */ + void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression}. + * @param ctx the parse tree + */ + void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#castExpression}. + * @param ctx the parse tree + */ + void enterCastExpression(Java8Parser.CastExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#castExpression}. + * @param ctx the parse tree + */ + void exitCastExpression(Java8Parser.CastExpressionContext ctx); +} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/Java8Parser.java b/src/de/dhbwstuttgart/parser/Java8Parser.java new file mode 100644 index 00000000..00d81f15 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/Java8Parser.java @@ -0,0 +1,18582 @@ +// Generated from Java8.g4 by ANTLR 4.5.3 +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class Java8Parser extends Parser { + static { RuntimeMetaData.checkVersion("4.5.3", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, + CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, + ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, + IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, + NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, + SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, + THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, + WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, + CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, + LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, + ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, + LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, + MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, + ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, + OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, + URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, + LINE_COMMENT=107; + public static final int + RULE_literal = 0, RULE_type = 1, RULE_primitiveType = 2, RULE_numericType = 3, + RULE_integralType = 4, RULE_floatingPointType = 5, RULE_referenceType = 6, + RULE_classOrInterfaceType = 7, RULE_classType = 8, RULE_classType_lf_classOrInterfaceType = 9, + RULE_classType_lfno_classOrInterfaceType = 10, RULE_interfaceType = 11, + RULE_interfaceType_lf_classOrInterfaceType = 12, RULE_interfaceType_lfno_classOrInterfaceType = 13, + RULE_typeVariable = 14, RULE_arrayType = 15, RULE_dims = 16, RULE_typeParameter = 17, + RULE_typeParameterModifier = 18, RULE_typeBound = 19, RULE_additionalBound = 20, + RULE_typeArguments = 21, RULE_typeArgumentList = 22, RULE_typeArgument = 23, + RULE_wildcard = 24, RULE_wildcardBounds = 25, RULE_packageName = 26, RULE_typeName = 27, + RULE_packageOrTypeName = 28, RULE_expressionName = 29, RULE_methodName = 30, + RULE_ambiguousName = 31, RULE_compilationUnit = 32, RULE_packageDeclaration = 33, + RULE_packageModifier = 34, RULE_importDeclaration = 35, RULE_singleTypeImportDeclaration = 36, + RULE_typeImportOnDemandDeclaration = 37, RULE_singleStaticImportDeclaration = 38, + RULE_staticImportOnDemandDeclaration = 39, RULE_typeDeclaration = 40, + RULE_classDeclaration = 41, RULE_normalClassDeclaration = 42, RULE_classModifier = 43, + RULE_typeParameters = 44, RULE_typeParameterList = 45, RULE_superclass = 46, + RULE_superinterfaces = 47, RULE_interfaceTypeList = 48, RULE_classBody = 49, + RULE_classBodyDeclaration = 50, RULE_classMemberDeclaration = 51, RULE_fieldDeclaration = 52, + RULE_fieldModifier = 53, RULE_variableDeclaratorList = 54, RULE_variableDeclarator = 55, + RULE_variableDeclaratorId = 56, RULE_variableInitializer = 57, RULE_unannType = 58, + RULE_unannPrimitiveType = 59, RULE_unannReferenceType = 60, RULE_unannClassOrInterfaceType = 61, + RULE_unannClassType = 62, RULE_unannClassType_lf_unannClassOrInterfaceType = 63, + RULE_unannClassType_lfno_unannClassOrInterfaceType = 64, RULE_unannInterfaceType = 65, + RULE_unannInterfaceType_lf_unannClassOrInterfaceType = 66, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType = 67, + RULE_unannTypeVariable = 68, RULE_unannArrayType = 69, RULE_methodDeclaration = 70, + RULE_methodModifier = 71, RULE_methodHeader = 72, RULE_result = 73, RULE_methodDeclarator = 74, + RULE_formalParameterList = 75, RULE_formalParameters = 76, RULE_formalParameter = 77, + RULE_variableModifier = 78, RULE_lastFormalParameter = 79, RULE_receiverParameter = 80, + RULE_throws_ = 81, RULE_exceptionTypeList = 82, RULE_exceptionType = 83, + RULE_methodBody = 84, RULE_instanceInitializer = 85, RULE_staticInitializer = 86, + RULE_constructorDeclaration = 87, RULE_constructorModifier = 88, RULE_constructorDeclarator = 89, + RULE_simpleTypeName = 90, RULE_constructorBody = 91, RULE_explicitConstructorInvocation = 92, + RULE_enumDeclaration = 93, RULE_enumBody = 94, RULE_enumConstantList = 95, + RULE_enumConstant = 96, RULE_enumConstantModifier = 97, RULE_enumBodyDeclarations = 98, + RULE_interfaceDeclaration = 99, RULE_normalInterfaceDeclaration = 100, + RULE_interfaceModifier = 101, RULE_extendsInterfaces = 102, RULE_interfaceBody = 103, + RULE_interfaceMemberDeclaration = 104, RULE_constantDeclaration = 105, + RULE_constantModifier = 106, RULE_interfaceMethodDeclaration = 107, RULE_interfaceMethodModifier = 108, + RULE_annotationTypeDeclaration = 109, RULE_annotationTypeBody = 110, RULE_annotationTypeMemberDeclaration = 111, + RULE_annotationTypeElementDeclaration = 112, RULE_annotationTypeElementModifier = 113, + RULE_defaultValue = 114, RULE_annotation = 115, RULE_normalAnnotation = 116, + RULE_elementValuePairList = 117, RULE_elementValuePair = 118, RULE_elementValue = 119, + RULE_elementValueArrayInitializer = 120, RULE_elementValueList = 121, + RULE_markerAnnotation = 122, RULE_singleElementAnnotation = 123, RULE_arrayInitializer = 124, + RULE_variableInitializerList = 125, RULE_block = 126, RULE_blockStatements = 127, + RULE_blockStatement = 128, RULE_localVariableDeclarationStatement = 129, + RULE_localVariableDeclaration = 130, RULE_statement = 131, RULE_statementNoShortIf = 132, + RULE_statementWithoutTrailingSubstatement = 133, RULE_emptyStatement = 134, + RULE_labeledStatement = 135, RULE_labeledStatementNoShortIf = 136, RULE_expressionStatement = 137, + RULE_statementExpression = 138, RULE_ifThenStatement = 139, RULE_ifThenElseStatement = 140, + RULE_ifThenElseStatementNoShortIf = 141, RULE_assertStatement = 142, RULE_switchStatement = 143, + RULE_switchBlock = 144, RULE_switchBlockStatementGroup = 145, RULE_switchLabels = 146, + RULE_switchLabel = 147, RULE_enumConstantName = 148, RULE_whileStatement = 149, + RULE_whileStatementNoShortIf = 150, RULE_doStatement = 151, RULE_forStatement = 152, + RULE_forStatementNoShortIf = 153, RULE_basicForStatement = 154, RULE_basicForStatementNoShortIf = 155, + RULE_forInit = 156, RULE_forUpdate = 157, RULE_statementExpressionList = 158, + RULE_enhancedForStatement = 159, RULE_enhancedForStatementNoShortIf = 160, + RULE_breakStatement = 161, RULE_continueStatement = 162, RULE_returnStatement = 163, + RULE_throwStatement = 164, RULE_synchronizedStatement = 165, RULE_tryStatement = 166, + RULE_catches = 167, RULE_catchClause = 168, RULE_catchFormalParameter = 169, + RULE_catchType = 170, RULE_finally_ = 171, RULE_tryWithResourcesStatement = 172, + RULE_resourceSpecification = 173, RULE_resourceList = 174, RULE_resource = 175, + RULE_primary = 176, RULE_primaryNoNewArray = 177, RULE_primaryNoNewArray_lf_arrayAccess = 178, + RULE_primaryNoNewArray_lfno_arrayAccess = 179, RULE_primaryNoNewArray_lf_primary = 180, + RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 181, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 182, + RULE_primaryNoNewArray_lfno_primary = 183, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 184, + RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 185, + RULE_classInstanceCreationExpression = 186, RULE_classInstanceCreationExpression_lf_primary = 187, + RULE_classInstanceCreationExpression_lfno_primary = 188, RULE_typeArgumentsOrDiamond = 189, + RULE_fieldAccess = 190, RULE_fieldAccess_lf_primary = 191, RULE_fieldAccess_lfno_primary = 192, + RULE_arrayAccess = 193, RULE_arrayAccess_lf_primary = 194, RULE_arrayAccess_lfno_primary = 195, + RULE_methodInvocation = 196, RULE_methodInvocation_lf_primary = 197, RULE_methodInvocation_lfno_primary = 198, + RULE_argumentList = 199, RULE_methodReference = 200, RULE_methodReference_lf_primary = 201, + RULE_methodReference_lfno_primary = 202, RULE_arrayCreationExpression = 203, + RULE_dimExprs = 204, RULE_dimExpr = 205, RULE_constantExpression = 206, + RULE_expression = 207, RULE_lambdaExpression = 208, RULE_lambdaParameters = 209, + RULE_inferredFormalParameterList = 210, RULE_lambdaBody = 211, RULE_assignmentExpression = 212, + RULE_assignment = 213, RULE_leftHandSide = 214, RULE_assignmentOperator = 215, + RULE_conditionalExpression = 216, RULE_conditionalOrExpression = 217, + RULE_conditionalAndExpression = 218, RULE_inclusiveOrExpression = 219, + RULE_exclusiveOrExpression = 220, RULE_andExpression = 221, RULE_equalityExpression = 222, + RULE_relationalExpression = 223, RULE_shiftExpression = 224, RULE_additiveExpression = 225, + RULE_multiplicativeExpression = 226, RULE_unaryExpression = 227, RULE_preIncrementExpression = 228, + RULE_preDecrementExpression = 229, RULE_unaryExpressionNotPlusMinus = 230, + RULE_postfixExpression = 231, RULE_postIncrementExpression = 232, RULE_postIncrementExpression_lf_postfixExpression = 233, + RULE_postDecrementExpression = 234, RULE_postDecrementExpression_lf_postfixExpression = 235, + RULE_castExpression = 236; + public static final String[] ruleNames = { + "literal", "type", "primitiveType", "numericType", "integralType", "floatingPointType", + "referenceType", "classOrInterfaceType", "classType", "classType_lf_classOrInterfaceType", + "classType_lfno_classOrInterfaceType", "interfaceType", "interfaceType_lf_classOrInterfaceType", + "interfaceType_lfno_classOrInterfaceType", "typeVariable", "arrayType", + "dims", "typeParameter", "typeParameterModifier", "typeBound", "additionalBound", + "typeArguments", "typeArgumentList", "typeArgument", "wildcard", "wildcardBounds", + "packageName", "typeName", "packageOrTypeName", "expressionName", "methodName", + "ambiguousName", "compilationUnit", "packageDeclaration", "packageModifier", + "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration", + "singleStaticImportDeclaration", "staticImportOnDemandDeclaration", "typeDeclaration", + "classDeclaration", "normalClassDeclaration", "classModifier", "typeParameters", + "typeParameterList", "superclass", "superinterfaces", "interfaceTypeList", + "classBody", "classBodyDeclaration", "classMemberDeclaration", "fieldDeclaration", + "fieldModifier", "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId", + "variableInitializer", "unannType", "unannPrimitiveType", "unannReferenceType", + "unannClassOrInterfaceType", "unannClassType", "unannClassType_lf_unannClassOrInterfaceType", + "unannClassType_lfno_unannClassOrInterfaceType", "unannInterfaceType", + "unannInterfaceType_lf_unannClassOrInterfaceType", "unannInterfaceType_lfno_unannClassOrInterfaceType", + "unannTypeVariable", "unannArrayType", "methodDeclaration", "methodModifier", + "methodHeader", "result", "methodDeclarator", "formalParameterList", "formalParameters", + "formalParameter", "variableModifier", "lastFormalParameter", "receiverParameter", + "throws_", "exceptionTypeList", "exceptionType", "methodBody", "instanceInitializer", + "staticInitializer", "constructorDeclaration", "constructorModifier", + "constructorDeclarator", "simpleTypeName", "constructorBody", "explicitConstructorInvocation", + "enumDeclaration", "enumBody", "enumConstantList", "enumConstant", "enumConstantModifier", + "enumBodyDeclarations", "interfaceDeclaration", "normalInterfaceDeclaration", + "interfaceModifier", "extendsInterfaces", "interfaceBody", "interfaceMemberDeclaration", + "constantDeclaration", "constantModifier", "interfaceMethodDeclaration", + "interfaceMethodModifier", "annotationTypeDeclaration", "annotationTypeBody", + "annotationTypeMemberDeclaration", "annotationTypeElementDeclaration", + "annotationTypeElementModifier", "defaultValue", "annotation", "normalAnnotation", + "elementValuePairList", "elementValuePair", "elementValue", "elementValueArrayInitializer", + "elementValueList", "markerAnnotation", "singleElementAnnotation", "arrayInitializer", + "variableInitializerList", "block", "blockStatements", "blockStatement", + "localVariableDeclarationStatement", "localVariableDeclaration", "statement", + "statementNoShortIf", "statementWithoutTrailingSubstatement", "emptyStatement", + "labeledStatement", "labeledStatementNoShortIf", "expressionStatement", + "statementExpression", "ifThenStatement", "ifThenElseStatement", "ifThenElseStatementNoShortIf", + "assertStatement", "switchStatement", "switchBlock", "switchBlockStatementGroup", + "switchLabels", "switchLabel", "enumConstantName", "whileStatement", "whileStatementNoShortIf", + "doStatement", "forStatement", "forStatementNoShortIf", "basicForStatement", + "basicForStatementNoShortIf", "forInit", "forUpdate", "statementExpressionList", + "enhancedForStatement", "enhancedForStatementNoShortIf", "breakStatement", + "continueStatement", "returnStatement", "throwStatement", "synchronizedStatement", + "tryStatement", "catches", "catchClause", "catchFormalParameter", "catchType", + "finally_", "tryWithResourcesStatement", "resourceSpecification", "resourceList", + "resource", "primary", "primaryNoNewArray", "primaryNoNewArray_lf_arrayAccess", + "primaryNoNewArray_lfno_arrayAccess", "primaryNoNewArray_lf_primary", + "primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary", "primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary", + "primaryNoNewArray_lfno_primary", "primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary", + "primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary", "classInstanceCreationExpression", + "classInstanceCreationExpression_lf_primary", "classInstanceCreationExpression_lfno_primary", + "typeArgumentsOrDiamond", "fieldAccess", "fieldAccess_lf_primary", "fieldAccess_lfno_primary", + "arrayAccess", "arrayAccess_lf_primary", "arrayAccess_lfno_primary", "methodInvocation", + "methodInvocation_lf_primary", "methodInvocation_lfno_primary", "argumentList", + "methodReference", "methodReference_lf_primary", "methodReference_lfno_primary", + "arrayCreationExpression", "dimExprs", "dimExpr", "constantExpression", + "expression", "lambdaExpression", "lambdaParameters", "inferredFormalParameterList", + "lambdaBody", "assignmentExpression", "assignment", "leftHandSide", "assignmentOperator", + "conditionalExpression", "conditionalOrExpression", "conditionalAndExpression", + "inclusiveOrExpression", "exclusiveOrExpression", "andExpression", "equalityExpression", + "relationalExpression", "shiftExpression", "additiveExpression", "multiplicativeExpression", + "unaryExpression", "preIncrementExpression", "preDecrementExpression", + "unaryExpressionNotPlusMinus", "postfixExpression", "postIncrementExpression", + "postIncrementExpression_lf_postfixExpression", "postDecrementExpression", + "postDecrementExpression_lf_postfixExpression", "castExpression" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'", + "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", + "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'", + "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'", + "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'", + "'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'", + "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'", + "'transient'", "'try'", "'void'", "'volatile'", "'while'", null, null, + null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", + "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", + "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='", + "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", + "'>>>='", null, "'@'", "'...'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", + "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", + "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", + "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", + "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", + "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", + "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "FloatingPointLiteral", + "BooleanLiteral", "CharacterLiteral", "StringLiteral", "NullLiteral", + "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", + "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL", + "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", + "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", + "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", + "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", + "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "Java8.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public Java8Parser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + public static class LiteralContext extends ParserRuleContext { + public TerminalNode IntegerLiteral() { return getToken(Java8Parser.IntegerLiteral, 0); } + public TerminalNode FloatingPointLiteral() { return getToken(Java8Parser.FloatingPointLiteral, 0); } + public TerminalNode BooleanLiteral() { return getToken(Java8Parser.BooleanLiteral, 0); } + public TerminalNode CharacterLiteral() { return getToken(Java8Parser.CharacterLiteral, 0); } + public TerminalNode StringLiteral() { return getToken(Java8Parser.StringLiteral, 0); } + public TerminalNode NullLiteral() { return getToken(Java8Parser.NullLiteral, 0); } + public LiteralContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLiteral(this); + } + } + + public final LiteralContext literal() throws RecognitionException { + LiteralContext _localctx = new LiteralContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_literal); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(474); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public TypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitType(this); + } + } + + public final TypeContext type() throws RecognitionException { + TypeContext _localctx = new TypeContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_type); + try { + setState(478); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(476); + primitiveType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(477); + referenceType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimitiveTypeContext extends ParserRuleContext { + public NumericTypeContext numericType() { + return getRuleContext(NumericTypeContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public PrimitiveTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primitiveType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimitiveType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimitiveType(this); + } + } + + public final PrimitiveTypeContext primitiveType() throws RecognitionException { + PrimitiveTypeContext _localctx = new PrimitiveTypeContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_primitiveType); + int _la; + try { + setState(494); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(483); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(480); + annotation(); + } + } + setState(485); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(486); + numericType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(490); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(487); + annotation(); + } + } + setState(492); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(493); + match(BOOLEAN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NumericTypeContext extends ParserRuleContext { + public IntegralTypeContext integralType() { + return getRuleContext(IntegralTypeContext.class,0); + } + public FloatingPointTypeContext floatingPointType() { + return getRuleContext(FloatingPointTypeContext.class,0); + } + public NumericTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_numericType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNumericType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNumericType(this); + } + } + + public final NumericTypeContext numericType() throws RecognitionException { + NumericTypeContext _localctx = new NumericTypeContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_numericType); + try { + setState(498); + switch (_input.LA(1)) { + case BYTE: + case CHAR: + case INT: + case LONG: + case SHORT: + enterOuterAlt(_localctx, 1); + { + setState(496); + integralType(); + } + break; + case DOUBLE: + case FLOAT: + enterOuterAlt(_localctx, 2); + { + setState(497); + floatingPointType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IntegralTypeContext extends ParserRuleContext { + public IntegralTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_integralType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIntegralType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIntegralType(this); + } + } + + public final IntegralTypeContext integralType() throws RecognitionException { + IntegralTypeContext _localctx = new IntegralTypeContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_integralType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(500); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BYTE) | (1L << CHAR) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FloatingPointTypeContext extends ParserRuleContext { + public FloatingPointTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_floatingPointType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFloatingPointType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFloatingPointType(this); + } + } + + public final FloatingPointTypeContext floatingPointType() throws RecognitionException { + FloatingPointTypeContext _localctx = new FloatingPointTypeContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_floatingPointType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(502); + _la = _input.LA(1); + if ( !(_la==DOUBLE || _la==FLOAT) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReferenceTypeContext extends ParserRuleContext { + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public ReferenceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_referenceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReferenceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReferenceType(this); + } + } + + public final ReferenceTypeContext referenceType() throws RecognitionException { + ReferenceTypeContext _localctx = new ReferenceTypeContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_referenceType); + try { + setState(507); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(504); + classOrInterfaceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(505); + typeVariable(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(506); + arrayType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() { + return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() { + return getRuleContext(InterfaceType_lfno_classOrInterfaceTypeContext.class,0); + } + public List classType_lf_classOrInterfaceType() { + return getRuleContexts(ClassType_lf_classOrInterfaceTypeContext.class); + } + public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType(int i) { + return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,i); + } + public List interfaceType_lf_classOrInterfaceType() { + return getRuleContexts(InterfaceType_lf_classOrInterfaceTypeContext.class); + } + public InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType(int i) { + return getRuleContext(InterfaceType_lf_classOrInterfaceTypeContext.class,i); + } + public ClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassOrInterfaceType(this); + } + } + + public final ClassOrInterfaceTypeContext classOrInterfaceType() throws RecognitionException { + ClassOrInterfaceTypeContext _localctx = new ClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_classOrInterfaceType); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(511); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { + case 1: + { + setState(509); + classType_lfno_classOrInterfaceType(); + } + break; + case 2: + { + setState(510); + interfaceType_lfno_classOrInterfaceType(); + } + break; + } + setState(517); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(515); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { + case 1: + { + setState(513); + classType_lf_classOrInterfaceType(); + } + break; + case 2: + { + setState(514); + interfaceType_lf_classOrInterfaceType(); + } + break; + } + } + } + setState(519); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public ClassTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType(this); + } + } + + public final ClassTypeContext classType() throws RecognitionException { + ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_classType); + int _la; + try { + setState(542); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(523); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(520); + annotation(); + } + } + setState(525); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(526); + match(Identifier); + setState(528); + _la = _input.LA(1); + if (_la==LT) { + { + setState(527); + typeArguments(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(530); + classOrInterfaceType(); + setState(531); + match(DOT); + setState(535); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(532); + annotation(); + } + } + setState(537); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(538); + match(Identifier); + setState(540); + _la = _input.LA(1); + if (_la==LT) { + { + setState(539); + typeArguments(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassType_lf_classOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ClassType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classType_lf_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lf_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lf_classOrInterfaceType(this); + } + } + + public final ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() throws RecognitionException { + ClassType_lf_classOrInterfaceTypeContext _localctx = new ClassType_lf_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_classType_lf_classOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(544); + match(DOT); + setState(548); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(545); + annotation(); + } + } + setState(550); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(551); + match(Identifier); + setState(553); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { + case 1: + { + setState(552); + typeArguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassType_lfno_classOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ClassType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classType_lfno_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lfno_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lfno_classOrInterfaceType(this); + } + } + + public final ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() throws RecognitionException { + ClassType_lfno_classOrInterfaceTypeContext _localctx = new ClassType_lfno_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_classType_lfno_classOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(558); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(555); + annotation(); + } + } + setState(560); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(561); + match(Identifier); + setState(563); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + { + setState(562); + typeArguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceTypeContext extends ParserRuleContext { + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public InterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType(this); + } + } + + public final InterfaceTypeContext interfaceType() throws RecognitionException { + InterfaceTypeContext _localctx = new InterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_interfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(565); + classType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceType_lf_classOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() { + return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType_lf_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lf_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lf_classOrInterfaceType(this); + } + } + + public final InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType() throws RecognitionException { + InterfaceType_lf_classOrInterfaceTypeContext _localctx = new InterfaceType_lf_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_interfaceType_lf_classOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(567); + classType_lf_classOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceType_lfno_classOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() { + return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType_lfno_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lfno_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lfno_classOrInterfaceType(this); + } + } + + public final InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() throws RecognitionException { + InterfaceType_lfno_classOrInterfaceTypeContext _localctx = new InterfaceType_lfno_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_interfaceType_lfno_classOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(569); + classType_lfno_classOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeVariableContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeVariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeVariable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeVariable(this); + } + } + + public final TypeVariableContext typeVariable() throws RecognitionException { + TypeVariableContext _localctx = new TypeVariableContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_typeVariable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(574); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(571); + annotation(); + } + } + setState(576); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(577); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayTypeContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayType(this); + } + } + + public final ArrayTypeContext arrayType() throws RecognitionException { + ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_arrayType); + try { + setState(588); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(579); + primitiveType(); + setState(580); + dims(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(582); + classOrInterfaceType(); + setState(583); + dims(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(585); + typeVariable(); + setState(586); + dims(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DimsContext extends ParserRuleContext { + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public DimsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dims; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDims(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDims(this); + } + } + + public final DimsContext dims() throws RecognitionException { + DimsContext _localctx = new DimsContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_dims); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(593); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(590); + annotation(); + } + } + setState(595); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(596); + match(LBRACK); + setState(597); + match(RBRACK); + setState(608); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,22,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(601); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(598); + annotation(); + } + } + setState(603); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(604); + match(LBRACK); + setState(605); + match(RBRACK); + } + } + } + setState(610); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,22,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List typeParameterModifier() { + return getRuleContexts(TypeParameterModifierContext.class); + } + public TypeParameterModifierContext typeParameterModifier(int i) { + return getRuleContext(TypeParameterModifierContext.class,i); + } + public TypeBoundContext typeBound() { + return getRuleContext(TypeBoundContext.class,0); + } + public TypeParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameter(this); + } + } + + public final TypeParameterContext typeParameter() throws RecognitionException { + TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_typeParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(614); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(611); + typeParameterModifier(); + } + } + setState(616); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(617); + match(Identifier); + setState(619); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(618); + typeBound(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TypeParameterModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterModifier(this); + } + } + + public final TypeParameterModifierContext typeParameterModifier() throws RecognitionException { + TypeParameterModifierContext _localctx = new TypeParameterModifierContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_typeParameterModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(621); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeBoundContext extends ParserRuleContext { + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public List additionalBound() { + return getRuleContexts(AdditionalBoundContext.class); + } + public AdditionalBoundContext additionalBound(int i) { + return getRuleContext(AdditionalBoundContext.class,i); + } + public TypeBoundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeBound; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeBound(this); + } + } + + public final TypeBoundContext typeBound() throws RecognitionException { + TypeBoundContext _localctx = new TypeBoundContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_typeBound); + int _la; + try { + setState(633); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(623); + match(EXTENDS); + setState(624); + typeVariable(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(625); + match(EXTENDS); + setState(626); + classOrInterfaceType(); + setState(630); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(627); + additionalBound(); + } + } + setState(632); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AdditionalBoundContext extends ParserRuleContext { + public InterfaceTypeContext interfaceType() { + return getRuleContext(InterfaceTypeContext.class,0); + } + public AdditionalBoundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_additionalBound; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditionalBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditionalBound(this); + } + } + + public final AdditionalBoundContext additionalBound() throws RecognitionException { + AdditionalBoundContext _localctx = new AdditionalBoundContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_additionalBound); + try { + enterOuterAlt(_localctx, 1); + { + setState(635); + match(BITAND); + setState(636); + interfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeArgumentsContext extends ParserRuleContext { + public TypeArgumentListContext typeArgumentList() { + return getRuleContext(TypeArgumentListContext.class,0); + } + public TypeArgumentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArguments; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArguments(this); + } + } + + public final TypeArgumentsContext typeArguments() throws RecognitionException { + TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_typeArguments); + try { + enterOuterAlt(_localctx, 1); + { + setState(638); + match(LT); + setState(639); + typeArgumentList(); + setState(640); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeArgumentListContext extends ParserRuleContext { + public List typeArgument() { + return getRuleContexts(TypeArgumentContext.class); + } + public TypeArgumentContext typeArgument(int i) { + return getRuleContext(TypeArgumentContext.class,i); + } + public TypeArgumentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArgumentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgumentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentList(this); + } + } + + public final TypeArgumentListContext typeArgumentList() throws RecognitionException { + TypeArgumentListContext _localctx = new TypeArgumentListContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_typeArgumentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(642); + typeArgument(); + setState(647); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(643); + match(COMMA); + setState(644); + typeArgument(); + } + } + setState(649); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeArgumentContext extends ParserRuleContext { + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public WildcardContext wildcard() { + return getRuleContext(WildcardContext.class,0); + } + public TypeArgumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArgument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgument(this); + } + } + + public final TypeArgumentContext typeArgument() throws RecognitionException { + TypeArgumentContext _localctx = new TypeArgumentContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_typeArgument); + try { + setState(652); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(650); + referenceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(651); + wildcard(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WildcardContext extends ParserRuleContext { + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public WildcardBoundsContext wildcardBounds() { + return getRuleContext(WildcardBoundsContext.class,0); + } + public WildcardContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcard; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcard(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcard(this); + } + } + + public final WildcardContext wildcard() throws RecognitionException { + WildcardContext _localctx = new WildcardContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_wildcard); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(657); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(654); + annotation(); + } + } + setState(659); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(660); + match(QUESTION); + setState(662); + _la = _input.LA(1); + if (_la==EXTENDS || _la==SUPER) { + { + setState(661); + wildcardBounds(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WildcardBoundsContext extends ParserRuleContext { + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public WildcardBoundsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcardBounds; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcardBounds(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcardBounds(this); + } + } + + public final WildcardBoundsContext wildcardBounds() throws RecognitionException { + WildcardBoundsContext _localctx = new WildcardBoundsContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_wildcardBounds); + try { + setState(668); + switch (_input.LA(1)) { + case EXTENDS: + enterOuterAlt(_localctx, 1); + { + setState(664); + match(EXTENDS); + setState(665); + referenceType(); + } + break; + case SUPER: + enterOuterAlt(_localctx, 2); + { + setState(666); + match(SUPER); + setState(667); + referenceType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PackageNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageNameContext packageName() { + return getRuleContext(PackageNameContext.class,0); + } + public PackageNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageName(this); + } + } + + public final PackageNameContext packageName() throws RecognitionException { + return packageName(0); + } + + private PackageNameContext packageName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PackageNameContext _localctx = new PackageNameContext(_ctx, _parentState); + PackageNameContext _prevctx = _localctx; + int _startState = 52; + enterRecursionRule(_localctx, 52, RULE_packageName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(671); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(678); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PackageNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_packageName); + setState(673); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(674); + match(DOT); + setState(675); + match(Identifier); + } + } + } + setState(680); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class TypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public TypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeName(this); + } + } + + public final TypeNameContext typeName() throws RecognitionException { + TypeNameContext _localctx = new TypeNameContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_typeName); + try { + setState(686); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(681); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(682); + packageOrTypeName(0); + setState(683); + match(DOT); + setState(684); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PackageOrTypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public PackageOrTypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageOrTypeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageOrTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageOrTypeName(this); + } + } + + public final PackageOrTypeNameContext packageOrTypeName() throws RecognitionException { + return packageOrTypeName(0); + } + + private PackageOrTypeNameContext packageOrTypeName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PackageOrTypeNameContext _localctx = new PackageOrTypeNameContext(_ctx, _parentState); + PackageOrTypeNameContext _prevctx = _localctx; + int _startState = 56; + enterRecursionRule(_localctx, 56, RULE_packageOrTypeName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(689); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(696); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PackageOrTypeNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_packageOrTypeName); + setState(691); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(692); + match(DOT); + setState(693); + match(Identifier); + } + } + } + setState(698); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ExpressionNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AmbiguousNameContext ambiguousName() { + return getRuleContext(AmbiguousNameContext.class,0); + } + public ExpressionNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionName(this); + } + } + + public final ExpressionNameContext expressionName() throws RecognitionException { + ExpressionNameContext _localctx = new ExpressionNameContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_expressionName); + try { + setState(704); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(699); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(700); + ambiguousName(0); + setState(701); + match(DOT); + setState(702); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public MethodNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodName(this); + } + } + + public final MethodNameContext methodName() throws RecognitionException { + MethodNameContext _localctx = new MethodNameContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_methodName); + try { + enterOuterAlt(_localctx, 1); + { + setState(706); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AmbiguousNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AmbiguousNameContext ambiguousName() { + return getRuleContext(AmbiguousNameContext.class,0); + } + public AmbiguousNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ambiguousName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAmbiguousName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAmbiguousName(this); + } + } + + public final AmbiguousNameContext ambiguousName() throws RecognitionException { + return ambiguousName(0); + } + + private AmbiguousNameContext ambiguousName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AmbiguousNameContext _localctx = new AmbiguousNameContext(_ctx, _parentState); + AmbiguousNameContext _prevctx = _localctx; + int _startState = 62; + enterRecursionRule(_localctx, 62, RULE_ambiguousName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(709); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(716); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new AmbiguousNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_ambiguousName); + setState(711); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(712); + match(DOT); + setState(713); + match(Identifier); + } + } + } + setState(718); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class CompilationUnitContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(Java8Parser.EOF, 0); } + public PackageDeclarationContext packageDeclaration() { + return getRuleContext(PackageDeclarationContext.class,0); + } + public List importDeclaration() { + return getRuleContexts(ImportDeclarationContext.class); + } + public ImportDeclarationContext importDeclaration(int i) { + return getRuleContext(ImportDeclarationContext.class,i); + } + public List typeDeclaration() { + return getRuleContexts(TypeDeclarationContext.class); + } + public TypeDeclarationContext typeDeclaration(int i) { + return getRuleContext(TypeDeclarationContext.class,i); + } + public CompilationUnitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilationUnit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCompilationUnit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCompilationUnit(this); + } + } + + public final CompilationUnitContext compilationUnit() throws RecognitionException { + CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_compilationUnit); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(720); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { + case 1: + { + setState(719); + packageDeclaration(); + } + break; + } + setState(725); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IMPORT) { + { + { + setState(722); + importDeclaration(); + } + } + setState(727); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(731); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << CLASS) | (1L << ENUM) | (1L << FINAL) | (1L << INTERFACE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP) | (1L << SEMI))) != 0) || _la==AT) { + { + { + setState(728); + typeDeclaration(); + } + } + setState(733); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(734); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PackageDeclarationContext extends ParserRuleContext { + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public List packageModifier() { + return getRuleContexts(PackageModifierContext.class); + } + public PackageModifierContext packageModifier(int i) { + return getRuleContext(PackageModifierContext.class,i); + } + public PackageDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageDeclaration(this); + } + } + + public final PackageDeclarationContext packageDeclaration() throws RecognitionException { + PackageDeclarationContext _localctx = new PackageDeclarationContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_packageDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(739); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(736); + packageModifier(); + } + } + setState(741); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(742); + match(PACKAGE); + setState(743); + match(Identifier); + setState(748); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(744); + match(DOT); + setState(745); + match(Identifier); + } + } + setState(750); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(751); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PackageModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public PackageModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageModifier(this); + } + } + + public final PackageModifierContext packageModifier() throws RecognitionException { + PackageModifierContext _localctx = new PackageModifierContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_packageModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(753); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ImportDeclarationContext extends ParserRuleContext { + public SingleTypeImportDeclarationContext singleTypeImportDeclaration() { + return getRuleContext(SingleTypeImportDeclarationContext.class,0); + } + public TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() { + return getRuleContext(TypeImportOnDemandDeclarationContext.class,0); + } + public SingleStaticImportDeclarationContext singleStaticImportDeclaration() { + return getRuleContext(SingleStaticImportDeclarationContext.class,0); + } + public StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() { + return getRuleContext(StaticImportOnDemandDeclarationContext.class,0); + } + public ImportDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitImportDeclaration(this); + } + } + + public final ImportDeclarationContext importDeclaration() throws RecognitionException { + ImportDeclarationContext _localctx = new ImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_importDeclaration); + try { + setState(759); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(755); + singleTypeImportDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(756); + typeImportOnDemandDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(757); + singleStaticImportDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(758); + staticImportOnDemandDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleTypeImportDeclarationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public SingleTypeImportDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleTypeImportDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleTypeImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleTypeImportDeclaration(this); + } + } + + public final SingleTypeImportDeclarationContext singleTypeImportDeclaration() throws RecognitionException { + SingleTypeImportDeclarationContext _localctx = new SingleTypeImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_singleTypeImportDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(761); + match(IMPORT); + setState(762); + typeName(); + setState(763); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeImportOnDemandDeclarationContext extends ParserRuleContext { + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public TypeImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeImportOnDemandDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeImportOnDemandDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeImportOnDemandDeclaration(this); + } + } + + public final TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() throws RecognitionException { + TypeImportOnDemandDeclarationContext _localctx = new TypeImportOnDemandDeclarationContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_typeImportOnDemandDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(765); + match(IMPORT); + setState(766); + packageOrTypeName(0); + setState(767); + match(DOT); + setState(768); + match(MUL); + setState(769); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleStaticImportDeclarationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public SingleStaticImportDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleStaticImportDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleStaticImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleStaticImportDeclaration(this); + } + } + + public final SingleStaticImportDeclarationContext singleStaticImportDeclaration() throws RecognitionException { + SingleStaticImportDeclarationContext _localctx = new SingleStaticImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_singleStaticImportDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(771); + match(IMPORT); + setState(772); + match(STATIC); + setState(773); + typeName(); + setState(774); + match(DOT); + setState(775); + match(Identifier); + setState(776); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StaticImportOnDemandDeclarationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public StaticImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_staticImportOnDemandDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticImportOnDemandDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticImportOnDemandDeclaration(this); + } + } + + public final StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() throws RecognitionException { + StaticImportOnDemandDeclarationContext _localctx = new StaticImportOnDemandDeclarationContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_staticImportOnDemandDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(778); + match(IMPORT); + setState(779); + match(STATIC); + setState(780); + typeName(); + setState(781); + match(DOT); + setState(782); + match(MUL); + setState(783); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeDeclarationContext extends ParserRuleContext { + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public TypeDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeDeclaration(this); + } + } + + public final TypeDeclarationContext typeDeclaration() throws RecognitionException { + TypeDeclarationContext _localctx = new TypeDeclarationContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_typeDeclaration); + try { + setState(788); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(785); + classDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(786); + interfaceDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(787); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassDeclarationContext extends ParserRuleContext { + public NormalClassDeclarationContext normalClassDeclaration() { + return getRuleContext(NormalClassDeclarationContext.class,0); + } + public EnumDeclarationContext enumDeclaration() { + return getRuleContext(EnumDeclarationContext.class,0); + } + public ClassDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassDeclaration(this); + } + } + + public final ClassDeclarationContext classDeclaration() throws RecognitionException { + ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_classDeclaration); + try { + setState(792); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(790); + normalClassDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(791); + enumDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NormalClassDeclarationContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public List classModifier() { + return getRuleContexts(ClassModifierContext.class); + } + public ClassModifierContext classModifier(int i) { + return getRuleContext(ClassModifierContext.class,i); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public SuperclassContext superclass() { + return getRuleContext(SuperclassContext.class,0); + } + public SuperinterfacesContext superinterfaces() { + return getRuleContext(SuperinterfacesContext.class,0); + } + public NormalClassDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalClassDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalClassDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalClassDeclaration(this); + } + } + + public final NormalClassDeclarationContext normalClassDeclaration() throws RecognitionException { + NormalClassDeclarationContext _localctx = new NormalClassDeclarationContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_normalClassDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(797); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { + { + { + setState(794); + classModifier(); + } + } + setState(799); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(800); + match(CLASS); + setState(801); + match(Identifier); + setState(803); + _la = _input.LA(1); + if (_la==LT) { + { + setState(802); + typeParameters(); + } + } + + setState(806); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(805); + superclass(); + } + } + + setState(809); + _la = _input.LA(1); + if (_la==IMPLEMENTS) { + { + setState(808); + superinterfaces(); + } + } + + setState(811); + classBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public ClassModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassModifier(this); + } + } + + public final ClassModifierContext classModifier() throws RecognitionException { + ClassModifierContext _localctx = new ClassModifierContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_classModifier); + try { + setState(821); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(813); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(814); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(815); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(816); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(817); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(818); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 7); + { + setState(819); + match(FINAL); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 8); + { + setState(820); + match(STRICTFP); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParametersContext extends ParserRuleContext { + public TypeParameterListContext typeParameterList() { + return getRuleContext(TypeParameterListContext.class,0); + } + public TypeParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameters(this); + } + } + + public final TypeParametersContext typeParameters() throws RecognitionException { + TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_typeParameters); + try { + enterOuterAlt(_localctx, 1); + { + setState(823); + match(LT); + setState(824); + typeParameterList(); + setState(825); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterListContext extends ParserRuleContext { + public List typeParameter() { + return getRuleContexts(TypeParameterContext.class); + } + public TypeParameterContext typeParameter(int i) { + return getRuleContext(TypeParameterContext.class,i); + } + public TypeParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterList(this); + } + } + + public final TypeParameterListContext typeParameterList() throws RecognitionException { + TypeParameterListContext _localctx = new TypeParameterListContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_typeParameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(827); + typeParameter(); + setState(832); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(828); + match(COMMA); + setState(829); + typeParameter(); + } + } + setState(834); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SuperclassContext extends ParserRuleContext { + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public SuperclassContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_superclass; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperclass(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperclass(this); + } + } + + public final SuperclassContext superclass() throws RecognitionException { + SuperclassContext _localctx = new SuperclassContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_superclass); + try { + enterOuterAlt(_localctx, 1); + { + setState(835); + match(EXTENDS); + setState(836); + classType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SuperinterfacesContext extends ParserRuleContext { + public InterfaceTypeListContext interfaceTypeList() { + return getRuleContext(InterfaceTypeListContext.class,0); + } + public SuperinterfacesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_superinterfaces; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperinterfaces(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperinterfaces(this); + } + } + + public final SuperinterfacesContext superinterfaces() throws RecognitionException { + SuperinterfacesContext _localctx = new SuperinterfacesContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_superinterfaces); + try { + enterOuterAlt(_localctx, 1); + { + setState(838); + match(IMPLEMENTS); + setState(839); + interfaceTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceTypeListContext extends ParserRuleContext { + public List interfaceType() { + return getRuleContexts(InterfaceTypeContext.class); + } + public InterfaceTypeContext interfaceType(int i) { + return getRuleContext(InterfaceTypeContext.class,i); + } + public InterfaceTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceTypeList(this); + } + } + + public final InterfaceTypeListContext interfaceTypeList() throws RecognitionException { + InterfaceTypeListContext _localctx = new InterfaceTypeListContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_interfaceTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(841); + interfaceType(); + setState(846); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(842); + match(COMMA); + setState(843); + interfaceType(); + } + } + setState(848); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassBodyContext extends ParserRuleContext { + public List classBodyDeclaration() { + return getRuleContexts(ClassBodyDeclarationContext.class); + } + public ClassBodyDeclarationContext classBodyDeclaration(int i) { + return getRuleContext(ClassBodyDeclarationContext.class,i); + } + public ClassBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBody(this); + } + } + + public final ClassBodyContext classBody() throws RecognitionException { + ClassBodyContext _localctx = new ClassBodyContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_classBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(849); + match(LBRACE); + setState(853); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + { + { + setState(850); + classBodyDeclaration(); + } + } + setState(855); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(856); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassBodyDeclarationContext extends ParserRuleContext { + public ClassMemberDeclarationContext classMemberDeclaration() { + return getRuleContext(ClassMemberDeclarationContext.class,0); + } + public InstanceInitializerContext instanceInitializer() { + return getRuleContext(InstanceInitializerContext.class,0); + } + public StaticInitializerContext staticInitializer() { + return getRuleContext(StaticInitializerContext.class,0); + } + public ConstructorDeclarationContext constructorDeclaration() { + return getRuleContext(ConstructorDeclarationContext.class,0); + } + public ClassBodyDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classBodyDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassBodyDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBodyDeclaration(this); + } + } + + public final ClassBodyDeclarationContext classBodyDeclaration() throws RecognitionException { + ClassBodyDeclarationContext _localctx = new ClassBodyDeclarationContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_classBodyDeclaration); + try { + setState(862); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(858); + classMemberDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(859); + instanceInitializer(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(860); + staticInitializer(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(861); + constructorDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassMemberDeclarationContext extends ParserRuleContext { + public FieldDeclarationContext fieldDeclaration() { + return getRuleContext(FieldDeclarationContext.class,0); + } + public MethodDeclarationContext methodDeclaration() { + return getRuleContext(MethodDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public ClassMemberDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classMemberDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassMemberDeclaration(this); + } + } + + public final ClassMemberDeclarationContext classMemberDeclaration() throws RecognitionException { + ClassMemberDeclarationContext _localctx = new ClassMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_classMemberDeclaration); + try { + setState(869); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(864); + fieldDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(865); + methodDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(866); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(867); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(868); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldDeclarationContext extends ParserRuleContext { + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.class,0); + } + public List fieldModifier() { + return getRuleContexts(FieldModifierContext.class); + } + public FieldModifierContext fieldModifier(int i) { + return getRuleContext(FieldModifierContext.class,i); + } + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public FieldDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldDeclaration(this); + } + } + + public final FieldDeclarationContext fieldDeclaration() throws RecognitionException { + FieldDeclarationContext _localctx = new FieldDeclarationContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_fieldDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(874); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << TRANSIENT) | (1L << VOLATILE))) != 0) || _la==AT) { + { + { + setState(871); + fieldModifier(); + } + } + setState(876); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(878); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) { + case 1: + { + setState(877); + unannType(); + } + break; + } + setState(880); + variableDeclaratorList(); + setState(881); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public FieldModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldModifier(this); + } + } + + public final FieldModifierContext fieldModifier() throws RecognitionException { + FieldModifierContext _localctx = new FieldModifierContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_fieldModifier); + try { + setState(891); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(883); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(884); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(885); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(886); + match(PRIVATE); + } + break; + case STATIC: + enterOuterAlt(_localctx, 5); + { + setState(887); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 6); + { + setState(888); + match(FINAL); + } + break; + case TRANSIENT: + enterOuterAlt(_localctx, 7); + { + setState(889); + match(TRANSIENT); + } + break; + case VOLATILE: + enterOuterAlt(_localctx, 8); + { + setState(890); + match(VOLATILE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableDeclaratorListContext extends ParserRuleContext { + public List variableDeclarator() { + return getRuleContexts(VariableDeclaratorContext.class); + } + public VariableDeclaratorContext variableDeclarator(int i) { + return getRuleContext(VariableDeclaratorContext.class,i); + } + public VariableDeclaratorListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclaratorList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorList(this); + } + } + + public final VariableDeclaratorListContext variableDeclaratorList() throws RecognitionException { + VariableDeclaratorListContext _localctx = new VariableDeclaratorListContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_variableDeclaratorList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(893); + variableDeclarator(); + setState(898); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(894); + match(COMMA); + setState(895); + variableDeclarator(); + } + } + setState(900); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableDeclaratorContext extends ParserRuleContext { + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public VariableInitializerContext variableInitializer() { + return getRuleContext(VariableInitializerContext.class,0); + } + public VariableDeclaratorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclarator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclarator(this); + } + } + + public final VariableDeclaratorContext variableDeclarator() throws RecognitionException { + VariableDeclaratorContext _localctx = new VariableDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_variableDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(901); + variableDeclaratorId(); + setState(904); + _la = _input.LA(1); + if (_la==ASSIGN) { + { + setState(902); + match(ASSIGN); + setState(903); + variableInitializer(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableDeclaratorIdContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public VariableDeclaratorIdContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclaratorId; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorId(this); + } + } + + public final VariableDeclaratorIdContext variableDeclaratorId() throws RecognitionException { + VariableDeclaratorIdContext _localctx = new VariableDeclaratorIdContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_variableDeclaratorId); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(906); + match(Identifier); + setState(908); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(907); + dims(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableInitializerContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArrayInitializerContext arrayInitializer() { + return getRuleContext(ArrayInitializerContext.class,0); + } + public VariableInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializer(this); + } + } + + public final VariableInitializerContext variableInitializer() throws RecognitionException { + VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_variableInitializer); + try { + setState(912); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case INC: + case DEC: + case ADD: + case SUB: + case Identifier: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(910); + expression(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(911); + arrayInitializer(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannTypeContext extends ParserRuleContext { + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public UnannReferenceTypeContext unannReferenceType() { + return getRuleContext(UnannReferenceTypeContext.class,0); + } + public UnannTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannType(this); + } + } + + public final UnannTypeContext unannType() throws RecognitionException { + UnannTypeContext _localctx = new UnannTypeContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_unannType); + try { + setState(916); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(914); + unannPrimitiveType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(915); + unannReferenceType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannPrimitiveTypeContext extends ParserRuleContext { + public NumericTypeContext numericType() { + return getRuleContext(NumericTypeContext.class,0); + } + public UnannPrimitiveTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannPrimitiveType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannPrimitiveType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannPrimitiveType(this); + } + } + + public final UnannPrimitiveTypeContext unannPrimitiveType() throws RecognitionException { + UnannPrimitiveTypeContext _localctx = new UnannPrimitiveTypeContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_unannPrimitiveType); + try { + setState(920); + switch (_input.LA(1)) { + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + enterOuterAlt(_localctx, 1); + { + setState(918); + numericType(); + } + break; + case BOOLEAN: + enterOuterAlt(_localctx, 2); + { + setState(919); + match(BOOLEAN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannReferenceTypeContext extends ParserRuleContext { + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public UnannTypeVariableContext unannTypeVariable() { + return getRuleContext(UnannTypeVariableContext.class,0); + } + public UnannArrayTypeContext unannArrayType() { + return getRuleContext(UnannArrayTypeContext.class,0); + } + public UnannReferenceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannReferenceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannReferenceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannReferenceType(this); + } + } + + public final UnannReferenceTypeContext unannReferenceType() throws RecognitionException { + UnannReferenceTypeContext _localctx = new UnannReferenceTypeContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_unannReferenceType); + try { + setState(925); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(922); + unannClassOrInterfaceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(923); + unannTypeVariable(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(924); + unannArrayType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public List unannClassType_lf_unannClassOrInterfaceType() { + return getRuleContexts(UnannClassType_lf_unannClassOrInterfaceTypeContext.class); + } + public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType(int i) { + return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,i); + } + public List unannInterfaceType_lf_unannClassOrInterfaceType() { + return getRuleContexts(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class); + } + public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType(int i) { + return getRuleContext(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class,i); + } + public UnannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassOrInterfaceType(this); + } + } + + public final UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() throws RecognitionException { + UnannClassOrInterfaceTypeContext _localctx = new UnannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_unannClassOrInterfaceType); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(929); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { + case 1: + { + setState(927); + unannClassType_lfno_unannClassOrInterfaceType(); + } + break; + case 2: + { + setState(928); + unannInterfaceType_lfno_unannClassOrInterfaceType(); + } + break; + } + setState(935); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,67,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(933); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) { + case 1: + { + setState(931); + unannClassType_lf_unannClassOrInterfaceType(); + } + break; + case 2: + { + setState(932); + unannInterfaceType_lf_unannClassOrInterfaceType(); + } + break; + } + } + } + setState(937); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,67,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannClassTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public UnannClassTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType(this); + } + } + + public final UnannClassTypeContext unannClassType() throws RecognitionException { + UnannClassTypeContext _localctx = new UnannClassTypeContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_unannClassType); + int _la; + try { + setState(954); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(938); + match(Identifier); + setState(940); + _la = _input.LA(1); + if (_la==LT) { + { + setState(939); + typeArguments(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(942); + unannClassOrInterfaceType(); + setState(943); + match(DOT); + setState(947); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(944); + annotation(); + } + } + setState(949); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(950); + match(Identifier); + setState(952); + _la = _input.LA(1); + if (_la==LT) { + { + setState(951); + typeArguments(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannClassType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public UnannClassType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType_lf_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lf_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lf_unannClassOrInterfaceType(this); + } + } + + public final UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() throws RecognitionException { + UnannClassType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lf_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_unannClassType_lf_unannClassOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(956); + match(DOT); + setState(960); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(957); + annotation(); + } + } + setState(962); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(963); + match(Identifier); + setState(965); + _la = _input.LA(1); + if (_la==LT) { + { + setState(964); + typeArguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannClassType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public UnannClassType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType_lfno_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lfno_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lfno_unannClassOrInterfaceType(this); + } + } + + public final UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() throws RecognitionException { + UnannClassType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_unannClassType_lfno_unannClassOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(967); + match(Identifier); + setState(969); + _la = _input.LA(1); + if (_la==LT) { + { + setState(968); + typeArguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannInterfaceTypeContext extends ParserRuleContext { + public UnannClassTypeContext unannClassType() { + return getRuleContext(UnannClassTypeContext.class,0); + } + public UnannInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType(this); + } + } + + public final UnannInterfaceTypeContext unannInterfaceType() throws RecognitionException { + UnannInterfaceTypeContext _localctx = new UnannInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_unannInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(971); + unannClassType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannInterfaceType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType_lf_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lf_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lf_unannClassOrInterfaceType(this); + } + } + + public final UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType() throws RecognitionException { + UnannInterfaceType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_unannInterfaceType_lf_unannClassOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(973); + unannClassType_lf_unannClassOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType_lfno_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lfno_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lfno_unannClassOrInterfaceType(this); + } + } + + public final UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() throws RecognitionException { + UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(975); + unannClassType_lfno_unannClassOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannTypeVariableContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public UnannTypeVariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannTypeVariable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannTypeVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannTypeVariable(this); + } + } + + public final UnannTypeVariableContext unannTypeVariable() throws RecognitionException { + UnannTypeVariableContext _localctx = new UnannTypeVariableContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_unannTypeVariable); + try { + enterOuterAlt(_localctx, 1); + { + setState(977); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnannArrayTypeContext extends ParserRuleContext { + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public UnannTypeVariableContext unannTypeVariable() { + return getRuleContext(UnannTypeVariableContext.class,0); + } + public UnannArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannArrayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannArrayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannArrayType(this); + } + } + + public final UnannArrayTypeContext unannArrayType() throws RecognitionException { + UnannArrayTypeContext _localctx = new UnannArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_unannArrayType); + try { + setState(988); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(979); + unannPrimitiveType(); + setState(980); + dims(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(982); + unannClassOrInterfaceType(); + setState(983); + dims(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(985); + unannTypeVariable(); + setState(986); + dims(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodDeclarationContext extends ParserRuleContext { + public MethodHeaderContext methodHeader() { + return getRuleContext(MethodHeaderContext.class,0); + } + public MethodBodyContext methodBody() { + return getRuleContext(MethodBodyContext.class,0); + } + public List methodModifier() { + return getRuleContexts(MethodModifierContext.class); + } + public MethodModifierContext methodModifier(int i) { + return getRuleContext(MethodModifierContext.class,i); + } + public MethodDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclaration(this); + } + } + + public final MethodDeclarationContext methodDeclaration() throws RecognitionException { + MethodDeclarationContext _localctx = new MethodDeclarationContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_methodDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(993); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED))) != 0) || _la==AT) { + { + { + setState(990); + methodModifier(); + } + } + setState(995); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(996); + methodHeader(); + setState(997); + methodBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public MethodModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodModifier(this); + } + } + + public final MethodModifierContext methodModifier() throws RecognitionException { + MethodModifierContext _localctx = new MethodModifierContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_methodModifier); + try { + setState(1009); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(999); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1000); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(1001); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1002); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(1003); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(1004); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 7); + { + setState(1005); + match(FINAL); + } + break; + case SYNCHRONIZED: + enterOuterAlt(_localctx, 8); + { + setState(1006); + match(SYNCHRONIZED); + } + break; + case NATIVE: + enterOuterAlt(_localctx, 9); + { + setState(1007); + match(NATIVE); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 10); + { + setState(1008); + match(STRICTFP); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodHeaderContext extends ParserRuleContext { + public MethodDeclaratorContext methodDeclarator() { + return getRuleContext(MethodDeclaratorContext.class,0); + } + public ResultContext result() { + return getRuleContext(ResultContext.class,0); + } + public Throws_Context throws_() { + return getRuleContext(Throws_Context.class,0); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public MethodHeaderContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodHeader; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodHeader(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodHeader(this); + } + } + + public final MethodHeaderContext methodHeader() throws RecognitionException { + MethodHeaderContext _localctx = new MethodHeaderContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_methodHeader); + int _la; + try { + setState(1030); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case VOID: + case Identifier: + enterOuterAlt(_localctx, 1); + { + setState(1012); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) { + case 1: + { + setState(1011); + result(); + } + break; + } + setState(1014); + methodDeclarator(); + setState(1016); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1015); + throws_(); + } + } + + } + break; + case LT: + enterOuterAlt(_localctx, 2); + { + setState(1018); + typeParameters(); + setState(1022); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1019); + annotation(); + } + } + setState(1024); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1025); + result(); + setState(1026); + methodDeclarator(); + setState(1028); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1027); + throws_(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResultContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public ResultContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_result; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResult(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResult(this); + } + } + + public final ResultContext result() throws RecognitionException { + ResultContext _localctx = new ResultContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_result); + try { + setState(1034); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case Identifier: + enterOuterAlt(_localctx, 1); + { + setState(1032); + unannType(); + } + break; + case VOID: + enterOuterAlt(_localctx, 2); + { + setState(1033); + match(VOID); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodDeclaratorContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public MethodDeclaratorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodDeclarator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclarator(this); + } + } + + public final MethodDeclaratorContext methodDeclarator() throws RecognitionException { + MethodDeclaratorContext _localctx = new MethodDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_methodDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1036); + match(Identifier); + setState(1037); + match(LPAREN); + setState(1039); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { + { + setState(1038); + formalParameterList(); + } + } + + setState(1041); + match(RPAREN); + setState(1043); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(1042); + dims(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterListContext extends ParserRuleContext { + public FormalParametersContext formalParameters() { + return getRuleContext(FormalParametersContext.class,0); + } + public LastFormalParameterContext lastFormalParameter() { + return getRuleContext(LastFormalParameterContext.class,0); + } + public FormalParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameterList(this); + } + } + + public final FormalParameterListContext formalParameterList() throws RecognitionException { + FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_formalParameterList); + try { + setState(1050); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1045); + formalParameters(); + setState(1046); + match(COMMA); + setState(1047); + lastFormalParameter(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1049); + lastFormalParameter(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParametersContext extends ParserRuleContext { + public List formalParameter() { + return getRuleContexts(FormalParameterContext.class); + } + public FormalParameterContext formalParameter(int i) { + return getRuleContext(FormalParameterContext.class,i); + } + public ReceiverParameterContext receiverParameter() { + return getRuleContext(ReceiverParameterContext.class,0); + } + public FormalParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameters(this); + } + } + + public final FormalParametersContext formalParameters() throws RecognitionException { + FormalParametersContext _localctx = new FormalParametersContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_formalParameters); + try { + int _alt; + setState(1068); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1052); + formalParameter(); + setState(1057); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,87,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1053); + match(COMMA); + setState(1054); + formalParameter(); + } + } + } + setState(1059); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,87,_ctx); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1060); + receiverParameter(); + setState(1065); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,88,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1061); + match(COMMA); + setState(1062); + formalParameter(); + } + } + } + setState(1067); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,88,_ctx); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterContext extends ParserRuleContext { + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public FormalParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameter(this); + } + } + + public final FormalParameterContext formalParameter() throws RecognitionException { + FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_formalParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1073); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1070); + variableModifier(); + } + } + setState(1075); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1077); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) { + case 1: + { + setState(1076); + unannType(); + } + break; + } + setState(1079); + variableDeclaratorId(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public VariableModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableModifier(this); + } + } + + public final VariableModifierContext variableModifier() throws RecognitionException { + VariableModifierContext _localctx = new VariableModifierContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_variableModifier); + try { + setState(1083); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1081); + annotation(); + } + break; + case FINAL: + enterOuterAlt(_localctx, 2); + { + setState(1082); + match(FINAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LastFormalParameterContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public FormalParameterContext formalParameter() { + return getRuleContext(FormalParameterContext.class,0); + } + public LastFormalParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lastFormalParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLastFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLastFormalParameter(this); + } + } + + public final LastFormalParameterContext lastFormalParameter() throws RecognitionException { + LastFormalParameterContext _localctx = new LastFormalParameterContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_lastFormalParameter); + int _la; + try { + setState(1102); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1088); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1085); + variableModifier(); + } + } + setState(1090); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1091); + unannType(); + setState(1095); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1092); + annotation(); + } + } + setState(1097); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1098); + match(ELLIPSIS); + setState(1099); + variableDeclaratorId(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1101); + formalParameter(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReceiverParameterContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ReceiverParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_receiverParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReceiverParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReceiverParameter(this); + } + } + + public final ReceiverParameterContext receiverParameter() throws RecognitionException { + ReceiverParameterContext _localctx = new ReceiverParameterContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_receiverParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1107); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1104); + annotation(); + } + } + setState(1109); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1110); + unannType(); + setState(1113); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1111); + match(Identifier); + setState(1112); + match(DOT); + } + } + + setState(1115); + match(THIS); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Throws_Context extends ParserRuleContext { + public ExceptionTypeListContext exceptionTypeList() { + return getRuleContext(ExceptionTypeListContext.class,0); + } + public Throws_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_throws_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrows_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrows_(this); + } + } + + public final Throws_Context throws_() throws RecognitionException { + Throws_Context _localctx = new Throws_Context(_ctx, getState()); + enterRule(_localctx, 162, RULE_throws_); + try { + enterOuterAlt(_localctx, 1); + { + setState(1117); + match(THROWS); + setState(1118); + exceptionTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExceptionTypeListContext extends ParserRuleContext { + public List exceptionType() { + return getRuleContexts(ExceptionTypeContext.class); + } + public ExceptionTypeContext exceptionType(int i) { + return getRuleContext(ExceptionTypeContext.class,i); + } + public ExceptionTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exceptionTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionTypeList(this); + } + } + + public final ExceptionTypeListContext exceptionTypeList() throws RecognitionException { + ExceptionTypeListContext _localctx = new ExceptionTypeListContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_exceptionTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1120); + exceptionType(); + setState(1125); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1121); + match(COMMA); + setState(1122); + exceptionType(); + } + } + setState(1127); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExceptionTypeContext extends ParserRuleContext { + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ExceptionTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exceptionType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionType(this); + } + } + + public final ExceptionTypeContext exceptionType() throws RecognitionException { + ExceptionTypeContext _localctx = new ExceptionTypeContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_exceptionType); + try { + setState(1130); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1128); + classType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1129); + typeVariable(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodBodyContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public MethodBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodBody(this); + } + } + + public final MethodBodyContext methodBody() throws RecognitionException { + MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_methodBody); + try { + setState(1134); + switch (_input.LA(1)) { + case LBRACE: + enterOuterAlt(_localctx, 1); + { + setState(1132); + block(); + } + break; + case SEMI: + enterOuterAlt(_localctx, 2); + { + setState(1133); + match(SEMI); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InstanceInitializerContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public InstanceInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_instanceInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInstanceInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInstanceInitializer(this); + } + } + + public final InstanceInitializerContext instanceInitializer() throws RecognitionException { + InstanceInitializerContext _localctx = new InstanceInitializerContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_instanceInitializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1136); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StaticInitializerContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public StaticInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_staticInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticInitializer(this); + } + } + + public final StaticInitializerContext staticInitializer() throws RecognitionException { + StaticInitializerContext _localctx = new StaticInitializerContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_staticInitializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1138); + match(STATIC); + setState(1139); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstructorDeclarationContext extends ParserRuleContext { + public ConstructorDeclaratorContext constructorDeclarator() { + return getRuleContext(ConstructorDeclaratorContext.class,0); + } + public ConstructorBodyContext constructorBody() { + return getRuleContext(ConstructorBodyContext.class,0); + } + public List constructorModifier() { + return getRuleContexts(ConstructorModifierContext.class); + } + public ConstructorModifierContext constructorModifier(int i) { + return getRuleContext(ConstructorModifierContext.class,i); + } + public Throws_Context throws_() { + return getRuleContext(Throws_Context.class,0); + } + public ConstructorDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclaration(this); + } + } + + public final ConstructorDeclarationContext constructorDeclaration() throws RecognitionException { + ConstructorDeclarationContext _localctx = new ConstructorDeclarationContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_constructorDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1144); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC))) != 0) || _la==AT) { + { + { + setState(1141); + constructorModifier(); + } + } + setState(1146); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1147); + constructorDeclarator(); + setState(1149); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1148); + throws_(); + } + } + + setState(1151); + constructorBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstructorModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public ConstructorModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorModifier(this); + } + } + + public final ConstructorModifierContext constructorModifier() throws RecognitionException { + ConstructorModifierContext _localctx = new ConstructorModifierContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_constructorModifier); + try { + setState(1157); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1153); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1154); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(1155); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1156); + match(PRIVATE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstructorDeclaratorContext extends ParserRuleContext { + public SimpleTypeNameContext simpleTypeName() { + return getRuleContext(SimpleTypeNameContext.class,0); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public ConstructorDeclaratorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorDeclarator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclarator(this); + } + } + + public final ConstructorDeclaratorContext constructorDeclarator() throws RecognitionException { + ConstructorDeclaratorContext _localctx = new ConstructorDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_constructorDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1160); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1159); + typeParameters(); + } + } + + setState(1162); + simpleTypeName(); + setState(1163); + match(LPAREN); + setState(1165); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { + { + setState(1164); + formalParameterList(); + } + } + + setState(1167); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SimpleTypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public SimpleTypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleTypeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSimpleTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSimpleTypeName(this); + } + } + + public final SimpleTypeNameContext simpleTypeName() throws RecognitionException { + SimpleTypeNameContext _localctx = new SimpleTypeNameContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_simpleTypeName); + try { + enterOuterAlt(_localctx, 1); + { + setState(1169); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstructorBodyContext extends ParserRuleContext { + public ExplicitConstructorInvocationContext explicitConstructorInvocation() { + return getRuleContext(ExplicitConstructorInvocationContext.class,0); + } + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + public ConstructorBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorBody(this); + } + } + + public final ConstructorBodyContext constructorBody() throws RecognitionException { + ConstructorBodyContext _localctx = new ConstructorBodyContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_constructorBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1171); + match(LBRACE); + setState(1173); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) { + case 1: + { + setState(1172); + explicitConstructorInvocation(); + } + break; + } + setState(1176); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1175); + blockStatements(); + } + } + + setState(1178); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExplicitConstructorInvocationContext extends ParserRuleContext { + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ExplicitConstructorInvocationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explicitConstructorInvocation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExplicitConstructorInvocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExplicitConstructorInvocation(this); + } + } + + public final ExplicitConstructorInvocationContext explicitConstructorInvocation() throws RecognitionException { + ExplicitConstructorInvocationContext _localctx = new ExplicitConstructorInvocationContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_explicitConstructorInvocation); + int _la; + try { + setState(1226); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1181); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1180); + typeArguments(); + } + } + + setState(1183); + match(THIS); + setState(1184); + match(LPAREN); + setState(1186); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1185); + argumentList(); + } + } + + setState(1188); + match(RPAREN); + setState(1189); + match(SEMI); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1191); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1190); + typeArguments(); + } + } + + setState(1193); + match(SUPER); + setState(1194); + match(LPAREN); + setState(1196); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1195); + argumentList(); + } + } + + setState(1198); + match(RPAREN); + setState(1199); + match(SEMI); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1200); + expressionName(); + setState(1201); + match(DOT); + setState(1203); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1202); + typeArguments(); + } + } + + setState(1205); + match(SUPER); + setState(1206); + match(LPAREN); + setState(1208); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1207); + argumentList(); + } + } + + setState(1210); + match(RPAREN); + setState(1211); + match(SEMI); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1213); + primary(); + setState(1214); + match(DOT); + setState(1216); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1215); + typeArguments(); + } + } + + setState(1218); + match(SUPER); + setState(1219); + match(LPAREN); + setState(1221); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1220); + argumentList(); + } + } + + setState(1223); + match(RPAREN); + setState(1224); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumDeclarationContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public EnumBodyContext enumBody() { + return getRuleContext(EnumBodyContext.class,0); + } + public List classModifier() { + return getRuleContexts(ClassModifierContext.class); + } + public ClassModifierContext classModifier(int i) { + return getRuleContext(ClassModifierContext.class,i); + } + public SuperinterfacesContext superinterfaces() { + return getRuleContext(SuperinterfacesContext.class,0); + } + public EnumDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumDeclaration(this); + } + } + + public final EnumDeclarationContext enumDeclaration() throws RecognitionException { + EnumDeclarationContext _localctx = new EnumDeclarationContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_enumDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1231); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { + { + { + setState(1228); + classModifier(); + } + } + setState(1233); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1234); + match(ENUM); + setState(1235); + match(Identifier); + setState(1237); + _la = _input.LA(1); + if (_la==IMPLEMENTS) { + { + setState(1236); + superinterfaces(); + } + } + + setState(1239); + enumBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumBodyContext extends ParserRuleContext { + public EnumConstantListContext enumConstantList() { + return getRuleContext(EnumConstantListContext.class,0); + } + public EnumBodyDeclarationsContext enumBodyDeclarations() { + return getRuleContext(EnumBodyDeclarationsContext.class,0); + } + public EnumBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBody(this); + } + } + + public final EnumBodyContext enumBody() throws RecognitionException { + EnumBodyContext _localctx = new EnumBodyContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_enumBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1241); + match(LBRACE); + setState(1243); + _la = _input.LA(1); + if (_la==Identifier || _la==AT) { + { + setState(1242); + enumConstantList(); + } + } + + setState(1246); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1245); + match(COMMA); + } + } + + setState(1249); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(1248); + enumBodyDeclarations(); + } + } + + setState(1251); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumConstantListContext extends ParserRuleContext { + public List enumConstant() { + return getRuleContexts(EnumConstantContext.class); + } + public EnumConstantContext enumConstant(int i) { + return getRuleContext(EnumConstantContext.class,i); + } + public EnumConstantListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantList(this); + } + } + + public final EnumConstantListContext enumConstantList() throws RecognitionException { + EnumConstantListContext _localctx = new EnumConstantListContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_enumConstantList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1253); + enumConstant(); + setState(1258); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,122,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1254); + match(COMMA); + setState(1255); + enumConstant(); + } + } + } + setState(1260); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,122,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumConstantContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List enumConstantModifier() { + return getRuleContexts(EnumConstantModifierContext.class); + } + public EnumConstantModifierContext enumConstantModifier(int i) { + return getRuleContext(EnumConstantModifierContext.class,i); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public EnumConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstant(this); + } + } + + public final EnumConstantContext enumConstant() throws RecognitionException { + EnumConstantContext _localctx = new EnumConstantContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_enumConstant); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1264); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1261); + enumConstantModifier(); + } + } + setState(1266); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1267); + match(Identifier); + setState(1273); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1268); + match(LPAREN); + setState(1270); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1269); + argumentList(); + } + } + + setState(1272); + match(RPAREN); + } + } + + setState(1276); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(1275); + classBody(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumConstantModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public EnumConstantModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantModifier(this); + } + } + + public final EnumConstantModifierContext enumConstantModifier() throws RecognitionException { + EnumConstantModifierContext _localctx = new EnumConstantModifierContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_enumConstantModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(1278); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumBodyDeclarationsContext extends ParserRuleContext { + public List classBodyDeclaration() { + return getRuleContexts(ClassBodyDeclarationContext.class); + } + public ClassBodyDeclarationContext classBodyDeclaration(int i) { + return getRuleContext(ClassBodyDeclarationContext.class,i); + } + public EnumBodyDeclarationsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumBodyDeclarations; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumBodyDeclarations(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBodyDeclarations(this); + } + } + + public final EnumBodyDeclarationsContext enumBodyDeclarations() throws RecognitionException { + EnumBodyDeclarationsContext _localctx = new EnumBodyDeclarationsContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_enumBodyDeclarations); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1280); + match(SEMI); + setState(1284); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + { + { + setState(1281); + classBodyDeclaration(); + } + } + setState(1286); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceDeclarationContext extends ParserRuleContext { + public NormalInterfaceDeclarationContext normalInterfaceDeclaration() { + return getRuleContext(NormalInterfaceDeclarationContext.class,0); + } + public AnnotationTypeDeclarationContext annotationTypeDeclaration() { + return getRuleContext(AnnotationTypeDeclarationContext.class,0); + } + public InterfaceDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceDeclaration(this); + } + } + + public final InterfaceDeclarationContext interfaceDeclaration() throws RecognitionException { + InterfaceDeclarationContext _localctx = new InterfaceDeclarationContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_interfaceDeclaration); + try { + setState(1289); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,128,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1287); + normalInterfaceDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1288); + annotationTypeDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NormalInterfaceDeclarationContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public InterfaceBodyContext interfaceBody() { + return getRuleContext(InterfaceBodyContext.class,0); + } + public List interfaceModifier() { + return getRuleContexts(InterfaceModifierContext.class); + } + public InterfaceModifierContext interfaceModifier(int i) { + return getRuleContext(InterfaceModifierContext.class,i); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public ExtendsInterfacesContext extendsInterfaces() { + return getRuleContext(ExtendsInterfacesContext.class,0); + } + public NormalInterfaceDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalInterfaceDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalInterfaceDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalInterfaceDeclaration(this); + } + } + + public final NormalInterfaceDeclarationContext normalInterfaceDeclaration() throws RecognitionException { + NormalInterfaceDeclarationContext _localctx = new NormalInterfaceDeclarationContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_normalInterfaceDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1294); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { + { + { + setState(1291); + interfaceModifier(); + } + } + setState(1296); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1297); + match(INTERFACE); + setState(1298); + match(Identifier); + setState(1300); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1299); + typeParameters(); + } + } + + setState(1303); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(1302); + extendsInterfaces(); + } + } + + setState(1305); + interfaceBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public InterfaceModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceModifier(this); + } + } + + public final InterfaceModifierContext interfaceModifier() throws RecognitionException { + InterfaceModifierContext _localctx = new InterfaceModifierContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_interfaceModifier); + try { + setState(1314); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1307); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1308); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(1309); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1310); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(1311); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(1312); + match(STATIC); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 7); + { + setState(1313); + match(STRICTFP); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExtendsInterfacesContext extends ParserRuleContext { + public InterfaceTypeListContext interfaceTypeList() { + return getRuleContext(InterfaceTypeListContext.class,0); + } + public ExtendsInterfacesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extendsInterfaces; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExtendsInterfaces(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExtendsInterfaces(this); + } + } + + public final ExtendsInterfacesContext extendsInterfaces() throws RecognitionException { + ExtendsInterfacesContext _localctx = new ExtendsInterfacesContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_extendsInterfaces); + try { + enterOuterAlt(_localctx, 1); + { + setState(1316); + match(EXTENDS); + setState(1317); + interfaceTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceBodyContext extends ParserRuleContext { + public List interfaceMemberDeclaration() { + return getRuleContexts(InterfaceMemberDeclarationContext.class); + } + public InterfaceMemberDeclarationContext interfaceMemberDeclaration(int i) { + return getRuleContext(InterfaceMemberDeclarationContext.class,i); + } + public InterfaceBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceBody(this); + } + } + + public final InterfaceBodyContext interfaceBody() throws RecognitionException { + InterfaceBodyContext _localctx = new InterfaceBodyContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_interfaceBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1319); + match(LBRACE); + setState(1323); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DEFAULT) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << VOID) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + { + { + setState(1320); + interfaceMemberDeclaration(); + } + } + setState(1325); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1326); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceMemberDeclarationContext extends ParserRuleContext { + public ConstantDeclarationContext constantDeclaration() { + return getRuleContext(ConstantDeclarationContext.class,0); + } + public InterfaceMethodDeclarationContext interfaceMethodDeclaration() { + return getRuleContext(InterfaceMethodDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public InterfaceMemberDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceMemberDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMemberDeclaration(this); + } + } + + public final InterfaceMemberDeclarationContext interfaceMemberDeclaration() throws RecognitionException { + InterfaceMemberDeclarationContext _localctx = new InterfaceMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_interfaceMemberDeclaration); + try { + setState(1333); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1328); + constantDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1329); + interfaceMethodDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1330); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1331); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1332); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.class,0); + } + public List constantModifier() { + return getRuleContexts(ConstantModifierContext.class); + } + public ConstantModifierContext constantModifier(int i) { + return getRuleContext(ConstantModifierContext.class,i); + } + public ConstantDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantDeclaration(this); + } + } + + public final ConstantDeclarationContext constantDeclaration() throws RecognitionException { + ConstantDeclarationContext _localctx = new ConstantDeclarationContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_constantDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1338); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FINAL) | (1L << PUBLIC) | (1L << STATIC))) != 0) || _la==AT) { + { + { + setState(1335); + constantModifier(); + } + } + setState(1340); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1341); + unannType(); + setState(1342); + variableDeclaratorList(); + setState(1343); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public ConstantModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantModifier(this); + } + } + + public final ConstantModifierContext constantModifier() throws RecognitionException { + ConstantModifierContext _localctx = new ConstantModifierContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_constantModifier); + try { + setState(1349); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1345); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1346); + match(PUBLIC); + } + break; + case STATIC: + enterOuterAlt(_localctx, 3); + { + setState(1347); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 4); + { + setState(1348); + match(FINAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceMethodDeclarationContext extends ParserRuleContext { + public MethodHeaderContext methodHeader() { + return getRuleContext(MethodHeaderContext.class,0); + } + public MethodBodyContext methodBody() { + return getRuleContext(MethodBodyContext.class,0); + } + public List interfaceMethodModifier() { + return getRuleContexts(InterfaceMethodModifierContext.class); + } + public InterfaceMethodModifierContext interfaceMethodModifier(int i) { + return getRuleContext(InterfaceMethodModifierContext.class,i); + } + public InterfaceMethodDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceMethodDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodDeclaration(this); + } + } + + public final InterfaceMethodDeclarationContext interfaceMethodDeclaration() throws RecognitionException { + InterfaceMethodDeclarationContext _localctx = new InterfaceMethodDeclarationContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_interfaceMethodDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1354); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << DEFAULT) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { + { + { + setState(1351); + interfaceMethodModifier(); + } + } + setState(1356); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1357); + methodHeader(); + setState(1358); + methodBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceMethodModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public InterfaceMethodModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceMethodModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodModifier(this); + } + } + + public final InterfaceMethodModifierContext interfaceMethodModifier() throws RecognitionException { + InterfaceMethodModifierContext _localctx = new InterfaceMethodModifierContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_interfaceMethodModifier); + try { + setState(1366); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1360); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1361); + match(PUBLIC); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 3); + { + setState(1362); + match(ABSTRACT); + } + break; + case DEFAULT: + enterOuterAlt(_localctx, 4); + { + setState(1363); + match(DEFAULT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 5); + { + setState(1364); + match(STATIC); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 6); + { + setState(1365); + match(STRICTFP); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationTypeDeclarationContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AnnotationTypeBodyContext annotationTypeBody() { + return getRuleContext(AnnotationTypeBodyContext.class,0); + } + public List interfaceModifier() { + return getRuleContexts(InterfaceModifierContext.class); + } + public InterfaceModifierContext interfaceModifier(int i) { + return getRuleContext(InterfaceModifierContext.class,i); + } + public AnnotationTypeDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeDeclaration(this); + } + } + + public final AnnotationTypeDeclarationContext annotationTypeDeclaration() throws RecognitionException { + AnnotationTypeDeclarationContext _localctx = new AnnotationTypeDeclarationContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_annotationTypeDeclaration); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1371); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,139,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1368); + interfaceModifier(); + } + } + } + setState(1373); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,139,_ctx); + } + setState(1374); + match(AT); + setState(1375); + match(INTERFACE); + setState(1376); + match(Identifier); + setState(1377); + annotationTypeBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationTypeBodyContext extends ParserRuleContext { + public List annotationTypeMemberDeclaration() { + return getRuleContexts(AnnotationTypeMemberDeclarationContext.class); + } + public AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration(int i) { + return getRuleContext(AnnotationTypeMemberDeclarationContext.class,i); + } + public AnnotationTypeBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeBody(this); + } + } + + public final AnnotationTypeBodyContext annotationTypeBody() throws RecognitionException { + AnnotationTypeBodyContext _localctx = new AnnotationTypeBodyContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_annotationTypeBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1379); + match(LBRACE); + setState(1383); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SEMI))) != 0) || _la==Identifier || _la==AT) { + { + { + setState(1380); + annotationTypeMemberDeclaration(); + } + } + setState(1385); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1386); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationTypeMemberDeclarationContext extends ParserRuleContext { + public AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() { + return getRuleContext(AnnotationTypeElementDeclarationContext.class,0); + } + public ConstantDeclarationContext constantDeclaration() { + return getRuleContext(ConstantDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public AnnotationTypeMemberDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeMemberDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeMemberDeclaration(this); + } + } + + public final AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration() throws RecognitionException { + AnnotationTypeMemberDeclarationContext _localctx = new AnnotationTypeMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_annotationTypeMemberDeclaration); + try { + setState(1393); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,141,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1388); + annotationTypeElementDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1389); + constantDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1390); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1391); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1392); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationTypeElementDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotationTypeElementModifier() { + return getRuleContexts(AnnotationTypeElementModifierContext.class); + } + public AnnotationTypeElementModifierContext annotationTypeElementModifier(int i) { + return getRuleContext(AnnotationTypeElementModifierContext.class,i); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public DefaultValueContext defaultValue() { + return getRuleContext(DefaultValueContext.class,0); + } + public AnnotationTypeElementDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeElementDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementDeclaration(this); + } + } + + public final AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() throws RecognitionException { + AnnotationTypeElementDeclarationContext _localctx = new AnnotationTypeElementDeclarationContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_annotationTypeElementDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1398); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==ABSTRACT || _la==PUBLIC || _la==AT) { + { + { + setState(1395); + annotationTypeElementModifier(); + } + } + setState(1400); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1401); + unannType(); + setState(1402); + match(Identifier); + setState(1403); + match(LPAREN); + setState(1404); + match(RPAREN); + setState(1406); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(1405); + dims(); + } + } + + setState(1409); + _la = _input.LA(1); + if (_la==DEFAULT) { + { + setState(1408); + defaultValue(); + } + } + + setState(1411); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationTypeElementModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public AnnotationTypeElementModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeElementModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementModifier(this); + } + } + + public final AnnotationTypeElementModifierContext annotationTypeElementModifier() throws RecognitionException { + AnnotationTypeElementModifierContext _localctx = new AnnotationTypeElementModifierContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_annotationTypeElementModifier); + try { + setState(1416); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1413); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1414); + match(PUBLIC); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 3); + { + setState(1415); + match(ABSTRACT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DefaultValueContext extends ParserRuleContext { + public ElementValueContext elementValue() { + return getRuleContext(ElementValueContext.class,0); + } + public DefaultValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_defaultValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDefaultValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDefaultValue(this); + } + } + + public final DefaultValueContext defaultValue() throws RecognitionException { + DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_defaultValue); + try { + enterOuterAlt(_localctx, 1); + { + setState(1418); + match(DEFAULT); + setState(1419); + elementValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnnotationContext extends ParserRuleContext { + public NormalAnnotationContext normalAnnotation() { + return getRuleContext(NormalAnnotationContext.class,0); + } + public MarkerAnnotationContext markerAnnotation() { + return getRuleContext(MarkerAnnotationContext.class,0); + } + public SingleElementAnnotationContext singleElementAnnotation() { + return getRuleContext(SingleElementAnnotationContext.class,0); + } + public AnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotation(this); + } + } + + public final AnnotationContext annotation() throws RecognitionException { + AnnotationContext _localctx = new AnnotationContext(_ctx, getState()); + enterRule(_localctx, 230, RULE_annotation); + try { + setState(1424); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1421); + normalAnnotation(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1422); + markerAnnotation(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1423); + singleElementAnnotation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NormalAnnotationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ElementValuePairListContext elementValuePairList() { + return getRuleContext(ElementValuePairListContext.class,0); + } + public NormalAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalAnnotation(this); + } + } + + public final NormalAnnotationContext normalAnnotation() throws RecognitionException { + NormalAnnotationContext _localctx = new NormalAnnotationContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_normalAnnotation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1426); + match(AT); + setState(1427); + typeName(); + setState(1428); + match(LPAREN); + setState(1430); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1429); + elementValuePairList(); + } + } + + setState(1432); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementValuePairListContext extends ParserRuleContext { + public List elementValuePair() { + return getRuleContexts(ElementValuePairContext.class); + } + public ElementValuePairContext elementValuePair(int i) { + return getRuleContext(ElementValuePairContext.class,i); + } + public ElementValuePairListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValuePairList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePairList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePairList(this); + } + } + + public final ElementValuePairListContext elementValuePairList() throws RecognitionException { + ElementValuePairListContext _localctx = new ElementValuePairListContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_elementValuePairList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1434); + elementValuePair(); + setState(1439); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1435); + match(COMMA); + setState(1436); + elementValuePair(); + } + } + setState(1441); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementValuePairContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ElementValueContext elementValue() { + return getRuleContext(ElementValueContext.class,0); + } + public ElementValuePairContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValuePair; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePair(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePair(this); + } + } + + public final ElementValuePairContext elementValuePair() throws RecognitionException { + ElementValuePairContext _localctx = new ElementValuePairContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_elementValuePair); + try { + enterOuterAlt(_localctx, 1); + { + setState(1442); + match(Identifier); + setState(1443); + match(ASSIGN); + setState(1444); + elementValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementValueContext extends ParserRuleContext { + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public ElementValueArrayInitializerContext elementValueArrayInitializer() { + return getRuleContext(ElementValueArrayInitializerContext.class,0); + } + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public ElementValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValue(this); + } + } + + public final ElementValueContext elementValue() throws RecognitionException { + ElementValueContext _localctx = new ElementValueContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_elementValue); + try { + setState(1449); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,149,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1446); + conditionalExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1447); + elementValueArrayInitializer(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1448); + annotation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementValueArrayInitializerContext extends ParserRuleContext { + public ElementValueListContext elementValueList() { + return getRuleContext(ElementValueListContext.class,0); + } + public ElementValueArrayInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValueArrayInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValueArrayInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueArrayInitializer(this); + } + } + + public final ElementValueArrayInitializerContext elementValueArrayInitializer() throws RecognitionException { + ElementValueArrayInitializerContext _localctx = new ElementValueArrayInitializerContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_elementValueArrayInitializer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1451); + match(LBRACE); + setState(1453); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1452); + elementValueList(); + } + } + + setState(1456); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1455); + match(COMMA); + } + } + + setState(1458); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementValueListContext extends ParserRuleContext { + public List elementValue() { + return getRuleContexts(ElementValueContext.class); + } + public ElementValueContext elementValue(int i) { + return getRuleContext(ElementValueContext.class,i); + } + public ElementValueListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValueList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValueList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueList(this); + } + } + + public final ElementValueListContext elementValueList() throws RecognitionException { + ElementValueListContext _localctx = new ElementValueListContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_elementValueList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1460); + elementValue(); + setState(1465); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,152,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1461); + match(COMMA); + setState(1462); + elementValue(); + } + } + } + setState(1467); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,152,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MarkerAnnotationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public MarkerAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_markerAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMarkerAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMarkerAnnotation(this); + } + } + + public final MarkerAnnotationContext markerAnnotation() throws RecognitionException { + MarkerAnnotationContext _localctx = new MarkerAnnotationContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_markerAnnotation); + try { + enterOuterAlt(_localctx, 1); + { + setState(1468); + match(AT); + setState(1469); + typeName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleElementAnnotationContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ElementValueContext elementValue() { + return getRuleContext(ElementValueContext.class,0); + } + public SingleElementAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleElementAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleElementAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleElementAnnotation(this); + } + } + + public final SingleElementAnnotationContext singleElementAnnotation() throws RecognitionException { + SingleElementAnnotationContext _localctx = new SingleElementAnnotationContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_singleElementAnnotation); + try { + enterOuterAlt(_localctx, 1); + { + setState(1471); + match(AT); + setState(1472); + typeName(); + setState(1473); + match(LPAREN); + setState(1474); + elementValue(); + setState(1475); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayInitializerContext extends ParserRuleContext { + public VariableInitializerListContext variableInitializerList() { + return getRuleContext(VariableInitializerListContext.class,0); + } + public ArrayInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayInitializer(this); + } + } + + public final ArrayInitializerContext arrayInitializer() throws RecognitionException { + ArrayInitializerContext _localctx = new ArrayInitializerContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_arrayInitializer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1477); + match(LBRACE); + setState(1479); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1478); + variableInitializerList(); + } + } + + setState(1482); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1481); + match(COMMA); + } + } + + setState(1484); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableInitializerListContext extends ParserRuleContext { + public List variableInitializer() { + return getRuleContexts(VariableInitializerContext.class); + } + public VariableInitializerContext variableInitializer(int i) { + return getRuleContext(VariableInitializerContext.class,i); + } + public VariableInitializerListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableInitializerList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableInitializerList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializerList(this); + } + } + + public final VariableInitializerListContext variableInitializerList() throws RecognitionException { + VariableInitializerListContext _localctx = new VariableInitializerListContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_variableInitializerList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1486); + variableInitializer(); + setState(1491); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,155,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1487); + match(COMMA); + setState(1488); + variableInitializer(); + } + } + } + setState(1493); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,155,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockContext extends ParserRuleContext { + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + public BlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlock(this); + } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1494); + match(LBRACE); + setState(1496); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1495); + blockStatements(); + } + } + + setState(1498); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockStatementsContext extends ParserRuleContext { + public List blockStatement() { + return getRuleContexts(BlockStatementContext.class); + } + public BlockStatementContext blockStatement(int i) { + return getRuleContext(BlockStatementContext.class,i); + } + public BlockStatementsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_blockStatements; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlockStatements(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatements(this); + } + } + + public final BlockStatementsContext blockStatements() throws RecognitionException { + BlockStatementsContext _localctx = new BlockStatementsContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_blockStatements); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1500); + blockStatement(); + setState(1504); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + { + setState(1501); + blockStatement(); + } + } + setState(1506); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockStatementContext extends ParserRuleContext { + public LocalVariableDeclarationStatementContext localVariableDeclarationStatement() { + return getRuleContext(LocalVariableDeclarationStatementContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public BlockStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_blockStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlockStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatement(this); + } + } + + public final BlockStatementContext blockStatement() throws RecognitionException { + BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_blockStatement); + try { + setState(1510); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1507); + localVariableDeclarationStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1508); + classDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1509); + statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LocalVariableDeclarationStatementContext extends ParserRuleContext { + public LocalVariableDeclarationContext localVariableDeclaration() { + return getRuleContext(LocalVariableDeclarationContext.class,0); + } + public LocalVariableDeclarationStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_localVariableDeclarationStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclarationStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclarationStatement(this); + } + } + + public final LocalVariableDeclarationStatementContext localVariableDeclarationStatement() throws RecognitionException { + LocalVariableDeclarationStatementContext _localctx = new LocalVariableDeclarationStatementContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_localVariableDeclarationStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1512); + localVariableDeclaration(); + setState(1513); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LocalVariableDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public LocalVariableDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_localVariableDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclaration(this); + } + } + + public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException { + LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_localVariableDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1518); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1515); + variableModifier(); + } + } + setState(1520); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1521); + unannType(); + setState(1522); + variableDeclaratorList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() { + return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0); + } + public LabeledStatementContext labeledStatement() { + return getRuleContext(LabeledStatementContext.class,0); + } + public IfThenStatementContext ifThenStatement() { + return getRuleContext(IfThenStatementContext.class,0); + } + public IfThenElseStatementContext ifThenElseStatement() { + return getRuleContext(IfThenElseStatementContext.class,0); + } + public WhileStatementContext whileStatement() { + return getRuleContext(WhileStatementContext.class,0); + } + public ForStatementContext forStatement() { + return getRuleContext(ForStatementContext.class,0); + } + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatement(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_statement); + try { + setState(1530); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1524); + statementWithoutTrailingSubstatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1525); + labeledStatement(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1526); + ifThenStatement(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1527); + ifThenElseStatement(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1528); + whileStatement(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1529); + forStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementNoShortIfContext extends ParserRuleContext { + public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() { + return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0); + } + public LabeledStatementNoShortIfContext labeledStatementNoShortIf() { + return getRuleContext(LabeledStatementNoShortIfContext.class,0); + } + public IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() { + return getRuleContext(IfThenElseStatementNoShortIfContext.class,0); + } + public WhileStatementNoShortIfContext whileStatementNoShortIf() { + return getRuleContext(WhileStatementNoShortIfContext.class,0); + } + public ForStatementNoShortIfContext forStatementNoShortIf() { + return getRuleContext(ForStatementNoShortIfContext.class,0); + } + public StatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementNoShortIf(this); + } + } + + public final StatementNoShortIfContext statementNoShortIf() throws RecognitionException { + StatementNoShortIfContext _localctx = new StatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_statementNoShortIf); + try { + setState(1537); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1532); + statementWithoutTrailingSubstatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1533); + labeledStatementNoShortIf(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1534); + ifThenElseStatementNoShortIf(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1535); + whileStatementNoShortIf(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1536); + forStatementNoShortIf(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementWithoutTrailingSubstatementContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public EmptyStatementContext emptyStatement() { + return getRuleContext(EmptyStatementContext.class,0); + } + public ExpressionStatementContext expressionStatement() { + return getRuleContext(ExpressionStatementContext.class,0); + } + public AssertStatementContext assertStatement() { + return getRuleContext(AssertStatementContext.class,0); + } + public SwitchStatementContext switchStatement() { + return getRuleContext(SwitchStatementContext.class,0); + } + public DoStatementContext doStatement() { + return getRuleContext(DoStatementContext.class,0); + } + public BreakStatementContext breakStatement() { + return getRuleContext(BreakStatementContext.class,0); + } + public ContinueStatementContext continueStatement() { + return getRuleContext(ContinueStatementContext.class,0); + } + public ReturnStatementContext returnStatement() { + return getRuleContext(ReturnStatementContext.class,0); + } + public SynchronizedStatementContext synchronizedStatement() { + return getRuleContext(SynchronizedStatementContext.class,0); + } + public ThrowStatementContext throwStatement() { + return getRuleContext(ThrowStatementContext.class,0); + } + public TryStatementContext tryStatement() { + return getRuleContext(TryStatementContext.class,0); + } + public StatementWithoutTrailingSubstatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementWithoutTrailingSubstatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementWithoutTrailingSubstatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementWithoutTrailingSubstatement(this); + } + } + + public final StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() throws RecognitionException { + StatementWithoutTrailingSubstatementContext _localctx = new StatementWithoutTrailingSubstatementContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_statementWithoutTrailingSubstatement); + try { + setState(1551); + switch (_input.LA(1)) { + case LBRACE: + enterOuterAlt(_localctx, 1); + { + setState(1539); + block(); + } + break; + case SEMI: + enterOuterAlt(_localctx, 2); + { + setState(1540); + emptyStatement(); + } + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case INC: + case DEC: + case Identifier: + case AT: + enterOuterAlt(_localctx, 3); + { + setState(1541); + expressionStatement(); + } + break; + case ASSERT: + enterOuterAlt(_localctx, 4); + { + setState(1542); + assertStatement(); + } + break; + case SWITCH: + enterOuterAlt(_localctx, 5); + { + setState(1543); + switchStatement(); + } + break; + case DO: + enterOuterAlt(_localctx, 6); + { + setState(1544); + doStatement(); + } + break; + case BREAK: + enterOuterAlt(_localctx, 7); + { + setState(1545); + breakStatement(); + } + break; + case CONTINUE: + enterOuterAlt(_localctx, 8); + { + setState(1546); + continueStatement(); + } + break; + case RETURN: + enterOuterAlt(_localctx, 9); + { + setState(1547); + returnStatement(); + } + break; + case SYNCHRONIZED: + enterOuterAlt(_localctx, 10); + { + setState(1548); + synchronizedStatement(); + } + break; + case THROW: + enterOuterAlt(_localctx, 11); + { + setState(1549); + throwStatement(); + } + break; + case TRY: + enterOuterAlt(_localctx, 12); + { + setState(1550); + tryStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EmptyStatementContext extends ParserRuleContext { + public EmptyStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_emptyStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEmptyStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEmptyStatement(this); + } + } + + public final EmptyStatementContext emptyStatement() throws RecognitionException { + EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_emptyStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1553); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LabeledStatementContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public LabeledStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeledStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatement(this); + } + } + + public final LabeledStatementContext labeledStatement() throws RecognitionException { + LabeledStatementContext _localctx = new LabeledStatementContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_labeledStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1555); + match(Identifier); + setState(1556); + match(COLON); + setState(1557); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LabeledStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public LabeledStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeledStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatementNoShortIf(this); + } + } + + public final LabeledStatementNoShortIfContext labeledStatementNoShortIf() throws RecognitionException { + LabeledStatementNoShortIfContext _localctx = new LabeledStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_labeledStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1559); + match(Identifier); + setState(1560); + match(COLON); + setState(1561); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionStatementContext extends ParserRuleContext { + public StatementExpressionContext statementExpression() { + return getRuleContext(StatementExpressionContext.class,0); + } + public ExpressionStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionStatement(this); + } + } + + public final ExpressionStatementContext expressionStatement() throws RecognitionException { + ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState()); + enterRule(_localctx, 274, RULE_expressionStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1563); + statementExpression(); + setState(1564); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementExpressionContext extends ParserRuleContext { + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public PreIncrementExpressionContext preIncrementExpression() { + return getRuleContext(PreIncrementExpressionContext.class,0); + } + public PreDecrementExpressionContext preDecrementExpression() { + return getRuleContext(PreDecrementExpressionContext.class,0); + } + public PostIncrementExpressionContext postIncrementExpression() { + return getRuleContext(PostIncrementExpressionContext.class,0); + } + public PostDecrementExpressionContext postDecrementExpression() { + return getRuleContext(PostDecrementExpressionContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public StatementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpression(this); + } + } + + public final StatementExpressionContext statementExpression() throws RecognitionException { + StatementExpressionContext _localctx = new StatementExpressionContext(_ctx, getState()); + enterRule(_localctx, 276, RULE_statementExpression); + try { + setState(1573); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,163,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1566); + assignment(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1567); + preIncrementExpression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1568); + preDecrementExpression(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1569); + postIncrementExpression(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1570); + postDecrementExpression(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1571); + methodInvocation(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1572); + classInstanceCreationExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfThenStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public IfThenStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenStatement(this); + } + } + + public final IfThenStatementContext ifThenStatement() throws RecognitionException { + IfThenStatementContext _localctx = new IfThenStatementContext(_ctx, getState()); + enterRule(_localctx, 278, RULE_ifThenStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1575); + match(IF); + setState(1576); + match(LPAREN); + setState(1577); + expression(); + setState(1578); + match(RPAREN); + setState(1579); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfThenElseStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public IfThenElseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenElseStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatement(this); + } + } + + public final IfThenElseStatementContext ifThenElseStatement() throws RecognitionException { + IfThenElseStatementContext _localctx = new IfThenElseStatementContext(_ctx, getState()); + enterRule(_localctx, 280, RULE_ifThenElseStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1581); + match(IF); + setState(1582); + match(LPAREN); + setState(1583); + expression(); + setState(1584); + match(RPAREN); + setState(1585); + statementNoShortIf(); + setState(1586); + match(ELSE); + setState(1587); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfThenElseStatementNoShortIfContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List statementNoShortIf() { + return getRuleContexts(StatementNoShortIfContext.class); + } + public StatementNoShortIfContext statementNoShortIf(int i) { + return getRuleContext(StatementNoShortIfContext.class,i); + } + public IfThenElseStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenElseStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatementNoShortIf(this); + } + } + + public final IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() throws RecognitionException { + IfThenElseStatementNoShortIfContext _localctx = new IfThenElseStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 282, RULE_ifThenElseStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1589); + match(IF); + setState(1590); + match(LPAREN); + setState(1591); + expression(); + setState(1592); + match(RPAREN); + setState(1593); + statementNoShortIf(); + setState(1594); + match(ELSE); + setState(1595); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssertStatementContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public AssertStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assertStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssertStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssertStatement(this); + } + } + + public final AssertStatementContext assertStatement() throws RecognitionException { + AssertStatementContext _localctx = new AssertStatementContext(_ctx, getState()); + enterRule(_localctx, 284, RULE_assertStatement); + try { + setState(1607); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1597); + match(ASSERT); + setState(1598); + expression(); + setState(1599); + match(SEMI); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1601); + match(ASSERT); + setState(1602); + expression(); + setState(1603); + match(COLON); + setState(1604); + expression(); + setState(1605); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SwitchBlockContext switchBlock() { + return getRuleContext(SwitchBlockContext.class,0); + } + public SwitchStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchStatement(this); + } + } + + public final SwitchStatementContext switchStatement() throws RecognitionException { + SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState()); + enterRule(_localctx, 286, RULE_switchStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1609); + match(SWITCH); + setState(1610); + match(LPAREN); + setState(1611); + expression(); + setState(1612); + match(RPAREN); + setState(1613); + switchBlock(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchBlockContext extends ParserRuleContext { + public List switchBlockStatementGroup() { + return getRuleContexts(SwitchBlockStatementGroupContext.class); + } + public SwitchBlockStatementGroupContext switchBlockStatementGroup(int i) { + return getRuleContext(SwitchBlockStatementGroupContext.class,i); + } + public List switchLabel() { + return getRuleContexts(SwitchLabelContext.class); + } + public SwitchLabelContext switchLabel(int i) { + return getRuleContext(SwitchLabelContext.class,i); + } + public SwitchBlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchBlock; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlock(this); + } + } + + public final SwitchBlockContext switchBlock() throws RecognitionException { + SwitchBlockContext _localctx = new SwitchBlockContext(_ctx, getState()); + enterRule(_localctx, 288, RULE_switchBlock); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1615); + match(LBRACE); + setState(1619); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1616); + switchBlockStatementGroup(); + } + } + } + setState(1621); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + } + setState(1625); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CASE || _la==DEFAULT) { + { + { + setState(1622); + switchLabel(); + } + } + setState(1627); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1628); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchBlockStatementGroupContext extends ParserRuleContext { + public SwitchLabelsContext switchLabels() { + return getRuleContext(SwitchLabelsContext.class,0); + } + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + public SwitchBlockStatementGroupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchBlockStatementGroup; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchBlockStatementGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlockStatementGroup(this); + } + } + + public final SwitchBlockStatementGroupContext switchBlockStatementGroup() throws RecognitionException { + SwitchBlockStatementGroupContext _localctx = new SwitchBlockStatementGroupContext(_ctx, getState()); + enterRule(_localctx, 290, RULE_switchBlockStatementGroup); + try { + enterOuterAlt(_localctx, 1); + { + setState(1630); + switchLabels(); + setState(1631); + blockStatements(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchLabelsContext extends ParserRuleContext { + public List switchLabel() { + return getRuleContexts(SwitchLabelContext.class); + } + public SwitchLabelContext switchLabel(int i) { + return getRuleContext(SwitchLabelContext.class,i); + } + public SwitchLabelsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchLabels; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchLabels(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabels(this); + } + } + + public final SwitchLabelsContext switchLabels() throws RecognitionException { + SwitchLabelsContext _localctx = new SwitchLabelsContext(_ctx, getState()); + enterRule(_localctx, 292, RULE_switchLabels); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1633); + switchLabel(); + setState(1637); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CASE || _la==DEFAULT) { + { + { + setState(1634); + switchLabel(); + } + } + setState(1639); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchLabelContext extends ParserRuleContext { + public ConstantExpressionContext constantExpression() { + return getRuleContext(ConstantExpressionContext.class,0); + } + public EnumConstantNameContext enumConstantName() { + return getRuleContext(EnumConstantNameContext.class,0); + } + public SwitchLabelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchLabel; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchLabel(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabel(this); + } + } + + public final SwitchLabelContext switchLabel() throws RecognitionException { + SwitchLabelContext _localctx = new SwitchLabelContext(_ctx, getState()); + enterRule(_localctx, 294, RULE_switchLabel); + try { + setState(1650); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1640); + match(CASE); + setState(1641); + constantExpression(); + setState(1642); + match(COLON); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1644); + match(CASE); + setState(1645); + enumConstantName(); + setState(1646); + match(COLON); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1648); + match(DEFAULT); + setState(1649); + match(COLON); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumConstantNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public EnumConstantNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantName(this); + } + } + + public final EnumConstantNameContext enumConstantName() throws RecognitionException { + EnumConstantNameContext _localctx = new EnumConstantNameContext(_ctx, getState()); + enterRule(_localctx, 296, RULE_enumConstantName); + try { + enterOuterAlt(_localctx, 1); + { + setState(1652); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhileStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public WhileStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatement(this); + } + } + + public final WhileStatementContext whileStatement() throws RecognitionException { + WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState()); + enterRule(_localctx, 298, RULE_whileStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1654); + match(WHILE); + setState(1655); + match(LPAREN); + setState(1656); + expression(); + setState(1657); + match(RPAREN); + setState(1658); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhileStatementNoShortIfContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public WhileStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatementNoShortIf(this); + } + } + + public final WhileStatementNoShortIfContext whileStatementNoShortIf() throws RecognitionException { + WhileStatementNoShortIfContext _localctx = new WhileStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 300, RULE_whileStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1660); + match(WHILE); + setState(1661); + match(LPAREN); + setState(1662); + expression(); + setState(1663); + match(RPAREN); + setState(1664); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DoStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public DoStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_doStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDoStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDoStatement(this); + } + } + + public final DoStatementContext doStatement() throws RecognitionException { + DoStatementContext _localctx = new DoStatementContext(_ctx, getState()); + enterRule(_localctx, 302, RULE_doStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1666); + match(DO); + setState(1667); + statement(); + setState(1668); + match(WHILE); + setState(1669); + match(LPAREN); + setState(1670); + expression(); + setState(1671); + match(RPAREN); + setState(1672); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForStatementContext extends ParserRuleContext { + public BasicForStatementContext basicForStatement() { + return getRuleContext(BasicForStatementContext.class,0); + } + public EnhancedForStatementContext enhancedForStatement() { + return getRuleContext(EnhancedForStatementContext.class,0); + } + public ForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatement(this); + } + } + + public final ForStatementContext forStatement() throws RecognitionException { + ForStatementContext _localctx = new ForStatementContext(_ctx, getState()); + enterRule(_localctx, 304, RULE_forStatement); + try { + setState(1676); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1674); + basicForStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1675); + enhancedForStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForStatementNoShortIfContext extends ParserRuleContext { + public BasicForStatementNoShortIfContext basicForStatementNoShortIf() { + return getRuleContext(BasicForStatementNoShortIfContext.class,0); + } + public EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() { + return getRuleContext(EnhancedForStatementNoShortIfContext.class,0); + } + public ForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatementNoShortIf(this); + } + } + + public final ForStatementNoShortIfContext forStatementNoShortIf() throws RecognitionException { + ForStatementNoShortIfContext _localctx = new ForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 306, RULE_forStatementNoShortIf); + try { + setState(1680); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1678); + basicForStatementNoShortIf(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1679); + enhancedForStatementNoShortIf(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BasicForStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ForInitContext forInit() { + return getRuleContext(ForInitContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ForUpdateContext forUpdate() { + return getRuleContext(ForUpdateContext.class,0); + } + public BasicForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_basicForStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatement(this); + } + } + + public final BasicForStatementContext basicForStatement() throws RecognitionException { + BasicForStatementContext _localctx = new BasicForStatementContext(_ctx, getState()); + enterRule(_localctx, 308, RULE_basicForStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1682); + match(FOR); + setState(1683); + match(LPAREN); + setState(1685); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1684); + forInit(); + } + } + + setState(1687); + match(SEMI); + setState(1689); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1688); + expression(); + } + } + + setState(1691); + match(SEMI); + setState(1693); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1692); + forUpdate(); + } + } + + setState(1695); + match(RPAREN); + setState(1696); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BasicForStatementNoShortIfContext extends ParserRuleContext { + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public ForInitContext forInit() { + return getRuleContext(ForInitContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ForUpdateContext forUpdate() { + return getRuleContext(ForUpdateContext.class,0); + } + public BasicForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_basicForStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatementNoShortIf(this); + } + } + + public final BasicForStatementNoShortIfContext basicForStatementNoShortIf() throws RecognitionException { + BasicForStatementNoShortIfContext _localctx = new BasicForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 310, RULE_basicForStatementNoShortIf); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1698); + match(FOR); + setState(1699); + match(LPAREN); + setState(1701); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1700); + forInit(); + } + } + + setState(1703); + match(SEMI); + setState(1705); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1704); + expression(); + } + } + + setState(1707); + match(SEMI); + setState(1709); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + { + setState(1708); + forUpdate(); + } + } + + setState(1711); + match(RPAREN); + setState(1712); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForInitContext extends ParserRuleContext { + public StatementExpressionListContext statementExpressionList() { + return getRuleContext(StatementExpressionListContext.class,0); + } + public LocalVariableDeclarationContext localVariableDeclaration() { + return getRuleContext(LocalVariableDeclarationContext.class,0); + } + public ForInitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forInit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForInit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForInit(this); + } + } + + public final ForInitContext forInit() throws RecognitionException { + ForInitContext _localctx = new ForInitContext(_ctx, getState()); + enterRule(_localctx, 312, RULE_forInit); + try { + setState(1716); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1714); + statementExpressionList(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1715); + localVariableDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForUpdateContext extends ParserRuleContext { + public StatementExpressionListContext statementExpressionList() { + return getRuleContext(StatementExpressionListContext.class,0); + } + public ForUpdateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forUpdate; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForUpdate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForUpdate(this); + } + } + + public final ForUpdateContext forUpdate() throws RecognitionException { + ForUpdateContext _localctx = new ForUpdateContext(_ctx, getState()); + enterRule(_localctx, 314, RULE_forUpdate); + try { + enterOuterAlt(_localctx, 1); + { + setState(1718); + statementExpressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementExpressionListContext extends ParserRuleContext { + public List statementExpression() { + return getRuleContexts(StatementExpressionContext.class); + } + public StatementExpressionContext statementExpression(int i) { + return getRuleContext(StatementExpressionContext.class,i); + } + public StatementExpressionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementExpressionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpressionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpressionList(this); + } + } + + public final StatementExpressionListContext statementExpressionList() throws RecognitionException { + StatementExpressionListContext _localctx = new StatementExpressionListContext(_ctx, getState()); + enterRule(_localctx, 316, RULE_statementExpressionList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1720); + statementExpression(); + setState(1725); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1721); + match(COMMA); + setState(1722); + statementExpression(); + } + } + setState(1727); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnhancedForStatementContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public EnhancedForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enhancedForStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatement(this); + } + } + + public final EnhancedForStatementContext enhancedForStatement() throws RecognitionException { + EnhancedForStatementContext _localctx = new EnhancedForStatementContext(_ctx, getState()); + enterRule(_localctx, 318, RULE_enhancedForStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1728); + match(FOR); + setState(1729); + match(LPAREN); + setState(1733); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1730); + variableModifier(); + } + } + setState(1735); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1736); + unannType(); + setState(1737); + variableDeclaratorId(); + setState(1738); + match(COLON); + setState(1739); + expression(); + setState(1740); + match(RPAREN); + setState(1741); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnhancedForStatementNoShortIfContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public EnhancedForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enhancedForStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatementNoShortIf(this); + } + } + + public final EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() throws RecognitionException { + EnhancedForStatementNoShortIfContext _localctx = new EnhancedForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 320, RULE_enhancedForStatementNoShortIf); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1743); + match(FOR); + setState(1744); + match(LPAREN); + setState(1748); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1745); + variableModifier(); + } + } + setState(1750); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1751); + unannType(); + setState(1752); + variableDeclaratorId(); + setState(1753); + match(COLON); + setState(1754); + expression(); + setState(1755); + match(RPAREN); + setState(1756); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BreakStatementContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public BreakStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_breakStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBreakStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBreakStatement(this); + } + } + + public final BreakStatementContext breakStatement() throws RecognitionException { + BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState()); + enterRule(_localctx, 322, RULE_breakStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1758); + match(BREAK); + setState(1760); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1759); + match(Identifier); + } + } + + setState(1762); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ContinueStatementContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ContinueStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_continueStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterContinueStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitContinueStatement(this); + } + } + + public final ContinueStatementContext continueStatement() throws RecognitionException { + ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState()); + enterRule(_localctx, 324, RULE_continueStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1764); + match(CONTINUE); + setState(1766); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1765); + match(Identifier); + } + } + + setState(1768); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReturnStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ReturnStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReturnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReturnStatement(this); + } + } + + public final ReturnStatementContext returnStatement() throws RecognitionException { + ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); + enterRule(_localctx, 326, RULE_returnStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1770); + match(RETURN); + setState(1772); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(1771); + expression(); + } + } + + setState(1774); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ThrowStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ThrowStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_throwStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrowStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrowStatement(this); + } + } + + public final ThrowStatementContext throwStatement() throws RecognitionException { + ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState()); + enterRule(_localctx, 328, RULE_throwStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1776); + match(THROW); + setState(1777); + expression(); + setState(1778); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SynchronizedStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public SynchronizedStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_synchronizedStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSynchronizedStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSynchronizedStatement(this); + } + } + + public final SynchronizedStatementContext synchronizedStatement() throws RecognitionException { + SynchronizedStatementContext _localctx = new SynchronizedStatementContext(_ctx, getState()); + enterRule(_localctx, 330, RULE_synchronizedStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1780); + match(SYNCHRONIZED); + setState(1781); + match(LPAREN); + setState(1782); + expression(); + setState(1783); + match(RPAREN); + setState(1784); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TryStatementContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public CatchesContext catches() { + return getRuleContext(CatchesContext.class,0); + } + public Finally_Context finally_() { + return getRuleContext(Finally_Context.class,0); + } + public TryWithResourcesStatementContext tryWithResourcesStatement() { + return getRuleContext(TryWithResourcesStatementContext.class,0); + } + public TryStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tryStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryStatement(this); + } + } + + public final TryStatementContext tryStatement() throws RecognitionException { + TryStatementContext _localctx = new TryStatementContext(_ctx, getState()); + enterRule(_localctx, 332, RULE_tryStatement); + int _la; + try { + setState(1798); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1786); + match(TRY); + setState(1787); + block(); + setState(1788); + catches(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1790); + match(TRY); + setState(1791); + block(); + setState(1793); + _la = _input.LA(1); + if (_la==CATCH) { + { + setState(1792); + catches(); + } + } + + setState(1795); + finally_(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1797); + tryWithResourcesStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CatchesContext extends ParserRuleContext { + public List catchClause() { + return getRuleContexts(CatchClauseContext.class); + } + public CatchClauseContext catchClause(int i) { + return getRuleContext(CatchClauseContext.class,i); + } + public CatchesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catches; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatches(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatches(this); + } + } + + public final CatchesContext catches() throws RecognitionException { + CatchesContext _localctx = new CatchesContext(_ctx, getState()); + enterRule(_localctx, 334, RULE_catches); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1800); + catchClause(); + setState(1804); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CATCH) { + { + { + setState(1801); + catchClause(); + } + } + setState(1806); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CatchClauseContext extends ParserRuleContext { + public CatchFormalParameterContext catchFormalParameter() { + return getRuleContext(CatchFormalParameterContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public CatchClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catchClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchClause(this); + } + } + + public final CatchClauseContext catchClause() throws RecognitionException { + CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState()); + enterRule(_localctx, 336, RULE_catchClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1807); + match(CATCH); + setState(1808); + match(LPAREN); + setState(1809); + catchFormalParameter(); + setState(1810); + match(RPAREN); + setState(1811); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CatchFormalParameterContext extends ParserRuleContext { + public CatchTypeContext catchType() { + return getRuleContext(CatchTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public CatchFormalParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catchFormalParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchFormalParameter(this); + } + } + + public final CatchFormalParameterContext catchFormalParameter() throws RecognitionException { + CatchFormalParameterContext _localctx = new CatchFormalParameterContext(_ctx, getState()); + enterRule(_localctx, 338, RULE_catchFormalParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1816); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1813); + variableModifier(); + } + } + setState(1818); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1819); + catchType(); + setState(1820); + variableDeclaratorId(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CatchTypeContext extends ParserRuleContext { + public UnannClassTypeContext unannClassType() { + return getRuleContext(UnannClassTypeContext.class,0); + } + public List classType() { + return getRuleContexts(ClassTypeContext.class); + } + public ClassTypeContext classType(int i) { + return getRuleContext(ClassTypeContext.class,i); + } + public CatchTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catchType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchType(this); + } + } + + public final CatchTypeContext catchType() throws RecognitionException { + CatchTypeContext _localctx = new CatchTypeContext(_ctx, getState()); + enterRule(_localctx, 340, RULE_catchType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1822); + unannClassType(); + setState(1827); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITOR) { + { + { + setState(1823); + match(BITOR); + setState(1824); + classType(); + } + } + setState(1829); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Finally_Context extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public Finally_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_finally_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFinally_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFinally_(this); + } + } + + public final Finally_Context finally_() throws RecognitionException { + Finally_Context _localctx = new Finally_Context(_ctx, getState()); + enterRule(_localctx, 342, RULE_finally_); + try { + enterOuterAlt(_localctx, 1); + { + setState(1830); + match(FINALLY); + setState(1831); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TryWithResourcesStatementContext extends ParserRuleContext { + public ResourceSpecificationContext resourceSpecification() { + return getRuleContext(ResourceSpecificationContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public CatchesContext catches() { + return getRuleContext(CatchesContext.class,0); + } + public Finally_Context finally_() { + return getRuleContext(Finally_Context.class,0); + } + public TryWithResourcesStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tryWithResourcesStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryWithResourcesStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryWithResourcesStatement(this); + } + } + + public final TryWithResourcesStatementContext tryWithResourcesStatement() throws RecognitionException { + TryWithResourcesStatementContext _localctx = new TryWithResourcesStatementContext(_ctx, getState()); + enterRule(_localctx, 344, RULE_tryWithResourcesStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1833); + match(TRY); + setState(1834); + resourceSpecification(); + setState(1835); + block(); + setState(1837); + _la = _input.LA(1); + if (_la==CATCH) { + { + setState(1836); + catches(); + } + } + + setState(1840); + _la = _input.LA(1); + if (_la==FINALLY) { + { + setState(1839); + finally_(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResourceSpecificationContext extends ParserRuleContext { + public ResourceListContext resourceList() { + return getRuleContext(ResourceListContext.class,0); + } + public ResourceSpecificationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resourceSpecification; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResourceSpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceSpecification(this); + } + } + + public final ResourceSpecificationContext resourceSpecification() throws RecognitionException { + ResourceSpecificationContext _localctx = new ResourceSpecificationContext(_ctx, getState()); + enterRule(_localctx, 346, RULE_resourceSpecification); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1842); + match(LPAREN); + setState(1843); + resourceList(); + setState(1845); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(1844); + match(SEMI); + } + } + + setState(1847); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResourceListContext extends ParserRuleContext { + public List resource() { + return getRuleContexts(ResourceContext.class); + } + public ResourceContext resource(int i) { + return getRuleContext(ResourceContext.class,i); + } + public ResourceListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resourceList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResourceList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceList(this); + } + } + + public final ResourceListContext resourceList() throws RecognitionException { + ResourceListContext _localctx = new ResourceListContext(_ctx, getState()); + enterRule(_localctx, 348, RULE_resourceList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1849); + resource(); + setState(1854); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,192,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1850); + match(SEMI); + setState(1851); + resource(); + } + } + } + setState(1856); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,192,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResourceContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public ResourceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resource; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResource(this); + } + } + + public final ResourceContext resource() throws RecognitionException { + ResourceContext _localctx = new ResourceContext(_ctx, getState()); + enterRule(_localctx, 350, RULE_resource); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1860); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1857); + variableModifier(); + } + } + setState(1862); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1863); + unannType(); + setState(1864); + variableDeclaratorId(); + setState(1865); + match(ASSIGN); + setState(1866); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() { + return getRuleContext(PrimaryNoNewArray_lfno_primaryContext.class,0); + } + public ArrayCreationExpressionContext arrayCreationExpression() { + return getRuleContext(ArrayCreationExpressionContext.class,0); + } + public List primaryNoNewArray_lf_primary() { + return getRuleContexts(PrimaryNoNewArray_lf_primaryContext.class); + } + public PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lf_primaryContext.class,i); + } + public PrimaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimary(this); + } + } + + public final PrimaryContext primary() throws RecognitionException { + PrimaryContext _localctx = new PrimaryContext(_ctx, getState()); + enterRule(_localctx, 352, RULE_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1870); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) { + case 1: + { + setState(1868); + primaryNoNewArray_lfno_primary(); + } + break; + case 2: + { + setState(1869); + arrayCreationExpression(); + } + break; + } + setState(1875); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,195,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1872); + primaryNoNewArray_lf_primary(); + } + } + } + setState(1877); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,195,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArrayContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public ArrayAccessContext arrayAccess() { + return getRuleContext(ArrayAccessContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public MethodReferenceContext methodReference() { + return getRuleContext(MethodReferenceContext.class,0); + } + public PrimaryNoNewArrayContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray(this); + } + } + + public final PrimaryNoNewArrayContext primaryNoNewArray() throws RecognitionException { + PrimaryNoNewArrayContext _localctx = new PrimaryNoNewArrayContext(_ctx, getState()); + enterRule(_localctx, 354, RULE_primaryNoNewArray); + int _la; + try { + setState(1907); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1878); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1879); + typeName(); + setState(1884); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1880); + match(LBRACK); + setState(1881); + match(RBRACK); + } + } + setState(1886); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1887); + match(DOT); + setState(1888); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1890); + match(VOID); + setState(1891); + match(DOT); + setState(1892); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1893); + match(THIS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1894); + typeName(); + setState(1895); + match(DOT); + setState(1896); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1898); + match(LPAREN); + setState(1899); + expression(); + setState(1900); + match(RPAREN); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1902); + classInstanceCreationExpression(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1903); + fieldAccess(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1904); + arrayAccess(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1905); + methodInvocation(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(1906); + methodReference(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lf_arrayAccessContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_arrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_arrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_arrayAccess(this); + } + } + + public final PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess() throws RecognitionException { + PrimaryNoNewArray_lf_arrayAccessContext _localctx = new PrimaryNoNewArray_lf_arrayAccessContext(_ctx, getState()); + enterRule(_localctx, 356, RULE_primaryNoNewArray_lf_arrayAccess); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lfno_arrayAccessContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public MethodReferenceContext methodReference() { + return getRuleContext(MethodReferenceContext.class,0); + } + public PrimaryNoNewArray_lfno_arrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_arrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_arrayAccess(this); + } + } + + public final PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() throws RecognitionException { + PrimaryNoNewArray_lfno_arrayAccessContext _localctx = new PrimaryNoNewArray_lfno_arrayAccessContext(_ctx, getState()); + enterRule(_localctx, 358, RULE_primaryNoNewArray_lfno_arrayAccess); + int _la; + try { + setState(1939); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1911); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1912); + typeName(); + setState(1917); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1913); + match(LBRACK); + setState(1914); + match(RBRACK); + } + } + setState(1919); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1920); + match(DOT); + setState(1921); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1923); + match(VOID); + setState(1924); + match(DOT); + setState(1925); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1926); + match(THIS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1927); + typeName(); + setState(1928); + match(DOT); + setState(1929); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1931); + match(LPAREN); + setState(1932); + expression(); + setState(1933); + match(RPAREN); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1935); + classInstanceCreationExpression(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1936); + fieldAccess(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1937); + methodInvocation(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1938); + methodReference(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lf_primaryContext extends ParserRuleContext { + public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() { + return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0); + } + public FieldAccess_lf_primaryContext fieldAccess_lf_primary() { + return getRuleContext(FieldAccess_lf_primaryContext.class,0); + } + public ArrayAccess_lf_primaryContext arrayAccess_lf_primary() { + return getRuleContext(ArrayAccess_lf_primaryContext.class,0); + } + public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() { + return getRuleContext(MethodInvocation_lf_primaryContext.class,0); + } + public MethodReference_lf_primaryContext methodReference_lf_primary() { + return getRuleContext(MethodReference_lf_primaryContext.class,0); + } + public PrimaryNoNewArray_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 360, RULE_primaryNoNewArray_lf_primary); + try { + setState(1946); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1941); + classInstanceCreationExpression_lf_primary(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1942); + fieldAccess_lf_primary(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1943); + arrayAccess_lf_primary(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1944); + methodInvocation_lf_primary(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1945); + methodReference_lf_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 362, RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext extends ParserRuleContext { + public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() { + return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0); + } + public FieldAccess_lf_primaryContext fieldAccess_lf_primary() { + return getRuleContext(FieldAccess_lf_primaryContext.class,0); + } + public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() { + return getRuleContext(MethodInvocation_lf_primaryContext.class,0); + } + public MethodReference_lf_primaryContext methodReference_lf_primary() { + return getRuleContext(MethodReference_lf_primaryContext.class,0); + } + public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 364, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary); + try { + setState(1954); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1950); + classInstanceCreationExpression_lf_primary(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1951); + fieldAccess_lf_primary(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1952); + methodInvocation_lf_primary(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1953); + methodReference_lf_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lfno_primaryContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() { + return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0); + } + public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() { + return getRuleContext(FieldAccess_lfno_primaryContext.class,0); + } + public ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() { + return getRuleContext(ArrayAccess_lfno_primaryContext.class,0); + } + public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() { + return getRuleContext(MethodInvocation_lfno_primaryContext.class,0); + } + public MethodReference_lfno_primaryContext methodReference_lfno_primary() { + return getRuleContext(MethodReference_lfno_primaryContext.class,0); + } + public PrimaryNoNewArray_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 366, RULE_primaryNoNewArray_lfno_primary); + int _la; + try { + setState(1996); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1956); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1957); + typeName(); + setState(1962); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1958); + match(LBRACK); + setState(1959); + match(RBRACK); + } + } + setState(1964); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1965); + match(DOT); + setState(1966); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1968); + unannPrimitiveType(); + setState(1973); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1969); + match(LBRACK); + setState(1970); + match(RBRACK); + } + } + setState(1975); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1976); + match(DOT); + setState(1977); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1979); + match(VOID); + setState(1980); + match(DOT); + setState(1981); + match(CLASS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1982); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1983); + typeName(); + setState(1984); + match(DOT); + setState(1985); + match(THIS); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1987); + match(LPAREN); + setState(1988); + expression(); + setState(1989); + match(RPAREN); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1991); + classInstanceCreationExpression_lfno_primary(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1992); + fieldAccess_lfno_primary(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1993); + arrayAccess_lfno_primary(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(1994); + methodInvocation_lfno_primary(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(1995); + methodReference_lfno_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 368, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() { + return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0); + } + public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() { + return getRuleContext(FieldAccess_lfno_primaryContext.class,0); + } + public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() { + return getRuleContext(MethodInvocation_lfno_primaryContext.class,0); + } + public MethodReference_lfno_primaryContext methodReference_lfno_primary() { + return getRuleContext(MethodReference_lfno_primaryContext.class,0); + } + public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 370, RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary); + int _la; + try { + setState(2039); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2000); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2001); + typeName(); + setState(2006); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(2002); + match(LBRACK); + setState(2003); + match(RBRACK); + } + } + setState(2008); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2009); + match(DOT); + setState(2010); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2012); + unannPrimitiveType(); + setState(2017); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(2013); + match(LBRACK); + setState(2014); + match(RBRACK); + } + } + setState(2019); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2020); + match(DOT); + setState(2021); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2023); + match(VOID); + setState(2024); + match(DOT); + setState(2025); + match(CLASS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2026); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2027); + typeName(); + setState(2028); + match(DOT); + setState(2029); + match(THIS); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2031); + match(LPAREN); + setState(2032); + expression(); + setState(2033); + match(RPAREN); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2035); + classInstanceCreationExpression_lfno_primary(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(2036); + fieldAccess_lfno_primary(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(2037); + methodInvocation_lfno_primary(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(2038); + methodReference_lfno_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassInstanceCreationExpressionContext extends ParserRuleContext { + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ClassInstanceCreationExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression(this); + } + } + + public final ClassInstanceCreationExpressionContext classInstanceCreationExpression() throws RecognitionException { + ClassInstanceCreationExpressionContext _localctx = new ClassInstanceCreationExpressionContext(_ctx, getState()); + enterRule(_localctx, 372, RULE_classInstanceCreationExpression); + int _la; + try { + setState(2124); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,225,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2041); + match(NEW); + setState(2043); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2042); + typeArguments(); + } + } + + setState(2048); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2045); + annotation(); + } + } + setState(2050); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2051); + match(Identifier); + setState(2062); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(2052); + match(DOT); + setState(2056); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2053); + annotation(); + } + } + setState(2058); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2059); + match(Identifier); + } + } + setState(2064); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2066); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2065); + typeArgumentsOrDiamond(); + } + } + + setState(2068); + match(LPAREN); + setState(2070); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2069); + argumentList(); + } + } + + setState(2072); + match(RPAREN); + setState(2074); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2073); + classBody(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2076); + expressionName(); + setState(2077); + match(DOT); + setState(2078); + match(NEW); + setState(2080); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2079); + typeArguments(); + } + } + + setState(2085); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2082); + annotation(); + } + } + setState(2087); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2088); + match(Identifier); + setState(2090); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2089); + typeArgumentsOrDiamond(); + } + } + + setState(2092); + match(LPAREN); + setState(2094); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2093); + argumentList(); + } + } + + setState(2096); + match(RPAREN); + setState(2098); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2097); + classBody(); + } + } + + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2100); + primary(); + setState(2101); + match(DOT); + setState(2102); + match(NEW); + setState(2104); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2103); + typeArguments(); + } + } + + setState(2109); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2106); + annotation(); + } + } + setState(2111); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2112); + match(Identifier); + setState(2114); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2113); + typeArgumentsOrDiamond(); + } + } + + setState(2116); + match(LPAREN); + setState(2118); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2117); + argumentList(); + } + } + + setState(2120); + match(RPAREN); + setState(2122); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2121); + classBody(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassInstanceCreationExpression_lf_primaryContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ClassInstanceCreationExpression_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lf_primary(this); + } + } + + public final ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() throws RecognitionException { + ClassInstanceCreationExpression_lf_primaryContext _localctx = new ClassInstanceCreationExpression_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 374, RULE_classInstanceCreationExpression_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2126); + match(DOT); + setState(2127); + match(NEW); + setState(2129); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2128); + typeArguments(); + } + } + + setState(2134); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2131); + annotation(); + } + } + setState(2136); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2137); + match(Identifier); + setState(2139); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2138); + typeArgumentsOrDiamond(); + } + } + + setState(2141); + match(LPAREN); + setState(2143); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2142); + argumentList(); + } + } + + setState(2145); + match(RPAREN); + setState(2147); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,230,_ctx) ) { + case 1: + { + setState(2146); + classBody(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassInstanceCreationExpression_lfno_primaryContext extends ParserRuleContext { + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public ClassInstanceCreationExpression_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lfno_primary(this); + } + } + + public final ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() throws RecognitionException { + ClassInstanceCreationExpression_lfno_primaryContext _localctx = new ClassInstanceCreationExpression_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 376, RULE_classInstanceCreationExpression_lfno_primary); + int _la; + try { + setState(2208); + switch (_input.LA(1)) { + case NEW: + enterOuterAlt(_localctx, 1); + { + setState(2149); + match(NEW); + setState(2151); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2150); + typeArguments(); + } + } + + setState(2156); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2153); + annotation(); + } + } + setState(2158); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2159); + match(Identifier); + setState(2170); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(2160); + match(DOT); + setState(2164); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2161); + annotation(); + } + } + setState(2166); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2167); + match(Identifier); + } + } + setState(2172); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2174); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2173); + typeArgumentsOrDiamond(); + } + } + + setState(2176); + match(LPAREN); + setState(2178); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2177); + argumentList(); + } + } + + setState(2180); + match(RPAREN); + setState(2182); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) { + case 1: + { + setState(2181); + classBody(); + } + break; + } + } + break; + case Identifier: + enterOuterAlt(_localctx, 2); + { + setState(2184); + expressionName(); + setState(2185); + match(DOT); + setState(2186); + match(NEW); + setState(2188); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2187); + typeArguments(); + } + } + + setState(2193); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2190); + annotation(); + } + } + setState(2195); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2196); + match(Identifier); + setState(2198); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2197); + typeArgumentsOrDiamond(); + } + } + + setState(2200); + match(LPAREN); + setState(2202); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2201); + argumentList(); + } + } + + setState(2204); + match(RPAREN); + setState(2206); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) { + case 1: + { + setState(2205); + classBody(); + } + break; + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeArgumentsOrDiamondContext extends ParserRuleContext { + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public TypeArgumentsOrDiamondContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArgumentsOrDiamond; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgumentsOrDiamond(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentsOrDiamond(this); + } + } + + public final TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() throws RecognitionException { + TypeArgumentsOrDiamondContext _localctx = new TypeArgumentsOrDiamondContext(_ctx, getState()); + enterRule(_localctx, 378, RULE_typeArgumentsOrDiamond); + try { + setState(2213); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2210); + typeArguments(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2211); + match(LT); + setState(2212); + match(GT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldAccessContext extends ParserRuleContext { + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public FieldAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess(this); + } + } + + public final FieldAccessContext fieldAccess() throws RecognitionException { + FieldAccessContext _localctx = new FieldAccessContext(_ctx, getState()); + enterRule(_localctx, 380, RULE_fieldAccess); + try { + setState(2228); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2215); + primary(); + setState(2216); + match(DOT); + setState(2217); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2219); + match(SUPER); + setState(2220); + match(DOT); + setState(2221); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2222); + typeName(); + setState(2223); + match(DOT); + setState(2224); + match(SUPER); + setState(2225); + match(DOT); + setState(2226); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldAccess_lf_primaryContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public FieldAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lf_primary(this); + } + } + + public final FieldAccess_lf_primaryContext fieldAccess_lf_primary() throws RecognitionException { + FieldAccess_lf_primaryContext _localctx = new FieldAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 382, RULE_fieldAccess_lf_primary); + try { + enterOuterAlt(_localctx, 1); + { + setState(2230); + match(DOT); + setState(2231); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldAccess_lfno_primaryContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public FieldAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lfno_primary(this); + } + } + + public final FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() throws RecognitionException { + FieldAccess_lfno_primaryContext _localctx = new FieldAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 384, RULE_fieldAccess_lfno_primary); + try { + setState(2242); + switch (_input.LA(1)) { + case SUPER: + enterOuterAlt(_localctx, 1); + { + setState(2233); + match(SUPER); + setState(2234); + match(DOT); + setState(2235); + match(Identifier); + } + break; + case Identifier: + enterOuterAlt(_localctx, 2); + { + setState(2236); + typeName(); + setState(2237); + match(DOT); + setState(2238); + match(SUPER); + setState(2239); + match(DOT); + setState(2240); + match(Identifier); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayAccessContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() { + return getRuleContext(PrimaryNoNewArray_lfno_arrayAccessContext.class,0); + } + public List primaryNoNewArray_lf_arrayAccess() { + return getRuleContexts(PrimaryNoNewArray_lf_arrayAccessContext.class); + } + public PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess(int i) { + return getRuleContext(PrimaryNoNewArray_lf_arrayAccessContext.class,i); + } + public ArrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess(this); + } + } + + public final ArrayAccessContext arrayAccess() throws RecognitionException { + ArrayAccessContext _localctx = new ArrayAccessContext(_ctx, getState()); + enterRule(_localctx, 386, RULE_arrayAccess); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2254); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) { + case 1: + { + setState(2244); + expressionName(); + setState(2245); + match(LBRACK); + setState(2246); + expression(); + setState(2247); + match(RBRACK); + } + break; + case 2: + { + setState(2249); + primaryNoNewArray_lfno_arrayAccess(); + setState(2250); + match(LBRACK); + setState(2251); + expression(); + setState(2252); + match(RBRACK); + } + break; + } + setState(2263); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(2256); + primaryNoNewArray_lf_arrayAccess(); + setState(2257); + match(LBRACK); + setState(2258); + expression(); + setState(2259); + match(RBRACK); + } + } + setState(2265); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayAccess_lf_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() { + return getRuleContext(PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() { + return getRuleContexts(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class); + } + public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class,i); + } + public ArrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lf_primary(this); + } + } + + public final ArrayAccess_lf_primaryContext arrayAccess_lf_primary() throws RecognitionException { + ArrayAccess_lf_primaryContext _localctx = new ArrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 388, RULE_arrayAccess_lf_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2266); + primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(); + setState(2267); + match(LBRACK); + setState(2268); + expression(); + setState(2269); + match(RBRACK); + } + setState(2278); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,249,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2271); + primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(); + setState(2272); + match(LBRACK); + setState(2273); + expression(); + setState(2274); + match(RBRACK); + } + } + } + setState(2280); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,249,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayAccess_lfno_primaryContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() { + return getRuleContext(PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext.class,0); + } + public List primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() { + return getRuleContexts(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class); + } + public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class,i); + } + public ArrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lfno_primary(this); + } + } + + public final ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() throws RecognitionException { + ArrayAccess_lfno_primaryContext _localctx = new ArrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 390, RULE_arrayAccess_lfno_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2291); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,250,_ctx) ) { + case 1: + { + setState(2281); + expressionName(); + setState(2282); + match(LBRACK); + setState(2283); + expression(); + setState(2284); + match(RBRACK); + } + break; + case 2: + { + setState(2286); + primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(); + setState(2287); + match(LBRACK); + setState(2288); + expression(); + setState(2289); + match(RBRACK); + } + break; + } + setState(2300); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,251,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2293); + primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(); + setState(2294); + match(LBRACK); + setState(2295); + expression(); + setState(2296); + match(RBRACK); + } + } + } + setState(2302); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,251,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodInvocationContext extends ParserRuleContext { + public MethodNameContext methodName() { + return getRuleContext(MethodNameContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public MethodInvocationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation(this); + } + } + + public final MethodInvocationContext methodInvocation() throws RecognitionException { + MethodInvocationContext _localctx = new MethodInvocationContext(_ctx, getState()); + enterRule(_localctx, 392, RULE_methodInvocation); + int _la; + try { + setState(2371); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,263,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2303); + methodName(); + setState(2304); + match(LPAREN); + setState(2306); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2305); + argumentList(); + } + } + + setState(2308); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2310); + typeName(); + setState(2311); + match(DOT); + setState(2313); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2312); + typeArguments(); + } + } + + setState(2315); + match(Identifier); + setState(2316); + match(LPAREN); + setState(2318); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2317); + argumentList(); + } + } + + setState(2320); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2322); + expressionName(); + setState(2323); + match(DOT); + setState(2325); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2324); + typeArguments(); + } + } + + setState(2327); + match(Identifier); + setState(2328); + match(LPAREN); + setState(2330); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2329); + argumentList(); + } + } + + setState(2332); + match(RPAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2334); + primary(); + setState(2335); + match(DOT); + setState(2337); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2336); + typeArguments(); + } + } + + setState(2339); + match(Identifier); + setState(2340); + match(LPAREN); + setState(2342); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2341); + argumentList(); + } + } + + setState(2344); + match(RPAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2346); + match(SUPER); + setState(2347); + match(DOT); + setState(2349); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2348); + typeArguments(); + } + } + + setState(2351); + match(Identifier); + setState(2352); + match(LPAREN); + setState(2354); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2353); + argumentList(); + } + } + + setState(2356); + match(RPAREN); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2357); + typeName(); + setState(2358); + match(DOT); + setState(2359); + match(SUPER); + setState(2360); + match(DOT); + setState(2362); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2361); + typeArguments(); + } + } + + setState(2364); + match(Identifier); + setState(2365); + match(LPAREN); + setState(2367); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2366); + argumentList(); + } + } + + setState(2369); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodInvocation_lf_primaryContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public MethodInvocation_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lf_primary(this); + } + } + + public final MethodInvocation_lf_primaryContext methodInvocation_lf_primary() throws RecognitionException { + MethodInvocation_lf_primaryContext _localctx = new MethodInvocation_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 394, RULE_methodInvocation_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2373); + match(DOT); + setState(2375); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2374); + typeArguments(); + } + } + + setState(2377); + match(Identifier); + setState(2378); + match(LPAREN); + setState(2380); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2379); + argumentList(); + } + } + + setState(2382); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodInvocation_lfno_primaryContext extends ParserRuleContext { + public MethodNameContext methodName() { + return getRuleContext(MethodNameContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public MethodInvocation_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lfno_primary(this); + } + } + + public final MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() throws RecognitionException { + MethodInvocation_lfno_primaryContext _localctx = new MethodInvocation_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 396, RULE_methodInvocation_lfno_primary); + int _la; + try { + setState(2440); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,275,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2384); + methodName(); + setState(2385); + match(LPAREN); + setState(2387); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2386); + argumentList(); + } + } + + setState(2389); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2391); + typeName(); + setState(2392); + match(DOT); + setState(2394); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2393); + typeArguments(); + } + } + + setState(2396); + match(Identifier); + setState(2397); + match(LPAREN); + setState(2399); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2398); + argumentList(); + } + } + + setState(2401); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2403); + expressionName(); + setState(2404); + match(DOT); + setState(2406); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2405); + typeArguments(); + } + } + + setState(2408); + match(Identifier); + setState(2409); + match(LPAREN); + setState(2411); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2410); + argumentList(); + } + } + + setState(2413); + match(RPAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2415); + match(SUPER); + setState(2416); + match(DOT); + setState(2418); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2417); + typeArguments(); + } + } + + setState(2420); + match(Identifier); + setState(2421); + match(LPAREN); + setState(2423); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2422); + argumentList(); + } + } + + setState(2425); + match(RPAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2426); + typeName(); + setState(2427); + match(DOT); + setState(2428); + match(SUPER); + setState(2429); + match(DOT); + setState(2431); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2430); + typeArguments(); + } + } + + setState(2433); + match(Identifier); + setState(2434); + match(LPAREN); + setState(2436); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + { + setState(2435); + argumentList(); + } + } + + setState(2438); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArgumentListContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ArgumentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argumentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArgumentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArgumentList(this); + } + } + + public final ArgumentListContext argumentList() throws RecognitionException { + ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState()); + enterRule(_localctx, 398, RULE_argumentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2442); + expression(); + setState(2447); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2443); + match(COMMA); + setState(2444); + expression(); + } + } + setState(2449); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodReferenceContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public MethodReferenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference(this); + } + } + + public final MethodReferenceContext methodReference() throws RecognitionException { + MethodReferenceContext _localctx = new MethodReferenceContext(_ctx, getState()); + enterRule(_localctx, 400, RULE_methodReference); + int _la; + try { + setState(2497); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,283,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2450); + expressionName(); + setState(2451); + match(COLONCOLON); + setState(2453); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2452); + typeArguments(); + } + } + + setState(2455); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2457); + referenceType(); + setState(2458); + match(COLONCOLON); + setState(2460); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2459); + typeArguments(); + } + } + + setState(2462); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2464); + primary(); + setState(2465); + match(COLONCOLON); + setState(2467); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2466); + typeArguments(); + } + } + + setState(2469); + match(Identifier); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2471); + match(SUPER); + setState(2472); + match(COLONCOLON); + setState(2474); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2473); + typeArguments(); + } + } + + setState(2476); + match(Identifier); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2477); + typeName(); + setState(2478); + match(DOT); + setState(2479); + match(SUPER); + setState(2480); + match(COLONCOLON); + setState(2482); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2481); + typeArguments(); + } + } + + setState(2484); + match(Identifier); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2486); + classType(); + setState(2487); + match(COLONCOLON); + setState(2489); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2488); + typeArguments(); + } + } + + setState(2491); + match(NEW); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2493); + arrayType(); + setState(2494); + match(COLONCOLON); + setState(2495); + match(NEW); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodReference_lf_primaryContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public MethodReference_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lf_primary(this); + } + } + + public final MethodReference_lf_primaryContext methodReference_lf_primary() throws RecognitionException { + MethodReference_lf_primaryContext _localctx = new MethodReference_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 402, RULE_methodReference_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2499); + match(COLONCOLON); + setState(2501); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2500); + typeArguments(); + } + } + + setState(2503); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodReference_lfno_primaryContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public MethodReference_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lfno_primary(this); + } + } + + public final MethodReference_lfno_primaryContext methodReference_lfno_primary() throws RecognitionException { + MethodReference_lfno_primaryContext _localctx = new MethodReference_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 404, RULE_methodReference_lfno_primary); + int _la; + try { + setState(2545); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2505); + expressionName(); + setState(2506); + match(COLONCOLON); + setState(2508); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2507); + typeArguments(); + } + } + + setState(2510); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2512); + referenceType(); + setState(2513); + match(COLONCOLON); + setState(2515); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2514); + typeArguments(); + } + } + + setState(2517); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2519); + match(SUPER); + setState(2520); + match(COLONCOLON); + setState(2522); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2521); + typeArguments(); + } + } + + setState(2524); + match(Identifier); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2525); + typeName(); + setState(2526); + match(DOT); + setState(2527); + match(SUPER); + setState(2528); + match(COLONCOLON); + setState(2530); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2529); + typeArguments(); + } + } + + setState(2532); + match(Identifier); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2534); + classType(); + setState(2535); + match(COLONCOLON); + setState(2537); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2536); + typeArguments(); + } + } + + setState(2539); + match(NEW); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2541); + arrayType(); + setState(2542); + match(COLONCOLON); + setState(2543); + match(NEW); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayCreationExpressionContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public DimExprsContext dimExprs() { + return getRuleContext(DimExprsContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public ArrayInitializerContext arrayInitializer() { + return getRuleContext(ArrayInitializerContext.class,0); + } + public ArrayCreationExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayCreationExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayCreationExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayCreationExpression(this); + } + } + + public final ArrayCreationExpressionContext arrayCreationExpression() throws RecognitionException { + ArrayCreationExpressionContext _localctx = new ArrayCreationExpressionContext(_ctx, getState()); + enterRule(_localctx, 406, RULE_arrayCreationExpression); + try { + setState(2569); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,293,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2547); + match(NEW); + setState(2548); + primitiveType(); + setState(2549); + dimExprs(); + setState(2551); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) { + case 1: + { + setState(2550); + dims(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2553); + match(NEW); + setState(2554); + classOrInterfaceType(); + setState(2555); + dimExprs(); + setState(2557); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,292,_ctx) ) { + case 1: + { + setState(2556); + dims(); + } + break; + } + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2559); + match(NEW); + setState(2560); + primitiveType(); + setState(2561); + dims(); + setState(2562); + arrayInitializer(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2564); + match(NEW); + setState(2565); + classOrInterfaceType(); + setState(2566); + dims(); + setState(2567); + arrayInitializer(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DimExprsContext extends ParserRuleContext { + public List dimExpr() { + return getRuleContexts(DimExprContext.class); + } + public DimExprContext dimExpr(int i) { + return getRuleContext(DimExprContext.class,i); + } + public DimExprsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dimExprs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExprs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExprs(this); + } + } + + public final DimExprsContext dimExprs() throws RecognitionException { + DimExprsContext _localctx = new DimExprsContext(_ctx, getState()); + enterRule(_localctx, 408, RULE_dimExprs); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2571); + dimExpr(); + setState(2575); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,294,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2572); + dimExpr(); + } + } + } + setState(2577); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,294,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DimExprContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public DimExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dimExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExpr(this); + } + } + + public final DimExprContext dimExpr() throws RecognitionException { + DimExprContext _localctx = new DimExprContext(_ctx, getState()); + enterRule(_localctx, 410, RULE_dimExpr); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2581); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2578); + annotation(); + } + } + setState(2583); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2584); + match(LBRACK); + setState(2585); + expression(); + setState(2586); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantExpressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ConstantExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantExpression(this); + } + } + + public final ConstantExpressionContext constantExpression() throws RecognitionException { + ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, getState()); + enterRule(_localctx, 412, RULE_constantExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2588); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public LambdaExpressionContext lambdaExpression() { + return getRuleContext(LambdaExpressionContext.class,0); + } + public AssignmentExpressionContext assignmentExpression() { + return getRuleContext(AssignmentExpressionContext.class,0); + } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 414, RULE_expression); + try { + setState(2592); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,296,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2590); + lambdaExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2591); + assignmentExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaExpressionContext extends ParserRuleContext { + public LambdaParametersContext lambdaParameters() { + return getRuleContext(LambdaParametersContext.class,0); + } + public LambdaBodyContext lambdaBody() { + return getRuleContext(LambdaBodyContext.class,0); + } + public LambdaExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaExpression(this); + } + } + + public final LambdaExpressionContext lambdaExpression() throws RecognitionException { + LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState()); + enterRule(_localctx, 416, RULE_lambdaExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2594); + lambdaParameters(); + setState(2595); + match(ARROW); + setState(2596); + lambdaBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaParametersContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public InferredFormalParameterListContext inferredFormalParameterList() { + return getRuleContext(InferredFormalParameterListContext.class,0); + } + public LambdaParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaParameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaParameters(this); + } + } + + public final LambdaParametersContext lambdaParameters() throws RecognitionException { + LambdaParametersContext _localctx = new LambdaParametersContext(_ctx, getState()); + enterRule(_localctx, 418, RULE_lambdaParameters); + int _la; + try { + setState(2608); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2598); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2599); + match(LPAREN); + setState(2601); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { + { + setState(2600); + formalParameterList(); + } + } + + setState(2603); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2604); + match(LPAREN); + setState(2605); + inferredFormalParameterList(); + setState(2606); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InferredFormalParameterListContext extends ParserRuleContext { + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public InferredFormalParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inferredFormalParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInferredFormalParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInferredFormalParameterList(this); + } + } + + public final InferredFormalParameterListContext inferredFormalParameterList() throws RecognitionException { + InferredFormalParameterListContext _localctx = new InferredFormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 420, RULE_inferredFormalParameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2610); + match(Identifier); + setState(2615); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2611); + match(COMMA); + setState(2612); + match(Identifier); + } + } + setState(2617); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaBodyContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public LambdaBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaBody(this); + } + } + + public final LambdaBodyContext lambdaBody() throws RecognitionException { + LambdaBodyContext _localctx = new LambdaBodyContext(_ctx, getState()); + enterRule(_localctx, 422, RULE_lambdaBody); + try { + setState(2620); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case INC: + case DEC: + case ADD: + case SUB: + case Identifier: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(2618); + expression(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(2619); + block(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentExpressionContext extends ParserRuleContext { + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public AssignmentExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentExpression(this); + } + } + + public final AssignmentExpressionContext assignmentExpression() throws RecognitionException { + AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState()); + enterRule(_localctx, 424, RULE_assignmentExpression); + try { + setState(2624); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,301,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2622); + conditionalExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2623); + assignment(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentContext extends ParserRuleContext { + public LeftHandSideContext leftHandSide() { + return getRuleContext(LeftHandSideContext.class,0); + } + public AssignmentOperatorContext assignmentOperator() { + return getRuleContext(AssignmentOperatorContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignment(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 426, RULE_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(2626); + leftHandSide(); + setState(2627); + assignmentOperator(); + setState(2628); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LeftHandSideContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public ArrayAccessContext arrayAccess() { + return getRuleContext(ArrayAccessContext.class,0); + } + public LeftHandSideContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_leftHandSide; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLeftHandSide(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLeftHandSide(this); + } + } + + public final LeftHandSideContext leftHandSide() throws RecognitionException { + LeftHandSideContext _localctx = new LeftHandSideContext(_ctx, getState()); + enterRule(_localctx, 428, RULE_leftHandSide); + try { + setState(2633); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,302,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2630); + expressionName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2631); + fieldAccess(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2632); + arrayAccess(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentOperatorContext extends ParserRuleContext { + public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentOperator(this); + } + } + + public final AssignmentOperatorContext assignmentOperator() throws RecognitionException { + AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState()); + enterRule(_localctx, 430, RULE_assignmentOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2635); + _la = _input.LA(1); + if ( !(((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (ASSIGN - 66)) | (1L << (ADD_ASSIGN - 66)) | (1L << (SUB_ASSIGN - 66)) | (1L << (MUL_ASSIGN - 66)) | (1L << (DIV_ASSIGN - 66)) | (1L << (AND_ASSIGN - 66)) | (1L << (OR_ASSIGN - 66)) | (1L << (XOR_ASSIGN - 66)) | (1L << (MOD_ASSIGN - 66)) | (1L << (LSHIFT_ASSIGN - 66)) | (1L << (RSHIFT_ASSIGN - 66)) | (1L << (URSHIFT_ASSIGN - 66)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionalExpressionContext extends ParserRuleContext { + public ConditionalOrExpressionContext conditionalOrExpression() { + return getRuleContext(ConditionalOrExpressionContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public ConditionalExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalExpression(this); + } + } + + public final ConditionalExpressionContext conditionalExpression() throws RecognitionException { + ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState()); + enterRule(_localctx, 432, RULE_conditionalExpression); + try { + setState(2644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,303,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2637); + conditionalOrExpression(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2638); + conditionalOrExpression(0); + setState(2639); + match(QUESTION); + setState(2640); + expression(); + setState(2641); + match(COLON); + setState(2642); + conditionalExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionalOrExpressionContext extends ParserRuleContext { + public ConditionalAndExpressionContext conditionalAndExpression() { + return getRuleContext(ConditionalAndExpressionContext.class,0); + } + public ConditionalOrExpressionContext conditionalOrExpression() { + return getRuleContext(ConditionalOrExpressionContext.class,0); + } + public ConditionalOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalOrExpression(this); + } + } + + public final ConditionalOrExpressionContext conditionalOrExpression() throws RecognitionException { + return conditionalOrExpression(0); + } + + private ConditionalOrExpressionContext conditionalOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ConditionalOrExpressionContext _localctx = new ConditionalOrExpressionContext(_ctx, _parentState); + ConditionalOrExpressionContext _prevctx = _localctx; + int _startState = 434; + enterRecursionRule(_localctx, 434, RULE_conditionalOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2647); + conditionalAndExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2654); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,304,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ConditionalOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_conditionalOrExpression); + setState(2649); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2650); + match(OR); + setState(2651); + conditionalAndExpression(0); + } + } + } + setState(2656); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,304,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ConditionalAndExpressionContext extends ParserRuleContext { + public InclusiveOrExpressionContext inclusiveOrExpression() { + return getRuleContext(InclusiveOrExpressionContext.class,0); + } + public ConditionalAndExpressionContext conditionalAndExpression() { + return getRuleContext(ConditionalAndExpressionContext.class,0); + } + public ConditionalAndExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalAndExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalAndExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalAndExpression(this); + } + } + + public final ConditionalAndExpressionContext conditionalAndExpression() throws RecognitionException { + return conditionalAndExpression(0); + } + + private ConditionalAndExpressionContext conditionalAndExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ConditionalAndExpressionContext _localctx = new ConditionalAndExpressionContext(_ctx, _parentState); + ConditionalAndExpressionContext _prevctx = _localctx; + int _startState = 436; + enterRecursionRule(_localctx, 436, RULE_conditionalAndExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2658); + inclusiveOrExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2665); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ConditionalAndExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_conditionalAndExpression); + setState(2660); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2661); + match(AND); + setState(2662); + inclusiveOrExpression(0); + } + } + } + setState(2667); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class InclusiveOrExpressionContext extends ParserRuleContext { + public ExclusiveOrExpressionContext exclusiveOrExpression() { + return getRuleContext(ExclusiveOrExpressionContext.class,0); + } + public InclusiveOrExpressionContext inclusiveOrExpression() { + return getRuleContext(InclusiveOrExpressionContext.class,0); + } + public InclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inclusiveOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInclusiveOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInclusiveOrExpression(this); + } + } + + public final InclusiveOrExpressionContext inclusiveOrExpression() throws RecognitionException { + return inclusiveOrExpression(0); + } + + private InclusiveOrExpressionContext inclusiveOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + InclusiveOrExpressionContext _localctx = new InclusiveOrExpressionContext(_ctx, _parentState); + InclusiveOrExpressionContext _prevctx = _localctx; + int _startState = 438; + enterRecursionRule(_localctx, 438, RULE_inclusiveOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2669); + exclusiveOrExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2676); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,306,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new InclusiveOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_inclusiveOrExpression); + setState(2671); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2672); + match(BITOR); + setState(2673); + exclusiveOrExpression(0); + } + } + } + setState(2678); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,306,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ExclusiveOrExpressionContext extends ParserRuleContext { + public AndExpressionContext andExpression() { + return getRuleContext(AndExpressionContext.class,0); + } + public ExclusiveOrExpressionContext exclusiveOrExpression() { + return getRuleContext(ExclusiveOrExpressionContext.class,0); + } + public ExclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exclusiveOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExclusiveOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExclusiveOrExpression(this); + } + } + + public final ExclusiveOrExpressionContext exclusiveOrExpression() throws RecognitionException { + return exclusiveOrExpression(0); + } + + private ExclusiveOrExpressionContext exclusiveOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExclusiveOrExpressionContext _localctx = new ExclusiveOrExpressionContext(_ctx, _parentState); + ExclusiveOrExpressionContext _prevctx = _localctx; + int _startState = 440; + enterRecursionRule(_localctx, 440, RULE_exclusiveOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2680); + andExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2687); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ExclusiveOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_exclusiveOrExpression); + setState(2682); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2683); + match(CARET); + setState(2684); + andExpression(0); + } + } + } + setState(2689); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class AndExpressionContext extends ParserRuleContext { + public EqualityExpressionContext equalityExpression() { + return getRuleContext(EqualityExpressionContext.class,0); + } + public AndExpressionContext andExpression() { + return getRuleContext(AndExpressionContext.class,0); + } + public AndExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_andExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAndExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAndExpression(this); + } + } + + public final AndExpressionContext andExpression() throws RecognitionException { + return andExpression(0); + } + + private AndExpressionContext andExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AndExpressionContext _localctx = new AndExpressionContext(_ctx, _parentState); + AndExpressionContext _prevctx = _localctx; + int _startState = 442; + enterRecursionRule(_localctx, 442, RULE_andExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2691); + equalityExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2698); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,308,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new AndExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_andExpression); + setState(2693); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2694); + match(BITAND); + setState(2695); + equalityExpression(0); + } + } + } + setState(2700); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,308,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class EqualityExpressionContext extends ParserRuleContext { + public RelationalExpressionContext relationalExpression() { + return getRuleContext(RelationalExpressionContext.class,0); + } + public EqualityExpressionContext equalityExpression() { + return getRuleContext(EqualityExpressionContext.class,0); + } + public EqualityExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_equalityExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEqualityExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEqualityExpression(this); + } + } + + public final EqualityExpressionContext equalityExpression() throws RecognitionException { + return equalityExpression(0); + } + + private EqualityExpressionContext equalityExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, _parentState); + EqualityExpressionContext _prevctx = _localctx; + int _startState = 444; + enterRecursionRule(_localctx, 444, RULE_equalityExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2702); + relationalExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2712); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,310,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2710); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,309,_ctx) ) { + case 1: + { + _localctx = new EqualityExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); + setState(2704); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2705); + match(EQUAL); + setState(2706); + relationalExpression(0); + } + break; + case 2: + { + _localctx = new EqualityExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); + setState(2707); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2708); + match(NOTEQUAL); + setState(2709); + relationalExpression(0); + } + break; + } + } + } + setState(2714); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,310,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class RelationalExpressionContext extends ParserRuleContext { + public ShiftExpressionContext shiftExpression() { + return getRuleContext(ShiftExpressionContext.class,0); + } + public RelationalExpressionContext relationalExpression() { + return getRuleContext(RelationalExpressionContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public RelationalExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationalExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterRelationalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitRelationalExpression(this); + } + } + + public final RelationalExpressionContext relationalExpression() throws RecognitionException { + return relationalExpression(0); + } + + private RelationalExpressionContext relationalExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, _parentState); + RelationalExpressionContext _prevctx = _localctx; + int _startState = 446; + enterRecursionRule(_localctx, 446, RULE_relationalExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2716); + shiftExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2735); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,312,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2733); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) { + case 1: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2718); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(2719); + match(LT); + setState(2720); + shiftExpression(0); + } + break; + case 2: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2721); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(2722); + match(GT); + setState(2723); + shiftExpression(0); + } + break; + case 3: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2724); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2725); + match(LE); + setState(2726); + shiftExpression(0); + } + break; + case 4: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2727); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2728); + match(GE); + setState(2729); + shiftExpression(0); + } + break; + case 5: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2730); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2731); + match(INSTANCEOF); + setState(2732); + referenceType(); + } + break; + } + } + } + setState(2737); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,312,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ShiftExpressionContext extends ParserRuleContext { + public AdditiveExpressionContext additiveExpression() { + return getRuleContext(AdditiveExpressionContext.class,0); + } + public ShiftExpressionContext shiftExpression() { + return getRuleContext(ShiftExpressionContext.class,0); + } + public ShiftExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_shiftExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterShiftExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitShiftExpression(this); + } + } + + public final ShiftExpressionContext shiftExpression() throws RecognitionException { + return shiftExpression(0); + } + + private ShiftExpressionContext shiftExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, _parentState); + ShiftExpressionContext _prevctx = _localctx; + int _startState = 448; + enterRecursionRule(_localctx, 448, RULE_shiftExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2739); + additiveExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2756); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,314,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2754); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,313,_ctx) ) { + case 1: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2741); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2742); + match(LT); + setState(2743); + match(LT); + setState(2744); + additiveExpression(0); + } + break; + case 2: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2745); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2746); + match(GT); + setState(2747); + match(GT); + setState(2748); + additiveExpression(0); + } + break; + case 3: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2749); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2750); + match(GT); + setState(2751); + match(GT); + setState(2752); + match(GT); + setState(2753); + additiveExpression(0); + } + break; + } + } + } + setState(2758); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,314,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class AdditiveExpressionContext extends ParserRuleContext { + public MultiplicativeExpressionContext multiplicativeExpression() { + return getRuleContext(MultiplicativeExpressionContext.class,0); + } + public AdditiveExpressionContext additiveExpression() { + return getRuleContext(AdditiveExpressionContext.class,0); + } + public AdditiveExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_additiveExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditiveExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditiveExpression(this); + } + } + + public final AdditiveExpressionContext additiveExpression() throws RecognitionException { + return additiveExpression(0); + } + + private AdditiveExpressionContext additiveExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, _parentState); + AdditiveExpressionContext _prevctx = _localctx; + int _startState = 450; + enterRecursionRule(_localctx, 450, RULE_additiveExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2760); + multiplicativeExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2770); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,316,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2768); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,315,_ctx) ) { + case 1: + { + _localctx = new AdditiveExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); + setState(2762); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2763); + match(ADD); + setState(2764); + multiplicativeExpression(0); + } + break; + case 2: + { + _localctx = new AdditiveExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); + setState(2765); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2766); + match(SUB); + setState(2767); + multiplicativeExpression(0); + } + break; + } + } + } + setState(2772); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,316,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class MultiplicativeExpressionContext extends ParserRuleContext { + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public MultiplicativeExpressionContext multiplicativeExpression() { + return getRuleContext(MultiplicativeExpressionContext.class,0); + } + public MultiplicativeExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiplicativeExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMultiplicativeExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMultiplicativeExpression(this); + } + } + + public final MultiplicativeExpressionContext multiplicativeExpression() throws RecognitionException { + return multiplicativeExpression(0); + } + + private MultiplicativeExpressionContext multiplicativeExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, _parentState); + MultiplicativeExpressionContext _prevctx = _localctx; + int _startState = 452; + enterRecursionRule(_localctx, 452, RULE_multiplicativeExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2774); + unaryExpression(); + } + _ctx.stop = _input.LT(-1); + setState(2787); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,318,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2785); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) { + case 1: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2776); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2777); + match(MUL); + setState(2778); + unaryExpression(); + } + break; + case 2: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2779); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2780); + match(DIV); + setState(2781); + unaryExpression(); + } + break; + case 3: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2782); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2783); + match(MOD); + setState(2784); + unaryExpression(); + } + break; + } + } + } + setState(2789); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,318,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class UnaryExpressionContext extends ParserRuleContext { + public PreIncrementExpressionContext preIncrementExpression() { + return getRuleContext(PreIncrementExpressionContext.class,0); + } + public PreDecrementExpressionContext preDecrementExpression() { + return getRuleContext(PreDecrementExpressionContext.class,0); + } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() { + return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0); + } + public UnaryExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpression(this); + } + } + + public final UnaryExpressionContext unaryExpression() throws RecognitionException { + UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState()); + enterRule(_localctx, 454, RULE_unaryExpression); + try { + setState(2797); + switch (_input.LA(1)) { + case INC: + enterOuterAlt(_localctx, 1); + { + setState(2790); + preIncrementExpression(); + } + break; + case DEC: + enterOuterAlt(_localctx, 2); + { + setState(2791); + preDecrementExpression(); + } + break; + case ADD: + enterOuterAlt(_localctx, 3); + { + setState(2792); + match(ADD); + setState(2793); + unaryExpression(); + } + break; + case SUB: + enterOuterAlt(_localctx, 4); + { + setState(2794); + match(SUB); + setState(2795); + unaryExpression(); + } + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case Identifier: + case AT: + enterOuterAlt(_localctx, 5); + { + setState(2796); + unaryExpressionNotPlusMinus(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PreIncrementExpressionContext extends ParserRuleContext { + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public PreIncrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_preIncrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreIncrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreIncrementExpression(this); + } + } + + public final PreIncrementExpressionContext preIncrementExpression() throws RecognitionException { + PreIncrementExpressionContext _localctx = new PreIncrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 456, RULE_preIncrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2799); + match(INC); + setState(2800); + unaryExpression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PreDecrementExpressionContext extends ParserRuleContext { + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public PreDecrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_preDecrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreDecrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreDecrementExpression(this); + } + } + + public final PreDecrementExpressionContext preDecrementExpression() throws RecognitionException { + PreDecrementExpressionContext _localctx = new PreDecrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 458, RULE_preDecrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2802); + match(DEC); + setState(2803); + unaryExpression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnaryExpressionNotPlusMinusContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public CastExpressionContext castExpression() { + return getRuleContext(CastExpressionContext.class,0); + } + public UnaryExpressionNotPlusMinusContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryExpressionNotPlusMinus; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpressionNotPlusMinus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpressionNotPlusMinus(this); + } + } + + public final UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() throws RecognitionException { + UnaryExpressionNotPlusMinusContext _localctx = new UnaryExpressionNotPlusMinusContext(_ctx, getState()); + enterRule(_localctx, 460, RULE_unaryExpressionNotPlusMinus); + try { + setState(2811); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,320,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2805); + postfixExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2806); + match(TILDE); + setState(2807); + unaryExpression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2808); + match(BANG); + setState(2809); + unaryExpression(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2810); + castExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PostfixExpressionContext extends ParserRuleContext { + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List postIncrementExpression_lf_postfixExpression() { + return getRuleContexts(PostIncrementExpression_lf_postfixExpressionContext.class); + } + public PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression(int i) { + return getRuleContext(PostIncrementExpression_lf_postfixExpressionContext.class,i); + } + public List postDecrementExpression_lf_postfixExpression() { + return getRuleContexts(PostDecrementExpression_lf_postfixExpressionContext.class); + } + public PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression(int i) { + return getRuleContext(PostDecrementExpression_lf_postfixExpressionContext.class,i); + } + public PostfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostfixExpression(this); + } + } + + public final PostfixExpressionContext postfixExpression() throws RecognitionException { + PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 462, RULE_postfixExpression); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2815); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,321,_ctx) ) { + case 1: + { + setState(2813); + primary(); + } + break; + case 2: + { + setState(2814); + expressionName(); + } + break; + } + setState(2821); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,323,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(2819); + switch (_input.LA(1)) { + case INC: + { + setState(2817); + postIncrementExpression_lf_postfixExpression(); + } + break; + case DEC: + { + setState(2818); + postDecrementExpression_lf_postfixExpression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + setState(2823); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,323,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PostIncrementExpressionContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public PostIncrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postIncrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression(this); + } + } + + public final PostIncrementExpressionContext postIncrementExpression() throws RecognitionException { + PostIncrementExpressionContext _localctx = new PostIncrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 464, RULE_postIncrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2824); + postfixExpression(); + setState(2825); + match(INC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PostIncrementExpression_lf_postfixExpressionContext extends ParserRuleContext { + public PostIncrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postIncrementExpression_lf_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression_lf_postfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression_lf_postfixExpression(this); + } + } + + public final PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression() throws RecognitionException { + PostIncrementExpression_lf_postfixExpressionContext _localctx = new PostIncrementExpression_lf_postfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 466, RULE_postIncrementExpression_lf_postfixExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2827); + match(INC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PostDecrementExpressionContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public PostDecrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postDecrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression(this); + } + } + + public final PostDecrementExpressionContext postDecrementExpression() throws RecognitionException { + PostDecrementExpressionContext _localctx = new PostDecrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 468, RULE_postDecrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2829); + postfixExpression(); + setState(2830); + match(DEC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PostDecrementExpression_lf_postfixExpressionContext extends ParserRuleContext { + public PostDecrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postDecrementExpression_lf_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression_lf_postfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression_lf_postfixExpression(this); + } + } + + public final PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression() throws RecognitionException { + PostDecrementExpression_lf_postfixExpressionContext _localctx = new PostDecrementExpression_lf_postfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 470, RULE_postDecrementExpression_lf_postfixExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2832); + match(DEC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CastExpressionContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() { + return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0); + } + public List additionalBound() { + return getRuleContexts(AdditionalBoundContext.class); + } + public AdditionalBoundContext additionalBound(int i) { + return getRuleContext(AdditionalBoundContext.class,i); + } + public LambdaExpressionContext lambdaExpression() { + return getRuleContext(LambdaExpressionContext.class,0); + } + public CastExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_castExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCastExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCastExpression(this); + } + } + + public final CastExpressionContext castExpression() throws RecognitionException { + CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState()); + enterRule(_localctx, 472, RULE_castExpression); + int _la; + try { + setState(2861); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,326,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2834); + match(LPAREN); + setState(2835); + primitiveType(); + setState(2836); + match(RPAREN); + setState(2837); + unaryExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2839); + match(LPAREN); + setState(2840); + referenceType(); + setState(2844); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(2841); + additionalBound(); + } + } + setState(2846); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2847); + match(RPAREN); + setState(2848); + unaryExpressionNotPlusMinus(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2850); + match(LPAREN); + setState(2851); + referenceType(); + setState(2855); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(2852); + additionalBound(); + } + } + setState(2857); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2858); + match(RPAREN); + setState(2859); + lambdaExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 26: + return packageName_sempred((PackageNameContext)_localctx, predIndex); + case 28: + return packageOrTypeName_sempred((PackageOrTypeNameContext)_localctx, predIndex); + case 31: + return ambiguousName_sempred((AmbiguousNameContext)_localctx, predIndex); + case 217: + return conditionalOrExpression_sempred((ConditionalOrExpressionContext)_localctx, predIndex); + case 218: + return conditionalAndExpression_sempred((ConditionalAndExpressionContext)_localctx, predIndex); + case 219: + return inclusiveOrExpression_sempred((InclusiveOrExpressionContext)_localctx, predIndex); + case 220: + return exclusiveOrExpression_sempred((ExclusiveOrExpressionContext)_localctx, predIndex); + case 221: + return andExpression_sempred((AndExpressionContext)_localctx, predIndex); + case 222: + return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex); + case 223: + return relationalExpression_sempred((RelationalExpressionContext)_localctx, predIndex); + case 224: + return shiftExpression_sempred((ShiftExpressionContext)_localctx, predIndex); + case 225: + return additiveExpression_sempred((AdditiveExpressionContext)_localctx, predIndex); + case 226: + return multiplicativeExpression_sempred((MultiplicativeExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean packageName_sempred(PackageNameContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 1); + } + return true; + } + private boolean packageOrTypeName_sempred(PackageOrTypeNameContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean ambiguousName_sempred(AmbiguousNameContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 1); + } + return true; + } + private boolean conditionalOrExpression_sempred(ConditionalOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return precpred(_ctx, 1); + } + return true; + } + private boolean conditionalAndExpression_sempred(ConditionalAndExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 4: + return precpred(_ctx, 1); + } + return true; + } + private boolean inclusiveOrExpression_sempred(InclusiveOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return precpred(_ctx, 1); + } + return true; + } + private boolean exclusiveOrExpression_sempred(ExclusiveOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return precpred(_ctx, 1); + } + return true; + } + private boolean andExpression_sempred(AndExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return precpred(_ctx, 1); + } + return true; + } + private boolean equalityExpression_sempred(EqualityExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 8: + return precpred(_ctx, 2); + case 9: + return precpred(_ctx, 1); + } + return true; + } + private boolean relationalExpression_sempred(RelationalExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 10: + return precpred(_ctx, 5); + case 11: + return precpred(_ctx, 4); + case 12: + return precpred(_ctx, 3); + case 13: + return precpred(_ctx, 2); + case 14: + return precpred(_ctx, 1); + } + return true; + } + private boolean shiftExpression_sempred(ShiftExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 15: + return precpred(_ctx, 3); + case 16: + return precpred(_ctx, 2); + case 17: + return precpred(_ctx, 1); + } + return true; + } + private boolean additiveExpression_sempred(AdditiveExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 18: + return precpred(_ctx, 2); + case 19: + return precpred(_ctx, 1); + } + return true; + } + private boolean multiplicativeExpression_sempred(MultiplicativeExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 20: + return precpred(_ctx, 3); + case 21: + return precpred(_ctx, 2); + case 22: + return precpred(_ctx, 1); + } + return true; + } + + private static final int _serializedATNSegments = 2; + private static final String _serializedATNSegment0 = + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3m\u0b32\4\2\t\2\4"+ + "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ + "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ + "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+ + "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+ + "\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+ + "\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+ + "\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+ + "\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+ + "\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097"+ + "\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b"+ + "\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0"+ + "\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4"+ + "\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9"+ + "\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad"+ + "\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1\4\u00b2"+ + "\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6"+ + "\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb"+ + "\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf"+ + "\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3\t\u00c3\4\u00c4"+ + "\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8"+ + "\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd"+ + "\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1\t\u00d1"+ + "\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5\4\u00d6"+ + "\t\u00d6\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da"+ + "\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df"+ + "\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3"+ + "\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8"+ + "\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec"+ + "\4\u00ed\t\u00ed\4\u00ee\t\u00ee\3\2\3\2\3\3\3\3\5\3\u01e1\n\3\3\4\7\4"+ + "\u01e4\n\4\f\4\16\4\u01e7\13\4\3\4\3\4\7\4\u01eb\n\4\f\4\16\4\u01ee\13"+ + "\4\3\4\5\4\u01f1\n\4\3\5\3\5\5\5\u01f5\n\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b"+ + "\5\b\u01fe\n\b\3\t\3\t\5\t\u0202\n\t\3\t\3\t\7\t\u0206\n\t\f\t\16\t\u0209"+ + "\13\t\3\n\7\n\u020c\n\n\f\n\16\n\u020f\13\n\3\n\3\n\5\n\u0213\n\n\3\n"+ + "\3\n\3\n\7\n\u0218\n\n\f\n\16\n\u021b\13\n\3\n\3\n\5\n\u021f\n\n\5\n\u0221"+ + "\n\n\3\13\3\13\7\13\u0225\n\13\f\13\16\13\u0228\13\13\3\13\3\13\5\13\u022c"+ + "\n\13\3\f\7\f\u022f\n\f\f\f\16\f\u0232\13\f\3\f\3\f\5\f\u0236\n\f\3\r"+ + "\3\r\3\16\3\16\3\17\3\17\3\20\7\20\u023f\n\20\f\20\16\20\u0242\13\20\3"+ + "\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u024f\n\21"+ + "\3\22\7\22\u0252\n\22\f\22\16\22\u0255\13\22\3\22\3\22\3\22\7\22\u025a"+ + "\n\22\f\22\16\22\u025d\13\22\3\22\3\22\7\22\u0261\n\22\f\22\16\22\u0264"+ + "\13\22\3\23\7\23\u0267\n\23\f\23\16\23\u026a\13\23\3\23\3\23\5\23\u026e"+ + "\n\23\3\24\3\24\3\25\3\25\3\25\3\25\3\25\7\25\u0277\n\25\f\25\16\25\u027a"+ + "\13\25\5\25\u027c\n\25\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\30\3\30\3"+ + "\30\7\30\u0288\n\30\f\30\16\30\u028b\13\30\3\31\3\31\5\31\u028f\n\31\3"+ + "\32\7\32\u0292\n\32\f\32\16\32\u0295\13\32\3\32\3\32\5\32\u0299\n\32\3"+ + "\33\3\33\3\33\3\33\5\33\u029f\n\33\3\34\3\34\3\34\3\34\3\34\3\34\7\34"+ + "\u02a7\n\34\f\34\16\34\u02aa\13\34\3\35\3\35\3\35\3\35\3\35\5\35\u02b1"+ + "\n\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u02b9\n\36\f\36\16\36\u02bc\13"+ + "\36\3\37\3\37\3\37\3\37\3\37\5\37\u02c3\n\37\3 \3 \3!\3!\3!\3!\3!\3!\7"+ + "!\u02cd\n!\f!\16!\u02d0\13!\3\"\5\"\u02d3\n\"\3\"\7\"\u02d6\n\"\f\"\16"+ + "\"\u02d9\13\"\3\"\7\"\u02dc\n\"\f\"\16\"\u02df\13\"\3\"\3\"\3#\7#\u02e4"+ + "\n#\f#\16#\u02e7\13#\3#\3#\3#\3#\7#\u02ed\n#\f#\16#\u02f0\13#\3#\3#\3"+ + "$\3$\3%\3%\3%\3%\5%\u02fa\n%\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3(\3"+ + "(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\5*\u0317\n*\3+\3+\5+\u031b"+ + "\n+\3,\7,\u031e\n,\f,\16,\u0321\13,\3,\3,\3,\5,\u0326\n,\3,\5,\u0329\n"+ + ",\3,\5,\u032c\n,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\5-\u0338\n-\3.\3.\3.\3"+ + ".\3/\3/\3/\7/\u0341\n/\f/\16/\u0344\13/\3\60\3\60\3\60\3\61\3\61\3\61"+ + "\3\62\3\62\3\62\7\62\u034f\n\62\f\62\16\62\u0352\13\62\3\63\3\63\7\63"+ + "\u0356\n\63\f\63\16\63\u0359\13\63\3\63\3\63\3\64\3\64\3\64\3\64\5\64"+ + "\u0361\n\64\3\65\3\65\3\65\3\65\3\65\5\65\u0368\n\65\3\66\7\66\u036b\n"+ + "\66\f\66\16\66\u036e\13\66\3\66\5\66\u0371\n\66\3\66\3\66\3\66\3\67\3"+ + "\67\3\67\3\67\3\67\3\67\3\67\3\67\5\67\u037e\n\67\38\38\38\78\u0383\n"+ + "8\f8\168\u0386\138\39\39\39\59\u038b\n9\3:\3:\5:\u038f\n:\3;\3;\5;\u0393"+ + "\n;\3<\3<\5<\u0397\n<\3=\3=\5=\u039b\n=\3>\3>\3>\5>\u03a0\n>\3?\3?\5?"+ + "\u03a4\n?\3?\3?\7?\u03a8\n?\f?\16?\u03ab\13?\3@\3@\5@\u03af\n@\3@\3@\3"+ + "@\7@\u03b4\n@\f@\16@\u03b7\13@\3@\3@\5@\u03bb\n@\5@\u03bd\n@\3A\3A\7A"+ + "\u03c1\nA\fA\16A\u03c4\13A\3A\3A\5A\u03c8\nA\3B\3B\5B\u03cc\nB\3C\3C\3"+ + "D\3D\3E\3E\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\5G\u03df\nG\3H\7H\u03e2\n"+ + "H\fH\16H\u03e5\13H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\5I\u03f4\nI"+ + "\3J\5J\u03f7\nJ\3J\3J\5J\u03fb\nJ\3J\3J\7J\u03ff\nJ\fJ\16J\u0402\13J\3"+ + "J\3J\3J\5J\u0407\nJ\5J\u0409\nJ\3K\3K\5K\u040d\nK\3L\3L\3L\5L\u0412\n"+ + "L\3L\3L\5L\u0416\nL\3M\3M\3M\3M\3M\5M\u041d\nM\3N\3N\3N\7N\u0422\nN\f"+ + "N\16N\u0425\13N\3N\3N\3N\7N\u042a\nN\fN\16N\u042d\13N\5N\u042f\nN\3O\7"+ + "O\u0432\nO\fO\16O\u0435\13O\3O\5O\u0438\nO\3O\3O\3P\3P\5P\u043e\nP\3Q"+ + "\7Q\u0441\nQ\fQ\16Q\u0444\13Q\3Q\3Q\7Q\u0448\nQ\fQ\16Q\u044b\13Q\3Q\3"+ + "Q\3Q\3Q\5Q\u0451\nQ\3R\7R\u0454\nR\fR\16R\u0457\13R\3R\3R\3R\5R\u045c"+ + "\nR\3R\3R\3S\3S\3S\3T\3T\3T\7T\u0466\nT\fT\16T\u0469\13T\3U\3U\5U\u046d"+ + "\nU\3V\3V\5V\u0471\nV\3W\3W\3X\3X\3X\3Y\7Y\u0479\nY\fY\16Y\u047c\13Y\3"+ + "Y\3Y\5Y\u0480\nY\3Y\3Y\3Z\3Z\3Z\3Z\5Z\u0488\nZ\3[\5[\u048b\n[\3[\3[\3"+ + "[\5[\u0490\n[\3[\3[\3\\\3\\\3]\3]\5]\u0498\n]\3]\5]\u049b\n]\3]\3]\3^"+ + "\5^\u04a0\n^\3^\3^\3^\5^\u04a5\n^\3^\3^\3^\5^\u04aa\n^\3^\3^\3^\5^\u04af"+ + "\n^\3^\3^\3^\3^\3^\5^\u04b6\n^\3^\3^\3^\5^\u04bb\n^\3^\3^\3^\3^\3^\3^"+ + "\5^\u04c3\n^\3^\3^\3^\5^\u04c8\n^\3^\3^\3^\5^\u04cd\n^\3_\7_\u04d0\n_"+ + "\f_\16_\u04d3\13_\3_\3_\3_\5_\u04d8\n_\3_\3_\3`\3`\5`\u04de\n`\3`\5`\u04e1"+ + "\n`\3`\5`\u04e4\n`\3`\3`\3a\3a\3a\7a\u04eb\na\fa\16a\u04ee\13a\3b\7b\u04f1"+ + "\nb\fb\16b\u04f4\13b\3b\3b\3b\5b\u04f9\nb\3b\5b\u04fc\nb\3b\5b\u04ff\n"+ + "b\3c\3c\3d\3d\7d\u0505\nd\fd\16d\u0508\13d\3e\3e\5e\u050c\ne\3f\7f\u050f"+ + "\nf\ff\16f\u0512\13f\3f\3f\3f\5f\u0517\nf\3f\5f\u051a\nf\3f\3f\3g\3g\3"+ + "g\3g\3g\3g\3g\5g\u0525\ng\3h\3h\3h\3i\3i\7i\u052c\ni\fi\16i\u052f\13i"+ + "\3i\3i\3j\3j\3j\3j\3j\5j\u0538\nj\3k\7k\u053b\nk\fk\16k\u053e\13k\3k\3"+ + "k\3k\3k\3l\3l\3l\3l\5l\u0548\nl\3m\7m\u054b\nm\fm\16m\u054e\13m\3m\3m"+ + "\3m\3n\3n\3n\3n\3n\3n\5n\u0559\nn\3o\7o\u055c\no\fo\16o\u055f\13o\3o\3"+ + "o\3o\3o\3o\3p\3p\7p\u0568\np\fp\16p\u056b\13p\3p\3p\3q\3q\3q\3q\3q\5q"+ + "\u0574\nq\3r\7r\u0577\nr\fr\16r\u057a\13r\3r\3r\3r\3r\3r\5r\u0581\nr\3"+ + "r\5r\u0584\nr\3r\3r\3s\3s\3s\5s\u058b\ns\3t\3t\3t\3u\3u\3u\5u\u0593\n"+ + "u\3v\3v\3v\3v\5v\u0599\nv\3v\3v\3w\3w\3w\7w\u05a0\nw\fw\16w\u05a3\13w"+ + "\3x\3x\3x\3x\3y\3y\3y\5y\u05ac\ny\3z\3z\5z\u05b0\nz\3z\5z\u05b3\nz\3z"+ + "\3z\3{\3{\3{\7{\u05ba\n{\f{\16{\u05bd\13{\3|\3|\3|\3}\3}\3}\3}\3}\3}\3"+ + "~\3~\5~\u05ca\n~\3~\5~\u05cd\n~\3~\3~\3\177\3\177\3\177\7\177\u05d4\n"+ + "\177\f\177\16\177\u05d7\13\177\3\u0080\3\u0080\5\u0080\u05db\n\u0080\3"+ + "\u0080\3\u0080\3\u0081\3\u0081\7\u0081\u05e1\n\u0081\f\u0081\16\u0081"+ + "\u05e4\13\u0081\3\u0082\3\u0082\3\u0082\5\u0082\u05e9\n\u0082\3\u0083"+ + "\3\u0083\3\u0083\3\u0084\7\u0084\u05ef\n\u0084\f\u0084\16\u0084\u05f2"+ + "\13\u0084\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085"+ + "\3\u0085\5\u0085\u05fd\n\u0085\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086"+ + "\5\u0086\u0604\n\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087"+ + "\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0612\n\u0087"+ + "\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a"+ + "\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+ + "\3\u008c\3\u008c\5\u008c\u0628\n\u008c\3\u008d\3\u008d\3\u008d\3\u008d"+ + "\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+ + "\3\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+ + "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090"+ + "\3\u0090\5\u0090\u064a\n\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+ + "\3\u0091\3\u0092\3\u0092\7\u0092\u0654\n\u0092\f\u0092\16\u0092\u0657"+ + "\13\u0092\3\u0092\7\u0092\u065a\n\u0092\f\u0092\16\u0092\u065d\13\u0092"+ + "\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094\7\u0094\u0666"+ + "\n\u0094\f\u0094\16\u0094\u0669\13\u0094\3\u0095\3\u0095\3\u0095\3\u0095"+ + "\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\5\u0095\u0675\n\u0095"+ + "\3\u0096\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0098"+ + "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099"+ + "\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\5\u009a\u068f\n\u009a"+ + "\3\u009b\3\u009b\5\u009b\u0693\n\u009b\3\u009c\3\u009c\3\u009c\5\u009c"+ + "\u0698\n\u009c\3\u009c\3\u009c\5\u009c\u069c\n\u009c\3\u009c\3\u009c\5"+ + "\u009c\u06a0\n\u009c\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\5"+ + "\u009d\u06a8\n\u009d\3\u009d\3\u009d\5\u009d\u06ac\n\u009d\3\u009d\3\u009d"+ + "\5\u009d\u06b0\n\u009d\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\5\u009e"+ + "\u06b7\n\u009e\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\7\u00a0\u06be\n"+ + "\u00a0\f\u00a0\16\u00a0\u06c1\13\u00a0\3\u00a1\3\u00a1\3\u00a1\7\u00a1"+ + "\u06c6\n\u00a1\f\u00a1\16\u00a1\u06c9\13\u00a1\3\u00a1\3\u00a1\3\u00a1"+ + "\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\7\u00a2\u06d5"+ + "\n\u00a2\f\u00a2\16\u00a2\u06d8\13\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+ + "\3\u00a2\3\u00a2\3\u00a2\3\u00a3\3\u00a3\5\u00a3\u06e3\n\u00a3\3\u00a3"+ + "\3\u00a3\3\u00a4\3\u00a4\5\u00a4\u06e9\n\u00a4\3\u00a4\3\u00a4\3\u00a5"+ + "\3\u00a5\5\u00a5\u06ef\n\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6"+ + "\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8"+ + "\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\5\u00a8\u0704\n\u00a8\3\u00a8"+ + "\3\u00a8\3\u00a8\5\u00a8\u0709\n\u00a8\3\u00a9\3\u00a9\7\u00a9\u070d\n"+ + "\u00a9\f\u00a9\16\u00a9\u0710\13\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa"+ + "\3\u00aa\3\u00aa\3\u00ab\7\u00ab\u0719\n\u00ab\f\u00ab\16\u00ab\u071c"+ + "\13\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac\3\u00ac\7\u00ac\u0724"+ + "\n\u00ac\f\u00ac\16\u00ac\u0727\13\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ae"+ + "\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u0730\n\u00ae\3\u00ae\5\u00ae\u0733\n"+ + "\u00ae\3\u00af\3\u00af\3\u00af\5\u00af\u0738\n\u00af\3\u00af\3\u00af\3"+ + "\u00b0\3\u00b0\3\u00b0\7\u00b0\u073f\n\u00b0\f\u00b0\16\u00b0\u0742\13"+ + "\u00b0\3\u00b1\7\u00b1\u0745\n\u00b1\f\u00b1\16\u00b1\u0748\13\u00b1\3"+ + "\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\5\u00b2\u0751\n"+ + "\u00b2\3\u00b2\7\u00b2\u0754\n\u00b2\f\u00b2\16\u00b2\u0757\13\u00b2\3"+ + "\u00b3\3\u00b3\3\u00b3\3\u00b3\7\u00b3\u075d\n\u00b3\f\u00b3\16\u00b3"+ + "\u0760\13\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+ + "\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+ + "\3\u00b3\3\u00b3\3\u00b3\3\u00b3\5\u00b3\u0776\n\u00b3\3\u00b4\3\u00b4"+ + "\3\u00b5\3\u00b5\3\u00b5\3\u00b5\7\u00b5\u077e\n\u00b5\f\u00b5\16\u00b5"+ + "\u0781\13\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5"+ + "\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5"+ + "\3\u00b5\3\u00b5\3\u00b5\5\u00b5\u0796\n\u00b5\3\u00b6\3\u00b6\3\u00b6"+ + "\3\u00b6\3\u00b6\5\u00b6\u079d\n\u00b6\3\u00b7\3\u00b7\3\u00b8\3\u00b8"+ + "\3\u00b8\3\u00b8\5\u00b8\u07a5\n\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ + "\7\u00b9\u07ab\n\u00b9\f\u00b9\16\u00b9\u07ae\13\u00b9\3\u00b9\3\u00b9"+ + "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\7\u00b9\u07b6\n\u00b9\f\u00b9\16\u00b9"+ + "\u07b9\13\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ + "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ + "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u07cf\n\u00b9\3\u00ba\3\u00ba"+ + "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb\u07d7\n\u00bb\f\u00bb\16\u00bb"+ + "\u07da\13\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb"+ + "\u07e2\n\u00bb\f\u00bb\16\u00bb\u07e5\13\u00bb\3\u00bb\3\u00bb\3\u00bb"+ + "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb"+ + "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u07fa"+ + "\n\u00bb\3\u00bc\3\u00bc\5\u00bc\u07fe\n\u00bc\3\u00bc\7\u00bc\u0801\n"+ + "\u00bc\f\u00bc\16\u00bc\u0804\13\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc"+ + "\u0809\n\u00bc\f\u00bc\16\u00bc\u080c\13\u00bc\3\u00bc\7\u00bc\u080f\n"+ + "\u00bc\f\u00bc\16\u00bc\u0812\13\u00bc\3\u00bc\5\u00bc\u0815\n\u00bc\3"+ + "\u00bc\3\u00bc\5\u00bc\u0819\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u081d\n\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u0823\n\u00bc\3\u00bc\7\u00bc"+ + "\u0826\n\u00bc\f\u00bc\16\u00bc\u0829\13\u00bc\3\u00bc\3\u00bc\5\u00bc"+ + "\u082d\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u0831\n\u00bc\3\u00bc\3\u00bc\5"+ + "\u00bc\u0835\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u083b\n\u00bc"+ + "\3\u00bc\7\u00bc\u083e\n\u00bc\f\u00bc\16\u00bc\u0841\13\u00bc\3\u00bc"+ + "\3\u00bc\5\u00bc\u0845\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u0849\n\u00bc\3"+ + "\u00bc\3\u00bc\5\u00bc\u084d\n\u00bc\5\u00bc\u084f\n\u00bc\3\u00bd\3\u00bd"+ + "\3\u00bd\5\u00bd\u0854\n\u00bd\3\u00bd\7\u00bd\u0857\n\u00bd\f\u00bd\16"+ + "\u00bd\u085a\13\u00bd\3\u00bd\3\u00bd\5\u00bd\u085e\n\u00bd\3\u00bd\3"+ + "\u00bd\5\u00bd\u0862\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0866\n\u00bd\3\u00be"+ + "\3\u00be\5\u00be\u086a\n\u00be\3\u00be\7\u00be\u086d\n\u00be\f\u00be\16"+ + "\u00be\u0870\13\u00be\3\u00be\3\u00be\3\u00be\7\u00be\u0875\n\u00be\f"+ + "\u00be\16\u00be\u0878\13\u00be\3\u00be\7\u00be\u087b\n\u00be\f\u00be\16"+ + "\u00be\u087e\13\u00be\3\u00be\5\u00be\u0881\n\u00be\3\u00be\3\u00be\5"+ + "\u00be\u0885\n\u00be\3\u00be\3\u00be\5\u00be\u0889\n\u00be\3\u00be\3\u00be"+ + "\3\u00be\3\u00be\5\u00be\u088f\n\u00be\3\u00be\7\u00be\u0892\n\u00be\f"+ + "\u00be\16\u00be\u0895\13\u00be\3\u00be\3\u00be\5\u00be\u0899\n\u00be\3"+ + "\u00be\3\u00be\5\u00be\u089d\n\u00be\3\u00be\3\u00be\5\u00be\u08a1\n\u00be"+ + "\5\u00be\u08a3\n\u00be\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u08a8\n\u00bf\3"+ + "\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0"+ + "\3\u00c0\3\u00c0\3\u00c0\3\u00c0\5\u00c0\u08b7\n\u00c0\3\u00c1\3\u00c1"+ + "\3\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2"+ + "\3\u00c2\5\u00c2\u08c5\n\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3"+ + "\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3\u08d1\n\u00c3\3\u00c3"+ + "\3\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3\u08d8\n\u00c3\f\u00c3\16\u00c3"+ + "\u08db\13\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4"+ + "\3\u00c4\3\u00c4\3\u00c4\7\u00c4\u08e7\n\u00c4\f\u00c4\16\u00c4\u08ea"+ + "\13\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ + "\3\u00c5\3\u00c5\5\u00c5\u08f6\n\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ + "\3\u00c5\7\u00c5\u08fd\n\u00c5\f\u00c5\16\u00c5\u0900\13\u00c5\3\u00c6"+ + "\3\u00c6\3\u00c6\5\u00c6\u0905\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+ + "\3\u00c6\5\u00c6\u090c\n\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0911\n"+ + "\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0918\n\u00c6\3"+ + "\u00c6\3\u00c6\3\u00c6\5\u00c6\u091d\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3"+ + "\u00c6\3\u00c6\5\u00c6\u0924\n\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0929"+ + "\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0930\n\u00c6"+ + "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0935\n\u00c6\3\u00c6\3\u00c6\3\u00c6"+ + "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u093d\n\u00c6\3\u00c6\3\u00c6\3\u00c6"+ + "\5\u00c6\u0942\n\u00c6\3\u00c6\3\u00c6\5\u00c6\u0946\n\u00c6\3\u00c7\3"+ + "\u00c7\5\u00c7\u094a\n\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u094f\n\u00c7"+ + "\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0956\n\u00c8\3\u00c8"+ + "\3\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u095d\n\u00c8\3\u00c8\3\u00c8"+ + "\3\u00c8\5\u00c8\u0962\n\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8"+ + "\5\u00c8\u0969\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u096e\n\u00c8\3"+ + "\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0975\n\u00c8\3\u00c8\3"+ + "\u00c8\3\u00c8\5\u00c8\u097a\n\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3"+ + "\u00c8\3\u00c8\5\u00c8\u0982\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0987"+ + "\n\u00c8\3\u00c8\3\u00c8\5\u00c8\u098b\n\u00c8\3\u00c9\3\u00c9\3\u00c9"+ + "\7\u00c9\u0990\n\u00c9\f\u00c9\16\u00c9\u0993\13\u00c9\3\u00ca\3\u00ca"+ + "\3\u00ca\5\u00ca\u0998\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca"+ + "\5\u00ca\u099f\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca"+ + "\u09a6\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09ad\n"+ + "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09b5\n"+ + "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09bc\n\u00ca\3"+ + "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09c4\n\u00ca\3"+ + "\u00cb\3\u00cb\5\u00cb\u09c8\n\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc\3"+ + "\u00cc\5\u00cc\u09cf\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5"+ + "\u00cc\u09d6\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09dd"+ + "\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09e5"+ + "\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09ec\n\u00cc"+ + "\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09f4\n\u00cc"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09fa\n\u00cd\3\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\5\u00cd\u0a00\n\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u0a0c\n\u00cd"+ + "\3\u00ce\3\u00ce\7\u00ce\u0a10\n\u00ce\f\u00ce\16\u00ce\u0a13\13\u00ce"+ + "\3\u00cf\7\u00cf\u0a16\n\u00cf\f\u00cf\16\u00cf\u0a19\13\u00cf\3\u00cf"+ + "\3\u00cf\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d1\3\u00d1\5\u00d1\u0a23"+ + "\n\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\5\u00d3"+ + "\u0a2c\n\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\5\u00d3\u0a33\n"+ + "\u00d3\3\u00d4\3\u00d4\3\u00d4\7\u00d4\u0a38\n\u00d4\f\u00d4\16\u00d4"+ + "\u0a3b\13\u00d4\3\u00d5\3\u00d5\5\u00d5\u0a3f\n\u00d5\3\u00d6\3\u00d6"+ + "\5\u00d6\u0a43\n\u00d6\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d8\3\u00d8"+ + "\3\u00d8\5\u00d8\u0a4c\n\u00d8\3\u00d9\3\u00d9\3\u00da\3\u00da\3\u00da"+ + "\3\u00da\3\u00da\3\u00da\3\u00da\5\u00da\u0a57\n\u00da\3\u00db\3\u00db"+ + "\3\u00db\3\u00db\3\u00db\3\u00db\7\u00db\u0a5f\n\u00db\f\u00db\16\u00db"+ + "\u0a62\13\u00db\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\7\u00dc"+ + "\u0a6a\n\u00dc\f\u00dc\16\u00dc\u0a6d\13\u00dc\3\u00dd\3\u00dd\3\u00dd"+ + "\3\u00dd\3\u00dd\3\u00dd\7\u00dd\u0a75\n\u00dd\f\u00dd\16\u00dd\u0a78"+ + "\13\u00dd\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\7\u00de\u0a80"+ + "\n\u00de\f\u00de\16\u00de\u0a83\13\u00de\3\u00df\3\u00df\3\u00df\3\u00df"+ + "\3\u00df\3\u00df\7\u00df\u0a8b\n\u00df\f\u00df\16\u00df\u0a8e\13\u00df"+ + "\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0"+ + "\7\u00e0\u0a99\n\u00e0\f\u00e0\16\u00e0\u0a9c\13\u00e0\3\u00e1\3\u00e1"+ + "\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1"+ + "\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\7\u00e1\u0ab0"+ + "\n\u00e1\f\u00e1\16\u00e1\u0ab3\13\u00e1\3\u00e2\3\u00e2\3\u00e2\3\u00e2"+ + "\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2"+ + "\3\u00e2\3\u00e2\3\u00e2\7\u00e2\u0ac5\n\u00e2\f\u00e2\16\u00e2\u0ac8"+ + "\13\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3"+ + "\3\u00e3\7\u00e3\u0ad3\n\u00e3\f\u00e3\16\u00e3\u0ad6\13\u00e3\3\u00e4"+ + "\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4"+ + "\3\u00e4\3\u00e4\7\u00e4\u0ae4\n\u00e4\f\u00e4\16\u00e4\u0ae7\13\u00e4"+ + "\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\5\u00e5\u0af0"+ + "\n\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e7\3\u00e7\3\u00e7\3\u00e8\3\u00e8"+ + "\3\u00e8\3\u00e8\3\u00e8\3\u00e8\5\u00e8\u0afe\n\u00e8\3\u00e9\3\u00e9"+ + "\5\u00e9\u0b02\n\u00e9\3\u00e9\3\u00e9\7\u00e9\u0b06\n\u00e9\f\u00e9\16"+ + "\u00e9\u0b09\13\u00e9\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb\3\u00ec"+ + "\3\u00ec\3\u00ec\3\u00ed\3\u00ed\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee"+ + "\3\u00ee\3\u00ee\3\u00ee\7\u00ee\u0b1d\n\u00ee\f\u00ee\16\u00ee\u0b20"+ + "\13\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\7\u00ee\u0b28"+ + "\n\u00ee\f\u00ee\16\u00ee\u0b2b\13\u00ee\3\u00ee\3\u00ee\3\u00ee\5\u00ee"+ + "\u0b30\n\u00ee\3\u00ee\2\17\66:@\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0"+ + "\u01c2\u01c4\u01c6\u00ef\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&("+ + "*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084"+ + "\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c"+ + "\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4"+ + "\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc"+ + "\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4"+ + "\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc"+ + "\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114"+ + "\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c"+ + "\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144"+ + "\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c"+ + "\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174"+ + "\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c"+ + "\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4"+ + "\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc"+ + "\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4"+ + "\u01d6\u01d8\u01da\2\6\3\2\65:\7\2\7\7\n\n\35\35\37\37\'\'\4\2\20\20\26"+ + "\26\4\2DD]g\u0c26\2\u01dc\3\2\2\2\4\u01e0\3\2\2\2\6\u01f0\3\2\2\2\b\u01f4"+ + "\3\2\2\2\n\u01f6\3\2\2\2\f\u01f8\3\2\2\2\16\u01fd\3\2\2\2\20\u0201\3\2"+ + "\2\2\22\u0220\3\2\2\2\24\u0222\3\2\2\2\26\u0230\3\2\2\2\30\u0237\3\2\2"+ + "\2\32\u0239\3\2\2\2\34\u023b\3\2\2\2\36\u0240\3\2\2\2 \u024e\3\2\2\2\""+ + "\u0253\3\2\2\2$\u0268\3\2\2\2&\u026f\3\2\2\2(\u027b\3\2\2\2*\u027d\3\2"+ + "\2\2,\u0280\3\2\2\2.\u0284\3\2\2\2\60\u028e\3\2\2\2\62\u0293\3\2\2\2\64"+ + "\u029e\3\2\2\2\66\u02a0\3\2\2\28\u02b0\3\2\2\2:\u02b2\3\2\2\2<\u02c2\3"+ + "\2\2\2>\u02c4\3\2\2\2@\u02c6\3\2\2\2B\u02d2\3\2\2\2D\u02e5\3\2\2\2F\u02f3"+ + "\3\2\2\2H\u02f9\3\2\2\2J\u02fb\3\2\2\2L\u02ff\3\2\2\2N\u0305\3\2\2\2P"+ + "\u030c\3\2\2\2R\u0316\3\2\2\2T\u031a\3\2\2\2V\u031f\3\2\2\2X\u0337\3\2"+ + "\2\2Z\u0339\3\2\2\2\\\u033d\3\2\2\2^\u0345\3\2\2\2`\u0348\3\2\2\2b\u034b"+ + "\3\2\2\2d\u0353\3\2\2\2f\u0360\3\2\2\2h\u0367\3\2\2\2j\u036c\3\2\2\2l"+ + "\u037d\3\2\2\2n\u037f\3\2\2\2p\u0387\3\2\2\2r\u038c\3\2\2\2t\u0392\3\2"+ + "\2\2v\u0396\3\2\2\2x\u039a\3\2\2\2z\u039f\3\2\2\2|\u03a3\3\2\2\2~\u03bc"+ + "\3\2\2\2\u0080\u03be\3\2\2\2\u0082\u03c9\3\2\2\2\u0084\u03cd\3\2\2\2\u0086"+ + "\u03cf\3\2\2\2\u0088\u03d1\3\2\2\2\u008a\u03d3\3\2\2\2\u008c\u03de\3\2"+ + "\2\2\u008e\u03e3\3\2\2\2\u0090\u03f3\3\2\2\2\u0092\u0408\3\2\2\2\u0094"+ + "\u040c\3\2\2\2\u0096\u040e\3\2\2\2\u0098\u041c\3\2\2\2\u009a\u042e\3\2"+ + "\2\2\u009c\u0433\3\2\2\2\u009e\u043d\3\2\2\2\u00a0\u0450\3\2\2\2\u00a2"+ + "\u0455\3\2\2\2\u00a4\u045f\3\2\2\2\u00a6\u0462\3\2\2\2\u00a8\u046c\3\2"+ + "\2\2\u00aa\u0470\3\2\2\2\u00ac\u0472\3\2\2\2\u00ae\u0474\3\2\2\2\u00b0"+ + "\u047a\3\2\2\2\u00b2\u0487\3\2\2\2\u00b4\u048a\3\2\2\2\u00b6\u0493\3\2"+ + "\2\2\u00b8\u0495\3\2\2\2\u00ba\u04cc\3\2\2\2\u00bc\u04d1\3\2\2\2\u00be"+ + "\u04db\3\2\2\2\u00c0\u04e7\3\2\2\2\u00c2\u04f2\3\2\2\2\u00c4\u0500\3\2"+ + "\2\2\u00c6\u0502\3\2\2\2\u00c8\u050b\3\2\2\2\u00ca\u0510\3\2\2\2\u00cc"+ + "\u0524\3\2\2\2\u00ce\u0526\3\2\2\2\u00d0\u0529\3\2\2\2\u00d2\u0537\3\2"+ + "\2\2\u00d4\u053c\3\2\2\2\u00d6\u0547\3\2\2\2\u00d8\u054c\3\2\2\2\u00da"+ + "\u0558\3\2\2\2\u00dc\u055d\3\2\2\2\u00de\u0565\3\2\2\2\u00e0\u0573\3\2"+ + "\2\2\u00e2\u0578\3\2\2\2\u00e4\u058a\3\2\2\2\u00e6\u058c\3\2\2\2\u00e8"+ + "\u0592\3\2\2\2\u00ea\u0594\3\2\2\2\u00ec\u059c\3\2\2\2\u00ee\u05a4\3\2"+ + "\2\2\u00f0\u05ab\3\2\2\2\u00f2\u05ad\3\2\2\2\u00f4\u05b6\3\2\2\2\u00f6"+ + "\u05be\3\2\2\2\u00f8\u05c1\3\2\2\2\u00fa\u05c7\3\2\2\2\u00fc\u05d0\3\2"+ + "\2\2\u00fe\u05d8\3\2\2\2\u0100\u05de\3\2\2\2\u0102\u05e8\3\2\2\2\u0104"+ + "\u05ea\3\2\2\2\u0106\u05f0\3\2\2\2\u0108\u05fc\3\2\2\2\u010a\u0603\3\2"+ + "\2\2\u010c\u0611\3\2\2\2\u010e\u0613\3\2\2\2\u0110\u0615\3\2\2\2\u0112"+ + "\u0619\3\2\2\2\u0114\u061d\3\2\2\2\u0116\u0627\3\2\2\2\u0118\u0629\3\2"+ + "\2\2\u011a\u062f\3\2\2\2\u011c\u0637\3\2\2\2\u011e\u0649\3\2\2\2\u0120"+ + "\u064b\3\2\2\2\u0122\u0651\3\2\2\2\u0124\u0660\3\2\2\2\u0126\u0663\3\2"+ + "\2\2\u0128\u0674\3\2\2\2\u012a\u0676\3\2\2\2\u012c\u0678\3\2\2\2\u012e"+ + "\u067e\3\2\2\2\u0130\u0684\3\2\2\2\u0132\u068e\3\2\2\2\u0134\u0692\3\2"+ + "\2\2\u0136\u0694\3\2\2\2\u0138\u06a4\3\2\2\2\u013a\u06b6\3\2\2\2\u013c"+ + "\u06b8\3\2\2\2\u013e\u06ba\3\2\2\2\u0140\u06c2\3\2\2\2\u0142\u06d1\3\2"+ + "\2\2\u0144\u06e0\3\2\2\2\u0146\u06e6\3\2\2\2\u0148\u06ec\3\2\2\2\u014a"+ + "\u06f2\3\2\2\2\u014c\u06f6\3\2\2\2\u014e\u0708\3\2\2\2\u0150\u070a\3\2"+ + "\2\2\u0152\u0711\3\2\2\2\u0154\u071a\3\2\2\2\u0156\u0720\3\2\2\2\u0158"+ + "\u0728\3\2\2\2\u015a\u072b\3\2\2\2\u015c\u0734\3\2\2\2\u015e\u073b\3\2"+ + "\2\2\u0160\u0746\3\2\2\2\u0162\u0750\3\2\2\2\u0164\u0775\3\2\2\2\u0166"+ + "\u0777\3\2\2\2\u0168\u0795\3\2\2\2\u016a\u079c\3\2\2\2\u016c\u079e\3\2"+ + "\2\2\u016e\u07a4\3\2\2\2\u0170\u07ce\3\2\2\2\u0172\u07d0\3\2\2\2\u0174"+ + "\u07f9\3\2\2\2\u0176\u084e\3\2\2\2\u0178\u0850\3\2\2\2\u017a\u08a2\3\2"+ + "\2\2\u017c\u08a7\3\2\2\2\u017e\u08b6\3\2\2\2\u0180\u08b8\3\2\2\2\u0182"+ + "\u08c4\3\2\2\2\u0184\u08d0\3\2\2\2\u0186\u08dc\3\2\2\2\u0188\u08f5\3\2"+ + "\2\2\u018a\u0945\3\2\2\2\u018c\u0947\3\2\2\2\u018e\u098a\3\2\2\2\u0190"+ + "\u098c\3\2\2\2\u0192\u09c3\3\2\2\2\u0194\u09c5\3\2\2\2\u0196\u09f3\3\2"+ + "\2\2\u0198\u0a0b\3\2\2\2\u019a\u0a0d\3\2\2\2\u019c\u0a17\3\2\2\2\u019e"+ + "\u0a1e\3\2\2\2\u01a0\u0a22\3\2\2\2\u01a2\u0a24\3\2\2\2\u01a4\u0a32\3\2"+ + "\2\2\u01a6\u0a34\3\2\2\2\u01a8\u0a3e\3\2\2\2\u01aa\u0a42\3\2\2\2\u01ac"+ + "\u0a44\3\2\2\2\u01ae\u0a4b\3\2\2\2\u01b0\u0a4d\3\2\2\2\u01b2\u0a56\3\2"+ + "\2\2\u01b4\u0a58\3\2\2\2\u01b6\u0a63\3\2\2\2\u01b8\u0a6e\3\2\2\2\u01ba"+ + "\u0a79\3\2\2\2\u01bc\u0a84\3\2\2\2\u01be\u0a8f\3\2\2\2\u01c0\u0a9d\3\2"+ + "\2\2\u01c2\u0ab4\3\2\2\2\u01c4\u0ac9\3\2\2\2\u01c6\u0ad7\3\2\2\2\u01c8"+ + "\u0aef\3\2\2\2\u01ca\u0af1\3\2\2\2\u01cc\u0af4\3\2\2\2\u01ce\u0afd\3\2"+ + "\2\2\u01d0\u0b01\3\2\2\2\u01d2\u0b0a\3\2\2\2\u01d4\u0b0d\3\2\2\2\u01d6"+ + "\u0b0f\3\2\2\2\u01d8\u0b12\3\2\2\2\u01da\u0b2f\3\2\2\2\u01dc\u01dd\t\2"+ + "\2\2\u01dd\3\3\2\2\2\u01de\u01e1\5\6\4\2\u01df\u01e1\5\16\b\2\u01e0\u01de"+ + "\3\2\2\2\u01e0\u01df\3\2\2\2\u01e1\5\3\2\2\2\u01e2\u01e4\5\u00e8u\2\u01e3"+ + "\u01e2\3\2\2\2\u01e4\u01e7\3\2\2\2\u01e5\u01e3\3\2\2\2\u01e5\u01e6\3\2"+ + "\2\2\u01e6\u01e8\3\2\2\2\u01e7\u01e5\3\2\2\2\u01e8\u01f1\5\b\5\2\u01e9"+ + "\u01eb\5\u00e8u\2\u01ea\u01e9\3\2\2\2\u01eb\u01ee\3\2\2\2\u01ec\u01ea"+ + "\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed\u01ef\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ef"+ + "\u01f1\7\5\2\2\u01f0\u01e5\3\2\2\2\u01f0\u01ec\3\2\2\2\u01f1\7\3\2\2\2"+ + "\u01f2\u01f5\5\n\6\2\u01f3\u01f5\5\f\7\2\u01f4\u01f2\3\2\2\2\u01f4\u01f3"+ + "\3\2\2\2\u01f5\t\3\2\2\2\u01f6\u01f7\t\3\2\2\u01f7\13\3\2\2\2\u01f8\u01f9"+ + "\t\4\2\2\u01f9\r\3\2\2\2\u01fa\u01fe\5\20\t\2\u01fb\u01fe\5\36\20\2\u01fc"+ + "\u01fe\5 \21\2\u01fd\u01fa\3\2\2\2\u01fd\u01fb\3\2\2\2\u01fd\u01fc\3\2"+ + "\2\2\u01fe\17\3\2\2\2\u01ff\u0202\5\26\f\2\u0200\u0202\5\34\17\2\u0201"+ + "\u01ff\3\2\2\2\u0201\u0200\3\2\2\2\u0202\u0207\3\2\2\2\u0203\u0206\5\24"+ + "\13\2\u0204\u0206\5\32\16\2\u0205\u0203\3\2\2\2\u0205\u0204\3\2\2\2\u0206"+ + "\u0209\3\2\2\2\u0207\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\21\3\2\2"+ + "\2\u0209\u0207\3\2\2\2\u020a\u020c\5\u00e8u\2\u020b\u020a\3\2\2\2\u020c"+ + "\u020f\3\2\2\2\u020d\u020b\3\2\2\2\u020d\u020e\3\2\2\2\u020e\u0210\3\2"+ + "\2\2\u020f\u020d\3\2\2\2\u0210\u0212\7h\2\2\u0211\u0213\5,\27\2\u0212"+ + "\u0211\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0221\3\2\2\2\u0214\u0215\5\20"+ + "\t\2\u0215\u0219\7C\2\2\u0216\u0218\5\u00e8u\2\u0217\u0216\3\2\2\2\u0218"+ + "\u021b\3\2\2\2\u0219\u0217\3\2\2\2\u0219\u021a\3\2\2\2\u021a\u021c\3\2"+ + "\2\2\u021b\u0219\3\2\2\2\u021c\u021e\7h\2\2\u021d\u021f\5,\27\2\u021e"+ + "\u021d\3\2\2\2\u021e\u021f\3\2\2\2\u021f\u0221\3\2\2\2\u0220\u020d\3\2"+ + "\2\2\u0220\u0214\3\2\2\2\u0221\23\3\2\2\2\u0222\u0226\7C\2\2\u0223\u0225"+ + "\5\u00e8u\2\u0224\u0223\3\2\2\2\u0225\u0228\3\2\2\2\u0226\u0224\3\2\2"+ + "\2\u0226\u0227\3\2\2\2\u0227\u0229\3\2\2\2\u0228\u0226\3\2\2\2\u0229\u022b"+ + "\7h\2\2\u022a\u022c\5,\27\2\u022b\u022a\3\2\2\2\u022b\u022c\3\2\2\2\u022c"+ + "\25\3\2\2\2\u022d\u022f\5\u00e8u\2\u022e\u022d\3\2\2\2\u022f\u0232\3\2"+ + "\2\2\u0230\u022e\3\2\2\2\u0230\u0231\3\2\2\2\u0231\u0233\3\2\2\2\u0232"+ + "\u0230\3\2\2\2\u0233\u0235\7h\2\2\u0234\u0236\5,\27\2\u0235\u0234\3\2"+ + "\2\2\u0235\u0236\3\2\2\2\u0236\27\3\2\2\2\u0237\u0238\5\22\n\2\u0238\31"+ + "\3\2\2\2\u0239\u023a\5\24\13\2\u023a\33\3\2\2\2\u023b\u023c\5\26\f\2\u023c"+ + "\35\3\2\2\2\u023d\u023f\5\u00e8u\2\u023e\u023d\3\2\2\2\u023f\u0242\3\2"+ + "\2\2\u0240\u023e\3\2\2\2\u0240\u0241\3\2\2\2\u0241\u0243\3\2\2\2\u0242"+ + "\u0240\3\2\2\2\u0243\u0244\7h\2\2\u0244\37\3\2\2\2\u0245\u0246\5\6\4\2"+ + "\u0246\u0247\5\"\22\2\u0247\u024f\3\2\2\2\u0248\u0249\5\20\t\2\u0249\u024a"+ + "\5\"\22\2\u024a\u024f\3\2\2\2\u024b\u024c\5\36\20\2\u024c\u024d\5\"\22"+ + "\2\u024d\u024f\3\2\2\2\u024e\u0245\3\2\2\2\u024e\u0248\3\2\2\2\u024e\u024b"+ + "\3\2\2\2\u024f!\3\2\2\2\u0250\u0252\5\u00e8u\2\u0251\u0250\3\2\2\2\u0252"+ + "\u0255\3\2\2\2\u0253\u0251\3\2\2\2\u0253\u0254\3\2\2\2\u0254\u0256\3\2"+ + "\2\2\u0255\u0253\3\2\2\2\u0256\u0257\7?\2\2\u0257\u0262\7@\2\2\u0258\u025a"+ + "\5\u00e8u\2\u0259\u0258\3\2\2\2\u025a\u025d\3\2\2\2\u025b\u0259\3\2\2"+ + "\2\u025b\u025c\3\2\2\2\u025c\u025e\3\2\2\2\u025d\u025b\3\2\2\2\u025e\u025f"+ + "\7?\2\2\u025f\u0261\7@\2\2\u0260\u025b\3\2\2\2\u0261\u0264\3\2\2\2\u0262"+ + "\u0260\3\2\2\2\u0262\u0263\3\2\2\2\u0263#\3\2\2\2\u0264\u0262\3\2\2\2"+ + "\u0265\u0267\5&\24\2\u0266\u0265\3\2\2\2\u0267\u026a\3\2\2\2\u0268\u0266"+ + "\3\2\2\2\u0268\u0269\3\2\2\2\u0269\u026b\3\2\2\2\u026a\u0268\3\2\2\2\u026b"+ + "\u026d\7h\2\2\u026c\u026e\5(\25\2\u026d\u026c\3\2\2\2\u026d\u026e\3\2"+ + "\2\2\u026e%\3\2\2\2\u026f\u0270\5\u00e8u\2\u0270\'\3\2\2\2\u0271\u0272"+ + "\7\23\2\2\u0272\u027c\5\36\20\2\u0273\u0274\7\23\2\2\u0274\u0278\5\20"+ + "\t\2\u0275\u0277\5*\26\2\u0276\u0275\3\2\2\2\u0277\u027a\3\2\2\2\u0278"+ + "\u0276\3\2\2\2\u0278\u0279\3\2\2\2\u0279\u027c\3\2\2\2\u027a\u0278\3\2"+ + "\2\2\u027b\u0271\3\2\2\2\u027b\u0273\3\2\2\2\u027c)\3\2\2\2\u027d\u027e"+ + "\7W\2\2\u027e\u027f\5\30\r\2\u027f+\3\2\2\2\u0280\u0281\7F\2\2\u0281\u0282"+ + "\5.\30\2\u0282\u0283\7E\2\2\u0283-\3\2\2\2\u0284\u0289\5\60\31\2\u0285"+ + "\u0286\7B\2\2\u0286\u0288\5\60\31\2\u0287\u0285\3\2\2\2\u0288\u028b\3"+ + "\2\2\2\u0289\u0287\3\2\2\2\u0289\u028a\3\2\2\2\u028a/\3\2\2\2\u028b\u0289"+ + "\3\2\2\2\u028c\u028f\5\16\b\2\u028d\u028f\5\62\32\2\u028e\u028c\3\2\2"+ + "\2\u028e\u028d\3\2\2\2\u028f\61\3\2\2\2\u0290\u0292\5\u00e8u\2\u0291\u0290"+ + "\3\2\2\2\u0292\u0295\3\2\2\2\u0293\u0291\3\2\2\2\u0293\u0294\3\2\2\2\u0294"+ + "\u0296\3\2\2\2\u0295\u0293\3\2\2\2\u0296\u0298\7I\2\2\u0297\u0299\5\64"+ + "\33\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299\63\3\2\2\2\u029a\u029b"+ + "\7\23\2\2\u029b\u029f\5\16\b\2\u029c\u029d\7*\2\2\u029d\u029f\5\16\b\2"+ + "\u029e\u029a\3\2\2\2\u029e\u029c\3\2\2\2\u029f\65\3\2\2\2\u02a0\u02a1"+ + "\b\34\1\2\u02a1\u02a2\7h\2\2\u02a2\u02a8\3\2\2\2\u02a3\u02a4\f\3\2\2\u02a4"+ + "\u02a5\7C\2\2\u02a5\u02a7\7h\2\2\u02a6\u02a3\3\2\2\2\u02a7\u02aa\3\2\2"+ + "\2\u02a8\u02a6\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\67\3\2\2\2\u02aa\u02a8"+ + "\3\2\2\2\u02ab\u02b1\7h\2\2\u02ac\u02ad\5:\36\2\u02ad\u02ae\7C\2\2\u02ae"+ + "\u02af\7h\2\2\u02af\u02b1\3\2\2\2\u02b0\u02ab\3\2\2\2\u02b0\u02ac\3\2"+ + "\2\2\u02b19\3\2\2\2\u02b2\u02b3\b\36\1\2\u02b3\u02b4\7h\2\2\u02b4\u02ba"+ + "\3\2\2\2\u02b5\u02b6\f\3\2\2\u02b6\u02b7\7C\2\2\u02b7\u02b9\7h\2\2\u02b8"+ + "\u02b5\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02bb\3\2"+ + "\2\2\u02bb;\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bd\u02c3\7h\2\2\u02be\u02bf"+ + "\5@!\2\u02bf\u02c0\7C\2\2\u02c0\u02c1\7h\2\2\u02c1\u02c3\3\2\2\2\u02c2"+ + "\u02bd\3\2\2\2\u02c2\u02be\3\2\2\2\u02c3=\3\2\2\2\u02c4\u02c5\7h\2\2\u02c5"+ + "?\3\2\2\2\u02c6\u02c7\b!\1\2\u02c7\u02c8\7h\2\2\u02c8\u02ce\3\2\2\2\u02c9"+ + "\u02ca\f\3\2\2\u02ca\u02cb\7C\2\2\u02cb\u02cd\7h\2\2\u02cc\u02c9\3\2\2"+ + "\2\u02cd\u02d0\3\2\2\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cfA"+ + "\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d1\u02d3\5D#\2\u02d2\u02d1\3\2\2\2\u02d2"+ + "\u02d3\3\2\2\2\u02d3\u02d7\3\2\2\2\u02d4\u02d6\5H%\2\u02d5\u02d4\3\2\2"+ + "\2\u02d6\u02d9\3\2\2\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02dd"+ + "\3\2\2\2\u02d9\u02d7\3\2\2\2\u02da\u02dc\5R*\2\u02db\u02da\3\2\2\2\u02dc"+ + "\u02df\3\2\2\2\u02dd\u02db\3\2\2\2\u02dd\u02de\3\2\2\2\u02de\u02e0\3\2"+ + "\2\2\u02df\u02dd\3\2\2\2\u02e0\u02e1\7\2\2\3\u02e1C\3\2\2\2\u02e2\u02e4"+ + "\5F$\2\u02e3\u02e2\3\2\2\2\u02e4\u02e7\3\2\2\2\u02e5\u02e3\3\2\2\2\u02e5"+ + "\u02e6\3\2\2\2\u02e6\u02e8\3\2\2\2\u02e7\u02e5\3\2\2\2\u02e8\u02e9\7\""+ + "\2\2\u02e9\u02ee\7h\2\2\u02ea\u02eb\7C\2\2\u02eb\u02ed\7h\2\2\u02ec\u02ea"+ + "\3\2\2\2\u02ed\u02f0\3\2\2\2\u02ee\u02ec\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef"+ + "\u02f1\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f1\u02f2\7A\2\2\u02f2E\3\2\2\2\u02f3"+ + "\u02f4\5\u00e8u\2\u02f4G\3\2\2\2\u02f5\u02fa\5J&\2\u02f6\u02fa\5L\'\2"+ + "\u02f7\u02fa\5N(\2\u02f8\u02fa\5P)\2\u02f9\u02f5\3\2\2\2\u02f9\u02f6\3"+ + "\2\2\2\u02f9\u02f7\3\2\2\2\u02f9\u02f8\3\2\2\2\u02faI\3\2\2\2\u02fb\u02fc"+ + "\7\33\2\2\u02fc\u02fd\58\35\2\u02fd\u02fe\7A\2\2\u02feK\3\2\2\2\u02ff"+ + "\u0300\7\33\2\2\u0300\u0301\5:\36\2\u0301\u0302\7C\2\2\u0302\u0303\7U"+ + "\2\2\u0303\u0304\7A\2\2\u0304M\3\2\2\2\u0305\u0306\7\33\2\2\u0306\u0307"+ + "\7(\2\2\u0307\u0308\58\35\2\u0308\u0309\7C\2\2\u0309\u030a\7h\2\2\u030a"+ + "\u030b\7A\2\2\u030bO\3\2\2\2\u030c\u030d\7\33\2\2\u030d\u030e\7(\2\2\u030e"+ + "\u030f\58\35\2\u030f\u0310\7C\2\2\u0310\u0311\7U\2\2\u0311\u0312\7A\2"+ + "\2\u0312Q\3\2\2\2\u0313\u0317\5T+\2\u0314\u0317\5\u00c8e\2\u0315\u0317"+ + "\7A\2\2\u0316\u0313\3\2\2\2\u0316\u0314\3\2\2\2\u0316\u0315\3\2\2\2\u0317"+ + "S\3\2\2\2\u0318\u031b\5V,\2\u0319\u031b\5\u00bc_\2\u031a\u0318\3\2\2\2"+ + "\u031a\u0319\3\2\2\2\u031bU\3\2\2\2\u031c\u031e\5X-\2\u031d\u031c\3\2"+ + "\2\2\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u031f\u0320\3\2\2\2\u0320"+ + "\u0322\3\2\2\2\u0321\u031f\3\2\2\2\u0322\u0323\7\13\2\2\u0323\u0325\7"+ + "h\2\2\u0324\u0326\5Z.\2\u0325\u0324\3\2\2\2\u0325\u0326\3\2\2\2\u0326"+ + "\u0328\3\2\2\2\u0327\u0329\5^\60\2\u0328\u0327\3\2\2\2\u0328\u0329\3\2"+ + "\2\2\u0329\u032b\3\2\2\2\u032a\u032c\5`\61\2\u032b\u032a\3\2\2\2\u032b"+ + "\u032c\3\2\2\2\u032c\u032d\3\2\2\2\u032d\u032e\5d\63\2\u032eW\3\2\2\2"+ + "\u032f\u0338\5\u00e8u\2\u0330\u0338\7%\2\2\u0331\u0338\7$\2\2\u0332\u0338"+ + "\7#\2\2\u0333\u0338\7\3\2\2\u0334\u0338\7(\2\2\u0335\u0338\7\24\2\2\u0336"+ + "\u0338\7)\2\2\u0337\u032f\3\2\2\2\u0337\u0330\3\2\2\2\u0337\u0331\3\2"+ + "\2\2\u0337\u0332\3\2\2\2\u0337\u0333\3\2\2\2\u0337\u0334\3\2\2\2\u0337"+ + "\u0335\3\2\2\2\u0337\u0336\3\2\2\2\u0338Y\3\2\2\2\u0339\u033a\7F\2\2\u033a"+ + "\u033b\5\\/\2\u033b\u033c\7E\2\2\u033c[\3\2\2\2\u033d\u0342\5$\23\2\u033e"+ + "\u033f\7B\2\2\u033f\u0341\5$\23\2\u0340\u033e\3\2\2\2\u0341\u0344\3\2"+ + "\2\2\u0342\u0340\3\2\2\2\u0342\u0343\3\2\2\2\u0343]\3\2\2\2\u0344\u0342"+ + "\3\2\2\2\u0345\u0346\7\23\2\2\u0346\u0347\5\22\n\2\u0347_\3\2\2\2\u0348"+ + "\u0349\7\32\2\2\u0349\u034a\5b\62\2\u034aa\3\2\2\2\u034b\u0350\5\30\r"+ + "\2\u034c\u034d\7B\2\2\u034d\u034f\5\30\r\2\u034e\u034c\3\2\2\2\u034f\u0352"+ + "\3\2\2\2\u0350\u034e\3\2\2\2\u0350\u0351\3\2\2\2\u0351c\3\2\2\2\u0352"+ + "\u0350\3\2\2\2\u0353\u0357\7=\2\2\u0354\u0356\5f\64\2\u0355\u0354\3\2"+ + "\2\2\u0356\u0359\3\2\2\2\u0357\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358"+ + "\u035a\3\2\2\2\u0359\u0357\3\2\2\2\u035a\u035b\7>\2\2\u035be\3\2\2\2\u035c"+ + "\u0361\5h\65\2\u035d\u0361\5\u00acW\2\u035e\u0361\5\u00aeX\2\u035f\u0361"+ + "\5\u00b0Y\2\u0360\u035c\3\2\2\2\u0360\u035d\3\2\2\2\u0360\u035e\3\2\2"+ + "\2\u0360\u035f\3\2\2\2\u0361g\3\2\2\2\u0362\u0368\5j\66\2\u0363\u0368"+ + "\5\u008eH\2\u0364\u0368\5T+\2\u0365\u0368\5\u00c8e\2\u0366\u0368\7A\2"+ + "\2\u0367\u0362\3\2\2\2\u0367\u0363\3\2\2\2\u0367\u0364\3\2\2\2\u0367\u0365"+ + "\3\2\2\2\u0367\u0366\3\2\2\2\u0368i\3\2\2\2\u0369\u036b\5l\67\2\u036a"+ + "\u0369\3\2\2\2\u036b\u036e\3\2\2\2\u036c\u036a\3\2\2\2\u036c\u036d\3\2"+ + "\2\2\u036d\u0370\3\2\2\2\u036e\u036c\3\2\2\2\u036f\u0371\5v<\2\u0370\u036f"+ + "\3\2\2\2\u0370\u0371\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373\5n8\2\u0373"+ + "\u0374\7A\2\2\u0374k\3\2\2\2\u0375\u037e\5\u00e8u\2\u0376\u037e\7%\2\2"+ + "\u0377\u037e\7$\2\2\u0378\u037e\7#\2\2\u0379\u037e\7(\2\2\u037a\u037e"+ + "\7\24\2\2\u037b\u037e\7\60\2\2\u037c\u037e\7\63\2\2\u037d\u0375\3\2\2"+ + "\2\u037d\u0376\3\2\2\2\u037d\u0377\3\2\2\2\u037d\u0378\3\2\2\2\u037d\u0379"+ + "\3\2\2\2\u037d\u037a\3\2\2\2\u037d\u037b\3\2\2\2\u037d\u037c\3\2\2\2\u037e"+ + "m\3\2\2\2\u037f\u0384\5p9\2\u0380\u0381\7B\2\2\u0381\u0383\5p9\2\u0382"+ + "\u0380\3\2\2\2\u0383\u0386\3\2\2\2\u0384\u0382\3\2\2\2\u0384\u0385\3\2"+ + "\2\2\u0385o\3\2\2\2\u0386\u0384\3\2\2\2\u0387\u038a\5r:\2\u0388\u0389"+ + "\7D\2\2\u0389\u038b\5t;\2\u038a\u0388\3\2\2\2\u038a\u038b\3\2\2\2\u038b"+ + "q\3\2\2\2\u038c\u038e\7h\2\2\u038d\u038f\5\"\22\2\u038e\u038d\3\2\2\2"+ + "\u038e\u038f\3\2\2\2\u038fs\3\2\2\2\u0390\u0393\5\u01a0\u00d1\2\u0391"+ + "\u0393\5\u00fa~\2\u0392\u0390\3\2\2\2\u0392\u0391\3\2\2\2\u0393u\3\2\2"+ + "\2\u0394\u0397\5x=\2\u0395\u0397\5z>\2\u0396\u0394\3\2\2\2\u0396\u0395"+ + "\3\2\2\2\u0397w\3\2\2\2\u0398\u039b\5\b\5\2\u0399\u039b\7\5\2\2\u039a"+ + "\u0398\3\2\2\2\u039a\u0399\3\2\2\2\u039by\3\2\2\2\u039c\u03a0\5|?\2\u039d"+ + "\u03a0\5\u008aF\2\u039e\u03a0\5\u008cG\2\u039f\u039c\3\2\2\2\u039f\u039d"+ + "\3\2\2\2\u039f\u039e\3\2\2\2\u03a0{\3\2\2\2\u03a1\u03a4\5\u0082B\2\u03a2"+ + "\u03a4\5\u0088E\2\u03a3\u03a1\3\2\2\2\u03a3\u03a2\3\2\2\2\u03a4\u03a9"+ + "\3\2\2\2\u03a5\u03a8\5\u0080A\2\u03a6\u03a8\5\u0086D\2\u03a7\u03a5\3\2"+ + "\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03ab\3\2\2\2\u03a9\u03a7\3\2\2\2\u03a9"+ + "\u03aa\3\2\2\2\u03aa}\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac\u03ae\7h\2\2\u03ad"+ + "\u03af\5,\27\2\u03ae\u03ad\3\2\2\2\u03ae\u03af\3\2\2\2\u03af\u03bd\3\2"+ + "\2\2\u03b0\u03b1\5|?\2\u03b1\u03b5\7C\2\2\u03b2\u03b4\5\u00e8u\2\u03b3"+ + "\u03b2\3\2\2\2\u03b4\u03b7\3\2\2\2\u03b5\u03b3\3\2\2\2\u03b5\u03b6\3\2"+ + "\2\2\u03b6\u03b8\3\2\2\2\u03b7\u03b5\3\2\2\2\u03b8\u03ba\7h\2\2\u03b9"+ + "\u03bb\5,\27\2\u03ba\u03b9\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bd\3\2"+ + "\2\2\u03bc\u03ac\3\2\2\2\u03bc\u03b0\3\2\2\2\u03bd\177\3\2\2\2\u03be\u03c2"+ + "\7C\2\2\u03bf\u03c1\5\u00e8u\2\u03c0\u03bf\3\2\2\2\u03c1\u03c4\3\2\2\2"+ + "\u03c2\u03c0\3\2\2\2\u03c2\u03c3\3\2\2\2\u03c3\u03c5\3\2\2\2\u03c4\u03c2"+ + "\3\2\2\2\u03c5\u03c7\7h\2\2\u03c6\u03c8\5,\27\2\u03c7\u03c6\3\2\2\2\u03c7"+ + "\u03c8\3\2\2\2\u03c8\u0081\3\2\2\2\u03c9\u03cb\7h\2\2\u03ca\u03cc\5,\27"+ + "\2\u03cb\u03ca\3\2\2\2\u03cb\u03cc\3\2\2\2\u03cc\u0083\3\2\2\2\u03cd\u03ce"+ + "\5~@\2\u03ce\u0085\3\2\2\2\u03cf\u03d0\5\u0080A\2\u03d0\u0087\3\2\2\2"+ + "\u03d1\u03d2\5\u0082B\2\u03d2\u0089\3\2\2\2\u03d3\u03d4\7h\2\2\u03d4\u008b"+ + "\3\2\2\2\u03d5\u03d6\5x=\2\u03d6\u03d7\5\"\22\2\u03d7\u03df\3\2\2\2\u03d8"+ + "\u03d9\5|?\2\u03d9\u03da\5\"\22\2\u03da\u03df\3\2\2\2\u03db\u03dc\5\u008a"+ + "F\2\u03dc\u03dd\5\"\22\2\u03dd\u03df\3\2\2\2\u03de\u03d5\3\2\2\2\u03de"+ + "\u03d8\3\2\2\2\u03de\u03db\3\2\2\2\u03df\u008d\3\2\2\2\u03e0\u03e2\5\u0090"+ + "I\2\u03e1\u03e0\3\2\2\2\u03e2\u03e5\3\2\2\2\u03e3\u03e1\3\2\2\2\u03e3"+ + "\u03e4\3\2\2\2\u03e4\u03e6\3\2\2\2\u03e5\u03e3\3\2\2\2\u03e6\u03e7\5\u0092"+ + "J\2\u03e7\u03e8\5\u00aaV\2\u03e8\u008f\3\2\2\2\u03e9\u03f4\5\u00e8u\2"+ + "\u03ea\u03f4\7%\2\2\u03eb\u03f4\7$\2\2\u03ec\u03f4\7#\2\2\u03ed\u03f4"+ + "\7\3\2\2\u03ee\u03f4\7(\2\2\u03ef\u03f4\7\24\2\2\u03f0\u03f4\7,\2\2\u03f1"+ + "\u03f4\7 \2\2\u03f2\u03f4\7)\2\2\u03f3\u03e9\3\2\2\2\u03f3\u03ea\3\2\2"+ + "\2\u03f3\u03eb\3\2\2\2\u03f3\u03ec\3\2\2\2\u03f3\u03ed\3\2\2\2\u03f3\u03ee"+ + "\3\2\2\2\u03f3\u03ef\3\2\2\2\u03f3\u03f0\3\2\2\2\u03f3\u03f1\3\2\2\2\u03f3"+ + "\u03f2\3\2\2\2\u03f4\u0091\3\2\2\2\u03f5\u03f7\5\u0094K\2\u03f6\u03f5"+ + "\3\2\2\2\u03f6\u03f7\3\2\2\2\u03f7\u03f8\3\2\2\2\u03f8\u03fa\5\u0096L"+ + "\2\u03f9\u03fb\5\u00a4S\2\u03fa\u03f9\3\2\2\2\u03fa\u03fb\3\2\2\2\u03fb"+ + "\u0409\3\2\2\2\u03fc\u0400\5Z.\2\u03fd\u03ff\5\u00e8u\2\u03fe\u03fd\3"+ + "\2\2\2\u03ff\u0402\3\2\2\2\u0400\u03fe\3\2\2\2\u0400\u0401\3\2\2\2\u0401"+ + "\u0403\3\2\2\2\u0402\u0400\3\2\2\2\u0403\u0404\5\u0094K\2\u0404\u0406"+ + "\5\u0096L\2\u0405\u0407\5\u00a4S\2\u0406\u0405\3\2\2\2\u0406\u0407\3\2"+ + "\2\2\u0407\u0409\3\2\2\2\u0408\u03f6\3\2\2\2\u0408\u03fc\3\2\2\2\u0409"+ + "\u0093\3\2\2\2\u040a\u040d\5v<\2\u040b\u040d\7\62\2\2\u040c\u040a\3\2"+ + "\2\2\u040c\u040b\3\2\2\2\u040d\u0095\3\2\2\2\u040e\u040f\7h\2\2\u040f"+ + "\u0411\7;\2\2\u0410\u0412\5\u0098M\2\u0411\u0410\3\2\2\2\u0411\u0412\3"+ + "\2\2\2\u0412\u0413\3\2\2\2\u0413\u0415\7<\2\2\u0414\u0416\5\"\22\2\u0415"+ + "\u0414\3\2\2\2\u0415\u0416\3\2\2\2\u0416\u0097\3\2\2\2\u0417\u0418\5\u009a"+ + "N\2\u0418\u0419\7B\2\2\u0419\u041a\5\u00a0Q\2\u041a\u041d\3\2\2\2\u041b"+ + "\u041d\5\u00a0Q\2\u041c\u0417\3\2\2\2\u041c\u041b\3\2\2\2\u041d\u0099"+ + "\3\2\2\2\u041e\u0423\5\u009cO\2\u041f\u0420\7B\2\2\u0420\u0422\5\u009c"+ + "O\2\u0421\u041f\3\2\2\2\u0422\u0425\3\2\2\2\u0423\u0421\3\2\2\2\u0423"+ + "\u0424\3\2\2\2\u0424\u042f\3\2\2\2\u0425\u0423\3\2\2\2\u0426\u042b\5\u00a2"+ + "R\2\u0427\u0428\7B\2\2\u0428\u042a\5\u009cO\2\u0429\u0427\3\2\2\2\u042a"+ + "\u042d\3\2\2\2\u042b\u0429\3\2\2\2\u042b\u042c\3\2\2\2\u042c\u042f\3\2"+ + "\2\2\u042d\u042b\3\2\2\2\u042e\u041e\3\2\2\2\u042e\u0426\3\2\2\2\u042f"+ + "\u009b\3\2\2\2\u0430\u0432\5\u009eP\2\u0431\u0430\3\2\2\2\u0432\u0435"+ + "\3\2\2\2\u0433\u0431\3\2\2\2\u0433\u0434\3\2\2\2\u0434\u0437\3\2\2\2\u0435"+ + "\u0433\3\2\2\2\u0436\u0438\5v<\2\u0437\u0436\3\2\2\2\u0437\u0438\3\2\2"+ + "\2\u0438\u0439\3\2\2\2\u0439\u043a\5r:\2\u043a\u009d\3\2\2\2\u043b\u043e"+ + "\5\u00e8u\2\u043c\u043e\7\24\2\2\u043d\u043b\3\2\2\2\u043d\u043c\3\2\2"+ + "\2\u043e\u009f\3\2\2\2\u043f\u0441\5\u009eP\2\u0440\u043f\3\2\2\2\u0441"+ + "\u0444\3\2\2\2\u0442\u0440\3\2\2\2\u0442\u0443\3\2\2\2\u0443\u0445\3\2"+ + "\2\2\u0444\u0442\3\2\2\2\u0445\u0449\5v<\2\u0446\u0448\5\u00e8u\2\u0447"+ + "\u0446\3\2\2\2\u0448\u044b\3\2\2\2\u0449\u0447\3\2\2\2\u0449\u044a\3\2"+ + "\2\2\u044a\u044c\3\2\2\2\u044b\u0449\3\2\2\2\u044c\u044d\7j\2\2\u044d"+ + "\u044e\5r:\2\u044e\u0451\3\2\2\2\u044f\u0451\5\u009cO\2\u0450\u0442\3"+ + "\2\2\2\u0450\u044f\3\2\2\2\u0451\u00a1\3\2\2\2\u0452\u0454\5\u00e8u\2"+ + "\u0453\u0452\3\2\2\2\u0454\u0457\3\2\2\2\u0455\u0453\3\2\2\2\u0455\u0456"+ + "\3\2\2\2\u0456\u0458\3\2\2\2\u0457\u0455\3\2\2\2\u0458\u045b\5v<\2\u0459"+ + "\u045a\7h\2\2\u045a\u045c\7C\2\2\u045b\u0459\3\2\2\2\u045b\u045c\3\2\2"+ + "\2\u045c\u045d\3\2\2\2\u045d\u045e\7-\2\2\u045e\u00a3\3\2\2\2\u045f\u0460"+ + "\7/\2\2\u0460\u0461\5\u00a6T\2\u0461\u00a5\3\2\2\2\u0462\u0467\5\u00a8"+ + "U\2\u0463\u0464\7B\2\2\u0464\u0466\5\u00a8U\2\u0465\u0463\3\2\2\2\u0466"+ + "\u0469\3\2\2\2\u0467\u0465\3\2\2\2\u0467\u0468\3\2\2\2\u0468\u00a7\3\2"+ + "\2\2\u0469\u0467\3\2\2\2\u046a\u046d\5\22\n\2\u046b\u046d\5\36\20\2\u046c"+ + "\u046a\3\2\2\2\u046c\u046b\3\2\2\2\u046d\u00a9\3\2\2\2\u046e\u0471\5\u00fe"+ + "\u0080\2\u046f\u0471\7A\2\2\u0470\u046e\3\2\2\2\u0470\u046f\3\2\2\2\u0471"+ + "\u00ab\3\2\2\2\u0472\u0473\5\u00fe\u0080\2\u0473\u00ad\3\2\2\2\u0474\u0475"+ + "\7(\2\2\u0475\u0476\5\u00fe\u0080\2\u0476\u00af\3\2\2\2\u0477\u0479\5"+ + "\u00b2Z\2\u0478\u0477\3\2\2\2\u0479\u047c\3\2\2\2\u047a\u0478\3\2\2\2"+ + "\u047a\u047b\3\2\2\2\u047b\u047d\3\2\2\2\u047c\u047a\3\2\2\2\u047d\u047f"+ + "\5\u00b4[\2\u047e\u0480\5\u00a4S\2\u047f\u047e\3\2\2\2\u047f\u0480\3\2"+ + "\2\2\u0480\u0481\3\2\2\2\u0481\u0482\5\u00b8]\2\u0482\u00b1\3\2\2\2\u0483"+ + "\u0488\5\u00e8u\2\u0484\u0488\7%\2\2\u0485\u0488\7$\2\2\u0486\u0488\7"+ + "#\2\2\u0487\u0483\3\2\2\2\u0487\u0484\3\2\2\2\u0487\u0485\3\2\2\2\u0487"+ + "\u0486\3\2\2\2\u0488\u00b3\3\2\2\2\u0489\u048b\5Z.\2\u048a\u0489\3\2\2"+ + "\2\u048a\u048b\3\2\2\2\u048b\u048c\3\2\2\2\u048c\u048d\5\u00b6\\\2\u048d"+ + "\u048f\7;\2\2\u048e\u0490\5\u0098M\2\u048f\u048e\3\2\2\2\u048f\u0490\3"+ + "\2\2\2\u0490\u0491\3\2\2\2\u0491\u0492\7<\2\2\u0492\u00b5\3\2\2\2\u0493"+ + "\u0494\7h\2\2\u0494\u00b7\3\2\2\2\u0495\u0497\7=\2\2\u0496\u0498\5\u00ba"+ + "^\2\u0497\u0496\3\2\2\2\u0497\u0498\3\2\2\2\u0498\u049a\3\2\2\2\u0499"+ + "\u049b\5\u0100\u0081\2\u049a\u0499\3\2\2\2\u049a\u049b\3\2\2\2\u049b\u049c"+ + "\3\2\2\2\u049c\u049d\7>\2\2\u049d\u00b9\3\2\2\2\u049e\u04a0\5,\27\2\u049f"+ + "\u049e\3\2\2\2\u049f\u04a0\3\2\2\2\u04a0\u04a1\3\2\2\2\u04a1\u04a2\7-"+ + "\2\2\u04a2\u04a4\7;\2\2\u04a3\u04a5\5\u0190\u00c9\2\u04a4\u04a3\3\2\2"+ + "\2\u04a4\u04a5\3\2\2\2\u04a5\u04a6\3\2\2\2\u04a6\u04a7\7<\2\2\u04a7\u04cd"+ + "\7A\2\2\u04a8\u04aa\5,\27\2\u04a9\u04a8\3\2\2\2\u04a9\u04aa\3\2\2\2\u04aa"+ + "\u04ab\3\2\2\2\u04ab\u04ac\7*\2\2\u04ac\u04ae\7;\2\2\u04ad\u04af\5\u0190"+ + "\u00c9\2\u04ae\u04ad\3\2\2\2\u04ae\u04af\3\2\2\2\u04af\u04b0\3\2\2\2\u04b0"+ + "\u04b1\7<\2\2\u04b1\u04cd\7A\2\2\u04b2\u04b3\5<\37\2\u04b3\u04b5\7C\2"+ + "\2\u04b4\u04b6\5,\27\2\u04b5\u04b4\3\2\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04b7"+ + "\3\2\2\2\u04b7\u04b8\7*\2\2\u04b8\u04ba\7;\2\2\u04b9\u04bb\5\u0190\u00c9"+ + "\2\u04ba\u04b9\3\2\2\2\u04ba\u04bb\3\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd"+ + "\7<\2\2\u04bd\u04be\7A\2\2\u04be\u04cd\3\2\2\2\u04bf\u04c0\5\u0162\u00b2"+ + "\2\u04c0\u04c2\7C\2\2\u04c1\u04c3\5,\27\2\u04c2\u04c1\3\2\2\2\u04c2\u04c3"+ + "\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4\u04c5\7*\2\2\u04c5\u04c7\7;\2\2\u04c6"+ + "\u04c8\5\u0190\u00c9\2\u04c7\u04c6\3\2\2\2\u04c7\u04c8\3\2\2\2\u04c8\u04c9"+ + "\3\2\2\2\u04c9\u04ca\7<\2\2\u04ca\u04cb\7A\2\2\u04cb\u04cd\3\2\2\2\u04cc"+ + "\u049f\3\2\2\2\u04cc\u04a9\3\2\2\2\u04cc\u04b2\3\2\2\2\u04cc\u04bf\3\2"+ + "\2\2\u04cd\u00bb\3\2\2\2\u04ce\u04d0\5X-\2\u04cf\u04ce\3\2\2\2\u04d0\u04d3"+ + "\3\2\2\2\u04d1\u04cf\3\2\2\2\u04d1\u04d2\3\2\2\2\u04d2\u04d4\3\2\2\2\u04d3"+ + "\u04d1\3\2\2\2\u04d4\u04d5\7\22\2\2\u04d5\u04d7\7h\2\2\u04d6\u04d8\5`"+ + "\61\2\u04d7\u04d6\3\2\2\2\u04d7\u04d8\3\2\2\2\u04d8\u04d9\3\2\2\2\u04d9"+ + "\u04da\5\u00be`\2\u04da\u00bd\3\2\2\2\u04db\u04dd\7=\2\2\u04dc\u04de\5"+ + "\u00c0a\2\u04dd\u04dc\3\2\2\2\u04dd\u04de\3\2\2\2\u04de\u04e0\3\2\2\2"+ + "\u04df\u04e1\7B\2\2\u04e0\u04df\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e3"+ + "\3\2\2\2\u04e2\u04e4\5\u00c6d\2\u04e3\u04e2\3\2\2\2\u04e3\u04e4\3\2\2"+ + "\2\u04e4\u04e5\3\2\2\2\u04e5\u04e6\7>\2\2\u04e6\u00bf\3\2\2\2\u04e7\u04ec"+ + "\5\u00c2b\2\u04e8\u04e9\7B\2\2\u04e9\u04eb\5\u00c2b\2\u04ea\u04e8\3\2"+ + "\2\2\u04eb\u04ee\3\2\2\2\u04ec\u04ea\3\2\2\2\u04ec\u04ed\3\2\2\2\u04ed"+ + "\u00c1\3\2\2\2\u04ee\u04ec\3\2\2\2\u04ef\u04f1\5\u00c4c\2\u04f0\u04ef"+ + "\3\2\2\2\u04f1\u04f4\3\2\2\2\u04f2\u04f0\3\2\2\2\u04f2\u04f3\3\2\2\2\u04f3"+ + "\u04f5\3\2\2\2\u04f4\u04f2\3\2\2\2\u04f5\u04fb\7h\2\2\u04f6\u04f8\7;\2"+ + "\2\u04f7\u04f9\5\u0190\u00c9\2\u04f8\u04f7\3\2\2\2\u04f8\u04f9\3\2\2\2"+ + "\u04f9\u04fa\3\2\2\2\u04fa\u04fc\7<\2\2\u04fb\u04f6\3\2\2\2\u04fb\u04fc"+ + "\3\2\2\2\u04fc\u04fe\3\2\2\2\u04fd\u04ff\5d\63\2\u04fe\u04fd\3\2\2\2\u04fe"+ + "\u04ff\3\2\2\2\u04ff\u00c3\3\2\2\2\u0500\u0501\5\u00e8u\2\u0501\u00c5"+ + "\3\2\2\2\u0502\u0506\7A\2\2\u0503\u0505\5f\64\2\u0504\u0503\3\2\2\2\u0505"+ + "\u0508\3\2\2\2\u0506\u0504\3\2\2\2\u0506\u0507\3\2\2\2\u0507\u00c7\3\2"+ + "\2\2\u0508\u0506\3\2\2\2\u0509\u050c\5\u00caf\2\u050a\u050c\5\u00dco\2"+ + "\u050b\u0509\3\2\2\2\u050b\u050a\3\2\2\2\u050c\u00c9\3\2\2\2\u050d\u050f"+ + "\5\u00ccg\2\u050e\u050d\3\2\2\2\u050f\u0512\3\2\2\2\u0510\u050e\3\2\2"+ + "\2\u0510\u0511\3\2\2\2\u0511\u0513\3\2\2\2\u0512\u0510\3\2\2\2\u0513\u0514"+ + "\7\36\2\2\u0514\u0516\7h\2\2\u0515\u0517\5Z.\2\u0516\u0515\3\2\2\2\u0516"+ + "\u0517\3\2\2\2\u0517\u0519\3\2\2\2\u0518\u051a\5\u00ceh\2\u0519\u0518"+ + "\3\2\2\2\u0519\u051a\3\2\2\2\u051a\u051b\3\2\2\2\u051b\u051c\5\u00d0i"+ + "\2\u051c\u00cb\3\2\2\2\u051d\u0525\5\u00e8u\2\u051e\u0525\7%\2\2\u051f"+ + "\u0525\7$\2\2\u0520\u0525\7#\2\2\u0521\u0525\7\3\2\2\u0522\u0525\7(\2"+ + "\2\u0523\u0525\7)\2\2\u0524\u051d\3\2\2\2\u0524\u051e\3\2\2\2\u0524\u051f"+ + "\3\2\2\2\u0524\u0520\3\2\2\2\u0524\u0521\3\2\2\2\u0524\u0522\3\2\2\2\u0524"+ + "\u0523\3\2\2\2\u0525\u00cd\3\2\2\2\u0526\u0527\7\23\2\2\u0527\u0528\5"+ + "b\62\2\u0528\u00cf\3\2\2\2\u0529\u052d\7=\2\2\u052a\u052c\5\u00d2j\2\u052b"+ + "\u052a\3\2\2\2\u052c\u052f\3\2\2\2\u052d\u052b\3\2\2\2\u052d\u052e\3\2"+ + "\2\2\u052e\u0530\3\2\2\2\u052f\u052d\3\2\2\2\u0530\u0531\7>\2\2\u0531"+ + "\u00d1\3\2\2\2\u0532\u0538\5\u00d4k\2\u0533\u0538\5\u00d8m\2\u0534\u0538"+ + "\5T+\2\u0535\u0538\5\u00c8e\2\u0536\u0538\7A\2\2\u0537\u0532\3\2\2\2\u0537"+ + "\u0533\3\2\2\2\u0537\u0534\3\2\2\2\u0537\u0535\3\2\2\2\u0537\u0536\3\2"+ + "\2\2\u0538\u00d3\3\2\2\2\u0539\u053b\5\u00d6l\2\u053a\u0539\3\2\2\2\u053b"+ + "\u053e\3\2\2\2\u053c\u053a\3\2\2\2\u053c\u053d\3\2\2\2\u053d\u053f\3\2"+ + "\2\2\u053e\u053c\3\2\2\2\u053f\u0540\5v<\2\u0540\u0541\5n8\2\u0541\u0542"+ + "\7A\2\2\u0542\u00d5\3\2\2\2\u0543\u0548\5\u00e8u\2\u0544\u0548\7%\2\2"+ + "\u0545\u0548\7(\2\2\u0546\u0548\7\24\2\2\u0547\u0543\3\2\2\2\u0547\u0544"+ + "\3\2\2\2\u0547\u0545\3\2\2\2\u0547\u0546\3\2\2\2\u0548\u00d7\3\2\2\2\u0549"+ + "\u054b\5\u00dan\2\u054a\u0549\3\2\2\2\u054b\u054e\3\2\2\2\u054c\u054a"+ + "\3\2\2\2\u054c\u054d\3\2\2\2\u054d\u054f\3\2\2\2\u054e\u054c\3\2\2\2\u054f"+ + "\u0550\5\u0092J\2\u0550\u0551\5\u00aaV\2\u0551\u00d9\3\2\2\2\u0552\u0559"+ + "\5\u00e8u\2\u0553\u0559\7%\2\2\u0554\u0559\7\3\2\2\u0555\u0559\7\16\2"+ + "\2\u0556\u0559\7(\2\2\u0557\u0559\7)\2\2\u0558\u0552\3\2\2\2\u0558\u0553"+ + "\3\2\2\2\u0558\u0554\3\2\2\2\u0558\u0555\3\2\2\2\u0558\u0556\3\2\2\2\u0558"+ + "\u0557\3\2\2\2\u0559\u00db\3\2\2\2\u055a\u055c\5\u00ccg\2\u055b\u055a"+ + "\3\2\2\2\u055c\u055f\3\2\2\2\u055d\u055b\3\2\2\2\u055d\u055e\3\2\2\2\u055e"+ + "\u0560\3\2\2\2\u055f\u055d\3\2\2\2\u0560\u0561\7i\2\2\u0561\u0562\7\36"+ + "\2\2\u0562\u0563\7h\2\2\u0563\u0564\5\u00dep\2\u0564\u00dd\3\2\2\2\u0565"+ + "\u0569\7=\2\2\u0566\u0568\5\u00e0q\2\u0567\u0566\3\2\2\2\u0568\u056b\3"+ + "\2\2\2\u0569\u0567\3\2\2\2\u0569\u056a\3\2\2\2\u056a\u056c\3\2\2\2\u056b"+ + "\u0569\3\2\2\2\u056c\u056d\7>\2\2\u056d\u00df\3\2\2\2\u056e\u0574\5\u00e2"+ + "r\2\u056f\u0574\5\u00d4k\2\u0570\u0574\5T+\2\u0571\u0574\5\u00c8e\2\u0572"+ + "\u0574\7A\2\2\u0573\u056e\3\2\2\2\u0573\u056f\3\2\2\2\u0573\u0570\3\2"+ + "\2\2\u0573\u0571\3\2\2\2\u0573\u0572\3\2\2\2\u0574\u00e1\3\2\2\2\u0575"+ + "\u0577\5\u00e4s\2\u0576\u0575\3\2\2\2\u0577\u057a\3\2\2\2\u0578\u0576"+ + "\3\2\2\2\u0578\u0579\3\2\2\2\u0579\u057b\3\2\2\2\u057a\u0578\3\2\2\2\u057b"+ + "\u057c\5v<\2\u057c\u057d\7h\2\2\u057d\u057e\7;\2\2\u057e\u0580\7<\2\2"+ + "\u057f\u0581\5\"\22\2\u0580\u057f\3\2\2\2\u0580\u0581\3\2\2\2\u0581\u0583"+ + "\3\2\2\2\u0582\u0584\5\u00e6t\2\u0583\u0582\3\2\2\2\u0583\u0584\3\2\2"+ + "\2\u0584\u0585\3\2\2\2\u0585\u0586\7A\2\2\u0586\u00e3\3\2\2\2\u0587\u058b"+ + "\5\u00e8u\2\u0588\u058b\7%\2\2\u0589\u058b\7\3\2\2\u058a\u0587\3\2\2\2"+ + "\u058a\u0588\3\2\2\2\u058a\u0589\3\2\2\2\u058b\u00e5\3\2\2\2\u058c\u058d"+ + "\7\16\2\2\u058d\u058e\5\u00f0y\2\u058e\u00e7\3\2\2\2\u058f\u0593\5\u00ea"+ + "v\2\u0590\u0593\5\u00f6|\2\u0591\u0593\5\u00f8}\2\u0592\u058f\3\2\2\2"+ + "\u0592\u0590\3\2\2\2\u0592\u0591\3\2\2\2\u0593\u00e9\3\2\2\2\u0594\u0595"+ + "\7i\2\2\u0595\u0596\58\35\2\u0596\u0598\7;\2\2\u0597\u0599\5\u00ecw\2"+ + "\u0598\u0597\3\2\2\2\u0598\u0599\3\2\2\2\u0599\u059a\3\2\2\2\u059a\u059b"+ + "\7<\2\2\u059b\u00eb\3\2\2\2\u059c\u05a1\5\u00eex\2\u059d\u059e\7B\2\2"+ + "\u059e\u05a0\5\u00eex\2\u059f\u059d\3\2\2\2\u05a0\u05a3\3\2\2\2\u05a1"+ + "\u059f\3\2\2\2\u05a1\u05a2\3\2\2\2\u05a2\u00ed\3\2\2\2\u05a3\u05a1\3\2"+ + "\2\2\u05a4\u05a5\7h\2\2\u05a5\u05a6\7D\2\2\u05a6\u05a7\5\u00f0y\2\u05a7"+ + "\u00ef\3\2\2\2\u05a8\u05ac\5\u01b2\u00da\2\u05a9\u05ac\5\u00f2z\2\u05aa"+ + "\u05ac\5\u00e8u\2\u05ab\u05a8\3\2\2\2\u05ab\u05a9\3\2\2\2\u05ab\u05aa"+ + "\3\2\2\2\u05ac\u00f1\3\2\2\2\u05ad\u05af\7=\2\2\u05ae\u05b0\5\u00f4{\2"+ + "\u05af\u05ae\3\2\2\2\u05af\u05b0\3\2\2\2\u05b0\u05b2\3\2\2\2\u05b1\u05b3"+ + "\7B\2\2\u05b2\u05b1\3\2\2\2\u05b2\u05b3\3\2\2\2\u05b3\u05b4\3\2\2\2\u05b4"+ + "\u05b5\7>\2\2\u05b5\u00f3\3\2\2\2\u05b6\u05bb\5\u00f0y\2\u05b7\u05b8\7"+ + "B\2\2\u05b8\u05ba\5\u00f0y\2\u05b9\u05b7\3\2\2\2\u05ba\u05bd\3\2\2\2\u05bb"+ + "\u05b9\3\2\2\2\u05bb\u05bc\3\2\2\2\u05bc\u00f5\3\2\2\2\u05bd\u05bb\3\2"+ + "\2\2\u05be\u05bf\7i\2\2\u05bf\u05c0\58\35\2\u05c0\u00f7\3\2\2\2\u05c1"+ + "\u05c2\7i\2\2\u05c2\u05c3\58\35\2\u05c3\u05c4\7;\2\2\u05c4\u05c5\5\u00f0"+ + "y\2\u05c5\u05c6\7<\2\2\u05c6\u00f9\3\2\2\2\u05c7\u05c9\7=\2\2\u05c8\u05ca"+ + "\5\u00fc\177\2\u05c9\u05c8\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05cc\3\2"+ + "\2\2\u05cb\u05cd\7B\2\2\u05cc\u05cb\3\2\2\2\u05cc\u05cd\3\2\2\2\u05cd"+ + "\u05ce\3\2\2\2\u05ce\u05cf\7>\2\2\u05cf\u00fb\3\2\2\2\u05d0\u05d5\5t;"+ + "\2\u05d1\u05d2\7B\2\2\u05d2\u05d4\5t;\2\u05d3\u05d1\3\2\2\2\u05d4\u05d7"+ + "\3\2\2\2\u05d5\u05d3\3\2\2\2\u05d5\u05d6\3\2\2\2\u05d6\u00fd\3\2\2\2\u05d7"+ + "\u05d5\3\2\2\2\u05d8\u05da\7=\2\2\u05d9\u05db\5\u0100\u0081\2\u05da\u05d9"+ + "\3\2\2\2\u05da\u05db\3\2\2\2\u05db\u05dc\3\2\2\2\u05dc\u05dd\7>\2\2\u05dd"+ + "\u00ff\3\2\2\2\u05de\u05e2\5\u0102\u0082\2\u05df\u05e1\5\u0102\u0082\2"+ + "\u05e0\u05df\3\2\2\2\u05e1\u05e4\3\2\2\2\u05e2\u05e0\3\2\2\2\u05e2\u05e3"+ + "\3\2\2\2\u05e3\u0101\3\2\2\2\u05e4\u05e2\3\2\2\2\u05e5\u05e9\5\u0104\u0083"+ + "\2\u05e6\u05e9\5T+\2\u05e7\u05e9\5\u0108\u0085\2\u05e8\u05e5\3\2\2\2\u05e8"+ + "\u05e6\3\2\2\2\u05e8\u05e7\3\2\2\2\u05e9\u0103\3\2\2\2\u05ea\u05eb\5\u0106"+ + "\u0084\2\u05eb\u05ec\7A\2\2\u05ec\u0105\3\2\2\2\u05ed\u05ef\5\u009eP\2"+ + "\u05ee\u05ed\3\2\2\2\u05ef\u05f2\3\2\2\2\u05f0\u05ee\3\2\2\2\u05f0\u05f1"+ + "\3\2\2\2\u05f1\u05f3\3\2\2\2\u05f2\u05f0\3\2\2\2\u05f3\u05f4\5v<\2\u05f4"+ + "\u05f5\5n8\2\u05f5\u0107\3\2\2\2\u05f6\u05fd\5\u010c\u0087\2\u05f7\u05fd"+ + "\5\u0110\u0089\2\u05f8\u05fd\5\u0118\u008d\2\u05f9\u05fd\5\u011a\u008e"+ + "\2\u05fa\u05fd\5\u012c\u0097\2\u05fb\u05fd\5\u0132\u009a\2\u05fc\u05f6"+ + "\3\2\2\2\u05fc\u05f7\3\2\2\2\u05fc\u05f8\3\2\2\2\u05fc\u05f9\3\2\2\2\u05fc"+ + "\u05fa\3\2\2\2\u05fc\u05fb\3\2\2\2\u05fd\u0109\3\2\2\2\u05fe\u0604\5\u010c"+ + "\u0087\2\u05ff\u0604\5\u0112\u008a\2\u0600\u0604\5\u011c\u008f\2\u0601"+ + "\u0604\5\u012e\u0098\2\u0602\u0604\5\u0134\u009b\2\u0603\u05fe\3\2\2\2"+ + "\u0603\u05ff\3\2\2\2\u0603\u0600\3\2\2\2\u0603\u0601\3\2\2\2\u0603\u0602"+ + "\3\2\2\2\u0604\u010b\3\2\2\2\u0605\u0612\5\u00fe\u0080\2\u0606\u0612\5"+ + "\u010e\u0088\2\u0607\u0612\5\u0114\u008b\2\u0608\u0612\5\u011e\u0090\2"+ + "\u0609\u0612\5\u0120\u0091\2\u060a\u0612\5\u0130\u0099\2\u060b\u0612\5"+ + "\u0144\u00a3\2\u060c\u0612\5\u0146\u00a4\2\u060d\u0612\5\u0148\u00a5\2"+ + "\u060e\u0612\5\u014c\u00a7\2\u060f\u0612\5\u014a\u00a6\2\u0610\u0612\5"+ + "\u014e\u00a8\2\u0611\u0605\3\2\2\2\u0611\u0606\3\2\2\2\u0611\u0607\3\2"+ + "\2\2\u0611\u0608\3\2\2\2\u0611\u0609\3\2\2\2\u0611\u060a\3\2\2\2\u0611"+ + "\u060b\3\2\2\2\u0611\u060c\3\2\2\2\u0611\u060d\3\2\2\2\u0611\u060e\3\2"+ + "\2\2\u0611\u060f\3\2\2\2\u0611\u0610\3\2\2\2\u0612\u010d\3\2\2\2\u0613"+ + "\u0614\7A\2\2\u0614\u010f\3\2\2\2\u0615\u0616\7h\2\2\u0616\u0617\7J\2"+ + "\2\u0617\u0618\5\u0108\u0085\2\u0618\u0111\3\2\2\2\u0619\u061a\7h\2\2"+ + "\u061a\u061b\7J\2\2\u061b\u061c\5\u010a\u0086\2\u061c\u0113\3\2\2\2\u061d"+ + "\u061e\5\u0116\u008c\2\u061e\u061f\7A\2\2\u061f\u0115\3\2\2\2\u0620\u0628"+ + "\5\u01ac\u00d7\2\u0621\u0628\5\u01ca\u00e6\2\u0622\u0628\5\u01cc\u00e7"+ + "\2\u0623\u0628\5\u01d2\u00ea\2\u0624\u0628\5\u01d6\u00ec\2\u0625\u0628"+ + "\5\u018a\u00c6\2\u0626\u0628\5\u0176\u00bc\2\u0627\u0620\3\2\2\2\u0627"+ + "\u0621\3\2\2\2\u0627\u0622\3\2\2\2\u0627\u0623\3\2\2\2\u0627\u0624\3\2"+ + "\2\2\u0627\u0625\3\2\2\2\u0627\u0626\3\2\2\2\u0628\u0117\3\2\2\2\u0629"+ + "\u062a\7\30\2\2\u062a\u062b\7;\2\2\u062b\u062c\5\u01a0\u00d1\2\u062c\u062d"+ + "\7<\2\2\u062d\u062e\5\u0108\u0085\2\u062e\u0119\3\2\2\2\u062f\u0630\7"+ + "\30\2\2\u0630\u0631\7;\2\2\u0631\u0632\5\u01a0\u00d1\2\u0632\u0633\7<"+ + "\2\2\u0633\u0634\5\u010a\u0086\2\u0634\u0635\7\21\2\2\u0635\u0636\5\u0108"+ + "\u0085\2\u0636\u011b\3\2\2\2\u0637\u0638\7\30\2\2\u0638\u0639\7;\2\2\u0639"+ + "\u063a\5\u01a0\u00d1\2\u063a\u063b\7<\2\2\u063b\u063c\5\u010a\u0086\2"+ + "\u063c\u063d\7\21\2\2\u063d\u063e\5\u010a\u0086\2\u063e\u011d\3\2\2\2"+ + "\u063f\u0640\7\4\2\2\u0640\u0641\5\u01a0\u00d1\2\u0641\u0642\7A\2\2\u0642"+ + "\u064a\3\2\2\2\u0643\u0644\7\4\2\2\u0644\u0645\5\u01a0\u00d1\2\u0645\u0646"+ + "\7J\2\2\u0646\u0647\5\u01a0\u00d1\2\u0647\u0648\7A\2\2\u0648\u064a\3\2"+ + "\2\2\u0649\u063f\3\2\2\2\u0649\u0643\3\2\2\2\u064a\u011f\3\2\2\2\u064b"+ + "\u064c\7+\2\2\u064c\u064d\7;\2\2\u064d\u064e\5\u01a0\u00d1\2\u064e\u064f"+ + "\7<\2\2\u064f\u0650\5\u0122\u0092\2\u0650\u0121\3\2\2\2\u0651\u0655\7"+ + "=\2\2\u0652\u0654\5\u0124\u0093\2\u0653\u0652\3\2\2\2\u0654\u0657\3\2"+ + "\2\2\u0655\u0653\3\2\2\2\u0655\u0656\3\2\2\2\u0656\u065b\3\2\2\2\u0657"+ + "\u0655\3\2\2\2\u0658\u065a\5\u0128\u0095\2\u0659\u0658\3\2\2\2\u065a\u065d"+ + "\3\2\2\2\u065b\u0659\3\2\2\2\u065b\u065c\3\2\2\2\u065c\u065e\3\2\2\2\u065d"+ + "\u065b\3\2\2\2\u065e\u065f\7>\2\2\u065f\u0123\3\2\2\2\u0660\u0661\5\u0126"+ + "\u0094\2\u0661\u0662\5\u0100\u0081\2\u0662\u0125\3\2\2\2\u0663\u0667\5"+ + "\u0128\u0095\2\u0664\u0666\5\u0128\u0095\2\u0665\u0664\3\2\2\2\u0666\u0669"+ + "\3\2\2\2\u0667\u0665\3\2\2\2\u0667\u0668\3\2\2\2\u0668\u0127\3\2\2\2\u0669"+ + "\u0667\3\2\2\2\u066a\u066b\7\b\2\2\u066b\u066c\5\u019e\u00d0\2\u066c\u066d"+ + "\7J\2\2\u066d\u0675\3\2\2\2\u066e\u066f\7\b\2\2\u066f\u0670\5\u012a\u0096"+ + "\2\u0670\u0671\7J\2\2\u0671\u0675\3\2\2\2\u0672\u0673\7\16\2\2\u0673\u0675"+ + "\7J\2\2\u0674\u066a\3\2\2\2\u0674\u066e\3\2\2\2\u0674\u0672\3\2\2\2\u0675"+ + "\u0129\3\2\2\2\u0676\u0677\7h\2\2\u0677\u012b\3\2\2\2\u0678\u0679\7\64"+ + "\2\2\u0679\u067a\7;\2\2\u067a\u067b\5\u01a0\u00d1\2\u067b\u067c\7<\2\2"+ + "\u067c\u067d\5\u0108\u0085\2\u067d\u012d\3\2\2\2\u067e\u067f\7\64\2\2"+ + "\u067f\u0680\7;\2\2\u0680\u0681\5\u01a0\u00d1\2\u0681\u0682\7<\2\2\u0682"+ + "\u0683\5\u010a\u0086\2\u0683\u012f\3\2\2\2\u0684\u0685\7\17\2\2\u0685"+ + "\u0686\5\u0108\u0085\2\u0686\u0687\7\64\2\2\u0687\u0688\7;\2\2\u0688\u0689"+ + "\5\u01a0\u00d1\2\u0689\u068a\7<\2\2\u068a\u068b\7A\2\2\u068b\u0131\3\2"+ + "\2\2\u068c\u068f\5\u0136\u009c\2\u068d\u068f\5\u0140\u00a1\2\u068e\u068c"+ + "\3\2\2\2\u068e\u068d\3\2\2\2\u068f\u0133\3\2\2\2\u0690\u0693\5\u0138\u009d"+ + "\2\u0691\u0693\5\u0142\u00a2\2\u0692\u0690\3\2\2\2\u0692\u0691\3\2\2\2"+ + "\u0693\u0135\3\2\2\2\u0694\u0695\7\27\2\2\u0695\u0697\7;\2\2\u0696\u0698"+ + "\5\u013a\u009e\2\u0697\u0696\3\2\2\2\u0697\u0698\3\2\2\2\u0698\u0699\3"+ + "\2\2\2\u0699\u069b\7A\2\2\u069a\u069c\5\u01a0\u00d1\2\u069b\u069a\3\2"+ + "\2\2\u069b\u069c\3\2\2\2\u069c\u069d\3\2\2\2\u069d\u069f\7A\2\2\u069e"+ + "\u06a0\5\u013c\u009f\2\u069f\u069e\3\2\2\2\u069f\u06a0\3\2\2\2\u06a0\u06a1"+ + "\3\2\2\2\u06a1\u06a2\7<\2\2\u06a2\u06a3\5\u0108\u0085\2\u06a3\u0137\3"+ + "\2\2\2\u06a4\u06a5\7\27\2\2\u06a5\u06a7\7;\2\2\u06a6\u06a8\5\u013a\u009e"+ + "\2\u06a7\u06a6\3\2\2\2\u06a7\u06a8\3\2\2\2\u06a8\u06a9\3\2\2\2\u06a9\u06ab"+ + "\7A\2\2\u06aa\u06ac\5\u01a0\u00d1\2\u06ab\u06aa\3\2\2\2\u06ab\u06ac\3"+ + "\2\2\2\u06ac\u06ad\3\2\2\2\u06ad\u06af\7A\2\2\u06ae\u06b0\5\u013c\u009f"+ + "\2\u06af\u06ae\3\2\2\2\u06af\u06b0\3\2\2\2\u06b0\u06b1\3\2\2\2\u06b1\u06b2"+ + "\7<\2\2\u06b2\u06b3\5\u010a\u0086\2\u06b3\u0139\3\2\2\2\u06b4\u06b7\5"+ + "\u013e\u00a0\2\u06b5\u06b7\5\u0106\u0084\2\u06b6\u06b4\3\2\2\2\u06b6\u06b5"+ + "\3\2\2\2\u06b7\u013b\3\2\2\2\u06b8\u06b9\5\u013e\u00a0\2\u06b9\u013d\3"+ + "\2\2\2\u06ba\u06bf\5\u0116\u008c\2\u06bb\u06bc\7B\2\2\u06bc\u06be\5\u0116"+ + "\u008c\2\u06bd\u06bb\3\2\2\2\u06be\u06c1\3\2\2\2\u06bf\u06bd\3\2\2\2\u06bf"+ + "\u06c0\3\2\2\2\u06c0\u013f\3\2\2\2\u06c1\u06bf\3\2\2\2\u06c2\u06c3\7\27"+ + "\2\2\u06c3\u06c7\7;\2\2\u06c4\u06c6\5\u009eP\2\u06c5\u06c4\3\2\2\2\u06c6"+ + "\u06c9\3\2\2\2\u06c7\u06c5\3\2\2\2\u06c7\u06c8\3\2\2\2\u06c8\u06ca\3\2"+ + "\2\2\u06c9\u06c7\3\2\2\2\u06ca\u06cb\5v<\2\u06cb\u06cc\5r:\2\u06cc\u06cd"+ + "\7J\2\2\u06cd\u06ce\5\u01a0\u00d1\2\u06ce\u06cf\7<\2\2\u06cf\u06d0\5\u0108"+ + "\u0085\2\u06d0\u0141\3\2\2\2\u06d1\u06d2\7\27\2\2\u06d2\u06d6\7;\2\2\u06d3"+ + "\u06d5\5\u009eP\2\u06d4\u06d3\3\2\2\2\u06d5\u06d8\3\2\2\2\u06d6\u06d4"+ + "\3\2\2\2\u06d6\u06d7\3\2\2\2\u06d7\u06d9\3\2\2\2\u06d8\u06d6\3\2\2\2\u06d9"+ + "\u06da\5v<\2\u06da\u06db\5r:\2\u06db\u06dc\7J\2\2\u06dc\u06dd\5\u01a0"+ + "\u00d1\2\u06dd\u06de\7<\2\2\u06de\u06df\5\u010a\u0086\2\u06df\u0143\3"+ + "\2\2\2\u06e0\u06e2\7\6\2\2\u06e1\u06e3\7h\2\2\u06e2\u06e1\3\2\2\2\u06e2"+ + "\u06e3\3\2\2\2\u06e3\u06e4\3\2\2\2\u06e4\u06e5\7A\2\2\u06e5\u0145\3\2"+ + "\2\2\u06e6\u06e8\7\r\2\2\u06e7\u06e9\7h\2\2\u06e8\u06e7\3\2\2\2\u06e8"+ + "\u06e9\3\2\2\2\u06e9\u06ea\3\2\2\2\u06ea\u06eb\7A\2\2\u06eb\u0147\3\2"+ + "\2\2\u06ec\u06ee\7&\2\2\u06ed\u06ef\5\u01a0\u00d1\2\u06ee\u06ed\3\2\2"+ + "\2\u06ee\u06ef\3\2\2\2\u06ef\u06f0\3\2\2\2\u06f0\u06f1\7A\2\2\u06f1\u0149"+ + "\3\2\2\2\u06f2\u06f3\7.\2\2\u06f3\u06f4\5\u01a0\u00d1\2\u06f4\u06f5\7"+ + "A\2\2\u06f5\u014b\3\2\2\2\u06f6\u06f7\7,\2\2\u06f7\u06f8\7;\2\2\u06f8"+ + "\u06f9\5\u01a0\u00d1\2\u06f9\u06fa\7<\2\2\u06fa\u06fb\5\u00fe\u0080\2"+ + "\u06fb\u014d\3\2\2\2\u06fc\u06fd\7\61\2\2\u06fd\u06fe\5\u00fe\u0080\2"+ + "\u06fe\u06ff\5\u0150\u00a9\2\u06ff\u0709\3\2\2\2\u0700\u0701\7\61\2\2"+ + "\u0701\u0703\5\u00fe\u0080\2\u0702\u0704\5\u0150\u00a9\2\u0703\u0702\3"+ + "\2\2\2\u0703\u0704\3\2\2\2\u0704\u0705\3\2\2\2\u0705\u0706\5\u0158\u00ad"+ + "\2\u0706\u0709\3\2\2\2\u0707\u0709\5\u015a\u00ae\2\u0708\u06fc\3\2\2\2"+ + "\u0708\u0700\3\2\2\2\u0708\u0707\3\2\2\2\u0709\u014f\3\2\2\2\u070a\u070e"+ + "\5\u0152\u00aa\2\u070b\u070d\5\u0152\u00aa\2\u070c\u070b\3\2\2\2\u070d"+ + "\u0710\3\2\2\2\u070e\u070c\3\2\2\2\u070e\u070f\3\2\2\2\u070f\u0151\3\2"+ + "\2\2\u0710\u070e\3\2\2\2\u0711\u0712\7\t\2\2\u0712\u0713\7;\2\2\u0713"+ + "\u0714\5\u0154\u00ab\2\u0714\u0715\7<\2\2\u0715\u0716\5\u00fe\u0080\2"+ + "\u0716\u0153\3\2\2\2\u0717\u0719\5\u009eP\2\u0718\u0717\3\2\2\2\u0719"+ + "\u071c\3\2\2\2\u071a\u0718\3\2\2\2\u071a\u071b\3\2\2\2\u071b\u071d\3\2"+ + "\2\2\u071c\u071a\3\2\2\2\u071d\u071e\5\u0156\u00ac\2\u071e\u071f\5r:\2"+ + "\u071f\u0155\3\2\2\2\u0720\u0725\5~@\2\u0721\u0722\7X\2\2\u0722\u0724"+ + "\5\22\n\2\u0723\u0721\3\2\2\2\u0724\u0727\3\2\2\2\u0725\u0723\3\2\2\2"+ + "\u0725\u0726\3\2\2\2\u0726\u0157\3\2\2\2\u0727\u0725\3\2\2\2\u0728\u0729"+ + "\7\25\2\2\u0729\u072a\5\u00fe\u0080\2\u072a\u0159\3\2\2\2\u072b\u072c"+ + "\7\61\2\2\u072c\u072d\5\u015c\u00af\2\u072d\u072f\5\u00fe\u0080\2\u072e"+ + "\u0730\5\u0150\u00a9\2\u072f\u072e\3\2\2\2\u072f\u0730\3\2\2\2\u0730\u0732"+ + "\3\2\2\2\u0731\u0733\5\u0158\u00ad\2\u0732\u0731\3\2\2\2\u0732\u0733\3"+ + "\2\2\2\u0733\u015b\3\2\2\2\u0734\u0735\7;\2\2\u0735\u0737\5\u015e\u00b0"+ + "\2\u0736\u0738\7A\2\2\u0737\u0736\3\2\2\2\u0737\u0738\3\2\2\2\u0738\u0739"+ + "\3\2\2\2\u0739\u073a\7<\2\2\u073a\u015d\3\2\2\2\u073b\u0740\5\u0160\u00b1"+ + "\2\u073c\u073d\7A\2\2\u073d\u073f\5\u0160\u00b1\2\u073e\u073c\3\2\2\2"+ + "\u073f\u0742\3\2\2\2\u0740\u073e\3\2\2\2\u0740\u0741\3\2\2\2\u0741\u015f"+ + "\3\2\2\2\u0742\u0740\3\2\2\2\u0743\u0745\5\u009eP\2\u0744\u0743\3\2\2"+ + "\2\u0745\u0748\3\2\2\2\u0746\u0744\3\2\2\2\u0746\u0747\3\2\2\2\u0747\u0749"+ + "\3\2\2\2\u0748\u0746\3\2\2\2\u0749\u074a\5v<\2\u074a\u074b\5r:\2\u074b"+ + "\u074c\7D\2\2\u074c\u074d\5\u01a0\u00d1\2\u074d\u0161\3\2\2\2\u074e\u0751"+ + "\5\u0170\u00b9\2\u074f\u0751\5\u0198\u00cd\2\u0750\u074e\3\2\2\2\u0750"+ + "\u074f\3\2\2\2\u0751\u0755\3\2\2\2\u0752\u0754\5\u016a\u00b6\2\u0753\u0752"+ + "\3\2\2\2\u0754\u0757\3\2\2\2\u0755\u0753\3\2\2\2\u0755\u0756\3\2\2\2\u0756"+ + "\u0163\3\2\2\2\u0757\u0755\3\2\2\2\u0758\u0776\5\2\2\2\u0759\u075e\58"+ + "\35\2\u075a\u075b\7?\2\2\u075b\u075d\7@\2\2\u075c\u075a\3\2\2\2\u075d"+ + "\u0760\3\2\2\2\u075e\u075c\3\2\2\2\u075e\u075f\3\2\2\2\u075f\u0761\3\2"+ + "\2\2\u0760\u075e\3\2\2\2\u0761\u0762\7C\2\2\u0762\u0763\7\13\2\2\u0763"+ + "\u0776\3\2\2\2\u0764\u0765\7\62\2\2\u0765\u0766\7C\2\2\u0766\u0776\7\13"+ + "\2\2\u0767\u0776\7-\2\2\u0768\u0769\58\35\2\u0769\u076a\7C\2\2\u076a\u076b"+ + "\7-\2\2\u076b\u0776\3\2\2\2\u076c\u076d\7;\2\2\u076d\u076e\5\u01a0\u00d1"+ + "\2\u076e\u076f\7<\2\2\u076f\u0776\3\2\2\2\u0770\u0776\5\u0176\u00bc\2"+ + "\u0771\u0776\5\u017e\u00c0\2\u0772\u0776\5\u0184\u00c3\2\u0773\u0776\5"+ + "\u018a\u00c6\2\u0774\u0776\5\u0192\u00ca\2\u0775\u0758\3\2\2\2\u0775\u0759"+ + "\3\2\2\2\u0775\u0764\3\2\2\2\u0775\u0767\3\2\2\2\u0775\u0768\3\2\2\2\u0775"+ + "\u076c\3\2\2\2\u0775\u0770\3\2\2\2\u0775\u0771\3\2\2\2\u0775\u0772\3\2"+ + "\2\2\u0775\u0773\3\2\2\2\u0775\u0774\3\2\2\2\u0776\u0165\3\2\2\2\u0777"+ + "\u0778\3\2\2\2\u0778\u0167\3\2\2\2\u0779\u0796\5\2\2\2\u077a\u077f\58"+ + "\35\2\u077b\u077c\7?\2\2\u077c\u077e\7@\2\2\u077d\u077b\3\2\2\2\u077e"+ + "\u0781\3\2\2\2\u077f\u077d\3\2\2\2\u077f\u0780\3\2\2\2\u0780\u0782\3\2"+ + "\2\2\u0781\u077f\3\2\2\2\u0782\u0783\7C\2\2\u0783\u0784\7\13\2\2\u0784"+ + "\u0796\3\2\2\2\u0785\u0786\7\62\2\2\u0786\u0787\7C\2\2\u0787\u0796\7\13"+ + "\2\2\u0788\u0796\7-\2\2\u0789\u078a\58\35\2\u078a\u078b\7C\2\2\u078b\u078c"+ + "\7-\2\2\u078c\u0796\3\2\2\2\u078d\u078e\7;\2\2\u078e\u078f\5\u01a0\u00d1"+ + "\2\u078f\u0790\7<\2\2\u0790\u0796\3\2\2\2\u0791\u0796\5\u0176\u00bc\2"+ + "\u0792\u0796\5\u017e\u00c0\2\u0793\u0796\5\u018a\u00c6\2\u0794\u0796\5"+ + "\u0192\u00ca\2\u0795\u0779\3\2\2\2\u0795\u077a\3\2\2\2\u0795\u0785\3\2"+ + "\2\2\u0795\u0788\3\2\2\2\u0795\u0789\3\2\2\2\u0795\u078d\3\2\2\2\u0795"+ + "\u0791\3\2\2\2\u0795\u0792\3\2\2\2\u0795\u0793\3\2\2\2\u0795\u0794\3\2"+ + "\2\2\u0796\u0169\3\2\2\2\u0797\u079d\5\u0178\u00bd\2\u0798\u079d\5\u0180"+ + "\u00c1\2\u0799\u079d\5\u0186\u00c4\2\u079a\u079d\5\u018c\u00c7\2\u079b"+ + "\u079d\5\u0194\u00cb\2\u079c\u0797\3\2\2\2\u079c\u0798\3\2\2\2\u079c\u0799"+ + "\3\2\2\2\u079c\u079a\3\2\2\2\u079c\u079b\3\2\2\2\u079d\u016b\3\2\2\2\u079e"+ + "\u079f\3\2\2\2\u079f\u016d\3\2\2\2\u07a0\u07a5\5\u0178\u00bd\2\u07a1\u07a5"+ + "\5\u0180\u00c1\2\u07a2\u07a5\5\u018c\u00c7\2\u07a3\u07a5\5\u0194\u00cb"+ + "\2\u07a4\u07a0\3\2\2\2\u07a4\u07a1\3\2\2\2\u07a4\u07a2\3\2\2\2\u07a4\u07a3"+ + "\3\2\2\2\u07a5\u016f\3\2\2\2\u07a6\u07cf\5\2\2\2\u07a7\u07ac\58\35\2\u07a8"+ + "\u07a9\7?\2\2\u07a9\u07ab\7@\2\2\u07aa\u07a8\3\2\2\2\u07ab\u07ae\3\2\2"+ + "\2\u07ac\u07aa\3\2\2\2\u07ac\u07ad\3\2\2\2\u07ad\u07af\3\2\2\2\u07ae\u07ac"+ + "\3\2\2\2\u07af\u07b0\7C\2\2\u07b0\u07b1\7\13\2\2\u07b1\u07cf\3\2\2\2\u07b2"+ + "\u07b7\5x=\2\u07b3\u07b4\7?\2\2\u07b4\u07b6\7@\2\2\u07b5\u07b3\3\2\2\2"+ + "\u07b6\u07b9\3\2\2\2\u07b7\u07b5\3\2\2\2\u07b7\u07b8\3\2\2\2\u07b8\u07ba"+ + "\3\2\2\2\u07b9\u07b7\3\2\2\2\u07ba\u07bb\7C\2\2\u07bb\u07bc\7\13\2\2\u07bc"+ + "\u07cf\3\2\2\2\u07bd\u07be\7\62\2\2\u07be\u07bf\7C\2\2\u07bf\u07cf\7\13"+ + "\2\2\u07c0\u07cf\7-\2\2\u07c1\u07c2\58\35\2\u07c2\u07c3\7C\2\2\u07c3\u07c4"+ + "\7-\2\2\u07c4\u07cf\3\2\2\2\u07c5\u07c6\7;\2\2\u07c6\u07c7\5\u01a0\u00d1"+ + "\2\u07c7\u07c8\7<\2\2\u07c8\u07cf\3\2\2\2\u07c9\u07cf\5\u017a\u00be\2"+ + "\u07ca\u07cf\5\u0182\u00c2\2\u07cb\u07cf\5\u0188\u00c5\2\u07cc\u07cf\5"+ + "\u018e\u00c8\2\u07cd\u07cf\5\u0196\u00cc\2\u07ce\u07a6\3\2\2\2\u07ce\u07a7"+ + "\3\2\2\2\u07ce\u07b2\3\2\2\2\u07ce\u07bd\3\2\2\2\u07ce\u07c0\3\2\2\2\u07ce"+ + "\u07c1\3\2\2\2\u07ce\u07c5\3\2\2\2\u07ce\u07c9\3\2\2\2\u07ce\u07ca\3\2"+ + "\2\2\u07ce\u07cb\3\2\2\2\u07ce\u07cc\3\2\2\2\u07ce\u07cd\3\2\2\2\u07cf"+ + "\u0171\3\2\2\2\u07d0\u07d1\3\2\2\2\u07d1\u0173\3\2\2\2\u07d2\u07fa\5\2"+ + "\2\2\u07d3\u07d8\58\35\2\u07d4\u07d5\7?\2\2\u07d5\u07d7\7@\2\2\u07d6\u07d4"+ + "\3\2\2\2\u07d7\u07da\3\2\2\2\u07d8\u07d6\3\2\2\2\u07d8\u07d9\3\2\2\2\u07d9"+ + "\u07db\3\2\2\2\u07da\u07d8\3\2\2\2\u07db\u07dc\7C\2\2\u07dc\u07dd\7\13"+ + "\2\2\u07dd\u07fa\3\2\2\2\u07de\u07e3\5x=\2\u07df\u07e0\7?\2\2\u07e0\u07e2"+ + "\7@\2\2\u07e1\u07df\3\2\2\2\u07e2\u07e5\3\2\2\2\u07e3\u07e1\3\2\2\2\u07e3"+ + "\u07e4\3\2\2\2\u07e4\u07e6\3\2\2\2\u07e5\u07e3\3\2\2\2\u07e6\u07e7\7C"+ + "\2\2\u07e7\u07e8\7\13\2\2\u07e8\u07fa\3\2\2\2\u07e9\u07ea\7\62\2\2\u07ea"+ + "\u07eb\7C\2\2\u07eb\u07fa\7\13\2\2\u07ec\u07fa\7-\2\2\u07ed\u07ee\58\35"+ + "\2\u07ee\u07ef\7C\2\2\u07ef\u07f0\7-\2\2\u07f0\u07fa\3\2\2\2\u07f1\u07f2"+ + "\7;\2\2\u07f2\u07f3\5\u01a0\u00d1\2\u07f3\u07f4\7<\2\2\u07f4\u07fa\3\2"+ + "\2\2\u07f5\u07fa\5\u017a\u00be\2\u07f6\u07fa\5\u0182\u00c2\2\u07f7\u07fa"+ + "\5\u018e\u00c8\2\u07f8\u07fa\5\u0196\u00cc\2\u07f9\u07d2\3\2\2\2\u07f9"+ + "\u07d3\3\2\2\2\u07f9\u07de\3\2\2\2\u07f9\u07e9\3\2\2\2\u07f9\u07ec\3\2"+ + "\2\2\u07f9\u07ed\3\2\2\2\u07f9\u07f1\3\2\2\2\u07f9\u07f5\3\2\2\2\u07f9"+ + "\u07f6\3\2\2\2\u07f9\u07f7\3\2\2\2\u07f9\u07f8\3\2\2\2\u07fa\u0175\3\2"+ + "\2\2\u07fb\u07fd\7!\2\2\u07fc\u07fe\5,\27\2\u07fd\u07fc\3\2\2\2\u07fd"+ + "\u07fe\3\2\2\2\u07fe\u0802\3\2\2\2\u07ff\u0801\5\u00e8u\2\u0800\u07ff"+ + "\3\2\2\2\u0801\u0804\3\2\2\2\u0802\u0800\3\2\2\2\u0802\u0803\3\2\2\2\u0803"+ + "\u0805\3\2\2\2\u0804\u0802\3\2\2\2\u0805\u0810\7h\2\2\u0806\u080a\7C\2"+ + "\2\u0807\u0809\5\u00e8u\2\u0808\u0807\3\2\2\2\u0809\u080c\3\2\2\2\u080a"+ + "\u0808\3\2\2\2\u080a\u080b\3\2\2\2\u080b\u080d\3\2\2\2\u080c\u080a\3\2"+ + "\2\2\u080d\u080f\7h\2\2\u080e\u0806\3\2\2\2\u080f\u0812\3\2\2\2\u0810"+ + "\u080e\3\2\2\2\u0810\u0811\3\2\2\2\u0811\u0814\3\2\2\2\u0812\u0810\3\2"+ + "\2\2\u0813\u0815\5\u017c\u00bf\2\u0814\u0813\3\2\2\2\u0814\u0815\3\2\2"+ + "\2\u0815\u0816\3\2\2\2\u0816\u0818\7;\2\2\u0817\u0819\5\u0190\u00c9\2"+ + "\u0818\u0817\3\2\2\2\u0818\u0819\3\2\2\2\u0819\u081a\3\2\2\2\u081a\u081c"+ + "\7<\2\2\u081b\u081d\5d\63\2\u081c\u081b\3\2\2\2\u081c\u081d\3\2\2\2\u081d"+ + "\u084f\3\2\2\2\u081e\u081f\5<\37\2\u081f\u0820\7C\2\2\u0820\u0822\7!\2"+ + "\2\u0821\u0823\5,\27\2\u0822\u0821\3\2\2\2\u0822\u0823\3\2\2\2\u0823\u0827"+ + "\3\2\2\2\u0824\u0826\5\u00e8u\2\u0825\u0824\3\2\2\2\u0826\u0829\3\2\2"+ + "\2\u0827\u0825\3\2\2\2\u0827\u0828\3\2\2\2\u0828\u082a\3\2\2\2\u0829\u0827"+ + "\3\2\2\2\u082a\u082c\7h\2\2\u082b\u082d\5\u017c\u00bf\2\u082c\u082b\3"+ + "\2\2\2\u082c\u082d\3\2\2\2\u082d\u082e\3\2\2\2\u082e\u0830\7;\2\2\u082f"+ + "\u0831\5\u0190\u00c9\2\u0830\u082f\3\2\2\2\u0830\u0831\3\2\2\2\u0831\u0832"+ + "\3\2\2\2\u0832\u0834\7<\2\2\u0833\u0835\5d\63\2\u0834\u0833\3\2\2\2\u0834"+ + "\u0835\3\2\2\2\u0835\u084f\3\2\2\2\u0836\u0837\5\u0162\u00b2\2\u0837\u0838"+ + "\7C\2\2\u0838\u083a\7!\2\2\u0839\u083b\5,\27\2\u083a\u0839\3\2\2\2\u083a"+ + "\u083b\3\2\2\2\u083b\u083f\3\2\2\2\u083c\u083e\5\u00e8u\2\u083d\u083c"+ + "\3\2\2\2\u083e\u0841\3\2\2\2\u083f\u083d\3\2\2\2\u083f\u0840\3\2\2\2\u0840"+ + "\u0842\3\2\2\2\u0841\u083f\3\2\2\2\u0842\u0844\7h\2\2\u0843\u0845\5\u017c"+ + "\u00bf\2\u0844\u0843\3\2\2\2\u0844\u0845\3\2\2\2\u0845\u0846\3\2\2\2\u0846"+ + "\u0848\7;\2\2\u0847\u0849\5\u0190\u00c9\2\u0848\u0847\3\2\2\2\u0848\u0849"+ + "\3\2\2\2\u0849\u084a\3\2\2\2\u084a\u084c\7<\2\2\u084b\u084d\5d\63\2\u084c"+ + "\u084b\3\2\2\2\u084c\u084d\3\2\2\2\u084d\u084f\3\2\2\2\u084e\u07fb\3\2"+ + "\2\2\u084e\u081e\3\2\2\2\u084e\u0836\3\2\2\2\u084f\u0177\3\2\2\2\u0850"+ + "\u0851\7C\2\2\u0851\u0853\7!\2\2\u0852\u0854\5,\27\2\u0853\u0852\3\2\2"+ + "\2\u0853\u0854\3\2\2\2\u0854\u0858\3\2\2\2\u0855\u0857\5\u00e8u\2\u0856"+ + "\u0855\3\2\2\2\u0857\u085a\3\2\2\2\u0858\u0856\3\2\2\2\u0858\u0859\3\2"+ + "\2\2\u0859\u085b\3\2\2\2\u085a\u0858\3\2\2\2\u085b\u085d\7h\2\2\u085c"+ + "\u085e\5\u017c\u00bf\2\u085d\u085c\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u085f"+ + "\3\2\2\2\u085f\u0861\7;\2\2\u0860\u0862\5\u0190\u00c9\2\u0861\u0860\3"+ + "\2\2\2\u0861\u0862\3\2\2\2\u0862\u0863\3\2\2\2\u0863\u0865\7<\2\2\u0864"+ + "\u0866\5d\63\2\u0865\u0864\3\2\2\2\u0865\u0866\3\2\2\2\u0866\u0179\3\2"+ + "\2\2\u0867\u0869\7!\2\2\u0868\u086a\5,\27\2\u0869\u0868\3\2\2\2\u0869"+ + "\u086a\3\2\2\2\u086a\u086e\3\2\2\2\u086b\u086d\5\u00e8u\2\u086c\u086b"+ + "\3\2\2\2\u086d\u0870\3\2\2\2\u086e\u086c\3\2\2\2\u086e\u086f\3\2\2\2\u086f"+ + "\u0871\3\2\2\2\u0870\u086e\3\2\2\2\u0871\u087c\7h\2\2\u0872\u0876\7C\2"+ + "\2\u0873\u0875\5\u00e8u\2\u0874\u0873\3\2\2\2\u0875\u0878\3\2\2\2\u0876"+ + "\u0874\3\2\2\2\u0876\u0877\3\2\2\2\u0877\u0879\3\2\2\2\u0878\u0876\3\2"+ + "\2\2\u0879\u087b\7h\2\2\u087a\u0872\3\2\2\2\u087b\u087e\3\2\2\2\u087c"+ + "\u087a\3\2\2\2\u087c\u087d\3\2\2\2\u087d\u0880\3\2\2\2\u087e\u087c\3\2"+ + "\2\2\u087f\u0881\5\u017c\u00bf\2\u0880\u087f\3\2\2\2\u0880\u0881\3\2\2"+ + "\2\u0881\u0882\3\2\2\2\u0882\u0884\7;\2\2\u0883\u0885\5\u0190\u00c9\2"+ + "\u0884\u0883\3\2\2\2\u0884\u0885\3\2\2\2\u0885\u0886\3\2\2\2\u0886\u0888"+ + "\7<\2\2\u0887\u0889\5d\63\2\u0888\u0887\3\2\2\2\u0888\u0889\3\2\2\2\u0889"+ + "\u08a3\3\2\2\2\u088a\u088b\5<\37\2\u088b\u088c\7C\2\2\u088c\u088e\7!\2"+ + "\2\u088d\u088f\5,\27\2\u088e\u088d\3\2\2\2\u088e\u088f\3\2\2\2\u088f\u0893"+ + "\3\2\2\2\u0890\u0892\5\u00e8u\2\u0891\u0890\3\2\2\2\u0892\u0895\3\2\2"+ + "\2\u0893\u0891\3\2\2\2\u0893\u0894\3\2\2\2\u0894\u0896\3\2\2\2\u0895\u0893"+ + "\3\2\2\2\u0896\u0898\7h\2\2\u0897\u0899\5\u017c\u00bf\2\u0898\u0897\3"+ + "\2\2\2\u0898\u0899\3\2\2\2\u0899\u089a\3\2\2\2\u089a\u089c\7;\2\2\u089b"+ + "\u089d\5\u0190\u00c9\2\u089c\u089b\3\2\2\2\u089c\u089d\3\2\2\2\u089d\u089e"+ + "\3\2\2\2\u089e\u08a0\7<\2\2\u089f\u08a1\5d\63\2\u08a0\u089f\3\2\2\2\u08a0"+ + "\u08a1\3\2\2\2\u08a1\u08a3\3\2\2\2\u08a2\u0867\3\2\2\2\u08a2\u088a\3\2"+ + "\2\2\u08a3\u017b\3\2\2\2\u08a4\u08a8\5,\27\2\u08a5\u08a6\7F\2\2\u08a6"+ + "\u08a8\7E\2\2\u08a7\u08a4\3\2\2\2\u08a7\u08a5\3\2\2\2\u08a8\u017d\3\2"+ + "\2\2\u08a9\u08aa\5\u0162\u00b2\2\u08aa\u08ab\7C\2\2\u08ab\u08ac\7h\2\2"+ + "\u08ac\u08b7\3\2\2\2\u08ad\u08ae\7*\2\2\u08ae\u08af\7C\2\2\u08af\u08b7"+ + "\7h\2\2\u08b0\u08b1\58\35\2\u08b1\u08b2\7C\2\2\u08b2\u08b3\7*\2\2\u08b3"+ + "\u08b4\7C\2\2\u08b4\u08b5\7h\2\2\u08b5\u08b7\3\2\2\2\u08b6\u08a9\3\2\2"+ + "\2\u08b6\u08ad\3\2\2\2\u08b6\u08b0\3\2\2\2\u08b7\u017f\3\2\2\2\u08b8\u08b9"+ + "\7C\2\2\u08b9\u08ba\7h\2\2\u08ba\u0181\3\2\2\2\u08bb\u08bc\7*\2\2\u08bc"+ + "\u08bd\7C\2\2\u08bd\u08c5\7h\2\2\u08be\u08bf\58\35\2\u08bf\u08c0\7C\2"+ + "\2\u08c0\u08c1\7*\2\2\u08c1\u08c2\7C\2\2\u08c2\u08c3\7h\2\2\u08c3\u08c5"+ + "\3\2\2\2\u08c4\u08bb\3\2\2\2\u08c4\u08be\3\2\2\2\u08c5\u0183\3\2\2\2\u08c6"+ + "\u08c7\5<\37\2\u08c7\u08c8\7?\2\2\u08c8\u08c9\5\u01a0\u00d1\2\u08c9\u08ca"+ + "\7@\2\2\u08ca\u08d1\3\2\2\2\u08cb\u08cc\5\u0168\u00b5\2\u08cc\u08cd\7"+ + "?\2\2\u08cd\u08ce\5\u01a0\u00d1\2\u08ce\u08cf\7@\2\2\u08cf\u08d1\3\2\2"+ + "\2\u08d0\u08c6\3\2\2\2\u08d0\u08cb\3\2\2\2\u08d1\u08d9\3\2\2\2\u08d2\u08d3"+ + "\5\u0166\u00b4\2\u08d3\u08d4\7?\2\2\u08d4\u08d5\5\u01a0\u00d1\2\u08d5"+ + "\u08d6\7@\2\2\u08d6\u08d8\3\2\2\2\u08d7\u08d2\3\2\2\2\u08d8\u08db\3\2"+ + "\2\2\u08d9\u08d7\3\2\2\2\u08d9\u08da\3\2\2\2\u08da\u0185\3\2\2\2\u08db"+ + "\u08d9\3\2\2\2\u08dc\u08dd\5\u016e\u00b8\2\u08dd\u08de\7?\2\2\u08de\u08df"+ + "\5\u01a0\u00d1\2\u08df\u08e0\7@\2\2\u08e0\u08e8\3\2\2\2\u08e1\u08e2\5"+ + "\u016c\u00b7\2\u08e2\u08e3\7?\2\2\u08e3\u08e4\5\u01a0\u00d1\2\u08e4\u08e5"+ + "\7@\2\2\u08e5\u08e7\3\2\2\2\u08e6\u08e1\3\2\2\2\u08e7\u08ea\3\2\2\2\u08e8"+ + "\u08e6\3\2\2\2\u08e8\u08e9\3\2\2\2\u08e9\u0187\3\2\2\2\u08ea\u08e8\3\2"+ + "\2\2\u08eb\u08ec\5<\37\2\u08ec\u08ed\7?\2\2\u08ed\u08ee\5\u01a0\u00d1"+ + "\2\u08ee\u08ef\7@\2\2\u08ef\u08f6\3\2\2\2\u08f0\u08f1\5\u0174\u00bb\2"+ + "\u08f1\u08f2\7?\2\2\u08f2\u08f3\5\u01a0\u00d1\2\u08f3\u08f4\7@\2\2\u08f4"+ + "\u08f6\3\2\2\2\u08f5\u08eb\3\2\2\2\u08f5\u08f0\3\2\2\2\u08f6\u08fe\3\2"+ + "\2\2\u08f7\u08f8\5\u0172\u00ba\2\u08f8\u08f9\7?\2\2\u08f9\u08fa\5\u01a0"+ + "\u00d1\2\u08fa\u08fb\7@\2\2\u08fb\u08fd\3\2\2\2\u08fc\u08f7\3\2\2\2\u08fd"+ + "\u0900\3\2\2\2\u08fe\u08fc\3\2\2\2\u08fe\u08ff\3\2\2\2\u08ff\u0189\3\2"+ + "\2\2\u0900\u08fe\3\2\2\2\u0901\u0902\5> \2\u0902\u0904\7;\2\2\u0903\u0905"+ + "\5\u0190\u00c9\2\u0904\u0903\3\2\2\2\u0904\u0905\3\2\2\2\u0905\u0906\3"+ + "\2\2\2\u0906\u0907\7<\2\2\u0907\u0946\3\2\2\2\u0908\u0909\58\35\2\u0909"+ + "\u090b\7C\2\2\u090a\u090c\5,\27\2\u090b\u090a\3\2\2\2\u090b\u090c\3\2"+ + "\2\2\u090c\u090d\3\2\2\2\u090d\u090e\7h\2\2\u090e\u0910\7;\2\2\u090f\u0911"+ + "\5\u0190\u00c9\2\u0910\u090f\3\2\2\2\u0910\u0911\3\2\2\2\u0911\u0912\3"+ + "\2\2\2\u0912\u0913\7<\2\2\u0913\u0946\3\2\2\2\u0914\u0915\5<\37\2\u0915"+ + "\u0917\7C\2\2\u0916\u0918\5,\27\2\u0917\u0916\3\2\2\2\u0917\u0918\3\2"+ + "\2\2\u0918\u0919\3\2\2\2\u0919\u091a\7h\2\2\u091a\u091c\7;\2\2\u091b\u091d"+ + "\5\u0190\u00c9\2\u091c\u091b\3\2\2\2\u091c\u091d\3\2\2\2\u091d\u091e\3"+ + "\2\2\2\u091e\u091f\7<\2\2\u091f\u0946\3\2\2\2\u0920\u0921\5\u0162\u00b2"+ + "\2\u0921\u0923\7C\2\2\u0922\u0924\5,\27\2\u0923\u0922\3\2\2\2\u0923\u0924"+ + "\3\2\2\2\u0924\u0925\3\2\2\2\u0925\u0926\7h\2\2\u0926\u0928\7;\2\2\u0927"+ + "\u0929\5\u0190\u00c9\2\u0928\u0927\3\2\2\2\u0928\u0929\3\2\2\2\u0929\u092a"+ + "\3\2\2\2\u092a\u092b\7<\2\2\u092b\u0946\3\2\2\2\u092c\u092d\7*\2\2\u092d"+ + "\u092f\7C\2\2\u092e\u0930\5,\27\2\u092f\u092e\3\2\2\2\u092f\u0930\3\2"+ + "\2\2\u0930\u0931\3\2\2\2\u0931\u0932\7h\2\2\u0932\u0934\7;\2\2\u0933\u0935"+ + "\5\u0190\u00c9\2\u0934\u0933\3\2\2\2\u0934\u0935\3\2\2\2\u0935\u0936\3"+ + "\2\2\2\u0936\u0946\7<\2\2\u0937\u0938\58\35\2\u0938\u0939\7C\2\2\u0939"+ + "\u093a\7*\2\2\u093a\u093c\7C\2\2\u093b\u093d\5,\27\2\u093c\u093b\3\2\2"+ + "\2\u093c\u093d\3\2\2\2\u093d\u093e\3\2\2\2\u093e\u093f\7h\2\2\u093f\u0941"+ + "\7;\2\2\u0940\u0942\5\u0190\u00c9\2\u0941\u0940\3\2\2\2\u0941\u0942\3"+ + "\2\2\2\u0942\u0943\3\2\2\2\u0943\u0944\7<\2\2\u0944\u0946\3\2\2\2\u0945"+ + "\u0901\3\2\2\2\u0945\u0908\3\2\2\2\u0945\u0914\3\2\2\2\u0945\u0920\3\2"+ + "\2\2\u0945\u092c\3\2\2\2\u0945\u0937\3\2\2\2\u0946\u018b\3\2\2\2\u0947"+ + "\u0949\7C\2\2\u0948\u094a\5,\27\2\u0949\u0948\3\2\2\2\u0949\u094a\3\2"+ + "\2\2\u094a\u094b\3\2\2\2\u094b\u094c\7h\2\2\u094c\u094e\7;\2\2\u094d\u094f"+ + "\5\u0190\u00c9\2\u094e\u094d\3\2\2\2\u094e\u094f\3\2\2\2\u094f\u0950\3"+ + "\2\2\2\u0950\u0951\7<\2\2\u0951\u018d\3\2\2\2\u0952\u0953\5> \2\u0953"+ + "\u0955\7;\2\2\u0954\u0956\5\u0190\u00c9\2\u0955\u0954\3\2\2\2\u0955\u0956"+ + "\3\2\2\2\u0956\u0957\3\2\2\2\u0957\u0958\7<\2\2\u0958\u098b\3\2\2\2\u0959"+ + "\u095a\58\35\2\u095a\u095c\7C\2\2\u095b\u095d\5,\27\2\u095c\u095b\3\2"+ + "\2\2\u095c\u095d\3\2\2\2\u095d\u095e\3\2\2\2\u095e\u095f\7h\2\2\u095f"+ + "\u0961\7;\2\2\u0960\u0962\5\u0190\u00c9\2\u0961\u0960\3\2\2\2\u0961\u0962"+ + "\3\2\2\2\u0962\u0963\3\2\2\2\u0963\u0964\7<\2\2\u0964\u098b\3\2\2\2\u0965"+ + "\u0966\5<\37\2\u0966\u0968\7C\2\2\u0967\u0969\5,\27\2\u0968"; + private static final String _serializedATNSegment1 = + "\u0967\3\2\2\2\u0968\u0969\3\2\2\2\u0969\u096a\3\2\2\2\u096a\u096b\7h"+ + "\2\2\u096b\u096d\7;\2\2\u096c\u096e\5\u0190\u00c9\2\u096d\u096c\3\2\2"+ + "\2\u096d\u096e\3\2\2\2\u096e\u096f\3\2\2\2\u096f\u0970\7<\2\2\u0970\u098b"+ + "\3\2\2\2\u0971\u0972\7*\2\2\u0972\u0974\7C\2\2\u0973\u0975\5,\27\2\u0974"+ + "\u0973\3\2\2\2\u0974\u0975\3\2\2\2\u0975\u0976\3\2\2\2\u0976\u0977\7h"+ + "\2\2\u0977\u0979\7;\2\2\u0978\u097a\5\u0190\u00c9\2\u0979\u0978\3\2\2"+ + "\2\u0979\u097a\3\2\2\2\u097a\u097b\3\2\2\2\u097b\u098b\7<\2\2\u097c\u097d"+ + "\58\35\2\u097d\u097e\7C\2\2\u097e\u097f\7*\2\2\u097f\u0981\7C\2\2\u0980"+ + "\u0982\5,\27\2\u0981\u0980\3\2\2\2\u0981\u0982\3\2\2\2\u0982\u0983\3\2"+ + "\2\2\u0983\u0984\7h\2\2\u0984\u0986\7;\2\2\u0985\u0987\5\u0190\u00c9\2"+ + "\u0986\u0985\3\2\2\2\u0986\u0987\3\2\2\2\u0987\u0988\3\2\2\2\u0988\u0989"+ + "\7<\2\2\u0989\u098b\3\2\2\2\u098a\u0952\3\2\2\2\u098a\u0959\3\2\2\2\u098a"+ + "\u0965\3\2\2\2\u098a\u0971\3\2\2\2\u098a\u097c\3\2\2\2\u098b\u018f\3\2"+ + "\2\2\u098c\u0991\5\u01a0\u00d1\2\u098d\u098e\7B\2\2\u098e\u0990\5\u01a0"+ + "\u00d1\2\u098f\u098d\3\2\2\2\u0990\u0993\3\2\2\2\u0991\u098f\3\2\2\2\u0991"+ + "\u0992\3\2\2\2\u0992\u0191\3\2\2\2\u0993\u0991\3\2\2\2\u0994\u0995\5<"+ + "\37\2\u0995\u0997\7\\\2\2\u0996\u0998\5,\27\2\u0997\u0996\3\2\2\2\u0997"+ + "\u0998\3\2\2\2\u0998\u0999\3\2\2\2\u0999\u099a\7h\2\2\u099a\u09c4\3\2"+ + "\2\2\u099b\u099c\5\16\b\2\u099c\u099e\7\\\2\2\u099d\u099f\5,\27\2\u099e"+ + "\u099d\3\2\2\2\u099e\u099f\3\2\2\2\u099f\u09a0\3\2\2\2\u09a0\u09a1\7h"+ + "\2\2\u09a1\u09c4\3\2\2\2\u09a2\u09a3\5\u0162\u00b2\2\u09a3\u09a5\7\\\2"+ + "\2\u09a4\u09a6\5,\27\2\u09a5\u09a4\3\2\2\2\u09a5\u09a6\3\2\2\2\u09a6\u09a7"+ + "\3\2\2\2\u09a7\u09a8\7h\2\2\u09a8\u09c4\3\2\2\2\u09a9\u09aa\7*\2\2\u09aa"+ + "\u09ac\7\\\2\2\u09ab\u09ad\5,\27\2\u09ac\u09ab\3\2\2\2\u09ac\u09ad\3\2"+ + "\2\2\u09ad\u09ae\3\2\2\2\u09ae\u09c4\7h\2\2\u09af\u09b0\58\35\2\u09b0"+ + "\u09b1\7C\2\2\u09b1\u09b2\7*\2\2\u09b2\u09b4\7\\\2\2\u09b3\u09b5\5,\27"+ + "\2\u09b4\u09b3\3\2\2\2\u09b4\u09b5\3\2\2\2\u09b5\u09b6\3\2\2\2\u09b6\u09b7"+ + "\7h\2\2\u09b7\u09c4\3\2\2\2\u09b8\u09b9\5\22\n\2\u09b9\u09bb\7\\\2\2\u09ba"+ + "\u09bc\5,\27\2\u09bb\u09ba\3\2\2\2\u09bb\u09bc\3\2\2\2\u09bc\u09bd\3\2"+ + "\2\2\u09bd\u09be\7!\2\2\u09be\u09c4\3\2\2\2\u09bf\u09c0\5 \21\2\u09c0"+ + "\u09c1\7\\\2\2\u09c1\u09c2\7!\2\2\u09c2\u09c4\3\2\2\2\u09c3\u0994\3\2"+ + "\2\2\u09c3\u099b\3\2\2\2\u09c3\u09a2\3\2\2\2\u09c3\u09a9\3\2\2\2\u09c3"+ + "\u09af\3\2\2\2\u09c3\u09b8\3\2\2\2\u09c3\u09bf\3\2\2\2\u09c4\u0193\3\2"+ + "\2\2\u09c5\u09c7\7\\\2\2\u09c6\u09c8\5,\27\2\u09c7\u09c6\3\2\2\2\u09c7"+ + "\u09c8\3\2\2\2\u09c8\u09c9\3\2\2\2\u09c9\u09ca\7h\2\2\u09ca\u0195\3\2"+ + "\2\2\u09cb\u09cc\5<\37\2\u09cc\u09ce\7\\\2\2\u09cd\u09cf\5,\27\2\u09ce"+ + "\u09cd\3\2\2\2\u09ce\u09cf\3\2\2\2\u09cf\u09d0\3\2\2\2\u09d0\u09d1\7h"+ + "\2\2\u09d1\u09f4\3\2\2\2\u09d2\u09d3\5\16\b\2\u09d3\u09d5\7\\\2\2\u09d4"+ + "\u09d6\5,\27\2\u09d5\u09d4\3\2\2\2\u09d5\u09d6\3\2\2\2\u09d6\u09d7\3\2"+ + "\2\2\u09d7\u09d8\7h\2\2\u09d8\u09f4\3\2\2\2\u09d9\u09da\7*\2\2\u09da\u09dc"+ + "\7\\\2\2\u09db\u09dd\5,\27\2\u09dc\u09db\3\2\2\2\u09dc\u09dd\3\2\2\2\u09dd"+ + "\u09de\3\2\2\2\u09de\u09f4\7h\2\2\u09df\u09e0\58\35\2\u09e0\u09e1\7C\2"+ + "\2\u09e1\u09e2\7*\2\2\u09e2\u09e4\7\\\2\2\u09e3\u09e5\5,\27\2\u09e4\u09e3"+ + "\3\2\2\2\u09e4\u09e5\3\2\2\2\u09e5\u09e6\3\2\2\2\u09e6\u09e7\7h\2\2\u09e7"+ + "\u09f4\3\2\2\2\u09e8\u09e9\5\22\n\2\u09e9\u09eb\7\\\2\2\u09ea\u09ec\5"+ + ",\27\2\u09eb\u09ea\3\2\2\2\u09eb\u09ec\3\2\2\2\u09ec\u09ed\3\2\2\2\u09ed"+ + "\u09ee\7!\2\2\u09ee\u09f4\3\2\2\2\u09ef\u09f0\5 \21\2\u09f0\u09f1\7\\"+ + "\2\2\u09f1\u09f2\7!\2\2\u09f2\u09f4\3\2\2\2\u09f3\u09cb\3\2\2\2\u09f3"+ + "\u09d2\3\2\2\2\u09f3\u09d9\3\2\2\2\u09f3\u09df\3\2\2\2\u09f3\u09e8\3\2"+ + "\2\2\u09f3\u09ef\3\2\2\2\u09f4\u0197\3\2\2\2\u09f5\u09f6\7!\2\2\u09f6"+ + "\u09f7\5\6\4\2\u09f7\u09f9\5\u019a\u00ce\2\u09f8\u09fa\5\"\22\2\u09f9"+ + "\u09f8\3\2\2\2\u09f9\u09fa\3\2\2\2\u09fa\u0a0c\3\2\2\2\u09fb\u09fc\7!"+ + "\2\2\u09fc\u09fd\5\20\t\2\u09fd\u09ff\5\u019a\u00ce\2\u09fe\u0a00\5\""+ + "\22\2\u09ff\u09fe\3\2\2\2\u09ff\u0a00\3\2\2\2\u0a00\u0a0c\3\2\2\2\u0a01"+ + "\u0a02\7!\2\2\u0a02\u0a03\5\6\4\2\u0a03\u0a04\5\"\22\2\u0a04\u0a05\5\u00fa"+ + "~\2\u0a05\u0a0c\3\2\2\2\u0a06\u0a07\7!\2\2\u0a07\u0a08\5\20\t\2\u0a08"+ + "\u0a09\5\"\22\2\u0a09\u0a0a\5\u00fa~\2\u0a0a\u0a0c\3\2\2\2\u0a0b\u09f5"+ + "\3\2\2\2\u0a0b\u09fb\3\2\2\2\u0a0b\u0a01\3\2\2\2\u0a0b\u0a06\3\2\2\2\u0a0c"+ + "\u0199\3\2\2\2\u0a0d\u0a11\5\u019c\u00cf\2\u0a0e\u0a10\5\u019c\u00cf\2"+ + "\u0a0f\u0a0e\3\2\2\2\u0a10\u0a13\3\2\2\2\u0a11\u0a0f\3\2\2\2\u0a11\u0a12"+ + "\3\2\2\2\u0a12\u019b\3\2\2\2\u0a13\u0a11\3\2\2\2\u0a14\u0a16\5\u00e8u"+ + "\2\u0a15\u0a14\3\2\2\2\u0a16\u0a19\3\2\2\2\u0a17\u0a15\3\2\2\2\u0a17\u0a18"+ + "\3\2\2\2\u0a18\u0a1a\3\2\2\2\u0a19\u0a17\3\2\2\2\u0a1a\u0a1b\7?\2\2\u0a1b"+ + "\u0a1c\5\u01a0\u00d1\2\u0a1c\u0a1d\7@\2\2\u0a1d\u019d\3\2\2\2\u0a1e\u0a1f"+ + "\5\u01a0\u00d1\2\u0a1f\u019f\3\2\2\2\u0a20\u0a23\5\u01a2\u00d2\2\u0a21"+ + "\u0a23\5\u01aa\u00d6\2\u0a22\u0a20\3\2\2\2\u0a22\u0a21\3\2\2\2\u0a23\u01a1"+ + "\3\2\2\2\u0a24\u0a25\5\u01a4\u00d3\2\u0a25\u0a26\7[\2\2\u0a26\u0a27\5"+ + "\u01a8\u00d5\2\u0a27\u01a3\3\2\2\2\u0a28\u0a33\7h\2\2\u0a29\u0a2b\7;\2"+ + "\2\u0a2a\u0a2c\5\u0098M\2\u0a2b\u0a2a\3\2\2\2\u0a2b\u0a2c\3\2\2\2\u0a2c"+ + "\u0a2d\3\2\2\2\u0a2d\u0a33\7<\2\2\u0a2e\u0a2f\7;\2\2\u0a2f\u0a30\5\u01a6"+ + "\u00d4\2\u0a30\u0a31\7<\2\2\u0a31\u0a33\3\2\2\2\u0a32\u0a28\3\2\2\2\u0a32"+ + "\u0a29\3\2\2\2\u0a32\u0a2e\3\2\2\2\u0a33\u01a5\3\2\2\2\u0a34\u0a39\7h"+ + "\2\2\u0a35\u0a36\7B\2\2\u0a36\u0a38\7h\2\2\u0a37\u0a35\3\2\2\2\u0a38\u0a3b"+ + "\3\2\2\2\u0a39\u0a37\3\2\2\2\u0a39\u0a3a\3\2\2\2\u0a3a\u01a7\3\2\2\2\u0a3b"+ + "\u0a39\3\2\2\2\u0a3c\u0a3f\5\u01a0\u00d1\2\u0a3d\u0a3f\5\u00fe\u0080\2"+ + "\u0a3e\u0a3c\3\2\2\2\u0a3e\u0a3d\3\2\2\2\u0a3f\u01a9\3\2\2\2\u0a40\u0a43"+ + "\5\u01b2\u00da\2\u0a41\u0a43\5\u01ac\u00d7\2\u0a42\u0a40\3\2\2\2\u0a42"+ + "\u0a41\3\2\2\2\u0a43\u01ab\3\2\2\2\u0a44\u0a45\5\u01ae\u00d8\2\u0a45\u0a46"+ + "\5\u01b0\u00d9\2\u0a46\u0a47\5\u01a0\u00d1\2\u0a47\u01ad\3\2\2\2\u0a48"+ + "\u0a4c\5<\37\2\u0a49\u0a4c\5\u017e\u00c0\2\u0a4a\u0a4c\5\u0184\u00c3\2"+ + "\u0a4b\u0a48\3\2\2\2\u0a4b\u0a49\3\2\2\2\u0a4b\u0a4a\3\2\2\2\u0a4c\u01af"+ + "\3\2\2\2\u0a4d\u0a4e\t\5\2\2\u0a4e\u01b1\3\2\2\2\u0a4f\u0a57\5\u01b4\u00db"+ + "\2\u0a50\u0a51\5\u01b4\u00db\2\u0a51\u0a52\7I\2\2\u0a52\u0a53\5\u01a0"+ + "\u00d1\2\u0a53\u0a54\7J\2\2\u0a54\u0a55\5\u01b2\u00da\2\u0a55\u0a57\3"+ + "\2\2\2\u0a56\u0a4f\3\2\2\2\u0a56\u0a50\3\2\2\2\u0a57\u01b3\3\2\2\2\u0a58"+ + "\u0a59\b\u00db\1\2\u0a59\u0a5a\5\u01b6\u00dc\2\u0a5a\u0a60\3\2\2\2\u0a5b"+ + "\u0a5c\f\3\2\2\u0a5c\u0a5d\7P\2\2\u0a5d\u0a5f\5\u01b6\u00dc\2\u0a5e\u0a5b"+ + "\3\2\2\2\u0a5f\u0a62\3\2\2\2\u0a60\u0a5e\3\2\2\2\u0a60\u0a61\3\2\2\2\u0a61"+ + "\u01b5\3\2\2\2\u0a62\u0a60\3\2\2\2\u0a63\u0a64\b\u00dc\1\2\u0a64\u0a65"+ + "\5\u01b8\u00dd\2\u0a65\u0a6b\3\2\2\2\u0a66\u0a67\f\3\2\2\u0a67\u0a68\7"+ + "O\2\2\u0a68\u0a6a\5\u01b8\u00dd\2\u0a69\u0a66\3\2\2\2\u0a6a\u0a6d\3\2"+ + "\2\2\u0a6b\u0a69\3\2\2\2\u0a6b\u0a6c\3\2\2\2\u0a6c\u01b7\3\2\2\2\u0a6d"+ + "\u0a6b\3\2\2\2\u0a6e\u0a6f\b\u00dd\1\2\u0a6f\u0a70\5\u01ba\u00de\2\u0a70"+ + "\u0a76\3\2\2\2\u0a71\u0a72\f\3\2\2\u0a72\u0a73\7X\2\2\u0a73\u0a75\5\u01ba"+ + "\u00de\2\u0a74\u0a71\3\2\2\2\u0a75\u0a78\3\2\2\2\u0a76\u0a74\3\2\2\2\u0a76"+ + "\u0a77\3\2\2\2\u0a77\u01b9\3\2\2\2\u0a78\u0a76\3\2\2\2\u0a79\u0a7a\b\u00de"+ + "\1\2\u0a7a\u0a7b\5\u01bc\u00df\2\u0a7b\u0a81\3\2\2\2\u0a7c\u0a7d\f\3\2"+ + "\2\u0a7d\u0a7e\7Y\2\2\u0a7e\u0a80\5\u01bc\u00df\2\u0a7f\u0a7c\3\2\2\2"+ + "\u0a80\u0a83\3\2\2\2\u0a81\u0a7f\3\2\2\2\u0a81\u0a82\3\2\2\2\u0a82\u01bb"+ + "\3\2\2\2\u0a83\u0a81\3\2\2\2\u0a84\u0a85\b\u00df\1\2\u0a85\u0a86\5\u01be"+ + "\u00e0\2\u0a86\u0a8c\3\2\2\2\u0a87\u0a88\f\3\2\2\u0a88\u0a89\7W\2\2\u0a89"+ + "\u0a8b\5\u01be\u00e0\2\u0a8a\u0a87\3\2\2\2\u0a8b\u0a8e\3\2\2\2\u0a8c\u0a8a"+ + "\3\2\2\2\u0a8c\u0a8d\3\2\2\2\u0a8d\u01bd\3\2\2\2\u0a8e\u0a8c\3\2\2\2\u0a8f"+ + "\u0a90\b\u00e0\1\2\u0a90\u0a91\5\u01c0\u00e1\2\u0a91\u0a9a\3\2\2\2\u0a92"+ + "\u0a93\f\4\2\2\u0a93\u0a94\7K\2\2\u0a94\u0a99\5\u01c0\u00e1\2\u0a95\u0a96"+ + "\f\3\2\2\u0a96\u0a97\7N\2\2\u0a97\u0a99\5\u01c0\u00e1\2\u0a98\u0a92\3"+ + "\2\2\2\u0a98\u0a95\3\2\2\2\u0a99\u0a9c\3\2\2\2\u0a9a\u0a98\3\2\2\2\u0a9a"+ + "\u0a9b\3\2\2\2\u0a9b\u01bf\3\2\2\2\u0a9c\u0a9a\3\2\2\2\u0a9d\u0a9e\b\u00e1"+ + "\1\2\u0a9e\u0a9f\5\u01c2\u00e2\2\u0a9f\u0ab1\3\2\2\2\u0aa0\u0aa1\f\7\2"+ + "\2\u0aa1\u0aa2\7F\2\2\u0aa2\u0ab0\5\u01c2\u00e2\2\u0aa3\u0aa4\f\6\2\2"+ + "\u0aa4\u0aa5\7E\2\2\u0aa5\u0ab0\5\u01c2\u00e2\2\u0aa6\u0aa7\f\5\2\2\u0aa7"+ + "\u0aa8\7L\2\2\u0aa8\u0ab0\5\u01c2\u00e2\2\u0aa9\u0aaa\f\4\2\2\u0aaa\u0aab"+ + "\7M\2\2\u0aab\u0ab0\5\u01c2\u00e2\2\u0aac\u0aad\f\3\2\2\u0aad\u0aae\7"+ + "\34\2\2\u0aae\u0ab0\5\16\b\2\u0aaf\u0aa0\3\2\2\2\u0aaf\u0aa3\3\2\2\2\u0aaf"+ + "\u0aa6\3\2\2\2\u0aaf\u0aa9\3\2\2\2\u0aaf\u0aac\3\2\2\2\u0ab0\u0ab3\3\2"+ + "\2\2\u0ab1\u0aaf\3\2\2\2\u0ab1\u0ab2\3\2\2\2\u0ab2\u01c1\3\2\2\2\u0ab3"+ + "\u0ab1\3\2\2\2\u0ab4\u0ab5\b\u00e2\1\2\u0ab5\u0ab6\5\u01c4\u00e3\2\u0ab6"+ + "\u0ac6\3\2\2\2\u0ab7\u0ab8\f\5\2\2\u0ab8\u0ab9\7F\2\2\u0ab9\u0aba\7F\2"+ + "\2\u0aba\u0ac5\5\u01c4\u00e3\2\u0abb\u0abc\f\4\2\2\u0abc\u0abd\7E\2\2"+ + "\u0abd\u0abe\7E\2\2\u0abe\u0ac5\5\u01c4\u00e3\2\u0abf\u0ac0\f\3\2\2\u0ac0"+ + "\u0ac1\7E\2\2\u0ac1\u0ac2\7E\2\2\u0ac2\u0ac3\7E\2\2\u0ac3\u0ac5\5\u01c4"+ + "\u00e3\2\u0ac4\u0ab7\3\2\2\2\u0ac4\u0abb\3\2\2\2\u0ac4\u0abf\3\2\2\2\u0ac5"+ + "\u0ac8\3\2\2\2\u0ac6\u0ac4\3\2\2\2\u0ac6\u0ac7\3\2\2\2\u0ac7\u01c3\3\2"+ + "\2\2\u0ac8\u0ac6\3\2\2\2\u0ac9\u0aca\b\u00e3\1\2\u0aca\u0acb\5\u01c6\u00e4"+ + "\2\u0acb\u0ad4\3\2\2\2\u0acc\u0acd\f\4\2\2\u0acd\u0ace\7S\2\2\u0ace\u0ad3"+ + "\5\u01c6\u00e4\2\u0acf\u0ad0\f\3\2\2\u0ad0\u0ad1\7T\2\2\u0ad1\u0ad3\5"+ + "\u01c6\u00e4\2\u0ad2\u0acc\3\2\2\2\u0ad2\u0acf\3\2\2\2\u0ad3\u0ad6\3\2"+ + "\2\2\u0ad4\u0ad2\3\2\2\2\u0ad4\u0ad5\3\2\2\2\u0ad5\u01c5\3\2\2\2\u0ad6"+ + "\u0ad4\3\2\2\2\u0ad7\u0ad8\b\u00e4\1\2\u0ad8\u0ad9\5\u01c8\u00e5\2\u0ad9"+ + "\u0ae5\3\2\2\2\u0ada\u0adb\f\5\2\2\u0adb\u0adc\7U\2\2\u0adc\u0ae4\5\u01c8"+ + "\u00e5\2\u0add\u0ade\f\4\2\2\u0ade\u0adf\7V\2\2\u0adf\u0ae4\5\u01c8\u00e5"+ + "\2\u0ae0\u0ae1\f\3\2\2\u0ae1\u0ae2\7Z\2\2\u0ae2\u0ae4\5\u01c8\u00e5\2"+ + "\u0ae3\u0ada\3\2\2\2\u0ae3\u0add\3\2\2\2\u0ae3\u0ae0\3\2\2\2\u0ae4\u0ae7"+ + "\3\2\2\2\u0ae5\u0ae3\3\2\2\2\u0ae5\u0ae6\3\2\2\2\u0ae6\u01c7\3\2\2\2\u0ae7"+ + "\u0ae5\3\2\2\2\u0ae8\u0af0\5\u01ca\u00e6\2\u0ae9\u0af0\5\u01cc\u00e7\2"+ + "\u0aea\u0aeb\7S\2\2\u0aeb\u0af0\5\u01c8\u00e5\2\u0aec\u0aed\7T\2\2\u0aed"+ + "\u0af0\5\u01c8\u00e5\2\u0aee\u0af0\5\u01ce\u00e8\2\u0aef\u0ae8\3\2\2\2"+ + "\u0aef\u0ae9\3\2\2\2\u0aef\u0aea\3\2\2\2\u0aef\u0aec\3\2\2\2\u0aef\u0aee"+ + "\3\2\2\2\u0af0\u01c9\3\2\2\2\u0af1\u0af2\7Q\2\2\u0af2\u0af3\5\u01c8\u00e5"+ + "\2\u0af3\u01cb\3\2\2\2\u0af4\u0af5\7R\2\2\u0af5\u0af6\5\u01c8\u00e5\2"+ + "\u0af6\u01cd\3\2\2\2\u0af7\u0afe\5\u01d0\u00e9\2\u0af8\u0af9\7H\2\2\u0af9"+ + "\u0afe\5\u01c8\u00e5\2\u0afa\u0afb\7G\2\2\u0afb\u0afe\5\u01c8\u00e5\2"+ + "\u0afc\u0afe\5\u01da\u00ee\2\u0afd\u0af7\3\2\2\2\u0afd\u0af8\3\2\2\2\u0afd"+ + "\u0afa\3\2\2\2\u0afd\u0afc\3\2\2\2\u0afe\u01cf\3\2\2\2\u0aff\u0b02\5\u0162"+ + "\u00b2\2\u0b00\u0b02\5<\37\2\u0b01\u0aff\3\2\2\2\u0b01\u0b00\3\2\2\2\u0b02"+ + "\u0b07\3\2\2\2\u0b03\u0b06\5\u01d4\u00eb\2\u0b04\u0b06\5\u01d8\u00ed\2"+ + "\u0b05\u0b03\3\2\2\2\u0b05\u0b04\3\2\2\2\u0b06\u0b09\3\2\2\2\u0b07\u0b05"+ + "\3\2\2\2\u0b07\u0b08\3\2\2\2\u0b08\u01d1\3\2\2\2\u0b09\u0b07\3\2\2\2\u0b0a"+ + "\u0b0b\5\u01d0\u00e9\2\u0b0b\u0b0c\7Q\2\2\u0b0c\u01d3\3\2\2\2\u0b0d\u0b0e"+ + "\7Q\2\2\u0b0e\u01d5\3\2\2\2\u0b0f\u0b10\5\u01d0\u00e9\2\u0b10\u0b11\7"+ + "R\2\2\u0b11\u01d7\3\2\2\2\u0b12\u0b13\7R\2\2\u0b13\u01d9\3\2\2\2\u0b14"+ + "\u0b15\7;\2\2\u0b15\u0b16\5\6\4\2\u0b16\u0b17\7<\2\2\u0b17\u0b18\5\u01c8"+ + "\u00e5\2\u0b18\u0b30\3\2\2\2\u0b19\u0b1a\7;\2\2\u0b1a\u0b1e\5\16\b\2\u0b1b"+ + "\u0b1d\5*\26\2\u0b1c\u0b1b\3\2\2\2\u0b1d\u0b20\3\2\2\2\u0b1e\u0b1c\3\2"+ + "\2\2\u0b1e\u0b1f\3\2\2\2\u0b1f\u0b21\3\2\2\2\u0b20\u0b1e\3\2\2\2\u0b21"+ + "\u0b22\7<\2\2\u0b22\u0b23\5\u01ce\u00e8\2\u0b23\u0b30\3\2\2\2\u0b24\u0b25"+ + "\7;\2\2\u0b25\u0b29\5\16\b\2\u0b26\u0b28\5*\26\2\u0b27\u0b26\3\2\2\2\u0b28"+ + "\u0b2b\3\2\2\2\u0b29\u0b27\3\2\2\2\u0b29\u0b2a\3\2\2\2\u0b2a\u0b2c\3\2"+ + "\2\2\u0b2b\u0b29\3\2\2\2\u0b2c\u0b2d\7<\2\2\u0b2d\u0b2e\5\u01a2\u00d2"+ + "\2\u0b2e\u0b30\3\2\2\2\u0b2f\u0b14\3\2\2\2\u0b2f\u0b19\3\2\2\2\u0b2f\u0b24"+ + "\3\2\2\2\u0b30\u01db\3\2\2\2\u0149\u01e0\u01e5\u01ec\u01f0\u01f4\u01fd"+ + "\u0201\u0205\u0207\u020d\u0212\u0219\u021e\u0220\u0226\u022b\u0230\u0235"+ + "\u0240\u024e\u0253\u025b\u0262\u0268\u026d\u0278\u027b\u0289\u028e\u0293"+ + "\u0298\u029e\u02a8\u02b0\u02ba\u02c2\u02ce\u02d2\u02d7\u02dd\u02e5\u02ee"+ + "\u02f9\u0316\u031a\u031f\u0325\u0328\u032b\u0337\u0342\u0350\u0357\u0360"+ + "\u0367\u036c\u0370\u037d\u0384\u038a\u038e\u0392\u0396\u039a\u039f\u03a3"+ + "\u03a7\u03a9\u03ae\u03b5\u03ba\u03bc\u03c2\u03c7\u03cb\u03de\u03e3\u03f3"+ + "\u03f6\u03fa\u0400\u0406\u0408\u040c\u0411\u0415\u041c\u0423\u042b\u042e"+ + "\u0433\u0437\u043d\u0442\u0449\u0450\u0455\u045b\u0467\u046c\u0470\u047a"+ + "\u047f\u0487\u048a\u048f\u0497\u049a\u049f\u04a4\u04a9\u04ae\u04b5\u04ba"+ + "\u04c2\u04c7\u04cc\u04d1\u04d7\u04dd\u04e0\u04e3\u04ec\u04f2\u04f8\u04fb"+ + "\u04fe\u0506\u050b\u0510\u0516\u0519\u0524\u052d\u0537\u053c\u0547\u054c"+ + "\u0558\u055d\u0569\u0573\u0578\u0580\u0583\u058a\u0592\u0598\u05a1\u05ab"+ + "\u05af\u05b2\u05bb\u05c9\u05cc\u05d5\u05da\u05e2\u05e8\u05f0\u05fc\u0603"+ + "\u0611\u0627\u0649\u0655\u065b\u0667\u0674\u068e\u0692\u0697\u069b\u069f"+ + "\u06a7\u06ab\u06af\u06b6\u06bf\u06c7\u06d6\u06e2\u06e8\u06ee\u0703\u0708"+ + "\u070e\u071a\u0725\u072f\u0732\u0737\u0740\u0746\u0750\u0755\u075e\u0775"+ + "\u077f\u0795\u079c\u07a4\u07ac\u07b7\u07ce\u07d8\u07e3\u07f9\u07fd\u0802"+ + "\u080a\u0810\u0814\u0818\u081c\u0822\u0827\u082c\u0830\u0834\u083a\u083f"+ + "\u0844\u0848\u084c\u084e\u0853\u0858\u085d\u0861\u0865\u0869\u086e\u0876"+ + "\u087c\u0880\u0884\u0888\u088e\u0893\u0898\u089c\u08a0\u08a2\u08a7\u08b6"+ + "\u08c4\u08d0\u08d9\u08e8\u08f5\u08fe\u0904\u090b\u0910\u0917\u091c\u0923"+ + "\u0928\u092f\u0934\u093c\u0941\u0945\u0949\u094e\u0955\u095c\u0961\u0968"+ + "\u096d\u0974\u0979\u0981\u0986\u098a\u0991\u0997\u099e\u09a5\u09ac\u09b4"+ + "\u09bb\u09c3\u09c7\u09ce\u09d5\u09dc\u09e4\u09eb\u09f3\u09f9\u09ff\u0a0b"+ + "\u0a11\u0a17\u0a22\u0a2b\u0a32\u0a39\u0a3e\u0a42\u0a4b\u0a56\u0a60\u0a6b"+ + "\u0a76\u0a81\u0a8c\u0a98\u0a9a\u0aaf\u0ab1\u0ac4\u0ac6\u0ad2\u0ad4\u0ae3"+ + "\u0ae5\u0aef\u0afd\u0b01\u0b05\u0b07\u0b1e\u0b29\u0b2f"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/JavaLexer.java b/src/de/dhbwstuttgart/parser/JavaLexer.java deleted file mode 100644 index 24224606..00000000 --- a/src/de/dhbwstuttgart/parser/JavaLexer.java +++ /dev/null @@ -1,3675 +0,0 @@ -/******************************************** - * file: JavaLexer.lex * - * * - * enth�lt die JLex-Spezifikation f�r die * - * Generierung des lexical analyzers * - * * - ********************************************/ -// user code: -package de.dhbwstuttgart.parser; -import de.dhbwstuttgart.logger.Section; - - -public class JavaLexer { - private final int YY_BUFFER_SIZE = 512; - private final int YY_F = -1; - private final int YY_NO_STATE = -1; - private final int YY_NOT_ACCEPT = 0; - private final int YY_START = 1; - private final int YY_END = 2; - private final int YY_NO_ANCHOR = 4; - private final int YY_BOL = 128; - private final int YY_EOF = 129; - - Token token; - private java.io.BufferedReader yy_reader; - private int yy_buffer_index; - private int yy_buffer_read; - private int yy_buffer_start; - private int yy_buffer_end; - private char yy_buffer[]; - private int yychar; - private int yyline; - private boolean yy_at_bol; - private int yy_lexical_state; - - public JavaLexer (java.io.Reader reader) { - this (); - if (null == reader) { - throw (new Error("Error: Bad input stream initializer.")); - } - yy_reader = new java.io.BufferedReader(reader); - } - - public JavaLexer (java.io.InputStream instream) { - this (); - if (null == instream) { - throw (new Error("Error: Bad input stream initializer.")); - } - yy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream)); - } - - private JavaLexer () { - yy_buffer = new char[YY_BUFFER_SIZE]; - yy_buffer_read = 0; - yy_buffer_index = 0; - yy_buffer_start = 0; - yy_buffer_end = 0; - yychar = 0; - yyline = 0; - yy_at_bol = true; - yy_lexical_state = YYINITIAL; - } - - private boolean yy_eof_done = false; - private final int commentblock = 1; - private final int YYINITIAL = 0; - private final int commentsingleline = 2; - private final int yy_state_dtrans[] = { - 0, - 78, - 187 - }; - private void yybegin (int state) { - yy_lexical_state = state; - } - private int yy_advance () - throws java.io.IOException { - int next_read; - int i; - int j; - - if (yy_buffer_index < yy_buffer_read) { - return yy_buffer[yy_buffer_index++]; - } - - if (0 != yy_buffer_start) { - i = yy_buffer_start; - j = 0; - while (i < yy_buffer_read) { - yy_buffer[j] = yy_buffer[i]; - ++i; - ++j; - } - yy_buffer_end = yy_buffer_end - yy_buffer_start; - yy_buffer_start = 0; - yy_buffer_read = j; - yy_buffer_index = j; - next_read = yy_reader.read(yy_buffer, - yy_buffer_read, - yy_buffer.length - yy_buffer_read); - if (-1 == next_read) { - return YY_EOF; - } - yy_buffer_read = yy_buffer_read + next_read; - } - - while (yy_buffer_index >= yy_buffer_read) { - if (yy_buffer_index >= yy_buffer.length) { - yy_buffer = yy_double(yy_buffer); - } - next_read = yy_reader.read(yy_buffer, - yy_buffer_read, - yy_buffer.length - yy_buffer_read); - if (-1 == next_read) { - return YY_EOF; - } - yy_buffer_read = yy_buffer_read + next_read; - } - return yy_buffer[yy_buffer_index++]; - } - private void yy_move_end () { - if (yy_buffer_end > yy_buffer_start && - '\n' == yy_buffer[yy_buffer_end-1]) - yy_buffer_end--; - if (yy_buffer_end > yy_buffer_start && - '\r' == yy_buffer[yy_buffer_end-1]) - yy_buffer_end--; - } - private boolean yy_last_was_cr=false; - private void yy_mark_start () { - int i; - for (i = yy_buffer_start; i < yy_buffer_index; ++i) { - if ('\n' == yy_buffer[i] && !yy_last_was_cr) { - ++yyline; - } - if ('\r' == yy_buffer[i]) { - ++yyline; - yy_last_was_cr=true; - } else yy_last_was_cr=false; - } - yychar = yychar - + yy_buffer_index - yy_buffer_start; - yy_buffer_start = yy_buffer_index; - } - private void yy_mark_end () { - yy_buffer_end = yy_buffer_index; - } - private void yy_to_mark () { - yy_buffer_index = yy_buffer_end; - yy_at_bol = (yy_buffer_end > yy_buffer_start) && - ('\r' == yy_buffer[yy_buffer_end-1] || - '\n' == yy_buffer[yy_buffer_end-1] || - 2028/*LS*/ == yy_buffer[yy_buffer_end-1] || - 2029/*PS*/ == yy_buffer[yy_buffer_end-1]); - } - private java.lang.String yytext () { - return (new java.lang.String(yy_buffer, - yy_buffer_start, - yy_buffer_end - yy_buffer_start)); - } - private int yylength () { - return yy_buffer_end - yy_buffer_start; - } - private char[] yy_double (char buf[]) { - int i; - char newbuf[]; - newbuf = new char[2*buf.length]; - for (i = 0; i < buf.length; ++i) { - newbuf[i] = buf[i]; - } - return newbuf; - } - private final int YY_E_INTERNAL = 0; - private final int YY_E_MATCH = 1; - private java.lang.String yy_error_string[] = { - "Error: Internal error.\n", - "Error: Unmatched input.\n" - }; - private void yy_error (int code,boolean fatal) { - java.lang.System.out.print(yy_error_string[code]); - java.lang.System.out.flush(); - if (fatal) { - throw new Error("Fatal Error.\n"); - } - } - private int[][] unpackFromString(int size1, int size2, String st) { - int colonIndex = -1; - String lengthString; - int sequenceLength = 0; - int sequenceInteger = 0; - - int commaIndex; - String workString; - - int res[][] = new int[size1][size2]; - for (int i= 0; i < size1; i++) { - for (int j= 0; j < size2; j++) { - if (sequenceLength != 0) { - res[i][j] = sequenceInteger; - sequenceLength--; - continue; - } - commaIndex = st.indexOf(','); - workString = (commaIndex==-1) ? st : - st.substring(0, commaIndex); - st = st.substring(commaIndex+1); - colonIndex = workString.indexOf(':'); - if (colonIndex == -1) { - res[i][j]=Integer.parseInt(workString); - continue; - } - lengthString = - workString.substring(colonIndex+1); - sequenceLength=Integer.parseInt(lengthString); - workString=workString.substring(0,colonIndex); - sequenceInteger=Integer.parseInt(workString); - res[i][j] = sequenceInteger; - sequenceLength--; - } - } - return res; - } - private int yy_acpt[] = { - /* 0 */ YY_NOT_ACCEPT, - /* 1 */ YY_NO_ANCHOR, - /* 2 */ YY_NO_ANCHOR, - /* 3 */ YY_NO_ANCHOR, - /* 4 */ YY_NO_ANCHOR, - /* 5 */ YY_NO_ANCHOR, - /* 6 */ YY_NO_ANCHOR, - /* 7 */ YY_NO_ANCHOR, - /* 8 */ YY_NO_ANCHOR, - /* 9 */ YY_NO_ANCHOR, - /* 10 */ YY_NO_ANCHOR, - /* 11 */ YY_NO_ANCHOR, - /* 12 */ YY_NO_ANCHOR, - /* 13 */ YY_NO_ANCHOR, - /* 14 */ YY_NO_ANCHOR, - /* 15 */ YY_NO_ANCHOR, - /* 16 */ YY_NO_ANCHOR, - /* 17 */ YY_NO_ANCHOR, - /* 18 */ YY_NO_ANCHOR, - /* 19 */ YY_NO_ANCHOR, - /* 20 */ YY_NO_ANCHOR, - /* 21 */ YY_NO_ANCHOR, - /* 22 */ YY_NO_ANCHOR, - /* 23 */ YY_NO_ANCHOR, - /* 24 */ YY_NO_ANCHOR, - /* 25 */ YY_NO_ANCHOR, - /* 26 */ YY_NO_ANCHOR, - /* 27 */ YY_NO_ANCHOR, - /* 28 */ YY_NO_ANCHOR, - /* 29 */ YY_NO_ANCHOR, - /* 30 */ YY_NO_ANCHOR, - /* 31 */ YY_NO_ANCHOR, - /* 32 */ YY_NO_ANCHOR, - /* 33 */ YY_NO_ANCHOR, - /* 34 */ YY_NO_ANCHOR, - /* 35 */ YY_NO_ANCHOR, - /* 36 */ YY_NO_ANCHOR, - /* 37 */ YY_NO_ANCHOR, - /* 38 */ YY_NO_ANCHOR, - /* 39 */ YY_NO_ANCHOR, - /* 40 */ YY_NO_ANCHOR, - /* 41 */ YY_NO_ANCHOR, - /* 42 */ YY_NO_ANCHOR, - /* 43 */ YY_NO_ANCHOR, - /* 44 */ YY_NO_ANCHOR, - /* 45 */ YY_NO_ANCHOR, - /* 46 */ YY_NO_ANCHOR, - /* 47 */ YY_NO_ANCHOR, - /* 48 */ YY_NO_ANCHOR, - /* 49 */ YY_NO_ANCHOR, - /* 50 */ YY_NO_ANCHOR, - /* 51 */ YY_NO_ANCHOR, - /* 52 */ YY_NO_ANCHOR, - /* 53 */ YY_NO_ANCHOR, - /* 54 */ YY_NO_ANCHOR, - /* 55 */ YY_NO_ANCHOR, - /* 56 */ YY_NO_ANCHOR, - /* 57 */ YY_NO_ANCHOR, - /* 58 */ YY_NO_ANCHOR, - /* 59 */ YY_NO_ANCHOR, - /* 60 */ YY_NO_ANCHOR, - /* 61 */ YY_NO_ANCHOR, - /* 62 */ YY_NO_ANCHOR, - /* 63 */ YY_NO_ANCHOR, - /* 64 */ YY_NO_ANCHOR, - /* 65 */ YY_NO_ANCHOR, - /* 66 */ YY_NO_ANCHOR, - /* 67 */ YY_NO_ANCHOR, - /* 68 */ YY_NO_ANCHOR, - /* 69 */ YY_NO_ANCHOR, - /* 70 */ YY_NO_ANCHOR, - /* 71 */ YY_NO_ANCHOR, - /* 72 */ YY_NO_ANCHOR, - /* 73 */ YY_NO_ANCHOR, - /* 74 */ YY_NO_ANCHOR, - /* 75 */ YY_NO_ANCHOR, - /* 76 */ YY_NO_ANCHOR, - /* 77 */ YY_NO_ANCHOR, - /* 78 */ YY_NO_ANCHOR, - /* 79 */ YY_NO_ANCHOR, - /* 80 */ YY_NO_ANCHOR, - /* 81 */ YY_NO_ANCHOR, - /* 82 */ YY_NO_ANCHOR, - /* 83 */ YY_NOT_ACCEPT, - /* 84 */ YY_NO_ANCHOR, - /* 85 */ YY_NO_ANCHOR, - /* 86 */ YY_NO_ANCHOR, - /* 87 */ YY_NO_ANCHOR, - /* 88 */ YY_NO_ANCHOR, - /* 89 */ YY_NO_ANCHOR, - /* 90 */ YY_NO_ANCHOR, - /* 91 */ YY_NO_ANCHOR, - /* 92 */ YY_NO_ANCHOR, - /* 93 */ YY_NO_ANCHOR, - /* 94 */ YY_NO_ANCHOR, - /* 95 */ YY_NO_ANCHOR, - /* 96 */ YY_NO_ANCHOR, - /* 97 */ YY_NO_ANCHOR, - /* 98 */ YY_NO_ANCHOR, - /* 99 */ YY_NO_ANCHOR, - /* 100 */ YY_NO_ANCHOR, - /* 101 */ YY_NO_ANCHOR, - /* 102 */ YY_NO_ANCHOR, - /* 103 */ YY_NO_ANCHOR, - /* 104 */ YY_NO_ANCHOR, - /* 105 */ YY_NO_ANCHOR, - /* 106 */ YY_NO_ANCHOR, - /* 107 */ YY_NO_ANCHOR, - /* 108 */ YY_NO_ANCHOR, - /* 109 */ YY_NO_ANCHOR, - /* 110 */ YY_NO_ANCHOR, - /* 111 */ YY_NO_ANCHOR, - /* 112 */ YY_NO_ANCHOR, - /* 113 */ YY_NO_ANCHOR, - /* 114 */ YY_NO_ANCHOR, - /* 115 */ YY_NO_ANCHOR, - /* 116 */ YY_NO_ANCHOR, - /* 117 */ YY_NO_ANCHOR, - /* 118 */ YY_NO_ANCHOR, - /* 119 */ YY_NO_ANCHOR, - /* 120 */ YY_NO_ANCHOR, - /* 121 */ YY_NO_ANCHOR, - /* 122 */ YY_NO_ANCHOR, - /* 123 */ YY_NO_ANCHOR, - /* 124 */ YY_NO_ANCHOR, - /* 125 */ YY_NO_ANCHOR, - /* 126 */ YY_NO_ANCHOR, - /* 127 */ YY_NO_ANCHOR, - /* 128 */ YY_NO_ANCHOR, - /* 129 */ YY_NO_ANCHOR, - /* 130 */ YY_NO_ANCHOR, - /* 131 */ YY_NOT_ACCEPT, - /* 132 */ YY_NO_ANCHOR, - /* 133 */ YY_NO_ANCHOR, - /* 134 */ YY_NO_ANCHOR, - /* 135 */ YY_NO_ANCHOR, - /* 136 */ YY_NO_ANCHOR, - /* 137 */ YY_NO_ANCHOR, - /* 138 */ YY_NO_ANCHOR, - /* 139 */ YY_NO_ANCHOR, - /* 140 */ YY_NO_ANCHOR, - /* 141 */ YY_NO_ANCHOR, - /* 142 */ YY_NO_ANCHOR, - /* 143 */ YY_NO_ANCHOR, - /* 144 */ YY_NO_ANCHOR, - /* 145 */ YY_NO_ANCHOR, - /* 146 */ YY_NO_ANCHOR, - /* 147 */ YY_NO_ANCHOR, - /* 148 */ YY_NO_ANCHOR, - /* 149 */ YY_NO_ANCHOR, - /* 150 */ YY_NO_ANCHOR, - /* 151 */ YY_NO_ANCHOR, - /* 152 */ YY_NO_ANCHOR, - /* 153 */ YY_NO_ANCHOR, - /* 154 */ YY_NO_ANCHOR, - /* 155 */ YY_NO_ANCHOR, - /* 156 */ YY_NOT_ACCEPT, - /* 157 */ YY_NO_ANCHOR, - /* 158 */ YY_NO_ANCHOR, - /* 159 */ YY_NO_ANCHOR, - /* 160 */ YY_NO_ANCHOR, - /* 161 */ YY_NO_ANCHOR, - /* 162 */ YY_NOT_ACCEPT, - /* 163 */ YY_NO_ANCHOR, - /* 164 */ YY_NO_ANCHOR, - /* 165 */ YY_NO_ANCHOR, - /* 166 */ YY_NO_ANCHOR, - /* 167 */ YY_NO_ANCHOR, - /* 168 */ YY_NOT_ACCEPT, - /* 169 */ YY_NO_ANCHOR, - /* 170 */ YY_NO_ANCHOR, - /* 171 */ YY_NO_ANCHOR, - /* 172 */ YY_NO_ANCHOR, - /* 173 */ YY_NOT_ACCEPT, - /* 174 */ YY_NO_ANCHOR, - /* 175 */ YY_NO_ANCHOR, - /* 176 */ YY_NO_ANCHOR, - /* 177 */ YY_NO_ANCHOR, - /* 178 */ YY_NOT_ACCEPT, - /* 179 */ YY_NO_ANCHOR, - /* 180 */ YY_NO_ANCHOR, - /* 181 */ YY_NO_ANCHOR, - /* 182 */ YY_NO_ANCHOR, - /* 183 */ YY_NOT_ACCEPT, - /* 184 */ YY_NO_ANCHOR, - /* 185 */ YY_NO_ANCHOR, - /* 186 */ YY_NO_ANCHOR, - /* 187 */ YY_NOT_ACCEPT, - /* 188 */ YY_NO_ANCHOR, - /* 189 */ YY_NO_ANCHOR, - /* 190 */ YY_NO_ANCHOR, - /* 191 */ YY_NO_ANCHOR, - /* 192 */ YY_NO_ANCHOR, - /* 193 */ YY_NO_ANCHOR, - /* 194 */ YY_NO_ANCHOR, - /* 195 */ YY_NO_ANCHOR, - /* 196 */ YY_NO_ANCHOR, - /* 197 */ YY_NO_ANCHOR, - /* 198 */ YY_NO_ANCHOR, - /* 199 */ YY_NO_ANCHOR, - /* 200 */ YY_NO_ANCHOR, - /* 201 */ YY_NO_ANCHOR, - /* 202 */ YY_NO_ANCHOR, - /* 203 */ YY_NO_ANCHOR, - /* 204 */ YY_NO_ANCHOR, - /* 205 */ YY_NO_ANCHOR, - /* 206 */ YY_NO_ANCHOR, - /* 207 */ YY_NO_ANCHOR, - /* 208 */ YY_NO_ANCHOR, - /* 209 */ YY_NO_ANCHOR, - /* 210 */ YY_NO_ANCHOR, - /* 211 */ YY_NO_ANCHOR, - /* 212 */ YY_NO_ANCHOR, - /* 213 */ YY_NO_ANCHOR, - /* 214 */ YY_NO_ANCHOR, - /* 215 */ YY_NO_ANCHOR, - /* 216 */ YY_NO_ANCHOR, - /* 217 */ YY_NO_ANCHOR, - /* 218 */ YY_NO_ANCHOR, - /* 219 */ YY_NO_ANCHOR, - /* 220 */ YY_NO_ANCHOR, - /* 221 */ YY_NO_ANCHOR, - /* 222 */ YY_NO_ANCHOR, - /* 223 */ YY_NO_ANCHOR, - /* 224 */ YY_NO_ANCHOR, - /* 225 */ YY_NO_ANCHOR, - /* 226 */ YY_NO_ANCHOR, - /* 227 */ YY_NO_ANCHOR, - /* 228 */ YY_NO_ANCHOR, - /* 229 */ YY_NO_ANCHOR, - /* 230 */ YY_NO_ANCHOR, - /* 231 */ YY_NO_ANCHOR, - /* 232 */ YY_NO_ANCHOR, - /* 233 */ YY_NO_ANCHOR, - /* 234 */ YY_NO_ANCHOR, - /* 235 */ YY_NO_ANCHOR, - /* 236 */ YY_NO_ANCHOR, - /* 237 */ YY_NO_ANCHOR, - /* 238 */ YY_NO_ANCHOR, - /* 239 */ YY_NO_ANCHOR, - /* 240 */ YY_NO_ANCHOR, - /* 241 */ YY_NO_ANCHOR, - /* 242 */ YY_NO_ANCHOR, - /* 243 */ YY_NO_ANCHOR, - /* 244 */ YY_NO_ANCHOR, - /* 245 */ YY_NO_ANCHOR, - /* 246 */ YY_NO_ANCHOR, - /* 247 */ YY_NO_ANCHOR, - /* 248 */ YY_NO_ANCHOR, - /* 249 */ YY_NO_ANCHOR, - /* 250 */ YY_NO_ANCHOR, - /* 251 */ YY_NO_ANCHOR, - /* 252 */ YY_NO_ANCHOR, - /* 253 */ YY_NO_ANCHOR, - /* 254 */ YY_NO_ANCHOR, - /* 255 */ YY_NO_ANCHOR, - /* 256 */ YY_NO_ANCHOR, - /* 257 */ YY_NO_ANCHOR, - /* 258 */ YY_NO_ANCHOR, - /* 259 */ YY_NO_ANCHOR, - /* 260 */ YY_NO_ANCHOR, - /* 261 */ YY_NO_ANCHOR, - /* 262 */ YY_NO_ANCHOR, - /* 263 */ YY_NO_ANCHOR, - /* 264 */ YY_NO_ANCHOR, - /* 265 */ YY_NO_ANCHOR, - /* 266 */ YY_NO_ANCHOR, - /* 267 */ YY_NO_ANCHOR, - /* 268 */ YY_NO_ANCHOR, - /* 269 */ YY_NO_ANCHOR, - /* 270 */ YY_NO_ANCHOR, - /* 271 */ YY_NO_ANCHOR, - /* 272 */ YY_NO_ANCHOR, - /* 273 */ YY_NO_ANCHOR, - /* 274 */ YY_NO_ANCHOR, - /* 275 */ YY_NO_ANCHOR, - /* 276 */ YY_NO_ANCHOR, - /* 277 */ YY_NO_ANCHOR, - /* 278 */ YY_NO_ANCHOR, - /* 279 */ YY_NO_ANCHOR, - /* 280 */ YY_NO_ANCHOR, - /* 281 */ YY_NO_ANCHOR, - /* 282 */ YY_NO_ANCHOR, - /* 283 */ YY_NO_ANCHOR, - /* 284 */ YY_NO_ANCHOR, - /* 285 */ YY_NO_ANCHOR, - /* 286 */ YY_NO_ANCHOR, - /* 287 */ YY_NO_ANCHOR, - /* 288 */ YY_NO_ANCHOR, - /* 289 */ YY_NO_ANCHOR, - /* 290 */ YY_NO_ANCHOR, - /* 291 */ YY_NO_ANCHOR, - /* 292 */ YY_NO_ANCHOR, - /* 293 */ YY_NO_ANCHOR, - /* 294 */ YY_NO_ANCHOR, - /* 295 */ YY_NO_ANCHOR, - /* 296 */ YY_NO_ANCHOR, - /* 297 */ YY_NO_ANCHOR, - /* 298 */ YY_NO_ANCHOR, - /* 299 */ YY_NO_ANCHOR, - /* 300 */ YY_NO_ANCHOR, - /* 301 */ YY_NO_ANCHOR, - /* 302 */ YY_NO_ANCHOR, - /* 303 */ YY_NO_ANCHOR, - /* 304 */ YY_NO_ANCHOR, - /* 305 */ YY_NO_ANCHOR, - /* 306 */ YY_NO_ANCHOR, - /* 307 */ YY_NO_ANCHOR, - /* 308 */ YY_NO_ANCHOR, - /* 309 */ YY_NO_ANCHOR, - /* 310 */ YY_NO_ANCHOR, - /* 311 */ YY_NO_ANCHOR, - /* 312 */ YY_NO_ANCHOR, - /* 313 */ YY_NO_ANCHOR, - /* 314 */ YY_NO_ANCHOR, - /* 315 */ YY_NO_ANCHOR, - /* 316 */ YY_NO_ANCHOR, - /* 317 */ YY_NO_ANCHOR, - /* 318 */ YY_NO_ANCHOR, - /* 319 */ YY_NO_ANCHOR, - /* 320 */ YY_NO_ANCHOR, - /* 321 */ YY_NO_ANCHOR, - /* 322 */ YY_NO_ANCHOR, - /* 323 */ YY_NO_ANCHOR, - /* 324 */ YY_NO_ANCHOR, - /* 325 */ YY_NO_ANCHOR, - /* 326 */ YY_NO_ANCHOR, - /* 327 */ YY_NO_ANCHOR, - /* 328 */ YY_NO_ANCHOR, - /* 329 */ YY_NO_ANCHOR, - /* 330 */ YY_NO_ANCHOR, - /* 331 */ YY_NO_ANCHOR, - /* 332 */ YY_NO_ANCHOR, - /* 333 */ YY_NO_ANCHOR, - /* 334 */ YY_NO_ANCHOR, - /* 335 */ YY_NO_ANCHOR, - /* 336 */ YY_NO_ANCHOR, - /* 337 */ YY_NO_ANCHOR, - /* 338 */ YY_NO_ANCHOR, - /* 339 */ YY_NO_ANCHOR, - /* 340 */ YY_NO_ANCHOR, - /* 341 */ YY_NO_ANCHOR, - /* 342 */ YY_NO_ANCHOR, - /* 343 */ YY_NO_ANCHOR, - /* 344 */ YY_NO_ANCHOR, - /* 345 */ YY_NO_ANCHOR, - /* 346 */ YY_NO_ANCHOR, - /* 347 */ YY_NO_ANCHOR, - /* 348 */ YY_NO_ANCHOR, - /* 349 */ YY_NO_ANCHOR, - /* 350 */ YY_NO_ANCHOR, - /* 351 */ YY_NO_ANCHOR, - /* 352 */ YY_NO_ANCHOR, - /* 353 */ YY_NO_ANCHOR, - /* 354 */ YY_NO_ANCHOR, - /* 355 */ YY_NO_ANCHOR, - /* 356 */ YY_NO_ANCHOR, - /* 357 */ YY_NO_ANCHOR, - /* 358 */ YY_NO_ANCHOR, - /* 359 */ YY_NO_ANCHOR, - /* 360 */ YY_NO_ANCHOR, - /* 361 */ YY_NO_ANCHOR, - /* 362 */ YY_NO_ANCHOR, - /* 363 */ YY_NO_ANCHOR, - /* 364 */ YY_NO_ANCHOR, - /* 365 */ YY_NO_ANCHOR, - /* 366 */ YY_NO_ANCHOR, - /* 367 */ YY_NO_ANCHOR, - /* 368 */ YY_NO_ANCHOR, - /* 369 */ YY_NO_ANCHOR, - /* 370 */ YY_NO_ANCHOR, - /* 371 */ YY_NO_ANCHOR, - /* 372 */ YY_NO_ANCHOR, - /* 373 */ YY_NO_ANCHOR, - /* 374 */ YY_NO_ANCHOR, - /* 375 */ YY_NO_ANCHOR, - /* 376 */ YY_NO_ANCHOR, - /* 377 */ YY_NO_ANCHOR, - /* 378 */ YY_NO_ANCHOR, - /* 379 */ YY_NO_ANCHOR, - /* 380 */ YY_NO_ANCHOR, - /* 381 */ YY_NO_ANCHOR, - /* 382 */ YY_NO_ANCHOR, - /* 383 */ YY_NO_ANCHOR, - /* 384 */ YY_NO_ANCHOR, - /* 385 */ YY_NO_ANCHOR, - /* 386 */ YY_NO_ANCHOR, - /* 387 */ YY_NO_ANCHOR, - /* 388 */ YY_NO_ANCHOR, - /* 389 */ YY_NO_ANCHOR, - /* 390 */ YY_NO_ANCHOR, - /* 391 */ YY_NO_ANCHOR, - /* 392 */ YY_NO_ANCHOR, - /* 393 */ YY_NO_ANCHOR, - /* 394 */ YY_NO_ANCHOR, - /* 395 */ YY_NO_ANCHOR, - /* 396 */ YY_NO_ANCHOR, - /* 397 */ YY_NO_ANCHOR, - /* 398 */ YY_NO_ANCHOR, - /* 399 */ YY_NO_ANCHOR, - /* 400 */ YY_NO_ANCHOR, - /* 401 */ YY_NO_ANCHOR, - /* 402 */ YY_NO_ANCHOR, - /* 403 */ YY_NO_ANCHOR, - /* 404 */ YY_NO_ANCHOR, - /* 405 */ YY_NO_ANCHOR, - /* 406 */ YY_NO_ANCHOR, - /* 407 */ YY_NO_ANCHOR, - /* 408 */ YY_NO_ANCHOR, - /* 409 */ YY_NO_ANCHOR, - /* 410 */ YY_NO_ANCHOR, - /* 411 */ YY_NO_ANCHOR, - /* 412 */ YY_NO_ANCHOR, - /* 413 */ YY_NO_ANCHOR, - /* 414 */ YY_NO_ANCHOR, - /* 415 */ YY_NO_ANCHOR, - /* 416 */ YY_NO_ANCHOR, - /* 417 */ YY_NO_ANCHOR, - /* 418 */ YY_NO_ANCHOR, - /* 419 */ YY_NO_ANCHOR, - /* 420 */ YY_NO_ANCHOR, - /* 421 */ YY_NO_ANCHOR, - /* 422 */ YY_NO_ANCHOR, - /* 423 */ YY_NO_ANCHOR, - /* 424 */ YY_NO_ANCHOR, - /* 425 */ YY_NO_ANCHOR, - /* 426 */ YY_NO_ANCHOR, - /* 427 */ YY_NO_ANCHOR, - /* 428 */ YY_NO_ANCHOR, - /* 429 */ YY_NO_ANCHOR, - /* 430 */ YY_NO_ANCHOR, - /* 431 */ YY_NO_ANCHOR, - /* 432 */ YY_NO_ANCHOR, - /* 433 */ YY_NO_ANCHOR, - /* 434 */ YY_NO_ANCHOR, - /* 435 */ YY_NO_ANCHOR, - /* 436 */ YY_NO_ANCHOR, - /* 437 */ YY_NO_ANCHOR, - /* 438 */ YY_NO_ANCHOR, - /* 439 */ YY_NO_ANCHOR, - /* 440 */ YY_NO_ANCHOR, - /* 441 */ YY_NO_ANCHOR, - /* 442 */ YY_NO_ANCHOR, - /* 443 */ YY_NO_ANCHOR, - /* 444 */ YY_NO_ANCHOR, - /* 445 */ YY_NO_ANCHOR, - /* 446 */ YY_NO_ANCHOR, - /* 447 */ YY_NO_ANCHOR, - /* 448 */ YY_NO_ANCHOR, - /* 449 */ YY_NO_ANCHOR, - /* 450 */ YY_NO_ANCHOR, - /* 451 */ YY_NO_ANCHOR, - /* 452 */ YY_NO_ANCHOR, - /* 453 */ YY_NO_ANCHOR, - /* 454 */ YY_NO_ANCHOR, - /* 455 */ YY_NO_ANCHOR, - /* 456 */ YY_NO_ANCHOR, - /* 457 */ YY_NO_ANCHOR, - /* 458 */ YY_NO_ANCHOR, - /* 459 */ YY_NO_ANCHOR, - /* 460 */ YY_NO_ANCHOR, - /* 461 */ YY_NO_ANCHOR, - /* 462 */ YY_NO_ANCHOR, - /* 463 */ YY_NO_ANCHOR, - /* 464 */ YY_NO_ANCHOR, - /* 465 */ YY_NO_ANCHOR, - /* 466 */ YY_NO_ANCHOR, - /* 467 */ YY_NO_ANCHOR, - /* 468 */ YY_NO_ANCHOR, - /* 469 */ YY_NO_ANCHOR, - /* 470 */ YY_NO_ANCHOR, - /* 471 */ YY_NO_ANCHOR, - /* 472 */ YY_NO_ANCHOR, - /* 473 */ YY_NO_ANCHOR, - /* 474 */ YY_NO_ANCHOR, - /* 475 */ YY_NO_ANCHOR, - /* 476 */ YY_NO_ANCHOR, - /* 477 */ YY_NO_ANCHOR, - /* 478 */ YY_NO_ANCHOR, - /* 479 */ YY_NO_ANCHOR, - /* 480 */ YY_NO_ANCHOR, - /* 481 */ YY_NO_ANCHOR, - /* 482 */ YY_NO_ANCHOR, - /* 483 */ YY_NO_ANCHOR, - /* 484 */ YY_NO_ANCHOR, - /* 485 */ YY_NO_ANCHOR, - /* 486 */ YY_NO_ANCHOR, - /* 487 */ YY_NO_ANCHOR, - /* 488 */ YY_NO_ANCHOR, - /* 489 */ YY_NO_ANCHOR, - /* 490 */ YY_NO_ANCHOR, - /* 491 */ YY_NO_ANCHOR, - /* 492 */ YY_NO_ANCHOR, - /* 493 */ YY_NO_ANCHOR, - /* 494 */ YY_NO_ANCHOR, - /* 495 */ YY_NO_ANCHOR, - /* 496 */ YY_NO_ANCHOR, - /* 497 */ YY_NO_ANCHOR, - /* 498 */ YY_NO_ANCHOR, - /* 499 */ YY_NO_ANCHOR, - /* 500 */ YY_NO_ANCHOR, - /* 501 */ YY_NO_ANCHOR, - /* 502 */ YY_NO_ANCHOR, - /* 503 */ YY_NO_ANCHOR, - /* 504 */ YY_NO_ANCHOR, - /* 505 */ YY_NO_ANCHOR, - /* 506 */ YY_NO_ANCHOR, - /* 507 */ YY_NO_ANCHOR, - /* 508 */ YY_NO_ANCHOR, - /* 509 */ YY_NO_ANCHOR, - /* 510 */ YY_NO_ANCHOR, - /* 511 */ YY_NO_ANCHOR, - /* 512 */ YY_NO_ANCHOR, - /* 513 */ YY_NO_ANCHOR, - /* 514 */ YY_NO_ANCHOR, - /* 515 */ YY_NO_ANCHOR, - /* 516 */ YY_NO_ANCHOR, - /* 517 */ YY_NO_ANCHOR, - /* 518 */ YY_NO_ANCHOR, - /* 519 */ YY_NO_ANCHOR, - /* 520 */ YY_NO_ANCHOR, - /* 521 */ YY_NO_ANCHOR, - /* 522 */ YY_NO_ANCHOR, - /* 523 */ YY_NO_ANCHOR, - /* 524 */ YY_NO_ANCHOR, - /* 525 */ YY_NO_ANCHOR, - /* 526 */ YY_NO_ANCHOR, - /* 527 */ YY_NO_ANCHOR, - /* 528 */ YY_NO_ANCHOR, - /* 529 */ YY_NO_ANCHOR, - /* 530 */ YY_NO_ANCHOR, - /* 531 */ YY_NO_ANCHOR, - /* 532 */ YY_NO_ANCHOR, - /* 533 */ YY_NO_ANCHOR, - /* 534 */ YY_NO_ANCHOR, - /* 535 */ YY_NO_ANCHOR, - /* 536 */ YY_NO_ANCHOR, - /* 537 */ YY_NO_ANCHOR, - /* 538 */ YY_NO_ANCHOR, - /* 539 */ YY_NO_ANCHOR, - /* 540 */ YY_NO_ANCHOR, - /* 541 */ YY_NO_ANCHOR, - /* 542 */ YY_NO_ANCHOR, - /* 543 */ YY_NO_ANCHOR, - /* 544 */ YY_NO_ANCHOR, - /* 545 */ YY_NO_ANCHOR, - /* 546 */ YY_NO_ANCHOR, - /* 547 */ YY_NO_ANCHOR, - /* 548 */ YY_NO_ANCHOR - }; - private int yy_cmap[] = unpackFromString(1,130, -"28:8,58,29,57,28:2,27,28:18,40,50,39,38,41,55,52,37,43:2,25,53,43,54,36,24," + -"31,35:7,30:2,45,43,48,47,49,45,38,34:6,41:5,32,41:11,33,41:2,44,26,44,56,42" + -",28,1,2,6,15,9,16,22,12,13,41,11,8,19,10,7,20,41,5,3,4,14,23,21,17,18,41,44" + -",51,44,46,28,0:2")[0]; - - private int yy_rmap[] = unpackFromString(1,549, -"0,1,2,3,4,5,6,1:2,7:2,8,1:4,9,1:16,7:2,10,7,1,11,1,7:7,12,13,7:2,14,7:2,15," + -"7,1:2,16,7:6,1,7:12,17,18,1,19,20,21,22,23,1,24,25,26:2,27,28,26:2,29,26,1," + -"26:7,30,26:2,31,26:19,32,33,34,35,36,37,1,38,39:2,28,39:9,40,39:5,41,42,43," + -"44,45,46,47,48,49,50,51,52,53,28,54,55,56,57,58,59,60,61,62,63,64,65,66,67," + -"68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92," + -"93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,11" + -"3,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,1" + -"32,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150," + -"151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169" + -",170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,18" + -"8,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,2" + -"07,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225," + -"226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244" + -",245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,26" + -"3,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,2" + -"82,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300," + -"301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319" + -",320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,33" + -"8,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,3" + -"57,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375," + -"376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,39," + -"394,395,39,396,397,398,399,400,401,26,402,403,404,405,406,407,408,409,410,4" + -"11,412,413,414,415,416,417,418,419,420,7,26,421,405,422,423,419,424,425,426" + -",427")[0]; - - private int yy_nxt[][] = unpackFromString(428,59, -"1,2,417,420,267,467,351,538:2,354,271,538:2,84,538,132,274,538:3,471,423,53" + -"8,357,3,85,83,4,-1,4,5,6,538:3,5,7,131,-1,156,4,538:2,7:2,8:2,88,135,159,16" + -"5,133,158,164,170,175,180,4:2,-1:60,538,507,538:21,-1:6,538:6,-1:5,538:2,-1" + -":40,11,12,-1:21,13,-1:38,4,-1,4,-1:10,4,-1:16,4:2,-1:16,15,-1:13,5:2,86,-1:" + -"2,5,16,-1:39,168,-1:13,87,134,168,-1,87,-1:24,538:23,-1:6,538:6,-1:5,538:2," + -"-1:64,178,183,-1:25,15,-1:13,16:2,-1:3,16,-1:24,538:8,496,538:14,-1:6,538:6" + -",-1:5,538:2,-1:17,38:2,-1:3,38,-1:2,38,-1:5,38:2,-1:13,38:2,97,-1,38:2,-1:7" + -"0,56,-1:58,57,-1,58,-1:10,538:2,61,538:20,-1:6,538:6,-1:5,538:2,-1:17,538:7" + -",246,538:15,-1:6,538:6,-1:5,538:2,-1:63,65,-1:11,1,128,419,422,269,469,353," + -"539:2,356,273,539:2,154,539,160,276,539:3,473,425,539,359,166,79,171,539:3," + -"541,543,539:3,541,539,176,539,181,539:7,544:4,545,546,547,548,544:2,539:2,-" + -"1:24,80,-1:22,14,-1:12,508,472,508,538,508:19,167:2,-1:2,167:2,508:6,167:5," + -"508:2,167:14,-1:29,82,-1,82,-1:10,4,-1:16,82:2,-1,162:26,-1,162:29,-1,162,-" + -"1,538:9,169,538:5,9,538:2,435,538:4,-1:6,538:6,-1:5,538:2,-1:63,14,-1:42,87" + -",134,-1:2,87,-1:70,18,-1:12,539:24,-1,539:33,-1,539:24,-1,539:22,531,532,53" + -"9:9,-1,167:3,-1,167:21,-1:2,167:29,-1:3,539:8,498,539:15,-1,539:33,-1,539:2" + -",112,539:21,-1,539:33,-1,539:7,253,539:16,-1,539:33,-1,539,509,539:22,-1,53" + -"9:33,-1,508:3,538,508:5,190,508:5,136,508:2,433,508:4,167:2,-1:2,167:2,508:" + -"6,167:5,508:2,167:14,-1:3,167:3,-1,167:21,-1,82,167,130,167:10,182,167:16,8" + -"2:2,-1,173:25,-1:4,173:7,-1,173,-1:2,173,-1,173,-1,173,-1:2,173:3,-1,173,-1" + -":2,173,-1:4,538:6,10,538,481,538:14,-1:6,538:6,-1:5,538:2,-1:63,22,-1:3,23," + -"-1:54,19,-1:12,508:3,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-" + -"1:3,508:3,538,508:3,238,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1" + -":3,539:9,192,539:5,89,539:2,437,539:5,-1,539:33,-1,508:3,538,508:2,137,508," + -"485,508:14,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,156:25,-1:4,156:7" + -",-1,156,17,156:2,-1,156,-1,156,-1:2,156:3,-1,156,-1:2,156:2,-1:3,538:13,179" + -",538:3,33,538:5,-1:6,538:6,-1:5,538:2,-1:63,24,-1:4,25,-1:53,20,-1:12,539:6" + -",90,539,483,539:15,-1,539:33,-1,167:3,-1,167:19,138,92,-1:2,167:29,-1:59,37" + -",-1:2,538:20,34,538:2,-1:6,538:6,-1:5,538:2,-1:63,26,-1:5,27,-1:52,21,-1:12" + -",539:23,91,12,539:21,518,539:11,-1,38:2,-1:3,38,-1:2,38,-1:5,38:2,-1:13,38:" + -"2,-1:2,38:2,-1:24,538:2,515,35,538:19,-1:6,538:6,-1:5,538:2,-1:63,28,-1,29," + -"-1:4,30,-1:5,520:24,162,520,539,520:29,539,520,-1,167:3,173,167:21,-1:2,167" + -":29,-1:39,39,-1:22,538:4,36,538:18,-1:6,538:6,-1:5,538:2,-1:63,31,-1:12,526" + -":24,173,539:4,526:7,539,526,539:2,526,539,526,539,526,539:2,526:3,539,526,5" + -"39:2,526,539:3,-1,177:3,156,177:21,-1:2,167:2,177:7,167,177,167,177:2,167,1" + -"77,167,177,167:2,177:3,167,177,167:2,177:2,-1:50,47,-1:11,538:8,40,538:14,-" + -"1:6,538:6,-1:5,538:2,-1:63,32,-1:12,181:24,156,539:4,181:7,539,181,518,181:" + -"2,539,181,539,181,539:2,181:3,539,181,539:2,181:2,539:2,-1,167:3,-1,167:21," + -"-1,4,167,182,167:10,182,167:16,4:2,-1:49,48,-1:10,538:2,41,538:20,-1:6,538:" + -"6,-1:5,538:2,-1:17,539:13,527,539:3,93,539:6,-1,539:33,-1,508:3,538,508:16," + -"139,508:2,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:2,1,81,418,421,267,4" + -"24,352,508:2,355,268,508:2,129,508,155,272,508:3,468,427,508,358,161,167,83" + -",82,167,130,167:2,508:3,167:2,172,167,177,182,508:2,167:14,82:2,-1,538:8,42" + -",538:14,-1:6,538:6,-1:5,538:2,-1:17,539:20,94,539:3,-1,539:33,-1,508:2,491," + -"35,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:4,43,538:18,-1" + -":6,538:6,-1:5,538:2,-1:17,539:2,528,95,539:20,-1,539:33,-1,508:3,538,140,50" + -"8:18,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:8,44,538:14,-1:6,53" + -"8:6,-1:5,538:2,-1:17,539:4,96,539:19,-1,539:33,-1,508:3,538,508:4,141,508:1" + -"4,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:7,45,538:15,-1:6,538:6" + -",-1:5,538:2,-1:17,539:2,98,539:21,-1,539:33,-1,508:3,538,142,508:18,167:2,-" + -"1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:14,46,538:8,-1:6,538:6,-1:5,538" + -":2,-1:17,539:8,99,539:15,-1,539:33,-1,508:3,538,508:4,143,508:14,167:2,-1:2" + -",167:2,508:6,167:5,508:2,167:14,-1:3,538:10,49,538:12,-1:6,538:6,-1:5,538:2" + -",-1:17,539:4,100,539:19,-1,539:33,-1,508:3,538,508:10,144,508:8,167:2,-1:2," + -"167:2,508:6,167:5,508:2,167:14,-1:3,538:4,50,538:18,-1:6,538:6,-1:5,538:2,-" + -"1:17,539:8,101,539:15,-1,539:33,-1,508:3,538,508:6,145,508:12,167:2,-1:2,16" + -"7:2,508:6,167:5,508:2,167:14,-1:3,538:20,51,538:2,-1:6,538:6,-1:5,538:2,-1:" + -"17,539:14,102,539:9,-1,539:33,-1,508:3,538,146,508:18,167:2,-1:2,167:2,508:" + -"6,167:5,508:2,167:14,-1:3,538:11,52,538:11,-1:6,538:6,-1:5,538:2,-1:17,539:" + -"10,103,539:13,-1,539:33,-1,508:2,147,538,508:19,167:2,-1:2,167:2,508:6,167:" + -"5,508:2,167:14,-1:3,538:2,53,538:20,-1:6,538:6,-1:5,538:2,-1:17,539:4,104,5" + -"39:19,-1,539:33,-1,508:3,538,508:3,148,508:15,167:2,-1:2,167:2,508:6,167:5," + -"508:2,167:14,-1:3,538:7,54,538:15,-1:6,538:6,-1:5,538:2,-1:17,539:20,105,53" + -"9:3,-1,539:33,-1,508:3,538,508:4,149,508:14,167:2,-1:2,167:2,508:6,167:5,50" + -"8:2,167:14,-1:3,538:8,55,538:14,-1:6,538:6,-1:5,538:2,-1:17,539:11,106,539:" + -"12,-1,539:33,-1,508:3,63,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-" + -"1:3,538:5,59,538:17,-1:6,538:6,-1:5,538:2,-1:17,539:2,107,539:21,-1,539:33," + -"-1,508:3,250,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:11,6" + -"0,538:11,-1:6,538:6,-1:5,538:2,-1:17,539:7,108,539:16,-1,539:33,-1,508:3,53" + -"8,508,150,508:17,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:9,62,53" + -"8:13,-1:6,538:6,-1:5,538:2,-1:17,539:8,109,539:15,-1,539:33,-1,508:3,538,50" + -"8:5,151,508:13,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:3,63,538:" + -"19,-1:6,538:6,-1:5,538:2,-1:17,539:5,110,539:18,-1,539:33,-1,508:3,68,508:1" + -"9,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:5,64,538:17,-1:6,538:6" + -",-1:5,538:2,-1:17,539:11,111,539:12,-1,539:33,-1,508:3,538,508:13,152,508:5" + -",167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:9,66,538:13,-1:6,538:6," + -"-1:5,538:2,-1:17,539:9,113,539:14,-1,539:33,-1,508:3,538,508:4,153,508:14,1" + -"67:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:2,67,538:20,-1:6,538:6,-1" + -":5,538:2,-1:17,539:3,114,539:20,-1,539:33,-1,538:3,68,538:19,-1:6,538:6,-1:" + -"5,538:2,-1:17,539:5,115,539:18,-1,539:33,-1,538:17,69,538:5,-1:6,538:6,-1:5" + -",538:2,-1:17,539:9,116,539:14,-1,539:33,-1,538:8,70,538:14,-1:6,538:6,-1:5," + -"538:2,-1:17,539:2,117,539:21,-1,539:33,-1,538:8,71,538:14,-1:6,538:6,-1:5,5" + -"38:2,-1:17,539:3,118,539:20,-1,539:33,-1,538:3,72,538:19,-1:6,538:6,-1:5,53" + -"8:2,-1:17,539:17,119,539:6,-1,539:33,-1,538:8,73,538:14,-1:6,538:6,-1:5,538" + -":2,-1:17,539:8,120,539:15,-1,539:33,-1,538:8,74,538:14,-1:6,538:6,-1:5,538:" + -"2,-1:17,539:8,121,539:15,-1,539:33,-1,538:14,75,538:8,-1:6,538:6,-1:5,538:2" + -",-1:17,539:3,122,539:20,-1,539:33,-1,538:15,76,538:7,-1:6,538:6,-1:5,538:2," + -"-1:17,539:8,123,539:15,-1,539:33,-1,538:2,77,538:20,-1:6,538:6,-1:5,538:2,-" + -"1:17,539:8,124,539:15,-1,539:33,-1,539:14,125,539:9,-1,539:33,-1,539:15,126" + -",539:8,-1,539:33,-1,539:2,127,539:21,-1,539:33,-1,538:4,157,538:6,277,538:1" + -"1,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:4,186,508:4,482,508:9,167:2,-1:" + -"2,167:2,508:6,167:5,508:2,167:14,-1:3,539:4,185,539:6,279,539:12,-1,539:33," + -"-1,508:3,262,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,538:8,16" + -"3,538:4,289,538:9,-1:6,538:6,-1:5,538:2,-1:17,510,508:2,538,508:2,193,508:5" + -",376,508:10,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:8,189,539:4," + -"516,539:10,-1,539:33,-1,369,538:5,174,538:5,372,538:10,-1:6,538:6,-1:5,538:" + -"2,-1:17,508:2,196,304,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3" + -",540,539:5,195,539:5,371,539:11,-1,539:33,-1,538:4,301,538:7,184,538:10,-1:" + -"6,538:6,-1:5,538:2,-1:17,199,508:2,538,508:19,167:2,-1:2,167:2,508:6,167:5," + -"508:2,167:14,-1:3,539:4,300,539:7,198,539:11,-1,539:33,-1,538:2,188,304,538" + -":19,-1:6,538:6,-1:5,538:2,-1:17,508:2,202,538,508:19,167:2,-1:2,167:2,508:6" + -",167:5,508:2,167:14,-1:3,539:2,201,303,539:20,-1,539:33,-1,191,538:22,-1:6," + -"538:6,-1:5,538:2,-1:17,508:3,538,508:8,205,508:10,167:2,-1:2,167:2,508:6,16" + -"7:5,508:2,167:14,-1:3,204,539:23,-1,539:33,-1,538:2,194,538:20,-1:6,538:6,-" + -"1:5,538:2,-1:17,208,508:2,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167" + -":14,-1:3,539:2,207,539:21,-1,539:33,-1,538:7,197,538:15,-1:6,538:6,-1:5,538" + -":2,-1:17,508:3,538,508:4,211,508:14,167:2,-1:2,167:2,508:6,167:5,508:2,167:" + -"14,-1:3,539:12,210,539:11,-1,539:33,-1,538:12,200,538:10,-1:6,538:6,-1:5,53" + -"8:2,-1:17,508:3,322,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,2" + -"13,539:23,-1,539:33,-1,203,538:22,-1:6,538:6,-1:5,538:2,-1:17,508:2,214,538" + -",508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:8,216,539:15,-1," + -"539:33,-1,538:8,206,538:14,-1:6,538:6,-1:5,538:2,-1:17,217,508:2,538,508:19" + -",167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:6,219,539:17,-1,539:33," + -"-1,538:6,209,538:16,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:3,220,508:15," + -"167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:5,222,539:18,-1,539:33,-" + -"1,538:5,212,538:17,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,223,508:18,167:2,-" + -"1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:2,225,539:21,-1,539:33,-1,538:2" + -",215,538:20,-1:6,538:6,-1:5,538:2,-1:17,226,508:2,538,508:19,167:2,-1:2,167" + -":2,508:6,167:5,508:2,167:14,-1:3,228,539:23,-1,539:33,-1,538:2,179,538:20,-" + -"1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:8,229,508:10,167:2,-1:2,167:2,508:" + -"6,167:5,508:2,167:14,-1:3,539:7,231,539:16,-1,539:33,-1,218,538:22,-1:6,538" + -":6,-1:5,538:2,-1:17,232,508:2,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2" + -",167:14,-1:3,539:12,234,539:11,-1,539:33,-1,538:7,221,538:15,-1:6,538:6,-1:" + -"5,538:2,-1:17,508:3,538,508:3,235,508:15,167:2,-1:2,167:2,508:6,167:5,508:2" + -",167:14,-1:3,539:5,237,539:18,-1,539:33,-1,538:12,224,538:10,-1:6,538:6,-1:" + -"5,538:2,-1:17,508:3,538,508:17,241,508,167:2,-1:2,167:2,508:6,167:5,508:2,1" + -"67:14,-1:3,539:4,240,539:19,-1,539:33,-1,538:5,227,538:17,-1:6,538:6,-1:5,5" + -"38:2,-1:17,508:3,538,508:5,270,508:13,167:2,-1:2,167:2,508:6,167:5,508:2,16" + -"7:14,-1:3,539:4,243,539:19,-1,539:33,-1,538:4,230,538:18,-1:6,538:6,-1:5,53" + -"8:2,-1:17,539:12,245,539:11,-1,539:33,-1,538:4,233,538:18,-1:6,538:6,-1:5,5" + -"38:2,-1:17,247,539:23,-1,539:33,-1,538:12,236,538:10,-1:6,538:6,-1:5,538:2," + -"-1:17,539:14,249,539:9,-1,539:33,-1,239,538:22,-1:6,538:6,-1:5,538:2,-1:17," + -"539:7,251,539:16,-1,539:33,-1,538:14,242,538:8,-1:6,538:6,-1:5,538:2,-1:17," + -"539:21,255,539:2,-1,539:33,-1,538:7,244,538:15,-1:6,538:6,-1:5,538:2,-1:17," + -"539:3,257,539:20,-1,539:33,-1,538:21,248,538,-1:6,538:6,-1:5,538:2,-1:17,53" + -"9:5,259,539:18,-1,539:33,-1,538:3,250,538:19,-1:6,538:6,-1:5,538:2,-1:17,53" + -"9:13,261,539:10,-1,539:33,-1,538:5,252,538:17,-1:6,538:6,-1:5,538:2,-1:17,5" + -"39:5,263,539:18,-1,539:33,-1,538:13,254,538:9,-1:6,538:6,-1:5,538:2,-1:17,5" + -"39:8,264,539:15,-1,539:33,-1,538:5,256,538:17,-1:6,538:6,-1:5,538:2,-1:17,5" + -"39:6,265,539:17,-1,539:33,-1,538:8,258,538:14,-1:6,538:6,-1:5,538:2,-1:17,5" + -"39:3,266,539:20,-1,539:33,-1,538:6,260,538:16,-1:6,538:6,-1:5,538:2,-1:17,5" + -"38:3,262,538:19,-1:6,538:6,-1:5,538:2,-1:17,280,538:5,512,366,538:3,283,538" + -":11,-1:6,538:6,-1:5,538:2,-1:17,275,508:2,538,508:2,479,373,508:3,278,508:1" + -"1,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,282,539:5,513,368,539:3,28" + -"5,539:12,-1,539:33,-1,538:7,286,538:8,478,538:6,-1:6,538:6,-1:5,538:2,-1:17" + -",508:3,538,508:3,281,508:8,430,508:6,167:2,-1:2,167:2,508:6,167:5,508:2,167" + -":14,-1:3,539:7,288,539:8,480,539:7,-1,539:33,-1,538:6,292,538:16,-1:6,538:6" + -",-1:5,538:2,-1:17,508:3,538,508:2,284,508:16,167:2,-1:2,167:2,508:6,167:5,5" + -"08:2,167:14,-1:3,539:6,291,539:17,-1,539:33,-1,538:8,295,538:14,-1:6,538:6," + -"-1:5,538:2,-1:17,508:3,538,508:4,287,508:14,167:2,-1:2,167:2,508:6,167:5,50" + -"8:2,167:14,-1:3,539:8,294,539:15,-1,539:33,-1,538:19,298,538:3,-1:6,538:6,-" + -"1:5,538:2,-1:17,508:3,538,508:15,290,508:3,167:2,-1:2,167:2,508:6,167:5,508" + -":2,167:14,-1:3,539:19,297,539:4,-1,539:33,-1,307,538:22,-1:6,538:6,-1:5,538" + -":2,-1:17,508:3,538,508:8,293,508:10,167:2,-1:2,167:2,508:6,167:5,508:2,167:" + -"14,-1:3,306,539:23,-1,539:33,-1,538:7,310,538:15,-1:6,538:6,-1:5,538:2,-1:1" + -"7,508:3,384,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:9,309" + -",539:14,-1,539:33,-1,538:9,313,538:13,-1:6,538:6,-1:5,538:2,-1:17,296,508:2" + -",538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:12,312,539:1" + -"1,-1,539:33,-1,538:12,316,538:10,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:" + -"5,299,508:13,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:3,315,539:2" + -"0,-1,539:33,-1,538:3,319,538:19,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:8" + -",302,508:10,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:3,318,539:20" + -",-1,539:33,-1,538:3,322,538:19,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:2," + -"305,500,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:13,321,53" + -"9:10,-1,539:33,-1,538:13,325,538:9,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,50" + -"8:18,308,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:6,324,535,539:1" + -"6,-1,539:33,-1,538:6,327,521,538:15,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,5" + -"08:3,311,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:7,326,53" + -"9:16,-1,539:33,-1,538:7,329,538:15,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,50" + -"8:4,314,508:14,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:8,328,539" + -":15,-1,539:33,-1,538:8,331,538:14,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508" + -":9,317,508:9,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:9,330,539:1" + -"4,-1,539:33,-1,538:9,333,538:13,-1:6,538:6,-1:5,538:2,-1:17,320,508:2,538,5" + -"08:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:13,332,539:10,-1,5" + -"39:33,-1,538:13,335,538:9,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:4,323,5" + -"08:14,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,334,539:23,-1,539:33,-" + -"1,337,538:22,-1:6,538:6,-1:5,538:2,-1:17,336,539:23,-1,539:33,-1,339,538:22" + -",-1:6,538:6,-1:5,538:2,-1:17,338,539:23,-1,539:33,-1,341,538:22,-1:6,538:6," + -"-1:5,538:2,-1:17,539:9,340,539:14,-1,539:33,-1,538:9,343,538:13,-1:6,538:6," + -"-1:5,538:2,-1:17,342,539:23,-1,539:33,-1,345,538:22,-1:6,538:6,-1:5,538:2,-" + -"1:17,539:3,344,539:20,-1,539:33,-1,538:3,347,538:19,-1:6,538:6,-1:5,538:2,-" + -"1:17,539:8,346,539:15,-1,539:33,-1,538:8,349,538:14,-1:6,538:6,-1:5,538:2,-" + -"1:17,539:9,348,539:14,-1,539:33,-1,538:9,350,538:13,-1:6,538:6,-1:5,538:2,-" + -"1:17,538:4,360,538,475,538:16,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,361,508" + -",476,508:16,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:4,362,539,47" + -"7,539:17,-1,539:33,-1,538:3,426,538:9,363,538:6,429,538:2,-1:6,538:6,-1:5,5" + -"38:2,-1:17,508:3,426,508:9,364,508:6,367,508:2,167:2,-1:2,167:2,508:6,167:5" + -",508:2,167:14,-1:3,539:3,428,539:9,365,539:6,431,539:3,-1,539:33,-1,538:11," + -"375,538:11,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:4,370,508:14,167:2,-1:" + -"2,167:2,508:6,167:5,508:2,167:14,-1:3,539:11,374,539:12,-1,539:33,-1,378,53" + -"8:22,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:7,379,508:11,167:2,-1:2,167:" + -"2,508:6,167:5,508:2,167:14,-1:3,377,539:23,-1,539:33,-1,538:12,381,538:10,-" + -"1:6,538:6,-1:5,538:2,-1:17,508:3,444,508:19,167:2,-1:2,167:2,508:6,167:5,50" + -"8:2,167:14,-1:3,539:12,380,539:11,-1,539:33,-1,538:3,384,538:19,-1:6,538:6," + -"-1:5,538:2,-1:17,508:3,538,508:15,382,508:3,167:2,-1:2,167:2,508:6,167:5,50" + -"8:2,167:14,-1:3,539:3,383,539:20,-1,539:33,-1,538:19,387,538:3,-1:6,538:6,-" + -"1:5,538:2,-1:17,508:3,538,508:2,497,508:5,385,508:10,167:2,-1:2,167:2,508:6" + -",167:5,508:2,167:14,-1:3,539:19,386,539:4,-1,539:33,-1,538,390,538:21,-1:6," + -"538:6,-1:5,538:2,-1:17,508,388,508,538,508:19,167:2,-1:2,167:2,508:6,167:5," + -"508:2,167:14,-1:3,539,389,539:22,-1,539:33,-1,538:7,393,538:15,-1:6,538:6,-" + -"1:5,538:2,-1:17,508:3,538,508:3,391,508:15,167:2,-1:2,167:2,508:6,167:5,508" + -":2,167:14,-1:3,539:7,392,539:16,-1,539:33,-1,538:8,396,538:14,-1:6,538:6,-1" + -":5,538:2,-1:17,394,508:2,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:" + -"14,-1:3,539:8,395,539:15,-1,539:33,-1,399,538:22,-1:6,538:6,-1:5,538:2,-1:1" + -"7,508:3,538,508:6,397,508:12,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3" + -",398,539:23,-1,539:33,-1,538:10,402,538:12,-1:6,538:6,-1:5,538:2,-1:17,508:" + -"3,538,508:14,400,508:4,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:1" + -"0,401,539:13,-1,539:33,-1,538:22,404,-1:6,538:6,-1:5,538:2,-1:17,539:22,403" + -",539,-1,539:33,-1,538:4,406,538:18,-1:6,538:6,-1:5,538:2,-1:17,539:4,405,53" + -"9:19,-1,539:33,-1,538:12,408,538:10,-1:6,538:6,-1:5,538:2,-1:17,539:12,407," + -"539:11,-1,539:33,-1,538:15,410,538:7,-1:6,538:6,-1:5,538:2,-1:17,539:15,409" + -",539:8,-1,539:33,-1,538:5,412,538:17,-1:6,538:6,-1:5,538:2,-1:17,539:5,411," + -"539:18,-1,539:33,-1,538:5,414,538:17,-1:6,538:6,-1:5,538:2,-1:17,539:5,413," + -"539:18,-1,539:33,-1,538:8,416,538:14,-1:6,538:6,-1:5,538:2,-1:17,539:8,415," + -"539:15,-1,539:33,-1,538:8,432,538:14,-1:6,538:6,-1:5,538:2,-1:17,488,508:2," + -"538,436,508:8,439,508:9,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:" + -"8,434,539:15,-1,539:33,-1,508:3,455,508:19,167:2,-1:2,167:2,508:6,167:5,508" + -":2,167:14,-1:3,484,538:3,487,538:8,438,538:9,-1:6,538:6,-1:5,538:2,-1:17,50" + -"8:2,470,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,486,539:3" + -",489,539:8,440,539:10,-1,539:33,-1,508:3,457,508:19,167:2,-1:2,167:2,508:6," + -"167:5,508:2,167:14,-1:3,538:6,441,538:16,-1:6,538:6,-1:5,538:2,-1:17,508:3," + -"538,508:2,442,508:16,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:6,4" + -"43,539:17,-1,539:33,-1,538:3,444,538:19,-1:6,538:6,-1:5,538:2,-1:17,508:3,5" + -"38,508:5,474,508:13,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:3,44" + -"6,539:20,-1,539:33,-1,538:15,447,538:7,-1:6,538:6,-1:5,538:2,-1:17,508:3,53" + -"8,508:3,514,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:15,44" + -"9,539:8,-1,539:33,-1,538:5,450,538:17,-1:6,538:6,-1:5,538:2,-1:17,508:3,538" + -",508:11,445,508:7,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:5,452," + -"539:18,-1,539:33,-1,538:6,517,538:5,453,538:10,-1:6,538:6,-1:5,538:2,-1:17," + -"508:3,538,508,448,508:17,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539" + -":6,530,539:5,454,539:11,-1,539:33,-1,538:3,455,538:19,-1:6,538:6,-1:5,538:2" + -",-1:17,508:3,519,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:" + -"3,456,539:20,-1,539:33,-1,538:3,457,538:19,-1:6,538:6,-1:5,538:2,-1:17,508:" + -"2,503,538,508:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:3,458,5" + -"39:20,-1,539:33,-1,538:4,459,538:18,-1:6,538:6,-1:5,538:2,-1:17,508:3,499,5" + -"08:19,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:4,460,539:19,-1,53" + -"9:33,-1,538:8,461,538:14,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:4,451,50" + -"8:14,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:8,462,539:15,-1,539" + -":33,-1,538:9,463,538:13,-1:6,538:6,-1:5,538:2,-1:17,508:3,538,508:4,511,508" + -":14,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-1:3,539:9,464,539:14,-1,539:" + -"33,-1,538:18,465,538:4,-1:6,538:6,-1:5,538:2,-1:17,539:18,466,539:5,-1,539:" + -"33,-1,538:2,490,538:20,-1:6,538:6,-1:5,538:2,-1:17,539:2,492,539:21,-1,539:" + -"33,-1,508:3,538,508:3,494,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14," + -"-1:3,538:9,493,538:13,-1:6,538:6,-1:5,538:2,-1:17,539:9,495,539:14,-1,539:3" + -"3,-1,508:3,538,508:3,511,508:15,167:2,-1:2,167:2,508:6,167:5,508:2,167:14,-" + -"1:3,538:3,519,538:19,-1:6,538:6,-1:5,538:2,-1:17,539:7,542,539:16,-1,539:33" + -",-1,538:3,499,538:19,-1:6,538:6,-1:5,538:2,-1:17,502,538:22,-1:6,538:6,-1:5" + -",538:2,-1:17,539:24,-1,539:31,518,539,-1,538:8,505,538:14,-1:6,538:6,-1:5,5" + -"38:2,-1:17,539:15,518,539:8,-1,539:4,522:2,518,539:2,522,523,539:22,-1,539:" + -"15,518,539:8,-1,539:4,523:2,539:3,523,539:23,-1,533:2,539:3,533,539:2,533,5" + -"39:5,533:2,539:8,-1,539:4,533:2,539:2,533:2,539:23,-1,539:24,-1,539:5,525,5" + -"18,539:2,525,539:23,-1,539:24,-1,539:11,518,539:21,-1,539:8,518,539:15,-1,5" + -"39:33,-1,539:3,534,539:20,-1,539:33,-1,539:2,527,539:21,-1,539:33,-1,539:3," + -"501,539:20,-1,539:33,-1,539:24,-1,539:22,536,539:10,-1,539:24,-1,539:23,537" + -",539:9,-1,533:2,539:3,533,539:2,533,539:5,533:2,539:8,-1,539:4,533:2,518,53" + -"9,533:2,539:23,-1,504,539:23,-1,539:33,-1,539:8,506,539:15,-1,539:33,-1,539" + -":24,-1,539:21,518,539:11,-1,539:24,-1,539:21,518,539,536,539:9,-1,539:7,529" + -",539:16,-1,539:33,-1,539:7,518,539:16,-1,539:33,-1,539:16,524,539:7,-1,539:" + -"5,525,518,524,539,525,539:23,-1,539:24,-1,539:21,518,539:3,518,539:7,-1,539" + -":24,-1,539:21,518,539:4,518,539:6,-1,539:24,-1,539:21,518,539:5,518,539:5,-" + -"1,539:24,-1,539:21,518,539,518,539:4,518,539:4"); - - public boolean yylex () - throws java.io.IOException { - int yy_lookahead; - int yy_anchor = YY_NO_ANCHOR; - int yy_state = yy_state_dtrans[yy_lexical_state]; - int yy_next_state = YY_NO_STATE; - int yy_last_accept_state = YY_NO_STATE; - boolean yy_initial = true; - int yy_this_accept; - - yy_mark_start(); - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - while (true) { - if (yy_initial && yy_at_bol) yy_lookahead = YY_BOL; - else yy_lookahead = yy_advance(); - yy_next_state = YY_F; - yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]]; - if (YY_EOF == yy_lookahead && true == yy_initial) { - - return false; - } - if (YY_F != yy_next_state) { - yy_state = yy_next_state; - yy_initial = false; - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - } - else { - if (YY_NO_STATE == yy_last_accept_state) { - throw (new Error("Lexical Error: Unmatched Input.")); - } - else { - yy_anchor = yy_acpt[yy_last_accept_state]; - if (0 != (YY_END & yy_anchor)) { - yy_move_end(); - } - yy_to_mark(); - switch (yy_last_accept_state) { - case 1: - - case -2: - break; - case 2: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -3: - break; - case 3: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -4: - break; - case 4: - { /* System.out.print(yytext()); */ } - case -5: - break; - case 5: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -6: - break; - case 6: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -7: - break; - case 7: - { - this.token = new Token(JavaParser.BRACE,yytext().charAt(0), yyline, yychar);return true; -} - case -8: - break; - case 8: - { - this.token = new Token(JavaParser.RELOP,yytext().charAt(0), yyline, yychar);return true; -} - case -9: - break; - case 9: - {this.token = new Token(JavaParser.IF, yytext(), yyline, yychar);return true;} - case -10: - break; - case 10: - {this.token = new Token(JavaParser.DO, yytext(), yyline, yychar);return true;} - case -11: - break; - case 11: - {yybegin(commentsingleline);} - case -12: - break; - case 12: - {yybegin(commentblock);} - case -13: - break; - case 13: - {this.token = new Token(JavaParser.DIVIDEEQUAL, yytext(), yyline, yychar);return true;} - case -14: - break; - case 14: - {this.token = new Token(JavaParser.TIMESEQUAL, yytext(), yyline, yychar);return true;} - case -15: - break; - case 15: - { - this.token = new Token(JavaParser.FLOATLITERAL, yytext(), yyline, yychar);return true; -} - case -16: - break; - case 16: - { - this.token = new Token(JavaParser.DOUBLELITERAL, yytext(), yyline, yychar);return true; -} - case -17: - break; - case 17: - { - this.token = new Token(JavaParser.STRINGLITERAL, yytext(), yyline, yychar);return true; -} - case -18: - break; - case 18: - { this.token = new Token(JavaParser.EQUAL, yytext(), yyline, yychar);return true;} - case -19: - break; - case 19: - { this.token = new Token(JavaParser.LESSEQUAL, yytext(), yyline, yychar);return true;} - case -20: - break; - case 20: - {this.token = new Token(JavaParser.GREATEREQUAL, yytext(), yyline, yychar);return true;} - case -21: - break; - case 21: - {this.token = new Token(JavaParser.NOTEQUAL, yytext(), yyline, yychar);return true;} - case -22: - break; - case 22: - {this.token = new Token(JavaParser.OREQUAL, yytext(), yyline, yychar);return true;} - case -23: - break; - case 23: - {this.token = new Token(JavaParser.LOGICALOR, yytext(), yyline, yychar);return true;} - case -24: - break; - case 24: - {this.token = new Token(JavaParser.ANDEQUAL, yytext(), yyline, yychar);return true;} - case -25: - break; - case 25: - {this.token = new Token(JavaParser.LOGICALAND, yytext(), yyline, yychar);return true;} - case -26: - break; - case 26: - {this.token = new Token(JavaParser.PLUSEQUAL, yytext(), yyline, yychar);return true;} - case -27: - break; - case 27: - {this.token = new Token(JavaParser.INCREMENT, yytext(), yyline, yychar);return true;} - case -28: - break; - case 28: - {this.token = new Token(JavaParser.MINUSEQUAL, yytext(), yyline, yychar);return true;} - case -29: - break; - case 29: - {this.token = new Token(JavaParser.LAMBDAASSIGNMENT, yytext(), yyline, yychar);return true;} - case -30: - break; - case 30: - {this.token = new Token(JavaParser.DECREMENT, yytext(), yyline, yychar);return true;} - case -31: - break; - case 31: - {this.token = new Token(JavaParser.MODULOEQUAL, yytext(), yyline, yychar);return true;} - case -32: - break; - case 32: - {this.token = new Token(JavaParser.XOREQUAL, yytext(), yyline, yychar);return true;} - case -33: - break; - case 33: - {this.token = new Token(JavaParser.TRY, yytext(), yyline, yychar);return true;} - case -34: - break; - case 34: - {this.token = new Token(JavaParser.NEW, yytext(), yyline, yychar);return true;} - case -35: - break; - case 35: - {this.token = new Token(JavaParser.INT, yytext(), yyline, yychar);return true;} - case -36: - break; - case 36: - {this.token = new Token(JavaParser.FOR, yytext(), yyline, yychar);return true;} - case -37: - break; - case 37: - {de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("Kommentar: "+yytext(), Section.PARSER);} - case -38: - break; - case 38: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -39: - break; - case 39: - { - this.token = new Token(JavaParser.CHARLITERAL, yytext(), yyline, yychar);return true; -} - case -40: - break; - case 40: - { - this.token = new Token(JavaParser.BOOLLITERAL, yytext(), yyline, yychar);return true; -} - case -41: - break; - case 41: - {this.token = new Token(JavaParser.THIS, yytext(), yyline,yychar);return true;} - case -42: - break; - case 42: - {this.token = new Token(JavaParser.CASE, yytext(), yyline, yychar);return true;} - case -43: - break; - case 43: - {this.token = new Token(JavaParser.CHAR, yytext(), yyline, yychar);return true;} - case -44: - break; - case 44: - {this.token = new Token(JavaParser.ELSE, yytext(), yyline, yychar);return true;} - case -45: - break; - case 45: - { - this.token = new Token(JavaParser.JNULL, yytext(), yyline, yychar);return true; -} - case -46: - break; - case 46: - {this.token = new Token(JavaParser.VOID, yytext(), yyline, yychar);return true;} - case -47: - break; - case 47: - {this.token = new Token(JavaParser.SHIFTLEFT, yytext(), yyline, yychar);return true;} - case -48: - break; - case 48: - {this.token = new Token(JavaParser.SHIFTRIGHT, yytext(), yyline, yychar);return true;} - case -49: - break; - case 49: - {this.token = new Token(JavaParser.BREAK, yytext(), yyline, yychar);return true;} - case -50: - break; - case 50: - {this.token = new Token(JavaParser.SUPER, yytext(), yyline, yychar);return true;} - case -51: - break; - case 51: - {this.token = new Token(JavaParser.THROW, yytext(), yyline, yychar);return true;} - case -52: - break; - case 52: - {this.token = new Token(JavaParser.CATCH, yytext(), yyline, yychar);return true;} - case -53: - break; - case 53: - {this.token = new Token(JavaParser.CLASS, yytext(), yyline, yychar);return true;} - case -54: - break; - case 54: - {this.token = new Token(JavaParser.FINAL, yytext(), yyline, yychar);return true;} - case -55: - break; - case 55: - {this.token = new Token(JavaParser.WHILE, yytext(), yyline, yychar);return true;} - case -56: - break; - case 56: - {this.token = new Token(JavaParser.SHIFTLEFTEQUAL, yytext(), yyline, yychar);return true;} - case -57: - break; - case 57: - {this.token = new Token(JavaParser.SIGNEDSHIFTRIGHTEQUAL, yytext(), yyline, yychar);return true;} - case -58: - break; - case 58: - {this.token = new Token(JavaParser.UNSIGNEDSHIFTRIGHT, yytext(), yyline, yychar);return true;} - case -59: - break; - case 59: - {this.token = new Token(JavaParser.STATIC, yytext(), yyline, yychar);return true;} - case -60: - break; - case 60: - {this.token = new Token(JavaParser.SWITCH, yytext(), yyline, yychar);return true;} - case -61: - break; - case 61: - {this.token = new Token(JavaParser.THROWS, yytext(), yyline, yychar);return true;} - case -62: - break; - case 62: - {this.token = new Token(JavaParser.RETURN, yytext(), yyline, yychar);return true;} - case -63: - break; - case 63: - {this.token = new Token(JavaParser.IMPORT, yytext(), yyline, yychar);return true;} - case -64: - break; - case 64: - {this.token = new Token(JavaParser.PUBLIC, yytext(), yyline, yychar);return true;} - case -65: - break; - case 65: - {this.token = new Token(JavaParser.UNSIGNEDSHIFTRIGHTEQUAL, yytext(), yyline, yychar);return true;} - case -66: - break; - case 66: - {this.token = new Token(JavaParser.BOOLEAN, yytext(), yyline, yychar);return true;} - case -67: - break; - case 67: - {this.token = new Token(JavaParser.EXTENDS, yytext(), yyline, yychar);return true;} - case -68: - break; - case 68: - {this.token = new Token(JavaParser.DEFAULT, yytext(), yyline, yychar);return true;} - case -69: - break; - case 69: - {this.token = new Token(JavaParser.FINALLY, yytext(), yyline, yychar);return true;} - case -70: - break; - case 70: - {this.token = new Token(JavaParser.PACKAGE, yytext(), yyline, yychar);return true;} - case -71: - break; - case 71: - {this.token = new Token(JavaParser.PRIVATE, yytext(), yyline, yychar);return true;} - case -72: - break; - case 72: - {this.token = new Token(JavaParser.ABSTRACT, yytext(), yyline, yychar);return true;} - case -73: - break; - case 73: - {this.token = new Token(JavaParser.CONTINUE, yytext(), yyline, yychar);return true;} - case -74: - break; - case 74: - {this.token = new Token(JavaParser.INTERFACE, yytext(), yyline, yychar);return true;} - case -75: - break; - case 75: - {this.token = new Token(JavaParser.PROTECTED, yytext(), yyline, yychar);return true;} - case -76: - break; - case 76: - {this.token = new Token(JavaParser.INSTANCEOF, yytext(), yyline, yychar);return true;} - case -77: - break; - case 77: - {this.token = new Token(JavaParser.IMPLEMENTS, yytext(), yyline, yychar);return true;} - case -78: - break; - case 78: - {} - case -79: - break; - case 79: - {} - case -80: - break; - case 80: - {yybegin(YYINITIAL);} - case -81: - break; - case 81: - {} - case -82: - break; - case 82: - {yybegin(YYINITIAL);} - case -83: - break; - case 84: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -84: - break; - case 85: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -85: - break; - case 86: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -86: - break; - case 87: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -87: - break; - case 88: - { - this.token = new Token(JavaParser.RELOP,yytext().charAt(0), yyline, yychar);return true; -} - case -88: - break; - case 89: - {this.token = new Token(JavaParser.IF, yytext(), yyline, yychar);return true;} - case -89: - break; - case 90: - {this.token = new Token(JavaParser.DO, yytext(), yyline, yychar);return true;} - case -90: - break; - case 91: - {yybegin(commentsingleline);} - case -91: - break; - case 92: - {yybegin(commentblock);} - case -92: - break; - case 93: - {this.token = new Token(JavaParser.TRY, yytext(), yyline, yychar);return true;} - case -93: - break; - case 94: - {this.token = new Token(JavaParser.NEW, yytext(), yyline, yychar);return true;} - case -94: - break; - case 95: - {this.token = new Token(JavaParser.INT, yytext(), yyline, yychar);return true;} - case -95: - break; - case 96: - {this.token = new Token(JavaParser.FOR, yytext(), yyline, yychar);return true;} - case -96: - break; - case 97: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -97: - break; - case 98: - {this.token = new Token(JavaParser.THIS, yytext(), yyline,yychar);return true;} - case -98: - break; - case 99: - {this.token = new Token(JavaParser.CASE, yytext(), yyline, yychar);return true;} - case -99: - break; - case 100: - {this.token = new Token(JavaParser.CHAR, yytext(), yyline, yychar);return true;} - case -100: - break; - case 101: - {this.token = new Token(JavaParser.ELSE, yytext(), yyline, yychar);return true;} - case -101: - break; - case 102: - {this.token = new Token(JavaParser.VOID, yytext(), yyline, yychar);return true;} - case -102: - break; - case 103: - {this.token = new Token(JavaParser.BREAK, yytext(), yyline, yychar);return true;} - case -103: - break; - case 104: - {this.token = new Token(JavaParser.SUPER, yytext(), yyline, yychar);return true;} - case -104: - break; - case 105: - {this.token = new Token(JavaParser.THROW, yytext(), yyline, yychar);return true;} - case -105: - break; - case 106: - {this.token = new Token(JavaParser.CATCH, yytext(), yyline, yychar);return true;} - case -106: - break; - case 107: - {this.token = new Token(JavaParser.CLASS, yytext(), yyline, yychar);return true;} - case -107: - break; - case 108: - {this.token = new Token(JavaParser.FINAL, yytext(), yyline, yychar);return true;} - case -108: - break; - case 109: - {this.token = new Token(JavaParser.WHILE, yytext(), yyline, yychar);return true;} - case -109: - break; - case 110: - {this.token = new Token(JavaParser.STATIC, yytext(), yyline, yychar);return true;} - case -110: - break; - case 111: - {this.token = new Token(JavaParser.SWITCH, yytext(), yyline, yychar);return true;} - case -111: - break; - case 112: - {this.token = new Token(JavaParser.THROWS, yytext(), yyline, yychar);return true;} - case -112: - break; - case 113: - {this.token = new Token(JavaParser.RETURN, yytext(), yyline, yychar);return true;} - case -113: - break; - case 114: - {this.token = new Token(JavaParser.IMPORT, yytext(), yyline, yychar);return true;} - case -114: - break; - case 115: - {this.token = new Token(JavaParser.PUBLIC, yytext(), yyline, yychar);return true;} - case -115: - break; - case 116: - {this.token = new Token(JavaParser.BOOLEAN, yytext(), yyline, yychar);return true;} - case -116: - break; - case 117: - {this.token = new Token(JavaParser.EXTENDS, yytext(), yyline, yychar);return true;} - case -117: - break; - case 118: - {this.token = new Token(JavaParser.DEFAULT, yytext(), yyline, yychar);return true;} - case -118: - break; - case 119: - {this.token = new Token(JavaParser.FINALLY, yytext(), yyline, yychar);return true;} - case -119: - break; - case 120: - {this.token = new Token(JavaParser.PACKAGE, yytext(), yyline, yychar);return true;} - case -120: - break; - case 121: - {this.token = new Token(JavaParser.PRIVATE, yytext(), yyline, yychar);return true;} - case -121: - break; - case 122: - {this.token = new Token(JavaParser.ABSTRACT, yytext(), yyline, yychar);return true;} - case -122: - break; - case 123: - {this.token = new Token(JavaParser.CONTINUE, yytext(), yyline, yychar);return true;} - case -123: - break; - case 124: - {this.token = new Token(JavaParser.INTERFACE, yytext(), yyline, yychar);return true;} - case -124: - break; - case 125: - {this.token = new Token(JavaParser.PROTECTED, yytext(), yyline, yychar);return true;} - case -125: - break; - case 126: - {this.token = new Token(JavaParser.INSTANCEOF, yytext(), yyline, yychar);return true;} - case -126: - break; - case 127: - {this.token = new Token(JavaParser.IMPLEMENTS, yytext(), yyline, yychar);return true;} - case -127: - break; - case 128: - {} - case -128: - break; - case 129: - {} - case -129: - break; - case 130: - {yybegin(YYINITIAL);} - case -130: - break; - case 132: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -131: - break; - case 133: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -132: - break; - case 134: - { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} - case -133: - break; - case 135: - { - this.token = new Token(JavaParser.RELOP,yytext().charAt(0), yyline, yychar);return true; -} - case -134: - break; - case 136: - {this.token = new Token(JavaParser.IF, yytext(), yyline, yychar);return true;} - case -135: - break; - case 137: - {this.token = new Token(JavaParser.DO, yytext(), yyline, yychar);return true;} - case -136: - break; - case 138: - {yybegin(commentsingleline);} - case -137: - break; - case 139: - {this.token = new Token(JavaParser.NEW, yytext(), yyline, yychar);return true;} - case -138: - break; - case 140: - {this.token = new Token(JavaParser.FOR, yytext(), yyline, yychar);return true;} - case -139: - break; - case 141: - {this.token = new Token(JavaParser.CASE, yytext(), yyline, yychar);return true;} - case -140: - break; - case 142: - {this.token = new Token(JavaParser.CHAR, yytext(), yyline, yychar);return true;} - case -141: - break; - case 143: - {this.token = new Token(JavaParser.ELSE, yytext(), yyline, yychar);return true;} - case -142: - break; - case 144: - {this.token = new Token(JavaParser.VOID, yytext(), yyline, yychar);return true;} - case -143: - break; - case 145: - {this.token = new Token(JavaParser.BREAK, yytext(), yyline, yychar);return true;} - case -144: - break; - case 146: - {this.token = new Token(JavaParser.SUPER, yytext(), yyline, yychar);return true;} - case -145: - break; - case 147: - {this.token = new Token(JavaParser.CLASS, yytext(), yyline, yychar);return true;} - case -146: - break; - case 148: - {this.token = new Token(JavaParser.FINAL, yytext(), yyline, yychar);return true;} - case -147: - break; - case 149: - {this.token = new Token(JavaParser.WHILE, yytext(), yyline, yychar);return true;} - case -148: - break; - case 150: - {this.token = new Token(JavaParser.PUBLIC, yytext(), yyline, yychar);return true;} - case -149: - break; - case 151: - {this.token = new Token(JavaParser.BOOLEAN, yytext(), yyline, yychar);return true;} - case -150: - break; - case 152: - {this.token = new Token(JavaParser.FINALLY, yytext(), yyline, yychar);return true;} - case -151: - break; - case 153: - {this.token = new Token(JavaParser.PACKAGE, yytext(), yyline, yychar);return true;} - case -152: - break; - case 154: - {} - case -153: - break; - case 155: - {} - case -154: - break; - case 157: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -155: - break; - case 158: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -156: - break; - case 159: - { - this.token = new Token(JavaParser.RELOP,yytext().charAt(0), yyline, yychar);return true; -} - case -157: - break; - case 160: - {} - case -158: - break; - case 161: - {} - case -159: - break; - case 163: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -160: - break; - case 164: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -161: - break; - case 165: - { - this.token = new Token(JavaParser.RELOP,yytext().charAt(0), yyline, yychar);return true; -} - case -162: - break; - case 166: - {} - case -163: - break; - case 167: - {} - case -164: - break; - case 169: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -165: - break; - case 170: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -166: - break; - case 171: - {} - case -167: - break; - case 172: - {} - case -168: - break; - case 174: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -169: - break; - case 175: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -170: - break; - case 176: - {} - case -171: - break; - case 177: - {} - case -172: - break; - case 179: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -173: - break; - case 180: - { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} - case -174: - break; - case 181: - {} - case -175: - break; - case 182: - {} - case -176: - break; - case 184: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -177: - break; - case 185: - {} - case -178: - break; - case 186: - {} - case -179: - break; - case 188: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -180: - break; - case 189: - {} - case -181: - break; - case 190: - {} - case -182: - break; - case 191: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -183: - break; - case 192: - {} - case -184: - break; - case 193: - {} - case -185: - break; - case 194: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -186: - break; - case 195: - {} - case -187: - break; - case 196: - {} - case -188: - break; - case 197: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -189: - break; - case 198: - {} - case -190: - break; - case 199: - {} - case -191: - break; - case 200: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -192: - break; - case 201: - {} - case -193: - break; - case 202: - {} - case -194: - break; - case 203: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -195: - break; - case 204: - {} - case -196: - break; - case 205: - {} - case -197: - break; - case 206: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -198: - break; - case 207: - {} - case -199: - break; - case 208: - {} - case -200: - break; - case 209: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -201: - break; - case 210: - {} - case -202: - break; - case 211: - {} - case -203: - break; - case 212: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -204: - break; - case 213: - {} - case -205: - break; - case 214: - {} - case -206: - break; - case 215: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -207: - break; - case 216: - {} - case -208: - break; - case 217: - {} - case -209: - break; - case 218: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -210: - break; - case 219: - {} - case -211: - break; - case 220: - {} - case -212: - break; - case 221: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -213: - break; - case 222: - {} - case -214: - break; - case 223: - {} - case -215: - break; - case 224: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -216: - break; - case 225: - {} - case -217: - break; - case 226: - {} - case -218: - break; - case 227: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -219: - break; - case 228: - {} - case -220: - break; - case 229: - {} - case -221: - break; - case 230: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -222: - break; - case 231: - {} - case -223: - break; - case 232: - {} - case -224: - break; - case 233: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -225: - break; - case 234: - {} - case -226: - break; - case 235: - {} - case -227: - break; - case 236: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -228: - break; - case 237: - {} - case -229: - break; - case 238: - {} - case -230: - break; - case 239: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -231: - break; - case 240: - {} - case -232: - break; - case 241: - {} - case -233: - break; - case 242: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -234: - break; - case 243: - {} - case -235: - break; - case 244: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -236: - break; - case 245: - {} - case -237: - break; - case 246: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -238: - break; - case 247: - {} - case -239: - break; - case 248: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -240: - break; - case 249: - {} - case -241: - break; - case 250: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -242: - break; - case 251: - {} - case -243: - break; - case 252: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -244: - break; - case 253: - {} - case -245: - break; - case 254: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -246: - break; - case 255: - {} - case -247: - break; - case 256: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -248: - break; - case 257: - {} - case -249: - break; - case 258: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -250: - break; - case 259: - {} - case -251: - break; - case 260: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -252: - break; - case 261: - {} - case -253: - break; - case 262: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -254: - break; - case 263: - {} - case -255: - break; - case 264: - {} - case -256: - break; - case 265: - {} - case -257: - break; - case 266: - {} - case -258: - break; - case 267: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -259: - break; - case 268: - {} - case -260: - break; - case 269: - {} - case -261: - break; - case 270: - {} - case -262: - break; - case 271: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -263: - break; - case 272: - {} - case -264: - break; - case 273: - {} - case -265: - break; - case 274: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -266: - break; - case 275: - {} - case -267: - break; - case 276: - {} - case -268: - break; - case 277: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -269: - break; - case 278: - {} - case -270: - break; - case 279: - {} - case -271: - break; - case 280: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -272: - break; - case 281: - {} - case -273: - break; - case 282: - {} - case -274: - break; - case 283: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -275: - break; - case 284: - {} - case -276: - break; - case 285: - {} - case -277: - break; - case 286: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -278: - break; - case 287: - {} - case -279: - break; - case 288: - {} - case -280: - break; - case 289: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -281: - break; - case 290: - {} - case -282: - break; - case 291: - {} - case -283: - break; - case 292: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -284: - break; - case 293: - {} - case -285: - break; - case 294: - {} - case -286: - break; - case 295: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -287: - break; - case 296: - {} - case -288: - break; - case 297: - {} - case -289: - break; - case 298: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -290: - break; - case 299: - {} - case -291: - break; - case 300: - {} - case -292: - break; - case 301: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -293: - break; - case 302: - {} - case -294: - break; - case 303: - {} - case -295: - break; - case 304: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -296: - break; - case 305: - {} - case -297: - break; - case 306: - {} - case -298: - break; - case 307: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -299: - break; - case 308: - {} - case -300: - break; - case 309: - {} - case -301: - break; - case 310: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -302: - break; - case 311: - {} - case -303: - break; - case 312: - {} - case -304: - break; - case 313: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -305: - break; - case 314: - {} - case -306: - break; - case 315: - {} - case -307: - break; - case 316: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -308: - break; - case 317: - {} - case -309: - break; - case 318: - {} - case -310: - break; - case 319: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -311: - break; - case 320: - {} - case -312: - break; - case 321: - {} - case -313: - break; - case 322: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -314: - break; - case 323: - {} - case -315: - break; - case 324: - {} - case -316: - break; - case 325: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -317: - break; - case 326: - {} - case -318: - break; - case 327: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -319: - break; - case 328: - {} - case -320: - break; - case 329: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -321: - break; - case 330: - {} - case -322: - break; - case 331: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -323: - break; - case 332: - {} - case -324: - break; - case 333: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -325: - break; - case 334: - {} - case -326: - break; - case 335: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -327: - break; - case 336: - {} - case -328: - break; - case 337: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -329: - break; - case 338: - {} - case -330: - break; - case 339: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -331: - break; - case 340: - {} - case -332: - break; - case 341: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -333: - break; - case 342: - {} - case -334: - break; - case 343: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -335: - break; - case 344: - {} - case -336: - break; - case 345: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -337: - break; - case 346: - {} - case -338: - break; - case 347: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -339: - break; - case 348: - {} - case -340: - break; - case 349: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -341: - break; - case 350: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -342: - break; - case 351: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -343: - break; - case 352: - {} - case -344: - break; - case 353: - {} - case -345: - break; - case 354: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -346: - break; - case 355: - {} - case -347: - break; - case 356: - {} - case -348: - break; - case 357: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -349: - break; - case 358: - {} - case -350: - break; - case 359: - {} - case -351: - break; - case 360: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -352: - break; - case 361: - {} - case -353: - break; - case 362: - {} - case -354: - break; - case 363: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -355: - break; - case 364: - {} - case -356: - break; - case 365: - {} - case -357: - break; - case 366: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -358: - break; - case 367: - {} - case -359: - break; - case 368: - {} - case -360: - break; - case 369: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -361: - break; - case 370: - {} - case -362: - break; - case 371: - {} - case -363: - break; - case 372: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -364: - break; - case 373: - {} - case -365: - break; - case 374: - {} - case -366: - break; - case 375: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -367: - break; - case 376: - {} - case -368: - break; - case 377: - {} - case -369: - break; - case 378: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -370: - break; - case 379: - {} - case -371: - break; - case 380: - {} - case -372: - break; - case 381: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -373: - break; - case 382: - {} - case -374: - break; - case 383: - {} - case -375: - break; - case 384: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -376: - break; - case 385: - {} - case -377: - break; - case 386: - {} - case -378: - break; - case 387: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -379: - break; - case 388: - {} - case -380: - break; - case 389: - {} - case -381: - break; - case 390: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -382: - break; - case 391: - {} - case -383: - break; - case 392: - {} - case -384: - break; - case 393: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -385: - break; - case 394: - {} - case -386: - break; - case 395: - {} - case -387: - break; - case 396: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -388: - break; - case 397: - {} - case -389: - break; - case 398: - {} - case -390: - break; - case 399: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -391: - break; - case 400: - {} - case -392: - break; - case 401: - {} - case -393: - break; - case 402: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -394: - break; - case 403: - {} - case -395: - break; - case 404: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -396: - break; - case 405: - {} - case -397: - break; - case 406: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -398: - break; - case 407: - {} - case -399: - break; - case 408: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -400: - break; - case 409: - {} - case -401: - break; - case 410: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -402: - break; - case 411: - {} - case -403: - break; - case 412: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -404: - break; - case 413: - {} - case -405: - break; - case 414: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -406: - break; - case 415: - {} - case -407: - break; - case 416: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -408: - break; - case 417: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -409: - break; - case 418: - {} - case -410: - break; - case 419: - {} - case -411: - break; - case 420: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -412: - break; - case 421: - {} - case -413: - break; - case 422: - {} - case -414: - break; - case 423: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -415: - break; - case 424: - {} - case -416: - break; - case 425: - {} - case -417: - break; - case 426: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -418: - break; - case 427: - {} - case -419: - break; - case 428: - {} - case -420: - break; - case 429: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -421: - break; - case 430: - {} - case -422: - break; - case 431: - {} - case -423: - break; - case 432: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -424: - break; - case 433: - {} - case -425: - break; - case 434: - {} - case -426: - break; - case 435: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -427: - break; - case 436: - {} - case -428: - break; - case 437: - {} - case -429: - break; - case 438: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -430: - break; - case 439: - {} - case -431: - break; - case 440: - {} - case -432: - break; - case 441: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -433: - break; - case 442: - {} - case -434: - break; - case 443: - {} - case -435: - break; - case 444: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -436: - break; - case 445: - {} - case -437: - break; - case 446: - {} - case -438: - break; - case 447: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -439: - break; - case 448: - {} - case -440: - break; - case 449: - {} - case -441: - break; - case 450: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -442: - break; - case 451: - {} - case -443: - break; - case 452: - {} - case -444: - break; - case 453: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -445: - break; - case 454: - {} - case -446: - break; - case 455: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -447: - break; - case 456: - {} - case -448: - break; - case 457: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -449: - break; - case 458: - {} - case -450: - break; - case 459: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -451: - break; - case 460: - {} - case -452: - break; - case 461: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -453: - break; - case 462: - {} - case -454: - break; - case 463: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -455: - break; - case 464: - {} - case -456: - break; - case 465: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -457: - break; - case 466: - {} - case -458: - break; - case 467: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -459: - break; - case 468: - {} - case -460: - break; - case 469: - {} - case -461: - break; - case 470: - {} - case -462: - break; - case 471: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -463: - break; - case 472: - {} - case -464: - break; - case 473: - {} - case -465: - break; - case 474: - {} - case -466: - break; - case 475: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -467: - break; - case 476: - {} - case -468: - break; - case 477: - {} - case -469: - break; - case 478: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -470: - break; - case 479: - {} - case -471: - break; - case 480: - {} - case -472: - break; - case 481: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -473: - break; - case 482: - {} - case -474: - break; - case 483: - {} - case -475: - break; - case 484: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -476: - break; - case 485: - {} - case -477: - break; - case 486: - {} - case -478: - break; - case 487: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -479: - break; - case 488: - {} - case -480: - break; - case 489: - {} - case -481: - break; - case 490: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -482: - break; - case 491: - {} - case -483: - break; - case 492: - {} - case -484: - break; - case 493: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -485: - break; - case 494: - {} - case -486: - break; - case 495: - {} - case -487: - break; - case 496: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -488: - break; - case 497: - {} - case -489: - break; - case 498: - {} - case -490: - break; - case 499: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -491: - break; - case 500: - {} - case -492: - break; - case 501: - {} - case -493: - break; - case 502: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -494: - break; - case 503: - {} - case -495: - break; - case 504: - {} - case -496: - break; - case 505: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -497: - break; - case 506: - {} - case -498: - break; - case 507: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -499: - break; - case 508: - {} - case -500: - break; - case 509: - {} - case -501: - break; - case 510: - {} - case -502: - break; - case 511: - {} - case -503: - break; - case 512: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -504: - break; - case 513: - {} - case -505: - break; - case 514: - {} - case -506: - break; - case 515: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -507: - break; - case 516: - {} - case -508: - break; - case 517: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -509: - break; - case 518: - {} - case -510: - break; - case 519: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -511: - break; - case 520: - {} - case -512: - break; - case 521: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -513: - break; - case 522: - {} - case -514: - break; - case 523: - {} - case -515: - break; - case 524: - {} - case -516: - break; - case 525: - {} - case -517: - break; - case 526: - {} - case -518: - break; - case 527: - {} - case -519: - break; - case 528: - {} - case -520: - break; - case 529: - {} - case -521: - break; - case 530: - {} - case -522: - break; - case 531: - {} - case -523: - break; - case 532: - {} - case -524: - break; - case 533: - {} - case -525: - break; - case 534: - {} - case -526: - break; - case 535: - {} - case -527: - break; - case 536: - {} - case -528: - break; - case 537: - {} - case -529: - break; - case 538: - { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} - case -530: - break; - case 539: - {} - case -531: - break; - case 540: - {} - case -532: - break; - case 541: - {} - case -533: - break; - case 542: - {} - case -534: - break; - case 543: - {} - case -535: - break; - case 544: - {} - case -536: - break; - case 545: - {} - case -537: - break; - case 546: - {} - case -538: - break; - case 547: - {} - case -539: - break; - case 548: - {} - case -540: - break; - default: - yy_error(YY_E_INTERNAL,false); - case -1: - } - yy_initial = true; - yy_state = yy_state_dtrans[yy_lexical_state]; - yy_next_state = YY_NO_STATE; - yy_last_accept_state = YY_NO_STATE; - yy_mark_start(); - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - } - } - } - } -} diff --git a/src/de/dhbwstuttgart/parser/JavaLexer.lex b/src/de/dhbwstuttgart/parser/JavaLexer.lex deleted file mode 100755 index 9100d64c..00000000 --- a/src/de/dhbwstuttgart/parser/JavaLexer.lex +++ /dev/null @@ -1,174 +0,0 @@ -/******************************************** - * file: JavaLexer.lex * - * * - * enth�lt die JLex-Spezifikation f�r die * - * Generierung des lexical analyzers * - * * - ********************************************/ - -// user code: -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.logger.Section; -%% - -%char -%line - -%{ - Token token; -%} - -%public -%class JavaLexer -%type boolean -%eofval{ - return false; -%eofval} - -ws = [ \t\r\n\b\015]+ -%state commentblock -%state commentsingleline -%% - -abstract {this.token = new Token(JavaParser.ABSTRACT, yytext(), yyline, yychar);return true;} -boolean {this.token = new Token(JavaParser.BOOLEAN, yytext(), yyline, yychar);return true;} -break {this.token = new Token(JavaParser.BREAK, yytext(), yyline, yychar);return true;} -case {this.token = new Token(JavaParser.CASE, yytext(), yyline, yychar);return true;} -catch {this.token = new Token(JavaParser.CATCH, yytext(), yyline, yychar);return true;} -char {this.token = new Token(JavaParser.CHAR, yytext(), yyline, yychar);return true;} -class {this.token = new Token(JavaParser.CLASS, yytext(), yyline, yychar);return true;} -continue {this.token = new Token(JavaParser.CONTINUE, yytext(), yyline, yychar);return true;} -default {this.token = new Token(JavaParser.DEFAULT, yytext(), yyline, yychar);return true;} -do {this.token = new Token(JavaParser.DO, yytext(), yyline, yychar);return true;} -else {this.token = new Token(JavaParser.ELSE, yytext(), yyline, yychar);return true;} -extends {this.token = new Token(JavaParser.EXTENDS, yytext(), yyline, yychar);return true;} -final {this.token = new Token(JavaParser.FINAL, yytext(), yyline, yychar);return true;} -finally {this.token = new Token(JavaParser.FINALLY, yytext(), yyline, yychar);return true;} -for {this.token = new Token(JavaParser.FOR, yytext(), yyline, yychar);return true;} -if {this.token = new Token(JavaParser.IF, yytext(), yyline, yychar);return true;} -instanceof {this.token = new Token(JavaParser.INSTANCEOF, yytext(), yyline, yychar);return true;} -interface {this.token = new Token(JavaParser.INTERFACE, yytext(), yyline, yychar);return true;} -int {this.token = new Token(JavaParser.INT, yytext(), yyline, yychar);return true;} -implements {this.token = new Token(JavaParser.IMPLEMENTS, yytext(), yyline, yychar);return true;} -new {this.token = new Token(JavaParser.NEW, yytext(), yyline, yychar);return true;} -package {this.token = new Token(JavaParser.PACKAGE, yytext(), yyline, yychar);return true;} -import {this.token = new Token(JavaParser.IMPORT, yytext(), yyline, yychar);return true;} -private {this.token = new Token(JavaParser.PRIVATE, yytext(), yyline, yychar);return true;} -protected {this.token = new Token(JavaParser.PROTECTED, yytext(), yyline, yychar);return true;} -public {this.token = new Token(JavaParser.PUBLIC, yytext(), yyline, yychar);return true;} -return {this.token = new Token(JavaParser.RETURN, yytext(), yyline, yychar);return true;} -static {this.token = new Token(JavaParser.STATIC, yytext(), yyline, yychar);return true;} -super {this.token = new Token(JavaParser.SUPER, yytext(), yyline, yychar);return true;} -switch {this.token = new Token(JavaParser.SWITCH, yytext(), yyline, yychar);return true;} -this {this.token = new Token(JavaParser.THIS, yytext(), yyline,yychar);return true;} -throw {this.token = new Token(JavaParser.THROW, yytext(), yyline, yychar);return true;} -throws {this.token = new Token(JavaParser.THROWS, yytext(), yyline, yychar);return true;} -try {this.token = new Token(JavaParser.TRY, yytext(), yyline, yychar);return true;} -void {this.token = new Token(JavaParser.VOID, yytext(), yyline, yychar);return true;} -while {this.token = new Token(JavaParser.WHILE, yytext(), yyline, yychar);return true;} - -"//" {yybegin(commentsingleline);} -"/*" {yybegin(commentblock);} - "*/" {yybegin(YYINITIAL);} - [^\*]* {} - "*" {} - [\t\r\n\b\015]+ {yybegin(YYINITIAL);} - [^\\t\r\n\b\015]+ {} - -[1-9][0-9]*[L]? { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} -0[xX][0-9a-fA-F]+[L]? { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} -0[0-7]*[L]? { - String lexem = yytext(); - if(lexem.endsWith("L")) - { - lexem = lexem.substring(0, lexem.length() - 1); - this.token = new Token(JavaParser.LONGLITERAL, lexem, yyline, yychar);return true; - } - else - { - this.token = new Token(JavaParser.INTLITERAL, lexem, yyline, yychar);return true; - } -} -[1-9][0-9]*[.]?[0-9]*[f] { - this.token = new Token(JavaParser.FLOATLITERAL, yytext(), yyline, yychar);return true; -} - -[1-9][0-9]*[.][0-9]* { - this.token = new Token(JavaParser.DOUBLELITERAL, yytext(), yyline, yychar);return true; -} - -true|false { - this.token = new Token(JavaParser.BOOLLITERAL, yytext(), yyline, yychar);return true; -} -null { - this.token = new Token(JavaParser.JNULL, yytext(), yyline, yychar);return true; -} -\'[a-zA-Z0-9!@#$%\&*\(\),\<.\>/\?;:]\' { - this.token = new Token(JavaParser.CHARLITERAL, yytext(), yyline, yychar);return true; -} -\"[a-zA-Z0-9!@#$%^&*\(\),\<.\>/\?;:\ ]*\" { - this.token = new Token(JavaParser.STRINGLITERAL, yytext(), yyline, yychar);return true; -} -[a-zA-Z$_][a-zA-Z0-9$_]* { - this.token = new Token(JavaParser.IDENTIFIER, yytext(), yyline, yychar);return true; -} -[()\{\}\[\];,.] { - this.token = new Token(JavaParser.BRACE,yytext().charAt(0), yyline, yychar);return true; -} -[=>=" {this.token = new Token(JavaParser.GREATEREQUAL, yytext(), yyline, yychar);return true;} -"!=" {this.token = new Token(JavaParser.NOTEQUAL, yytext(), yyline, yychar);return true;} -"||" {this.token = new Token(JavaParser.LOGICALOR, yytext(), yyline, yychar);return true;} -"&&" {this.token = new Token(JavaParser.LOGICALAND, yytext(), yyline, yychar);return true;} -"++" {this.token = new Token(JavaParser.INCREMENT, yytext(), yyline, yychar);return true;} -"--" {this.token = new Token(JavaParser.DECREMENT, yytext(), yyline, yychar);return true;} - -[+\-*/&|^%] { - this.token = new Token(JavaParser.OP, yytext().charAt(0), yyline, yychar);return true; -} -//"<<" {this.token = new Token(JavaParser.SHIFTLEFT, yytext(), yyline, yychar);return true;} -//">>" {this.token = new Token(JavaParser.SHIFTRIGHT, yytext(), yyline, yychar);return true;} -//">>>" {this.token = new Token(JavaParser.UNSIGNEDSHIFTRIGHT, yytext(), yyline, yychar);return true;} -"+=" {this.token = new Token(JavaParser.PLUSEQUAL, yytext(), yyline, yychar);return true;} -"-=" {this.token = new Token(JavaParser.MINUSEQUAL, yytext(), yyline, yychar);return true;} -"*=" {this.token = new Token(JavaParser.TIMESEQUAL, yytext(), yyline, yychar);return true;} -"/=" {this.token = new Token(JavaParser.DIVIDEEQUAL, yytext(), yyline, yychar);return true;} -"&=" {this.token = new Token(JavaParser.ANDEQUAL, yytext(), yyline, yychar);return true;} -"|=" {this.token = new Token(JavaParser.OREQUAL, yytext(), yyline, yychar);return true;} -"^=" {this.token = new Token(JavaParser.XOREQUAL, yytext(), yyline, yychar);return true;} -"%=" {this.token = new Token(JavaParser.MODULOEQUAL, yytext(), yyline, yychar);return true;} -//"<<=" {this.token = new Token(JavaParser.SHIFTLEFTEQUAL, yytext(), yyline, yychar);return true;} -//">>=" {this.token = new Token(JavaParser.SIGNEDSHIFTRIGHTEQUAL, yytext(), yyline, yychar);return true;} -//">>>=" {this.token = new Token(JavaParser.UNSIGNEDSHIFTRIGHTEQUAL, yytext(), yyline, yychar);return true;} -{ws}|\n { /* System.out.print(yytext()); */ } -\\.\n {de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("Kommentar: "+yytext(), Section.PARSER);} -"->" {this.token = new Token(JavaParser.LAMBDAASSIGNMENT, yytext(), yyline, yychar);return true;} - - diff --git a/src/de/dhbwstuttgart/parser/JavaParser.java b/src/de/dhbwstuttgart/parser/JavaParser.java deleted file mode 100644 index 62c73036..00000000 --- a/src/de/dhbwstuttgart/parser/JavaParser.java +++ /dev/null @@ -1,3940 +0,0 @@ -// created by jay 0.7 (c) 1998 Axel.Schreiner@informatik.uni-osnabrueck.de - - // line 2 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - -/* -Backup von JavaParser.jay 10.April 17 Uhr -*/ - -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.core.AClassOrInterface; -import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.logger.Section; -import de.dhbwstuttgart.syntaxtree.ImportDeclarations; -import de.dhbwstuttgart.syntaxtree.Interface; -import de.dhbwstuttgart.syntaxtree.SourceFile; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.typeinference.Pair; -import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.Void; -import de.dhbwstuttgart.*; -import de.dhbwstuttgart.syntaxtree.*; -import de.dhbwstuttgart.syntaxtree.misc.*; -import de.dhbwstuttgart.syntaxtree.modifier.*; -import de.dhbwstuttgart.syntaxtree.operator.*; -import de.dhbwstuttgart.syntaxtree.type.*; -import de.dhbwstuttgart.syntaxtree.statement.*; -import de.dhbwstuttgart.typeinference.Menge; - -public class JavaParser{ -public Menge path = new Menge(); - -//PL 05-07-30 eingefuegt. ANFANG -private Menge containedTypes = new Menge(); -private Menge usedIdsToCheck = new Menge(); - //Vektor aller Typdeklarationen die in aktueller Klasse vorkommen. - //wird nach Beendigung der Klasse des Attributs der jeweiligen - //Klasse zugeordnet - //nach dem Parsen wird mit wandleGeneric2RefType die - //die RefTypes gesetzt. -void initContainedTypes() { - this.containedTypes = new Menge(); -} -void initUsedIdsToCheck() { - this.usedIdsToCheck = new Menge(); -} -//PL 05-07-30 eingefuegt. ENDE - -//LUAR 07-05-29 Anfang f�r Wildcard Test -public Menge testPair = new Menge(); -//LUAR 07-05-29 Ende - // line 53 "-" -// %token constants - //{ //ergaenzt PL 23.01.01 wieder entfernt 21.12.01 - public static final int ABSTRACT = 257; - public static final int BOOLEAN = 258; - public static final int BREAK = 259; - public static final int CASE = 260; - public static final int CATCH = 261; - public static final int CHAR = 262; - public static final int CLASS = 263; - public static final int CONTINUE = 264; - public static final int DEFAULT = 265; - public static final int DO = 266; - public static final int ELSE = 267; - public static final int EXTENDS = 268; - public static final int FINAL = 269; - public static final int FINALLY = 270; - public static final int FOR = 271; - public static final int IF = 272; - public static final int INSTANCEOF = 273; - public static final int INT = 274; - public static final int NEW = 275; - public static final int PRIVATE = 276; - public static final int PROTECTED = 277; - public static final int PUBLIC = 278; - public static final int PACKAGE = 279; - public static final int IMPORT = 280; - public static final int INTERFACE = 281; - public static final int IMPLEMENTS = 282; - public static final int RETURN = 283; - public static final int STATIC = 284; - public static final int SUPER = 285; - public static final int SWITCH = 286; - public static final int THIS = 287; - public static final int THROW = 288; - public static final int THROWS = 289; - public static final int TRY = 290; - public static final int VOID = 291; - public static final int WHILE = 292; - public static final int INTLITERAL = 293; - public static final int LONGLITERAL = 294; - public static final int DOUBLELITERAL = 295; - public static final int FLOATLITERAL = 296; - public static final int BOOLLITERAL = 297; - public static final int JNULL = 298; - public static final int CHARLITERAL = 299; - public static final int STRINGLITERAL = 300; - public static final int IDENTIFIER = 301; - public static final int EQUAL = 302; - public static final int LESSEQUAL = 303; - public static final int GREATEREQUAL = 304; - public static final int NOTEQUAL = 305; - public static final int LOGICALOR = 306; - public static final int LOGICALAND = 307; - public static final int INCREMENT = 308; - public static final int DECREMENT = 309; - public static final int SHIFTLEFT = 310; - public static final int SHIFTRIGHT = 311; - public static final int UNSIGNEDSHIFTRIGHT = 312; - public static final int SIGNEDSHIFTRIGHT = 313; - public static final int PLUSEQUAL = 314; - public static final int MINUSEQUAL = 315; - public static final int TIMESEQUAL = 316; - public static final int DIVIDEEQUAL = 317; - public static final int ANDEQUAL = 318; - public static final int OREQUAL = 319; - public static final int XOREQUAL = 320; - public static final int MODULOEQUAL = 321; - public static final int SHIFTLEFTEQUAL = 322; - public static final int SIGNEDSHIFTRIGHTEQUAL = 323; - public static final int UNSIGNEDSHIFTRIGHTEQUAL = 324; - public static final int BRACE = 325; - public static final int RELOP = 326; - public static final int OP = 327; - public static final int EOF = 328; - public static final int LAMBDAASSIGNMENT = 329; - public static final int ENDOFGENERICVARDECLARATION = 330; - public static final int yyErrorCode = 256; - - /** thrown for irrecoverable syntax errors and stack overflow. - */ - public static class yyException extends java.lang.Exception { - public Token token; - public yyException (String message, Token token) { - super(message); - this.token=token; - } - } - - /** must be implemented by a scanner object to supply input to the parser. - */ - public interface yyInput { - /** move on to next token. - @return false if positioned beyond tokens. - @throws IOException on input error. - */ - boolean advance () throws java.io.IOException; - /** classifies current token. - Should not be called if advance() returned false. - @return current %token or single character. - */ - int token (); - /** associated with current token. - Should not be called if advance() returned false. - @return value for token(). - */ - Object value (); - } - - /** simplified error message. - @see yyerror - */ - public void yyerror (String message) { - yyerror(message, null); - } - - /** (syntax) error message. - Can be overwritten to control message format. - @param message text to be displayed. - @param expected Menge of acceptable tokens, if available. - */ - public String yyerror (String message, String[] expected) { - if (expected != null && expected.length > 0) { - System.err.print(message+", expecting"); - message+=", expecting"; - for (int n = 0; n < expected.length; ++ n){ - System.err.print(" "+expected[n]); - message+=" "+expected[n];} - System.err.println(); - return message; - } else{ - System.err.println(message); - return message;} - } - - /** debugging support, requires the package jay.yydebug. - Set to null to suppress debugging messages. - */ -//t protected jay.yydebug.yyDebug yydebug; - - protected static final int yyFinal = 12; -//t public static final String yyRule [] = { -//t "$accept : compilationunit", -//t "compilationunit : typedeclarations", -//t "compilationunit : importdeclarations typedeclarations", -//t "compilationunit : packagedeclaration importdeclarations typedeclarations", -//t "compilationunit : packagedeclaration typedeclarations", -//t "compilationunit : type type compilationunit", -//t "packagedeclaration : PACKAGE name ';'", -//t "importdeclarations : importdeclaration", -//t "importdeclarations : importdeclarations importdeclaration", -//t "importdeclaration : IMPORT importqualifiedname ';'", -//t "typedeclarations : typedeclaration", -//t "typedeclarations : typedeclarations typedeclaration", -//t "name : qualifiedname", -//t "name : simplename", -//t "typedeclaration : classdeclaration", -//t "typedeclaration : interfacedeclaration", -//t "qualifiedname : name '.' IDENTIFIER", -//t "importqualifiedname : name '.' IDENTIFIER", -//t "importqualifiedname : name '.' '*'", -//t "simplename : IDENTIFIER", -//t "classdeclaration : CLASS classidentifier classbody", -//t "classdeclaration : modifiers CLASS classidentifier classbody", -//t "classdeclaration : CLASS classidentifier super classbody", -//t "classdeclaration : modifiers CLASS classidentifier super classbody", -//t "classdeclaration : CLASS classidentifier interfaces classbody", -//t "classdeclaration : modifiers CLASS classidentifier interfaces classbody", -//t "classdeclaration : CLASS classidentifier super interfaces classbody", -//t "classdeclaration : modifiers CLASS classidentifier super interfaces classbody", -//t "interfaceidentifier : IDENTIFIER", -//t "interfaceidentifier : IDENTIFIER '<' boundedClassParameters '>'", -//t "classidentifier : IDENTIFIER", -//t "classidentifier : IDENTIFIER '<' boundedClassParameters '>'", -//t "interfacedeclaration : INTERFACE interfaceidentifier interfacebody", -//t "interfacedeclaration : modifiers INTERFACE interfaceidentifier interfacebody", -//t "interfacedeclaration : INTERFACE interfaceidentifier extendsinterfaces interfacebody", -//t "interfacedeclaration : modifiers INTERFACE interfaceidentifier extendsinterfaces interfacebody", -//t "paralist : IDENTIFIER", -//t "paralist : IDENTIFIER '<' paralist '>'", -//t "paralist : wildcardparameter", -//t "paralist : paralist ',' IDENTIFIER", -//t "paralist : paralist ',' IDENTIFIER '<' paralist '>'", -//t "paralist : paralist ',' wildcardparameter", -//t "wildcardparameter : '?'", -//t "wildcardparameter : '?' EXTENDS referencetype", -//t "wildcardparameter : '?' SUPER referencetype", -//t "classbody : '{' '}'", -//t "classbody : '{' classbodydeclarations '}'", -//t "modifiers : modifier", -//t "modifiers : modifiers modifier", -//t "super : EXTENDS classtype", -//t "interfaces : IMPLEMENTS interfacetype", -//t "interfaces : interfaces ',' interfacetype", -//t "interfacebody : '{' '}'", -//t "interfacebody : '{' interfacememberdeclarations '}'", -//t "extendsinterfaces : EXTENDS interfacetype", -//t "extendsinterfaces : extendsinterfaces ',' interfacetype", -//t "classbodydeclarations : classbodydeclaration", -//t "classbodydeclarations : classbodydeclarations classbodydeclaration", -//t "modifier : PUBLIC", -//t "modifier : PROTECTED", -//t "modifier : PRIVATE", -//t "modifier : STATIC", -//t "modifier : ABSTRACT", -//t "modifier : FINAL", -//t "classtype : classorinterfacetype", -//t "interfacememberdeclarations : interfacememberdeclaration", -//t "interfacememberdeclarations : interfacememberdeclarations interfacememberdeclaration", -//t "interfacetype : classorinterfacetype", -//t "classbodydeclaration : classmemberdeclaration", -//t "classbodydeclaration : staticinitializer", -//t "classbodydeclaration : constructordeclaration", -//t "classorinterfacetype : name parameter", -//t "typelist : type", -//t "typelist : typelist ',' type", -//t "typelist : typelist ',' wildcardparameter", -//t "typelist : wildcardparameter", -//t "parameter :", -//t "parameter : '<' typelist '>'", -//t "interfacememberdeclaration : constantdeclaration", -//t "interfacememberdeclaration : abstractmethoddeclaration", -//t "classmemberdeclaration : fielddeclaration", -//t "classmemberdeclaration : methoddeclaration", -//t "staticinitializer : STATIC block", -//t "constructordeclaration : constructordeclarator constructorbody", -//t "constructordeclaration : modifiers constructordeclarator constructorbody", -//t "constantdeclaration : modifiers type IDENTIFIER '=' expression ';'", -//t "abstractmethoddeclaration : methodheader ';'", -//t "fielddeclarator : variabledeclarator '=' expression", -//t "fielddeclarator : variabledeclarator", -//t "genericdeclarationlist : '<' boundedMethodParameters '>'", -//t "fielddeclaration : type fielddeclarator ';'", -//t "fielddeclaration : fielddeclarator ';'", -//t "fielddeclaration : genericdeclarationlist type fielddeclarator ';'", -//t "fielddeclaration : variabledeclarators ';'", -//t "fielddeclaration : type variabledeclarators ';'", -//t "fielddeclaration : modifiers type variabledeclarators ';'", -//t "methoddeclaration : methodheader methodbody", -//t "block : '{' '}'", -//t "block : '{' blockstatements '}'", -//t "constructordeclarator : simplename '(' ')'", -//t "constructordeclarator : simplename '(' formalparameterlist ')'", -//t "constructorbody : '{' '}'", -//t "constructorbody : '{' explicitconstructorinvocation '}'", -//t "constructorbody : '{' blockstatements '}'", -//t "constructorbody : '{' explicitconstructorinvocation blockstatements '}'", -//t "throws : THROWS classtypelist", -//t "boundedClassParameter : boundedMethodParameter", -//t "boundedClassParameters : boundedClassParameter", -//t "boundedClassParameters : boundedClassParameters ',' boundedClassParameter", -//t "boundedMethodParameter : IDENTIFIER", -//t "boundedMethodParameter : IDENTIFIER EXTENDS boundedclassidentifierlist", -//t "boundedclassidentifierlist : referencetype", -//t "boundedclassidentifierlist : boundedclassidentifierlist '&' referencetype", -//t "boundedMethodParameters : boundedMethodParameter", -//t "boundedMethodParameters : boundedMethodParameters ',' boundedMethodParameter", -//t "methodheader : genericdeclarationlist type methoddeclarator", -//t "methodheader : type methoddeclarator", -//t "methodheader : modifiers type methoddeclarator", -//t "methodheader : modifiers genericdeclarationlist type methoddeclarator", -//t "methodheader : type methoddeclarator throws", -//t "methodheader : genericdeclarationlist type methoddeclarator throws", -//t "methodheader : modifiers type methoddeclarator throws", -//t "methodheader : modifiers genericdeclarationlist type methoddeclarator throws", -//t "methodheader : VOID methoddeclarator", -//t "methodheader : modifiers VOID methoddeclarator", -//t "methodheader : VOID methoddeclarator throws", -//t "methodheader : modifiers VOID methoddeclarator throws", -//t "methodheader : genericdeclarationlist VOID methoddeclarator", -//t "methodheader : modifiers genericdeclarationlist VOID methoddeclarator", -//t "methodheader : genericdeclarationlist VOID methoddeclarator throws", -//t "methodheader : modifiers genericdeclarationlist VOID methoddeclarator throws", -//t "methodheader : methoddeclarator", -//t "methodheader : genericdeclarationlist methoddeclarator", -//t "methodheader : modifiers methoddeclarator", -//t "methodheader : methoddeclarator throws", -//t "methodheader : modifiers methoddeclarator throws", -//t "type : referencetype", -//t "type : referencetype '[' ']'", -//t "variabledeclarators : variabledeclarator", -//t "variabledeclarators : variabledeclarators ',' variabledeclarator", -//t "methodbody : block", -//t "blockstatements : blockstatement", -//t "blockstatements : blockstatements blockstatement", -//t "formalparameterlist : formalparameter", -//t "formalparameterlist : formalparameterlist ',' formalparameter", -//t "explicitconstructorinvocation : THIS '(' ')' ';'", -//t "explicitconstructorinvocation : THIS '(' argumentlist ')' ';'", -//t "explicitconstructorinvocation : SUPER '(' ')' ';'", -//t "explicitconstructorinvocation : SUPER '(' argumentlist ')' ';'", -//t "classtypelist : classtype", -//t "classtypelist : classtypelist ',' classtype", -//t "methoddeclarator : IDENTIFIER '(' ')'", -//t "methoddeclarator : IDENTIFIER '(' formalparameterlist ')'", -//t "referencetype : classorinterfacetype", -//t "variabledeclarator : variabledeclaratorid", -//t "blockstatement : localvariabledeclarationstatement", -//t "blockstatement : statement", -//t "formalparameter : type variabledeclaratorid", -//t "formalparameter : variabledeclaratorid", -//t "argumentlist : expression", -//t "argumentlist : argumentlist ',' expression", -//t "variabledeclaratorid : IDENTIFIER", -//t "variableinitializer : expression", -//t "localvariabledeclarationstatement : localvariabledeclaration ';'", -//t "statement : statementwithouttrailingsubstatement", -//t "statement : ifthenstatement", -//t "statement : ifthenelsestatement", -//t "statement : whilestatement", -//t "statement : forstatement", -//t "statement : explicitconstructorinvocation", -//t "expression : assignmentexpression", -//t "expression : classinstancecreationexpression", -//t "localvariabledeclaration : type variabledeclarators", -//t "localvariabledeclaration : variabledeclarators", -//t "statementwithouttrailingsubstatement : block", -//t "statementwithouttrailingsubstatement : emptystatement", -//t "statementwithouttrailingsubstatement : expressionstatement", -//t "statementwithouttrailingsubstatement : returnstatement", -//t "ifthenstatement : IF '(' expression ')' statement", -//t "ifthenelsestatement : IF '(' expression ')' statementnoshortif ELSE statement", -//t "whilestatement : WHILE '(' expression ')' statement", -//t "forstatement : FOR '(' expression ';' expression ';' expression ')' statement", -//t "forstatement : FOR '(' expression ';' expression ';' ')' statement", -//t "forstatement : FOR '(' expression ';' ';' expression ')' statement", -//t "forstatement : FOR '(' ';' expression ';' expression ')' statement", -//t "forstatement : FOR '(' expression ';' ';' ')' statement", -//t "forstatement : FOR '(' ';' expression ';' ')' statement", -//t "forstatement : FOR '(' ';' ';' expression ')' statement", -//t "forstatement : FOR '(' ';' ';' ')' statement", -//t "assignmentexpression : conditionalexpression", -//t "assignmentexpression : assignment", -//t "emptystatement : ';'", -//t "expressionstatement : statementexpression ';'", -//t "returnstatement : RETURN ';'", -//t "returnstatement : RETURN expression ';'", -//t "statementnoshortif : statementwithouttrailingsubstatement", -//t "statementnoshortif : ifthenelsestatementnoshortif", -//t "statementnoshortif : whilestatementnoshortif", -//t "conditionalexpression : conditionalorexpression", -//t "assignment : lefthandside assignmentoperator assignmentexpression", -//t "assignment : lefthandside assignmentoperator classinstancecreationexpression", -//t "statementexpression : assignment", -//t "statementexpression : preincrementexpression", -//t "statementexpression : predecrementexpression", -//t "statementexpression : postincrementexpression", -//t "statementexpression : postdecrementexpression", -//t "statementexpression : methodinvocation", -//t "ifthenelsestatementnoshortif : IF '(' expression ')' statementnoshortif ELSE statementnoshortif", -//t "whilestatementnoshortif : WHILE '(' expression ')' statementnoshortif", -//t "conditionalorexpression : conditionalandexpression", -//t "conditionalorexpression : conditionalorexpression LOGICALOR conditionalandexpression", -//t "lambdaassignmentoperator : LAMBDAASSIGNMENT", -//t "lambdabody : block", -//t "lambdabody : expression", -//t "lambdaexpressionparameter : '(' ')'", -//t "lambdaexpressionparameter : '(' formalparameterlist ')'", -//t "lambdaexpression : lambdaexpressionparameter lambdaassignmentoperator lambdabody", -//t "lefthandside : name", -//t "assignmentoperator : '='", -//t "assignmentoperator : TIMESEQUAL", -//t "assignmentoperator : DIVIDEEQUAL", -//t "assignmentoperator : MODULOEQUAL", -//t "assignmentoperator : PLUSEQUAL", -//t "assignmentoperator : MINUSEQUAL", -//t "preincrementexpression : INCREMENT unaryexpression", -//t "predecrementexpression : DECREMENT unaryexpression", -//t "postincrementexpression : postfixexpression INCREMENT", -//t "postdecrementexpression : postfixexpression DECREMENT", -//t "methodinvocation : name '(' ')'", -//t "methodinvocation : name '(' argumentlist ')'", -//t "methodinvocation : primary '.' IDENTIFIER '(' ')'", -//t "methodinvocation : primary '.' IDENTIFIER '(' argumentlist ')'", -//t "classinstancecreationexpression : NEW classtype '(' ')'", -//t "classinstancecreationexpression : NEW classtype '(' argumentlist ')'", -//t "conditionalandexpression : inclusiveorexpression", -//t "conditionalandexpression : conditionalandexpression LOGICALAND inclusiveorexpression", -//t "unaryexpression : preincrementexpression", -//t "unaryexpression : predecrementexpression", -//t "unaryexpression : '+' unaryexpression", -//t "unaryexpression : '-' unaryexpression", -//t "unaryexpression : unaryexpressionnotplusminus", -//t "postfixexpression : primary", -//t "postfixexpression : name", -//t "postfixexpression : postincrementexpression", -//t "postfixexpression : postdecrementexpression", -//t "primary : primarynonewarray", -//t "inclusiveorexpression : exclusiveorexpression", -//t "inclusiveorexpression : inclusiveorexpression '|' exclusiveorexpression", -//t "primarynonewarray : literal", -//t "primarynonewarray : THIS", -//t "primarynonewarray : methodinvocation", -//t "primarynonewarray : lambdaexpression", -//t "unaryexpressionnotplusminus : postfixexpression", -//t "unaryexpressionnotplusminus : '!' unaryexpression", -//t "exclusiveorexpression : andexpression", -//t "exclusiveorexpression : exclusiveorexpression '^' andexpression", -//t "literal : INTLITERAL", -//t "literal : BOOLLITERAL", -//t "literal : CHARLITERAL", -//t "literal : STRINGLITERAL", -//t "literal : LONGLITERAL", -//t "literal : FLOATLITERAL", -//t "literal : DOUBLELITERAL", -//t "literal : JNULL", -//t "andexpression : equalityexpression", -//t "andexpression : andexpression '&' equalityexpression", -//t "equalityexpression : relationalexpression", -//t "equalityexpression : equalityexpression EQUAL relationalexpression", -//t "equalityexpression : equalityexpression NOTEQUAL relationalexpression", -//t "relationalexpression : shiftexpression", -//t "relationalexpression : relationalexpression '<' shiftexpression", -//t "relationalexpression : relationalexpression '>' shiftexpression", -//t "relationalexpression : relationalexpression LESSEQUAL shiftexpression", -//t "relationalexpression : relationalexpression GREATEREQUAL shiftexpression", -//t "relationalexpression : relationalexpression INSTANCEOF referencetype", -//t "shiftexpression : additiveexpression", -//t "additiveexpression : multiplicativeexpression", -//t "additiveexpression : additiveexpression '+' multiplicativeexpression", -//t "additiveexpression : additiveexpression '-' multiplicativeexpression", -//t "multiplicativeexpression : unaryexpression", -//t "multiplicativeexpression : multiplicativeexpression '*' unaryexpression", -//t "multiplicativeexpression : multiplicativeexpression '/' unaryexpression", -//t "multiplicativeexpression : multiplicativeexpression '%' unaryexpression", -//t }; - protected static final String yyName [] = { - "end-of-file",null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,"'!'",null,null,null,"'%'","'&'", - null,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",null,null,null, - null,null,null,null,null,null,null,null,"';'","'<'","'='","'>'","'?'", - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null, - "'['",null,"']'","'^'",null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,"'{'","'|'","'}'",null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - null,null,null,null,null,null,null,null,null,null,null,null,null,null, - "ABSTRACT","BOOLEAN","BREAK","CASE","CATCH","CHAR","CLASS","CONTINUE", - "DEFAULT","DO","ELSE","EXTENDS","FINAL","FINALLY","FOR","IF", - "INSTANCEOF","INT","NEW","PRIVATE","PROTECTED","PUBLIC","PACKAGE", - "IMPORT","INTERFACE","IMPLEMENTS","RETURN","STATIC","SUPER","SWITCH", - "THIS","THROW","THROWS","TRY","VOID","WHILE","INTLITERAL", - "LONGLITERAL","DOUBLELITERAL","FLOATLITERAL","BOOLLITERAL","JNULL", - "CHARLITERAL","STRINGLITERAL","IDENTIFIER","EQUAL","LESSEQUAL", - "GREATEREQUAL","NOTEQUAL","LOGICALOR","LOGICALAND","INCREMENT", - "DECREMENT","SHIFTLEFT","SHIFTRIGHT","UNSIGNEDSHIFTRIGHT", - "SIGNEDSHIFTRIGHT","PLUSEQUAL","MINUSEQUAL","TIMESEQUAL", - "DIVIDEEQUAL","ANDEQUAL","OREQUAL","XOREQUAL","MODULOEQUAL", - "SHIFTLEFTEQUAL","SIGNEDSHIFTRIGHTEQUAL","UNSIGNEDSHIFTRIGHTEQUAL", - "BRACE","RELOP","OP","EOF","LAMBDAASSIGNMENT", - "ENDOFGENERICVARDECLARATION", - }; - - /** index-checked interface to yyName[]. - @param token single character or %token value. - @return token name or [illegal] or [unknown]. - */ -//t public static final String yyname (int token) { -//t if (token < 0 || token > yyName.length) return "[illegal]"; -//t String name; -//t if ((name = yyName[token]) != null) return name; -//t return "[unknown]"; -//t } - - /** computes list of expected tokens on error by tracing the tables. - @param state for which to compute the list. - @return list of token names. - */ - protected String[] yyExpecting (int state) { - // yyCheck durch yyCheckInit.yyCheck; ersetzt PL 25.1.01 - int token, n, len = 0; - boolean[] ok = new boolean[yyName.length]; - - if ((n = yySindex[state]) != 0) - for (token = n < 0 ? -n : 0; - token < yyName.length && n+token < yyTable.length; ++ token) - if (yyCheckInit.yyCheck[n+token] == token && !ok[token] && yyName[token] != null) { - ++ len; - ok[token] = true; - } - if ((n = yyRindex[state]) != 0) - for (token = n < 0 ? -n : 0; - token < yyName.length && n+token < yyTable.length; ++ token) - if (yyCheckInit.yyCheck[n+token] == token && !ok[token] && yyName[token] != null) { - ++ len; - ok[token] = true; - } - - String result[] = new String[len]; - for (n = token = 0; n < len; ++ token) - if (ok[token]) result[n++] = yyName[token]; - return result; - } - - /** the generated parser, with debugging messages. - Maintains a state and a value stack, currently with fixed maximum size. - @param yyLex scanner. - @param yydebug debug message writer implementing yyDebug, or null. - @return result of the last reduction, if any. - @throws yyException on irrecoverable parse error. - */ - public Object yyparse (yyInput yyLex, Object yydebug) - throws java.io.IOException, yyException { -//t this.yydebug = (jay.yydebug.yyDebug)yydebug; - return yyparse(yyLex); - } - - /** initial size and increment of the state/value stack [default 256]. - This is not final so that it can be overwritten outside of invocations - of yyparse(). - */ - protected int yyMax; - - /** executed at the beginning of a reduce action. - Used as $$ = yyDefault($1), prior to the user-specified action, if any. - Can be overwritten to provide deep copy, etc. - @param first value for $1, or null. - @return first. - */ - protected Object yyDefault (Object first) { - return first; - } - - /** the generated parser. - Maintains a state and a value stack, currently with fixed maximum size. - @param yyLex scanner. - @return result of the last reduction, if any. - @throws yyException on irrecoverable parse error. - */ - public Object yyparse (yyInput yyLex) - throws java.io.IOException, yyException { - // yyCheck durch yyCheckInit.yyCheck; ersetzt PL 23.1.01 - yyCheckInit.yyCheckInit(); // initial yyCheck eingefuegt PL 25.1.01 - if (yyMax <= 0) yyMax = 256; // initial size - int yyState = 0, yyStates[] = new int[yyMax]; // state stack - Object yyVal = null, yyVals[] = new Object[yyMax]; // value stack - int yyToken = -1; // current input - int yyErrorFlag = 0; // #tks to shift - Scanner yyScanner = (Scanner)yyLex; - String yyErrorString = "irrecoverable syntax error"; - - yyLoop: for (int yyTop = 0;; ++ yyTop) { - if (yyTop >= yyStates.length) { // dynamically increase - int[] i = new int[yyStates.length+yyMax]; - System.arraycopy(yyStates, 0, i, 0, yyStates.length); - yyStates = i; - Object[] o = new Object[yyVals.length+yyMax]; - System.arraycopy(yyVals, 0, o, 0, yyVals.length); - yyVals = o; - } - yyStates[yyTop] = yyState; - yyVals[yyTop] = yyVal; -//t if (yydebug != null) yydebug.push(yyState, yyVal); - - yyDiscarded: for (;;) { // discarding a token does not change stack - int yyN; - if ((yyN = yyDefRed[yyState]) == 0) { // else [default] reduce (yyN) - if (yyToken < 0) { - yyToken = yyLex.advance() ? yyLex.token() : 0; -//t if (yydebug != null) -//t yydebug.lex(yyState, yyToken, yyname(yyToken), yyLex.value()); - } - if ((yyN = yySindex[yyState]) != 0 && (yyN += yyToken) >= 0 - && yyN < yyTable.length && yyCheckInit.yyCheck[yyN] == yyToken) { -//t if (yydebug != null) -//t yydebug.shift(yyState, yyTable[yyN], yyErrorFlag-1); - yyState = yyTable[yyN]; // shift to yyN - yyVal = yyLex.value(); - yyToken = -1; - if (yyErrorFlag > 0) -- yyErrorFlag; - continue yyLoop; - } - if ((yyN = yyRindex[yyState]) != 0 && (yyN += yyToken) >= 0 - && yyN < yyTable.length && yyCheckInit.yyCheck[yyN] == yyToken) - yyN = yyTable[yyN]; // reduce (yyN) - else - switch (yyErrorFlag) { - - case 0: - yyErrorString=yyerror("syntax error", yyExpecting(yyState)); -//t if (yydebug != null) yydebug.error("syntax error"); - - case 1: case 2: - yyErrorFlag = 3; - do { - if ((yyN = yySindex[yyStates[yyTop]]) != 0 - && (yyN += yyErrorCode) >= 0 && yyN < yyTable.length - && yyCheckInit.yyCheck[yyN] == yyErrorCode) { -//t if (yydebug != null) -//t yydebug.shift(yyStates[yyTop], yyTable[yyN], 3); - yyState = yyTable[yyN]; - yyVal = yyLex.value(); - continue yyLoop; - } -//t if (yydebug != null) yydebug.pop(yyStates[yyTop]); - } while (-- yyTop >= 0); -//t if (yydebug != null) yydebug.reject(); - throw new yyException(yyErrorString, yyScanner.token); - - case 3: - if (yyToken == 0) { -//t if (yydebug != null) yydebug.reject(); - throw new yyException(yyErrorString+"at end-of-file", yyScanner.token); - } -//t if (yydebug != null) -//t yydebug.discard(yyState, yyToken, yyname(yyToken), -//t yyLex.value()); - yyToken = -1; - continue yyDiscarded; // leave stack alone - } - } - int yyV = yyTop + 1-yyLen[yyN]; -//t if (yydebug != null) -//t yydebug.reduce(yyState, yyStates[yyV-1], yyN, yyRule[yyN], yyLen[yyN]); - yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]); - switch (yyN) { -case 1: - // line 249 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((SourceFile)yyVals[0+yyTop]); - } - break; -case 2: - // line 253 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((SourceFile)yyVals[0+yyTop]).addImports(((ImportDeclarations)yyVals[-1+yyTop])); - yyVal=((SourceFile)yyVals[0+yyTop]); - } - break; -case 3: - // line 258 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Package*/ - ((SourceFile)yyVals[0+yyTop]).setPackageName(((UsedId)yyVals[-2+yyTop])); - ((SourceFile)yyVals[0+yyTop]).addImports(((ImportDeclarations)yyVals[-1+yyTop])); - yyVal=((SourceFile)yyVals[0+yyTop]); - } - break; -case 4: - // line 265 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Package*/ - ((SourceFile)yyVals[0+yyTop]).setPackageName(((UsedId)yyVals[-1+yyTop])); - yyVal=((SourceFile)yyVals[0+yyTop]); - } - break; -case 5: - // line 271 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - this.testPair.add(new Pair(((Type)yyVals[-2+yyTop]),((Type)yyVals[-1+yyTop]))); - yyVal=((SourceFile)yyVals[0+yyTop]); - } - break; -case 6: - // line 277 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Package*/ - yyVal = ((UsedId)yyVals[-1+yyTop]); - } - break; -case 7: - // line 283 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ImportDeclarations declarations=new ImportDeclarations(); - declarations.addElement(((UsedId)yyVals[0+yyTop])); - yyVal=declarations; - } - break; -case 8: - // line 289 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ImportDeclarations)yyVals[-1+yyTop]).addElement(((UsedId)yyVals[0+yyTop])); - yyVal=((ImportDeclarations)yyVals[-1+yyTop]); - } - break; -case 9: - // line 295 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((UsedId)yyVals[-1+yyTop]); - } - break; -case 10: - // line 300 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - SourceFile Scfile = new SourceFile(); - Scfile.addElement(((AClassOrInterface)yyVals[0+yyTop])); - yyVal=Scfile; - } - break; -case 11: - // line 306 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((SourceFile)yyVals[-1+yyTop]).addElement(((AClassOrInterface)yyVals[0+yyTop])); - yyVal=((SourceFile)yyVals[-1+yyTop]); - } - break; -case 12: - // line 312 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((UsedId)yyVals[0+yyTop]); - } - break; -case 13: - // line 316 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((UsedId)yyVals[0+yyTop]); - } - break; -case 14: - // line 321 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Class)yyVals[0+yyTop]); - } - break; -case 15: - // line 325 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - yyVal=((Interface)yyVals[0+yyTop]); - } - break; -case 16: - // line 332 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((UsedId)yyVals[-2+yyTop]).set_Name(((Token)yyVals[0+yyTop]).getLexem()); - ((UsedId)yyVals[-2+yyTop]).setOffset(((UsedId)yyVals[-2+yyTop]).getOffset()); - yyVal=((UsedId)yyVals[-2+yyTop]); - } - break; -case 17: - // line 339 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((UsedId)yyVals[-2+yyTop]).set_Name(((Token)yyVals[0+yyTop]).getLexem()); - ((UsedId)yyVals[-2+yyTop]).setOffset(((UsedId)yyVals[-2+yyTop]).getOffset()); - yyVal=((UsedId)yyVals[-2+yyTop]); - } - break; -case 18: - // line 345 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((UsedId)yyVals[-2+yyTop]).set_Name("*"); - ((UsedId)yyVals[-2+yyTop]).setOffset(((UsedId)yyVals[-2+yyTop]).getOffset()); - yyVal=((UsedId)yyVals[-2+yyTop]); - } - break; -case 19: - // line 353 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - UsedId UI = new UsedId(((Token)yyVals[0+yyTop]).getOffset()); - UI.set_Name( ((Token)yyVals[0+yyTop]).getLexem() ); - UI.setOffset(((Token)yyVals[0+yyTop]).getOffset());/*hinzugef�gt hoth: 07.04.2006*/ - yyVal = UI; - } - break; -case 20: - // line 361 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Um das hier uebersichtlicher zu halten,*/ - /* gibt es einen allumfassenden Konstruktor fuer Class*/ - /* Parameter:*/ - /* String name, */ - /* Modifiers mod,*/ - /* ClassBody classbody, */ - /* Menge containedtypes, */ - /* UsedId superclass, */ - /* Menge SuperInterfaces, */ - /* Menge Parameterliste*/ - - yyVal = new Class(((ClassAndParameter)yyVals[-1+yyTop]).getName(), null, ((ClassBody)yyVals[0+yyTop]), containedTypes, null, ((ClassAndParameter)yyVals[-1+yyTop]).getParaMenge(), ((Token)yyVals[-2+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 21: - // line 378 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-1+yyTop]).getName(), ((Modifiers)yyVals[-3+yyTop]), ((ClassBody)yyVals[0+yyTop]), containedTypes, null, ((ClassAndParameter)yyVals[-1+yyTop]).getParaMenge(), ((Token)yyVals[-2+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 22: - // line 384 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-2+yyTop]).getName(), null, ((ClassBody)yyVals[0+yyTop]), containedTypes, ((UsedId)yyVals[-1+yyTop]), null, ((ClassAndParameter)yyVals[-2+yyTop]).getParaMenge(), ((Token)yyVals[-3+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 23: - // line 390 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-2+yyTop]).getName(), ((Modifiers)yyVals[-4+yyTop]), ((ClassBody)yyVals[0+yyTop]), containedTypes, ((UsedId)yyVals[-1+yyTop]), null, ((ClassAndParameter)yyVals[-2+yyTop]).getParaMenge(), ((Token)yyVals[-3+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 24: - // line 397 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-2+yyTop]).getName(), null, ((ClassBody)yyVals[0+yyTop]), containedTypes, ((InterfaceList)yyVals[-1+yyTop]).getTypeMenge(), ((ClassAndParameter)yyVals[-2+yyTop]).getParaMenge(), ((Token)yyVals[-3+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 25: - // line 403 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-2+yyTop]).getName(), ((Modifiers)yyVals[-4+yyTop]), ((ClassBody)yyVals[0+yyTop]), containedTypes, ((InterfaceList)yyVals[-1+yyTop]).getTypeMenge(), ((ClassAndParameter)yyVals[-2+yyTop]).getParaMenge(), ((Token)yyVals[-3+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 26: - // line 409 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-3+yyTop]).getName(), null, ((ClassBody)yyVals[0+yyTop]), containedTypes, ((UsedId)yyVals[-2+yyTop]), ((InterfaceList)yyVals[-1+yyTop]).getTypeMenge(), ((ClassAndParameter)yyVals[-3+yyTop]).getParaMenge(), ((Token)yyVals[-4+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 27: - // line 415 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new Class(((ClassAndParameter)yyVals[-3+yyTop]).getName(), ((Modifiers)yyVals[-5+yyTop]), ((ClassBody)yyVals[0+yyTop]), containedTypes, ((UsedId)yyVals[-2+yyTop]), ((InterfaceList)yyVals[-1+yyTop]).getTypeMenge(), ((ClassAndParameter)yyVals[-3+yyTop]).getParaMenge(), ((Token)yyVals[-4+yyTop]).getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - break; -case 28: - // line 422 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* HOTI*/ - /* Verbindet den Namen eines Interfaces mit einer optionalen Parameterliste*/ - yyVal = new InterfaceAndParameter(((Token)yyVals[0+yyTop]).getLexem()); - } - break; -case 29: - // line 428 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new InterfaceAndParameter(((Token)yyVals[-3+yyTop]).getLexem(), ((ParaList)yyVals[-1+yyTop])); - } - break; -case 30: - // line 433 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Hilfskonstrukt, um die Grammatik ueberschaubar zu halten*/ - /* Verbindet den Namen einer Klasse mit einer optionalen Parameterliste*/ - yyVal = new ClassAndParameter(((Token)yyVals[0+yyTop]).getLexem()); - } - break; -case 31: - // line 439 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = new ClassAndParameter(((Token)yyVals[-3+yyTop]).getLexem(), ((ParaList)yyVals[-1+yyTop])); - } - break; -case 32: - // line 444 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - Interface ic = new Interface(((InterfaceAndParameter)yyVals[-1+yyTop]).getName(), ((Token)yyVals[-2+yyTop]).getOffset()); - ic.setParaList(((InterfaceAndParameter)yyVals[-1+yyTop]).getParaMenge()); - ic.setInterfaceBody(((InterfaceBody)yyVals[0+yyTop])); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - yyVal = ic; - } - break; -case 33: - // line 454 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Interface ic = new Interface(((InterfaceAndParameter)yyVals[-1+yyTop]).getName(), ((Modifiers)yyVals[-3+yyTop]), ((Token)yyVals[-2+yyTop]).getOffset()); - ic.setInterfaceBody(((InterfaceBody)yyVals[0+yyTop])); - ic.setParaList(((InterfaceAndParameter)yyVals[-1+yyTop]).getParaMenge()); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - yyVal = ic; - } - break; -case 34: - // line 463 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Interface ic = new Interface(((InterfaceAndParameter)yyVals[-2+yyTop]).getName(), ((Token)yyVals[-3+yyTop]).getOffset()); - ic.setParaList(((InterfaceAndParameter)yyVals[-2+yyTop]).getParaMenge()); - /*ic.setSuperInterfaces($3.getMenge());*/ - ic.setInterfaceBody(((InterfaceBody)yyVals[0+yyTop])); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - yyVal = ic; - } - break; -case 35: - // line 473 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Interface ic = new Interface(((InterfaceAndParameter)yyVals[-2+yyTop]).getName(), ((Modifiers)yyVals[-4+yyTop]), ((Token)yyVals[-3+yyTop]).getOffset()); - ic.setParaList(((InterfaceAndParameter)yyVals[-2+yyTop]).getParaMenge()); - /*ic.setSuperInterfaces($4.getMenge());*/ - ic.setInterfaceBody(((InterfaceBody)yyVals[0+yyTop])); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - yyVal = ic; - } - break; -case 36: - // line 484 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ParaList pl = new ParaList(); - /* #JB# 05.04.2005 */ - /* ########################################################### */ - pl.getParalist().addElement(new GenericTypeVar(((Token)yyVals[0+yyTop]).getLexem(),null, ((Token)yyVals[0+yyTop]).getOffset())); - /*pl.getParalist().addElement( new TypePlaceholder($1.getLexem()) );*/ - /* ########################################################### */ - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "IDENTIFIER --> Paralist f�r " + ((Token)yyVals[0+yyTop]).getLexem() + " TV", Section.PARSER); - yyVal = pl; - } - break; -case 37: - // line 495 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ParaList pl = new ParaList(); - RefType t = new RefType( ((Token)yyVals[-3+yyTop]).getLexem(),null,((Token)yyVals[-3+yyTop]).getOffset() ); - t.set_ParaList( ((ParaList)yyVals[-1+yyTop]).get_ParaList() ); - pl.getParalist().addElement(t); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "IDENTIFIER '<' paralist '>' --> Paralist f�r " + ((Token)yyVals[-3+yyTop]).getLexem() + ": RefType", Section.PARSER); - yyVal = pl; - } - break; -case 38: - // line 504 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ParaList pl = new ParaList(); - pl.getParalist().addElement(((WildcardType)yyVals[0+yyTop])); - yyVal = pl; - } - break; -case 39: - // line 510 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - - /* #JB# 05.04.2005 */ - /* ########################################################### */ - ((ParaList)yyVals[-2+yyTop]).getParalist().addElement(new GenericTypeVar(((Token)yyVals[0+yyTop]).getLexem(), null,((Token)yyVals[0+yyTop]).getOffset())); - /*$1.getParalist().addElement(new TypePlaceholder($3.getLexem()));*/ - /* ########################################################### */ - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER --> Paralist f�r " + ((Token)yyVals[0+yyTop]).getLexem() + ": TV", Section.PARSER); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist: " + ((ParaList)yyVals[-2+yyTop]).getParalist(), Section.PARSER); - yyVal=((ParaList)yyVals[-2+yyTop]); - } - break; -case 40: - // line 523 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - RefType t = new RefType( ((Token)yyVals[-3+yyTop]).getLexem(),null ,((Token)yyVals[-3+yyTop]).getOffset() ); - t.set_ParaList( ((ParaList)yyVals[-1+yyTop]).get_ParaList() ); - ((ParaList)yyVals[-5+yyTop]).getParalist().addElement(t); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER '<' paralist '>' --> Paralist f�r " + ((Token)yyVals[-3+yyTop]).getLexem() + ": RefType", Section.PARSER); - yyVal=((ParaList)yyVals[-5+yyTop]); - } - break; -case 41: - // line 531 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ParaList)yyVals[-2+yyTop]).getParalist().addElement(((WildcardType)yyVals[0+yyTop])); - yyVal=((ParaList)yyVals[-2+yyTop]); - } - break; -case 42: - // line 537 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*Luar 29.11.06 Offset auf -1, da keine Angabe vorhanden*/ - WildcardType wc = new WildcardType(null,null,-1); - yyVal = wc; - } - break; -case 43: - // line 543 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ExtendsWildcardType ewc = new ExtendsWildcardType(((Token)yyVals[-1+yyTop]).getOffset(),((RefType)yyVals[0+yyTop])); - yyVal = ewc; - } - break; -case 44: - // line 548 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - SuperWildcardType swc = new SuperWildcardType(((Token)yyVals[-1+yyTop]).getOffset(),((RefType)yyVals[0+yyTop])); - yyVal = swc; - } - break; -case 45: - // line 554 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ClassBody CB = new ClassBody(); - yyVal = CB; - } - break; -case 46: - // line 560 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((ClassBody)yyVals[-1+yyTop]); - } - break; -case 47: - // line 565 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Modifiers Mod = new Modifiers(); - Mod.addModifier(((Modifier)yyVals[0+yyTop])); - yyVal = Mod; - } - break; -case 48: - // line 571 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Modifiers)yyVals[-1+yyTop]).addModifier(((Modifier)yyVals[0+yyTop])); - yyVal = ((Modifiers)yyVals[-1+yyTop]); - } - break; -case 49: - // line 577 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((UsedId)yyVals[0+yyTop]); - } - break; -case 50: - // line 582 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - InterfaceList il = new InterfaceList(); - il.addInterface(((UsedId)yyVals[0+yyTop])); - yyVal = il; - } - break; -case 51: - // line 589 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((InterfaceList)yyVals[-2+yyTop]).addInterface(((UsedId)yyVals[0+yyTop])); - yyVal = ((InterfaceList)yyVals[-2+yyTop]); - } - break; -case 52: - // line 595 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - yyVal = new InterfaceBody(); - } - break; -case 53: - // line 600 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((InterfaceBody)yyVals[-1+yyTop]); - } - break; -case 54: - // line 607 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - InterfaceList il = new InterfaceList(); - il.addInterface(((UsedId)yyVals[0+yyTop])); - yyVal = il; - } - break; -case 55: - // line 614 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((InterfaceList)yyVals[-2+yyTop]).addInterface(((UsedId)yyVals[0+yyTop])); - yyVal = ((InterfaceList)yyVals[-2+yyTop]); - } - break; -case 56: - // line 621 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ClassBody CB = new ClassBody(); - CB.addField( ((Field)yyVals[0+yyTop]) ); - yyVal=CB; - } - break; -case 57: - // line 627 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ClassBody)yyVals[-1+yyTop]).addField(((Field)yyVals[0+yyTop])); - yyVal = ((ClassBody)yyVals[-1+yyTop]); - } - break; -case 58: - // line 634 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Public Pub = new Public(); - yyVal=Pub; - } - break; -case 59: - // line 639 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Protected Pro = new Protected(); - yyVal=Pro; - } - break; -case 60: - // line 644 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Private Pri = new Private(); - yyVal=Pri; - } - break; -case 61: - // line 649 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Static Sta = new Static(); - yyVal=Sta; - } - break; -case 62: - // line 654 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Abstract Abs = new Abstract(); - yyVal=Abs; - } - break; -case 63: - // line 659 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { Final fin = new Final(); - yyVal = fin; - } - break; -case 64: - // line 665 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((UsedId)yyVals[0+yyTop]); - } - break; -case 65: - // line 671 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - InterfaceBody ib = new InterfaceBody(); - ib.addElement(((Field)yyVals[0+yyTop])); - yyVal = ib; - } - break; -case 66: - // line 678 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((InterfaceBody)yyVals[-1+yyTop]).addElement(((Field)yyVals[0+yyTop])); - yyVal = ((InterfaceBody)yyVals[-1+yyTop]); - } - break; -case 67: - // line 684 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interfaces*/ - yyVal = ((UsedId)yyVals[0+yyTop]); - } - break; -case 68: - // line 690 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Field)yyVals[0+yyTop]); - } - break; -case 69: - // line 695 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 70: - // line 699 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Field)yyVals[0+yyTop]); - } - break; -case 71: - // line 705 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - if (((Menge)yyVals[0+yyTop]) != null) { - /*$1.set_ParaList($2.get_ParaList());*/ - ((UsedId)yyVals[-1+yyTop]).set_ParaList(((Menge)yyVals[0+yyTop]));/*�nderung von Andreas Stadelmeier. Type statt GenericVarType*/ - /* otth: originale (also diese) Parameterliste retten */ - /*((UsedId)$1).vParaOrg = new Menge( $2.get_ParaList() );*/ - } - yyVal=((UsedId)yyVals[-1+yyTop]); - } - break; -case 72: - // line 716 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Menge tl = new Menge(); - tl.add(((Type)yyVals[0+yyTop])); - yyVal = tl; - } - break; -case 73: - // line 722 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Menge)yyVals[-2+yyTop]).add(((Type)yyVals[0+yyTop])); - yyVal=((Menge)yyVals[-2+yyTop]); - } - break; -case 74: - // line 727 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Menge)yyVals[-2+yyTop]).add(((WildcardType)yyVals[0+yyTop])); - yyVal=((Menge)yyVals[-2+yyTop]); - } - break; -case 75: - // line 732 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Menge tl = new Menge(); - tl.add(((WildcardType)yyVals[0+yyTop])); - yyVal = tl; - } - break; -case 76: - // line 740 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { yyVal = null; } - break; -case 77: - // line 742 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((Menge)yyVals[-1+yyTop]); - } - break; -case 78: - // line 747 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interfaces, Spezialform Konstantendef.*/ - yyVal = ((Constant)yyVals[0+yyTop]); - } - break; -case 79: - // line 752 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((Method)yyVals[0+yyTop]); - } - break; -case 80: - // line 757 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Field)yyVals[0+yyTop]); - } - break; -case 81: - // line 761 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 82: - // line 766 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Method STAT = new Method(((Token)yyVals[-1+yyTop]).getOffset()); - DeclId DST = new DeclId(); - DST.set_Name(((Token)yyVals[-1+yyTop]).getLexem()); - STAT.set_DeclId(DST); - Static ST = new Static(); - Modifiers MOD = new Modifiers(); - MOD.addModifier(ST); - STAT.set_Modifiers(MOD); - STAT.set_Block(((Block)yyVals[0+yyTop])); - yyVal=STAT; - } - break; -case 83: - // line 780 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Constructor)yyVals[-1+yyTop]).set_Block(((Block)yyVals[0+yyTop])); - yyVal = ((Constructor)yyVals[-1+yyTop]); - } - break; -case 84: - // line 785 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Constructor)yyVals[-1+yyTop]).set_Block(((Block)yyVals[0+yyTop])); - ((Constructor)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-2+yyTop])); - yyVal = ((Constructor)yyVals[-1+yyTop]); - } - break; -case 85: - // line 792 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - Constant c = new Constant(((Token)yyVals[-3+yyTop]).getLexem(), ((Modifiers)yyVals[-5+yyTop])); - c.setType(((Type)yyVals[-4+yyTop])); - c.setValue(((Expr)yyVals[-1+yyTop])); - yyVal = c; - } - break; -case 86: - // line 801 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /* SCJU: Interface*/ - yyVal = ((Method)yyVals[-1+yyTop]); - } - break; -case 87: - // line 826 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - FieldDeclaration ret = new FieldDeclaration(((DeclId)yyVals[-2+yyTop]).getOffset()); - ret.set_DeclId(((DeclId)yyVals[-2+yyTop])); - ret.setWert(((Expr)yyVals[0+yyTop])); - yyVal=ret; - } - break; -case 88: - // line 833 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - FieldDeclaration ret = new FieldDeclaration(((DeclId)yyVals[0+yyTop]).getOffset()); - ret.set_DeclId(((DeclId)yyVals[0+yyTop])); - yyVal=ret; - } - break; -case 89: - // line 840 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - GenericDeclarationList ret = new GenericDeclarationList(((GenericVarDeclarationList)yyVals[-1+yyTop]).getElements(),((GenericVarDeclarationList)yyVals[-1+yyTop]).getEndOffset()); - yyVal = ret; - } - break; -case 90: - // line 847 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((FieldDeclaration)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - yyVal=((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 91: - // line 852 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 92: - // line 856 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {/*angef�gt von Andreas Stadelmeier*/ - ((FieldDeclaration)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - ((FieldDeclaration)yyVals[-1+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-3+yyTop])); - yyVal=((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 93: - // line 863 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 94: - // line 868 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("T->Parser->fielddeclaration ...: type " + ((Type)yyVals[-2+yyTop]), Section.PARSER); - ((FieldDeclaration)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - yyVal = ((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 95: - // line 875 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((FieldDeclaration)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - for(int i=0;i<(((FieldDeclaration)yyVals[-1+yyTop]).getDeclIdMenge().size());i++) - { - ((FieldDeclaration)yyVals[-1+yyTop]).getDeclIdMenge().elementAt(i).modifiers=((Modifiers)yyVals[-3+yyTop]); - } - yyVal = ((FieldDeclaration)yyVals[-1+yyTop]); - } - break; -case 96: - // line 885 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).set_Block(((Block)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 97: - // line 892 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Block Bl = new Block(); - yyVal=Bl; - } - break; -case 98: - // line 898 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Block)yyVals[-1+yyTop]); - } - break; -case 99: - // line 903 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Constructor CON = new Constructor(null,null); /*TODO: Der Parser kann sowieso nicht zwischen einem Konstruktor und einer Methode unterscheiden. Das hier kann wegfallen...*/ - DeclId DIDCon = new DeclId(); - DIDCon.set_Name(((UsedId)yyVals[-2+yyTop]).get_Name_1Element()); - CON.set_DeclId(DIDCon); - yyVal=CON; - } - break; -case 100: - // line 911 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Constructor CONpara = new Constructor(null,null); - DeclId DIconpara = new DeclId(); - DIconpara.set_Name(((UsedId)yyVals[-3+yyTop]).get_Name_1Element()); - CONpara.set_DeclId(DIconpara); - CONpara.setParameterList(((ParameterList)yyVals[-1+yyTop])); - yyVal=CONpara; - } - break; -case 101: - // line 921 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Block CBL = new Block(); - yyVal=CBL; - } - break; -case 102: - // line 926 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Block CBLexpl = new Block(); - CBLexpl.set_Statement(((Statement)yyVals[-1+yyTop])); - yyVal=CBLexpl; - } - break; -case 103: - // line 932 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Block)yyVals[-1+yyTop]); - } - break; -case 104: - // line 936 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Block CBes = new Block(); - CBes.set_Statement(((Statement)yyVals[-2+yyTop])); - for(int j=0;j<((Block)yyVals[-1+yyTop]).statements.size();j++) - { - CBes.set_Statement((Statement)((Block)yyVals[-1+yyTop]).statements.elementAt(j)); - } - yyVal=CBes; - } - break; -case 105: - // line 947 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ExceptionList EL = new ExceptionList(); - EL.set_addElem(((RefType)yyVals[0+yyTop])); - yyVal=EL; - } - break; -case 106: - // line 954 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal = ((GenericTypeVar)yyVals[0+yyTop]); - } - break; -case 107: - // line 959 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ParaList p = new ParaList(); - p.add_ParaList(((GenericTypeVar)yyVals[0+yyTop])); - yyVal=p; - } - break; -case 108: - // line 965 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ParaList)yyVals[-2+yyTop]).add_ParaList(((GenericTypeVar)yyVals[0+yyTop])); - yyVal=((ParaList)yyVals[-2+yyTop]); - } - break; -case 109: - // line 972 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=new GenericTypeVar(((Token)yyVals[0+yyTop]).getLexem(),null,((Token)yyVals[0+yyTop]).getOffset()); - } - break; -case 110: - // line 976 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - BoundedGenericTypeVar gtv=new BoundedGenericTypeVar(((Token)yyVals[-2+yyTop]).getLexem(), ((BoundedClassIdentifierList)yyVals[0+yyTop]),null, ((Token)yyVals[-2+yyTop]).getOffset() ,((BoundedClassIdentifierList)yyVals[0+yyTop]).getEndOffset()); - /*gtv.setBounds($3);*/ - yyVal=gtv; - } - break; -case 111: - // line 983 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Menge vec=new Menge(); - vec.addElement(((RefType)yyVals[0+yyTop])); - containedTypes.addElement(((RefType)yyVals[0+yyTop])); - yyVal=new BoundedClassIdentifierList(vec, ((RefType)yyVals[0+yyTop]).getOffset()+((RefType)yyVals[0+yyTop]).getName().toString().length()); - } - break; -case 112: - // line 990 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((BoundedClassIdentifierList)yyVals[-2+yyTop]).addElement(((RefType)yyVals[0+yyTop])); - ((BoundedClassIdentifierList)yyVals[-2+yyTop]).addOffsetOff(((RefType)yyVals[0+yyTop])); - containedTypes.addElement(((RefType)yyVals[0+yyTop])); - yyVal=((BoundedClassIdentifierList)yyVals[-2+yyTop]); - } - break; -case 113: - // line 998 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - GenericVarDeclarationList vec=new GenericVarDeclarationList(); - vec.addElement(((GenericTypeVar)yyVals[0+yyTop])); - yyVal=vec; - } - break; -case 114: - // line 1004 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((GenericVarDeclarationList)yyVals[-2+yyTop]).addElement(((GenericTypeVar)yyVals[0+yyTop])); - yyVal=((GenericVarDeclarationList)yyVals[-2+yyTop]); - } - break; -case 115: - // line 1012 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[0+yyTop]).setType(((Type)yyVals[-1+yyTop])); - ((Method)yyVals[0+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-2+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 116: - // line 1018 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[0+yyTop]).setType(((Type)yyVals[-1+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 117: - // line 1023 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[0+yyTop]).set_Modifiers(((Modifiers)yyVals[-2+yyTop])); - ((Method)yyVals[0+yyTop]).setType(((Type)yyVals[-1+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 118: - // line 1029 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[0+yyTop]).set_Modifiers(((Modifiers)yyVals[-3+yyTop])); - ((Method)yyVals[0+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-2+yyTop])); - ((Method)yyVals[0+yyTop]).setType(((Type)yyVals[-1+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 119: - // line 1036 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 120: - // line 1042 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-3+yyTop])); - ((Method)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 121: - // line 1049 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-3+yyTop])); - ((Method)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 122: - // line 1056 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-4+yyTop])); - ((Method)yyVals[-1+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-3+yyTop])); - ((Method)yyVals[-1+yyTop]).setType(((Type)yyVals[-2+yyTop])); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 123: - // line 1064 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void Voit = new Void(((Method)yyVals[0+yyTop]),((Token)yyVals[-1+yyTop]).getOffset()); - ((Method)yyVals[0+yyTop]).setType(Voit); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 124: - // line 1070 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voit = new Void(((Method)yyVals[0+yyTop]),((Token)yyVals[-1+yyTop]).getOffset()); - ((Method)yyVals[0+yyTop]).set_Modifiers(((Modifiers)yyVals[-2+yyTop])); - ((Method)yyVals[0+yyTop]).setType(voit); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 125: - // line 1077 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voyt = new Void(((Method)yyVals[-1+yyTop]),((Token)yyVals[-2+yyTop]).getOffset()); - ((Method)yyVals[-1+yyTop]).setType(voyt); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 126: - // line 1084 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voyd = new Void(((Method)yyVals[-1+yyTop]),((Token)yyVals[-2+yyTop]).getOffset()); - ((Method)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-3+yyTop])); - ((Method)yyVals[-1+yyTop]).setType(voyd); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 127: - // line 1092 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void Voit = new Void(((Method)yyVals[0+yyTop]),((Token)yyVals[-1+yyTop]).getOffset()); - ((Method)yyVals[0+yyTop]).setType(Voit); - ((Method)yyVals[0+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-2+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 128: - // line 1099 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voit = new Void(((Method)yyVals[0+yyTop]),((Token)yyVals[-1+yyTop]).getOffset()); - ((Method)yyVals[0+yyTop]).set_Modifiers(((Modifiers)yyVals[-3+yyTop])); - ((Method)yyVals[0+yyTop]).setType(voit); - ((Method)yyVals[0+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-2+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 129: - // line 1107 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voyt = new Void(((Method)yyVals[-1+yyTop]),((Token)yyVals[-2+yyTop]).getOffset()); - ((Method)yyVals[-1+yyTop]).setType(voyt); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - ((Method)yyVals[-1+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-3+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 130: - // line 1115 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Void voyd = new Void(((Method)yyVals[-1+yyTop]),((Token)yyVals[-2+yyTop]).getOffset()); - ((Method)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-4+yyTop])); - ((Method)yyVals[-1+yyTop]).setType(voyd); - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - ((Method)yyVals[-1+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-3+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 131: - // line 1125 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*auskommentiert von Andreas Stadelmeier (a10023) $1.setType(TypePlaceholder.fresh()); */ - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 132: - // line 1130 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*auskommentiert von Andreas Stadelmeier (a10023) $4.setType(TypePlaceholder.fresh());*/ - ((Method)yyVals[0+yyTop]).setGenericParameter(((GenericDeclarationList)yyVals[-1+yyTop])); - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 133: - // line 1137 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[0+yyTop]).set_Modifiers(((Modifiers)yyVals[-1+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) $2.setType(TypePlaceholder.fresh());*/ - yyVal=((Method)yyVals[0+yyTop]); - } - break; -case 134: - // line 1143 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*auskommentiert von Andreas Stadelmeier (a10023) $1.setType(TypePlaceholder.fresh());*/ - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 135: - // line 1149 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Method)yyVals[-1+yyTop]).set_Modifiers(((Modifiers)yyVals[-2+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) $2.setType(TypePlaceholder.fresh());*/ - ((Method)yyVals[-1+yyTop]).set_ExceptionList(((ExceptionList)yyVals[0+yyTop])); - yyVal=((Method)yyVals[-1+yyTop]); - } - break; -case 136: - // line 1158 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((RefType)yyVals[0+yyTop]); - } - break; -case 137: - // line 1162 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((RefType)yyVals[-2+yyTop]).setArray(true); - } - break; -case 138: - // line 1177 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - FieldDeclaration IVD = new FieldDeclaration(((DeclId)yyVals[0+yyTop]).getOffset()); - IVD.getDeclIdMenge().addElement( ((DeclId)yyVals[0+yyTop]) ); - IVD.setOffset(((DeclId)yyVals[0+yyTop]).getOffset()); - yyVal = IVD; - } - break; -case 139: - // line 1184 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((FieldDeclaration)yyVals[-2+yyTop]).getDeclIdMenge().addElement(((DeclId)yyVals[0+yyTop])); - yyVal=((FieldDeclaration)yyVals[-2+yyTop]); - } - break; -case 140: - // line 1190 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Block)yyVals[0+yyTop]); - } - break; -case 141: - // line 1195 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Block Blstat = new Block(); - Blstat.set_Statement(((Statement)yyVals[0+yyTop])); - yyVal=Blstat; - } - break; -case 142: - // line 1202 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((Block)yyVals[-1+yyTop]).set_Statement(((Statement)yyVals[0+yyTop])); - yyVal=((Block)yyVals[-1+yyTop]); - } - break; -case 143: - // line 1208 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ParameterList PL = new ParameterList(); - PL.set_AddParameter(((FormalParameter)yyVals[0+yyTop])); - yyVal = PL; - } - break; -case 144: - // line 1214 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ParameterList)yyVals[-2+yyTop]).set_AddParameter(((FormalParameter)yyVals[0+yyTop])); - yyVal = ((ParameterList)yyVals[-2+yyTop]); - } - break; -case 145: - // line 1220 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ThisCall THCON = new ThisCall(((Token)yyVals[-3+yyTop]).getOffset(),((Token)yyVals[-3+yyTop]).getLexem().length()); - yyVal=THCON; - } - break; -case 146: - // line 1225 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ThisCall THCONargl = new ThisCall(((Token)yyVals[-4+yyTop]).getOffset(),((Token)yyVals[-4+yyTop]).getLexem().length()); - THCONargl.set_ArgumentList(((ArgumentList)yyVals[-2+yyTop])); - yyVal=THCONargl; - } - break; -case 147: - // line 1231 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - SuperCall sCall = new SuperCall(((Token)yyVals[-3+yyTop]).getOffset(),((Token)yyVals[-3+yyTop]).getLexem().length()); - yyVal=sCall; - } - break; -case 148: - // line 1236 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - SuperCall sCall = new SuperCall(((Token)yyVals[-4+yyTop]).getOffset(),((Token)yyVals[-4+yyTop]).getLexem().length()); - sCall.set_ArgumentList(((ArgumentList)yyVals[-2+yyTop])); - yyVal=sCall; - } - break; -case 149: - // line 1243 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*RefType RT = new RefType(RT.get_UsedId().get_Name_1Element(),null,-1);*/ - RefType RT = new RefType(((UsedId)yyVals[0+yyTop]).get_Name_1Element(),null,-1); - /*RT.set_UsedId($1);*/ - /*RT.setName(RT.get_UsedId().get_Name_1Element());*/ - yyVal=RT; - } - break; -case 150: - // line 1251 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((RefType)yyVals[-2+yyTop]).set_UsedId(((UsedId)yyVals[0+yyTop])); - ((RefType)yyVals[-2+yyTop]).setName(((RefType)yyVals[-2+yyTop]).get_UsedId().get_Name_1Element()); - yyVal=((RefType)yyVals[-2+yyTop]); - } - break; -case 151: - // line 1258 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Method met = new Method(((Token)yyVals[-2+yyTop]).getOffset()); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - met.setLineNumber(((Token)yyVals[-2+yyTop]).getLineNumber()); - met.setOffset(((Token)yyVals[-2+yyTop]).getOffset());/*hinzugef�gt hoth: 07.04.2006*/ - /* ########################################################### */ - DeclId DImethod = new DeclId(); - DImethod.set_Name(((Token)yyVals[-2+yyTop]).getLexem()); - met.set_DeclId(DImethod); - yyVal = met; - } - break; -case 152: - // line 1271 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Method met_para = new Method(((Token)yyVals[-3+yyTop]).getOffset()); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - met_para.setLineNumber(((Token)yyVals[-3+yyTop]).getLineNumber()); - met_para.setOffset(((Token)yyVals[-3+yyTop]).getOffset());/*hinzugef�gt hoth: 07.04.2006*/ - /* ########################################################### */ - DeclId Dimet_para = new DeclId(); - Dimet_para.set_Name(((Token)yyVals[-3+yyTop]).getLexem()); - met_para.set_DeclId(Dimet_para); - met_para.setParameterList(((ParameterList)yyVals[-1+yyTop])); - yyVal = met_para; - } - break; -case 153: - // line 1299 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("T->Parser->referenctype: " + ((UsedId)yyVals[0+yyTop]), Section.PARSER); - RefType RT = new RefType(((UsedId)yyVals[0+yyTop]).getQualifiedName(),null,((UsedId)yyVals[0+yyTop]).getOffset()); - - /*ausgetauscht PL 05-07-30*/ - /*RT.set_UsedId($1); */ - /*RT.setName(RT.get_UsedId().get_Name_1Element());*/ - RT.set_ParaList(((UsedId)yyVals[0+yyTop]).get_RealParaList()); - /*RT.setName($1.getQualifiedName());*/ - - - /*PL 05-07-30 eingefuegt containedTypes ANFANG*/ - containedTypes.addElement(RT); - /*PL 05-07-30 eingefuegt containedTypes ENDE*/ - - yyVal=RT; - } - break; -case 154: - // line 1321 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((DeclId)yyVals[0+yyTop]); - } - break; -case 155: - // line 1342 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((LocalVarDecl)yyVals[0+yyTop]); - } - break; -case 156: - // line 1346 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Statement)yyVals[0+yyTop]); - } - break; -case 157: - // line 1351 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - FormalParameter FP = new FormalParameter(((DeclId)yyVals[0+yyTop])); - FP.setType(((Type)yyVals[-1+yyTop])); - /*FP.set_DeclId($2); //auskommentiert von Andreas Stadelmeier. DeclId wird nun dem Konstruktor von FormalParameter �bergeben.*/ - yyVal=FP; - } - break; -case 158: - // line 1376 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nFunktionsdeklaration mit typlosen Parametern: " + ((DeclId)yyVals[0+yyTop]).name, Section.PARSER); - - FormalParameter FP = new FormalParameter(((DeclId)yyVals[0+yyTop])); - - /* #JB# 31.03.2005*/ - /* ###########################################################*/ - /*Type T = TypePlaceholder.fresh(); //auskommentiert von Andreas Stadelmeier*/ - /* Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet * /*/ - /* ###########################################################*/ - /*de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName(), Section.PARSER);*/ - - /*auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T );*/ - /*FP.set_DeclId($1);*/ - - yyVal=FP; - } - break; -case 159: - // line 1395 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ArgumentList AL = new ArgumentList(); - AL.expr.addElement(((Expr)yyVals[0+yyTop])); - yyVal=AL; - } - break; -case 160: - // line 1401 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ((ArgumentList)yyVals[-2+yyTop]).expr.addElement(((Expr)yyVals[0+yyTop])); - yyVal=((ArgumentList)yyVals[-2+yyTop]); - } - break; -case 161: - // line 1413 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - DeclId DI = new DeclId(); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - DI.setLineNumber(((Token)yyVals[0+yyTop]).getLineNumber()); - DI.setOffset(((Token)yyVals[0+yyTop]).getOffset());/*hinzugef�gt hoth: 07.04.2006*/ - /* ########################################################### */ - DI.set_Name(((Token)yyVals[0+yyTop]).getLexem()); - yyVal=DI; - } - break; -case 162: - // line 1425 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 163: - // line 1430 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((LocalVarDecl)yyVals[-1+yyTop]); - } - break; -case 164: - // line 1435 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Statement)yyVals[0+yyTop]); - } - break; -case 165: - // line 1439 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((IfStmt)yyVals[0+yyTop]); - } - break; -case 166: - // line 1443 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((IfStmt)yyVals[0+yyTop]); - } - break; -case 167: - // line 1447 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((WhileStmt)yyVals[0+yyTop]); - } - break; -case 168: - // line 1451 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((ForStmt)yyVals[0+yyTop]); - } - break; -case 169: - // line 1454 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Statement)yyVals[0+yyTop]); - } - break; -case 170: - // line 1459 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 171: - // line 1463 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((NewClass)yyVals[0+yyTop]); - } - break; -case 172: - // line 1481 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("P -> Lokale Variable angelegt!", Section.PARSER); - LocalVarDecl LVD = new LocalVarDecl(((Type)yyVals[-1+yyTop]).getOffset(),((Type)yyVals[-1+yyTop]).getVariableLength()); - LVD.setType(((Type)yyVals[-1+yyTop])); - LVD.setDeclidMenge(((FieldDeclaration)yyVals[0+yyTop]).getDeclIdMenge()); - yyVal = LVD; - } - break; -case 173: - // line 1492 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("P -> Lokale Variable angelegt!", Section.PARSER); - LocalVarDecl LVD = new LocalVarDecl(((FieldDeclaration)yyVals[0+yyTop]).getOffset(),((FieldDeclaration)yyVals[0+yyTop]).getVariableLength()); - /*auskommentiert von Andreas Stadelmeier (a10023) LVD.setType(TypePlaceholder.fresh());*/ - LVD.setDeclidMenge(((FieldDeclaration)yyVals[0+yyTop]).getDeclIdMenge()); - yyVal = LVD; - } - break; -case 174: - // line 1502 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Block)yyVals[0+yyTop]); - } - break; -case 175: - // line 1506 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((EmptyStmt)yyVals[0+yyTop]); - } - break; -case 176: - // line 1510 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((ExprStmt)yyVals[0+yyTop]); - } - break; -case 177: - // line 1514 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Return)yyVals[0+yyTop]); - } - break; -case 178: - // line 1519 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - IfStmt Ifst = new IfStmt(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - Ifst.set_Expr(((Expr)yyVals[-2+yyTop])); - Ifst.set_Then_block(((Statement)yyVals[0+yyTop])); - yyVal=Ifst; - } - break; -case 179: - // line 1527 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - IfStmt IfstElst = new IfStmt(((Expr)yyVals[-4+yyTop]).getOffset(),((Expr)yyVals[-4+yyTop]).getVariableLength()); - IfstElst.set_Expr(((Expr)yyVals[-4+yyTop])); - IfstElst.set_Then_block(((Statement)yyVals[-2+yyTop])); - IfstElst.set_Else_block(((Statement)yyVals[0+yyTop])); - yyVal=IfstElst; - } - break; -case 180: - // line 1536 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - WhileStmt Whlst = new WhileStmt(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - Whlst.set_Expr(((Expr)yyVals[-2+yyTop])); - Whlst.set_Loop_block(((Statement)yyVals[0+yyTop])); - yyVal=Whlst; - } - break; -case 181: - // line 1547 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-6+yyTop]).getOffset(),((Expr)yyVals[-6+yyTop]).getVariableLength()); - Fst.set_head_Initializer(((Expr)yyVals[-6+yyTop])); - Fst.set_head_Condition(((Expr)yyVals[-4+yyTop])); - Fst.set_head_Loop_expr(((Expr)yyVals[-2+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 182: - // line 1559 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-5+yyTop]).getOffset(),((Expr)yyVals[-5+yyTop]).getVariableLength()); - Fst.set_head_Initializer(((Expr)yyVals[-5+yyTop])); - Fst.set_head_Condition(((Expr)yyVals[-3+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 183: - // line 1570 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-5+yyTop]).getOffset(),((Expr)yyVals[-5+yyTop]).getVariableLength()); - Fst.set_head_Initializer(((Expr)yyVals[-5+yyTop])); - Fst.set_head_Loop_expr(((Expr)yyVals[-2+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 184: - // line 1581 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-4+yyTop]).getOffset(),((Expr)yyVals[-4+yyTop]).getVariableLength()); - Fst.set_head_Condition(((Expr)yyVals[-4+yyTop])); - Fst.set_head_Loop_expr(((Expr)yyVals[-2+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 185: - // line 1592 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-4+yyTop]).getOffset(),((Expr)yyVals[-4+yyTop]).getVariableLength()); - Fst.set_head_Initializer(((Expr)yyVals[-4+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 186: - // line 1602 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-3+yyTop]).getOffset(),((Expr)yyVals[-3+yyTop]).getVariableLength()); - Fst.set_head_Condition(((Expr)yyVals[-3+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 187: - // line 1612 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - Fst.set_head_Loop_expr(((Expr)yyVals[-2+yyTop])); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 188: - // line 1622 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ForStmt Fst = new ForStmt(((Statement)yyVals[0+yyTop]).getOffset(),((Statement)yyVals[0+yyTop]).getVariableLength()); - Fst.set_body_Loop_block(((Statement)yyVals[0+yyTop])); - - /*Typannahme*/ - yyVal = Fst; - } - break; -case 189: - // line 1631 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("conditionalexpression", Section.PARSER); - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 190: - // line 1636 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Assign)yyVals[0+yyTop]); - } - break; -case 191: - // line 1642 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - EmptyStmt Empst = new EmptyStmt(); - yyVal=Empst; - } - break; -case 192: - // line 1648 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[-1+yyTop]); - } - break; -case 193: - // line 1653 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Return ret = new Return(-1,-1); - yyVal= ret; - } - break; -case 194: - // line 1658 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Return retexp = new Return(((Expr)yyVals[-1+yyTop]).getOffset(),((Expr)yyVals[-1+yyTop]).getVariableLength()); - retexp.set_ReturnExpr(((Expr)yyVals[-1+yyTop])); - yyVal=retexp; - } - break; -case 195: - // line 1665 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Statement)yyVals[0+yyTop]); - } - break; -case 196: - // line 1669 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((IfStmt)yyVals[0+yyTop]); - } - break; -case 197: - // line 1673 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((WhileStmt)yyVals[0+yyTop]); - } - break; -case 198: - // line 1678 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 199: - // line 1684 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1!\n", Section.PARSER); - Assign Ass = new Assign(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - LOFV.set_UsedId(((UsedId)yyVals[-2+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh());*/ - /*auskommentiert von Andreas Stadelmeier (a10023) Ass.setType(TypePlaceholder.fresh());*/ - if( ((Operator)yyVals[-1+yyTop]) == null ) - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1 --> " + ((Expr)yyVals[0+yyTop]) + " \n", Section.PARSER); - Ass.set_Expr( LOFV,((Expr)yyVals[0+yyTop]) ); - } - else - { - Binary Bin = new Binary(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - Bin.set_Expr1(LOFV); - Bin.set_Operator(((Operator)yyVals[-1+yyTop])); - Bin.set_Expr2(((Expr)yyVals[0+yyTop])); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1 --> Binary\n", Section.PARSER); - /*auskommentiert von Andreas Stadelmeier (a10023) Bin.setType(TypePlaceholder.fresh());*/ - Ass.set_Expr( LOFV, Bin ); - } - yyVal=Ass; - } - break; -case 200: - // line 1709 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Assign Ass =new Assign(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - LOFV.set_UsedId(((UsedId)yyVals[-2+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh());*/ - /*auskommentiert von Andreas Stadelmeier (a10023) Ass.setType(TypePlaceholder.fresh());*/ - if(((Operator)yyVals[-1+yyTop])==null) - { - Ass.set_Expr(LOFV,((NewClass)yyVals[0+yyTop])); - } - else - { - Binary Bin = new Binary(((NewClass)yyVals[0+yyTop]).getOffset(),((NewClass)yyVals[0+yyTop]).getVariableLength()); - Bin.set_Expr1(LOFV); - Bin.set_Operator(((Operator)yyVals[-1+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) Bin.setType(TypePlaceholder.fresh());*/ - Bin.set_Expr2(((NewClass)yyVals[0+yyTop])); - Ass.set_Expr(LOFV,Bin); - } - yyVal=Ass; - } - break; -case 201: - // line 1732 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Assign)yyVals[0+yyTop]); - } - break; -case 202: - // line 1736 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 203: - // line 1740 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 204: - // line 1744 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 205: - // line 1748 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 206: - // line 1752 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((MethodCall)yyVals[0+yyTop]); - } - break; -case 207: - // line 1763 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - IfStmt IfElno = new IfStmt(((Expr)yyVals[-4+yyTop]).getOffset(),((Expr)yyVals[-4+yyTop]).getVariableLength()); - IfElno.set_Expr(((Expr)yyVals[-4+yyTop])); - IfElno.set_Then_block(((Statement)yyVals[-2+yyTop])); - IfElno.set_Else_block(((Statement)yyVals[0+yyTop])); - yyVal=IfElno; - } - break; -case 208: - // line 1772 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - WhileStmt Whstno = new WhileStmt(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - Whstno.set_Expr(((Expr)yyVals[-2+yyTop])); - Whstno.set_Loop_block(((Statement)yyVals[0+yyTop])); - yyVal=Whstno; - } - break; -case 209: - // line 1780 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 210: - // line 1784 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary LogOr = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - OrOp OrO = new OrOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - LogOr.set_Expr1(((Expr)yyVals[-2+yyTop])); - LogOr.set_Expr2(((Expr)yyVals[0+yyTop])); - LogOr.set_Operator(OrO); - /*auskommentiert von Andreas Stadelmeier (a10023) LogOr.setType(TypePlaceholder.fresh());*/ - yyVal=LogOr; - } - break; -case 211: - // line 1797 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=null; - } - break; -case 212: - // line 1802 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Block)yyVals[0+yyTop]); - } - break; -case 213: - // line 1806 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - /*Lambdabody kann auch nur aus einer Expression bestehen. In diesem Fall wird ein Block erstellt, welcher als einziges Statement ein return statment mit der expression hat.*/ - /*Bsp.: Aus der Expression |var=="hallo"| wird: |{return var=="hallo";}|*/ - Block ret=new Block(); - ret.statements.add((Statement)new Return(0,0).set_ReturnExpr(((Expr)yyVals[0+yyTop]))); - /*ret.statements.add((ExprStmt)$1);*/ - yyVal=ret; - } - break; -case 214: - // line 1816 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=null; - } - break; -case 215: - // line 1820 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((ParameterList)yyVals[-1+yyTop]); - } - break; -case 216: - // line 1825 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - LambdaExpression lambda = new LambdaExpression(/*((ParameSterList)$2).getOffset(),((ParameterList)$2).getVariableLength()*/0,0); - if(((ParameterList)yyVals[-2+yyTop])!=null)lambda.setParameterList(((ParameterList)yyVals[-2+yyTop])); - lambda.setBody((Block)((Block)yyVals[0+yyTop])); - yyVal=lambda; - } - break; -case 217: - // line 1844 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((UsedId)yyVals[0+yyTop]); - } - break; -case 218: - // line 1849 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=null; - } - break; -case 219: - // line 1853 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - TimesOp TEO = new TimesOp(-1,-1); - yyVal=TEO; - } - break; -case 220: - // line 1858 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - DivideOp DEO = new DivideOp(-1,-1); - yyVal=DEO; - } - break; -case 221: - // line 1863 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - ModuloOp MEO = new ModuloOp(-1,-1); - yyVal=MEO; - } - break; -case 222: - // line 1868 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PlusOp PEO = new PlusOp(-1,-1); - yyVal=PEO; - } - break; -case 223: - // line 1873 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - MinusOp MEO = new MinusOp(-1,-1); - yyVal=MEO; - } - break; -case 224: - // line 1885 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PreIncExpr PRINC = new PreIncExpr(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - PRINC.set_Expr(((Expr)yyVals[0+yyTop])); - yyVal=PRINC; - } - break; -case 225: - // line 1892 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PreDecExpr PRDEC = new PreDecExpr(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - PRDEC.set_Expr(((Expr)yyVals[0+yyTop])); - yyVal=PRDEC; - } - break; -case 226: - // line 1899 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PostIncExpr PIE = new PostIncExpr(((Expr)yyVals[-1+yyTop]).getOffset(),((Expr)yyVals[-1+yyTop]).getVariableLength()); - PIE.set_Expr(((Expr)yyVals[-1+yyTop])); - yyVal=PIE; - } - break; -case 227: - // line 1906 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PostDecExpr PDE = new PostDecExpr(((Expr)yyVals[-1+yyTop]).getOffset(),((Expr)yyVals[-1+yyTop]).getVariableLength()); - PDE.set_Expr(((Expr)yyVals[-1+yyTop])); - yyVal=PDE; - } - break; -case 228: - // line 1914 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M1", Section.PARSER); - MethodCall MC = new MethodCall(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - UsedId udidmeth = new UsedId(((UsedId)yyVals[-2+yyTop]).getOffset()); - udidmeth.set_Name((String)((((UsedId)yyVals[-2+yyTop]).get_Name()).elementAt(((UsedId)yyVals[-2+yyTop]).get_Name().size()-1))); - MC.set_UsedId(udidmeth); - Receiver rec = null; - if (((UsedId)yyVals[-2+yyTop]).get_Name().size() > 2) { - - ((UsedId)yyVals[-2+yyTop]).removeLast(); - - /*macht aus der Liste von Strings */ - /*in usedid.name einen InstVar */ - InstVar INSTVA = new InstVar(((UsedId)yyVals[-2+yyTop]),((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - - /*auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh());*/ - rec = new Receiver(INSTVA); - } - else if (((UsedId)yyVals[-2+yyTop]).get_Name().size() == 2) { - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - ((UsedId)yyVals[-2+yyTop]).removeLast(); - LOFV.set_UsedId(((UsedId)yyVals[-2+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh());*/ - rec = new Receiver(LOFV); - } - MC.set_Receiver(rec); - /*auskommentiert von Andreas Stadelmeier (a10023) MC.setType(TypePlaceholder.fresh());*/ - yyVal=MC; - } - break; -case 229: - // line 1944 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M2", Section.PARSER); - MethodCall MCarg = new MethodCall(((UsedId)yyVals[-3+yyTop]).getOffset(),((UsedId)yyVals[-3+yyTop]).getVariableLength()); - UsedId udidmeth = new UsedId(((UsedId)yyVals[-3+yyTop]).getOffset()); - udidmeth.set_Name((String)((((UsedId)yyVals[-3+yyTop]).get_Name()).elementAt(((UsedId)yyVals[-3+yyTop]).get_Name().size()-1))); - MCarg.set_UsedId(udidmeth); - Receiver rec = null; - if (((UsedId)yyVals[-3+yyTop]).get_Name().size() > 2) { - - ((UsedId)yyVals[-3+yyTop]).removeLast(); - - /*macht aus der Liste von Strings */ - /*in usedid.name einen InstVar */ - InstVar INSTVA = new InstVar(((UsedId)yyVals[-3+yyTop]),((UsedId)yyVals[-3+yyTop]).getOffset(),((UsedId)yyVals[-3+yyTop]).getVariableLength()); - - /*auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh());*/ - rec = new Receiver(INSTVA); - } - else if (((UsedId)yyVals[-3+yyTop]).get_Name().size() == 2) { - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname(((UsedId)yyVals[-3+yyTop]).getOffset(),((UsedId)yyVals[-3+yyTop]).getVariableLength()); - ((UsedId)yyVals[-3+yyTop]).removeLast(); - LOFV.set_UsedId(((UsedId)yyVals[-3+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh());*/ - rec = new Receiver(LOFV); - } - MCarg.set_Receiver(rec); - MCarg.set_ArgumentList(((ArgumentList)yyVals[-1+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) MCarg.setType(TypePlaceholder.fresh());*/ - yyVal=MCarg; - } - break; -case 230: - // line 1975 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M3", Section.PARSER); - MethodCall MCpr = new MethodCall(((Expr)yyVals[-4+yyTop]).getOffset(),((Expr)yyVals[-4+yyTop]).getVariableLength()); - - /* PL 05-08-21 primary ist kein UsedId*/ - /*$1.usedid.set_Name($3.getLexem());*/ - /*MCpr.set_UsedId($1.get_UsedId());*/ - UsedId udidmeth = new UsedId(((Expr)yyVals[-4+yyTop]).getOffset()); - udidmeth.set_Name(((Token)yyVals[-2+yyTop]).getLexem()); - MCpr.set_UsedId(udidmeth); - - /* #JB# 04.06.2005 */ - /* ########################################################### */ - MCpr.set_Receiver(new Receiver(((Expr)yyVals[-4+yyTop]))); - /* ########################################################### */ - /*auskommentiert von Andreas Stadelmeier (a10023) MCpr.setType(TypePlaceholder.fresh());*/ - yyVal=MCpr; - } - break; -case 231: - // line 1994 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M4", Section.PARSER); - MethodCall MCPA = new MethodCall(((Expr)yyVals[-5+yyTop]).getOffset(),((Expr)yyVals[-5+yyTop]).getVariableLength()); - - /* PL 05-08-21 primary ist kein UsedId*/ - /*$1.usedid.set_Name($3.getLexem());*/ - /*MCPA.set_UsedId($1.get_UsedId());*/ - UsedId udidmeth = new UsedId(((Token)yyVals[-3+yyTop]).getOffset()); - udidmeth.set_Name(((Token)yyVals[-3+yyTop]).getLexem()); - MCPA.set_UsedId(udidmeth); - - /* #JB# 04.06.2005 */ - /* ########################################################### */ - MCPA.set_Receiver(new Receiver(((Expr)yyVals[-5+yyTop]))); - /* ########################################################### */ - MCPA.set_ArgumentList(((ArgumentList)yyVals[-1+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) MCPA.setType(TypePlaceholder.fresh());*/ - yyVal=MCPA; - } - break; -case 232: - // line 2017 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - NewClass NC = new NewClass(((UsedId)yyVals[-2+yyTop]).getOffset(),((UsedId)yyVals[-2+yyTop]).getVariableLength()); - NC.set_UsedId(((UsedId)yyVals[-2+yyTop])); - - usedIdsToCheck.addElement(((UsedId)yyVals[-2+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) NC.setType(TypePlaceholder.fresh());*/ - yyVal=NC; - } - break; -case 233: - // line 2026 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - NewClass NCarg = new NewClass(((UsedId)yyVals[-3+yyTop]).getOffset(),((UsedId)yyVals[-3+yyTop]).getVariableLength()); - NCarg.set_UsedId(((UsedId)yyVals[-3+yyTop])); - usedIdsToCheck.addElement(((UsedId)yyVals[-3+yyTop])); - NCarg.set_ArgumentList(((ArgumentList)yyVals[-1+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) NCarg.setType(TypePlaceholder.fresh());*/ - yyVal=NCarg; - } - break; -case 234: - // line 2036 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 235: - // line 2040 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary And = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - AndOp AndO = new AndOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - And.set_Expr1(((Expr)yyVals[-2+yyTop])); - And.set_Expr2(((Expr)yyVals[0+yyTop])); - And.set_Operator(AndO); - /*auskommentiert von Andreas Stadelmeier (a10023) And.setType(TypePlaceholder.fresh());*/ - yyVal=And; - } - break; -case 236: - // line 2056 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 237: - // line 2060 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 238: - // line 2064 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - PositivExpr POSEX=new PositivExpr(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - UnaryPlus UP= new UnaryPlus(); - POSEX.set_UnaryPlus(UP); - POSEX.set_Expr(((Expr)yyVals[0+yyTop])); - yyVal=POSEX; - } - break; -case 239: - // line 2072 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - NegativeExpr NEGEX=new NegativeExpr(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - UnaryMinus UM=new UnaryMinus(); - NEGEX.set_UnaryMinus(UM); - NEGEX.set_Expr(((Expr)yyVals[0+yyTop])); - yyVal=NEGEX; - } - break; -case 240: - // line 2080 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 241: - // line 2085 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 242: - // line 2089 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - if (((UsedId)yyVals[0+yyTop]).get_Name().size() > 1) { - - /*macht aus der Liste von Strings */ - /*in usedid.name einen InstVar */ - InstVar INSTVA = new InstVar(((UsedId)yyVals[0+yyTop]),((UsedId)yyVals[0+yyTop]).getOffset(),((UsedId)yyVals[0+yyTop]).getVariableLength()); - - /*auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh());*/ - yyVal = INSTVA; - } - else { - LocalOrFieldVarOrClassname Postincexpr = new LocalOrFieldVarOrClassname(((UsedId)yyVals[0+yyTop]).getOffset(),((UsedId)yyVals[0+yyTop]).getVariableLength()); - Postincexpr.set_UsedId(((UsedId)yyVals[0+yyTop])); - /*auskommentiert von Andreas Stadelmeier (a10023) Postincexpr.setType(TypePlaceholder.fresh());*/ - yyVal=Postincexpr; - } - } - break; -case 243: - // line 2107 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 244: - // line 2111 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 245: - // line 2116 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 246: - // line 2121 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 248: - // line 2127 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Literal)yyVals[0+yyTop]); - } - break; -case 249: - // line 2131 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - This T = new This(((Token)yyVals[0+yyTop]).getOffset(),((Token)yyVals[0+yyTop]).getLexem().length()); - UsedId UT = new UsedId(((Token)yyVals[0+yyTop]).getOffset()); - UT.set_Name(((Token)yyVals[0+yyTop]).getLexem()); - T.set_UsedId(UT); - yyVal=T; - } - break; -case 250: - // line 2152 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((MethodCall)yyVals[0+yyTop]); - } - break; -case 251: - // line 2156 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 252: - // line 2161 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {yyVal=((Expr)yyVals[0+yyTop]);} - break; -case 253: - // line 2163 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {NotExpr NE=new NotExpr(((Expr)yyVals[0+yyTop]).getOffset(),((Expr)yyVals[0+yyTop]).getVariableLength()); - UnaryNot UN=new UnaryNot(); - NE.set_UnaryNot(UN); - NE.set_Expr(((Expr)yyVals[0+yyTop])); - yyVal=NE; - } - break; -case 254: - // line 2173 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {yyVal=((Expr)yyVals[0+yyTop]);} - break; -case 256: - // line 2178 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {IntLiteral IL = new IntLiteral(); - IL.set_Int(((Token)yyVals[0+yyTop]).String2Int()); - yyVal = IL; - } - break; -case 257: - // line 2183 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {BoolLiteral BL = new BoolLiteral(); - BL.set_Bool(((Token)yyVals[0+yyTop]).String2Bool()); - yyVal = BL; - } - break; -case 258: - // line 2187 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - {CharLiteral CL = new CharLiteral(); - CL.set_Char(((Token)yyVals[0+yyTop]).CharInString()); - yyVal=CL; - } - break; -case 259: - // line 2192 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - StringLiteral ST = new StringLiteral(); - ST.set_String(((Token)yyVals[0+yyTop]).get_String()); - yyVal=ST; - } - break; -case 260: - // line 2197 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { LongLiteral LL = new LongLiteral(); - LL.set_Long(((Token)yyVals[0+yyTop]).String2Long()); - yyVal = LL; - } - break; -case 261: - // line 2201 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - FloatLiteral FL = new FloatLiteral(); - FL.set_Float(((Token)yyVals[0+yyTop]).String2Float()); - yyVal = FL; - } - break; -case 262: - // line 2206 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - DoubleLiteral DL = new DoubleLiteral(); - DL.set_Double(((Token)yyVals[0+yyTop]).String2Double()); - yyVal = DL; - } - break; -case 263: - // line 2212 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Null NN = new Null(); - yyVal=NN; - } - break; -case 264: - // line 2231 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 265: - // line 2235 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - } - break; -case 266: - // line 2239 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 267: - // line 2243 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary EQ = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - EqualOp EO = new EqualOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - EQ.set_Expr1(((Expr)yyVals[-2+yyTop])); - EQ.set_Expr2(((Expr)yyVals[0+yyTop])); - EQ.set_Operator(EO); - /*auskommentiert von Andreas Stadelmeier (a10023) EQ.setType(TypePlaceholder.fresh());*/ - yyVal=EQ; - } - break; -case 268: - // line 2253 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary NEQ = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - NotEqualOp NEO = new NotEqualOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - NEQ.set_Expr1(((Expr)yyVals[-2+yyTop])); - NEQ.set_Expr2(((Expr)yyVals[0+yyTop])); - NEQ.set_Operator(NEO); - /*auskommentiert von Andreas Stadelmeier (a10023) NEQ.setType(TypePlaceholder.fresh());*/ - yyVal=NEQ; - } - break; -case 269: - // line 2264 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 270: - // line 2268 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary LO = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - LessOp LOO = new LessOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - LO.set_Expr1(((Expr)yyVals[-2+yyTop])); - LO.set_Expr2(((Expr)yyVals[0+yyTop])); - LO.set_Operator(LOO); - /*auskommentiert von Andreas Stadelmeier (a10023) LO.setType(TypePlaceholder.fresh());*/ - yyVal=LO; - } - break; -case 271: - // line 2278 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary GO = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - GreaterOp GOO = new GreaterOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - GO.set_Expr1(((Expr)yyVals[-2+yyTop])); - GO.set_Expr2(((Expr)yyVals[0+yyTop])); - GO.set_Operator( GOO ); - /*auskommentiert von Andreas Stadelmeier (a10023) GO.setType(TypePlaceholder.fresh());*/ - yyVal=GO; - } - break; -case 272: - // line 2288 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary LE = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - LessEquOp LEO = new LessEquOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - LE.set_Expr1(((Expr)yyVals[-2+yyTop])); - LE.set_Expr2(((Expr)yyVals[0+yyTop])); - LE.set_Operator(LEO); - /*auskommentiert von Andreas Stadelmeier (a10023) LE.setType(TypePlaceholder.fresh());*/ - yyVal=LE; - } - break; -case 273: - // line 2298 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary GE = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - GreaterEquOp GEO = new GreaterEquOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - GE.set_Expr1(((Expr)yyVals[-2+yyTop])); - GE.set_Expr2(((Expr)yyVals[0+yyTop])); - GE.set_Operator(GEO); - /*auskommentiert von Andreas Stadelmeier (a10023) GE.setType(TypePlaceholder.fresh());*/ - yyVal=GE; - } - break; -case 274: - // line 2308 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - InstanceOf ISO=new InstanceOf(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - ISO.set_Expr(((Expr)yyVals[-2+yyTop])); - ISO.set_Type(((RefType)yyVals[0+yyTop])); - yyVal=ISO; - } - break; -case 275: - // line 2316 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 276: - // line 2321 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 277: - // line 2325 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary AD = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - PlusOp PO = new PlusOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - AD.set_Expr1(((Expr)yyVals[-2+yyTop])); - AD.set_Expr2(((Expr)yyVals[0+yyTop])); - AD.set_Operator(PO); - /*auskommentiert von Andreas Stadelmeier (a10023) AD.setType(TypePlaceholder.fresh());*/ - yyVal=AD; - } - break; -case 278: - // line 2335 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary MI = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - MinusOp MO = new MinusOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - MI.set_Expr1(((Expr)yyVals[-2+yyTop])); - MI.set_Expr2(((Expr)yyVals[0+yyTop])); - MI.set_Operator(MO); - /*auskommentiert von Andreas Stadelmeier (a10023) MI.setType(TypePlaceholder.fresh());*/ - yyVal=MI; - } - break; -case 279: - // line 2346 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - yyVal=((Expr)yyVals[0+yyTop]); - } - break; -case 280: - // line 2350 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary ML = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - TimesOp TO = new TimesOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - ML.set_Expr1(((Expr)yyVals[-2+yyTop])); - ML.set_Expr2(((Expr)yyVals[0+yyTop])); - ML.set_Operator(TO); - /*auskommentiert von Andreas Stadelmeier (a10023) ML.setType(TypePlaceholder.fresh());*/ - yyVal=ML; - } - break; -case 281: - // line 2360 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary DV = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - DivideOp DO = new DivideOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - DV.set_Expr1(((Expr)yyVals[-2+yyTop])); - DV.set_Expr2(((Expr)yyVals[0+yyTop])); - DV.set_Operator(DO); - /*auskommentiert von Andreas Stadelmeier (a10023) DV.setType(TypePlaceholder.fresh());*/ - yyVal = DV; - } - break; -case 282: - // line 2370 "./../src/de/dhbwstuttgart/parser/JavaParser.jay" - { - Binary MD = new Binary(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - ModuloOp MO = new ModuloOp(((Expr)yyVals[-2+yyTop]).getOffset(),((Expr)yyVals[-2+yyTop]).getVariableLength()); - MD.set_Expr1(((Expr)yyVals[-2+yyTop])); - MD.set_Expr2(((Expr)yyVals[0+yyTop])); - MD.set_Operator(MO); - /*auskommentiert von Andreas Stadelmeier (a10023) MD.setType(TypePlaceholder.fresh());*/ - yyVal =MD; - } - break; - // line 3057 "-" - } - yyTop -= yyLen[yyN]; - yyState = yyStates[yyTop]; - int yyM = yyLhs[yyN]; - if (yyState == 0 && yyM == 0) { -//t if (yydebug != null) yydebug.shift(0, yyFinal); - yyState = yyFinal; - if (yyToken < 0) { - yyToken = yyLex.advance() ? yyLex.token() : 0; -//t if (yydebug != null) -//t yydebug.lex(yyState, yyToken,yyname(yyToken), yyLex.value()); - } - if (yyToken == 0) { -//t if (yydebug != null) yydebug.accept(yyVal); - return yyVal; - } - continue yyLoop; - } - if ((yyN = yyGindex[yyM]) != 0 && (yyN += yyState) >= 0 - && yyN < yyTable.length && yyCheckInit.yyCheck[yyN] == yyState) - yyState = yyTable[yyN]; - else - yyState = yyDgoto[yyM]; -//t if (yydebug != null) yydebug.shift(yyStates[yyTop], yyState); - continue yyLoop; - } - } - } - - protected static final short yyLhs [] = { -1, - 0, 0, 0, 0, 0, 96, 27, 27, 26, 90, - 90, 28, 28, 103, 103, 24, 25, 25, 23, 1, - 1, 1, 1, 1, 1, 1, 1, 9, 9, 8, - 8, 2, 2, 2, 2, 109, 109, 109, 109, 109, - 109, 112, 112, 112, 7, 7, 38, 38, 29, 33, - 33, 3, 3, 34, 34, 16, 16, 39, 39, 39, - 39, 39, 39, 30, 4, 4, 32, 17, 17, 17, - 31, 110, 110, 110, 110, 111, 111, 5, 5, 18, - 18, 108, 104, 104, 10, 6, 20, 20, 11, 12, - 12, 12, 12, 12, 12, 14, 40, 40, 105, 105, - 106, 106, 106, 106, 46, 92, 95, 95, 91, 91, - 93, 93, 94, 94, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 37, 37, 19, 19, 41, - 42, 42, 48, 48, 107, 107, 107, 107, 36, 36, - 15, 15, 35, 21, 78, 78, 47, 47, 101, 101, - 22, 76, 44, 79, 79, 79, 79, 79, 79, 69, - 69, 45, 45, 77, 77, 77, 77, 84, 85, 81, - 82, 82, 82, 82, 82, 82, 82, 82, 67, 67, - 87, 75, 88, 88, 80, 80, 80, 66, 97, 97, - 70, 70, 70, 70, 70, 70, 86, 83, 65, 65, - 99, 43, 43, 49, 49, 68, 100, 98, 98, 98, - 98, 98, 98, 71, 72, 73, 74, 102, 102, 102, - 102, 89, 89, 64, 64, 55, 55, 55, 55, 55, - 53, 53, 53, 53, 52, 63, 63, 51, 51, 51, - 51, 54, 54, 62, 62, 50, 50, 50, 50, 50, - 50, 50, 50, 61, 61, 60, 60, 60, 59, 59, - 59, 59, 59, 59, 58, 57, 57, 57, 56, 56, - 56, 56, - }; - protected static final short yyLen [] = { 2, - 1, 2, 3, 2, 3, 3, 1, 2, 3, 1, - 2, 1, 1, 1, 1, 3, 3, 3, 1, 3, - 4, 4, 5, 4, 5, 5, 6, 1, 4, 1, - 4, 3, 4, 4, 5, 1, 4, 1, 3, 6, - 3, 1, 3, 3, 2, 3, 1, 2, 2, 2, - 3, 2, 3, 2, 3, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 2, 1, 3, 3, 1, 0, 3, 1, 1, 1, - 1, 2, 2, 3, 6, 2, 3, 1, 3, 3, - 2, 4, 2, 3, 4, 2, 2, 3, 3, 4, - 2, 3, 3, 4, 2, 1, 1, 3, 1, 3, - 1, 3, 1, 3, 3, 2, 3, 4, 3, 4, - 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, - 1, 2, 2, 2, 3, 1, 3, 1, 3, 1, - 1, 2, 1, 3, 4, 5, 4, 5, 1, 3, - 3, 4, 1, 1, 1, 1, 2, 1, 1, 3, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 5, 7, 5, - 9, 8, 8, 8, 7, 7, 7, 6, 1, 1, - 1, 2, 2, 3, 1, 1, 1, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 7, 5, 1, 3, - 1, 1, 1, 2, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 3, 4, 5, - 6, 4, 5, 1, 3, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, - 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, - 3, 3, - }; - protected static final short yyDefRed [] = { 0, - 62, 0, 63, 60, 59, 58, 0, 0, 0, 61, - 19, 0, 14, 15, 13, 12, 7, 0, 0, 153, - 0, 0, 0, 47, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 71, 0, - 0, 0, 0, 48, 11, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 6, 9, 0, 0, 0, 0, - 32, 0, 16, 0, 72, 0, 75, 137, 5, 0, - 0, 0, 0, 106, 107, 0, 49, 64, 67, 50, - 0, 0, 0, 0, 45, 0, 80, 0, 81, 0, - 0, 56, 68, 0, 0, 0, 154, 0, 0, 0, - 70, 0, 69, 22, 0, 0, 24, 0, 18, 0, - 54, 0, 52, 0, 65, 79, 78, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 77, 21, 0, 0, - 33, 0, 0, 0, 31, 0, 82, 0, 0, 0, - 113, 0, 0, 132, 0, 140, 96, 0, 134, 46, - 57, 0, 93, 91, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 26, 51, 29, - 53, 66, 0, 86, 0, 55, 43, 44, 73, 74, - 23, 0, 25, 35, 111, 0, 108, 0, 0, 0, - 0, 0, 0, 256, 260, 262, 261, 257, 263, 258, - 259, 0, 0, 0, 191, 97, 0, 0, 138, 0, - 0, 174, 0, 155, 0, 0, 248, 245, 0, 0, - 251, 0, 202, 203, 0, 0, 176, 164, 141, 156, - 167, 168, 165, 166, 175, 177, 201, 0, 0, 169, - 125, 151, 158, 0, 143, 0, 0, 89, 0, 0, - 0, 0, 149, 0, 161, 139, 0, 249, 0, 0, - 0, 0, 0, 240, 279, 0, 0, 269, 0, 0, - 0, 0, 0, 0, 0, 189, 170, 87, 236, 237, - 243, 244, 171, 190, 250, 99, 0, 119, 94, 90, - 0, 0, 0, 135, 0, 0, 84, 101, 0, 0, - 0, 27, 0, 0, 0, 193, 0, 0, 0, 0, - 0, 224, 225, 214, 0, 0, 0, 98, 142, 163, - 211, 0, 0, 226, 227, 192, 222, 223, 219, 220, - 221, 218, 0, 157, 0, 152, 114, 129, 120, 92, - 0, 0, 238, 239, 253, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 100, 126, 0, 0, 121, 95, 103, 102, - 0, 0, 112, 0, 0, 0, 194, 0, 159, 0, - 0, 0, 0, 215, 228, 0, 212, 216, 213, 0, - 199, 200, 144, 150, 0, 280, 281, 282, 0, 0, - 274, 272, 273, 270, 271, 0, 0, 0, 0, 0, - 0, 0, 130, 122, 104, 0, 0, 0, 0, 0, - 147, 0, 0, 145, 0, 0, 229, 0, 232, 0, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 178, - 0, 197, 196, 160, 148, 146, 180, 230, 0, 233, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 231, 187, 186, 0, 185, 0, 0, 0, 0, 0, - 179, 184, 183, 182, 0, 0, 0, 181, 0, 208, - 0, 207, - }; - protected static final short yyDgoto [] = { 12, - 13, 14, 61, 114, 115, 116, 52, 29, 34, 117, - 86, 87, 88, 89, 90, 91, 92, 93, 208, 95, - 209, 97, 15, 16, 31, 17, 18, 262, 53, 77, - 20, 80, 54, 62, 21, 254, 211, 23, 24, 212, - 147, 213, 388, 214, 215, 149, 245, 246, 216, 217, - 218, 219, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 221, 379, 222, - 279, 280, 281, 282, 227, 0, 228, 229, 230, 441, - 231, 232, 442, 233, 234, 443, 235, 236, 283, 25, - 74, 75, 186, 142, 76, 26, 284, 333, 322, 238, - 380, 285, 27, 101, 102, 167, 240, 103, 0, 66, - 39, 67, - }; - protected static final short yySindex [] = { 411, - 0, -224, 0, 0, 0, 0, -208, -208, -184, 0, - 0, 0, 0, 0, 0, 0, 0, 233, 165, 0, - 73, -208, 727, 0, 993, 233, 0, 110, -96, 332, - 117, 141, 135, -87, 0, 993, -66, -46, 0, 154, - 411, -224, -184, 0, 0, 233, 993, -45, -208, -208, - -50, 0, -92, -11, 0, 0, -42, -45, -208, 681, - 0, 9, 0, -200, 0, 168, 0, 0, 0, -96, - -87, 993, 20, 0, 0, 187, 0, 0, 0, 0, - 163, 21, 250, -45, 0, 33, 0, 163, 0, 52, - 2325, 0, 0, 271, 261, 309, 0, 336, 81, 2354, - 0, 272, 0, 0, -11, -208, 0, 0, 0, 206, - 0, 250, 0, 2328, 0, 0, 0, 33, 348, 21, - 2354, -208, 0, -208, -208, -46, 0, 0, -92, -11, - 0, 9, -208, -45, 0, 1960, 0, 250, 52, -34, - 0, 209, 21, 0, 81, 0, 0, -208, 0, 0, - 0, 136, 0, 0, 906, -29, 250, 52, 284, 359, - 21, 143, 52, 81, 272, 2029, 0, 0, 0, 0, - 0, 0, 21, 0, 164, 0, 0, 0, 0, 0, - 0, -11, 0, 0, 0, 394, 0, 424, 426, 409, - 431, 432, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 923, 923, 0, 0, -22, 433, 0, 279, - 136, 0, 2070, 0, 422, 162, 0, 0, 457, 105, - 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, - 0, 0, 0, 136, 0, 72, -45, 0, 52, 52, - 448, 309, 0, 471, 0, 0, -208, 0, 923, 923, - 923, 30, 105, 0, 0, 406, 39, 0, 34, 131, - 478, 427, 404, 222, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, - 52, 21, 21, 0, 52, 285, 0, 0, 2104, 2139, - 59, 0, -208, 449, 906, 0, 488, 543, 590, 906, - 30, 0, 0, 0, 444, 619, 433, 0, 0, 0, - 0, 636, 248, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 906, 0, 253, 0, 0, 0, 0, 0, - -208, 520, 0, 0, 0, 923, 923, 923, 923, 923, - -208, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 0, 0, 52, 52, 0, 0, 0, 0, - 2171, 906, 0, 492, 506, 525, 0, 510, 0, 454, - 513, 456, 532, 0, 0, 460, 0, 0, 0, 534, - 0, 0, 0, 0, 680, 0, 0, 0, 406, 406, - 0, 0, 0, 0, 0, 34, 34, 131, 478, 427, - 404, 222, 0, 0, 0, 516, 720, 518, 737, 2211, - 0, 906, 519, 0, 523, 2250, 0, 764, 0, 482, - 0, 2250, 546, 781, 833, 544, 553, 562, 0, 0, - 338, 0, 0, 0, 0, 0, 0, 0, 514, 0, - 0, 2250, 2250, 566, 2250, 567, 860, 906, 906, 2250, - 0, 0, 0, 2250, 0, 2250, 2250, 568, 569, 580, - 0, 0, 0, 0, 2250, 2211, 2211, 0, 355, 0, - 2211, 0, - }; - protected static final short yyRindex [] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1054, 0, - 2299, 0, 0, 0, 625, 0, 0, -93, 0, 0, - 0, 0, -77, 0, 0, 628, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 632, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, - 0, 637, 331, 0, 0, 0, 0, 0, 0, 0, - 2358, 0, -12, 0, 0, 0, 0, 0, 0, -15, - 0, 0, 0, 0, 0, 324, 0, -32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 333, 0, 0, - 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 366, 24, 0, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, - 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -3, 0, 0, 0, 0, 0, 577, 0, 303, - 0, 0, 0, 0, 0, 0, 0, 0, 1192, 0, - 0, 0, 0, 0, -24, -14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 50, - 0, 583, 0, 51, 0, 0, 0, 0, 0, 0, - 0, 554, 1971, 0, 0, 1607, 1644, 0, 1754, 1681, - 1201, 1129, 1246, 1305, 1331, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1368, 0, 0, 0, 0, 0, 584, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 100, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1880, 1917, - 0, 0, 0, 0, 0, 1773, 1809, 1718, 1479, 1407, - 1521, 1584, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1841, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, - }; - protected static final short yyGindex [] = { 598, - 0, 0, -8, 0, 530, 0, 646, 611, 613, 0, - 14, 0, 31, 0, 2551, 0, 563, 0, 4, 84, - 47, -138, 102, 0, 0, 191, 631, 1, 588, -124, - -44, 267, 19, 592, 18, 0, 80, 232, 44, -68, - 0, -145, 0, 0, 0, 1498, 326, -51, 0, 0, - 0, 0, -55, 0, 386, 97, 0, 107, 94, 307, - 308, 306, 310, 311, 0, 0, 339, 0, -126, 0, - -36, 3, 67, 86, 0, 0, -238, -209, 2226, -75, - 0, 0, 0, 0, 0, 0, 0, 0, 342, 362, - -59, 536, 0, 0, 624, 0, 104, 0, 0, 0, - -243, 174, 185, 0, 585, 512, 517, 0, 0, 0, - 0, 560, - }; - protected static final short yyTable [] = { 109, - 19, 243, 250, 319, 78, 79, 242, 30, 32, 84, - 249, 286, 137, 13, 79, 206, 64, 243, 314, 146, - 299, 332, 19, 253, 141, 19, 51, 13, 278, 30, - 51, 161, 106, 19, 204, 60, 19, 161, 19, 19, - 161, 19, 19, 131, 205, 28, 161, 19, 161, 19, - 19, 19, 122, 123, 94, 161, 19, 19, 13, 19, - 19, 79, 131, 307, 123, 382, 44, 124, 243, 316, - 19, 105, 386, 118, 85, 37, 28, 79, 19, 22, - 220, 349, 116, 350, 125, 133, 19, 19, 130, 319, - 119, 19, 11, 354, 94, 355, 127, 96, 140, 223, - 19, 41, 159, 78, 287, 334, 19, 131, 115, 105, - 220, 51, 336, 162, 19, 335, 33, 65, 19, 372, - 22, 19, 19, 184, 19, 19, 19, 118, 123, 223, - 99, 60, 342, 19, 162, 124, 210, 96, 224, 120, - 19, 177, 178, 44, 119, 96, 116, 182, 19, 133, - 185, 430, 98, 117, 371, 315, 19, 220, 128, 118, - 127, 319, 19, 40, 44, 145, 210, 296, 224, 48, - 99, 49, 115, 105, 30, 56, 223, 375, 376, 164, - 59, 439, 160, 383, 449, 50, 57, 337, 30, 50, - 28, 252, 98, 120, 58, 389, 243, 173, 256, 124, - 175, 98, 225, 311, 311, 179, 1, 19, 35, 45, - 37, 126, 78, 210, 317, 224, 394, 117, 3, 244, - 45, 226, 128, 118, 38, 4, 5, 6, 251, 127, - 134, 45, 225, 81, 63, 244, 35, 439, 439, 237, - 82, 293, 439, 220, 220, 416, 68, 418, 135, 134, - 83, 226, 247, 387, 11, 73, 45, 19, 108, 311, - 311, 311, 223, 223, 250, 250, 202, 170, 13, 237, - 248, 202, 249, 249, 327, 328, 329, 330, 202, 225, - 19, 331, 100, 243, 243, 136, 244, 133, 19, 140, - 433, 121, 436, 244, 244, 444, 78, 19, 226, 210, - 210, 224, 224, 19, 19, 19, 351, 454, 456, 239, - 19, 19, 19, 19, 152, 220, 237, 19, 316, 154, - 373, 138, 100, 143, 37, 111, 42, 152, 152, 153, - 468, 469, 470, 112, 223, 19, 352, 353, 38, 239, - 148, 19, 289, 368, 42, 121, 311, 311, 311, 311, - 311, 19, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 217, 220, 225, 225, 138, 401, 155, - 220, 210, 169, 224, 109, 156, 220, 37, 16, 36, - 110, 157, 88, 223, 226, 226, 239, 47, 176, 223, - 55, 17, 109, 76, 166, 223, 220, 220, 110, 220, - 479, 480, 237, 237, 220, 482, 174, 72, 220, 161, - 220, 220, 324, 325, 244, 223, 223, 290, 223, 220, - 220, 220, 224, 223, 161, 220, 161, 223, 224, 223, - 223, 303, 356, 292, 224, 357, 255, 225, 223, 223, - 223, 261, 348, 11, 223, 399, 400, 346, 207, 406, - 407, 259, 347, 260, 224, 224, 226, 224, 402, 403, - 404, 405, 224, 304, 301, 305, 224, 306, 224, 224, - 308, 309, 239, 239, 237, 310, 152, 224, 224, 224, - 320, 261, 363, 224, 384, 335, 225, 335, 207, 1, - 321, 259, 225, 260, 423, 2, 425, 422, 225, 422, - 427, 3, 323, 422, 326, 226, 340, 374, 4, 5, - 6, 226, 8, 9, 341, 358, 10, 226, 225, 225, - 359, 225, 450, 237, 261, 422, 225, 360, 361, 237, - 225, 207, 225, 225, 259, 237, 260, 226, 226, 362, - 226, 225, 225, 225, 239, 226, 377, 225, 390, 226, - 417, 226, 226, 202, 461, 237, 237, 422, 237, 395, - 226, 226, 226, 237, 419, 420, 226, 237, 421, 237, - 237, 424, 426, 428, 431, 261, 434, 445, 237, 237, - 237, 446, 207, 378, 237, 259, 452, 260, 312, 313, - 242, 242, 458, 239, 242, 242, 242, 242, 242, 239, - 242, 459, 457, 76, 460, 239, 464, 466, 475, 476, - 242, 242, 242, 242, 217, 242, 217, 217, 217, 217, - 477, 481, 261, 217, 1, 239, 239, 2, 239, 207, - 381, 4, 259, 239, 260, 173, 3, 239, 69, 239, - 239, 88, 172, 172, 343, 344, 345, 242, 239, 239, - 239, 261, 70, 151, 239, 71, 46, 129, 207, 385, - 393, 259, 132, 260, 408, 410, 409, 1, 261, 187, - 411, 391, 412, 2, 392, 207, 297, 242, 259, 3, - 260, 110, 300, 257, 165, 180, 4, 5, 6, 7, - 8, 9, 0, 0, 10, 258, 0, 0, 104, 107, - 0, 194, 195, 196, 197, 198, 199, 200, 201, 11, - 0, 11, 261, 0, 0, 128, 203, 204, 0, 207, - 429, 0, 259, 257, 260, 0, 0, 0, 0, 0, - 0, 396, 397, 398, 0, 258, 0, 0, 0, 0, - 84, 194, 195, 196, 197, 198, 199, 200, 201, 11, - 168, 0, 261, 0, 0, 0, 203, 204, 136, 207, - 432, 0, 259, 0, 260, 0, 257, 0, 0, 261, - 0, 0, 0, 0, 181, 183, 207, 0, 258, 259, - 0, 260, 0, 0, 194, 195, 196, 197, 198, 199, - 200, 201, 11, 0, 0, 435, 261, 0, 0, 203, - 204, 0, 0, 207, 448, 113, 259, 0, 260, 0, - 0, 0, 0, 261, 0, 0, 0, 257, 0, 0, - 207, 453, 0, 259, 0, 260, 242, 302, 0, 258, - 0, 0, 0, 0, 0, 194, 195, 196, 197, 198, - 199, 200, 201, 11, 0, 0, 0, 0, 0, 0, - 203, 204, 0, 0, 0, 242, 242, 242, 242, 242, - 242, 242, 242, 0, 257, 261, 0, 217, 217, 217, - 217, 0, 207, 455, 217, 259, 258, 260, 0, 0, - 0, 0, 194, 195, 196, 197, 198, 199, 200, 201, - 11, 0, 261, 257, 0, 0, 0, 203, 204, 207, - 467, 0, 259, 0, 260, 258, 0, 0, 0, 0, - 257, 194, 195, 196, 197, 198, 199, 200, 201, 11, - 0, 0, 258, 0, 0, 0, 203, 204, 194, 195, - 196, 197, 198, 199, 200, 201, 11, 1, 261, 0, - 0, 0, 0, 203, 204, 207, 0, 0, 259, 3, - 260, 0, 0, 0, 257, 261, 4, 5, 6, 0, - 0, 0, 207, 0, 10, 259, 258, 260, 0, 0, - 0, 82, 194, 195, 196, 197, 198, 199, 200, 201, - 11, 112, 0, 1, 0, 0, 0, 203, 204, 42, - 0, 0, 0, 0, 257, 3, 0, 0, 0, 0, - 0, 0, 4, 5, 6, 0, 258, 43, 0, 0, - 10, 257, 194, 195, 196, 197, 198, 199, 200, 201, - 11, 0, 0, 258, 0, 0, 0, 203, 204, 194, - 195, 196, 197, 198, 199, 200, 201, 11, 257, 0, - 0, 0, 0, 0, 203, 204, 0, 0, 0, 0, - 258, 0, 0, 0, 0, 257, 194, 195, 196, 197, - 198, 199, 200, 201, 11, 0, 0, 258, 0, 0, - 0, 203, 204, 194, 195, 196, 197, 198, 199, 200, - 201, 11, 0, 0, 0, 0, 0, 0, 203, 204, - 76, 76, 0, 76, 76, 76, 76, 76, 76, 0, - 76, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 76, 0, 0, 76, 0, 0, 0, 258, - 0, 0, 0, 0, 0, 194, 195, 196, 197, 198, - 199, 200, 201, 11, 257, 0, 0, 0, 0, 0, - 203, 204, 0, 0, 76, 0, 258, 76, 0, 0, - 0, 0, 194, 195, 196, 197, 198, 199, 200, 201, - 11, 0, 0, 0, 0, 246, 246, 203, 204, 246, - 246, 246, 246, 246, 246, 246, 76, 76, 0, 0, - 257, 0, 0, 0, 0, 0, 0, 246, 246, 0, - 246, 0, 258, 0, 0, 0, 0, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 11, 0, 0, 258, - 0, 0, 0, 203, 204, 194, 195, 196, 197, 198, - 199, 200, 201, 11, 0, 0, 0, 0, 241, 241, - 203, 204, 241, 241, 241, 241, 241, 254, 241, 0, - 0, 254, 254, 254, 254, 254, 254, 254, 0, 1, - 241, 241, 246, 241, 0, 2, 0, 0, 0, 254, - 254, 3, 254, 0, 0, 0, 0, 0, 4, 5, - 6, 0, 0, 9, 0, 0, 10, 0, 0, 0, - 0, 0, 234, 234, 0, 241, 234, 234, 234, 234, - 234, 234, 234, 0, 254, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 234, 234, 0, 234, 0, 0, - 76, 0, 0, 0, 0, 241, 76, 0, 0, 0, - 0, 0, 76, 0, 254, 0, 76, 0, 0, 76, - 76, 76, 76, 76, 76, 76, 0, 76, 0, 234, - 0, 209, 209, 0, 0, 209, 209, 209, 209, 209, - 209, 209, 0, 0, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 209, 209, 0, 209, 198, 198, 0, - 0, 198, 198, 198, 198, 198, 198, 198, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, - 198, 0, 198, 0, 0, 0, 0, 0, 209, 0, - 0, 246, 0, 0, 242, 242, 0, 0, 242, 242, - 242, 242, 242, 0, 242, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 198, 0, 242, 242, 209, 242, - 246, 246, 246, 246, 246, 246, 246, 246, 0, 0, - 0, 0, 0, 247, 247, 0, 0, 247, 247, 247, - 247, 247, 247, 247, 198, 0, 0, 0, 0, 0, - 0, 242, 0, 0, 241, 247, 247, 0, 247, 0, - 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 242, 0, 241, 241, 241, 241, 241, 241, 241, - 241, 0, 254, 254, 254, 254, 254, 254, 254, 254, - 0, 0, 0, 0, 0, 255, 0, 0, 234, 255, - 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, - 247, 0, 0, 0, 0, 0, 0, 255, 255, 0, - 255, 0, 0, 0, 0, 0, 0, 234, 234, 234, - 234, 234, 234, 234, 234, 0, 0, 235, 235, 0, - 0, 235, 235, 235, 235, 235, 235, 235, 0, 0, - 0, 0, 255, 0, 0, 0, 0, 209, 0, 235, - 235, 0, 235, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 255, 198, 0, 0, 209, 209, 209, 209, - 209, 0, 209, 209, 235, 0, 0, 0, 0, 0, - 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, - 210, 0, 198, 198, 198, 198, 241, 198, 198, 198, - 242, 0, 210, 210, 276, 210, 0, 276, 0, 276, - 276, 276, 276, 0, 0, 288, 0, 0, 0, 0, - 294, 0, 0, 0, 0, 276, 276, 0, 276, 242, - 242, 242, 242, 242, 242, 242, 242, 210, 0, 247, - 275, 275, 0, 0, 275, 275, 0, 275, 0, 275, - 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 276, 0, 275, 275, 0, 275, 0, 210, 247, 247, - 247, 247, 247, 247, 247, 247, 0, 264, 264, 0, - 0, 264, 264, 264, 264, 264, 264, 264, 0, 0, - 276, 0, 0, 0, 0, 0, 0, 275, 0, 264, - 264, 0, 264, 0, 0, 0, 338, 339, 0, 0, - 0, 255, 0, 0, 265, 265, 0, 0, 265, 265, - 265, 265, 265, 265, 265, 0, 0, 275, 0, 0, - 0, 0, 0, 0, 264, 0, 265, 265, 0, 265, - 255, 255, 255, 255, 255, 255, 255, 255, 364, 0, - 266, 266, 367, 235, 266, 266, 266, 266, 266, 266, - 266, 0, 0, 0, 264, 0, 0, 0, 0, 267, - 267, 265, 266, 267, 267, 267, 267, 267, 267, 267, - 0, 0, 235, 235, 235, 235, 235, 235, 235, 235, - 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 0, 0, 0, 268, 268, 266, 0, 268, - 268, 268, 268, 268, 268, 268, 210, 0, 0, 0, - 0, 0, 413, 414, 0, 0, 267, 268, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 266, 0, 276, - 164, 0, 0, 0, 0, 210, 210, 210, 210, 210, - 0, 210, 210, 0, 0, 0, 267, 0, 0, 164, - 0, 0, 268, 0, 0, 0, 0, 0, 276, 276, - 276, 276, 276, 276, 276, 276, 275, 277, 0, 0, - 277, 0, 277, 277, 277, 277, 0, 0, 0, 0, - 0, 0, 268, 0, 0, 0, 0, 0, 277, 277, - 0, 277, 0, 0, 0, 275, 275, 275, 275, 275, - 275, 275, 275, 264, 278, 0, 0, 278, 0, 278, - 278, 278, 278, 164, 0, 164, 0, 0, 0, 0, - 0, 0, 0, 277, 0, 278, 278, 0, 278, 0, - 0, 0, 0, 264, 264, 0, 264, 264, 264, 264, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 0, 0, 277, 0, 0, 0, 252, 252, 0, - 278, 252, 252, 252, 252, 252, 252, 252, 205, 0, - 265, 265, 0, 265, 265, 265, 265, 0, 0, 252, - 252, 0, 252, 0, 0, 0, 0, 0, 0, 0, - 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 266, 0, 0, 266, 266, - 266, 266, 266, 0, 252, 0, 0, 0, 207, 0, - 0, 0, 0, 0, 267, 0, 0, 267, 267, 267, - 267, 267, 136, 0, 206, 0, 0, 205, 0, 0, - 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 207, - 268, 164, 164, 268, 268, 268, 268, 268, 0, 0, - 0, 0, 0, 164, 0, 164, 0, 164, 205, 0, - 0, 0, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 0, 207, 0, 0, 0, 0, 164, 164, - 0, 136, 277, 298, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, - 0, 277, 277, 277, 277, 277, 277, 277, 277, 278, - 0, 0, 136, 0, 318, 0, 0, 205, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 207, 0, 0, 0, 0, 0, 0, 0, 278, 278, - 278, 278, 278, 278, 278, 278, 136, 0, 369, 205, - 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 252, 191, 0, 192, 0, 0, 0, - 207, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 136, 0, 370, 0, 0, 0, 203, 204, 205, - 0, 0, 252, 252, 252, 252, 252, 252, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 0, 0, 136, 0, 415, 0, 0, 0, 188, - 189, 0, 0, 0, 0, 0, 0, 0, 205, 0, - 0, 190, 0, 191, 0, 192, 0, 0, 0, 0, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 0, 0, 0, 136, 0, 0, 203, 204, 0, 0, - 188, 189, 136, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 0, 191, 0, 192, 0, 0, 0, - 136, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 0, 136, 0, 188, 189, 0, 203, 204, 0, - 0, 0, 0, 0, 84, 0, 190, 84, 191, 0, - 192, 0, 0, 0, 0, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 0, 0, 0, 0, 188, - 189, 203, 204, 84, 0, 0, 0, 61, 0, 0, - 0, 190, 0, 191, 0, 192, 0, 0, 0, 0, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 0, 188, 189, 0, 0, 0, 203, 204, 0, 150, - 0, 0, 171, 190, 0, 191, 0, 192, 0, 0, - 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 0, 0, 0, 0, 0, 0, 203, 204, - 0, 188, 437, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 0, 191, 0, 192, 0, 0, - 0, 0, 438, 194, 195, 196, 197, 198, 199, 200, - 201, 11, 0, 0, 0, 0, 0, 0, 203, 204, - 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 0, 191, 0, 192, 0, 0, 0, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 11, 0, 0, 0, 0, 136, 0, 203, 204, 0, - 0, 136, 0, 0, 0, 0, 0, 136, 0, 0, - 0, 0, 0, 0, 136, 136, 136, 136, 136, 136, - 0, 1, 136, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 3, 0, 0, 136, - 4, 5, 6, 4, 5, 6, 0, 0, 81, 0, - 1, 10, 0, 0, 61, 82, 0, 0, 82, 0, - 0, 0, 3, 0, 0, 83, 61, 0, 112, 4, - 5, 6, 139, 61, 61, 61, 144, 10, 0, 0, - 0, 61, 0, 0, 161, 440, 0, 0, 61, 158, - 163, 447, 0, 0, 112, 0, 0, 451, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, - 158, 163, 0, 0, 0, 0, 0, 462, 463, 0, - 465, 0, 0, 0, 0, 471, 0, 0, 0, 472, - 0, 473, 474, 249, 0, 250, 0, 0, 0, 0, - 478, 440, 447, 0, 0, 0, 471, 0, 0, 0, - 0, 291, 0, 0, 295, 0, 0, 0, 0, 0, - 0, 0, 0, 250, 0, 295, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 365, 366, - }; - protected short yyCheck[] = new short[2845]; -} -class yyCheck0 { - protected static final short yyCheck0 [] = { 42, - 0, 140, 46, 213, 49, 50, 41, 7, 8, 60, - 46, 41, 81, 46, 59, 59, 63, 156, 41, 88, - 166, 61, 22, 148, 84, 46, 123, 60, 155, 123, - 123, 44, 44, 46, 59, 123, 40, 41, 38, 60, - 44, 41, 46, 59, 59, 123, 59, 60, 61, 49, - 50, 51, 44, 62, 51, 59, 60, 61, 91, 59, - 60, 106, 71, 190, 59, 309, 23, 268, 207, 40, - 91, 53, 316, 60, 125, 46, 301, 122, 91, 0, - 136, 43, 59, 45, 285, 59, 86, 91, 70, 299, - 60, 91, 301, 60, 91, 62, 59, 51, 40, 136, - 100, 22, 99, 148, 156, 244, 106, 123, 59, 59, - 166, 123, 41, 100, 114, 44, 301, 38, 118, 61, - 41, 121, 122, 132, 124, 125, 126, 114, 123, 166, - 51, 123, 257, 133, 121, 59, 136, 91, 136, 60, - 140, 124, 125, 100, 114, 99, 123, 129, 148, 123, - 133, 395, 51, 59, 300, 207, 156, 213, 59, 59, - 123, 371, 162, 91, 121, 86, 166, 164, 166, 60, - 91, 268, 123, 123, 268, 59, 213, 304, 305, 100, - 268, 420, 99, 310, 428, 282, 46, 247, 282, 282, - 268, 145, 91, 114, 60, 322, 335, 118, 152, 123, - 121, 100, 136, 203, 204, 126, 257, 207, 18, 25, - 46, 44, 257, 213, 211, 213, 341, 123, 269, 140, - 36, 136, 123, 123, 60, 276, 277, 278, 145, 62, - 44, 47, 166, 284, 301, 156, 46, 476, 477, 136, - 291, 162, 481, 299, 300, 372, 93, 374, 62, 44, - 301, 166, 44, 322, 301, 301, 72, 257, 301, 259, - 260, 261, 299, 300, 308, 309, 301, 62, 301, 166, - 62, 301, 308, 309, 314, 315, 316, 317, 301, 213, - 301, 321, 51, 308, 309, 123, 207, 268, 301, 40, - 417, 60, 419, 308, 309, 422, 341, 301, 213, 299, - 300, 299, 300, 303, 308, 309, 273, 434, 435, 136, - 314, 315, 316, 317, 44, 371, 213, 321, 40, 59, - 303, 301, 91, 291, 46, 59, 44, 44, 44, 59, - 457, 458, 459, 301, 371, 335, 303, 304, 60, 166, - 289, 341, 59, 59, 62, 114, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 61, 420, 299, 300, 44, 351, 61, - 426, 371, 106, 371, 44, 40, 432, 46, 46, 18, - 44, 301, 59, 420, 299, 300, 213, 26, 122, 426, - 59, 59, 62, 91, 123, 432, 452, 453, 62, 455, - 476, 477, 299, 300, 460, 481, 59, 46, 464, 44, - 466, 467, 308, 309, 335, 452, 453, 59, 455, 475, - 476, 477, 420, 460, 59, 481, 61, 464, 426, 466, - 467, 38, 302, 291, 432, 305, 301, 371, 475, 476, - 477, 33, 37, 301, 481, 349, 350, 42, 40, 356, - 357, 43, 47, 45, 452, 453, 371, 455, 352, 353, - 354, 355, 460, 40, 301, 40, 464, 59, 466, 467, - 40, 40, 299, 300, 371, 40, 44, 475, 476, 477, - 59, 33, 41, 481, 41, 44, 420, 44, 40, 257, - 329, 43, 426, 45, 41, 263, 41, 44, 432, 44, - 41, 269, 46, 44, 59, 420, 59, 59, 276, 277, - 278, 426, 280, 281, 44, 38, 284, 432, 452, 453, - 94, 455, 41, 420, 33, 44, 460, 124, 307, 426, - 464, 40, 466, 467, 43, 432, 45, 452, 453, 306, - 455, 475, 476, 477, 371, 460, 59, 481, 301, 464, - 59, 466, 467, 301, 41, 452, 453, 44, 455, 40, - 475, 476, 477, 460, 59, 41, 481, 464, 59, 466, - 467, 59, 41, 40, 59, 33, 59, 59, 475, 476, - 477, 59, 40, 41, 481, 43, 41, 45, 203, 204, - 37, 38, 40, 420, 41, 42, 43, 44, 45, 426, - 47, 40, 59, 301, 267, 432, 41, 41, 41, 41, - 308, 309, 59, 60, 61, 62, 314, 315, 316, 317, - 41, 267, 33, 321, 0, 452, 453, 0, 455, 40, - 41, 0, 43, 460, 45, 59, 0, 464, 41, 466, - 467, 59, 59, 114, 259, 260, 261, 94, 475, 476, - 477, 33, 42, 91, 481, 43, 26, 70, 40, 41, - 335, 43, 71, 45, 358, 360, 359, 257, 33, 134, - 361, 333, 362, 263, 333, 40, 165, 124, 43, 269, - 45, 58, 166, 275, 100, 126, 276, 277, 278, 279, - 280, 281, -1, -1, 284, 287, -1, -1, 53, 54, - -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, 301, 33, -1, -1, 70, 308, 309, -1, 40, - 41, -1, 43, 275, 45, -1, -1, -1, -1, -1, - -1, 346, 347, 348, -1, 287, -1, -1, -1, -1, - 60, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 105, -1, 33, -1, -1, -1, 308, 309, 123, 40, - 41, -1, 43, -1, 45, -1, 275, -1, -1, 33, - -1, -1, -1, -1, 129, 130, 40, -1, 287, 43, - -1, 45, -1, -1, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, -1, 59, 33, -1, -1, 308, - 309, -1, -1, 40, 41, 125, 43, -1, 45, -1, - -1, -1, -1, 33, -1, -1, -1, 275, -1, -1, - 40, 41, -1, 43, -1, 45, 273, 182, -1, 287, - -1, -1, -1, -1, -1, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, -1, -1, -1, -1, -1, - 308, 309, -1, -1, -1, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 275, 33, -1, 314, 315, 316, - 317, -1, 40, 41, 321, 43, 287, 45, -1, -1, - -1, -1, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, 33, 275, -1, -1, -1, 308, 309, 40, - 41, -1, 43, -1, 45, 287, -1, -1, -1, -1, - 275, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, -1, 287, -1, -1, -1, 308, 309, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 257, 33, -1, - -1, -1, -1, 308, 309, 40, -1, -1, 43, 269, - 45, -1, -1, -1, 275, 33, 276, 277, 278, -1, - -1, -1, 40, -1, 284, 43, 287, 45, -1, -1, - -1, 291, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 301, -1, 257, -1, -1, -1, 308, 309, 263, - -1, -1, -1, -1, 275, 269, -1, -1, -1, -1, - }; -} -class yyCheck1 { - protected static final short yyCheck1 [] = { -1, - -1, 276, 277, 278, -1, 287, 281, -1, -1, 284, - 275, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, -1, 287, -1, -1, -1, 308, 309, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 275, -1, -1, - -1, -1, -1, 308, 309, -1, -1, -1, -1, 287, - -1, -1, -1, -1, 275, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, -1, 287, -1, -1, -1, - 308, 309, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, -1, -1, -1, -1, -1, 308, 309, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, - -1, 59, -1, -1, 62, -1, -1, -1, 287, -1, - -1, -1, -1, -1, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 275, -1, -1, -1, -1, -1, 308, - 309, -1, -1, 91, -1, 287, 94, -1, -1, -1, - -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, -1, -1, -1, 37, 38, 308, 309, 41, 42, - 43, 44, 45, 46, 47, 123, 124, -1, -1, 275, - -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, - -1, 287, -1, -1, -1, -1, -1, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, -1, 287, -1, - -1, -1, 308, 309, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, -1, -1, -1, 37, 38, 308, - 309, 41, 42, 43, 44, 45, 37, 47, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, 257, 59, - 60, 124, 62, -1, 263, -1, -1, -1, 59, 60, - 269, 62, -1, -1, -1, -1, -1, 276, 277, 278, - -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, - -1, 37, 38, -1, 94, 41, 42, 43, 44, 45, - 46, 47, -1, 94, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, 60, -1, 62, -1, -1, 257, - -1, -1, -1, -1, 124, 263, -1, -1, -1, -1, - -1, 269, -1, 124, -1, 273, -1, -1, 276, 277, - 278, 279, 280, 281, 282, -1, 284, -1, 94, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 59, 60, -1, 62, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, - -1, 62, -1, -1, -1, -1, -1, 94, -1, -1, - 273, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 94, -1, 59, 60, 124, 62, 302, - 303, 304, 305, 306, 307, 308, 309, -1, -1, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 46, 47, 124, -1, -1, -1, -1, -1, -1, - 94, -1, -1, 273, 59, 60, -1, 62, -1, -1, - -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, -1, 302, 303, 304, 305, 306, 307, 308, 309, - -1, 302, 303, 304, 305, 306, 307, 308, 309, -1, - -1, -1, -1, -1, 37, -1, -1, 273, 41, 42, - 43, 44, 45, 46, 47, -1, -1, -1, -1, 124, - -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, - -1, -1, -1, -1, -1, -1, 302, 303, 304, 305, - 306, 307, 308, 309, -1, -1, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, 94, -1, -1, -1, -1, 273, -1, 59, 60, - -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 273, -1, -1, 302, 303, 304, 305, 306, - -1, 308, 309, 94, -1, -1, -1, -1, -1, 37, - 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, - -1, 302, 303, 304, 305, 139, 307, 308, 309, 273, - -1, 59, 60, 38, 62, -1, 41, -1, 43, 44, - 45, 46, -1, -1, 158, -1, -1, -1, -1, 163, - -1, -1, -1, -1, 59, 60, -1, 62, 302, 303, - 304, 305, 306, 307, 308, 309, 94, -1, 273, 37, - 38, -1, -1, 41, 42, -1, 44, -1, 46, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, - -1, 59, 60, -1, 62, -1, 124, 302, 303, 304, - 305, 306, 307, 308, 309, -1, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, 124, - -1, -1, -1, -1, -1, -1, 94, -1, 59, 60, - -1, 62, -1, -1, -1, 249, 250, -1, -1, -1, - 273, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, 124, -1, -1, -1, - -1, -1, -1, 94, -1, 59, 60, -1, 62, 302, - 303, 304, 305, 306, 307, 308, 309, 291, -1, 37, - 38, 295, 273, 41, 42, 43, 44, 45, 46, 47, - -1, -1, -1, 124, -1, -1, -1, -1, 37, 38, - 94, 59, 41, 42, 43, 44, 45, 46, 47, -1, - -1, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, -1, -1, -1, 37, 38, 94, -1, 41, 42, - 43, 44, 45, 46, 47, 273, -1, -1, -1, -1, - -1, 365, 366, -1, -1, 94, 59, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, -1, 273, 40, - -1, -1, -1, -1, 302, 303, 304, 305, 306, -1, - 308, 309, -1, -1, -1, 124, -1, -1, 59, -1, - -1, 94, -1, -1, -1, -1, -1, 302, 303, 304, - 305, 306, 307, 308, 309, 273, 38, -1, -1, 41, - -1, 43, 44, 45, 46, -1, -1, -1, -1, -1, - -1, 124, -1, -1, -1, -1, -1, 59, 60, -1, - 62, -1, -1, -1, 302, 303, 304, 305, 306, 307, - 308, 309, 273, 38, -1, -1, 41, -1, 43, 44, - 45, 46, 123, -1, 125, -1, -1, -1, -1, -1, - -1, -1, 94, -1, 59, 60, -1, 62, -1, -1, - -1, -1, 303, 304, -1, 306, 307, 308, 309, 273, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - }; -} -class yyCheck2 { - protected static final short yyCheck2 [] = { -1, - -1, 124, -1, -1, -1, 37, 38, -1, 94, 41, - 42, 43, 44, 45, 46, 47, 59, -1, 303, 304, - -1, 306, 307, 308, 309, -1, -1, 59, 60, -1, - 62, -1, -1, -1, -1, -1, -1, -1, 124, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 302, -1, -1, 305, 306, 307, 308, - 309, -1, 94, -1, -1, -1, 40, -1, -1, -1, - -1, -1, 302, -1, -1, 305, 306, 307, 308, 309, - 123, -1, 125, -1, -1, 59, -1, -1, -1, -1, - -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 267, -1, 40, 302, 271, - 272, 305, 306, 307, 308, 309, -1, -1, -1, -1, - -1, 283, -1, 285, -1, 287, 59, -1, -1, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, 40, -1, -1, -1, -1, 308, 309, -1, 123, - 273, 125, -1, -1, -1, -1, -1, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, -1, 302, - 303, 304, 305, 306, 307, 308, 309, 273, -1, -1, - 123, -1, 125, -1, -1, 59, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - -1, -1, -1, -1, -1, -1, 302, 303, 304, 305, - 306, 307, 308, 309, 123, -1, 125, 59, 271, 272, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 283, 273, 285, -1, 287, -1, -1, -1, 40, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 123, - -1, 125, -1, -1, -1, 308, 309, 59, -1, -1, - 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - -1, 123, -1, 125, -1, -1, -1, 271, 272, -1, - -1, -1, -1, -1, -1, -1, 59, -1, -1, 283, - -1, 285, -1, 287, -1, -1, -1, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, -1, - -1, 123, -1, -1, 308, 309, -1, -1, 271, 272, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 283, -1, 285, -1, 287, -1, -1, -1, 62, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - 123, -1, 271, 272, -1, 308, 309, -1, -1, -1, - -1, -1, 60, -1, 283, 60, 285, -1, 287, -1, - -1, -1, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, -1, -1, -1, 271, 272, 308, - 309, 60, -1, -1, -1, 60, -1, -1, -1, 283, - -1, 285, -1, 287, -1, -1, -1, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 271, - 272, -1, -1, -1, 308, 309, -1, 125, -1, -1, - 125, 283, -1, 285, -1, 287, -1, -1, -1, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, -1, -1, -1, -1, -1, 308, 309, -1, 271, - 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 283, -1, 285, -1, 287, -1, -1, -1, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, -1, -1, -1, -1, -1, 308, 309, 271, 272, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 283, -1, 285, -1, 287, -1, -1, -1, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - -1, -1, -1, 257, -1, 308, 309, -1, -1, 263, - -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, - -1, -1, 276, 277, 278, 279, 280, 281, -1, 257, - 284, -1, 257, -1, -1, -1, -1, -1, -1, -1, - -1, 269, -1, -1, 269, -1, -1, 301, 276, 277, - 278, 276, 277, 278, -1, -1, 284, -1, 257, 284, - -1, -1, 257, 291, -1, -1, 291, -1, -1, -1, - 269, -1, -1, 301, 269, -1, 301, 276, 277, 278, - 82, 276, 277, 278, 86, 284, -1, -1, -1, 284, - -1, -1, 291, 420, -1, -1, 291, 99, 100, 426, - -1, -1, 301, -1, -1, 432, 301, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 118, -1, 120, 121, - -1, -1, -1, -1, -1, 452, 453, -1, 455, -1, - -1, -1, -1, 460, -1, -1, -1, 464, -1, 466, - 467, 143, -1, 145, -1, -1, -1, -1, 475, 476, - 477, -1, -1, -1, 481, -1, -1, -1, -1, 161, - -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, - -1, 173, -1, 175, -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, - -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, - 292, 293, - }; -} -class yyCheckInit { - static short[] yyCheck = new short[2845]; - protected static void yyCheckInit () { - int numyycheck; - int yyCheckerun = 0; - for (numyycheck = 0; numyycheck <= 1000; numyycheck++) { - if (yyCheckerun < 2845) { - yyCheck[yyCheckerun] = yyCheck0.yyCheck0[numyycheck]; - yyCheckerun++; - } - } - for (numyycheck = 0; numyycheck <= 1000; numyycheck++) { - if (yyCheckerun < 2845) { - yyCheck[yyCheckerun] = yyCheck1.yyCheck1[numyycheck]; - yyCheckerun++; - } - } - for (numyycheck = 0; numyycheck <= 1000; numyycheck++) { - if (yyCheckerun < 2845) { - yyCheck[yyCheckerun] = yyCheck2.yyCheck2[numyycheck]; - yyCheckerun++; - } - } -} -} - diff --git a/src/de/dhbwstuttgart/parser/JavaParser.jay b/src/de/dhbwstuttgart/parser/JavaParser.jay deleted file mode 100755 index db28b802..00000000 --- a/src/de/dhbwstuttgart/parser/JavaParser.jay +++ /dev/null @@ -1,2381 +0,0 @@ -%{ - -/* -Backup von JavaParser.jay 10.April 17 Uhr -*/ - -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.core.AClassOrInterface; -import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.logger.Section; -import de.dhbwstuttgart.syntaxtree.ImportDeclarations; -import de.dhbwstuttgart.syntaxtree.Interface; -import de.dhbwstuttgart.syntaxtree.SourceFile; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.typeinference.Pair; -import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.Void; -import de.dhbwstuttgart.*; -import de.dhbwstuttgart.syntaxtree.*; -import de.dhbwstuttgart.syntaxtree.misc.*; -import de.dhbwstuttgart.syntaxtree.modifier.*; -import de.dhbwstuttgart.syntaxtree.operator.*; -import de.dhbwstuttgart.syntaxtree.type.*; -import de.dhbwstuttgart.syntaxtree.statement.*; -import de.dhbwstuttgart.typeinference.Menge; - -public class JavaParser{ -public Menge path = new Menge(); - -//PL 05-07-30 eingefuegt. ANFANG -private Menge containedTypes = new Menge(); -private Menge usedIdsToCheck = new Menge(); - //Vektor aller Typdeklarationen die in aktueller Klasse vorkommen. - //wird nach Beendigung der Klasse des Attributs der jeweiligen - //Klasse zugeordnet - //nach dem Parsen wird mit wandleGeneric2RefType die - //die RefTypes gesetzt. -void initContainedTypes() { - this.containedTypes = new Menge(); -} -void initUsedIdsToCheck() { - this.usedIdsToCheck = new Menge(); -} -//PL 05-07-30 eingefuegt. ENDE - -//LUAR 07-05-29 Anfang f�r Wildcard Test -public Menge testPair = new Menge(); -//LUAR 07-05-29 Ende -%} - -%token ABSTRACT -%token BOOLEAN -%token BREAK -%token CASE -%token CATCH -%token CHAR -%token CLASS -%token CONTINUE -%token DEFAULT -%token DO -%token ELSE -%token EXTENDS -%token FINAL -%token FINALLY -%token FOR -%token IF -%token INSTANCEOF -%token INT -%token NEW -%token PRIVATE -%token PROTECTED -%token PUBLIC -%token PACKAGE -%token IMPORT -%token INTERFACE -%token IMPLEMENTS -%token RETURN -%token STATIC -%token SUPER -%token SWITCH -%token THIS -%token THROW -%token THROWS -%token TRY -%token VOID -%token WHILE -%token INTLITERAL -%token LONGLITERAL -%token DOUBLELITERAL -%token FLOATLITERAL -%token BOOLLITERAL -%token JNULL -%token CHARLITERAL -%token STRINGLITERAL -%token IDENTIFIER -%token EQUAL -%token LESSEQUAL -%token GREATEREQUAL -%token NOTEQUAL -%token LOGICALOR -%token LOGICALAND -%token INCREMENT -%token DECREMENT -%token SHIFTLEFT -%token SHIFTRIGHT -%token UNSIGNEDSHIFTRIGHT -%token SIGNEDSHIFTRIGHT -%token PLUSEQUAL -%token MINUSEQUAL -%token TIMESEQUAL -%token DIVIDEEQUAL -%token ANDEQUAL -%token OREQUAL -%token XOREQUAL -%token MODULOEQUAL -%token SHIFTLEFTEQUAL -%token SIGNEDSHIFTRIGHTEQUAL -%token UNSIGNEDSHIFTRIGHTEQUAL -%token BRACE -%token RELOP -%token OP -%token EOF -%token LAMBDAASSIGNMENT -%token ENDOFGENERICVARDECLARATION - -%type classdeclaration -%type interfacedeclaration -%type interfacebody -%type interfacememberdeclarations -%type interfacememberdeclaration -%type abstractmethoddeclaration -%type classbody -%type classidentifier -%type interfaceidentifier -%type constantdeclaration -%type genericdeclarationlist -%type fielddeclaration -%type methodheader -%type methoddeclaration -%type methoddeclarator -%type classbodydeclarations -%type classbodydeclaration -%type classmemberdeclaration -%type variabledeclarators -%type fielddeclarator; -%type variabledeclarator -%type variabledeclaratorid -%type simplename -%type qualifiedname -%type importqualifiedname -%type importdeclaration -%type importdeclarations -%type name -%type super -%type classtype -%type classorinterfacetype -%type interfacetype -%type interfaces -%type extendsinterfaces -/* -%type integraltype -%type numerictype -%type primitivetype -*/ -%type referencetype -%type classtypelist -%type type -%type modifiers -%type modifier -%type block -%type methodbody -%type blockstatements -%type lambdabody -%type localvariabledeclarationstatement -%type localvariabledeclaration -%type throws -%type formalparameter -%type formalparameterlist -%type lambdaexpressionparameter -%type literal -%type primarynonewarray -%type primary -%type postfixexpression -%type unaryexpressionnotplusminus -%type unaryexpression -%type multiplicativeexpression -%type additiveexpression -%type shiftexpression -%type relationalexpression -%type equalityexpression -%type andexpression -%type exclusiveorexpression -%type inclusiveorexpression -%type conditionalandexpression -%type conditionalorexpression -%type conditionalexpression -%type assignmentexpression -%type lambdaexpression /*added by Andreas Stadelmeier*/ -%type expression -%type statementexpression -%type preincrementexpression -%type predecrementexpression -%type postincrementexpression -%type postdecrementexpression -%type expressionstatement -%type variableinitializer -%type statementwithouttrailingsubstatement -%type blockstatement -%type statement -%type statementnoshortif -%type whilestatement -%type forstatement -%type whilestatementnoshortif -%type ifthenstatement -%type ifthenelsestatement -%type ifthenelsestatementnoshortif -%type emptystatement -%type returnstatement -%type classinstancecreationexpression -%type compilationunit -%type typedeclarations -%type boundedMethodParameter; -%type boundedClassParameter; -%type boundedclassidentifierlist //Menge -%type boundedMethodParameters; // Menge -%type boundedClassParameters; // ParaList -%type packagedeclaration -%type assignment -%type assignmentoperator -%type lambdaassignmentoperator /*added by Andreas Stadelmeier*/ -%type lefthandside -%type argumentlist -%type methodinvocation -%type typedeclaration -%type constructordeclaration -%type constructordeclarator -%type constructorbody -%type explicitconstructorinvocation -%type staticinitializer -// %type castexpression // auskommentiert von Andreas Stadelmeier -%type paralist -%type typelist parameter -%type wildcardparameter -%left ',' -%% - -compilationunit : typedeclarations - { - $$=$1; - } - |importdeclarations typedeclarations - { - $2.addImports($1); - $$=$2; - } - | packagedeclaration importdeclarations typedeclarations - { - // SCJU: Package - $3.setPackageName($1); - $3.addImports($2); - $$=$3; - } - | packagedeclaration typedeclarations - { - // SCJU: Package - $2.setPackageName($1); - $$=$2; - } - | type type compilationunit - { - this.testPair.add(new Pair($1,$2)); - $$=$3; - } - -packagedeclaration : PACKAGE name ';' ; - { - // SCJU: Package - $$ = $2; - } - -importdeclarations :importdeclaration - { - ImportDeclarations declarations=new ImportDeclarations(); - declarations.addElement($1); - $$=declarations; - } - |importdeclarations importdeclaration - { - $1.addElement($2); - $$=$1; - } - -importdeclaration : IMPORT importqualifiedname ';' - { - $$=$2; - } - -typedeclarations :typedeclaration - { - SourceFile Scfile = new SourceFile(); - Scfile.addElement($1); - $$=Scfile; - } - |typedeclarations typedeclaration - { - $1.addElement($2); - $$=$1; - } - -name :qualifiedname - { - $$=$1; - } - |simplename - { - $$=$1; - } - -typedeclaration :classdeclaration - { - $$=$1; - } - | interfacedeclaration - { - // SCJU: Interface - $$=$1; - } - - -qualifiedname : name '.' IDENTIFIER - { - $1.set_Name($3.getLexem()); - $1.setOffset($1.getOffset()); - $$=$1; - } - -importqualifiedname : name '.' IDENTIFIER - { - $1.set_Name($3.getLexem()); - $1.setOffset($1.getOffset()); - $$=$1; - } - | name '.' '*' - { - $1.set_Name("*"); - $1.setOffset($1.getOffset()); - $$=$1; - } - - -simplename : IDENTIFIER - { - UsedId UI = new UsedId($1.getOffset()); - UI.set_Name( $1.getLexem() ); - UI.setOffset($1.getOffset());//hinzugef�gt hoth: 07.04.2006 - $$ = UI; - } - -classdeclaration : CLASS classidentifier classbody - { - // SCJU: Um das hier uebersichtlicher zu halten, - // gibt es einen allumfassenden Konstruktor fuer Class - // Parameter: - // String name, - // Modifiers mod, - // ClassBody classbody, - // Menge containedtypes, - // UsedId superclass, - // Menge SuperInterfaces, - // Menge Parameterliste - - $$ = new Class($2.getName(), null, $3, containedTypes, null, $2.getParaMenge(), $1.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | modifiers CLASS classidentifier classbody - { - $$ = new Class($3.getName(), $1, $4, containedTypes, null, $3.getParaMenge(), $2.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | CLASS classidentifier super classbody - { - $$ = new Class($2.getName(), null, $4, containedTypes, $3, null, $2.getParaMenge(), $1.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | modifiers CLASS classidentifier super classbody - { - $$ = new Class($3.getName(), $1, $5, containedTypes, $4, null, $3.getParaMenge(), $2.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - ///* auskommentiert von Andreas Stadelmeier A10023 - | CLASS classidentifier interfaces classbody - { - $$ = new Class($2.getName(), null, $4, containedTypes, $3.getTypeMenge(), $2.getParaMenge(), $1.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | modifiers CLASS classidentifier interfaces classbody - { - $$ = new Class($3.getName(), $1, $5, containedTypes, $4.getTypeMenge(), $3.getParaMenge(), $2.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | CLASS classidentifier super interfaces classbody - { - $$ = new Class($2.getName(), null, $5, containedTypes, $3, $4.getTypeMenge(), $2.getParaMenge(), $1.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - | modifiers CLASS classidentifier super interfaces classbody - { - $$ = new Class($3.getName(), $1, $6, containedTypes, $4, $5.getTypeMenge(), $3.getParaMenge(), $2.getOffset()); - this.initContainedTypes(); - this.initUsedIdsToCheck(); - } - //*/ -interfaceidentifier : IDENTIFIER - { - // HOTI - // Verbindet den Namen eines Interfaces mit einer optionalen Parameterliste - $$ = new InterfaceAndParameter($1.getLexem()); - } - | IDENTIFIER '<' boundedClassParameters '>' - { - $$ = new InterfaceAndParameter($1.getLexem(), $3); - } - -classidentifier : IDENTIFIER - { - // SCJU: Hilfskonstrukt, um die Grammatik ueberschaubar zu halten - // Verbindet den Namen einer Klasse mit einer optionalen Parameterliste - $$ = new ClassAndParameter($1.getLexem()); - } - | IDENTIFIER '<' boundedClassParameters '>' - { - $$ = new ClassAndParameter($1.getLexem(), $3); - } - -interfacedeclaration: INTERFACE interfaceidentifier interfacebody - { - // SCJU: Interface - Interface ic = new Interface($2.getName(), $1.getOffset()); - ic.setParaList($2.getParaMenge()); - ic.setInterfaceBody($3); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - $$ = ic; - } - | modifiers INTERFACE interfaceidentifier interfacebody - { - Interface ic = new Interface($3.getName(), $1, $2.getOffset()); - ic.setInterfaceBody($4); - ic.setParaList($3.getParaMenge()); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - $$ = ic; - } - | INTERFACE interfaceidentifier extendsinterfaces interfacebody - { - Interface ic = new Interface($2.getName(), $1.getOffset()); - ic.setParaList($2.getParaMenge()); - //ic.setSuperInterfaces($3.getMenge()); - ic.setInterfaceBody($4); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - $$ = ic; - } - | modifiers INTERFACE interfaceidentifier extendsinterfaces interfacebody ; - { - Interface ic = new Interface($3.getName(), $1, $2.getOffset()); - ic.setParaList($3.getParaMenge()); - //ic.setSuperInterfaces($4.getMenge()); - ic.setInterfaceBody($5); - ic.setContainedTypes(containedTypes); - initContainedTypes(); - $$ = ic; - } - -paralist : IDENTIFIER - { - ParaList pl = new ParaList(); - /* #JB# 05.04.2005 */ - /* ########################################################### */ - pl.getParalist().addElement(new GenericTypeVar($1.getLexem(),null, $1.getOffset())); - //pl.getParalist().addElement( new TypePlaceholder($1.getLexem()) ); - /* ########################################################### */ - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "IDENTIFIER --> Paralist f�r " + $1.getLexem() + " TV", Section.PARSER); - $$ = pl; - } - | IDENTIFIER '<' paralist '>' - { - ParaList pl = new ParaList(); - RefType t = new RefType( $1.getLexem(),null,$1.getOffset() ); - t.set_ParaList( $3.get_ParaList() ); - pl.getParalist().addElement(t); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "IDENTIFIER '<' paralist '>' --> Paralist f�r " + $1.getLexem() + ": RefType", Section.PARSER); - $$ = pl; - } - | wildcardparameter - { - ParaList pl = new ParaList(); - pl.getParalist().addElement($1); - $$ = pl; - } - | paralist ',' IDENTIFIER - { - - /* #JB# 05.04.2005 */ - /* ########################################################### */ - $1.getParalist().addElement(new GenericTypeVar($3.getLexem(), null,$3.getOffset())); - //$1.getParalist().addElement(new TypePlaceholder($3.getLexem())); - /* ########################################################### */ - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER --> Paralist f�r " + $3.getLexem() + ": TV", Section.PARSER); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist: " + $1.getParalist(), Section.PARSER); - $$=$1; - } - - | paralist ',' IDENTIFIER '<' paralist '>' - { - RefType t = new RefType( $3.getLexem(),null ,$3.getOffset() ); - t.set_ParaList( $5.get_ParaList() ); - $1.getParalist().addElement(t); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER '<' paralist '>' --> Paralist f�r " + $3.getLexem() + ": RefType", Section.PARSER); - $$=$1; - } - | paralist ',' wildcardparameter - { - $1.getParalist().addElement($3); - $$=$1; - } - -wildcardparameter : '?' - { - //Luar 29.11.06 Offset auf -1, da keine Angabe vorhanden - WildcardType wc = new WildcardType(null,null,-1); - $$ = wc; - } - | '?' EXTENDS referencetype - { - ExtendsWildcardType ewc = new ExtendsWildcardType($2.getOffset(),$3); - $$ = ewc; - } - | '?' SUPER referencetype - { - SuperWildcardType swc = new SuperWildcardType($2.getOffset(),$3); - $$ = swc; - } - -classbody : '{' '}' - { - ClassBody CB = new ClassBody(); - $$ = CB; - } - - | '{' classbodydeclarations '}' - { - $$ = $2; - } - -modifiers :modifier - { - Modifiers Mod = new Modifiers(); - Mod.addModifier($1); - $$ = Mod; - } - |modifiers modifier - { - $1.addModifier($2); - $$ = $1; - } - -super :EXTENDS classtype - { - $$ = $2; - } - -interfaces : IMPLEMENTS interfacetype - { - // SCJU: Interface - InterfaceList il = new InterfaceList(); - il.addInterface($2); - $$ = il; - } - | interfaces ',' interfacetype ; - { - $1.addInterface($3); - $$ = $1; - } - -interfacebody : '{' '}' - { - // SCJU: Interface - $$ = new InterfaceBody(); - } - | '{' interfacememberdeclarations '}' - { - $$ = $2; - } - - - -extendsinterfaces : EXTENDS interfacetype - { - // SCJU: Interface - InterfaceList il = new InterfaceList(); - il.addInterface($2); - $$ = il; - } - | extendsinterfaces ',' interfacetype ; - { - $1.addInterface($3); - $$ = $1; - } - - -classbodydeclarations : classbodydeclaration - { - ClassBody CB = new ClassBody(); - CB.addField( $1 ); - $$=CB; - } - | classbodydeclarations classbodydeclaration - { - $1.addField($2); - $$ = $1; - } - - -modifier : PUBLIC - { - Public Pub = new Public(); - $$=Pub; - } - | PROTECTED - { - Protected Pro = new Protected(); - $$=Pro; - } - | PRIVATE - { - Private Pri = new Private(); - $$=Pri; - } - | STATIC - { - Static Sta = new Static(); - $$=Sta; - } - | ABSTRACT - { - Abstract Abs = new Abstract(); - $$=Abs; - } - | FINAL - { Final fin = new Final(); - $$ = fin; - } - - -classtype : classorinterfacetype - { - $$ = $1; - } - - -interfacememberdeclarations : interfacememberdeclaration - { - // SCJU: Interface - InterfaceBody ib = new InterfaceBody(); - ib.addElement($1); - $$ = ib; - } - | interfacememberdeclarations interfacememberdeclaration ; - { - $1.addElement($2); - $$ = $1; - } - -interfacetype : classorinterfacetype ; - { - // SCJU: Interfaces - $$ = $1; - } - -classbodydeclaration : classmemberdeclaration - { - $$=$1; - } - ///* auskommentiert von Andreas Stadelmeier a10023 - | staticinitializer - { - $$=$1; - } - | constructordeclaration - { - $$=$1; - } - //*/ - -classorinterfacetype : name parameter - { - if ($2 != null) { - //$1.set_ParaList($2.get_ParaList()); - $1.set_ParaList($2);//�nderung von Andreas Stadelmeier. Type statt GenericVarType - /* otth: originale (also diese) Parameterliste retten */ - //((UsedId)$1).vParaOrg = new Menge( $2.get_ParaList() ); - } - $$=$1; - } - -typelist : type - { - Menge tl = new Menge(); - tl.add($1); - $$ = tl; - } - | typelist ',' type - { - $1.add($3); - $$=$1; - } - | typelist ',' wildcardparameter - { - $1.add($3); - $$=$1; - } - | wildcardparameter - { - Menge tl = new Menge(); - tl.add($1); - $$ = tl; - } - -/* PL 05-07-28 erg�nzt, weil jeder classorinterfacetype auch parametrisiert sein kann */ -//TODO: Das hier ist m�glicherweise falsch. Ein Typ hat keine parameterliste, nur eine Liste von RefTypes -parameter : { $$ = null; } - | '<' typelist '>' //'<'paralist'>'//typelist statt - { - $$ = $2; - } - -interfacememberdeclaration : constantdeclaration - { - // SCJU: Interfaces, Spezialform Konstantendef. - $$ = $1; - } - | abstractmethoddeclaration - { - $$ = $1; - } - -classmemberdeclaration : fielddeclaration - { - $$=$1; - } - | methoddeclaration - { - $$=$1; - } - -staticinitializer : STATIC block - { - Method STAT = new Method($1.getOffset()); - DeclId DST = new DeclId(); - DST.set_Name($1.getLexem()); - STAT.set_DeclId(DST); - Static ST = new Static(); - Modifiers MOD = new Modifiers(); - MOD.addModifier(ST); - STAT.set_Modifiers(MOD); - STAT.set_Block($2); - $$=STAT; - } - -constructordeclaration : constructordeclarator constructorbody - { - $1.set_Block($2); - $$ = $1; - } - | modifiers constructordeclarator constructorbody - { - $2.set_Block($3); - $2.set_Modifiers($1); - $$ = $2; - } - -constantdeclaration : modifiers type IDENTIFIER '=' expression';' ; - { - // SCJU: Interface - Constant c = new Constant($3.getLexem(), $1); - c.setType($2); - c.setValue($5); - $$ = c; - } - -abstractmethoddeclaration : methodheader ';' ; - { - // SCJU: Interface - $$ = $1; - } - -/* -added by Andreas Stadelmeier, a10023 -Bei Lokalen Variablen ist eine initialisierung der Variablen w�hrend der Deklarisierung nicht erlaubt. -Beispiel: var = 2; -Bei einer lokalen Variable l�sst sich hier nicht ermitteln ob die Variable deklariert werden soll oder bereits deklariert wurde und ihr nur ein Wert zugewiesen werden soll. -Dieses Problem ist bei Feldern nicht der Fall. -*/ -fielddeclarator : - /* - type variabledeclarator '=' expression - { - FieldDeclaration ret = new FieldDeclaration($2.getOffset()); - ret.setType($1); - ret.set_DeclId($2); - ret.setWert($4); - $$=ret; - } - | - */ - variabledeclarator '=' expression - { - FieldDeclaration ret = new FieldDeclaration($1.getOffset()); - ret.set_DeclId($1); - ret.setWert($3); - $$=ret; - } - | variabledeclarator - { - FieldDeclaration ret = new FieldDeclaration($1.getOffset()); - ret.set_DeclId($1); - $$=ret; - } - -genericdeclarationlist : '<' boundedMethodParameters '>' - { - GenericDeclarationList ret = new GenericDeclarationList($2.getElements(),$2.getEndOffset()); - $$ = ret; - } - - -fielddeclaration : type fielddeclarator ';' - { - $2.setType($1); - $$=$2; - } - | fielddeclarator ';' - { - $$=$1; - } - | genericdeclarationlist type fielddeclarator ';' - {//angef�gt von Andreas Stadelmeier - $3.setType($2); - $3.setGenericParameter($1); - $$=$3; - } - | - variabledeclarators ';' - { - $$=$1; - } - | - type variabledeclarators ';' - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("T->Parser->fielddeclaration ...: type " + $1, Section.PARSER); - $2.setType($1); - $$ = $2; - } - - | modifiers type variabledeclarators ';' - { - $3.setType($2); - for(int i=0;i<($3.getDeclIdMenge().size());i++) - { - $3.getDeclIdMenge().elementAt(i).modifiers=$1; - } - $$ = $3; - } - -methoddeclaration : methodheader methodbody - { - $1.set_Block($2); - $$=$1; - } - -block : '{' '}' - - { - Block Bl = new Block(); - $$=Bl; - } - - | '{' blockstatements '}' - { - $$=$2; - } - -constructordeclarator : simplename '(' ')' - { - Constructor CON = new Constructor(null,null); //TODO: Der Parser kann sowieso nicht zwischen einem Konstruktor und einer Methode unterscheiden. Das hier kann wegfallen... - DeclId DIDCon = new DeclId(); - DIDCon.set_Name($1.get_Name_1Element()); - CON.set_DeclId(DIDCon); - $$=CON; - } - | simplename '('formalparameterlist')' - { - Constructor CONpara = new Constructor(null,null); - DeclId DIconpara = new DeclId(); - DIconpara.set_Name($1.get_Name_1Element()); - CONpara.set_DeclId(DIconpara); - CONpara.setParameterList($3); - $$=CONpara; - } - -constructorbody : '{' '}' - { - Block CBL = new Block(); - $$=CBL; - } - | '{' explicitconstructorinvocation '}' - { - Block CBLexpl = new Block(); - CBLexpl.set_Statement($2); - $$=CBLexpl; - } - | '{' blockstatements '}' - { - $$=$2; - } - | '{'explicitconstructorinvocation blockstatements '}' - { - Block CBes = new Block(); - CBes.set_Statement($2); - for(int j=0;j<$3.statements.size();j++) - { - CBes.set_Statement((Statement)$3.statements.elementAt(j)); - } - $$=CBes; - } - -throws : THROWS classtypelist - { - ExceptionList EL = new ExceptionList(); - EL.set_addElem($2); - $$=EL; - } - -boundedClassParameter : boundedMethodParameter - { - $$ = $1; - } - -boundedClassParameters : boundedClassParameter - { - ParaList p = new ParaList(); - p.add_ParaList($1); - $$=p; - } - | boundedClassParameters ',' boundedClassParameter - { - $1.add_ParaList($3); - $$=$1; - } - -// returns GenericTypeVar -boundedMethodParameter : IDENTIFIER - { - $$=new GenericTypeVar($1.getLexem(),null,$1.getOffset()); - } - | IDENTIFIER EXTENDS boundedclassidentifierlist - { - BoundedGenericTypeVar gtv=new BoundedGenericTypeVar($1.getLexem(), $3,null, $1.getOffset() ,$3.getEndOffset()); - //gtv.setBounds($3); - $$=gtv; - } -// returns Menge -boundedclassidentifierlist : referencetype - { - Menge vec=new Menge(); - vec.addElement($1); - containedTypes.addElement($1); - $$=new BoundedClassIdentifierList(vec, $1.getOffset()+$1.getName().toString().length()); - } - | boundedclassidentifierlist '&' referencetype - { - $1.addElement($3); - $1.addOffsetOff($3); - containedTypes.addElement($3); - $$=$1; - } -// returns Menge -boundedMethodParameters : boundedMethodParameter - { - GenericVarDeclarationList vec=new GenericVarDeclarationList(); - vec.addElement($1); - $$=vec; - } - | boundedMethodParameters ',' boundedMethodParameter - { - $1.addElement($3); - $$=$1; - } - - -// returns Method -methodheader :genericdeclarationlist type methoddeclarator - { - $3.setType($2); - $3.setGenericParameter($1); - $$=$3; - } - | type methoddeclarator - { - $2.setType($1); - $$=$2; - } - | modifiers type methoddeclarator - { - $3.set_Modifiers($1); - $3.setType($2); - $$=$3; - } - | modifiers genericdeclarationlist type methoddeclarator - { - $4.set_Modifiers($1); - $4.setGenericParameter($2); - $4.setType($3); - $$=$4; - } - | type methoddeclarator throws - { - $2.setType($1); - $2.set_ExceptionList($3); - $$=$2; - } - | genericdeclarationlist type methoddeclarator throws - { - $3.setGenericParameter($1); - $3.setType($2); - $3.set_ExceptionList($4); - $$=$3; - } - | modifiers type methoddeclarator throws - { - $3.set_Modifiers($1); - $3.setType($2); - $3.set_ExceptionList($4); - $$=$3; - } - | modifiers genericdeclarationlist type methoddeclarator throws - { - $4.set_Modifiers($1); - $4.setGenericParameter($2); - $4.setType($3); - $4.set_ExceptionList($5); - $$=$4; - } - | VOID methoddeclarator - { - Void Voit = new Void($2,$1.getOffset()); - $2.setType(Voit); - $$=$2; - } - | modifiers VOID methoddeclarator - { - Void voit = new Void($3,$2.getOffset()); - $3.set_Modifiers($1); - $3.setType(voit); - $$=$3; - } - | VOID methoddeclarator throws - { - Void voyt = new Void($2,$1.getOffset()); - $2.setType(voyt); - $2.set_ExceptionList($3); - $$=$2; - } - | modifiers VOID methoddeclarator throws - { - Void voyd = new Void($3,$2.getOffset()); - $3.set_Modifiers($1); - $3.setType(voyd); - $3.set_ExceptionList($4); - $$=$3; - } - | genericdeclarationlist VOID methoddeclarator - { - Void Voit = new Void($3,$2.getOffset()); - $3.setType(Voit); - $3.setGenericParameter($1); - $$=$3; - } - | modifiers genericdeclarationlist VOID methoddeclarator - { - Void voit = new Void($4,$3.getOffset()); - $4.set_Modifiers($1); - $4.setType(voit); - $4.setGenericParameter($2); - $$=$4; - } - | genericdeclarationlist VOID methoddeclarator throws - { - Void voyt = new Void($3,$2.getOffset()); - $3.setType(voyt); - $3.set_ExceptionList($4); - $3.setGenericParameter($1); - $$=$3; - } - | modifiers genericdeclarationlist VOID methoddeclarator throws - { - Void voyd = new Void($4,$3.getOffset()); - $4.set_Modifiers($1); - $4.setType(voyd); - $4.set_ExceptionList($5); - $4.setGenericParameter($2); - $$=$4; - } - - | methoddeclarator - { - //auskommentiert von Andreas Stadelmeier (a10023) $1.setType(TypePlaceholder.fresh()); - $$=$1; - } - | genericdeclarationlist methoddeclarator - { - //auskommentiert von Andreas Stadelmeier (a10023) $4.setType(TypePlaceholder.fresh()); - $2.setGenericParameter($1); - $$=$2; - } - - | modifiers methoddeclarator - { - $2.set_Modifiers($1); - //auskommentiert von Andreas Stadelmeier (a10023) $2.setType(TypePlaceholder.fresh()); - $$=$2; - } - | methoddeclarator throws - { - //auskommentiert von Andreas Stadelmeier (a10023) $1.setType(TypePlaceholder.fresh()); - $1.set_ExceptionList($2); - $$=$1; - } - | modifiers methoddeclarator throws - { - $2.set_Modifiers($1); - //auskommentiert von Andreas Stadelmeier (a10023) $2.setType(TypePlaceholder.fresh()); - $2.set_ExceptionList($3); - $$=$2; - } - - -type : referencetype - { - $$=$1; - } - |referencetype '[' ']' - { - $1.setArray(true); - } - /* auskommentiert von Andreas Stadelmeier - |primitivetype - { - $$=$1; - } - |primitivetype '[' ']' - { - $1.setArray(true); - } - */ - -variabledeclarators : variabledeclarator - { - FieldDeclaration IVD = new FieldDeclaration($1.getOffset()); - IVD.getDeclIdMenge().addElement( $1 ); - IVD.setOffset($1.getOffset()); - $$ = IVD; - } - | variabledeclarators ',' variabledeclarator - { - $1.getDeclIdMenge().addElement($3); - $$=$1; - } - -methodbody : block - { - $$=$1; - } - -blockstatements : blockstatement - { - Block Blstat = new Block(); - Blstat.set_Statement($1); - $$=Blstat; - } - - | blockstatements blockstatement - { - $1.set_Statement($2); - $$=$1; - } - -formalparameterlist :formalparameter - { - ParameterList PL = new ParameterList(); - PL.set_AddParameter($1); - $$ = PL; - } - |formalparameterlist ',' formalparameter - { - $1.set_AddParameter($3); - $$ = $1; - } - -explicitconstructorinvocation : THIS '(' ')' ';' - { - ThisCall THCON = new ThisCall($1.getOffset(),$1.getLexem().length()); - $$=THCON; - } - |THIS '(' argumentlist ')' ';' - { - ThisCall THCONargl = new ThisCall($1.getOffset(),$1.getLexem().length()); - THCONargl.set_ArgumentList($3); - $$=THCONargl; - } - |SUPER '(' ')' ';' - { - SuperCall sCall = new SuperCall($1.getOffset(),$1.getLexem().length()); - $$=sCall; - } - |SUPER '(' argumentlist ')' ';' - { - SuperCall sCall = new SuperCall($1.getOffset(),$1.getLexem().length()); - sCall.set_ArgumentList($3); - $$=sCall; - } - -classtypelist : classtype - { - //RefType RT = new RefType(RT.get_UsedId().get_Name_1Element(),null,-1); - RefType RT = new RefType($1.get_Name_1Element(),null,-1); - //RT.set_UsedId($1); - //RT.setName(RT.get_UsedId().get_Name_1Element()); - $$=RT; - } - | classtypelist ',' classtype - { - $1.set_UsedId($3); - $1.setName($1.get_UsedId().get_Name_1Element()); - $$=$1; - } - -methoddeclarator :IDENTIFIER '(' ')' - { - Method met = new Method($1.getOffset()); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - met.setLineNumber($1.getLineNumber()); - met.setOffset($1.getOffset());//hinzugef�gt hoth: 07.04.2006 - /* ########################################################### */ - DeclId DImethod = new DeclId(); - DImethod.set_Name($1.getLexem()); - met.set_DeclId(DImethod); - $$ = met; - } - |IDENTIFIER '(' formalparameterlist ')' - { - Method met_para = new Method($1.getOffset()); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - met_para.setLineNumber($1.getLineNumber()); - met_para.setOffset($1.getOffset());//hinzugef�gt hoth: 07.04.2006 - /* ########################################################### */ - DeclId Dimet_para = new DeclId(); - Dimet_para.set_Name($1.getLexem()); - met_para.set_DeclId(Dimet_para); - met_para.setParameterList($3); - $$ = met_para; - } - -/* auskommentiert von Andreas Stadelmeier -primitivetype :BOOLEAN - { - BooleanType BT = new BooleanType(null); - $$=BT; - } - - |numerictype - { - $$=$1; - } -*/ - -referencetype :classorinterfacetype - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("T->Parser->referenctype: " + $1, Section.PARSER); - RefType RT = new RefType($1.getQualifiedName(),null,$1.getOffset()); - - //ausgetauscht PL 05-07-30 - //RT.set_UsedId($1); - //RT.setName(RT.get_UsedId().get_Name_1Element()); - RT.set_ParaList($1.get_RealParaList()); - //RT.setName($1.getQualifiedName()); - - - //PL 05-07-30 eingefuegt containedTypes ANFANG - containedTypes.addElement(RT); - //PL 05-07-30 eingefuegt containedTypes ENDE - - $$=RT; - } - - -/* 05-07-28 PL Parameterdeklarationen zur classorinterfacetype verschoben */ - -variabledeclarator : variabledeclaratorid - { - $$=$1; - } - /* auskommentiert von Andreas Stadelmeier, a10023: - eine Variable mit Initialisierung wird sowieso nicht geparst. - | variabledeclaratorid '=' variableinitializer - { - $1.set_Wert($3); - $$=$1; - } - */ -/* 05-07-28 PL auskommentiert - wird nicht ben�tigt aufgrund neuer classorinterfacetype declaration - | '<' paralist'>' variabledeclaratorid '=' variableinitializer - { - $4.set_Wert($6); - $4.set_Paratyp($2.get_ParaList()); - $$=$4; - } -*/ -blockstatement :localvariabledeclarationstatement - { - $$=$1; - } - |statement - { - $$=$1; - } - -formalparameter : type variabledeclaratorid - { - FormalParameter FP = new FormalParameter($2); - FP.setType($1); - //FP.set_DeclId($2); //auskommentiert von Andreas Stadelmeier. DeclId wird nun dem Konstruktor von FormalParameter �bergeben. - $$=FP; - } - - /* otth: Methodenargumente koennen hiermit auch polymorph sein. */ -/* 05-07-28 PL auskommentiert - wird nicht ben�tigt aufgrund neuer classorinterfacetype declaration - | type '<'paralist'>' variabledeclaratorid - { - Parameterliste setzen - $5.set_Paratyp($3.get_ParaList()); - - FormalParameter FP = new FormalParameter($5); - FP.setType($1); - //FP.set_DeclId($5); - $$=FP; - - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("P->Polymorphes Methodenargument hinzugefuegt: Name = " + $5.get_Name() + " Typ = " + $1.getName(), Section.PARSER); - } -*/ - - | variabledeclaratorid - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nFunktionsdeklaration mit typlosen Parametern: " + $1.name, Section.PARSER); - - FormalParameter FP = new FormalParameter($1); - - // #JB# 31.03.2005 - // ########################################################### - //Type T = TypePlaceholder.fresh(); //auskommentiert von Andreas Stadelmeier - // Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet */ - // ########################################################### - //de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName(), Section.PARSER); - - //auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T ); - //FP.set_DeclId($1); - - $$=FP; - } - -argumentlist : expression - { - ArgumentList AL = new ArgumentList(); - AL.expr.addElement($1); - $$=AL; - } - |argumentlist ',' expression - { - $1.expr.addElement($3); - $$=$1; - } -/* auskommentiert von Andreas Stadelmeier -numerictype :integraltype - { - $$=$1; - } -*/ - -variabledeclaratorid : IDENTIFIER - { - DeclId DI = new DeclId(); - /* #JB# 10.04.2005 */ - /* ########################################################### */ - DI.setLineNumber($1.getLineNumber()); - DI.setOffset($1.getOffset());//hinzugef�gt hoth: 07.04.2006 - /* ########################################################### */ - DI.set_Name($1.getLexem()); - $$=DI; - } - -variableinitializer :expression - { - $$=$1; - } - -localvariabledeclarationstatement :localvariabledeclaration ';' - { - $$=$1; - } - -statement :statementwithouttrailingsubstatement - { - $$=$1; - } - |ifthenstatement - { - $$=$1; - } - |ifthenelsestatement - { - $$=$1; - } - |whilestatement - { - $$=$1; - } - |forstatement - { - $$=$1; - }| explicitconstructorinvocation - { - $$=$1; - } - -expression :assignmentexpression - { - $$=$1; - } - |classinstancecreationexpression - { - $$=$1; - } - -/* auskommentiert von Andreas Stadelmeier -integraltype :INT - { - IntegerType IT = new IntegerType(null); - $$=IT; - } - | CHAR - { - CharacterType CT = new CharacterType(null); - $$=CT; - } -*/ - -localvariabledeclaration : type variabledeclarators - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("P -> Lokale Variable angelegt!", Section.PARSER); - LocalVarDecl LVD = new LocalVarDecl($1.getOffset(),$1.getVariableLength()); - LVD.setType($1); - LVD.setDeclidMenge($2.getDeclIdMenge()); - $$ = LVD; - } - - /* #JB# 31.03.2005 */ - /* ########################################################### */ - |variabledeclarators - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("P -> Lokale Variable angelegt!", Section.PARSER); - LocalVarDecl LVD = new LocalVarDecl($1.getOffset(),$1.getVariableLength()); - //auskommentiert von Andreas Stadelmeier (a10023) LVD.setType(TypePlaceholder.fresh()); - LVD.setDeclidMenge($1.getDeclIdMenge()); - $$ = LVD; - } - /* ########################################################### */ - -statementwithouttrailingsubstatement : block - { - $$=$1; - } - | emptystatement - { - $$=$1; - } - | expressionstatement - { - $$=$1; - } - | returnstatement - { - $$=$1; - } - -ifthenstatement : IF '(' expression ')' statement - { - IfStmt Ifst = new IfStmt($3.getOffset(),$3.getVariableLength()); - Ifst.set_Expr($3); - Ifst.set_Then_block($5); - $$=Ifst; - } - -ifthenelsestatement : IF '('expression ')'statementnoshortif ELSE statement - { - IfStmt IfstElst = new IfStmt($3.getOffset(),$3.getVariableLength()); - IfstElst.set_Expr($3); - IfstElst.set_Then_block($5); - IfstElst.set_Else_block($7); - $$=IfstElst; - } - -whilestatement : WHILE '(' expression ')' statement - { - WhileStmt Whlst = new WhileStmt($3.getOffset(),$3.getVariableLength()); - Whlst.set_Expr($3); - Whlst.set_Loop_block($5); - $$=Whlst; - } - -//forschleife -forstatement - //Bsp: for(i=0 ; i<10 ; i++){System.out.println(i)} - : FOR '(' expression ';' expression ';' expression ')' statement - { - ForStmt Fst = new ForStmt($3.getOffset(),$3.getVariableLength()); - Fst.set_head_Initializer($3); - Fst.set_head_Condition($5); - Fst.set_head_Loop_expr($7); - Fst.set_body_Loop_block($9); - - //Typannahme - $$ = Fst; - } - //Bsp: for(i=0 ; i<10 ; ){System.out.println(i)} - | FOR '(' expression ';' expression ';' ')' statement - { - ForStmt Fst = new ForStmt($3.getOffset(),$3.getVariableLength()); - Fst.set_head_Initializer($3); - Fst.set_head_Condition($5); - Fst.set_body_Loop_block($8); - - //Typannahme - $$ = Fst; - } - //Bsp: for(i=0 ; ; i++){System.out.println(i)} - | FOR '(' expression ';' ';' expression ')' statement - { - ForStmt Fst = new ForStmt($3.getOffset(),$3.getVariableLength()); - Fst.set_head_Initializer($3); - Fst.set_head_Loop_expr($6); - Fst.set_body_Loop_block($8); - - //Typannahme - $$ = Fst; - } - //Bsp: for( ; i<10 ; i++){System.out.println(i)} - | FOR '(' ';' expression ';' expression ')' statement - { - ForStmt Fst = new ForStmt($4.getOffset(),$4.getVariableLength()); - Fst.set_head_Condition($4); - Fst.set_head_Loop_expr($6); - Fst.set_body_Loop_block($8); - - //Typannahme - $$ = Fst; - } - //Bsp: for(i=0 ; ; ){System.out.println(i)} - | FOR '(' expression ';' ';' ')' statement - { - ForStmt Fst = new ForStmt($3.getOffset(),$3.getVariableLength()); - Fst.set_head_Initializer($3); - Fst.set_body_Loop_block($7); - - //Typannahme - $$ = Fst; - } - //Bsp: for( ; i<10 ; ){System.out.println(i)} - | FOR '(' ';' expression ';' ')' statement - { - ForStmt Fst = new ForStmt($4.getOffset(),$4.getVariableLength()); - Fst.set_head_Condition($4); - Fst.set_body_Loop_block($7); - - //Typannahme - $$ = Fst; - } - //Bsp: for( ; ; i++){System.out.println(i)} - | FOR '(' ';' ';' expression ')' statement - { - ForStmt Fst = new ForStmt($5.getOffset(),$5.getVariableLength()); - Fst.set_head_Loop_expr($5); - Fst.set_body_Loop_block($7); - - //Typannahme - $$ = Fst; - } - //Bsp: for( ; ; ){System.out.println(i)} - | FOR '(' ';' ';' ')' statement - { - ForStmt Fst = new ForStmt($6.getOffset(),$6.getVariableLength()); - Fst.set_body_Loop_block($6); - - //Typannahme - $$ = Fst; - } - -assignmentexpression : conditionalexpression - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("conditionalexpression", Section.PARSER); - $$=$1; - } - | assignment - { - $$=$1; - } - - -emptystatement : ';' - { - EmptyStmt Empst = new EmptyStmt(); - $$=Empst; - } - -expressionstatement : statementexpression ';' - { - $$=$1; - } - -returnstatement : RETURN ';' - { - Return ret = new Return(-1,-1); - $$= ret; - } - | RETURN expression ';' - { - Return retexp = new Return($2.getOffset(),$2.getVariableLength()); - retexp.set_ReturnExpr($2); - $$=retexp; - } - -statementnoshortif :statementwithouttrailingsubstatement - { - $$=$1; - } - | ifthenelsestatementnoshortif - { - $$=$1; - } - | whilestatementnoshortif - { - $$=$1; - } - -conditionalexpression :conditionalorexpression - { - $$=$1; - } - // | conditionalorexpression '?' expression ':' conditionalexpression - -assignment :lefthandside assignmentoperator assignmentexpression - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1!\n", Section.PARSER); - Assign Ass = new Assign($1.getOffset(),$1.getVariableLength()); - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname($1.getOffset(),$1.getVariableLength()); - LOFV.set_UsedId($1); - //auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh()); - //auskommentiert von Andreas Stadelmeier (a10023) Ass.setType(TypePlaceholder.fresh()); - if( $2 == null ) - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1 --> " + $3 + " \n", Section.PARSER); - Ass.set_Expr( LOFV,$3 ); - } - else - { - Binary Bin = new Binary($3.getOffset(),$3.getVariableLength()); - Bin.set_Expr1(LOFV); - Bin.set_Operator($2); - Bin.set_Expr2($3); - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("\nParser --> Zuweisung1 --> Binary\n", Section.PARSER); - //auskommentiert von Andreas Stadelmeier (a10023) Bin.setType(TypePlaceholder.fresh()); - Ass.set_Expr( LOFV, Bin ); - } - $$=Ass; - } - | lefthandside assignmentoperator classinstancecreationexpression - { - Assign Ass =new Assign($1.getOffset(),$1.getVariableLength()); - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname($1.getOffset(),$1.getVariableLength()); - LOFV.set_UsedId($1); - //auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh()); - //auskommentiert von Andreas Stadelmeier (a10023) Ass.setType(TypePlaceholder.fresh()); - if($2==null) - { - Ass.set_Expr(LOFV,$3); - } - else - { - Binary Bin = new Binary($3.getOffset(),$3.getVariableLength()); - Bin.set_Expr1(LOFV); - Bin.set_Operator($2); - //auskommentiert von Andreas Stadelmeier (a10023) Bin.setType(TypePlaceholder.fresh()); - Bin.set_Expr2($3); - Ass.set_Expr(LOFV,Bin); - } - $$=Ass; - } - -statementexpression :assignment - { - $$=$1; - } - | preincrementexpression - { - $$=$1; - } - | predecrementexpression - { - $$=$1; - } - | postincrementexpression - { - $$=$1; - } - | postdecrementexpression - { - $$=$1; - } - | methodinvocation - { - $$=$1; - } -/* | classinstancecreationexpression - { - $$=$1; - } -*/ - -ifthenelsestatementnoshortif :IF '(' expression ')' statementnoshortif - ELSE statementnoshortif - { - IfStmt IfElno = new IfStmt($3.getOffset(),$3.getVariableLength()); - IfElno.set_Expr($3); - IfElno.set_Then_block($5); - IfElno.set_Else_block($7); - $$=IfElno; - } - -whilestatementnoshortif :WHILE '(' expression ')' statementnoshortif - { - WhileStmt Whstno = new WhileStmt($3.getOffset(),$3.getVariableLength()); - Whstno.set_Expr($3); - Whstno.set_Loop_block($5); - $$=Whstno; - } - -conditionalorexpression : conditionalandexpression - { - $$=$1; - } - | conditionalorexpression LOGICALOR conditionalandexpression - { - Binary LogOr = new Binary($1.getOffset(),$1.getVariableLength()); - OrOp OrO = new OrOp($1.getOffset(),$1.getVariableLength()); - LogOr.set_Expr1($1); - LogOr.set_Expr2($3); - LogOr.set_Operator(OrO); - //auskommentiert von Andreas Stadelmeier (a10023) LogOr.setType(TypePlaceholder.fresh()); - $$=LogOr; - } - -// LambdaExpression eingef�gt von Andreas Stadelmeier, a10023: - -lambdaassignmentoperator : LAMBDAASSIGNMENT - { - $$=null; - } - -lambdabody : block - { - $$=$1; - } - | expression - { - //Lambdabody kann auch nur aus einer Expression bestehen. In diesem Fall wird ein Block erstellt, welcher als einziges Statement ein return statment mit der expression hat. - //Bsp.: Aus der Expression |var=="hallo"| wird: |{return var=="hallo";}| - Block ret=new Block(); - ret.statements.add((Statement)new Return(0,0).set_ReturnExpr($1)); - //ret.statements.add((ExprStmt)$1); - $$=ret; - } - -lambdaexpressionparameter : '(' ')' - { - $$=null; - } - | '(' formalparameterlist ')' - { - $$=$2; - } - -lambdaexpression : lambdaexpressionparameter lambdaassignmentoperator lambdabody - { - LambdaExpression lambda = new LambdaExpression(/*((ParameSterList)$2).getOffset(),((ParameterList)$2).getVariableLength()*/0,0); - if($1!=null)lambda.setParameterList($1); - lambda.setBody((Block)$3); - $$=lambda; - } - - /* - | '(' ')' lambdaassignmentoperator lambdabody - { - LambdaExpression lambda = new LambdaExpression(0,0); //hier noch fixen - lambda.setBody((Block)$4); - $$=lambda; - } - */ - - - -lefthandside :name - { - $$=$1; - } - -assignmentoperator : '=' - { - $$=null; - } - | TIMESEQUAL - { - TimesOp TEO = new TimesOp(-1,-1); - $$=TEO; - } - | DIVIDEEQUAL - { - DivideOp DEO = new DivideOp(-1,-1); - $$=DEO; - } - | MODULOEQUAL - { - ModuloOp MEO = new ModuloOp(-1,-1); - $$=MEO; - } - | PLUSEQUAL - { - PlusOp PEO = new PlusOp(-1,-1); - $$=PEO; - } - | MINUSEQUAL - { - MinusOp MEO = new MinusOp(-1,-1); - $$=MEO; - } - // | SHIFTLEFTEQUAL - // | SIGNEDSHIFTRIGHTEQUAL - // | UNSIGNEDSHIFTRIGHTEQUAL - // | ANDEQUAL - // | XOREQUAL - // | OREQUAL - -preincrementexpression :INCREMENT unaryexpression - { - PreIncExpr PRINC = new PreIncExpr($2.getOffset(),$2.getVariableLength()); - PRINC.set_Expr($2); - $$=PRINC; - } - -predecrementexpression :DECREMENT unaryexpression - { - PreDecExpr PRDEC = new PreDecExpr($2.getOffset(),$2.getVariableLength()); - PRDEC.set_Expr($2); - $$=PRDEC; - } - -postincrementexpression :postfixexpression INCREMENT - { - PostIncExpr PIE = new PostIncExpr($1.getOffset(),$1.getVariableLength()); - PIE.set_Expr($1); - $$=PIE; - } - -postdecrementexpression :postfixexpression DECREMENT - { - PostDecExpr PDE = new PostDecExpr($1.getOffset(),$1.getVariableLength()); - PDE.set_Expr($1); - $$=PDE; - } - -methodinvocation: - name '(' ')' - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M1", Section.PARSER); - MethodCall MC = new MethodCall($1.getOffset(),$1.getVariableLength()); - UsedId udidmeth = new UsedId($1.getOffset()); - udidmeth.set_Name((String)(($1.get_Name()).elementAt($1.get_Name().size()-1))); - MC.set_UsedId(udidmeth); - Receiver rec = null; - if ($1.get_Name().size() > 2) { - - $1.removeLast(); - - //macht aus der Liste von Strings - //in usedid.name einen InstVar - InstVar INSTVA = new InstVar($1,$1.getOffset(),$1.getVariableLength()); - - //auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh()); - rec = new Receiver(INSTVA); - } - else if ($1.get_Name().size() == 2) { - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname($1.getOffset(),$1.getVariableLength()); - $1.removeLast(); - LOFV.set_UsedId($1); - //auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh()); - rec = new Receiver(LOFV); - } - MC.set_Receiver(rec); - //auskommentiert von Andreas Stadelmeier (a10023) MC.setType(TypePlaceholder.fresh()); - $$=MC; - } - | name '('argumentlist')' - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M2", Section.PARSER); - MethodCall MCarg = new MethodCall($1.getOffset(),$1.getVariableLength()); - UsedId udidmeth = new UsedId($1.getOffset()); - udidmeth.set_Name((String)(($1.get_Name()).elementAt($1.get_Name().size()-1))); - MCarg.set_UsedId(udidmeth); - Receiver rec = null; - if ($1.get_Name().size() > 2) { - - $1.removeLast(); - - //macht aus der Liste von Strings - //in usedid.name einen InstVar - InstVar INSTVA = new InstVar($1,$1.getOffset(),$1.getVariableLength()); - - //auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh()); - rec = new Receiver(INSTVA); - } - else if ($1.get_Name().size() == 2) { - LocalOrFieldVarOrClassname LOFV = new LocalOrFieldVarOrClassname($1.getOffset(),$1.getVariableLength()); - $1.removeLast(); - LOFV.set_UsedId($1); - //auskommentiert von Andreas Stadelmeier (a10023) LOFV.setType(TypePlaceholder.fresh()); - rec = new Receiver(LOFV); - } - MCarg.set_Receiver(rec); - MCarg.set_ArgumentList($3); - //auskommentiert von Andreas Stadelmeier (a10023) MCarg.setType(TypePlaceholder.fresh()); - $$=MCarg; - } - | primary '.' IDENTIFIER '(' ')' - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M3", Section.PARSER); - MethodCall MCpr = new MethodCall($1.getOffset(),$1.getVariableLength()); - - // PL 05-08-21 primary ist kein UsedId - //$1.usedid.set_Name($3.getLexem()); - //MCpr.set_UsedId($1.get_UsedId()); - UsedId udidmeth = new UsedId($1.getOffset()); - udidmeth.set_Name($3.getLexem()); - MCpr.set_UsedId(udidmeth); - - /* #JB# 04.06.2005 */ - /* ########################################################### */ - MCpr.set_Receiver(new Receiver($1)); - /* ########################################################### */ - //auskommentiert von Andreas Stadelmeier (a10023) MCpr.setType(TypePlaceholder.fresh()); - $$=MCpr; - } - | primary '.' IDENTIFIER '('argumentlist ')' - { - de.dhbwstuttgart.logger.Logger.getLogger("parser").debug("M4", Section.PARSER); - MethodCall MCPA = new MethodCall($1.getOffset(),$1.getVariableLength()); - - // PL 05-08-21 primary ist kein UsedId - //$1.usedid.set_Name($3.getLexem()); - //MCPA.set_UsedId($1.get_UsedId()); - UsedId udidmeth = new UsedId($3.getOffset()); - udidmeth.set_Name($3.getLexem()); - MCPA.set_UsedId(udidmeth); - - /* #JB# 04.06.2005 */ - /* ########################################################### */ - MCPA.set_Receiver(new Receiver($1)); - /* ########################################################### */ - MCPA.set_ArgumentList($5); - //auskommentiert von Andreas Stadelmeier (a10023) MCPA.setType(TypePlaceholder.fresh()); - $$=MCPA; - } - // | SUPER '.' IDENTIFIER '(' ')' - // | SUPER '.' IDENTIFIER '('argumentlist')' - -classinstancecreationexpression : NEW classtype '(' ')' - { - NewClass NC = new NewClass($2.getOffset(),$2.getVariableLength()); - NC.set_UsedId($2); - - usedIdsToCheck.addElement($2); - //auskommentiert von Andreas Stadelmeier (a10023) NC.setType(TypePlaceholder.fresh()); - $$=NC; - } - | NEW classtype '(' argumentlist ')' - { - NewClass NCarg = new NewClass($2.getOffset(),$2.getVariableLength()); - NCarg.set_UsedId($2); - usedIdsToCheck.addElement($2); - NCarg.set_ArgumentList($4); - //auskommentiert von Andreas Stadelmeier (a10023) NCarg.setType(TypePlaceholder.fresh()); - $$=NCarg; - } - -conditionalandexpression : inclusiveorexpression - { - $$=$1; - } - | conditionalandexpression LOGICALAND inclusiveorexpression - { - Binary And = new Binary($1.getOffset(),$1.getVariableLength()); - AndOp AndO = new AndOp($1.getOffset(),$1.getVariableLength()); - And.set_Expr1($1); - And.set_Expr2($3); - And.set_Operator(AndO); - //auskommentiert von Andreas Stadelmeier (a10023) And.setType(TypePlaceholder.fresh()); - $$=And; - } - -/* -fieldaccess :primary '.' IDENTIFIER - | SUPER '.' IDENTIFIER -*/ - -unaryexpression : preincrementexpression - { - $$=$1; - } - | predecrementexpression - { - $$=$1; - } - | '+' unaryexpression - { - PositivExpr POSEX=new PositivExpr($2.getOffset(),$2.getVariableLength()); - UnaryPlus UP= new UnaryPlus(); - POSEX.set_UnaryPlus(UP); - POSEX.set_Expr($2); - $$=POSEX; - } - | '-' unaryexpression - { - NegativeExpr NEGEX=new NegativeExpr($2.getOffset(),$2.getVariableLength()); - UnaryMinus UM=new UnaryMinus(); - NEGEX.set_UnaryMinus(UM); - NEGEX.set_Expr($2); - $$=NEGEX; - } - | unaryexpressionnotplusminus - { - $$=$1; - } - -postfixexpression :primary - { - $$=$1; - } - | name - { - if ($1.get_Name().size() > 1) { - - //macht aus der Liste von Strings - //in usedid.name einen InstVar - InstVar INSTVA = new InstVar($1,$1.getOffset(),$1.getVariableLength()); - - //auskommentiert von Andreas Stadelmeier (a10023) INSTVA.setType(TypePlaceholder.fresh()); - $$ = INSTVA; - } - else { - LocalOrFieldVarOrClassname Postincexpr = new LocalOrFieldVarOrClassname($1.getOffset(),$1.getVariableLength()); - Postincexpr.set_UsedId($1); - //auskommentiert von Andreas Stadelmeier (a10023) Postincexpr.setType(TypePlaceholder.fresh()); - $$=Postincexpr; - } - } - | postincrementexpression - { - $$=$1; - } - | postdecrementexpression - { - $$=$1; - } - -primary : primarynonewarray - { - $$=$1; - } - -inclusiveorexpression : exclusiveorexpression - { - $$=$1; - } - | inclusiveorexpression '|' exclusiveorexpression - -primarynonewarray : literal - { - $$=$1; - } - | THIS - { - This T = new This($1.getOffset(),$1.getLexem().length()); - UsedId UT = new UsedId($1.getOffset()); - UT.set_Name($1.getLexem()); - T.set_UsedId(UT); - $$=T; - } -/* auskommentiert von Andreas Stadelmeier - | '('expression')' - { - $$=$2; - } - */ -/* - | classinstancecreationexpression - { - $$=$1; - } - | fieldaccess -*/ - | methodinvocation - { - $$=$1; - } - |lambdaexpression - { - $$=$1; - } - - -unaryexpressionnotplusminus : postfixexpression {$$=$1;} - // | '~' unaryexpression - | '!' unaryexpression {NotExpr NE=new NotExpr($2.getOffset(),$2.getVariableLength()); - UnaryNot UN=new UnaryNot(); - NE.set_UnaryNot(UN); - NE.set_Expr($2); - $$=NE; - } - /* auskommentiert von Andreas Stadelmeier - | castexpression {$$=$1;} - */ - -exclusiveorexpression :andexpression {$$=$1;} - | exclusiveorexpression '^' andexpression //{ - // - //} - -literal : INTLITERAL {IntLiteral IL = new IntLiteral(); - IL.set_Int($1.String2Int()); - $$ = IL; - } - - | BOOLLITERAL {BoolLiteral BL = new BoolLiteral(); - BL.set_Bool($1.String2Bool()); - $$ = BL; - } - | CHARLITERAL {CharLiteral CL = new CharLiteral(); - CL.set_Char($1.CharInString()); - $$=CL; - } - | STRINGLITERAL - { - StringLiteral ST = new StringLiteral(); - ST.set_String($1.get_String()); - $$=ST; - } - | LONGLITERAL { LongLiteral LL = new LongLiteral(); - LL.set_Long($1.String2Long()); - $$ = LL; - } - | FLOATLITERAL { - FloatLiteral FL = new FloatLiteral(); - FL.set_Float($1.String2Float()); - $$ = FL; - } - | DOUBLELITERAL { - DoubleLiteral DL = new DoubleLiteral(); - DL.set_Double($1.String2Double()); - $$ = DL; - } - | JNULL; - { - Null NN = new Null(); - $$=NN; - } - -/* auskommentiert von Andreas Stadelmeier -//Anmerkung: Ursprünglich Stand hier: "castexpression : '(' primitivetype ')' unaryexpression" -//Dies ist allerdings falsch. Der jetzige Stand führt jedoch zu reduce-Konflikt mit Lambda Expression -castexpression : '(' type ')' unaryexpression - { - CastExpr CaEx=new CastExpr($4.getOffset(),$4.getVariableLength()); - CaEx.set_Type($2); - CaEx.set_Expr($4); - $$=CaEx; - } -*/ - //| '(' expression ')' unaryexpressionnotplusminus - -andexpression :equalityexpression - { - $$=$1; - } - | andexpression '&' equalityexpression - { - } - -equalityexpression : relationalexpression - { - $$=$1; - } - | equalityexpression EQUAL relationalexpression - { - Binary EQ = new Binary($1.getOffset(),$1.getVariableLength()); - EqualOp EO = new EqualOp($1.getOffset(),$1.getVariableLength()); - EQ.set_Expr1($1); - EQ.set_Expr2($3); - EQ.set_Operator(EO); - //auskommentiert von Andreas Stadelmeier (a10023) EQ.setType(TypePlaceholder.fresh()); - $$=EQ; - } - | equalityexpression NOTEQUAL relationalexpression - { - Binary NEQ = new Binary($1.getOffset(),$1.getVariableLength()); - NotEqualOp NEO = new NotEqualOp($1.getOffset(),$1.getVariableLength()); - NEQ.set_Expr1($1); - NEQ.set_Expr2($3); - NEQ.set_Operator(NEO); - //auskommentiert von Andreas Stadelmeier (a10023) NEQ.setType(TypePlaceholder.fresh()); - $$=NEQ; - } - -relationalexpression : shiftexpression - { - $$=$1; - } - | relationalexpression '<' shiftexpression - { - Binary LO = new Binary($1.getOffset(),$1.getVariableLength()); - LessOp LOO = new LessOp($1.getOffset(),$1.getVariableLength()); - LO.set_Expr1($1); - LO.set_Expr2($3); - LO.set_Operator(LOO); - //auskommentiert von Andreas Stadelmeier (a10023) LO.setType(TypePlaceholder.fresh()); - $$=LO; - } - | relationalexpression '>' shiftexpression - { - Binary GO = new Binary($1.getOffset(),$1.getVariableLength()); - GreaterOp GOO = new GreaterOp($1.getOffset(),$1.getVariableLength()); - GO.set_Expr1($1); - GO.set_Expr2($3); - GO.set_Operator( GOO ); - //auskommentiert von Andreas Stadelmeier (a10023) GO.setType(TypePlaceholder.fresh()); - $$=GO; - } - | relationalexpression LESSEQUAL shiftexpression - { - Binary LE = new Binary($1.getOffset(),$1.getVariableLength()); - LessEquOp LEO = new LessEquOp($1.getOffset(),$1.getVariableLength()); - LE.set_Expr1($1); - LE.set_Expr2($3); - LE.set_Operator(LEO); - //auskommentiert von Andreas Stadelmeier (a10023) LE.setType(TypePlaceholder.fresh()); - $$=LE; - } - | relationalexpression GREATEREQUAL shiftexpression - { - Binary GE = new Binary($1.getOffset(),$1.getVariableLength()); - GreaterEquOp GEO = new GreaterEquOp($1.getOffset(),$1.getVariableLength()); - GE.set_Expr1($1); - GE.set_Expr2($3); - GE.set_Operator(GEO); - //auskommentiert von Andreas Stadelmeier (a10023) GE.setType(TypePlaceholder.fresh()); - $$=GE; - } - | relationalexpression INSTANCEOF referencetype - { - InstanceOf ISO=new InstanceOf($1.getOffset(),$1.getVariableLength()); - ISO.set_Expr($1); - ISO.set_Type($3); - $$=ISO; - } - -shiftexpression : additiveexpression - { - $$=$1; - } - -additiveexpression :multiplicativeexpression - { - $$=$1; - } - | additiveexpression '+' multiplicativeexpression - { - Binary AD = new Binary($1.getOffset(),$1.getVariableLength()); - PlusOp PO = new PlusOp($1.getOffset(),$1.getVariableLength()); - AD.set_Expr1($1); - AD.set_Expr2($3); - AD.set_Operator(PO); - //auskommentiert von Andreas Stadelmeier (a10023) AD.setType(TypePlaceholder.fresh()); - $$=AD; - } - | additiveexpression '-' multiplicativeexpression - { - Binary MI = new Binary($1.getOffset(),$1.getVariableLength()); - MinusOp MO = new MinusOp($1.getOffset(),$1.getVariableLength()); - MI.set_Expr1($1); - MI.set_Expr2($3); - MI.set_Operator(MO); - //auskommentiert von Andreas Stadelmeier (a10023) MI.setType(TypePlaceholder.fresh()); - $$=MI; - } - -multiplicativeexpression : unaryexpression - { - $$=$1; - } - | multiplicativeexpression '*' unaryexpression - { - Binary ML = new Binary($1.getOffset(),$1.getVariableLength()); - TimesOp TO = new TimesOp($1.getOffset(),$1.getVariableLength()); - ML.set_Expr1($1); - ML.set_Expr2($3); - ML.set_Operator(TO); - //auskommentiert von Andreas Stadelmeier (a10023) ML.setType(TypePlaceholder.fresh()); - $$=ML; - } - | multiplicativeexpression '/' unaryexpression - { - Binary DV = new Binary($1.getOffset(),$1.getVariableLength()); - DivideOp DO = new DivideOp($1.getOffset(),$1.getVariableLength()); - DV.set_Expr1($1); - DV.set_Expr2($3); - DV.set_Operator(DO); - //auskommentiert von Andreas Stadelmeier (a10023) DV.setType(TypePlaceholder.fresh()); - $$ = DV; - } - | multiplicativeexpression '%' unaryexpression - { - Binary MD = new Binary($1.getOffset(),$1.getVariableLength()); - ModuloOp MO = new ModuloOp($1.getOffset(),$1.getVariableLength()); - MD.set_Expr1($1); - MD.set_Expr2($3); - MD.set_Operator(MO); - //auskommentiert von Andreas Stadelmeier (a10023) MD.setType(TypePlaceholder.fresh()); - $$ =MD; - } - - -%% \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/JavaParser_old.jay b/src/de/dhbwstuttgart/parser/JavaParser_old.jay deleted file mode 100755 index 04b93a75..00000000 --- a/src/de/dhbwstuttgart/parser/JavaParser_old.jay +++ /dev/null @@ -1,1567 +0,0 @@ -%{ -package mycompiler.myparser; - -import de.dhbwstuttgart.typeinference.Menge; - -import mycompiler.DeclId; -import mycompiler.ExceptionList; -import mycompiler.MyCompiler; -import mycompiler.ParaList; -import mycompiler.SourceFile; -import mycompiler.UsedId; -import mycompiler.myclass.Class; -import mycompiler.myclass.ClassBody; -import mycompiler.myclass.ClassDeclId; -import mycompiler.myclass.Constructor; -import mycompiler.myclass.FieldDecl; -import mycompiler.myclass.FormalParameter; -import mycompiler.myclass.InstVarDecl; -import mycompiler.myclass.Method; -import mycompiler.myclass.ParameterList; -import mycompiler.mymodifier.Abstract; -import mycompiler.mymodifier.Modifier; -import mycompiler.mymodifier.Modifiers; -import mycompiler.mymodifier.Private; -import mycompiler.mymodifier.Protected; -import mycompiler.mymodifier.Public; -import mycompiler.mymodifier.Static; -import mycompiler.myoperator.AndOp; -import mycompiler.myoperator.DivideOp; -import mycompiler.myoperator.EqualOp; -import mycompiler.myoperator.GreaterEquOp; -import mycompiler.myoperator.GreaterOp; -import mycompiler.myoperator.LessEquOp; -import mycompiler.myoperator.LessOp; -import mycompiler.myoperator.MinusOp; -import mycompiler.myoperator.ModuloOp; -import mycompiler.myoperator.NotEqualOp; -import mycompiler.myoperator.Operator; -import mycompiler.myoperator.OrOp; -import mycompiler.myoperator.PlusOp; -import mycompiler.myoperator.TimesOp; -import mycompiler.mystatement.ArgumentList; -import mycompiler.mystatement.Assign; -import mycompiler.mystatement.Binary; -import mycompiler.mystatement.Block; -import mycompiler.mystatement.BoolLiteral; -import mycompiler.mystatement.CastExpr; -import mycompiler.mystatement.CharLiteral; -import mycompiler.mystatement.EmptyStmt; -import mycompiler.mystatement.Expr; -import mycompiler.mystatement.ExprStmt; -import mycompiler.mystatement.IfStmt; -import mycompiler.mystatement.InstanceOf; -import mycompiler.mystatement.IntLiteral; -import mycompiler.mystatement.Literal; -import mycompiler.mystatement.LocalOrFieldVar; -import mycompiler.mystatement.LocalVarDecl; -import mycompiler.mystatement.MethodCall; -import mycompiler.mystatement.NegativeExpr; -import mycompiler.mystatement.NewClass; -import mycompiler.mystatement.NotExpr; -import mycompiler.mystatement.Null; -import mycompiler.mystatement.PositivExpr; -import mycompiler.mystatement.PostDecExpr; -import mycompiler.mystatement.PostIncExpr; -import mycompiler.mystatement.PreDecExpr; -import mycompiler.mystatement.PreIncExpr; -import mycompiler.mystatement.Return; -import mycompiler.mystatement.Statement; -import mycompiler.mystatement.StringLiteral; -import mycompiler.mystatement.This; -import mycompiler.mystatement.UnaryMinus; -import mycompiler.mystatement.UnaryNot; -import mycompiler.mystatement.UnaryPlus; -import mycompiler.mystatement.WhileStmt; -import mycompiler.mytype.BaseType; -import mycompiler.mytype.BooleanType; -import mycompiler.mytype.CharacterType; -import mycompiler.mytype.IntegerType; -import mycompiler.mytype.RefType; -import mycompiler.mytype.Type; -import mycompiler.mytype.TyploseVariable; - -public class JavaParser{ -public Menge path = new Menge(); -%} - -%token ABSTRACT -%token BOOLEAN -%token BREAK -%token CASE -%token CATCH -%token CHAR -%token CLASS -%token CONTINUE -%token DEFAULT -%token DO -%token ELSE -%token EXTENDS -%token FINALLY -%token FOR -%token IF -%token INSTANCEOF -%token INT -%token NEW -%token PRIVATE -%token PROTECTED -%token PUBLIC -%token RETURN -%token STATIC -%token SUPER -%token SWITCH -%token THIS -%token THROW -%token THROWS -%token TRY -%token VOID -%token WHILE -%token INTLITERAL -%token BOOLLITERAL -%token JNULL -%token CHARLITERAL -%token STRINGLITERAL -%token IDENTIFIER -%token EQUAL -%token LESSEQUAL -%token GREATEREQUAL -%token NOTEQUAL -%token LOGICALOR -%token LOGICALAND -%token INCREMENT -%token DECREMENT -%token SHIFTLEFT -%token SHIFTRIGHT -%token UNSIGNEDSHIFTRIGHT -%token SIGNEDSHIFTRIGHT -%token PLUSEQUAL -%token MINUSEQUAL -%token TIMESEQUAL -%token DIVIDEEQUAL -%token ANDEQUAL -%token OREQUAL -%token XOREQUAL -%token MODULOEQUAL -%token SHIFTLEFTEQUAL -%token SIGNEDSHIFTRIGHTEQUAL -%token UNSIGNEDSHIFTRIGHTEQUAL -%token BRACE -%token RELOP -%token OP -%token EOF - -%type classdeclaration -%type classbody -%type fielddeclaration -%type methodheader -%type methoddeclaration -%type methoddeclarator -%type classbodydeclarations -%type classbodydeclaration -%type classmemberdeclaration -%type variabledeclarators -%type variabledeclarator -%type variabledeclaratorid -%type simplename -%type qualifiedname -%type name -%type super -%type classtype -%type classorinterfacetype -%type integraltype -%type numerictype -%type primitivetype -%type referencetype -%type classtypelist -%type type -%type modifiers -%type modifier -%type block -%type methodbody -%type blockstatements -%type localvariabledeclarationstatement -%type localvariabledeclaration -%type throws -%type formalparameter -%type formalparameterlist -%type literal -%type primarynonewarray -%type primary -%type postfixexpression -%type unaryexpressionnotplusminus -%type unaryexpression -%type multiplicativeexpression -%type additiveexpression -%type shiftexpression -%type relationalexpression -%type equalityexpression -%type andexpression -%type exclusiveorexpression -%type inclusiveorexpression -%type conditionalandexpression -%type conditionalorexpression -%type conditionalexpression -%type assignmentexpression -%type expression -%type statementexpression -%type preincrementexpression -%type predecrementexpression -%type postincrementexpression -%type postdecrementexpression -%type expressionstatement -%type variableinitializer -%type statementwithouttrailingsubstatement -%type blockstatement -%type statement -%type statementnoshortif -%type whilestatement -%type whilestatementnoshortif -%type ifthenstatement -%type ifthenelsestatement -%type ifthenelsestatementnoshortif -%type emptystatement -%type returnstatement -%type classinstancecreationexpression -%type compilationunit -%type typedeclarations -%type assignment -%type assignmentoperator -%type lefthandside -%type argumentlist -%type methodinvocation -%type typedeclaration -%type constructordeclaration -%type constructordeclarator -%type constructorbody -%type explicitconstructorinvocation -%type staticinitializer -%type castexpression -%type paralist -%left ',' -%% - -compilationunit :typedeclarations - { - $$=$1; - } - -typedeclarations :typedeclaration - { - SourceFile Scfile = new SourceFile(); - Scfile.set_Class($1); - $$=Scfile; - } - |typedeclarations typedeclaration - { - $1.set_Class($2); - $$=$1; - } - -name :qualifiedname - { - $$=$1; - } - |simplename - { - $$=$1; - } - -typedeclaration :classdeclaration - { - $$=$1; - } - -qualifiedname : name '.' IDENTIFIER - { - $1.set_Name($3.getLexem()); - $$=$1; - } - -simplename : IDENTIFIER - { - UsedId UI = new UsedId(); - UI.set_Name( $1.getLexem() ); - $$ = UI; - } - -classdeclaration : CLASS IDENTIFIER classbody - { - MyCompiler.Debug("P->Neue Klasse: " + $2.getLexem(), 3); - Class C = new Class(); - ClassDeclId CDI = new ClassDeclId(); - CDI.set_classname( $2.getLexem() ); - C.set_ClassDeclId( CDI ); - C.set_ClassBody($3); - $$ = C; - } - - | modifiers CLASS IDENTIFIER classbody - { - Class Cmod = new Class(); - ClassDeclId CDImod = new ClassDeclId(); - CDImod.set_Modifiers($1); - CDImod.set_classname($3.getLexem()); - Cmod.set_ClassDeclId(CDImod); - Cmod.set_ClassBody($4); - $$ = Cmod; - } - - | CLASS IDENTIFIER super classbody - { - Class Csup = new Class(); - ClassDeclId CDIsup = new ClassDeclId(); - CDIsup.set_classname($2.getLexem()); - Csup.set_ClassDeclId(CDIsup); - Csup.set_UsedId($3); - Csup.set_ClassBody($4); - $$ = Csup; - } - - |modifiers CLASS IDENTIFIER super classbody - { - Class Cmodsup = new Class(); - ClassDeclId CDImodsup = new ClassDeclId(); - CDImodsup.set_Modifiers($1); - CDImodsup.set_classname($3.getLexem()); - Cmodsup.set_ClassDeclId(CDImodsup); - Cmodsup.set_UsedId($4); - Cmodsup.set_ClassBody($5); - $$ = Cmodsup; - } - | modifiers CLASS IDENTIFIER '<'paralist'>'classbody - { - Class Cmod = new Class(); - ClassDeclId CDImod = new ClassDeclId(); - CDImod.set_Modifiers($1); - CDImod.set_classname($3.getLexem()); - Cmod.set_ClassDeclId(CDImod); - Cmod.set_ParaList($5.get_ParaList()); - Cmod.set_ClassBody($7); - $$ = Cmod; - } - - |CLASS IDENTIFIER '<' paralist '>'classbody - { - Class C = new Class(); - ClassDeclId CDI = new ClassDeclId(); - CDI.set_classname($2.getLexem()); - C.set_ClassDeclId(CDI); - C.set_ClassBody($6); - C.set_ParaList($4.get_ParaList()); - $$ = C; - } - - | CLASS IDENTIFIER '<' paralist '>'super classbody - { - MyCompiler.Debug( "Klassendefinition: Basisklassen-Parameter = " + $4.get_ParaList(), 3 ); - MyCompiler.Debug( "Klassendefinition: Superklassen-Parameter = " + $6.get_ParaList(), 3 ); - MyCompiler.Debug( "Klassendefinition: Superklassen-Parameter = " + $6.get_ParaList().hashCode(), 3 ); - Class Csup = new Class(); - ClassDeclId CDIsup = new ClassDeclId(); - CDIsup.set_classname($2.getLexem()); - Csup.set_ClassDeclId(CDIsup); - Csup.set_ParaList($4.get_ParaList()); - Csup.set_UsedId($6); - Csup.set_ClassBody($7); - $$ = Csup; - } - - |modifiers CLASS IDENTIFIER '<'paralist'>'super classbody - { - Class Cmodsup = new Class(); - ClassDeclId CDImodsup = new ClassDeclId(); - CDImodsup.set_Modifiers($1); - CDImodsup.set_classname($3.getLexem()); - Cmodsup.set_ClassDeclId(CDImodsup); - Cmodsup.set_ParaList($5.get_ParaList()); - Cmodsup.set_UsedId($7); - Cmodsup.set_ClassBody($8); - $$ = Cmodsup; - } - - -paralist : IDENTIFIER - { - ParaList pl = new ParaList(); - pl.paralist.addElement( new TyploseVariable($1.getLexem()) ); - MyCompiler.Debug( "IDENTIFIER --> Paralist für " + $1.getLexem() + " TV", 3 ); - $$ = pl; - } - - | IDENTIFIER '<' paralist '>' - { - ParaList pl = new ParaList(); - RefType t = new RefType( $1.getLexem() ); - t.set_ParaList( $3.get_ParaList() ); - pl.paralist.addElement(t); - MyCompiler.Debug( "IDENTIFIER '<' paralist '>' --> Paralist für " + $1.getLexem() + ": RefType", 3 ); - $$ = pl; - } - - | paralist ',' IDENTIFIER - { - $1.paralist.addElement(new TyploseVariable($3.getLexem())); - MyCompiler.Debug( "paralist ',' IDENTIFIER --> Paralist für " + $3.getLexem() + ": TV", 3 ); - MyCompiler.Debug( "paralist: " + $1.paralist, 3 ); - $$=$1; - } - - | paralist ',' IDENTIFIER '<' paralist '>' - { - RefType t = new RefType( $3.getLexem() ); - t.set_ParaList( $5.get_ParaList() ); - $1.paralist.addElement(t); - MyCompiler.Debug( "paralist ',' IDENTIFIER '<' paralist '>' --> Paralist für " + $3.getLexem() + ": RefType", 3 ); - $$=$1; - } - -classbody : '{' '}' - { - ClassBody CB = new ClassBody(); - $$ = CB; - } - - | '{'classbodydeclarations '}' - { - $$ = $2; - } - -modifiers :modifier - { - Modifiers Mod = new Modifiers(); - Mod.modifier.addElement($1); - $$ = Mod; - } - |modifiers modifier - { - $1.modifier.addElement($2); - $$ = $1; - } - -super :EXTENDS classtype - { - $$ = $2; - } - -classbodydeclarations : classbodydeclaration - { - ClassBody CB = new ClassBody(); - CB.set_FieldDecl( $1 ); - $$=CB; - } - | classbodydeclarations classbodydeclaration - { - $1.set_FieldDecl($2); - $$ = $1; - } - - -modifier : PUBLIC - { - Public Pub = new Public(); - $$=Pub; - } - | PROTECTED - { - Protected Pro = new Protected(); - $$=Pro; - } - | PRIVATE - { - Private Pri = new Private(); - $$=Pri; - } - | STATIC - { - Static Sta = new Static(); - $$=Sta; - } - | ABSTRACT - { - Abstract Abs = new Abstract(); - $$=Abs; - } - -classtype : classorinterfacetype - { - $$ = $1; - } - | classorinterfacetype '<'paralist'>' - { - $1.set_ParaList($3.get_ParaList()); - - /* otth: originale (also diese) Parameterliste retten */ - ((UsedId)$1).vParaOrg = new Menge( $3.get_ParaList() ); - - $$ = $1; - } - -classbodydeclaration : classmemberdeclaration - { - $$=$1; - } - | staticinitializer - { - $$=$1; - } - | constructordeclaration - { - $$=$1; - } - -classorinterfacetype : name - { - $$=$1; - } - -classmemberdeclaration : fielddeclaration - { - $$=$1; - } - | methoddeclaration - { - $$=$1; - } - -staticinitializer : STATIC block - { - Method STAT = new Method(); - DeclId DST = new DeclId(); - DST.set_Name($1.getLexem()); - STAT.set_DeclId(DST); - Static ST = new Static(); - Modifiers MOD = new Modifiers(); - MOD.modifier.addElement(ST); - STAT.set_Modifiers(MOD); - STAT.set_Block($2); - $$=STAT; - } - -constructordeclaration : constructordeclarator constructorbody - { - $1.set_Block($2); - $$ = $1; - } - | modifiers constructordeclarator constructorbody - { - $2.set_Block($3); - $2.set_Modifiers($1); - $$ = $2; - } - -fielddeclaration : type variabledeclarators ';' - { - MyCompiler.Debug("T->Parser->fielddeclaration ...: type " + $1, 5); - $2.set_Type($1); - $$ = $2; - } - - | modifiers type variabledeclarators ';' - { - $3.set_Type($2); - for(int i=0;i<($3.declid.size());i++) - { - $3.declid.setElementAt((((DeclId)($3.declid.elementAt(i))).modifiers=$1),i); - } - $$ = $3; - } - -methoddeclaration : methodheader methodbody - { - $1.set_Block($2); - $$=$1; - } - -block : '{' '}' - - { - Block Bl = new Block(); - $$=Bl; - } - - | '{' blockstatements '}' - { - $$=$2; - } - -constructordeclarator : simplename '(' ')' - { - Constructor CON = new Constructor(); - DeclId DIDCon = new DeclId(); - DIDCon.set_Name($1.get_Name_1Element()); - CON.set_DeclId(DIDCon); - $$=CON; - } - | simplename '('formalparameterlist')' - { - Constructor CONpara = new Constructor(); - DeclId DIconpara = new DeclId(); - DIconpara.set_Name($1.get_Name_1Element()); - CONpara.set_DeclId(DIconpara); - CONpara.set_ParaList($3); - $$=CONpara; - } - -constructorbody : '{' '}' - { - Block CBL = new Block(); - $$=CBL; - } - | '{' explicitconstructorinvocation '}' - { - Block CBLexpl = new Block(); - CBLexpl.set_Statement($2); - $$=CBLexpl; - } - | '{' blockstatements '}' - { - $$=$2; - } - | '{'explicitconstructorinvocation blockstatements '}' - { - Block CBes = new Block(); - CBes.set_Statement($2); - for(int j=0;j<$3.statements.size();j++) - { - CBes.set_Statement((Statement)$3.statements.elementAt(j)); - } - $$=CBes; - } - -throws : THROWS classtypelist - { - ExceptionList EL = new ExceptionList(); - EL.set_addElem($2); - $$=EL; - } - -methodheader : type methoddeclarator - { - $2.set_ReturnType($1); - $$=$2; - } - | modifiers type methoddeclarator - { - $3.set_Modifiers($1); - $3.set_ReturnType($2); - $$=$3; - } - | type methoddeclarator throws - { - $2.set_ReturnType($1); - $2.set_ExceptionList($3); - $$=$2; - } - | modifiers type methoddeclarator throws - { - $3.set_Modifiers($1); - $3.set_ReturnType($2); - $3.set_ExceptionList($4); - $$=$3; - } - | VOID methoddeclarator - { - Type Voit = new Type(); - Voit.set_Type($1.getLexem()); - $2.set_ReturnType(Voit); - $$=$2; - } - | modifiers VOID methoddeclarator - { - Type voit = new Type(); - voit.set_Type($2.getLexem()); - $3.set_Modifiers($1); - $3.set_ReturnType(voit); - $$=$3; - } - | VOID methoddeclarator throws - { - Type voyt = new Type(); - voyt.set_Type($1.getLexem()); - $2.set_ReturnType(voyt); - $2.set_ExceptionList($3); - $$=$2; - } - | modifiers VOID methoddeclarator throws - { - Type voyd = new Type(); - voyd.set_Type($2.getLexem()); - $3.set_Modifiers($1); - $3.set_ReturnType(voyd); - $3.set_ExceptionList($4); - $$=$3; - } - -type : primitivetype - { - $$=$1; - } - |referencetype - { - $$=$1; - } - -variabledeclarators : variabledeclarator - { - InstVarDecl IVD = new InstVarDecl(); - IVD.declid.addElement( $1 ); - $$ = IVD; - } - | variabledeclarators ',' variabledeclarator - { - $1.declid.addElement($3); - $$=$1; - } - -methodbody : block - { - $$=$1; - } - -blockstatements : blockstatement - { - Block Blstat = new Block(); - Blstat.set_Statement($1); - $$=Blstat; - } - - | blockstatements blockstatement - { - $1.set_Statement($2); - $$=$1; - } - -formalparameterlist :formalparameter - { - ParameterList PL = new ParameterList(); - PL.set_AddParameter($1); - $$ = PL; - } - |formalparameterlist ',' formalparameter - { - $1.set_AddParameter($3); - $$ = $1; - } - -explicitconstructorinvocation : THIS '(' ')' ';' - { - This THCON = new This(); - $$=THCON; - } - |THIS '(' argumentlist ')' ';' - { - This THCONargl = new This(); - THCONargl.set_ArgumentList($3); - $$=THCONargl; - } - // |SUPER '(' ')' ';' - // |SUPER '(' argumentlist ')' ';' - -classtypelist : classtype - { - RefType RT = new RefType(); - RT.set_UsedId($1); - RT.set_Type(RT.used.get_Name_1Element()); - $$=RT; - } - | classtypelist ',' classtype - { - $1.set_UsedId($3); - $1.set_Type($1.used.get_Name_1Element()); - $$=$1; - } - -methoddeclarator :IDENTIFIER '(' ')' - { - Method met = new Method(); - DeclId DImethod = new DeclId(); - DImethod.set_Name($1.getLexem()); - met.set_DeclId(DImethod); - $$ = met; - } - |IDENTIFIER '(' formalparameterlist ')' - { - Method met_para = new Method(); - DeclId Dimet_para = new DeclId(); - Dimet_para.set_Name($1.getLexem()); - met_para.set_DeclId(Dimet_para); - met_para.set_ParaList($3); - $$ = met_para; - } - -primitivetype :BOOLEAN - { - BooleanType BT = new BooleanType(); - BT.set_Type($1.getLexem()); - $$=BT; - } - |numerictype - { - $$=$1; - } - -referencetype :classorinterfacetype - { - MyCompiler.Debug("T->Parser->referenctype: " + $1, 5); - RefType RT = new RefType(); - RT.set_UsedId($1); - RT.set_Type(RT.used.get_Name_1Element()); - $$=RT; - } - -variabledeclarator : variabledeclaratorid - { - $$=$1; - } - - | variabledeclaratorid '=' variableinitializer - { - $1.set_Wert($3); - $$=$1; - } - - | '<' paralist'>' variabledeclaratorid '=' variableinitializer - { - $4.set_Wert($6); - $4.set_Paratyp($2.get_ParaList()); - $$=$4; - } - -blockstatement :localvariabledeclarationstatement - { - $$=$1; - } - |statement - { - $$=$1; - } - -formalparameter : type variabledeclaratorid - { - FormalParameter FP = new FormalParameter(); - FP.set_Type($1); - FP.set_DeclId($2); - $$=FP; - } - - /* otth: Methodenargumente koennen hiermit auch polymorph sein. */ - | type '<'paralist'>' variabledeclaratorid - { - /* Parameterliste setzen */ - $5.set_Paratyp($3.get_ParaList()); - - FormalParameter FP = new FormalParameter(); - FP.set_Type($1); - FP.set_DeclId($5); - $$=FP; - - MyCompiler.Debug("P->Polymorphes Methodenargument hinzugefuegt: Name = " + $5.get_Name() + " Typ = " + $1.get_Type(), 3); - } - -argumentlist : expression - { - ArgumentList AL = new ArgumentList(); - AL.expr.addElement($1); - $$=AL; - } - |argumentlist ',' expression - { - $1.expr.addElement($3); - $$=$1; - } - -numerictype :integraltype - { - $$=$1; - } - -variabledeclaratorid :IDENTIFIER - { - DeclId DI = new DeclId(); - DI.set_Name($1.getLexem()); - $$=DI; - } - -variableinitializer :expression - { - $$=$1; - } - -localvariabledeclarationstatement :localvariabledeclaration ';' - { - $$=$1; - } - -statement :statementwithouttrailingsubstatement - { - $$=$1; - } - |ifthenstatement - { - $$=$1; - } - |ifthenelsestatement - { - $$=$1; - } - |whilestatement - { - $$=$1; - } - -expression :assignmentexpression - { - $$=$1; - } - |classinstancecreationexpression - { - $$=$1; - } - -integraltype :INT - { - IntegerType IT = new IntegerType(); - IT.set_Type($1.getLexem()); - $$=IT; - } - | CHAR - { - CharacterType CT = new CharacterType(); - CT.set_Type($1.getLexem()); - $$=CT; - } - -localvariabledeclaration : type variabledeclarators - { - MyCompiler.Debug("P -> Lokale Variable angelegt!", 3); - LocalVarDecl LVD = new LocalVarDecl(); - LVD.set_Type($1); - LVD.declid=$2.declid; - $$ = LVD; - } - -statementwithouttrailingsubstatement : block - { - $$=$1; - } - | emptystatement - { - $$=$1; - } - | expressionstatement - { - $$=$1; - } - | returnstatement - { - $$=$1; - } - -ifthenstatement : IF '(' expression ')' statement - { - IfStmt Ifst = new IfStmt(); - Ifst.set_Expr($3); - Ifst.set_Then_block($5); - $$=Ifst; - } - -ifthenelsestatement : IF '('expression ')'statementnoshortif ELSE statement - { - IfStmt IfstElst = new IfStmt(); - IfstElst.set_Expr($3); - IfstElst.set_Then_block($5); - IfstElst.set_Else_block($7); - $$=IfstElst; - } - -whilestatement : WHILE '(' expression ')' statement - { - WhileStmt Whlst = new WhileStmt(); - Whlst.set_Expr($3); - Whlst.set_Loop_block($5); - $$=Whlst; - } - -assignmentexpression : conditionalexpression - { - $$=$1; - } - | assignment - { - $$=$1; - } - -emptystatement : ';' - { - EmptyStmt Empst = new EmptyStmt(); - $$=Empst; - } - -expressionstatement : statementexpression ';' - { - $$=$1; - } - -returnstatement : RETURN ';' - { - Return ret = new Return(); - $$= ret; - } - | RETURN expression ';' - { - Return retexp = new Return(); - retexp.set_ReturnExpr($2); - $$=retexp; - } - -statementnoshortif :statementwithouttrailingsubstatement - { - $$=$1; - } - | ifthenelsestatementnoshortif - { - $$=$1; - } - | whilestatementnoshortif - { - $$=$1; - } - -conditionalexpression :conditionalorexpression - { - $$=$1; - } - // | conditionalorexpression '?' expression ':' conditionalexpression - -assignment :lefthandside assignmentoperator assignmentexpression - { - MyCompiler.Debug("\nParser --> Zuweisung1!\n", 3); - Assign Ass = new Assign(); - LocalOrFieldVar LOFV = new LocalOrFieldVar(); - LOFV.set_UsedId($1); - if( $2 == null ) - { - MyCompiler.Debug("\nParser --> Zuweisung1 --> " + $3 + " \n", 3); - Ass.set_Expr( LOFV,$3 ); - } - else - { - Binary Bin = new Binary(); - Bin.set_Expr1(LOFV); - Bin.set_Operator($2); - Bin.set_Expr2($3); - MyCompiler.Debug("\nParser --> Zuweisung1 --> Binary\n", 3); - Ass.set_Expr( LOFV, Bin ); - } - $$=Ass; - } - | lefthandside assignmentoperator classinstancecreationexpression - { - Assign Ass =new Assign(); - LocalOrFieldVar LOFV = new LocalOrFieldVar(); - LOFV.set_UsedId($1); - if($2==null) - { - Ass.set_Expr(LOFV,$3); - } - else - { - Binary Bin = new Binary(); - Bin.set_Expr1(LOFV); - Bin.set_Operator($2); - Bin.set_Expr2($3); - Ass.set_Expr(LOFV,Bin); - } - $$=Ass; - } - -statementexpression :assignment - { - $$=$1; - } - | preincrementexpression - { - $$=$1; - } - | predecrementexpression - { - $$=$1; - } - | postincrementexpression - { - $$=$1; - } - | postdecrementexpression - { - $$=$1; - } - | methodinvocation - { - $$=$1; - } -/* | classinstancecreationexpression - { - $$=$1; - } -*/ - -ifthenelsestatementnoshortif :IF '(' expression ')' statementnoshortif - ELSE statementnoshortif - { - IfStmt IfElno = new IfStmt(); - IfElno.set_Expr($3); - IfElno.set_Then_block($5); - IfElno.set_Else_block($7); - $$=IfElno; - } - -whilestatementnoshortif :WHILE '(' expression ')' statementnoshortif - { - WhileStmt Whstno = new WhileStmt(); - Whstno.set_Expr($3); - Whstno.set_Loop_block($5); - $$=Whstno; - } - -conditionalorexpression : conditionalandexpression - { - $$=$1; - } - | conditionalorexpression LOGICALOR conditionalandexpression - { - Binary LogOr = new Binary(); - OrOp OrO = new OrOp(); - LogOr.set_Expr1($1); - LogOr.set_Expr2($3); - LogOr.set_Operator(OrO); - $$=LogOr; - } - - -lefthandside :name - { - $$=$1; - } - -assignmentoperator : '=' - { - $$=null; - } - | TIMESEQUAL - { - TimesOp TEO = new TimesOp(); - $$=TEO; - } - | DIVIDEEQUAL - { - DivideOp DEO = new DivideOp(); - $$=DEO; - } - | MODULOEQUAL - { - ModuloOp MEO = new ModuloOp(); - $$=MEO; - } - | PLUSEQUAL - { - PlusOp PEO = new PlusOp(); - $$=PEO; - } - | MINUSEQUAL - { - MinusOp MEO = new MinusOp(); - $$=MEO; - } - // | SHIFTLEFTEQUAL - // | SIGNEDSHIFTRIGHTEQUAL - // | UNSIGNEDSHIFTRIGHTEQUAL - // | ANDEQUAL - // | XOREQUAL - // | OREQUAL - -preincrementexpression :INCREMENT unaryexpression - { - PreIncExpr PRINC = new PreIncExpr(); - PRINC.set_Expr($2); - $$=PRINC; - } - -predecrementexpression :DECREMENT unaryexpression - { - PreDecExpr PRDEC = new PreDecExpr(); - PRDEC.set_Expr($2); - $$=PRDEC; - } - -postincrementexpression :postfixexpression INCREMENT - { - PostIncExpr PIE = new PostIncExpr(); - PIE.set_Expr($1); - $$=PIE; - } - -postdecrementexpression :postfixexpression DECREMENT - { - PostDecExpr PDE = new PostDecExpr(); - PDE.set_Expr($1); - $$=PDE; - } - -methodinvocation :name '(' ')' - { - MethodCall MC = new MethodCall(); - MC.set_UsedId($1); - $$=MC; - } - | name '('argumentlist')' - { - MethodCall MCarg = new MethodCall(); - MCarg.set_UsedId($1); - MCarg.set_ArgumentList($3); - $$=MCarg; - } - | primary '.' IDENTIFIER '(' ')' - { - MethodCall MCpr = new MethodCall(); - $1.usedid.set_Name($3.getLexem()); - MCpr.set_UsedId($1.get_UsedId()); - $$=MCpr; - } - | primary '.' IDENTIFIER '('argumentlist ')' - { - MethodCall MCPA = new MethodCall(); - $1.usedid.set_Name($3.getLexem()); - MCPA.set_UsedId($1.get_UsedId()); - MCPA.set_ArgumentList($5); - $$=MCPA; - } - // | SUPER '.' IDENTIFIER '(' ')' - // | SUPER '.' IDENTIFIER '('argumentlist')' - -classinstancecreationexpression : NEW classtype '(' ')' - { - NewClass NC = new NewClass(); - NC.set_UsedId($2); - $$=NC; - } - | NEW classtype '(' argumentlist ')' - { - NewClass NCarg = new NewClass(); - NCarg.set_UsedId($2); - NCarg.set_ArgumentList($4); - $$=NCarg; - } - -conditionalandexpression : inclusiveorexpression - { - $$=$1; - } - | conditionalandexpression LOGICALAND inclusiveorexpression - { - Binary And = new Binary(); - AndOp AndO = new AndOp(); - And.set_Expr1($1); - And.set_Expr2($3); - And.set_Operator(AndO); - $$=And; - } - -/* -fieldaccess :primary '.' IDENTIFIER - | SUPER '.' IDENTIFIER -*/ - -unaryexpression : preincrementexpression - { - $$=$1; - } - | predecrementexpression - { - $$=$1; - } - | '+' unaryexpression - { - PositivExpr POSEX=new PositivExpr(); - UnaryPlus UP= new UnaryPlus(); - POSEX.set_UnaryPlus(UP); - POSEX.set_Expr($2); - $$=POSEX; - } - | '-' unaryexpression - { - NegativeExpr NEGEX=new NegativeExpr(); - UnaryMinus UM=new UnaryMinus(); - NEGEX.set_UnaryMinus(UM); - NEGEX.set_Expr($2); - $$=NEGEX; - } - | unaryexpressionnotplusminus - { - $$=$1; - } - -postfixexpression :primary - { - $$=$1; - } - | name - { - LocalOrFieldVar Postincexpr = new LocalOrFieldVar(); - Postincexpr.set_UsedId($1); - $$=Postincexpr; - } - | postincrementexpression - { - $$=$1; - } - | postdecrementexpression - { - $$=$1; - } - -primary : primarynonewarray - { - $$=$1; - } - -inclusiveorexpression : exclusiveorexpression - { - $$=$1; - } - | inclusiveorexpression '|' exclusiveorexpression - -primarynonewarray : literal - { - $$=$1; - } - | THIS - { - This T = new This(); - UsedId UT = new UsedId(); - UT.set_Name($1.getLexem()); - T.set_UsedId(UT); - $$=T; - } - - | '('expression')' - { - $$=$2; - } -/* - | classinstancecreationexpression - { - $$=$1; - } - | fieldaccess -*/ - | methodinvocation - { - $$=$1; - } - -unaryexpressionnotplusminus : postfixexpression {$$=$1;} - // | '~' unaryexpression - | '!' unaryexpression {NotExpr NE=new NotExpr(); - UnaryNot UN=new UnaryNot(); - NE.set_UnaryNot(UN); - NE.set_Expr($2); - $$=NE; - } - | castexpression {$$=$1;} - -exclusiveorexpression :andexpression {$$=$1;} - | exclusiveorexpression '^' andexpression //{ - // - //} - -literal : INTLITERAL {IntLiteral IL = new IntLiteral(); - IL.set_Int($1.String2Int()); - $$ = IL; - } - - | BOOLLITERAL {BoolLiteral BL = new BoolLiteral(); - BL.set_Bool($1.String2Bool()); - $$ = BL; - } - | CHARLITERAL {CharLiteral CL = new CharLiteral(); - CL.set_Char($1.CharInString()); - $$=CL; - } - | STRINGLITERAL - { - StringLiteral ST = new StringLiteral(); - ST.set_String($1.get_String()); - $$=ST; - } - | JNULL; - { - Null NN = new Null(); - $$=NN; - } - -castexpression : '(' primitivetype ')' unaryexpression - { - CastExpr CaEx=new CastExpr(); - CaEx.set_Type($2); - CaEx.set_Expr($4); - $$=CaEx; - } - //| '(' expression ')' unaryexpressionnotplusminus - -andexpression :equalityexpression - { - $$=$1; - } - | andexpression '&' equalityexpression - { - } - -equalityexpression : relationalexpression - { - $$=$1; - } - | equalityexpression EQUAL relationalexpression - { - Binary EQ = new Binary(); - EqualOp EO = new EqualOp(); - EQ.set_Expr1($1); - EQ.set_Expr2($3); - EQ.set_Operator(EO); - $$=EQ; - } - | equalityexpression NOTEQUAL relationalexpression - { - Binary NEQ = new Binary(); - NotEqualOp NEO = new NotEqualOp(); - NEQ.set_Expr1($1); - NEQ.set_Expr2($3); - NEQ.set_Operator(NEO); - $$=NEQ; - } - -relationalexpression : shiftexpression - { - $$=$1; - } - | relationalexpression '<' shiftexpression - { - Binary LO = new Binary(); - LessOp LOO = new LessOp(); - LO.set_Expr1($1); - LO.set_Expr2($3); - LO.set_Operator(LOO); - $$=LO; - } - | relationalexpression '>' shiftexpression - { - Binary GO = new Binary(); - GreaterOp GOO = new GreaterOp(); - GO.set_Expr1($1); - GO.set_Expr2($3); - GO.set_Operator( GOO ); - $$=GO; - } - | relationalexpression LESSEQUAL shiftexpression - { - Binary LE = new Binary(); - LessEquOp LEO = new LessEquOp(); - LE.set_Expr1($1); - LE.set_Expr2($3); - LE.set_Operator(LEO); - $$=LE; - } - | relationalexpression GREATEREQUAL shiftexpression - { - Binary GE = new Binary(); - GreaterEquOp GEO = new GreaterEquOp(); - GE.set_Expr1($1); - GE.set_Expr2($3); - GE.set_Operator(GEO); - $$=GE; - } - | relationalexpression INSTANCEOF referencetype - { - InstanceOf ISO=new InstanceOf(); - ISO.set_Expr($1); - ISO.set_Type($3); - $$=ISO; - } - -shiftexpression : additiveexpression - { - $$=$1; - } - -additiveexpression :multiplicativeexpression - { - $$=$1; - } - | additiveexpression '+' multiplicativeexpression - { - Binary AD = new Binary(); - PlusOp PO = new PlusOp(); - AD.set_Expr1($1); - AD.set_Expr2($3); - AD.set_Operator(PO); - $$=AD; - } - | additiveexpression '-' multiplicativeexpression - { - Binary MI = new Binary(); - MinusOp MO = new MinusOp(); - MI.set_Expr1($1); - MI.set_Expr2($3); - MI.set_Operator(MO); - $$=MI; - } - -multiplicativeexpression : unaryexpression - { - $$=$1; - } - | multiplicativeexpression '*' unaryexpression - { - Binary ML = new Binary(); - TimesOp TO = new TimesOp(); - ML.set_Expr1($1); - ML.set_Expr2($3); - ML.set_Operator(TO); - $$=ML; - } - | multiplicativeexpression '/' unaryexpression - { - Binary DV = new Binary(); - DivideOp DO = new DivideOp(); - DV.set_Expr1($1); - DV.set_Expr2($3); - DV.set_Operator(DO); - $$ = DV; - } - | multiplicativeexpression '%' unaryexpression - { - Binary MD = new Binary(); - ModuloOp MO = new ModuloOp(); - MD.set_Expr1($1); - MD.set_Expr2($3); - MD.set_Operator(MO); - $$ =MD; - } - -/* OTTH: Methodenparametertypen müssen nicht mehr angegeben werden */ - -formalparameter : variabledeclaratorid - { - MyCompiler.Debug("\nFunktionsdeklaration mit typlosen Parametern: " + $1.name, 3); - - FormalParameter FP = new FormalParameter(); - - Type T = new TyploseVariable(""); /* otth: Name wird automatisch berechnet */ - MyCompiler.Debug("\n--> berechneter Name: " + T.get_Type(), 3); - - FP.set_Type( T ); - FP.set_DeclId($1); - - $$=FP; - } - -%% \ No newline at end of file diff --git a/src/de/dhbwstuttgart/parser/RunParser.java b/src/de/dhbwstuttgart/parser/RunParser.java new file mode 100644 index 00000000..9489ca6c --- /dev/null +++ b/src/de/dhbwstuttgart/parser/RunParser.java @@ -0,0 +1,33 @@ +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.ANTLRInputStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ParseTreeWalker; +import de.dhbwstuttgart.syntaxtree.*; + +import java.util.Scanner; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +public class RunParser{ + public static void main(String[] args){ + try{ + Scanner sc = new Scanner(System.in); + String inputString = sc.nextLine(); + while(sc.hasNextLine()) inputString = inputString + sc.nextLine(); + InputStream stream = new ByteArrayInputStream(inputString.getBytes(StandardCharsets.UTF_8)); + ANTLRInputStream input = new ANTLRInputStream(stream); + Java8Lexer lexer = new Java8Lexer(input); + CommonTokenStream tokens = new CommonTokenStream(lexer); + Java8Parser parser = new Java8Parser(tokens); + ParserRuleContext tree = parser.compilationUnit(); + SyntaxTreeGenerator generator = new SyntaxTreeGenerator(null); + generator.convert((Java8Parser.CompilationUnitContext) tree); + } + catch(Exception e){ + System.out.println("An exception occured which is unknown and on our TODO list."); + e.printStackTrace(); + } + } +} diff --git a/src/de/dhbwstuttgart/parser/Scanner.java b/src/de/dhbwstuttgart/parser/Scanner.java deleted file mode 100755 index d8eef5c0..00000000 --- a/src/de/dhbwstuttgart/parser/Scanner.java +++ /dev/null @@ -1,54 +0,0 @@ -// ino.module.Scanner.8618.package -package de.dhbwstuttgart.parser; -// ino.end -// ino.class.Scanner.24842.declaration -public class Scanner extends JavaLexer implements JavaParser.yyInput -// ino.end -// ino.class.Scanner.24842.body -{ - // ino.method.Scanner.24847.definition - public Scanner (java.io.Reader reader) - // ino.end - // ino.method.Scanner.24847.body - { - super (reader); - } - // ino.end - - // ino.method.token.24850.definition - public int token () - // ino.end - // ino.method.token.24850.body - { - if (token.token instanceof String) - { - return (int)(((String)token.token).charAt(0)); - } - else - { - return ((Integer)token.token).intValue(); - } - } - // ino.end - - // ino.method.advance.24853.definition - public boolean advance () - throws java.io.IOException - // ino.end - // ino.method.advance.24853.body - { - boolean ret = yylex(); - return ret; - } - // ino.end - - // ino.method.value.24856.definition - public Object value () - // ino.end - // ino.method.value.24856.body - { - return this.token; - } - // ino.end -} -// ino.end diff --git a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java new file mode 100644 index 00000000..78694e38 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java @@ -0,0 +1,29 @@ +package de.dhbwstuttgart.parser; + +import de.dhbwstuttgart.syntaxtree.SourceFile; +import de.dhbwstuttgart.syntaxtree.Class; +import de.dhbwstuttgart.typecheck.JavaClassRegistry; + +import java.util.ArrayList; +import java.util.List; + +public class SyntaxTreeGenerator { + + public SyntaxTreeGenerator(JavaClassRegistry nameReg){ + //TODO: Implement + } + + public SourceFile convert(Java8Parser.CompilationUnitContext ctx){ + List classes = new ArrayList<>(); + for(Java8Parser.TypeDeclarationContext typeDecl : ctx.typeDeclaration()){ + Class newClass = convert(typeDecl.classDeclaration()); + classes.add(newClass); + } + return new SourceFile(classes); + } + + private Class convert(Java8Parser.ClassDeclarationContext ctx) { + //TODO: Implement + return null; + } +} diff --git a/src/de/dhbwstuttgart/parser/TODO b/src/de/dhbwstuttgart/parser/TODO new file mode 100644 index 00000000..2272602d --- /dev/null +++ b/src/de/dhbwstuttgart/parser/TODO @@ -0,0 +1,4 @@ += Grammatik = + +* Core-Problem: Typinferenz vs. Konstruktoren +* möglicherweise Problem: falsche Return-Expressions diff --git a/src/de/dhbwstuttgart/parser/Token.java b/src/de/dhbwstuttgart/parser/Token.java deleted file mode 100755 index 86c9dd09..00000000 --- a/src/de/dhbwstuttgart/parser/Token.java +++ /dev/null @@ -1,177 +0,0 @@ -// ino.module.Token.8619.package -package de.dhbwstuttgart.parser; -// ino.end -// ino.class.Token.24859.declaration -public class Token -// ino.end -// ino.class.Token.24859.body -{ - // ino.attribute.token.24862.declaration - public Object token; - // ino.end - // ino.attribute.lexem.24865.declaration - private String lexem; - // ino.end - // ino.attribute.m_LineNumber.24868.declaration - private int m_LineNumber; - // ino.end - // ino.attribute.m_Offset.24871.declaration - private int m_Offset;//hinzugefügt hoth: 14.04.2006 - // ino.end - - - // ino.method.Token.24874.definition - Token (int tok, int lineNumber) - // ino.end - // ino.method.Token.24874.body - { - this.token = new Integer(tok); - m_LineNumber = lineNumber; - } - // ino.end - - // ino.method.Token.24877.definition - Token (int tok, String s, int lineNumber) - // ino.end - // ino.method.Token.24877.body - { - lexem = s; - this.token = new Integer(tok); - m_LineNumber = lineNumber; - } - // ino.end - - // ino.method.Token.24880.definition - Token (int tok, char c, int lineNumber) - // ino.end - // ino.method.Token.24880.body - { - char[] ch = new char[1]; - ch[0] = c; - this.token = new String(ch); - m_LineNumber = lineNumber; - } - // ino.end - - // ino.method.Token.24883.defdescription type=line - // hinzugefügt hoth: 14.04.2006 - // ino.end - // ino.method.Token.24883.definition - Token (int tok, String s, int lineNumber, int charOffset) - // ino.end - // ino.method.Token.24883.body - { - lexem = s; - this.token = new Integer(tok); - m_LineNumber = lineNumber; - m_Offset = charOffset; - } - // ino.end - - // ino.method.Token.24886.defdescription type=line - // hinzugefügt hoth: 14.04.2006 - // ino.end - // ino.method.Token.24886.definition - Token (int tok, char c, int lineNumber, int charOffset) - // ino.end - // ino.method.Token.24886.body - { - char[] ch = new char[1]; - ch[0] = c; - this.token = new String(ch); - m_LineNumber = lineNumber; - m_Offset = charOffset; - } - // ino.end - - // ino.method.getLineNumber.24889.definition - public int getLineNumber() - // ino.end - // ino.method.getLineNumber.24889.body - { - return m_LineNumber; - } - // ino.end - - // ino.method.getOffset.24892.definition - public int getOffset() - // ino.end - // ino.method.getOffset.24892.body - { - return m_Offset; - } - // ino.end - - - // ino.method.getLexem.24895.definition - public String getLexem () - // ino.end - // ino.method.getLexem.24895.body - { - return lexem; - } - // ino.end - - // ino.method.String2Int.24898.definition - public int String2Int() - // ino.end - // ino.method.String2Int.24898.body - { - return Integer.decode(lexem); - } - // ino.end - - public long String2Long() - { - return Long.decode(lexem); - } - - public float String2Float() - { - return Float.parseFloat(lexem); - } - - public double String2Double() - { - return Double.parseDouble(lexem); - } - - // ino.method.CharInString.24901.definition - public char CharInString() - // ino.end - // ino.method.CharInString.24901.body - { - char[] tmp = lexem.toCharArray(); - return tmp[1]; - } - // ino.end - - // ino.method.String2Bool.24904.definition - public boolean String2Bool() - // ino.end - // ino.method.String2Bool.24904.body - { - if(lexem.equals("true")) - { - return(true); - } - else - { - return(false); - } - } - // ino.end - - // ino.method.get_String.24907.definition - public String get_String() - // ino.end - // ino.method.get_String.24907.body - { - int laenge = lexem.length(); - String rueck; - rueck = lexem.substring(1,laenge-1); - return rueck; - } - // ino.end -} -// ino.end diff --git a/src/de/dhbwstuttgart/parser/parse_tree b/src/de/dhbwstuttgart/parser/parse_tree new file mode 100644 index 00000000..a9f6ca2a --- /dev/null +++ b/src/de/dhbwstuttgart/parser/parse_tree @@ -0,0 +1,12 @@ +* Listener-Pattern für das Projekt eher ungeeignet. + += Herangehensweise/Format = + +* CompilatunUnit (Rot) wird zu Source-File (Root) +* Im Paket Syntaxtree finden sich die Klassen, die ich letztendlich erzeugen muss. +* Kann hier auch Veränderungen vornehmen (Pull Request) +* Wichtig! Typnamen müssen aufgelöst werden können (also z.B. java.lang.util.ArrayList (JavaClassRegistry). + += Idee bei mehreren Files = +* Zunächst alle Files anschauen und Pakate/Klassen für die spätere Verwendung "registrieren". +* Danach erst das komplette Package/alle Klassen imselben Verzeichnis parsen. diff --git a/src/de/dhbwstuttgart/syntaxtree/BasicAssumptionClass.java b/src/de/dhbwstuttgart/syntaxtree/BasicAssumptionClass.java deleted file mode 100755 index e6a319b7..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/BasicAssumptionClass.java +++ /dev/null @@ -1,33 +0,0 @@ -// ino.module.BasicAssumptionClass.8552.package -package de.dhbwstuttgart.syntaxtree; -// ino.end - -// ino.module.BasicAssumptionClass.8552.import -import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; - -// ino.class.BasicAssumptionClass.23000.declaration -public class BasicAssumptionClass extends Class -// ino.end -// ino.class.BasicAssumptionClass.23000.body -{ - - // ino.method.BasicAssumptionClass.23004.definition - public BasicAssumptionClass(String name) - // ino.end - // ino.method.BasicAssumptionClass.23004.body - { - super(name, 0); - } - // ino.end - - // ino.method.BasicAssumptionClass.23007.definition - public BasicAssumptionClass(String name, Modifiers mod) - // ino.end - // ino.method.BasicAssumptionClass.23007.body - { - super(name,mod, 0); - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/Class.java b/src/de/dhbwstuttgart/syntaxtree/Class.java index 787fb790..5ad5122c 100755 --- a/src/de/dhbwstuttgart/syntaxtree/Class.java +++ b/src/de/dhbwstuttgart/syntaxtree/Class.java @@ -1,604 +1,48 @@ -// ino.module.Class.8553.package package de.dhbwstuttgart.syntaxtree; -// ino.end -// ino.module.Class.8553.import -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import javax.lang.model.element.Modifier; - -import org.apache.bcel.generic.ClassGen; -import org.apache.bcel.generic.ConstantPoolGen; -import org.apache.bcel.generic.InstructionFactory; -import org.apache.bcel.generic.InstructionHandle; -import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.MethodGen; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.logger.Section; -import de.dhbwstuttgart.logger.SectionLogger; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.bytecode.DHBWConstantPoolGen; -import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; -import de.dhbwstuttgart.core.AClassOrInterface; import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; -import de.dhbwstuttgart.syntaxtree.modifier.Static; import de.dhbwstuttgart.syntaxtree.statement.Block; import de.dhbwstuttgart.syntaxtree.statement.Expr; -import de.dhbwstuttgart.syntaxtree.statement.Statement; -import de.dhbwstuttgart.syntaxtree.statement.SuperCall; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.SuperWildcardType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; -import de.dhbwstuttgart.syntaxtree.type.WildcardType; import de.dhbwstuttgart.typeinference.*; import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; -import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; -import de.dhbwstuttgart.typeinference.unify.TypeUnify; -import org.apache.bcel.generic.*; -import org.apache.bcel.classfile.*; -import org.apache.bcel.*; +import java.util.ArrayList; +import java.util.List; -import java.io.*; - - - -// ino.class.Class.23010.declaration -public class Class extends GTVDeclarationContext implements AClassOrInterface, IItemWithOffset, Generic, GenericTypeInsertable -// ino.end -// ino.class.Class.23010.body +/** + * Stellt jede Art von Klasse dar. Auch abstrakte Klassen und Interfaces + */ +public class Class extends GTVDeclarationContext implements IItemWithOffset, Generic, GenericTypeInsertable { /** - * Log4j - Loggerinstanzen + * Loggerinstanzen */ protected static Logger inferencelog = Logger.getLogger("inference"); protected static Logger codegenlog = Logger.getLogger("codegen"); protected static Logger parserlog = Logger.getLogger("parser"); - protected UsedId pkgName; + protected Logger typinferenzLog = Logger.getLogger(Class.class.getName()); + protected Modifiers modifiers; protected JavaClassName name; - protected List implementedInterfaces = new ArrayList<>(); - - /** - * - * @param resultSet - Fehlende Typen im Syntaxbaum werden nach diesem ResultSet aufgelöst - * @return - */ - public ByteCodeResult genByteCode(TypeinferenceResults typeinferenceResults) { - InstructionFactory _factory; - DHBWConstantPoolGen _cp; - ClassGenerator _cg; - - Menge results = new Menge(); - - SectionLogger logger = Logger.getSectionLogger(this.getClass().getName(), Section.CODEGEN); - logger.debug("Test"); - - if(pkgName != null)throw new NotImplementedException(); - short constants = Const.ACC_PUBLIC; //Per Definition ist jede Methode public - if(isInterface())constants+=Const.ACC_INTERFACE; - - _cg = new ClassGenerator(name, this.getSuperClass(), this.getGenericParameter(), name + ".java", constants , new String[] { }, typeinferenceResults); //letzter Parameter sind implementierte Interfaces - _cp = _cg.getConstantPool(); - _factory = new DHBWInstructionFactory(_cg, _cp); - - //Die Felder in Methoden Felder und Konstruktoren aufteilen: - Menge fieldDeclarations = new Menge<>(); - Menge constructors = new Menge<>(); - Menge methods = new Menge<>(); - for(Field field : this.fielddecl){ - if(field instanceof Constructor)constructors.add((Constructor)field); - if(field instanceof Method && ! (field instanceof Constructor))methods.add((Method)field); - if(field instanceof FieldDeclaration)fieldDeclarations.add((FieldDeclaration)field); - //field.genByteCode(_cg); - } - - //Zuerst die Methoden und Felder abarbeiten: - for(Method m : methods){ - m.genByteCode(_cg, this, typeinferenceResults); - } - InstructionList fieldInitializations = new InstructionList(); - for(FieldDeclaration f : fieldDeclarations){ - //Die Felder können noch nicht überladen werden. Hier ist nur die erste der Lösungen möglich: - fieldInitializations.append(f.genByteCode(_cg, typeinferenceResults.getTypeReconstructions().get(0))); - } - //Die Konstruktoren müssen die Feld initialisierungswerte beinhalten: - for(Constructor c : constructors){ - c.genByteCode(_cg, fieldInitializations); - } - - return new ByteCodeResult(_cg); - } - - private Menge superif = new Menge(); - - public UsedId getPackageName() - { - return pkgName; - } - public void setPackageName(UsedId pkgName) - { - this.pkgName = pkgName; - } - public JavaClassName getName() - { - return new JavaClassName((this.pkgName!=null ? this.pkgName.toString() +"." : "") +this.name); - } - public void setName(String strName) - { - name = new JavaClassName(strName); - } - public void setModifiers(Modifiers mod) - { - this.modifiers = mod; - } - public Modifiers getModifiers() - { - return this.modifiers; - } - /** - * Liefert die AccessFlags fuer den Bytecode zurueck. - */ - public short getAccessFlags() - { - short ret = 0; - if (modifiers != null) { - ret = modifiers.calculate_access_flags(); - } - return ret; - } - - public Menge getSuperInterfaces() - { - return superif; - } - - @Override - public void setSuperInterfaces(Menge superif) - { - this.superif = superif; - } - - public UsedId superclassid = (SourceFile.READ_OBJECT_SUPERCLASSES_FROM_JRE?UsedId.createFromQualifiedName("Object",-1):null); - private Block class_block; - - private Hashtable parahash = new Hashtable(); // parametrisierten Attrib. werden mit den Paramet.aus paralist verk. - - public static boolean isFirstLocalVarDecl; //Hilfsvariable fuer Offsets, hoth - // PL 05-07-30 eingefuegt. Vektor aller Typdeklarationen, die in der Klasse - // vorkommen. Wird in der Studienarbeit von Andreas Stadelmeier nur für Verifizierung der Tests eingesetzt. - private Menge containedTypes = new Menge(); - private Menge usedIdsToCheck = new Menge(); - - private TypeAssumptions typeAssumptions = null;//muss mit null Initialisiert werden. Darf nur über getTypeAssumptions abgerufen werden. - - protected Logger typinferenzLog = Logger.getLogger(Class.class.getName()); - private SyntaxTreeNode parent; - private Menge fielddecl = new Menge(); + private List fielddecl = new ArrayList<>(); private GenericDeclarationList genericClassParameters; private int offset; private RefType superClass; + protected boolean isInterface; + private List implementedInterfaces; - - public Class(String name, int offset) - { - this.name = new JavaClassName(name); - if(name.equals("java.lang.Object")){ - superclassid=null; - } - this.offset = offset; - if(!name.equals("Object") && !name.equals("java.lang.Object"))//Alle Klassen außer Object erben von Object: - this.superClass = new ObjectClass().getType(); - } - - public Class(JavaClassName name, List methoden, List felder, Modifiers modifier, - boolean isInterface, RefType superClass, List implementedInterfaces, - GenericDeclarationList generics, int offset){ - this(name.toString(), superClass, modifier, new Menge<>()); - this.implementedInterfaces = implementedInterfaces; - this.offset = offset; - this.isInterface = isInterface; - this.isInterface(); - this.genericClassParameters = generics; - } - - /** - * Erstellt eine Klasse, welche nur für die Assumptions verwendet wird. - * Sie enthält keine unnötigen Informationen, wie Offset oder ClassBody. - * @param name - * @param superClass - * @param modifiers - * @param supertypeGenPara - Eine Liste von Namen, welche die Generischen Parameter der Klasse darstellen. - */ - public Class(String name, RefType superClass, Modifiers modifiers, Menge supertypeGenPara) { - this(name,superClass,modifiers,0); - if(supertypeGenPara == null)return; - Menge gtvs = new Menge<>(); - for(Object gname : supertypeGenPara){ - if(gname instanceof String){ - GenericTypeVar newGTV=new GenericTypeVar((String)gname,this,0); - gtvs.add(newGTV); - }else if(gname instanceof GenericTypeVar){ - gtvs.add((GenericTypeVar) gname); - }else{ - GenericTypeVar newGTV=new GenericTypeVar(gname.toString(),this,0); - gtvs.add(newGTV); - - throw new RuntimeException(gname.toString()); - } - - } - this.setGenericParameter(new GenericDeclarationList(gtvs,0)); - } - - public Class(String name, RefType superClass, Modifiers mod, int offset){ - this(name,mod,offset); - if(superClass == null)this.superClass = new ObjectClass().getType(); - else this.superClass = superClass; - } - - // ino.method.Class.23044.definition - public Class(String name, Modifiers mod, int offset) - // ino.end - // ino.method.Class.23044.body - { - this(name, offset); - this.modifiers = mod; - } - // ino.end - - public Class(String name, Modifiers mod, ClassBody cb, Menge ct, Menge usedIdsToCheck, - UsedId superclass, Menge superif, Menge paralist, int offset){ - this(name, mod, cb, ct, usedIdToRefType(superclass),usedIdToRefType(superif),paralist,offset); - } - public Class(String name, ClassBody cb, Menge ct, - UsedId superclass, Menge superif, Menge paralist, int offset) { - this(name,null,cb,ct,usedIdToRefType(superclass),superif,paralist,offset); - } - public Class(String name2, Modifiers modifiers2, ClassBody classBody, - Menge containedTypes2, UsedId usedId, - Menge typeMenge, Menge paraMenge, int offset2) { - this(name2, modifiers2, classBody, containedTypes2, usedIdToRefType(usedId),typeMenge, paraMenge, offset2); - } - public Class(String name2, Modifiers object, ClassBody classBody, - Menge containedTypes2, Menge typeMenge, - Menge paraMenge, int offset2) { - this(name2, object, classBody, containedTypes2,(RefType)null, typeMenge, paraMenge, offset2); - } - private static Menge usedIdToRefType(Menge superif2) { - Menge ret = new Menge<>(); - for(UsedId id : superif2)ret.add(usedIdToRefType(id)); - return ret; - } - private static RefType usedIdToRefType(UsedId superclass2) { - RefType ret = new RefType(superclass2.getSimpleName(), null, superclass2.getOffset()); - ret.set_ParaList(superclass2.get_ParaList()); - return ret; - } - - // ino.method.Class.23047.defdescription type=javadoc - /** - * Konstruktor, der die Angabe aller Parameter ermoeglicht. - * Zur Uebersichtlichkeit in der Grammatik. - */ - // ino.end - // ino.method.Class.23047.definition - public Class(String name, Modifiers mod, ClassBody cb, Menge ct, - RefType superclass, Menge Menge, Menge paralist, int offset) - // ino.end -// ino.method.Class.23047.body -{ - this(name,offset); - this.modifiers = mod; - if (cb != null) set_ClassBody(cb); - if (ct != null) setContainedTypes(ct); - if (superclass != null){ - this.superClass = superclass; - } - if (Menge != null) setSuperInterfaces(Menge); - if (paralist != null && !paralist.isEmpty()){ - Type lastPara = paralist.lastElement(); - Integer lastItemOffset = lastPara.getOffset() + lastPara.get_Name().length(); - this.setGenericParameter(new GenericDeclarationList((Menge)paralist, lastItemOffset)); - /* - //this.set_ParaList(paralist); - Menge gtvList = new Menge<>(); - int lastItemOffset = 0; - for(Type paraT : paralist){ - GenericTypeVar gtv = new GenericTypeVar(paraT.get_Name(),this, paraT.getOffset()); - gtvList.add(gtv); - lastItemOffset = paraT.getOffset() + paraT.get_Name().length(); - } - this.genericClassParameters = new GenericDeclarationList(gtvList, lastItemOffset); - */ - } - if(usedIdsToCheck!=null) this.usedIdsToCheck=usedIdsToCheck; - - // HOTI 10.5.06 - // Object darf natuerlich nicht Object als Superklasse haben - // Sonst gibt es eine endlosaufloesung - if(name.equals("java.lang.Object")){ - superclassid=null; - } - - - //parserlog.debug("Neue Klasse: " + name); - - } -// ino.end - - public Menge getFields() - { - return fielddecl; - } - - /** - * @author Andreas Stadelmeier, a10023 - * Fügt der Klasse eine Feld hinzu. - * Prüft dabei, ob es sich um einen Constructor handelt und wandelt diesen direkt um. - * @param feld - */ - public void addField(Field i) - { - - fielddecl.addElement(i); - } - - // ino.method.getUsedIdsToCheck.23050.definition - public Menge getUsedIdsToCheck() - // ino.end - // ino.method.getUsedIdsToCheck.23050.body - { - return usedIdsToCheck; - } - // ino.end - // ino.method.setContainedTypes.23053.definition - public void setContainedTypes(Menge containedTypes) - // ino.end - // ino.method.setContainedTypes.23053.body - { - this.containedTypes = containedTypes; - } - // ino.end - - // ino.method.getContainedTypes.23056.definition - public Menge getContainedTypes() - // ino.end - // ino.method.getContainedTypes.23056.body - { - return containedTypes; - } - // ino.end - - /* - // ino.method.complete_paralist.23062.definition - public Menge complete_paralist(boolean ext) - // ino.end - // ino.method.complete_paralist.23062.body - { - - //Diese Funktion vervollt�ndigt die Parameterliste f�r vererbte Klassen - Menge child = paralist; - - paralist = (Menge)superclassid.get_ParaList(); - - for(Enumeration e = child.elements();e.hasMoreElements();){ - paralist.addElement(e.nextElement()); - } - - return this.paralist; - } - // ino.end - */ - - - /** - * Generiert die ClassFile für diese Klasse. - * @param typeinferenceResult - Das ResultSet einer Typinferierung oder null, falls alle Typen eindeutig feststehen. - * @return - * @throws JVMCodeException - - // ino.method.codegen.23071.definition - public ClassFile codegen(ResultSet typeinferenceResult) - throws JVMCodeException - // ino.end - // ino.method.codegen.23071.body - { - ClassFile classfile = new ClassFile(); - String superClass; - - // Handling der Superklasse - if(superclassid != null) { - superClass = superclassid.get_codegen_UsedId(); - } else { - superClass = "java/lang/Object"; - } - - // Handling der Package - //String pkgName = ""; - //if (sf.getPackageName() != null) { - // pkgName = sf.getPackageName().get_codegen_UsedId() + "/"; - //} - - //geändert von Andreas Stadelmeier: pkgName wird nicht mehr aus dem SourceFile ausgelesen: - String packageName = ""; - if(pkgName != null) packageName = pkgName.get_Name_1Element(); - classfile.add_class(getName(), superClass, getAccessFlags()); - - // Handling fuer Superinterfaces - classfile.addSuperInterfaces(getSuperInterfaces()); - - // Generics hinzufuegen - falls erforderlich - classfile.addGenerics(this.paralist,superclassid, this.getSuperInterfaces()); - - // Body der Classfile generieren - //if(body != null) { - this.codegen(classfile, this.paralist); - //} - - // Ueberpruefung, ob Konstruktor generiert - // Falls nicht, default-Konstruktor erzeugen - if(!classfile.get_constructor_founded()) { - classfile.add_method("", "()V", null, null, null, (short)0, this.paralist, false); - } - - //classfile.codegen(); - - codegenlog.info("Compilierung erfolgreich abgeschlossen, "+ getName() + ".class erstellt."); - return classfile; - } - */ - - public void set_UsedId (UsedId uid) - // ino.end - // ino.method.set_UsedId.23074.body - { - this.superclassid = uid; - } - // ino.end - - /** - * Setzt den ClassBody dieser Klasse. Wird zum Parsen benötigt. - * Der ClassBody enthält sämtliche Felder dieser Klasse. - * Mit dem Aufruf dieser Methode werden alle Felder des ClassBody in diese Class übertragen. - * (Nur einmal während des Parsens aufrufen!) - */ - public void set_ClassBody(ClassBody body) - { - Menge tempFields=body.getFields(); - for(Field f : this.getFields()){ - - if(f instanceof Method){ //Wenn es sich um eine Methode handelt ist eine zusätzliche Prüfung erfoderlich: (Ist es ein Konstruktor?) - Method m = (Method)f; - /* - * Ermitteln ob es sich bei der Methode um einen Konstruktor handelt: - * (Parser kann nicht zwischen Methode und Konstruktor unterscheiden. - * Denn für einen Konstruktor gelten besondere Regeln: - * -Typ des Blocks eines Konstruktor ist void (kein Return-Statement) - * -Rückgabetyp der Methode/Konstruktors ist der Typ der Klasse - * -Ein Konstruktor kann nicht aufgerufen werden (nur mit new) - */ - if(m.get_Method_Name().equals(""))throw new TypeinferenceException(" ist kein gültiger Methodenname", m); - if((m.get_Method_Name().equals(this.getName()))) { - Constructor constructor = new Constructor(m, this); - tempFields.add(constructor); //Den Konstruktor anstatt der Methode anfügen - }else{ - //Handelt es sich um keinen Konstruktor, dann die Methode unverändert den Feldern hinzufügen: - tempFields.add(m); - } - }else{ - tempFields.add(f); //Ansonsten das Feld anfügen... - } - - } - this.fielddecl = tempFields; - } - - // ino.method.set_class_block.23080.definition - public void set_class_block(Block block) - // ino.end - // ino.method.set_class_block.23080.body - { - this.class_block = block; - } - // ino.end - - - - // ino.method.get_Superclass_Name.23086.definition - public JavaClassName get_Superclass_Name() - // ino.end - // ino.method.get_Superclass_Name.23086.body - { - if(superclassid!=null) - return superclassid.getQualifiedName(); - else - return null; - } - // ino.end - - - - // ino.method.get_class_block.23092.definition - public Block get_class_block() - // ino.end - // ino.method.get_class_block.23092.body - { - return class_block; - } - // ino.end - - // ino.method.does_Class_extend.23095.definition - public boolean does_Class_extend() - // ino.end - // ino.method.does_Class_extend.23095.body - { - if(superclassid==null) - return false; - else - return true; - } - // ino.end - - /* - // ino.method.set_ParaList.23098.definition - public void set_ParaList(Menge para) - // ino.end - // ino.method.set_ParaList.23098.body - { - this.paralist = para; - } - // ino.end - */ - - // ino.method.get_ParaList.23101.definition - public List get_ParaList() - // ino.end - // ino.method.get_ParaList.23101.body - { - //if(this.paralist == null)return new Menge(); - return this.getGenericParameter(); - } - // ino.end - - // ino.method.set_ParaHash.23104.definition - public void set_ParaHash(Hashtable hash) - // ino.end - // ino.method.set_ParaHash.23104.body - { - this.parahash = hash; - } - // ino.end - - // ino.method.get_ParaHash.23107.definition - public Hashtable get_ParaHash() - // ino.end - // ino.method.get_ParaHash.23107.body - { - return this.parahash; - } - ///////////////////////////////////////////////////////////////////////// // TypeReconstructionAlgorithmus ///////////////////////////////////////////////////////////////////////// - // ino.method.TRProg.23110.defdescription type=javadoc /** * Ausgangspunkt f�r den Typrekonstruktionsalgorithmus. Hier werden zun�chst * die Mengen von Typannahmen V_fields_methods und V_i erstellt, die als Eingabe @@ -610,15 +54,8 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I * @return Liste aller bisher berechneten, m�glichen Typkombinationen * @throws CTypeReconstructionException */ - // ino.end - // ino.method.TRProg.23110.definition public ConstraintsSet typeReconstruction(TypeAssumptions globalAssumptions) - // ino.end - // ino.method.TRProg.23110.body { - /* - - */ ////////////////////////////// // Und los geht's: ////////////////////////////// @@ -643,22 +80,9 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I } typinferenzLog.debug("Erstellte Assumptions: "+assumptions, Section.TYPEINFERENCE); - /* - //Generiere Liste mit Expressions, welche zur Initialisierung von Feldern verwendet werden. - Menge fieldInitializers = new Menge(); - for(FieldDeclaration field : body.getFieldInitializations()){ - Assign fieldAssign = new Assign(0,0); - Expr expr1 = new LocalOrFieldVar(field.getName(), 0); - Expr expr2 = field.getWert(); - fieldAssign.set_Expr(expr1, expr2); - fieldInitializers.add(fieldAssign); - } - */ - - //ConstraintsSet oderConstraints = this.TYPE(this.getMethodList(), fieldInitializers, assumptions); - + //Gibt es hier eine ClassCastException stimmt etwas grundsätzlich nicht! - this.superClass = (RefType)this.superClass.TYPE(assumptions, this); + //this.superClass = (RefType)this.superClass.TYPE(assumptions, this); for(Field f:this.getFields()){ oderConstraints.add(f.TYPE(assumptions)); @@ -676,82 +100,24 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I private TypeAssumptions getPrivateFieldAssumptions() { if(this.typeAssumptions != null)return this.typeAssumptions; //Das sorgt dafür, dass die Assumptions nur einmalig generiert werden. TypeAssumptions assumptions = new TypeAssumptions(this.getName()); - //this.getMethodList(); //Diese Funktion muss zuerst ausgeführt werden. - //Assumption für this, also die aktuelle Klasse: (ist nicht mehr nötig, da jedes AssumptionSet einer Klasse (dem namen einer Klasse) zugewiesen ist. - //CLocalVarTypeAssumption thisAssumption = new CLocalVarTypeAssumption(this.name, name, 0, 0, name, "this", new RefType(name,0), 0, 0, null); - //assumptions.setThisV(thisAssumption); for(Field field : this.getFields()){ if(!field.isPublic())assumptions.add(field.createTypeAssumptions(this)); } - //Eine Assumption für den Standardkonstruktor: - // (Ein Standardkonstruktor wird immer angefügt, da es momentan keine statischen Klassen gibt) - //auskommentiert, da der Standardkonstruktor beim Parser-Postprocessing angefügt wird. - //if(assumptions.getMethodAssumptions(this.getName(), "").size()==0){ //Falls kein Konstruktor für diese Klasse definiert wurde: - // assumptions.addMethodAssumption(new RefType(this.getName(),0), "", new RefType(this.getName(),0), new Menge()); - //} - this.typeAssumptions = assumptions; //Diese müssen anschließend nicht wieder generiert werden. return assumptions; - } + } - // ino.method.toString.23125.defdescription type=javadoc /** *
      Author: Martin Pl�micke * @return */ - // ino.end - // ino.method.toString.23125.definition public String toString() - // ino.end - // ino.method.toString.23125.body { - //return superclassid.toString() + body.toString(); - //geaendert PL 07-07-28 - return name.toString(); - } - // ino.end - - - // ino.method.wandleRefTypeAttributes2GenericAttributes.23128.defdescription type=javadoc - /** - * Alle Methoden der Klassen überprüfen, ob sie als - * RefType deklarierte Attribute haben, die aber GenericTypeVars sind - * und ggf. ersetzen - * - * Bsp.: - * bei public E elementAt(i){...} wird E vorerst als RefType erkannt - * - */ - // ino.end - // ino.method.wandleRefTypeAttributes2GenericAttributes.23128.definition - public void wandleRefTypeAttributes2GenericAttributes() - // ino.end - // ino.method.wandleRefTypeAttributes2GenericAttributes.23128.body - { - for(Field f : this.getFields()){ - //f.wandleRefTypeAttributes2GenericAttributes(paralist); - } + return name.toString(); } - /** - * HOTI - * Liefert bei Klassen die fullyQualified angegeben wurden - * nur den schlussendlichen Bezeichner - * p.ex. de.dhbwstuttgart.typeinference.Menge => Menge - * @return - */ - // ino.end - // ino.method.getSimpleName.23140.definition - public String getSimpleName() - // ino.end - // ino.method.getSimpleName.23140.body - { - return UsedId.createFromQualifiedName(getName().toString(),-1).getSimpleName(); - } - // ino.end - public String getTypeInformation(Menge methodList, Menge fieldList){ String ret = this.name+": "; for(Expr field : fieldList){ @@ -769,18 +135,18 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I * Dem ResultSet entsprechend werden in diesem Java-Code die TypePlaceholder durch die in ResultSet stehenden Typen ersetzt. * @return Java-Sourcefile */ - public String printJavaCode(TypeinferenceResultSet reconstructionResult){ + public JavaCodeResult printJavaCode(ResultSet reconstructionResult){ JavaCodeResult ret = new JavaCodeResult("class "); JavaCodeResult classBodyCode = new JavaCodeResult(); - if(this.modifiers!=null)classBodyCode.attach(this.modifiers.printJavaCode(reconstructionResult.getUnifiedConstraints())).attach(" "); + if(this.modifiers!=null)classBodyCode.attach(this.modifiers.printJavaCode(reconstructionResult)).attach(" "); - classBodyCode.attach(this.name + " extends ").attach(superclassid.printJavaCode(reconstructionResult.getUnifiedConstraints())).attach("\n"); + classBodyCode.attach(this.name + " extends ").attach(this.superClass.printJavaCode(reconstructionResult)).attach("\n"); JavaCodeResult bodyString = new JavaCodeResult("{\n"); - for(Field field : this.fielddecl)bodyString.attach( field.printJavaCode(reconstructionResult.getUnifiedConstraints()) ).attach( "\n" ); + for(Field field : this.fielddecl)bodyString.attach( field.printJavaCode(reconstructionResult) ).attach( "\n" ); bodyString.attach("}\n"); - + classBodyCode.attach(bodyString); //Zuerst die generischen Parameter für diese Klasse berechnen: @@ -792,7 +158,7 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I Iterator it = this.genericClassParameters.iterator(); while(it.hasNext()){ GenericTypeVar tph = it.next(); - ret.attach(tph.printJavaCode(reconstructionResult.getUnifiedConstraints())); + ret.attach(tph.printJavaCode(reconstructionResult)); if(it.hasNext())ret.attach(", "); } ret.attach(">"); @@ -800,48 +166,9 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I String stringReturn = ret.attach(classBodyCode).toString(); - return stringReturn; + return new JavaCodeResult(stringReturn); } - - /** - * Errechnet die Generischen Parameter der Klasse für diese Klasse. - * Die berechneten Variablen werden anschließend in die this.genericTypeVars eingesetzt. Dabei werden alte genericTypeVars überschrieben. - * @param tphs : Alle übriggebliebenen TypePLaceholder - - private void createGenericTypeVars(Menge tphs){ - this.genericClassParameters = new GenericDeclarationList(new Menge()); - for(TypePlaceholder tph : tphs){ - GenericTypeVar toAdd = new GenericTypeVar(tph,this.getOffset()); - if(!this.genericClassParameters.contains(toAdd))this.genericClassParameters.add(toAdd); - } - } - */ - /** - * Errechnet die Generischen Parameter der Klasse für diese Klasse. - * Die berechneten Variablen werden anschließend in die this.genericTypeVars eingesetzt. Dabei werden alte genericTypeVars überschrieben. - * @param reconstructionResult - - public void createGenericTypeVars(TypeinferenceResultSet reconstructionResult){ - this.genericClassParameters = new Menge(); - for(Pair pair : reconstructionResult.getUnifiedConstraints()){ - if(pair.TA2 instanceof TypePlaceholder && pair.TA1 instanceof TypePlaceholder){// if(pair.OperatorSmallerExtends() || pair.OperatorSmaller()){ - Type ta1=reconstructionResult.getUnifiedConstraints().getTypeEqualTo(pair.TA1); - Type ta2=reconstructionResult.getUnifiedConstraints().getTypeEqualTo(pair.TA2); - this.genericClassParameters.add(new GenericTypeVar(new Pair(ta1,ta2),this.getOffset())); - } - } - - for(Pair pair : reconstructionResult.getConstraints()){ - if( ! reconstructionResult.getUnifiedConstraints().contains(pair.TA1)){ - this.genericClassParameters.add(new GenericTypeVar(pair.TA1,this.getOffset())); - } - if( ! reconstructionResult.getUnifiedConstraints().contains(pair.TA2)){ - this.genericClassParameters.add(new GenericTypeVar(pair.TA2, this.getOffset())); - } - } - } - */ - + public int getOffset(){ return this.offset; } @@ -852,12 +179,6 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I * @return */ public RefType getType() { - /* - Menge parameter = new Menge(); - for(Type param : this.get_ParaList()){ - parameter.add(((GenericTypeVar)param).getTypePlaceHolder());//(TypePlaceholder.fresh()); //Hier ist kein ReplacementListener notwendig. Der Typ soll nie eingesetzt werden. Der TPH wird nur gebraucht, damit das Unifizieren funktioniert. - } - */ return new RefType(this.getName().toString(), this.get_ParaList(),this, 0); } @@ -879,89 +200,6 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I return ret; } - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - //Wenn keine Superklasse, dann erbt die Klasse zwangsweise von Object: - if(superclassid == null || superclassid.get_Name().size()<1){ - int superclassidOffset = superclassid == null ? 0 : superclassid.getOffset(); - superclassid = new UsedId("Object", superclassidOffset); - } - - //Alle Methoden auf Konstruktoren durchsuchen und diese umwandeln: - Menge tempFields = new Menge(); - for(Field f : this.getFields()){ - if(f instanceof Method && !(f instanceof Constructor)){ //Der Check, ob f ein Konstruktor ist eigentlich obsolet, da der Parser keinen Konstruktor generiert - Method method = (Method)f; - if(method.get_Method_Name().equals(this.getName().toString()) ){ - tempFields.add(new Constructor(method, this)); - }else{ - tempFields.add(f); - } - }else{ - tempFields.add(f); - } - } - this.fielddecl = tempFields; - - //Prüfen ob ein Konstruktor vorhanden ist: - boolean constructorVorhanden = false; - for(Field f : this.getFields()){ - if(f instanceof Constructor){ - constructorVorhanden = true; - break; - } - } - if(!constructorVorhanden && ! isInterface()){//Falls kein Konstruktor vorhanden ist, muss noch der Standardkonstruktor angefügt werden: - Block konstruktorBlock = new Block(); - konstruktorBlock.statements.add(new SuperCall(konstruktorBlock)); - Constructor standardKonstruktor = new Constructor(Method.createEmptyMethod(konstruktorBlock,this.getName().toString(), this), this); - //Constructor standardKonstruktor = new Constructor(Method.createEmptyMethod(this.getName().toString(), this)); - - this.addField(standardKonstruktor); - } - - if(this.genericClassParameters == null)this.setGenericParameter(new GenericDeclarationList(new Menge(), 0)); - /*//Nicht mehr notwendig, Generische Klassenparameter werden nun immer direkt in die genericClassParameters gespeichert. - for(Type t : this.get_ParaList()){ - if(t instanceof GenericTypeVar)this.genericClassParameters.add((GenericTypeVar)t); - else this.genericClassParameters.add(new GenericTypeVar(t.get_Name(),this,-1)); - } - */ - /* - for(Type t : this.get_ParaList()){ - t.parserPostProcessing(this); - } - */ - /* - for(GenericTypeVar gtv : this.getGenericParameter()){ - gtv.setParentClass(this);; - } - */ - //TODO: Umwandlung zu RefTypes funktioniert noch nicht richtig. (siehe LambdaTest2) - //Als RefType geparste Generische Variablen umwandeln: - this.wandleRefTypeAttributes2GenericAttributes(); - - //Erst am Schluss, nachdem Methoden zu Konstruktoren umgewandelt wurden: - super.parserPostProcessing(parent); - } - - @Override - public SyntaxTreeNode getParent() { - return this; - } - - @Override - public Menge getChildren() { - Menge ret = new Menge(); - //for(Field f : this.getFields()){ - // ret.add(f); - //} - ret.addAll(this.getFields()); - ret.addAll(this.get_ParaList()); - ret.addAll(this.getGenericParameter()); - return ret; - } - @Override public boolean equals(Object obj){ if(!(obj instanceof Class))return false; @@ -972,20 +210,14 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I } @Override - public Menge getGenericParameter() { - if(this.genericClassParameters == null)return new Menge(); - return this.genericClassParameters.getMenge(); + public GenericDeclarationList getGenericParameter() { + return this.genericClassParameters; } @Override public String getDescription(){ return "class "+this.getName(); } - @Override - public int getVariableLength() { - // TODO Auto-generated method stub - return 0; - } @Override public void setGenericParameter(GenericDeclarationList params) { @@ -1022,71 +254,8 @@ public class Class extends GTVDeclarationContext implements AClassOrInterface, I public boolean isClass() { return true; } - - protected boolean isInterface; + public boolean isInterface(){ return isInterface; } - /* - private Collection getGenericClasses() { - Collection results = new Menge<>(); - - for(Field field : this.fielddecl){ - Type type = field.getType(); - //Der Type des Feldes - if(type instanceof RefType){ - RefType refType = (RefType) type; - - if(!refType.getCombinedType(null).equals(refType.get_Name().replace(".", "%"))){ - results.addAll(generateGenericClass(refType.getCombinedType(null), new Class("java/util/Vector",-1))); - } - } - - if(field instanceof Method){ - Method method = (Method) field; - ParameterList parameterList = method.getParameterList(); - - //Die Typen der Methodenparameter - for(FormalParameter parameter: parameterList){ - Type parameterType = parameter.getType(); - - if(parameterType instanceof RefType){ - RefType refType = (RefType) parameterType; - - if(!refType.getCombinedType(null).equals(refType.get_Name().replace(".", "%"))){ - results.addAll(generateGenericClass(refType.getCombinedType(null), new Class("java/util/Vector",-1))); - } - } - } - } - } - - return results; - } - */ - - /* - private Menge generateGenericClass(String name, Class superClass){ - //TODO: bytecode -- Generics hinzuf�gen - //Type superClassType = superClass.getType(); - - //TODO: bytecode - //ClassGenerator genericClassGenerator = new ClassGenerator(name, superClassType, name + ".java", Constants.ACC_PUBLIC , new String[] { }, new TypeinferenceResultSet(null, null, null)); - - //TODO: bytecode -- Namen der neuen Klasse - Class generatedClass = new Class(name, 0); - - //TODO: bytecode -- alle Konstruktoren generieren - Block konstruktorBlock = new Block(); - konstruktorBlock.setType(new de.dhbwstuttgart.syntaxtree.type.Void(konstruktorBlock, 0)); - konstruktorBlock.statements.add(new SuperCall(konstruktorBlock)); - Constructor standardKonstruktor = new Constructor(Method.createEmptyMethod(konstruktorBlock, name, superClass), superClass); - standardKonstruktor.parserPostProcessing(generatedClass); - - generatedClass.addField(standardKonstruktor); - - return generatedClass.genByteCode(new TypeinferenceResultSet(generatedClass, new Menge<>(), new ResultSet())); - } - */ } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/ClassBody.java b/src/de/dhbwstuttgart/syntaxtree/ClassBody.java deleted file mode 100755 index 5521d69f..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/ClassBody.java +++ /dev/null @@ -1,290 +0,0 @@ -// ino.module.ClassBody.8554.package -package de.dhbwstuttgart.syntaxtree; -// ino.end -// ino.module.ClassBody.8554.import -import java.util.Enumeration; -import java.util.Hashtable; -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.logger.Logger; -// ino.end - - -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.ResultSet; - - - - -// ino.class.ClassBody.23143.declaration -public class ClassBody -{ - // ino.attribute.fielddecl.23146.declaration - private Mengefielddecl = new Menge(); - // ino.end - // ino.attribute.kill.23155.declaration - public Hashtable kill = new Hashtable(); - // ino.end - - // ino.attribute.parserlog.23158.declaration - protected static Logger parserlog = Logger.getLogger("parser"); - // ino.end - - - -// ino.method.complete_parahashtable.23173.defdescription type=block -/* public void set_paratype(Menge classlist, UsedId superclass, Menge -pl,Hashtable ph,boolean ext){ DeclId decl; - FieldDecl field; - System.out.println("++ ParaCheck: Fielddecl's: "+fielddecl.toString()); - - for(Enumeration e=fielddecl.elements();e.hasMoreElements();){ - field = (FieldDecl)e.nextElement(); - for(Enumeration e1=field.get_Name().elements();e1.hasMoreElements();){ - decl=(DeclId)e1.nextElement(); - - if(superclass != null){ - System.out.println("superclass.get_ParaList: " -+superclass.get_ParaList().toString()); - for(Enumeration e2 = -superclass.get_ParaList().elements();e2.hasMoreElements();){ -System.out.println("paralist.elements:: "+((Type)e2.nextElement()).get_Type()); - } - } - if(decl.get_Paratyp()!=null){ - System.out.println("++ ParaCheck: Name: -"+decl.get_Name()+"\tParatyp: "+decl.get_Paratyp()); } - else System.out.println("++ ParaCheck: Name: "+decl.get_Name()+"\tkein -Paratyp gesetzt."); } - } - } -*/ -// ino.end - - - - - public Menge getFields() - { - return fielddecl; - } - - /** - * @author Andreas Stadelmeier, a10023 - * Fügt der Klasse eine Feld hinzu. - * @param feld - */ - public void addField(Field i) - { - fielddecl.addElement(i); - } - - -// ino.method.string_rec.23191.definition -static String string_rec(Hashtable ht) -// ino.end -// ino.method.string_rec.23191.body -{ - String record=("["); - for(Enumeration e=ht.elements(),k=ht.keys();e.hasMoreElements();){ - String s = (String)k.nextElement(); - Object o = e.nextElement(); - - record=record.concat(" "+s); - - if(o instanceof Type){ - record=record.concat(" = "+((Type)o).getName()); - } - - else if(o instanceof Hashtable){ - record=record.concat("= "); - record=record.concat(string_rec((Hashtable)o)); - if(e.hasMoreElements()) - record=record.concat(", "); - } - else if(o instanceof String){ - record=record.concat(" = "+o); - if(e.hasMoreElements()) - record=record.concat(", "); - } - else { - record=("[FEHLER: string_rec: unbekannter Typ!!!!!!"); - } - } - record=record.concat("]"); - return(record); - } -// ino.end - - // ino.method.string_rec.23194.defdescription type=block - /*static void string_rec(Menge v){ - String record=("{"); - for(Enumeration e=v.elements();e.hasMoreElements();){ - Type t = (Type)e.nextElement(); - record=record.concat(" "+t.getName()); - - if(e.hasMoreElements()) - record=record.concat(","); - } - record=record.concat("}"); - parserlog.debug(record); - }*/ - // ino.end - // ino.method.string_rec.23194.definition - static String string_rec(String st, Hashtable ht) - // ino.end - // ino.method.string_rec.23194.body - { - String record=(st); - record=record.concat("["); - for(Enumeration e=ht.elements(),k=ht.keys();e.hasMoreElements();){ - String s = (String)k.nextElement(); - Object o = e.nextElement(); - - record=record.concat(" "+s); - - if(o instanceof Type){ - record=record.concat(" = "+((Type)o).getName()); - } - - else if(o instanceof Hashtable){ - record=record.concat("= "); - record=record.concat(string_rec((Hashtable)o)); - if(e.hasMoreElements()) - record=record.concat(", "); - } - else if(o instanceof String){ - record=record.concat(" = "+o); - if(e.hasMoreElements()) - record=record.concat(", "); - } - else { - record=("FEHLER: string_rec: unbekannter Typ!!!!!! " +o); - } - } - record=record.concat("]"); - return(record); - } - // ino.end - -// ino.method.string_rec.23197.definition -static String string_rec(String st,Menge v) -// ino.end -// ino.method.string_rec.23197.body -{ - String record=(st); - record=record.concat("{"); - for(Enumeration e=v.elements();e.hasMoreElements();){ - Type t = (Type)e.nextElement(); - record=record.concat(" "+t.getName()); - if(e.hasMoreElements()) - record=record.concat(", "); - } - record=record.concat("}"); - return(record); - } -// ino.end -// ino.method.istParameterOK.23200.defdescription type=line -// -// ******************************************************************************************** -// -// ino.end -/* -// ino.method.istParameterOK.23200.definition -public void istParameterOK( Menge Parameter, Menge KlassenVektor ) -// ino.end -// ino.method.istParameterOK.23200.body -{ - // otth: prueft rekursiv, ob Parameter im Klassenvektor vorkommt, falls RefType, oder ob TypePlaceholder nicht vorkommt - - for( int i = 0; i < Parameter.size(); i++) - { - Type TempParameter = (Type)(Parameter.elementAt(i)); - - // an dieser Stelle: Parametername - if ( TempParameter instanceof RefType ) - { - // t im Klassenvektor suchen --> muss deklariert sein - boolean bGefunden = false; - for( int k = 0; k < KlassenVektor.size(); k++) - { - if( KlassenVektor.elementAt(k).getName().equals(((RefType)TempParameter).getTypeName()) ) - { - // Namen gleich --> Parameterliste rekursiv pruefen - if( ((RefType)TempParameter).get_ParaList() != null ) - { - if( ((RefType)TempParameter).get_ParaList().size() != KlassenVektor.elementAt(k).get_ParaList().size() ) - { - parserlog.error( "SEMANTIK-CHECK-FEHLER: Parameteranzahl von\n" + TempParameter.getName() + " stimmt mit der Klassendefinition\n" + KlassenVektor.elementAt(k).getName() + " nicht �berein.", Section.OLD ); - System.exit( 1 ); - } - else - { - istParameterOK( ((RefType)TempParameter).get_ParaList(), KlassenVektor ); - bGefunden = true; - break; - } - } - else - { - // OK ... - bGefunden = true; - break; - } - } - } - // Parameter wurde nicht gefunden: - if( !bGefunden ) - { - parserlog.error( "SEMANTIK-CHECK-FEHLER: Parameter " + TempParameter.getName() + " ist noch nicht als Klasse definiert." ); - System.exit( 1 ); - } - } - else - { - // Tylose Variablen d�rfen nicht deklariert sein - for( int k = 0; k < KlassenVektor.size(); k++) - { - if( KlassenVektor.elementAt(k).getName().equals(TempParameter.getName()) ) - { - parserlog.error( "SEMANTIK-CHECK-FEHLER: Parameter " + TempParameter.getName() + " ist bereits als Klasse definiert." ); - System.exit( 1 ); - } - } - // nicht gefunden - } - } // end otth; end if: t = RefType -} -// ino.end -*/ - - // ino.method.toString.23203.defdescription type=javadoc - /** - *
      Author: Martin Pl�micke - * @return - */ - // ino.end - // ino.method.toString.23203.definition - public String toString() - // ino.end - // ino.method.toString.23203.body - { - return fielddecl.toString(); - } - // ino.end - - - - public JavaCodeResult printJavaCode(ResultSet resultSet) { - JavaCodeResult ret = new JavaCodeResult("{\n"); - for(Field field : this.fielddecl)ret.attach( field.printJavaCode(resultSet) ).attach( "\n" ); - return ret.attach("}\n"); - - } - - - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/ClassHelper.java b/src/de/dhbwstuttgart/syntaxtree/ClassHelper.java deleted file mode 100755 index ec7c20b1..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/ClassHelper.java +++ /dev/null @@ -1,59 +0,0 @@ -// ino.module.ClassHelper.8555.package -package de.dhbwstuttgart.syntaxtree; -// ino.end - -// ino.module.ClassHelper.8555.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; - -// ino.class.ClassHelper.23206.declaration -public class ClassHelper -// ino.end -// ino.class.ClassHelper.23206.body -{ - // ino.method.findGenericType.23209.defdescription type=javadoc - /** - * HOTI - * Diese Methode sucht in der Klassendefinition nach einen GTV, die - * so heißt wie die im RefType definierte Variable. Wenn sie diese gefunden - * hat, wird sie zurückgeben. Wenn dies nicht der Fall war, schaut sie, falls - * angegeben in den Methodenparametern nach. Findet sie dort auch nichts, liefert - * die Methode null. - * @param type - * @return - */ - // ino.end - // ino.method.findGenericType.23209.definition - @Deprecated - public static GenericTypeVar findGenericType(Type type, Menge paralist, Menge methodParaList) - // ino.end - // ino.method.findGenericType.23209.body - { - if(!(type instanceof RefType)){ - return null; - } - for(int i=0;i", parentClass.name.toString(), il, _cp); + MethodGenerator method = new MethodGenerator(Constants.ACC_PUBLIC, this.getType().getBytecodeType(cg, null), + this.parameterlist.getBytecodeTypeList(cg,null) , this.parameterlist.getParameterNameArray(), + "", cg.getClassName(), il, _cp); //FieldInitializations an Block anfügen Block block = this.get_Block(); - if(block.statements.firstElement() instanceof SuperCall){ - block.statements.insertElementAt(new BytecodeInstructionBlock(fieldInitializations), 1); - }else{ + if(! (block.statements.get(0) instanceof SuperCall)){ throw new DebugException("Fehlender SuperCall im Konstruktor"); } @@ -83,20 +59,6 @@ public class Constructor extends Method { cg.addMethod(method.createMethod(cg, getParameterList(), this.getType(), get_Block(), null)); } - /** - * Mit dieser Hilfsklasse kann eine beliebige InstructionList in eine vorhandenen Block als Statement eingefügt werden. - * Wird für Bytecodegenerierung benötigt. - */ - private class BytecodeInstructionBlock extends Block{ - InstructionList il; - BytecodeInstructionBlock(InstructionList toInsert){ - il = toInsert; - } - @Override - public InstructionList genByteCode(ClassGenerator cg, TypeinferenceResultSet rs){ - return il; - } - } @Override public void genByteCode(ClassGenerator cg, Class classObj, TypeinferenceResults resultSets) { @@ -121,27 +83,6 @@ public class Constructor extends Method { gtv.parserPostProcessing(this); } } - - @Override - public ConstraintsSet TYPE(TypeAssumptions ass) { - //super.setType(this.getParentClass().getType()); - super.setType(new Void(this, 0)); - return super.TYPE(ass); - } - @Override - public void setType(Type t) { - super.setType(new Void(this, this.getOffset())); - //throw new TypeinferenceException("Einem Konstruktor kann kein Typ zugewiesen werden", this); - //this.methode.setType(t); - } - - /*public Constructor(Method methode){ - super(methode.getOffset()); - this.methode = methode; - this.setDeclIdMenge(methode.getDeclIdMenge()); - this.methode.setType(this.methode.getParentClass().getType()); - }*/ - @Override public JavaClassName getTypeName() { @@ -152,61 +93,3 @@ public class Constructor extends Method { } - -/* -// ino.class.Constructor.23267.declaration -public class Constructor_Backup extends Method -// ino.end -// ino.class.Constructor.23267.body -{ - // ino.method.Constructor.23271.definition - public Constructor_Backup() - // ino.end - // ino.method.Constructor.23271.body - { - this.setParameterList(null); - // #JB# 04.06.2005 - // ########################################################### - DeclId decl = new DeclId(); - decl.set_Name(""); - this.set_DeclId(decl); - // ########################################################### - } - // ino.end - - - - // ino.method.get_codegen_Param_Type.23274.definition - public String get_codegen_Param_Type(Menge paralist) - // ino.end - // ino.method.get_codegen_Param_Type.23274.body - { - String ret = new String(); - if(this.getParameterList() == null) - { - ret += "()"; - } - else - { - ret += this.getParameterList().get_codegen_ParameterList(paralist); - } - ret += "V"; - return ret; - } - // ino.end - - - - // ino.method.codegen.23277.definition - public void codegen(ClassFile classfile, Menge paralist) - throws JVMCodeException - // ino.end - // ino.method.codegen.23277.body - { - classfile.set_constructor_founded(true); - classfile.add_method("", this.get_codegen_Param_Type(paralist), this.getParameterList(), null, get_Block(), declid.firstElement().get_access_flags(), paralist, false); - } - // ino.end - -} -*/ diff --git a/src/de/dhbwstuttgart/syntaxtree/ExceptionList.java b/src/de/dhbwstuttgart/syntaxtree/ExceptionList.java index 5ab263be..1b6694f5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/ExceptionList.java +++ b/src/de/dhbwstuttgart/syntaxtree/ExceptionList.java @@ -1,35 +1,14 @@ -// ino.module.ExceptionList.8559.package package de.dhbwstuttgart.syntaxtree; -// ino.end -// ino.module.ExceptionList.8559.import -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.syntaxtree.type.RefType; +import java.util.List; - - -// ino.class.ExceptionList.23358.declaration public class ExceptionList -// ino.end -// ino.class.ExceptionList.23358.body { - // ino.attribute.reftype.23361.declaration - private Menge reftype = new Menge(); - // ino.end - - - - // ino.method.set_addElem.23364.definition - public void set_addElem(RefType rety) - // ino.end - // ino.method.set_addElem.23364.body - { - reftype.addElement(rety); + private List exceptions; + + public ExceptionList(List exceptions){ + this.exceptions = exceptions; } - // ino.end - - - } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/Field.java b/src/de/dhbwstuttgart/syntaxtree/Field.java index b377082e..f17e7870 100644 --- a/src/de/dhbwstuttgart/syntaxtree/Field.java +++ b/src/de/dhbwstuttgart/syntaxtree/Field.java @@ -4,7 +4,6 @@ import org.apache.bcel.generic.ClassGen; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; @@ -21,16 +20,16 @@ import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; public abstract class Field extends GTVDeclarationContext implements TypeInsertable, Typeable, Generic, GenericTypeInsertable{ - protected Menge declid = new Menge(); // Menge, da 'int a, b, c, ...' auch eingeparst werden muss - - private Type typ; + private String name; + protected Type typ; - private int offset; private GenericDeclarationList genericParameters; - public Field(int offset){ - this.offset = offset; + public Field(String name, Type type, int offset){ + super(offset); + this.name = name; + this.typ = type; } @Override @@ -42,10 +41,6 @@ public abstract class Field extends GTVDeclarationContext implements TypeInserta return this.offset; } - @Override - public void setType(Type typ) { - this.typ = typ; - } @Override public Type getType() { return typ; @@ -56,40 +51,13 @@ public abstract class Field extends GTVDeclarationContext implements TypeInserta public Menge getGenericParameter() { Menge ret = new Menge<>(); if(this.genericParameters == null)return ret; - ret.addAll(this.genericParameters.getMenge()); + ret.addAll(this.genericParameters.getGTVList()); return ret; } GenericDeclarationList getGenericDeclarationList(){ return this.genericParameters; } - - public void set_DeclId(DeclId did) - { - this.declid.addElement(did); - } - - - - public Menge get_Name() - { - return declid; - } - - public Menge getDeclIdMenge() - { - // otth: ganzer Vektor zur�ckgeben, um ihn zu kopieren (vgl. MyCompiler - Konstruktor in Methode umwandeln) - return declid; - } - - public void setDeclIdMenge( Menge vDeclId ) - { - // otth: kompletter Vektor setzen, um ihn zu kopieren (vgl. MyCompiler - Konstruktor in Methode umwandeln) - declid = vDeclId; - } - - - public abstract JavaCodeResult printJavaCode(ResultSet resultSet); @@ -103,7 +71,7 @@ public abstract class Field extends GTVDeclarationContext implements TypeInserta public abstract ConstraintsSet TYPE(TypeAssumptions publicAssumptions); public String getIdentifier() { - return this.get_Name().firstElement().get_Name(); + return name; } @Override @@ -117,22 +85,6 @@ public abstract class Field extends GTVDeclarationContext implements TypeInserta return new TypeInsertPoint(this, this, resultSet.getTypeEqualTo(tph), resultSet); } - /** - * Wird im Zuge des ParserPostProcessing aufgerufen. - * Der Parser kann den Unterschied zwischen einem RefType und einer GTV nicht erkennen. - * Diese Methode ersetzt die RefTypes gegebenenfalls durch eine GTV. - * @param paralist - */ - public void wandleRefTypeAttributes2GenericAttributes(Menge paralist){ - // Zuerst Returntype untersuchen - Type type=getType(); - Type pendantReturnType = null; - if(type instanceof RefType)pendantReturnType = ((RefType)type).findGenericType(paralist, new Menge());//GenericTypeVar pendantReturnType=ClassHelper.findGenericType(type, paralist,new Menge()); - if(pendantReturnType!=null){ //Wenn generisch, dann modifizieren - setType(pendantReturnType); - } - } - public boolean isPublic() { //TODO: momentan ist jedes Feld public! return true; diff --git a/src/de/dhbwstuttgart/syntaxtree/FieldDeclaration.java b/src/de/dhbwstuttgart/syntaxtree/FieldDeclaration.java index 245efed0..b9124c42 100644 --- a/src/de/dhbwstuttgart/syntaxtree/FieldDeclaration.java +++ b/src/de/dhbwstuttgart/syntaxtree/FieldDeclaration.java @@ -9,7 +9,6 @@ import org.apache.bcel.generic.ClassGen; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; import de.dhbwstuttgart.syntaxtree.statement.Expr; import de.dhbwstuttgart.syntaxtree.statement.This; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; @@ -35,35 +34,20 @@ import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; public class FieldDeclaration extends Field{ private Expr wert; - //private Type type; - //private Menge parameter; - + /** * Dieser Konstruktor der FieldDeclaration erstellt den Syntaxknoten vollständig. * Kein nachträgliches hinzfügen von Informationen oder aufrufen von parserPostProcessing ist notwendig. */ - public FieldDeclaration(String name, Type typ){ - super(0);//Dieser Deklarator wird nicht vom Parser aufgerufen. Dadurch gibt es auch keinen Offset - this.setType(typ); - this.set_DeclId(new DeclId(name)); + public FieldDeclaration(String name, Type typ, Expr value){ + super(name, typ, 0);//Dieser Deklarator wird nicht vom Parser aufgerufen. Dadurch gibt es auch keinen Offset + this.wert = value; } - public FieldDeclaration(int offset){ - super(offset); - } - - public void setWert(Expr initialExpression){ - this.wert = initialExpression; - } public Expr getWert(){ return this.wert; } - - public String getIdentifier(){ - return this.get_Name().elementAt(0).name; - } - @Override public String toString() { @@ -72,7 +56,7 @@ public class FieldDeclaration extends Field{ } - public JavaCodeResult printJavaCode(ResultSet resultSet) { + public JavaCodeResult printJavaCode(TypeinferenceResultSet resultSet) { JavaCodeResult ret = new JavaCodeResult(); JavaCodeResult toAttach = this.getType().printJavaCode(resultSet).attach(" ").attach( this.getIdentifier()); if(this.wert!=null)toAttach.attach(" = ").attach(this.getWert().printJavaCode(resultSet) ); @@ -97,23 +81,13 @@ public class FieldDeclaration extends Field{ return assumptions; } - @Override - public void parserPostProcessing(SyntaxTreeNode parent){ - super.parserPostProcessing(parent); - if(this.getType() == null)this.setType(TypePlaceholder.fresh(this)); - } - @Override public Menge getChildren() { Menge ret = super.getChildren(); if(this.wert!=null)ret.add(this.wert); return ret; } - - public int getVariableLength() - { - return declid.elementAt(0).get_Name().length(); - } + @Override public ConstraintsSet TYPE(TypeAssumptions publicAssumptions) { if(this.wert == null && (this.getType() == null || this.getType() instanceof TypePlaceholder)) @@ -128,24 +102,9 @@ public class FieldDeclaration extends Field{ for(GenericTypeVar gp : this.getGenericParameter()){ gp.TYPE(localAssumptions); } - /* - if(this.getType() instanceof GenericTypeVar){ - //Falls Typ ein GTV ist muss er syntaktisch kontrolliert werden... - GenericTypeVar gtv = (GenericTypeVar) this.getType(); - } - */ //TypeCheck, falls es sich um einen RefType handelt: - Type thisType = this.getType().TYPE(localAssumptions, this); - this.setType(thisType); - /* - if(this.getType()!=null && (this.getType() instanceof RefType)){ - Type replaceType = null; - replaceType = publicAssumptions.getTypeFor((RefType)this.getType()); - if(replaceType == null)throw new TypeinferenceException("Der Typ "+this.getType().getName()+" ist nicht korrekt",this); - this.setType(replaceType); - } - */ + Type thisType = this.getType(); UndConstraint c1 = ConstraintsSet.createSingleConstraint(thisType, thisType); ret.add(c1); //Damit die TypVariable des Felds in den Constraints auftaucht @@ -157,12 +116,6 @@ public class FieldDeclaration extends Field{ } return ret; } - - @Override - public void wandleRefTypeAttributes2GenericAttributes(Menge paralist){ - super.wandleRefTypeAttributes2GenericAttributes(paralist); - if(this.getWert()!=null)this.getWert().wandleRefTypeAttributes2GenericAttributes(paralist, new Menge()); //FieldDeclaration hat keine Generischen Variablen, daher leere Liste übergeben - } /** * Das besondere bei genByteCode einer FieldDeclaration ist, dass ein InstructionList zurückgegeben wird. @@ -185,7 +138,7 @@ public class FieldDeclaration extends Field{ } FieldInstruction putFieldInstruction = - cg.getInstructionFactory().createFieldAccess(this.getParentClass().getName().toString(), + cg.getInstructionFactory().createFieldAccess(cg.getClassName(), this.getDescription(), this.getType().getBytecodeType(cg, rs), Const.PUTFIELD); il.append(putFieldInstruction ); return il; diff --git a/src/de/dhbwstuttgart/syntaxtree/FormalParameter.java b/src/de/dhbwstuttgart/syntaxtree/FormalParameter.java index 70ebd5c7..a56767b4 100755 --- a/src/de/dhbwstuttgart/syntaxtree/FormalParameter.java +++ b/src/de/dhbwstuttgart/syntaxtree/FormalParameter.java @@ -1,13 +1,12 @@ -// ino.module.FormalParameter.8561.package package de.dhbwstuttgart.syntaxtree; -// ino.end -// ino.module.FormalParameter.8561.import import de.dhbwstuttgart.typeinference.Menge; + +import java.util.List; + import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.JavaCodeResult; @@ -20,28 +19,16 @@ import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; -// ino.class.FormalParameter.23391.declaration public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeInsertable -// ino.end -// ino.class.FormalParameter.23391.body { - // ino.attribute.type.23395.declaration private Type type; - // ino.end - // ino.attribute.declid.23398.declaration - private DeclId declid; - // ino.end - // ino.attribute.inferencelog.23401.declaration + private String name; protected static Logger inferencelog = Logger.getLogger("inference"); - // ino.end - public FormalParameter(DeclId name){ - this.set_DeclId(name); - } - - public FormalParameter(String name, Type type){ - this(new DeclId(name)); - this.setType(type); + public FormalParameter(String name, Type type, int offset){ + super(offset); + this.name = name; + this.type = type; } @Override @@ -55,121 +42,16 @@ public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeIns } return true; } - - - // ino.method.setType.23404.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @param t - */ - // ino.end - // ino.method.setType.23404.definition - public void setType(Type t) - // ino.end - // ino.method.setType.23404.body - { - this.type = t; - } - // ino.end - - - // ino.method.set_DeclId.23407.definition - public void set_DeclId(DeclId did) - // ino.end - // ino.method.set_DeclId.23407.body - { - if(did == null)throw new NullPointerException(); - this.declid = did; - } - // ino.end - - - - // ino.method.get_Name.23410.definition public String getIdentifier() - // ino.end - // ino.method.get_Name.23410.body { - return declid.get_Name(); + return name; } - // ino.end - - - // ino.method.getType.23413.definition public Type getType() - // ino.end - // ino.method.getType.23413.body { return type; } - // ino.end - - - - // ino.method.getTypeName.23416.definition - public String getTypeName() - // ino.end - // ino.method.getTypeName.23416.body - { if(this.getType() == null)return ""; - return this.getType().getName().toString(); - } - // ino.end - - - // ino.method.getOffset.23422.defdescription type=javadoc - /** - *
      Author: Thomas Hornberger 09.04.2006 - * @return - */ - // ino.end - // ino.method.getOffset.23422.definition - public int getOffset() - // ino.end - // ino.method.getOffset.23422.body - { - return declid.getOffset(); - } - // ino.end - - // ino.method.getLineNumber.23425.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.getLineNumber.23425.definition - public int getLineNumber() - // ino.end - // ino.method.getLineNumber.23425.body - { - return declid.getLineNumber(); - } - // ino.end - - - // ino.method.getTypeLineNumber.23431.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.getTypeLineNumber.23431.definition - public int getTypeLineNumber() - // ino.end - // ino.method.getTypeLineNumber.23431.body - { - return this.getLineNumber(); - } - // ino.end - - - //private Type typeVariable; - - public String getTypeInformation() { - return getType().toString() + " " +this.getIdentifier(); - } @Override public String toString(){ @@ -188,33 +70,6 @@ public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeIns return ret; } - - - - - @Override - public void setOffset(int offset) { - //Das Offset steht in declId - throw new NotImplementedException(); - } - - - - @Override - public Menge getChildren() { - Menge ret = new Menge(); - if(type != null)ret.add(this.type); - return ret; - } - - - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - super.parserPostProcessing(parent); - if(this.type==null)this.type = TypePlaceholder.fresh(this); - } - - @Override public TypeInsertPoint createTypeInsertPoint(TypePlaceholder tph, ResultSet resultSet) { @@ -223,20 +78,6 @@ public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeIns return new TypeInsertPoint(this, this, t, resultSet); } - - @Override - public int getVariableLength() { - int ret = 0; - ret += this.getTypeName().length(); - ret +=this.getIdentifier().length(); - return ret; - } - - - public DeclId getDeclId() { - return this.declid; - } - @Override public String getDescription(){ String ret = ""; @@ -245,6 +86,4 @@ public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeIns } return ret+this.getIdentifier(); } - } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.java b/src/de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.java index a39c9e68..5e70575c 100644 --- a/src/de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.java +++ b/src/de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.java @@ -1,12 +1,13 @@ package de.dhbwstuttgart.syntaxtree; -import de.dhbwstuttgart.typeinference.Menge; - /** * Beischreibt eine SyntaxTreeNode, welcher die Eigenschaft besitzt, * dass bei seiner Deklaration auch Generische Typvariablen deklariert wurden. */ public abstract class GTVDeclarationContext extends SyntaxTreeNode { + public GTVDeclarationContext(int offset) { + super(offset); + } @Override public GTVDeclarationContext getGTVDeclarationContext(){ return this; diff --git a/src/de/dhbwstuttgart/syntaxtree/Generic.java b/src/de/dhbwstuttgart/syntaxtree/Generic.java index 90d63648..743cdbc0 100644 --- a/src/de/dhbwstuttgart/syntaxtree/Generic.java +++ b/src/de/dhbwstuttgart/syntaxtree/Generic.java @@ -11,7 +11,5 @@ import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; * */ public interface Generic { - public void setGenericParameter(GenericDeclarationList params); public Iterable getGenericParameter(); - } \ No newline at end of file diff --git a/src/de/dhbwstuttgart/syntaxtree/GenericDeclarationList.java b/src/de/dhbwstuttgart/syntaxtree/GenericDeclarationList.java index d3c6d6ce..c70663c3 100644 --- a/src/de/dhbwstuttgart/syntaxtree/GenericDeclarationList.java +++ b/src/de/dhbwstuttgart/syntaxtree/GenericDeclarationList.java @@ -6,34 +6,25 @@ import java.util.List; import java.util.ListIterator; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.parser.GenericVarDeclarationList; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; - /** * Stellt eine Deklarations-Liste von Generischen Variablen dar. * Kann vor Methoden und Klassen auftauchen. (<....>) * @author janulrich - * + * */ public class GenericDeclarationList extends SyntaxTreeNode implements Iterable{ private int offsetOfLastElement; - private Menge gtvs = new Menge<>(); + private List gtvs = new Menge<>(); - public GenericDeclarationList(){ - this(new Menge(), -1); - } - - public GenericDeclarationList(Menge values, int endOffset) { - this.addAll(values); + public GenericDeclarationList(List values, int endOffset) { + super(endOffset); + gtvs = values; this.offsetOfLastElement = endOffset; } - private void addAll(Menge values) { - this.gtvs.addAll(values); - } - public int getEndOffset(){ return offsetOfLastElement; } @@ -43,11 +34,6 @@ public class GenericDeclarationList extends SyntaxTreeNode implements Iterable iterator() { return this.gtvs.iterator(); @@ -66,11 +52,11 @@ public class GenericDeclarationList extends SyntaxTreeNode implements Iterable getMenge() { - return this.gtvs; - } - public void add(GenericTypeVar t) { this.gtvs.add(t); } + + public List getGTVList() { + return this.gtvs; + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/GenericTypeVar.java b/src/de/dhbwstuttgart/syntaxtree/GenericTypeVar.java new file mode 100755 index 00000000..a1ecd49c --- /dev/null +++ b/src/de/dhbwstuttgart/syntaxtree/GenericTypeVar.java @@ -0,0 +1,72 @@ +package de.dhbwstuttgart.syntaxtree; + +import de.dhbwstuttgart.syntaxtree.type.RefType; +import de.dhbwstuttgart.typeinference.JavaCodeResult; +import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.typeinference.ResultSet; +import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; + +import java.util.ArrayList; +import java.util.List; + +/** + * Entspricht einem GenericTypeVar, jedoch mit Bounds + * (d.h. vorgaben, von welchem Typ die Typevar sein darf + * => extends Class x + * => implements Interface y + * ... + * @author hoti 4.5.06 + * + */ +public class GenericTypeVar extends SyntaxTreeNode +{ + + /** + * Hier sind die Bounds in Form von Type-Objekten abgespeichert + */ + List bounds=new ArrayList(); + private int endOffset; + private String name; + + public GenericTypeVar(String s, List bounds, int offset, int endOffset) + { + super(offset); + name = s; + if(bounds != null)for(RefType t : bounds){ + //if(t!=null)this.extendVars.add(t); + } + //this.genericTypeVar = new RefType(s,offset); + this.bounds = bounds; + this.endOffset = endOffset; + } + + public int getEndOffset(){ + return this.endOffset; + } + + public List getBounds() + { + return bounds; + } + + public String toString() + { + return "BoGTV " + this.name; + } + + @Override + public List getChildren() { + List ret = new ArrayList<>(); + ret.addAll(this.bounds); + return ret; + } + + @Override + public JavaCodeResult printJavaCode(ResultSet resultSet) { + throw new NotImplementedException(); + } + + public String getName() { + return name; + } +} diff --git a/src/de/dhbwstuttgart/syntaxtree/ImportDeclarations.java b/src/de/dhbwstuttgart/syntaxtree/ImportDeclarations.java deleted file mode 100755 index 28bc26da..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/ImportDeclarations.java +++ /dev/null @@ -1,31 +0,0 @@ -// ino.module.ImportDeclarations.8562.package -package de.dhbwstuttgart.syntaxtree; -// ino.end - -// ino.module.ImportDeclarations.8562.import -import de.dhbwstuttgart.typeinference.Menge; -// ino.end - -import de.dhbwstuttgart.syntaxtree.misc.UsedId; - - -// ino.class.ImportDeclarations.23434.description type=javadoc -/** - * HOTI 4.5.06 - * Auch wenn es nicht so aussieht, hat diese Klasse einen Sinn :-) - * Der Parser kann keine Generischen Typen darstellen, damit trotzdem - * an amap Stellen die Typsicherheit gewährleistet ist, hier eine Kapselung... - */ -// ino.end -// ino.class.ImportDeclarations.23434.declaration -public class ImportDeclarations extends Menge -// ino.end -// ino.class.ImportDeclarations.23434.body -{ - - // ino.attribute.serialVersionUID.23438.declaration - private static final long serialVersionUID = -8958366609867768133L; - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/Interface.java b/src/de/dhbwstuttgart/syntaxtree/Interface.java deleted file mode 100755 index 660571d5..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/Interface.java +++ /dev/null @@ -1,259 +0,0 @@ -// ino.module.Interface.8582.package -package de.dhbwstuttgart.syntaxtree; -// ino.end - -// ino.module.Interface.8582.import -import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.core.AClassOrInterface; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; - -/** - * Ein Interface ist eine abstrakte Klasse, erbt daher von Class - * @author janulrich - * - */ -public class Interface extends Class { - - public Interface(String name, int offset){ - super(name, offset); - } - - public Interface(String name, Modifiers modifiers, int offset) { - super(name,modifiers, offset); - } - - public Menge getParaList() { - // TODO Auto-generated method stub - return null; - } - - public void setInterfaceBody(InterfaceBody interfaceBody) { - // TODO Auto-generated method stub - - } - - public void setParaList(Menge paraMenge) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isInterface(){ - return true; - } - -} - -// ino.class.Interface.23932.description type=javadoc -/** - * Die Klasse stellt die Definition eines Interfaces dar. - * @author SCJU - * - */ -/* -// ino.end -// ino.class.Interface.23932.declaration -public class Interface implements AClassOrInterface -// ino.end -// ino.class.Interface.23932.body -{ - - // ino.attribute.ib.23936.declaration - private InterfaceBody ib; - // ino.end - - // ino.attribute.paralist.23939.decldescription type=line - // HOTI 29. Apr 06 - // ino.end - // ino.attribute.paralist.23939.declaration - private Menge paralist = new Menge(); // Parameterliste 'interface xy{}' wird gespeichert - // ino.end - - // ino.attribute.containedTypes.23942.declaration - private Menge containedTypes; - // ino.end - - // ino.method.Interface.23945.defdescription type=line - // Konstruktoren - // ino.end - // ino.method.Interface.23945.definition - public Interface() - // ino.end - // ino.method.Interface.23945.body - { - super(); - } - // ino.end - - // ino.method.Interface.23948.definition - public Interface(String name) - // ino.end - // ino.method.Interface.23948.body - { - super(name); - } - // ino.end - - // ino.method.Interface.23951.definition - public Interface(String name, Modifiers mod) - // ino.end - // ino.method.Interface.23951.body - { - super(name, mod); - } - // ino.end - - - - - - // ino.method.getParaList.23954.definition - public Menge getParaList() - // ino.end - // ino.method.getParaList.23954.body - { - return this.paralist; - } - // ino.end - // ino.method.setParaList.23957.definition - public void setParaList(Menge paralist) - // ino.end - // ino.method.setParaList.23957.body - { - this.paralist=paralist; - } - // ino.end - // ino.method.setContainedTypes.23960.definition - public void setContainedTypes(Menge containedTypes) - // ino.end - // ino.method.setContainedTypes.23960.body - { - this.containedTypes = containedTypes; - } - // ino.end - - // ino.method.getContainedTypes.23963.definition - public Menge getContainedTypes() - // ino.end - // ino.method.getContainedTypes.23963.body - { - return containedTypes; - } - // ino.end - - // ino.method.codegen.23966.definition - public void codegen(SourceFile sf) - throws JVMCodeException - // ino.end - // ino.method.codegen.23966.body - { - codegenlog.info("Definierte Superinterfaces: " + getSuperInterfaces().size()); - codegenlog.debug("Liste der Interfaces: " + getSuperInterfaces().toString()); - codegenlog.info("Definierte Konstanten: " + ib.getConstantVektor().size()); - codegenlog.info("Definierte Methoden: " + ib.getMethodVektor().size()); - - // Erzeugen einer Classfile auf Basis des Interfaces - ClassFile classfile = new ClassFile(this, sf); - - // Handling fuer Generics - classfile.addGenerics(paralist, null, getSuperInterfaces()); - - // Handling fuer Superinterfaces - classfile.addSuperInterfaces(getSuperInterfaces()); - - // Codegen fuer Interface-Body - Menge paralist = new Menge(); - if(ib != null) ib.codegen(classfile, paralist); - - classfile.codegen(); - - codegenlog.info("Compilierung erfolgreich abgeschlossen, "+ getName() + ".class erstellt."); - } - // ino.end - - // ino.method.getInterfaceBody.23969.definition - public InterfaceBody getInterfaceBody() - // ino.end - // ino.method.getInterfaceBody.23969.body - { - return ib; - } - // ino.end - - // ino.method.setInterfaceBody.23972.definition - public void setInterfaceBody(InterfaceBody ib) - // ino.end - // ino.method.setInterfaceBody.23972.body - { - this.ib = ib; - } - // ino.end - - - // ino.end - // ino.method.isAGenericType.23978.definition - public boolean isAGenericType(RefType type) - // ino.end - // ino.method.isAGenericType.23978.body - { - if(paralist==null) - return false; - - for(int i=0;i methods=ib.MethodVektor; - - // Alle Methoden durchgehen - for(int i=0;i ConstantVektor = new Menge(); - // ino.end - // ino.attribute.MethodVektor.23990.declaration - protected Menge MethodVektor = new Menge(); - // ino.end - - // ino.method.InterfaceBody.23993.defdescription type=line - // Konstruktoren - // ino.end - // ino.method.InterfaceBody.23993.definition - public InterfaceBody() - // ino.end - // ino.method.InterfaceBody.23993.body - { - - } - // ino.end - - // ino.method.addElement.23996.defdescription type=javadoc - /** - * Fuegt ein neues Element (Konstantendefinition oder abstrakte - * Methode) ein. - */ - // ino.end - // ino.method.addElement.23996.definition - public void addElement(Field fd) - // ino.end - // ino.method.addElement.23996.body - { - if (fd instanceof Constant) { - ConstantVektor.addElement((Constant) fd); - } else if (fd instanceof Method) { - MethodVektor.addElement((Method) fd); - } - - } - // ino.end - - // ino.method.getConstantVektor.23999.definition - public Menge getConstantVektor() - // ino.end - // ino.method.getConstantVektor.23999.body - { - return ConstantVektor; - } - // ino.end - - // ino.method.setConstantVektor.24002.definition - public void setConstantVektor(Menge constantVektor) - // ino.end - // ino.method.setConstantVektor.24002.body - { - ConstantVektor = constantVektor; - } - // ino.end - - // ino.method.getMethodVektor.24005.definition - public Menge getMethodVektor() - // ino.end - // ino.method.getMethodVektor.24005.body - { - return MethodVektor; - } - // ino.end - - // ino.method.setMethodVektor.24008.definition - public void setMethodVektor(Menge methodVektor) - // ino.end - // ino.method.setMethodVektor.24008.body - { - MethodVektor = methodVektor; - } - // ino.end - - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/Method.java b/src/de/dhbwstuttgart/syntaxtree/Method.java index 2a7b38e9..638c095a 100755 --- a/src/de/dhbwstuttgart/syntaxtree/Method.java +++ b/src/de/dhbwstuttgart/syntaxtree/Method.java @@ -2,55 +2,34 @@ package de.dhbwstuttgart.syntaxtree; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import org.apache.bcel.Constants; -import org.apache.bcel.classfile.Signature; -import org.apache.bcel.generic.ClassGen; -import org.apache.bcel.generic.ConstantPoolGen; -import org.apache.bcel.generic.InstructionFactory; -import org.apache.bcel.generic.InstructionHandle; import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.MethodGen; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.typeinference.Menge.Equal; import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.bytecode.DHBWConstantPoolGen; import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; import de.dhbwstuttgart.bytecode.MethodGenerator; import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.core.MyCompiler; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; import de.dhbwstuttgart.syntaxtree.modifier.Static; import de.dhbwstuttgart.syntaxtree.statement.Block; -import de.dhbwstuttgart.syntaxtree.statement.Return; import de.dhbwstuttgart.syntaxtree.statement.Statement; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeInsertable; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResults; -import de.dhbwstuttgart.typeinference.UndConstraint; import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; import de.dhbwstuttgart.typeinference.assumptions.ParameterAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; -import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; // ino.class.Method.23482.declaration /** @@ -67,33 +46,38 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable public ParameterList parameterlist = new ParameterList(); private ExceptionList exceptionlist; private Type returntype; + private String name; - private int overloadedID; - private boolean isAbstract = false; private Menge types_in_parameterlist = new Menge(); - private int m_LineNumber = MyCompiler.NO_LINENUMBER; - private int m_Offset = -1; // hinzugef�gt hoth: 07.04.2006 private Modifiers modifiers; + protected static Logger inferencelog = Logger.getLogger("inference"); protected static Logger parserlog = Logger.getLogger("parser"); - public Method(int offset) { - super(offset); + /** + * + * @param name + * @param returnType + * @param params + * @param block - use null to create abstract method + * @param offset + */ + public Method(String name, Type returnType, ParameterList params, Block block, int offset) { + this(name, returnType, params, new ExceptionList(), block, offset); } + public Method(String name, Type returnType, ParameterList params, ExceptionList exceptions, Block block, int offset){ + super(name, generateMethodType(returnType, params), offset); + } + public Method(String name, Type returnType, ParameterList parameterList, Block block, GenericDeclarationList gtvDeclarations, int offset) { this(offset); - /* - * if(parameterList != null)parameterList.parserPostProcessing(this); - * if(block != null)block.parserPostProcessing(this); if(gtvDeclarations - * != null)gtvDeclarations.parserPostProcessing(this); - */ - this.set_Method_Name(name); - this.setParameterList(parameterList); - this.set_Block(block); + this.name = name; + this.parameterlist = parameterList; + this.block = block; this.setGenericParameter(gtvDeclarations); - this.setReturnType(returnType); + this.returntype = returnType; } public JavaClassName getTypeName() @@ -110,41 +94,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable return block; } - - /** - *
      - * Author: Jrg Buerle - * - * @param type - */ - private void setReturnType(Type type) - { - this.returntype = type; - } - - public void set_Block(Block blo) - { - if (blo.getType() == null) - blo.setType(this.returntype); - this.block = blo; - } - - public void set_Modifiers(Modifiers modif) - { - declid.firstElement().set_Modifiers(modif); - this.modifiers = modif; - } - - public void set_ExceptionList(ExceptionList exlist) - { - this.exceptionlist = exlist; - } - - public void setParameterList(ParameterList paralist) - { - this.parameterlist = paralist; - } - public ParameterList getParameterList() { return this.parameterlist; @@ -180,10 +129,9 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable this.overloadedID = overloadedID; } - public String get_Method_Name() + public String get_Name() { - DeclId hilf = declid.elementAt(0); - return hilf.get_Name(); + return name; } public Menge get_Type_Paralist() @@ -208,7 +156,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable public int getVariableLength() { - return get_Method_Name().length(); + return get_Name().length(); } public void setOffset(int Offset) @@ -255,16 +203,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable return isAbstract; } - @Override - public void wandleRefTypeAttributes2GenericAttributes(Menge classParalist) { - } - - public void set_Method_Name(String string) { - if (declid.size() == 0) - declid.add(0, new DeclId(string)); - declid.set(0, new DeclId(string)); - } - public ConstraintsSet TYPE(TypeAssumptions ass) { ConstraintsSet ret = new ConstraintsSet(); TypeAssumptions localAss = new TypeAssumptions(); @@ -282,8 +220,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable // Die Parameter zu den Assumptions hinzufügen: if (this.parameterlist != null) for (FormalParameter param : this.parameterlist) { - - param.setType(param.getType().checkTYPE(localAss, this)); localAss.addAssumption(new ParameterAssumption(param)); } ret.add(this.block.TYPEStmt(localAss)); @@ -310,7 +246,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable public JavaCodeResult printJavaCode(ResultSet resultSet) { JavaCodeResult ret = new JavaCodeResult(); ret.attach(this.getType().printJavaCode(resultSet)).attach(" ") - .attach(this.get_Method_Name()).attach("(") + .attach(this.get_Name()).attach("(") .attach(this.getParameterList().printJavaCode(resultSet)) .attach(")\n"); ret.attach(this.block.printJavaCode(resultSet)); @@ -329,15 +265,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable return ret; } - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - if (this.getType() == null) - this.setType(TypePlaceholder.fresh(this)); - if (this.returntype == null) - this.returntype = TypePlaceholder.fresh(this); - super.parserPostProcessing(parent); - } - @Override public Menge getChildren() { Menge ret = new Menge(); @@ -348,15 +275,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable return ret; } - @Override - public void setType(Type t) { - // Methode und Block teilen sich einen ReturnType: - // this.block.setType(t); - this.returntype = t; - this.returntype.parent = this; // TODO: Dieser Hack sollte nicht - // nötig sein. (Parser ändern) - } - /** * Der Typ einer Methode ist ihr Returntype */ @@ -365,14 +283,14 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable // Methode und Block teilen sich einen ReturnType: return this.returntype; } - public static Method createEmptyMethod(Block withBlock, String withSignature, Class parent) { + public static Method createEmptyMethod(Block withBlock, String withSignature) { Method ret = Method.createEmptyMethod(withSignature, parent); ret.set_Block(withBlock); return ret; } - public static Method createEmptyMethod(String withSignature, Class parent) { - Method ret = new Method(0); - DeclId DImethod = new DeclId(); + public static Method createEmptyMethod(String withSignature) { + Block block = new Block(new List()); + Method ret = new Method(withSignature, new de.dhbwstuttgart.syntaxtree.type.Void(0), new ParameterList(), block, new EmptyGenericDeclarationList(), 0); DImethod.set_Name(withSignature); ret.set_DeclId(DImethod); Block tempBlock = new Block(); @@ -403,11 +321,16 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable DHBWInstructionFactory _factory = cg.getInstructionFactory(); for(TypeinferenceResultSet t: typeInterferenceResults){ - addMethodToClassGenerator(cg, _factory, t); + addMethodToClassGenerator(cg, _factory, t, classObj); } } +<<<<<<< HEAD + + private void addMethodToClassGenerator(ClassGenerator cg, DHBWInstructionFactory _factory, TypeinferenceResultSet t, Class parentClass) { +======= private void addMethodToClassGenerator(ClassGenerator cg, DHBWInstructionFactory _factory, TypeinferenceResultSet t) { +>>>>>>> refactoring DHBWConstantPoolGen _cp = cg.getConstantPool(); InstructionList il = new InstructionList(); @@ -424,9 +347,14 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable Type returnType = this.getType(); MethodGenerator method = new MethodGenerator(constants, returnType.getBytecodeType(cg, t), +<<<<<<< HEAD + argumentTypes.toArray(new org.apache.bcel.generic.Type[parameterlist.size()]) + , argumentNames.toArray(new String[parameterlist.size()]), this.get_Name(), parentClass.name.toString(), il, _cp); +======= argumentTypes.toArray(new org.apache.bcel.generic.Type[parameterlist.size()]) , argumentNames.toArray(new String[parameterlist.size()]), this.get_Method_Name(), getParentClass().name.toString(), il, _cp); +>>>>>>> refactoring cg.setMethodeGenerator(method); diff --git a/src/de/dhbwstuttgart/syntaxtree/NullSyntaxTreeNode.java b/src/de/dhbwstuttgart/syntaxtree/NullSyntaxTreeNode.java deleted file mode 100644 index 5952cd17..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/NullSyntaxTreeNode.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.dhbwstuttgart.syntaxtree; - -import de.dhbwstuttgart.typeinference.Menge; - -/** - * Dieser SyntaxTreeNode kann anstelle von null in einem Syntaxbaum eingesetzt werden. - * Vorsicht: Als Offset wird dann immer 0 zurück gegeben. - */ -public class NullSyntaxTreeNode extends SyntaxTreeNode { - - @Override - public int getOffset() { - return 0; - } - - @Override - public int getVariableLength() { - return 0; - } - - @Override - public Menge getChildren() { - return new Menge<>(); - } - -} diff --git a/src/de/dhbwstuttgart/syntaxtree/ParameterList.java b/src/de/dhbwstuttgart/syntaxtree/ParameterList.java index d2eb07c2..4ad42fc5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/ParameterList.java +++ b/src/de/dhbwstuttgart/syntaxtree/ParameterList.java @@ -1,11 +1,10 @@ -// ino.module.ParameterList.8565.package package de.dhbwstuttgart.syntaxtree; -// ino.end -// ino.module.ParameterList.8565.import + import de.dhbwstuttgart.typeinference.Menge; import java.util.Iterator; +import java.util.List; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.syntaxtree.type.RefType; @@ -13,79 +12,36 @@ import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -// ino.end - - - -// ino.class.ParameterList.23620.declaration public class ParameterList extends SyntaxTreeNode implements Iterable -// ino.end -// ino.class.ParameterList.23620.body { - // ino.attribute.formalparameter.23623.declaration - public Menge formalparameter = new Menge(); - // ino.end + public List formalparameter = new Menge(); - - - // ino.method.set_AddParameter.23626.definition - public void set_AddParameter(FormalParameter fp) - // ino.end - // ino.method.set_AddParameter.23626.body - { - formalparameter.addElement(fp); + public ParameterList(List params){ + this.formalparameter = params; } - // ino.end - - // ino.method.getParameterAt.23632.definition + public FormalParameter getParameterAt(int i) - // ino.end - // ino.method.getParameterAt.23632.body { if (i >= formalparameter.size() ) return null; - return formalparameter.elementAt(i); + return formalparameter.get(i); } - // ino.end - // ino.method.sc_get_Formalparalist.23635.definition - public Menge sc_get_Formalparalist() - // ino.end - // ino.method.sc_get_Formalparalist.23635.body + public List sc_get_Formalparalist() { return formalparameter; } - // ino.end - - // ino.method.getParameterCount.23641.defdescription type=javadoc /** * Author: J�rg B�uerle
      * @return Die Anzahl der Parameter */ - // ino.end - // ino.method.getParameterCount.23641.definition public int getParameterCount() - // ino.end - // ino.method.getParameterCount.23641.body { return formalparameter.size(); } - // ino.end - - /** - * @author Andreas Stadelmeier, a10023 - * @return Die Typinformationen der Parameter in der Parameterliste - */ - public String getTypeInformation() { - String ret = ""; - for(FormalParameter param : this.formalparameter){ - ret += param.getTypeInformation(); - } - return ret; - } public String toString(){ if(formalparameter == null)return "[]"; //"Leere Parameterliste"; @@ -129,16 +85,11 @@ public class ParameterList extends SyntaxTreeNode implements Iterable getChildren() { + public List getChildren() { return formalparameter; } @@ -167,4 +118,3 @@ public class ParameterList extends SyntaxTreeNode implements Iterabletrue gesetzt ist, wird immer als Superklasse Object - * mit rein geladen. Dies hat natürlich zur Folge, dass man in der GUI jeden Typ - * auswählen muss, weil ALLES in Java von Object erbt. Sobald die GUI das über eine - * Checkbox o.ä. ausblendbar macht kann es aktiviert werden. Ebenso beeinflusst es - * die superclass von allen Class-Objekten. (Wenn true ist jede Class automatisch - * wenn nicht anders eingegeben Subclass von Object (Wie es sein muss)) - */ - // ino.end - // ino.attribute.READ_OBJECT_SUPERCLASSES_FROM_JRE.21361.declaration - public static final boolean READ_OBJECT_SUPERCLASSES_FROM_JRE = false; - // ino.end - - // ino.attribute.READ_BASE_TYPE_SUPERCLASSES_FROM_JRE.21364.decldescription type=javadoc - /** - * Wenn dieses Flag auf false ist, werden für alle Basisklassen (definiert - * durch die Hashtable baseTypeTranslationTable) KEINE Superklassen geladen. D.h. - * Integer hat bspw. nicht die Superklasse Number sondern OBJECT. - * Dies verursacht bei den Int-Operationen ein Problem - * (+,-,*,/,<,>,...) - */ - // ino.end - // ino.attribute.READ_BASE_TYPE_SUPERCLASSES_FROM_JRE.21364.declaration - private static final boolean READ_BASE_TYPE_SUPERCLASSES_FROM_JRE = false; - // ino.end - - /** - * @autor PL - * Wenn dieses Flag auf false ist, werden für alle importierten Klassen - * KEINE Superklassen geladen. - */ - private static final boolean READ_IMPORTED_SUPERCLASSES_FROM_JRE = false; - - // ino.attribute.codegenlog.21367.decldescription type=line - // Logger fuer Code-Gen - // ino.end - // ino.attribute.codegenlog.21367.declaration protected static Logger codegenlog = Logger.getLogger("codegen"); - // ino.end - // ino.attribute.inferencelog.21370.declaration protected static Logger inferencelog = Logger.getLogger("inference"); - // ino.end - - // ino.attribute.pkgName.21373.declaration - private UsedId pkgName; - // ino.end - - // ino.attribute.KlassenVektor.21376.declaration - public Menge KlassenVektor = new Menge(); - // ino.end - - // ino.attribute.InterfaceVektor.21379.declaration - public Menge InterfaceVektor = new Menge(); - // ino.end + private String pkgName; + public List KlassenVektor = new Menge(); + private List imports; + /** * Die SourceFile repräsntiert eine zu einem Syntaxbaum eingelesene Java-Datei. * SourceFile stellt dabei den Wurzelknoten des Syntaxbaumes dar. */ - public SourceFile(){ - // HOTI 4.5.06 - // Base-Type-Translations anlegen (siehe kommentar BaseTypeTranslationTable) - baseTypeTranslationTable=new Hashtable(); - baseTypeTranslationTable.put("int","java.lang.Integer"); - baseTypeTranslationTable.put("char","java.lang.Character"); - baseTypeTranslationTable.put("boolean","java.lang.Boolean"); - baseTypeTranslationTable.put("double","java.lang.Double"); - baseTypeTranslationTable.put("long","java.lang.Long"); - baseTypeTranslationTable.put("float","java.lang.Float"); - //baseTypeTranslationTable.put("this.is.a.temporary.entry","de.dhbwstuttgart.typeinference.Menge"); auskommentiert PL 07-08-11 - - - this.imports=new ImportDeclarations(); - - this.imports.add(UsedId.createFromQualifiedName("java.lang.Integer",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.String",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.Character",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.Boolean",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.Double",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.Float",-1)); - this.imports.add(UsedId.createFromQualifiedName("java.lang.Long",-1)); - //this.imports.add(UsedId.createFromQualifiedName("java.lang.Byte")); - - // HOTI 4.5.06 Wenn die Klassen immer als "Daddy" Object haben, - // muss das der JCC auch kennen - if(READ_OBJECT_SUPERCLASSES_FROM_JRE){ - this.imports.add(UsedId.createFromQualifiedName("java.lang.Object",-1)); - } - } - - public SourceFile(Menge classDefinitions) { - this.KlassenVektor = classDefinitions; + public SourceFile(List classDefinitions) { + this.KlassenVektor = classDefinitions; } - /** - * HOTI 4.5.06 - * Beinhaltet alle Imports des aktuell geparsten Files - * in Form einer UsedId - */ - private ImportDeclarations imports=new ImportDeclarations(); - - /** - * Table zum Übersetzen der nicht implementierten Base-Types: - * Überall im Compiler wird statt bspw. int Integer verwendet - * d.h. 1+2 liefert ein Integer - * Deshalb benötigen wir hier eine Tabelle, mit der man die von - * der JRE gelieferten Base-Typen (int,char, etc) und die Objekt- - * Typen umwandeln können - */ - private Hashtable baseTypeTranslationTable; - - /** - * Fuegt ein neues Element (Interface oder Klasse) hinzu. - * @param c - */ - public void addElement(AClassOrInterface e) - { - if (e instanceof Class) { - KlassenVektor.addElement((Class) e); - } else if (e instanceof Interface) { - InterfaceVektor.addElement((Interface) e); - } - } - /** * PL 2014-10-25 * schnitt1 checkt ob die Typeplaceholders aus in den Elemeneten aus vars enthalten sind @@ -316,7 +169,6 @@ public class SourceFile ///////////////////////////////////////////////////////////////////////// // TypeReconstructionAlgorithmus ///////////////////////////////////////////////////////////////////////// - // ino.method.typeReconstruction.21406.defdescription type=javadoc /** * Tyrekonstruktionsalgorithmus: ruft f�r jede Klasse den Algorithmus TRProg auf. * Dessen Ergebnismenge A, die Menge aller Typannahmen, f�r eine Klasse dient als @@ -326,11 +178,7 @@ public class SourceFile * @return Liste aller m�glichen Typkombinationen * @throws CTypeReconstructionException Wenn was schief l�uft */ - // ino.end - // ino.method.typeReconstruction.21406.definition public Menge typeReconstruction(TypeAssumptions globalAssumptions) - // ino.end -// ino.method.typeReconstruction.21406.body { Menge ret = new Menge(); @@ -458,177 +306,13 @@ public class SourceFile * @param imports * @param withSuptypes - Gibt an, ob auch die subklassen der Packages den Assumptions angefügt werden sollen. * @return + * TODO: Diese Methode neu erstellen */ - public TypeAssumptions makeBasicAssumptionsFromJRE(Menge imports, boolean withSubtypes) + public TypeAssumptions makeBasicAssumptionsFromJRE(List imports, boolean withSubtypes) // ino.end // ino.method.makeBasicAssumptionsFromJRE.21409.body { - //return null; - ///* - Menge doneImports=new Menge(); - - //TypeinferenceResultSet basicAssumptions = new TypeinferenceResultSet(null); - TypeAssumptions basicAssumptions = new TypeAssumptions(); - - Modifiers mod = new Modifiers(); - mod.addModifier(new Public()); - - //Für Object: - imports.add(new UsedId("java.lang.Object",-1)); - - // Für jede einzelne Klasse - while (imports.size()>0) { - UsedId importDecl = imports.get(0); - - // Properties laden - java.lang.Class x; - try { - x = java.lang.Class.forName(importDecl.getQualifiedName().toString()); - } catch (ClassNotFoundException e) { - throw new TypeinferenceException("Fehlerhafte Import-Declaration: "+e.getMessage(),this); - } - - java.lang.reflect.Field[] fields=x.getDeclaredFields(); - java.lang.reflect.Method[] methods=x.getDeclaredMethods(); - java.lang.reflect.Constructor[] constructors=x.getConstructors(); - java.lang.reflect.TypeVariable[] tvs=x.getTypeParameters(); - //String className=x.getSimpleName(); - String className=x.getName(); - - //Ermittle die Superklasse: - Class sClass = new Class("Object",0); - if(withSubtypes)sClass = getSuperClassOfJREClass(x, basicAssumptions); - - // Namen von Generische Typen erzeugen - Hashtable jreSpiderRegistry=new Hashtable(); - Menge typeGenPara = new Menge(); - for(int j=0;j0){ - //auskommentiert von Andreas Stadelmeier: - //basicAssumptions.addGenericTypeVars(className, typeGenPara); - //parentClass.set_ParaList((Menge)typeGenPara);//myCl.set_ParaList((Menge)typeGenPara); - } - - - if(x.getSuperclass()!=null){ - //boolean isObject=x.getSuperclass().getSimpleName().equalsIgnoreCase("Object"); - boolean isObject=x.getSuperclass().getName().equalsIgnoreCase("java.lang.Object"); - boolean isBaseType=isBaseType(className); - - //if((!isObject || READ_OBJECT_SUPERCLASSES_FROM_JRE) && (!isBaseType|| READ_BASE_TYPE_SUPERCLASSES_FROM_JRE)) - if (((!isObject || READ_OBJECT_SUPERCLASSES_FROM_JRE) && READ_IMPORTED_SUPERCLASSES_FROM_JRE) //eingefuegt 07-08-11 - || (isBaseType && READ_BASE_TYPE_SUPERCLASSES_FROM_JRE)) - { - String superclassFullyQualifiedName = x.getSuperclass().getCanonicalName(); - //Andere Methode, da Menge.contains bei Strings nicht richtig vergleicht. - if(!containsString(imports,superclassFullyQualifiedName) && !containsString(doneImports,superclassFullyQualifiedName)){ - imports.addElement(UsedId.createFromQualifiedName(superclassFullyQualifiedName,-1)); - } - //UsedId ui = new UsedId(); - //ui.set_Name(x.getSuperclass().getSimpleName()); - UsedId ui=UsedId.createFromQualifiedName(x.getSuperclass().getName(),-1); - java.lang.Class superClass=x.getSuperclass(); - java.lang.reflect.TypeVariable[] superclassTVS=superClass.getTypeParameters(); - Menge supertypeGenPara = new Menge(); - for(int tvi=0;tvi(),null); - Method method = de.dhbwstuttgart.syntaxtree.Method.createEmptyMethod(methodName, parentClass); - method.setType(returnType); - ParameterList parameterList = new ParameterList(); - - for(int k=0;k())); - FormalParameter parameter = new FormalParameter(new DeclId(type.get_Name())); - parameter.setType(type); - parameterList.formalparameter.add(parameter); - } - method.setParameterList(parameterList); - //basicAssumptions.addMethodIntersectionType(new CIntersectionType(method)); - - parentClass.addField(method); - - //} - } - } - - for(int j=0;j getChildren(); - - public Class getParentClass(){ - SyntaxTreeNode parent = this.getParent(); - if(parent instanceof Class)return (Class)parent; - if(parent == null) - throw new DebugException("Das Wurzelelement eines Syntaxbaumes muss Class sein"); - return parent.getParentClass(); - } - + public abstract List getChildren(); + /** * Eine Beschreibung/Name des SyntaxTree-Nodes * Hat nichts mit der Description im Bytecode zu tun, @@ -113,11 +113,6 @@ public abstract class SyntaxTreeNode implements IItemWithOffset{ } - public boolean seesType(Type tA2) { - //TODO: Implementieren. Hier sollte ein Lookup in die Assumptions dieses Knotens erfolgen - return false; - } - public SyntaxTreeNode getMatchingParentNode(SyntaxTreeNode inNode) { SyntaxTreeNode node = inNode; while(node!=null){ @@ -134,5 +129,9 @@ public abstract class SyntaxTreeNode implements IItemWithOffset{ return this.getParent().getGTVDeclarationContext(); } + public int getOffset(){ + return offset; + } + public abstract JavaCodeResult printJavaCode(ResultSet resultSet); } diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java index 0e7625a7..0a1eaf9b 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java @@ -1,58 +1,55 @@ package de.dhbwstuttgart.syntaxtree.factory; +import java.lang.reflect.Parameter; +import java.lang.reflect.TypeVariable; import java.util.ArrayList; import java.util.List; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassRegistry; +import de.dhbwstuttgart.syntaxtree.*; import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.Constructor; import de.dhbwstuttgart.syntaxtree.Field; import de.dhbwstuttgart.syntaxtree.GenericDeclarationList; import de.dhbwstuttgart.syntaxtree.Method; import de.dhbwstuttgart.syntaxtree.ObjectClass; import de.dhbwstuttgart.syntaxtree.ParameterList; import de.dhbwstuttgart.syntaxtree.SourceFile; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.misc.DeclId; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; +import de.dhbwstuttgart.syntaxtree.modifier.Public; import de.dhbwstuttgart.syntaxtree.statement.Block; +import de.dhbwstuttgart.syntaxtree.statement.Statement; import de.dhbwstuttgart.syntaxtree.statement.SuperCall; import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -public class ASTFactory { - public static Method createMethod(String name, ParameterList paralist, Block block, Class parent) { - - - Method method = new Method(0); - DeclId DImethod = new DeclId(); - DImethod.set_Name(name); - method.set_DeclId(DImethod); - method.set_Block(block); - method.setParameterList(paralist); - - block.parserPostProcessing(method); - method.parserPostProcessing(parent); - return method; +public class ASTFactory { + + private final JavaClassRegistry names; + + /** + * Anmerkung: + * Die ASTFactory Methoden, welche ASTBäume aus java.lang.Class Objekten generieren, können davon ausgehen, + * dass alle Imports und Typnamen korrekt sind und müssen diese nicht überprüfen. + */ + //private JavaClassRegistry names; + + public ASTFactory(JavaClassRegistry scope){ + names = scope; } - + public static Method createEmptyMethod(String withSignature, Class parent) { return ASTFactory.createMethod(withSignature, new ParameterList(), new Block(), parent); } - + public static Constructor createEmptyConstructor(Class parent){ Block block = new Block(); block.setType(new de.dhbwstuttgart.syntaxtree.type.Void(block, 0)); block.statements.add(new SuperCall(block)); - + return ASTFactory.createConstructor(parent, new ParameterList(), block); } - + public static Constructor createConstructor(Class superClass, ParameterList paralist, Block block){ block.parserPostProcessing(superClass); @@ -62,7 +59,6 @@ public class ASTFactory { return new Constructor(method, superClass); } - /* public static Class createClass(String className, RefType type, Modifiers modifiers, Menge supertypeGenPara, SourceFile parent) { // TODO bytecode createClass //String name, RefType superClass, Modifiers modifiers, Menge supertypeGenPara @@ -73,7 +69,113 @@ public class ASTFactory { return generatedClass; } -*/ + + public static Class createObject(){ + return createClass(java.lang.Object.class); + } + + /** + * + * @param jreClass + * @return + */ + public Class createClass(java.lang.Class jreClass){ + JavaClassName name = names.getName(jreClass.getName()); + List methoden = new ArrayList<>(); + for(java.lang.reflect.Constructor constructor : jreClass.getConstructors()){ + + } + for(java.lang.reflect.Method method : jreClass.getMethods()){ + methoden.add(createMethod(method, jreClass)); + } + List felder = new ArrayList<>(); + Modifiers modifier = new Modifiers(); + modifier.addModifier(new Public()); + boolean isInterface = jreClass.isInterface(); + java.lang.Class superjreClass = jreClass.getSuperclass(); + RefType superClass = null; + if(superjreClass != null){ + superClass = createType(superjreClass); + }else{//Jede Klasse und jedes Interface erbt von Object: (auch Object selbst!) + superClass = createType(java.lang.Object.class); + } + List implementedInterfaces = new ArrayList<>(); + for(java.lang.Class jreInterface : jreClass.getInterfaces()){ + implementedInterfaces.add(createType(jreInterface)); + } + int offset = 0; //Braucht keinen Offset, da diese Klasse nicht aus einem Quellcode geparst wurde + return new Class(name, methoden, felder, modifier, isInterface, superClass, implementedInterfaces, offset); + } + + /** + * Wandelt eine Methode aus der JRE in eine Methode für unseren AST um. + * @param jreMethod + * @param inClass + * @return + */ + public Method createMethod(java.lang.reflect.Method jreMethod, java.lang.Class inClass){ + String name = jreMethod.getName(); + RefType returnType = createType(jreMethod.getReturnType()); + Parameter[] jreParams = jreMethod.getParameters(); + List params = new ArrayList<>(); + for(Parameter jreParam : jreParams){ + RefType paramType = createType(jreParam.getType()); + params.add(new FormalParameter(jreParam.getName(),paramType,-1)); + } + ParameterList parameterList = new ParameterList(params); + Block block = new Block(new ArrayList(), -1); + List gtvs = new ArrayList<>(); + for(TypeVariable jreTV : jreMethod.getTypeParameters()){ + GenericTypeVar gtv = createGeneric(jreTV, inClass); + gtvs.add(gtv); + } + GenericDeclarationList gtvDeclarations = new GenericDeclarationList(gtvs,-1); + int offset = -1; + + return new Method(name, returnType, parameterList, block, gtvDeclarations, offset); + } + + public RefType createType(java.lang.Class jreClass){ + List params = new ArrayList<>(); + for(TypeVariable jreTV : jreClass.getTypeParameters()){ + RefType gtv = createType(jreTV); + params.add(gtv); + } + jreClass + return new RefType(jreClass.getName(), params, -1); + } + + public RefType createType(java.lang.reflect.Type type){ + RefType ret = new RefType(type.getTypeName(), -1); + //TODO hier die Generischen Variablen extrahieren + return ret; + } + + /** + * Erstellt eine GenericTypeVar oder eine BoundedGenericTypeVar + * Um die Variablen korrekt zu generieren, muss die Klasse inClass übergeben werden, in der dieser Generic auftaucht + * TODO: Warum? + * Wird der AST von JREClass erzeugt, so kann davon ausgegangen werden, dass die Generics korrekt sind. + * Unser AST ist immutable und nicht im Kreis verzeigert. Generics die gleich heißen und gleiche Bounds haben, sind auch gleich. Müssen nicht die selben Instanzen sein. + * @param jreTypeVar + * @param inClass Die Klasse in der der Typ auftritt + * @return + */ + public GenericTypeVar createGeneric(TypeVariable jreTypeVar, java.lang.Class inClass){ + //TODO: Bei den Namen der Parameter des Generishen Typs nachschauen, ob er in der Klasse als Generic deklariert wurde + String name = jreTypeVar.getTypeName(); + List genericBounds = new ArrayList<>(); + java.lang.reflect.Type[] bounds = jreTypeVar.getBounds(); + if(bounds.length > 0){ + for(java.lang.reflect.Type bound : bounds){ + genericBounds.add(createType(bound)); + } + return new BoundedGenericVar(); + } + return new GenericTypeVar(); + } + + public static Class createInterface(String className, RefType superClass, Modifiers modifiers, Menge supertypeGenPara, SourceFile parent){ Class generatedClass = new Class(new JavaClassName(className), new ArrayList(), new ArrayList(), modifiers, diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/PrimitiveMethodsGenerator.java b/src/de/dhbwstuttgart/syntaxtree/factory/PrimitiveMethodsGenerator.java new file mode 100644 index 00000000..e8be6859 --- /dev/null +++ b/src/de/dhbwstuttgart/syntaxtree/factory/PrimitiveMethodsGenerator.java @@ -0,0 +1,9 @@ +package de.dhbwstuttgart.syntaxtree.factory; + +/** + * Generiert Hilfsmethoden für die Unary und Binary Operatoren + * Diese Methoden stellen die möglichen Operationen +,-,++, etc dar + */ +public class PrimitiveMethodsGenerator { + +} diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java index 533a6173..f2f48efe 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java @@ -3,29 +3,23 @@ package de.dhbwstuttgart.syntaxtree.factory; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.logging.Logger; + import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; -import de.dhbwstuttgart.syntaxtree.NullSyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType; import de.dhbwstuttgart.syntaxtree.type.FunN; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.ObjectType; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.SuperWildcardType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.syntaxtree.type.Void; -import de.dhbwstuttgart.syntaxtree.type.WildcardType; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.EinzelElement; -import de.dhbwstuttgart.typeinference.KomplexeMenge; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.typeinference.OderConstraint; -import de.dhbwstuttgart.typeinference.OderMenge; import de.dhbwstuttgart.typeinference.Pair; import de.dhbwstuttgart.typeinference.UndConstraint; -import de.dhbwstuttgart.typeinference.UndMenge; import de.dhbwstuttgart.typeinference.UnifyConstraintsSet; import de.dhbwstuttgart.typeinference.UnifyOderConstraint; import de.dhbwstuttgart.typeinference.UnifyUndConstraint; @@ -172,25 +166,25 @@ public class UnifyTypeFactory { public static Type convert(ReferenceType t) { //TODO: Hier kann man die GTVs extrahieren - if(t.getName().toString().equals(Void.VOID_NAME))return new Void(NULL_NODE, 0); - RefType ret = new RefType(t.getName(),null,0); + if(t.getName().toString().equals(Void.VOID_NAME))return new Void( 0); + RefType ret = new RefType(t.getName(),0); ret.set_ParaList(convert(t.getTypeParams())); return ret; } public static Type convert(FunNType t) { - RefType ret = new RefType(t.getName(),null,0); + RefType ret = new RefType(t.getName(),0); ret.set_ParaList(convert(t.getTypeParams())); return ret; } public static Type convert(SuperType t) { - RefType innerType = new RefType(t.getSuperedType().getName(),NULL_NODE,0); + RefType innerType = new RefType(t.getSuperedType().getName(),0); return new SuperWildcardType(innerType); } public static Type convert(ExtendsType t) { - RefType innerType = new RefType(t.getExtendedType().getName(),NULL_NODE,0); + RefType innerType = new RefType(t.getExtendedType().getName(),0); return new ExtendsWildcardType(innerType); } diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/Unify_FC_TTO_Builder.java b/src/de/dhbwstuttgart/syntaxtree/factory/Unify_FC_TTO_Builder.java index 1ea4403f..aa3a4016 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/Unify_FC_TTO_Builder.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/Unify_FC_TTO_Builder.java @@ -11,6 +11,7 @@ public class Unify_FC_TTO_Builder { private Menge fc = new Menge(); private Menge classes = new Menge(); + /* public void AddInheritance(Type t1, Type t2) { if(t1 instanceof RefType) if(!classes.stream().anyMatch(x -> x.getName().equals(t1.getName()))) @@ -22,6 +23,7 @@ public class Unify_FC_TTO_Builder { fc.add(new Pair(t1, t2)); } + */ public void clear() { fc = new Menge(); diff --git a/src/de/dhbwstuttgart/syntaxtree/misc/ConstructorCall.java b/src/de/dhbwstuttgart/syntaxtree/misc/ConstructorCall.java deleted file mode 100644 index b772db27..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/misc/ConstructorCall.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.misc; - -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.statement.ArgumentList; -import de.dhbwstuttgart.syntaxtree.statement.MethodCall; -import de.dhbwstuttgart.syntaxtree.statement.Receiver; -import de.dhbwstuttgart.typeinference.ConstraintsSet; -import de.dhbwstuttgart.typeinference.assumptions.ConstructorAssumption; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - -/** - * Diese Klasse stellt den this()-Aufruf dar. - * @author janulrich - * - */ -public class ConstructorCall extends MethodCall -{ - public ConstructorCall(Receiver receiver, String methodName, ArgumentList argumentList, int offset){ - super(receiver, methodName, argumentList,offset); - //this.set_Receiver(receiver); - //this.set_Name(methodName); - //this.set_ArgumentList(argumentList); - } - - /* - @Override - public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { - throw new TypeinferenceException("this(...)-Aufruf kann nicht als Ausdruck verwendet werden",this); - } - */ - - @Override - public ConstraintsSet overloading(TypeAssumptions assumptions){ - ConstraintsSet ret = new ConstraintsSet(); - ConstructorAssumption cAss = assumptions.getConstructorAssumption(this.get_Name(), this.getArgumentList().size()); - if(cAss == null)throw new TypeinferenceException("Kein Konstruktor mit passender Parameteranzahl vorhanden",this); - - ret.add(constraintsFromMethodAssumption(cAss, assumptions)); - return ret; - } - - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - super.parserPostProcessing(parent); - } - -} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/syntaxtree/misc/DeclId.java b/src/de/dhbwstuttgart/syntaxtree/misc/DeclId.java deleted file mode 100755 index 00ecffc0..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/misc/DeclId.java +++ /dev/null @@ -1,227 +0,0 @@ -// ino.module.DeclId.8558.package -package de.dhbwstuttgart.syntaxtree.misc; -// ino.end -// ino.module.DeclId.8558.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.logger.Logger; -// ino.end - -import de.dhbwstuttgart.core.MyCompiler; -import de.dhbwstuttgart.syntaxtree.Constant; -import de.dhbwstuttgart.syntaxtree.modifier.Final; -import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; -import de.dhbwstuttgart.syntaxtree.statement.Assign; -import de.dhbwstuttgart.syntaxtree.statement.Expr; -import de.dhbwstuttgart.syntaxtree.statement.ExprStmt; -import de.dhbwstuttgart.syntaxtree.statement.InstVar; -import de.dhbwstuttgart.syntaxtree.statement.LocalOrFieldVarOrClassname; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; - - - - -// ino.class.DeclId.23280.declaration -public class DeclId -// ino.end -// ino.class.DeclId.23280.body -{ - // ino.attribute.modifiers.23283.declaration - public Modifiers modifiers; - // ino.end - // ino.attribute.name.23286.declaration - public String name; - // ino.end - // ino.attribute.wert.23289.declaration - private ExprStmt wert; - // ino.end - // ino.attribute.paratyp.23292.declaration - public Menge paratyp = null; // hier wird die Parameterzuordnung gespeichert ... 'test t = new test();' - // ino.end - // ino.attribute.m_LineNumber.23295.declaration - private int m_LineNumber = MyCompiler.NO_LINENUMBER; - // ino.end - private int m_Offset = -1; //hinzugef�gt hoth: 07.04.2006 - // ino.attribute.codegenlog.23298.decldescription type=line - // Logger fuer Code-Gen - // ino.end - // ino.attribute.codegenlog.23298.declaration - protected static Logger codegenlog = Logger.getLogger("codegen"); - // ino.end - - // ino.method.DeclId.23301.definition - public DeclId() - // ino.end - // ino.method.DeclId.23301.body - { - - } - // ino.end - - - - // ino.method.DeclId.23304.definition - public DeclId(String name) - // ino.end - // ino.method.DeclId.23304.body - { - this.name = name; - } - // ino.end - - // ino.method.set_Paratyp.23307.definition - public void set_Paratyp(Menge p) - // ino.end - // ino.method.set_Paratyp.23307.body - { - this.paratyp = p; - } - // ino.end - - // ino.method.get_Paratyp.23310.definition - public Menge get_Paratyp() - // ino.end - // ino.method.get_Paratyp.23310.body - { - return this.paratyp; - } - // ino.end - - // ino.method.set_Name.23313.definition - public void set_Name(String name) - // ino.end - // ino.method.set_Name.23313.body - { - this.name = name; - } - // ino.end - - // ino.method.set_Wert.23316.definition - public void set_Wert(ExprStmt w) - // ino.end - // ino.method.set_Wert.23316.body - { - this.wert = w; - } - // ino.end - - // ino.method.get_Name.23319.definition - public String get_Name() - // ino.end - // ino.method.get_Name.23319.body - { - return name; - } - // ino.end - - // ino.method.get_Wert.23322.definition - public ExprStmt get_Wert() - // ino.end - // ino.method.get_Wert.23322.body - { - return wert; - } - // ino.end - - // ino.method.set_Modifiers.23325.definition - public void set_Modifiers(Modifiers mod) - // ino.end - // ino.method.set_Modifiers.23325.body - { - this.modifiers = mod; - } - // ino.end - - // ino.method.get_Modifiers.23328.definition - public Modifiers get_Modifiers() - // ino.end - // ino.method.get_Modifiers.23328.body - { - return this.modifiers; - } - // ino.end - - // ino.method.get_access_flags.23331.definition - public short get_access_flags() - // ino.end - // ino.method.get_access_flags.23331.body - { - if(modifiers != null) return modifiers.calculate_access_flags(); - else return (short)0; - } - // ino.end - - - - // ino.method.set_ListType.23334.definition - public void set_ListType(Type t) - // ino.end - // ino.method.set_ListType.23334.body - { - //System.out.println("In Klasse DeclID, Methode set_ListType passiert nix!"); - } - // ino.end - - - - - // ino.method.getLineNumber.23343.definition - public int getLineNumber() - // ino.end - // ino.method.getLineNumber.23343.body - { - return m_LineNumber; - } - // ino.end - - // ino.method.setLineNumber.23346.definition - public void setLineNumber(int lineNumber) - // ino.end - // ino.method.setLineNumber.23346.body - { - m_LineNumber = lineNumber; - } - // ino.end - - // ino.method.getOffset.23349.defdescription type=line - // hinzugef�gt hoth: 07.04.2006 - // ino.end - // ino.method.getOffset.23349.definition - public int getOffset() - // ino.end - // ino.method.getOffset.23349.body - { - return m_Offset; - } - // ino.end - - // ino.method.setOffset.23352.defdescription type=line - // hinzugef�gt hoth: 07.04.2006 - // ino.end - // ino.method.setOffset.23352.definition - public void setOffset(int Offset) - // ino.end - // ino.method.setOffset.23352.body - { - m_Offset = Offset; - } - // ino.end - - // ino.method.toString.23355.defdescription type=javadoc - /** - *
      Author: Martin Pl�micke - * @return - */ - // ino.end - // ino.method.toString.23355.definition - public String toString() - // ino.end - // ino.method.toString.23355.body - { - return name.toString(); - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/misc/Status.java b/src/de/dhbwstuttgart/syntaxtree/misc/Status.java deleted file mode 100755 index e68b7d32..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/misc/Status.java +++ /dev/null @@ -1,25 +0,0 @@ -// ino.module.Status.8566.package -package de.dhbwstuttgart.syntaxtree.misc; -// ino.end - - -// ino.class.Status.23644.declaration -public abstract class Status -// ino.end -// ino.class.Status.23644.body -{ - // ino.attribute.userdef.23647.declaration - protected UserDef userdef; - // ino.end - - // ino.method.set_UserDef.23653.definition - public void set_UserDef( UserDef userdef) - // ino.end - // ino.method.set_UserDef.23653.body - { - this.userdef = userdef; - } - // ino.end - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/misc/UsedId.java b/src/de/dhbwstuttgart/syntaxtree/misc/UsedId.java deleted file mode 100755 index 6ee71dee..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/misc/UsedId.java +++ /dev/null @@ -1,303 +0,0 @@ -// ino.module.UsedId.8567.package -package de.dhbwstuttgart.syntaxtree.misc; -// ino.end -// ino.module.UsedId.8567.import -import java.util.Iterator; -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - - -// ino.class.UsedId.23659.declaration -public class UsedId implements IItemWithOffset -// ino.end -// ino.class.UsedId.23659.body -{ - // ino.attribute.name.23663.declaration - public Menge name = new Menge(); // Menge mit Strings - // ino.end - // ino.attribute.typen.23666.declaration - private Menge typen = new Menge(); // Menge mit Typen - // ino.end - // ino.attribute.paralist.23669.declaration - private Menge paralist = null; - // ino.end - // ino.attribute.vParaOrg.23672.declaration - public Menge vParaOrg = null; // otth: originale Parameterliste - // ino.end - private int m_Offset = -1; //hinzugef�gt hoth: 07.04.2006 - - // ino.method.UsedId.23675.definition - public UsedId(int offset) - // ino.end - // ino.method.UsedId.23675.body - { - m_Offset=offset; - } - // ino.end - - public UsedId(String name, int offset) - { - this(offset); - this.set_Name(name); - } - - // ino.method.getOffset.23678.defdescription type=line - // hinzugef�gt hoth: 07.04.2006 - // ino.end - // ino.method.getOffset.23678.definition - public int getOffset() - // ino.end - // ino.method.getOffset.23678.body - { - return m_Offset; - } - // ino.end - - // ino.method.getVariableLength.23681.definition - public int getVariableLength() - // ino.end - // ino.method.getVariableLength.23681.body - { - return get_Name_1Element().length(); - } - // ino.end - - // ino.method.setOffset.23684.defdescription type=line - // hinzugef�gt hoth: 07.04.2006 - // ino.end - // ino.method.setOffset.23684.definition - public void setOffset(int Offset) - // ino.end - // ino.method.setOffset.23684.body - { - m_Offset = Offset; - } - // ino.end - - // ino.method.set_Name.23687.definition - public void set_Name( String name) - // ino.end - // ino.method.set_Name.23687.body - { - this.name.addElement(name); - } - // ino.end - - // ino.method.get_Name.23690.definition - public Menge get_Name() - // ino.end - // ino.method.get_Name.23690.body - { - return name; - } - // ino.end - - // ino.method.get_Name_1Element.23693.definition - public String get_Name_1Element() - // ino.end - // ino.method.get_Name_1Element.23693.body - { - return (String) name.elementAt(0); - } - // ino.end - - // ino.method.set_Typen.23696.definition - public void set_Typen(Menge t) - // ino.end - // ino.method.set_Typen.23696.body - { - typen=t; - } - // ino.end - - // ino.method.set_ParaList.23699.definition - public void set_ParaList(Menge pl) - // ino.end - // ino.method.set_ParaList.23699.body - { - this.paralist = pl; - } - // ino.end - - // ino.method.get_RealParaList.23702.definition - public Menge get_RealParaList() - // ino.end - // ino.method.get_RealParaList.23702.body - { - return this.paralist; - } - // ino.end - - // ino.method.get_ParaList.23705.definition - public Menge get_ParaList() - // ino.end - // ino.method.get_ParaList.23705.body - { - if(this.paralist != null) - return this.paralist; - else return new Menge(); - } - // ino.end - - // ino.method.get_vParaOrg.23708.definition - public Menge get_vParaOrg() - // ino.end - // ino.method.get_vParaOrg.23708.body - { - return this.vParaOrg; - } - // ino.end - - - // ino.method.get_Typen.23711.definition - public Menge get_Typen() - // ino.end - // ino.method.get_Typen.23711.body - { - return typen; - } - // ino.end - - // ino.method.get_codegen_UsedId.23714.definition - public String get_codegen_UsedId() - // ino.end - // ino.method.get_codegen_UsedId.23714.body - { - String name_string = new String(); - name_string += (String)name.elementAt(0); - for(int i = 1; i < name.size(); i++) - name_string += ("/" + (String)name.elementAt(i)); - return name_string; - } - // ino.end - - - - // ino.method.removeLast.23720.definition - public void removeLast() - // ino.end - // ino.method.removeLast.23720.body - { - name.removeElementAt(name.size()-1); - } - // ino.end - - // ino.method.toString.23723.defdescription type=javadoc - /** - *
      Author: Martin Pl�micke - * @return - */ - // ino.end - // ino.method.toString.23723.definition - public String toString() - // ino.end - // ino.method.toString.23723.body - { - return this.get_Name_1Element();//name.toString(); //geändert von Andreas Stadelmeier - /*String s = ""; - for(int i = 0; i(); - for(int i=0;i0){ - return(name.elementAt(name.size()-1).equals("*")); - } - return(false); - } - // ino.end - - // ino.method.getPackageName.23735.definition - public UsedId getPackageName() - // ino.end - // ino.method.getPackageName.23735.body - { - UsedId uid=new UsedId(-1); - uid.name=new Menge(); - for(int i=0;i0) - return name.lastElement(); - else - return null; - } - // ino.end - - public JavaCodeResult printJavaCode(ResultSet resultSet) { - if(this.name.size()>1)throw new TypeinferenceException("Es kann maximal nur eine Superklasse pro Klasse geben", null); - JavaCodeResult ret = new JavaCodeResult(this.getQualifiedName().toString()); - if(this.paralist != null){ - ret.attach( "<" ); - Iterator it = this.paralist.iterator(); - while(it.hasNext()){ - Type para = it.next(); - ret.attach(para.printJavaCode(resultSet)); - if(it.hasNext())ret.attach(", "); - } - //ret = ret.substring(0, ret.length()-2); - ret.attach(">"); - } - return ret; - } - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/misc/UserDef.java b/src/de/dhbwstuttgart/syntaxtree/misc/UserDef.java deleted file mode 100755 index 96085afe..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/misc/UserDef.java +++ /dev/null @@ -1,11 +0,0 @@ -// ino.module.UserDef.8568.package -package de.dhbwstuttgart.syntaxtree.misc; -// ino.end -// ino.class.UserDef.23741.declaration -public class UserDef extends Status -// ino.end -// ino.class.UserDef.23741.body -{ - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/modifier/Abstract.java b/src/de/dhbwstuttgart/syntaxtree/modifier/Abstract.java index 0fbc63fd..11661bcd 100755 --- a/src/de/dhbwstuttgart/syntaxtree/modifier/Abstract.java +++ b/src/de/dhbwstuttgart/syntaxtree/modifier/Abstract.java @@ -1,30 +1,19 @@ -// ino.module.Abstract.8585.package package de.dhbwstuttgart.syntaxtree.modifier; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; - -// ino.class.Abstract.24015.description type=javadoc /** * Stellt den Modifier Abstract dar. * */ -// ino.end -// ino.class.Abstract.24015.declaration public class Abstract extends Modifier -// ino.end -// ino.class.Abstract.24015.body { - // ino.method.getBitmask.24019.definition public short getBitmask() - // ino.end - // ino.method.getBitmask.24019.body { return 0x0400; } - // ino.end @Override public JavaCodeResult printJavaCode(ResultSet resultSet) { @@ -32,4 +21,3 @@ public class Abstract extends Modifier } } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/modifier/Modifiers.java b/src/de/dhbwstuttgart/syntaxtree/modifier/Modifiers.java index c61fd97b..92db05ed 100755 --- a/src/de/dhbwstuttgart/syntaxtree/modifier/Modifiers.java +++ b/src/de/dhbwstuttgart/syntaxtree/modifier/Modifiers.java @@ -15,13 +15,8 @@ import de.dhbwstuttgart.typeinference.ResultSet; * Die Klasse beinhaltet die Liste der Access-Modifier fuer eine Klasse, * Methode usw. */ -// ino.end -// ino.class.Modifiers.24035.declaration public class Modifiers -// ino.end -// ino.class.Modifiers.24035.body { - // ino.attribute.modifier.24038.declaration protected Menge modifier = new Menge(); // ino.end @@ -104,16 +99,11 @@ public class Modifiers modifier.addElement(new Public()); } - // ino.method.calculate_access_flags.24056.defdescription type=javadoc /** * Gibt den Bitmaskenwert fuer die enthaltenen Access-Modifier * zurueck. */ - // ino.end - // ino.method.calculate_access_flags.24056.definition public short calculate_access_flags() - // ino.end - // ino.method.calculate_access_flags.24056.body { short ret = 0; @@ -127,7 +117,6 @@ public class Modifiers } return ret; } - // ino.end public JavaCodeResult printJavaCode(ResultSet resultSet) { JavaCodeResult ret = new JavaCodeResult(); diff --git a/src/de/dhbwstuttgart/syntaxtree/operator/EqualOp.java b/src/de/dhbwstuttgart/syntaxtree/operator/EqualOp.java index 59bd9b46..0b1bc8f2 100755 --- a/src/de/dhbwstuttgart/syntaxtree/operator/EqualOp.java +++ b/src/de/dhbwstuttgart/syntaxtree/operator/EqualOp.java @@ -1,36 +1,13 @@ // ino.module.EqualOp.8597.package package de.dhbwstuttgart.syntaxtree.operator; // ino.end -// ino.module.EqualOp.8597.import -import java.util.Iterator; +// ino.module.EqualOp.8597.import -import org.apache.bcel.Constants; import org.apache.bcel.generic.BranchInstruction; -import org.apache.bcel.generic.GOTO; import org.apache.bcel.generic.IF_ICMPNE; -import org.apache.bcel.generic.InstructionConstants; -import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.NOP; -import org.apache.bcel.generic.ObjectType; - -import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.statement.Binary; -import de.dhbwstuttgart.syntaxtree.statement.Expr; -import de.dhbwstuttgart.syntaxtree.statement.Null; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.typeinference.Pair; -import de.dhbwstuttgart.typeinference.unify.TypeUnify; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - - -// ino.class.EqualOp.24118.declaration +// ino.class.EqualOp.24118.declaration public class EqualOp extends RelOp // ino.end // ino.class.EqualOp.24118.body diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ArgumentList.java b/src/de/dhbwstuttgart/syntaxtree/statement/ArgumentList.java index f393ad12..02b7d884 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ArgumentList.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ArgumentList.java @@ -14,7 +14,11 @@ import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; public class ArgumentList extends SyntaxTreeNode { - public Menge expr = new Menge(); + public ArgumentList(int offset) { + super(offset); + } + + public Menge expr = new Menge(); public Object get_firstElement() @@ -67,15 +71,6 @@ public class ArgumentList extends SyntaxTreeNode return 0; } - - - @Override - public int getVariableLength() { - return 0; - } - - - @Override public Menge getChildren() { return expr; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java index 44c3d20e..17409537 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java @@ -1,96 +1,48 @@ -// ino.module.Assign.8622.package -package de.dhbwstuttgart.syntaxtree.statement; -// ino.end -// ino.module.Assign.8622.import -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Iterator; -import org.apache.bcel.generic.ASTORE; -import org.apache.bcel.generic.ClassGen; -import org.apache.bcel.generic.DSTORE; -import org.apache.bcel.generic.FSTORE; -import org.apache.bcel.generic.ISTORE; -import org.apache.bcel.generic.InstructionFactory; +package de.dhbwstuttgart.syntaxtree.statement; + import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.LSTORE; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.syntaxtree.type.Void; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.Pair; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.unify.TypeUnify; - - -// ino.class.Assign.24926.declaration -public class Assign extends Expr -// ino.end -// ino.class.Assign.24926.body +public class Assign extends ExprStmt { - // ino.method.Assign.24930.definition - public Assign(int offset,int variableLength) - // ino.end - // ino.method.Assign.24930.body - { - super(offset,variableLength); - } - // ino.end + public Assign(Type type, int offset) { + super(type, offset); + } - // ino.attribute.expr1.24933.declaration - public Expr expr1; - // ino.end - // ino.attribute.expr2.24936.declaration + public Expr expr1; public Expr expr2; - // ino.end - - // ino.attribute.parserlog.24939.decldescription type=javadoc /** * Logger log4j */ - // ino.end - // ino.attribute.parserlog.24939.declaration protected static Logger parserlog = Logger.getLogger("parser"); - // ino.end - // ino.method.set_Expr.24942.definition public void set_Expr(Expr expr1,Expr expr2) - // ino.end - // ino.method.set_Expr.24942.body { this.expr1 = expr1; this.expr2 = expr2; } - // ino.end - - - - - // ino.method.get_Name.24948.definition public String get_Name() - // ino.end - // ino.method.get_Name.24948.body { return null; } - // ino.end /** @@ -102,7 +54,7 @@ public class Assign extends Expr ret.add(expr1.TYPEExpr(assumptions)); ret.add(expr2.TYPEExpr(assumptions)); //this.setTypeVariable( TypePlaceholder.fresh(this)); - this.setType(TypePlaceholder.fresh(this)); + //this.setType(TypePlaceholder.fresh(this)); ret.add(ConstraintsSet.createSingleConstraint(expr2.getType().TYPE(assumptions, this), expr1.getType().TYPE(assumptions, this))); //expr2.type <. expr1.type ret.add(ConstraintsSet.createSingleConstraint(expr1.getType().TYPE(assumptions, this), this.getType().TYPE(assumptions, this))); return ret; @@ -117,7 +69,7 @@ public class Assign extends Expr @Override public ConstraintsSet TYPEStmt(TypeAssumptions assumptions){ ConstraintsSet ret = this.TYPEExpr(assumptions); //TypeExpr aufrufen - this.setType(new Void(this,0)); //Typ des Statments auf Void setzen. + //this.setType(new Void(0)); //Typ des Statments auf Void setzen. return ret; } @@ -148,12 +100,12 @@ public class Assign extends Expr } // ino.end - +/* @Override public String getTypeInformation(){ return "(" + expr1.getTypeInformation() + " = " + expr2.getTypeInformation() + ") : "+this.getType(); } - +*/ @Override public JavaCodeResult printJavaCode(ResultSet resultSet){ JavaCodeResult ret = new JavaCodeResult().attach(this.expr1.printJavaCode(resultSet) ).attach( " = " ).attach( this.expr2.printJavaCode(resultSet)); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java index 4ec71cd8..31526d94 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java @@ -2,43 +2,25 @@ package de.dhbwstuttgart.syntaxtree.statement; // ino.end // ino.module.Binary.8623.import -import java.util.Enumeration; import java.util.HashMap; -import java.util.Hashtable; -import org.apache.bcel.generic.BranchInstruction; import org.apache.bcel.generic.ClassGen; -import org.apache.bcel.generic.GOTO; -import org.apache.bcel.generic.IF_ICMPNE; -import org.apache.bcel.generic.InstructionConstants; import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.NOP; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.operator.AddOp; -import de.dhbwstuttgart.syntaxtree.operator.LogOp; -import de.dhbwstuttgart.syntaxtree.operator.MulOp; import de.dhbwstuttgart.syntaxtree.operator.Operator; -import de.dhbwstuttgart.syntaxtree.operator.RelOp; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.OderConstraint; -import de.dhbwstuttgart.typeinference.Pair; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.UndConstraint; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - // ino.class.Binary.24966.description type=line @@ -164,9 +146,6 @@ public class Binary extends BinaryExpr // ino.method.wandleRefTypeAttributes2GenericAttributes.25027.body { } - // ino.end - - @Override public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { @@ -180,7 +159,7 @@ public class Binary extends BinaryExpr * @param expr2 * @return */ - if(this.getType()==null)this.set_Type(TypePlaceholder.fresh(this)); + //if(this.getType()==null)this.set_Type(TypePlaceholder.fresh(this)); OderConstraint oderCons = new OderConstraint(); HashMap rMap = this.op.getReturnTypes(assumptions); for(Type rT : rMap.keySet()){ diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Block.java b/src/de/dhbwstuttgart/syntaxtree/statement/Block.java index 492c8003..17bb9150 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Block.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Block.java @@ -5,6 +5,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; +import java.util.List; import org.apache.bcel.Constants; import org.apache.bcel.generic.ClassGen; @@ -45,23 +46,17 @@ public class Block extends Statement private ConstantPoolGen _cp; private ClassGen _cg; - // ino.method.Block.25041.definition - public Block() - // ino.end - // ino.method.Block.25041.body - { - super(-1,-1); - } - // ino.end + public Block(List statements, int offset) { + super(offset); + this.statements = statements; + } - // ino.attribute.parserlog.25044.declaration + // ino.attribute.parserlog.25044.declaration protected static Logger parserlog = Logger.getLogger("parser"); // ino.end - // ino.attribute.statements.25047.declaration - public Menge statements = new Menge(); - // ino.end + public List statements = new Menge(); //private String sc_meth_ret_type; @@ -78,38 +73,12 @@ public class Block extends Statement // ino.method.get_Statement.25065.definition - public Menge get_Statement() + public List get_Statement() // ino.end // ino.method.get_Statement.25065.body { return statements; } - // ino.end - - - - - // ino.method.set_Statement.25068.definition - public void set_Statement(Statement s) - // ino.end - // ino.method.set_Statement.25068.body - { - statements.addElement(s); - } - // ino.end - - - - // ino.method.set_Statement_Menge.25071.definition - public void set_Statement_Menge(Menge v) - // ino.end - // ino.method.set_Statement_Menge.25071.body - { - statements = v; - } - // ino.end - - ///////////////////////////////////////////////////////////////////////// // TypeReconstructionAlgorithmus @@ -132,33 +101,9 @@ public class Block extends Statement } // ino.end - - // ino.method.wandleRefTypeAttributes2GenericAttributes.25086.defdescription type=javadoc - /** - * In allen lokalen Variablendeklarationen die "falschen" RefTypes ersetzen - * @param paralist - * @param genericMethodParameters - */ - // ino.end - // ino.method.wandleRefTypeAttributes2GenericAttributes.25086.definition - public void wandleRefTypeAttributes2GenericAttributes(Menge paralist, Menge genericMethodParameters) - // ino.end - // ino.method.wandleRefTypeAttributes2GenericAttributes.25086.body - { - if(statements==null) - return; - - for(int i=0;i0){ - Statement stmt = statements.elementAt(statements.size()-1); + Statement stmt = statements.get(statements.size()-1); typinferenceLog.debug("Prozessing statement: "+stmt, Section.TYPEINFERENCE); this.setType(stmt.getType()); for(int i= statements.size()-2; i >= 0; i--) { - stmt = statements.elementAt(i); + stmt = statements.get(i); typinferenceLog.debug("Prozessing statement: "+stmt, Section.TYPEINFERENCE); if (!(stmt.getReturnType() instanceof Void)) if (this.getReturnType() instanceof Void) { @@ -187,8 +132,6 @@ public class Block extends Statement this.setType(tph); } } - }else{ - this.setType(new Void(this,0)); } return ret; } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java index 600c278a..8f96a203 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java @@ -51,7 +51,7 @@ public class BoolLiteral extends Literal super(-1,-1); // #JB# 20.04.2005 // ########################################################### - this.setType(new RefType("Boolean",this,this.getOffset())); + this.setType(new RefType("java.lang.Boolean",this.getOffset())); //this.setType(new Type("boolean")); // ########################################################### } @@ -99,7 +99,6 @@ public class BoolLiteral extends Literal @Override public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { - this.type = assumptions.checkType(new RefType("java.lang.Boolean",this,-1), this); return new ConstraintsSet(); } @@ -118,15 +117,6 @@ public class BoolLiteral extends Literal } - - @Override - public void wandleRefTypeAttributes2GenericAttributes( - Menge paralist, - Menge genericMethodParameters) { - // TODO Auto-generated method stub - - } - @Override public InstructionList genByteCode(ClassGenerator _cg, TypeinferenceResultSet rs) { InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java index b20676d5..cb7d499d 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java @@ -26,16 +26,17 @@ import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; // ino.class.CastExpr.25126.declaration -public class CastExpr extends UnaryExpr +public class CastExpr extends Expr // ino.end // ino.class.CastExpr.25126.body { // ino.method.CastExpr.25130.definition - public CastExpr(int offset,int variableLength) + public CastExpr(Type castType, Expr expr,int offset) // ino.end // ino.method.CastExpr.25130.body { - super(offset,variableLength); + super(offset); + this.type = castType; } // ino.end @@ -106,7 +107,7 @@ public class CastExpr extends UnaryExpr @Override public JavaCodeResult printJavaCode(ResultSet resultSet) { - return new JavaCodeResult("(("+this.usedid+")").attach(this.expr.printJavaCode(resultSet)).attach(")"); + return new JavaCodeResult("(("+this.+")").attach(this.expr.printJavaCode(resultSet)).attach(")"); } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Executeable.java b/src/de/dhbwstuttgart/syntaxtree/statement/Executeable.java new file mode 100755 index 00000000..7550f6c7 --- /dev/null +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Executeable.java @@ -0,0 +1,36 @@ + +package de.dhbwstuttgart.syntaxtree.statement; +import java.util.Iterator; + +import org.apache.bcel.generic.InstructionList; + +import de.dhbwstuttgart.typeinference.Menge; + +import de.dhbwstuttgart.logger.Logger; +import de.dhbwstuttgart.bytecode.ClassGenerator; +import de.dhbwstuttgart.core.MyCompiler; +import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; +import de.dhbwstuttgart.syntaxtree.type.Type; +import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; +import de.dhbwstuttgart.typeinference.Pair; +import de.dhbwstuttgart.typeinference.Typeable; +import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; +import de.dhbwstuttgart.typeinference.unify.TypeUnify; + +public abstract class Executeable extends SyntaxTreeNode implements Typeable +{ + private Type type; + + public Executeable(Type type,int offset) { + super(offset); + this.type = type; + } + + public Type getType(){ + return type; + } + + public abstract InstructionList genByteCode(ClassGenerator _cg, TypeinferenceResultSet rs); + + //public abstract String getTypeInformation(); +} diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Expr.java b/src/de/dhbwstuttgart/syntaxtree/statement/Expr.java index d7e7a0df..510d38f0 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Expr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Expr.java @@ -1,7 +1,6 @@ -// ino.module.Expr.8630.package + package de.dhbwstuttgart.syntaxtree.statement; -// ino.end -// ino.module.Expr.8630.import + import java.util.Hashtable; import java.util.Iterator; @@ -10,7 +9,7 @@ import org.apache.bcel.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; +import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintsSet; @@ -18,81 +17,14 @@ import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; - -// ino.class.Expr.25225.declaration -public abstract class Expr extends ExprStmt -// ino.end -// ino.class.Expr.25225.body +public abstract class Expr extends Executeable { - // ino.method.Expr.25229.definition - public Expr(int offset, int variableLength) - // ino.end - // ino.method.Expr.25229.body - { - super(offset, variableLength); - } - // ino.end - // ino.attribute.usedid.25232.declaration - public UsedId usedid; //String type; ab sofort in die Klasse ExprStmt verlegt. last1 17.03.02 - // ino.end - - // ino.method.set_Type.25235.definition - public void set_Type(Type type) - // ino.end - // ino.method.set_Type.25235.body - { - this.setType(type); - } - // ino.end + public Expr(Type type, int offset) { + super(type, offset); + } - // ino.method.set_UsedId.25238.definition - public void set_UsedId(UsedId ui) - // ino.end - // ino.method.set_UsedId.25238.body - { - this.usedid = ui; - } - // ino.end - - // ino.method.get_UsedId.25241.definition - public UsedId get_UsedId() - // ino.end - // ino.method.get_UsedId.25241.body - { - return usedid; - } - // ino.end - - // ino.method.get_Name_Menge.25244.definition - public Menge get_Name_Menge() - // ino.end - // ino.method.get_Name_Menge.25244.body - { - return usedid.get_Name(); - } - // ino.end - - - - // ino.method.get_Type_Menge.25247.definition - public Menge get_Type_Menge() - // ino.end - // ino.method.get_Type_Menge.25247.body - { - return usedid.get_Typen(); - } - // ino.end - - - - - - - // ino.method.get_Name.25253.declaration - public abstract String get_Name(); - // ino.end - + public abstract String get_Name(); /** * @author AI10023 - Andreas Stadelmeier @@ -100,17 +32,4 @@ public abstract class Expr extends ExprStmt * Jede Expression wird im Zuge des Algorithmus durch die TYPEExpr-Funktion angesprochen. */ public abstract ConstraintsSet TYPEExpr(TypeAssumptions assumptions); - - /** - * @author AI10023 - Andreas Stadelmeier - * Die Funktion überschreiben, damit sie von Expressions nicht mehr spezifiziert werden muss. - * Denn Expressions müssen diese Funktion nicht implementieren. - */ - @Override - public ConstraintsSet TYPEStmt(TypeAssumptions assumptions){ - throw new NotImplementedException(); //wird die TYPEStmt-Methode innerhalb einer Expr aufgerufen, dann ist etwas schief gelaufen. - } - - //public abstract InstructionList genByteCode(ClassGen _cg, TypeAssumptions ass); } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ExprStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/ExprStmt.java old mode 100755 new mode 100644 index 1a657afb..51372c17 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ExprStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ExprStmt.java @@ -1,69 +1,14 @@ -// ino.module.ExprStmt.8631.package package de.dhbwstuttgart.syntaxtree.statement; -// ino.end -// ino.module.ExprStmt.8631.import -import java.util.Iterator; -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.logger.Logger; - -import de.dhbwstuttgart.core.MyCompiler; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; -import de.dhbwstuttgart.typeinference.Pair; -import de.dhbwstuttgart.typeinference.unify.TypeUnify; +import de.dhbwstuttgart.typeinference.ConstraintsSet; +import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -// ino.class.ExprStmt.25265.declaration -public abstract class ExprStmt extends Statement -// ino.end -// ino.class.ExprStmt.25265.body -{ - // ino.method.ExprStmt.25270.definition - public ExprStmt(int offset, int variableLength) - // ino.end - // ino.method.ExprStmt.25270.body - { - super(offset,variableLength); - } - // ino.end - - - // ino.attribute.type.25273.declaration - //protected Type type; // Type type; - // ino.end - // ino.attribute.inferencelog.25276.declaration - protected static Logger inferencelog = Logger.getLogger("inference"); - // ino.end - - // ino.method.getTypeName.25279.definition - public String getTypeName() - // ino.end - // ino.method.getTypeName.25279.body - { - if (getType()!=null) - return getType().getName().toString(); - else - return null; - } - // ino.end - - - - // ino.method.getTypeLineNumber.25291.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.getTypeLineNumber.25291.definition - public int getTypeLineNumber() - // ino.end - // ino.method.getTypeLineNumber.25291.body - { - return MyCompiler.NO_LINENUMBER; - } - // ino.end +public abstract class ExprStmt extends Executeable{ + public ExprStmt(Type type,int offset) { + super(type,offset); + } + public abstract ConstraintsSet TYPEExpr(TypeAssumptions assumptions); + public abstract ConstraintsSet TYPEStmt(TypeAssumptions assumptions); } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java index 220517e2..c090958e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java @@ -1,51 +1,34 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.ArrayList; -import java.util.List; import org.apache.bcel.Const; -import org.apache.bcel.Constants; import org.apache.bcel.classfile.BootstrapMethod; import org.apache.bcel.classfile.ConstantMethodHandle; import org.apache.bcel.classfile.ConstantMethodType; -import org.apache.bcel.classfile.ConstantPool; import org.apache.bcel.classfile.InnerClass; -import org.apache.bcel.generic.BIPUSH; -import org.apache.bcel.generic.ClassGen; -import org.apache.bcel.generic.ConstantPoolGen; import org.apache.bcel.generic.InstructionFactory; import org.apache.bcel.generic.InstructionList; -import org.apache.bcel.generic.MethodGen; -import org.apache.bcel.generic.INVOKEDYNAMIC; -import org.apache.bcel.generic.Instruction; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.bytecode.DHBWConstantPoolGen; import de.dhbwstuttgart.bytecode.MethodGenerator; -import de.dhbwstuttgart.bytecode.TypePlaceholderType; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.ClassHelper; import de.dhbwstuttgart.syntaxtree.FormalParameter; -import de.dhbwstuttgart.syntaxtree.Method; import de.dhbwstuttgart.syntaxtree.ParameterList; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType; import de.dhbwstuttgart.syntaxtree.type.FunN; import de.dhbwstuttgart.syntaxtree.type.FunVoidN; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.ObjectType; import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.SuperWildcardType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; -import de.dhbwstuttgart.syntaxtree.type.WildcardType; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.OderConstraint; import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.Typeable; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.assumptions.ParameterAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java index 804bb1f6..94dfa98e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java @@ -16,14 +16,9 @@ import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.Void; -import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.Pair; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.unify.TypeUnify; import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Statement.java b/src/de/dhbwstuttgart/syntaxtree/statement/Statement.java index eba80cc5..f8103e0d 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Statement.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Statement.java @@ -1,7 +1,6 @@ // ino.module.Statement.8652.package package de.dhbwstuttgart.syntaxtree.statement; -// ino.end -// ino.module.Statement.8652.import + import java.util.Enumeration; import java.util.Hashtable; @@ -28,55 +27,15 @@ import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -// ino.class.Statement.26184.declaration -public abstract class Statement extends SyntaxTreeNode implements IItemWithOffset, Typeable -// ino.end -// ino.class.Statement.26184.body +public abstract class Statement extends Executeable { - // ino.attribute.offset.26188.declaration - protected int offset; - // ino.end - // ino.attribute.variableLength.26191.declaration - private int variableLength; - // ino.end - - protected Type type; - // ino.method.Statement.26194.definition - public Statement(int offset, int variableLength) - // ino.end - // ino.method.Statement.26194.body + public Statement(Type type,int offset) { - this.offset=offset; - this.variableLength=variableLength; + super(type,offset); } - // ino.end - // ino.method.getOffset.26197.definition - public int getOffset() - // ino.end - // ino.method.getOffset.26197.body - { - return offset; - } - // ino.end - - // ino.method.getVariableLength.26200.definition - public int getVariableLength() - // ino.end - // ino.method.getVariableLength.26200.body - { - return variableLength; - } - // ino.end - - - - - // ino.method.wandleRefTypeAttributes2GenericAttributes.26224.declaration - public abstract void wandleRefTypeAttributes2GenericAttributes(Menge paralist, Menge genericMethodParameters); - // ino.end /** * @author AI10023 - Andreas Stadelmeier @@ -85,12 +44,6 @@ public abstract class Statement extends SyntaxTreeNode implements IItemWithOffse */ public abstract ConstraintsSet TYPEStmt(TypeAssumptions assumptions); - - - public Type getType(){ - return type; - } - /** * @author Andreas Stadelmeier, a10023 * Sollte von jedem Statement überschrieben werden. @@ -98,23 +51,9 @@ public abstract class Statement extends SyntaxTreeNode implements IItemWithOffse * @return */ public String getTypeInformation(){ - return this.printJavaCode(new ResultSet(new Menge()))+" : "+type.toString(); + return this.printJavaCode(new ResultSet(new Menge()))+" : "+this.getType().toString(); } - - /** - * @author AI10023 - Andreas Stadelmeier - * Jedem Statement und jeder Expression wird im Zuge des Typinferenzalgorithmus eine Typvariable zugewiesen. - * Daher müssen alle Statements und Expressions die Methoden setTypeVariable und getTypeVariable implementieren. - */ - public void setType(Type t) - { - this.type=t; - } - - - public abstract JavaCodeResult printJavaCode(ResultSet resultSet); - @Override public String getDescription(){ return this.printJavaCode(new ResultSet(new Menge())).toString(); @@ -124,14 +63,9 @@ public abstract class Statement extends SyntaxTreeNode implements IItemWithOffse } public Type getReturnType(){ - return new de.dhbwstuttgart.syntaxtree.type.Void(this,-1); + return new de.dhbwstuttgart.syntaxtree.type.Void(-1); } - public abstract InstructionList genByteCode(ClassGenerator _cg, TypeinferenceResultSet rs); -} - - - -// ino.end +} \ No newline at end of file diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/SuperCall.java b/src/de/dhbwstuttgart/syntaxtree/statement/SuperCall.java index 18ac0fba..28cb0bb2 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/SuperCall.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/SuperCall.java @@ -1,32 +1,22 @@ // ino.module.This.8654.package package de.dhbwstuttgart.syntaxtree.statement; // ino.end -// ino.module.This.8654.import -import java.util.Hashtable; +// ino.module.This.8654.import import org.apache.bcel.Constants; -import org.apache.bcel.generic.ClassGen; import org.apache.bcel.generic.InstructionFactory; import org.apache.bcel.generic.InstructionHandle; import org.apache.bcel.generic.InstructionList; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.Constructor; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.misc.ConstructorCall; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.Void; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.ConstructorAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/This.java b/src/de/dhbwstuttgart/syntaxtree/statement/This.java index ac679cc6..767e18f7 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/This.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/This.java @@ -17,7 +17,6 @@ import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.Constructor; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ThisCall.java b/src/de/dhbwstuttgart/syntaxtree/statement/ThisCall.java index 2e2bc05f..c506386e 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ThisCall.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ThisCall.java @@ -1,19 +1,10 @@ // ino.module.This.8654.package package de.dhbwstuttgart.syntaxtree.statement; // ino.end -// ino.module.This.8654.import -import java.util.Hashtable; -import de.dhbwstuttgart.typeinference.Menge; +// ino.module.This.8654.import -import de.dhbwstuttgart.logger.Logger; -import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.Constructor; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.misc.ConstructorCall; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; -import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.Void; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.JavaCodeResult; @@ -26,14 +17,10 @@ import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; public class ThisCall extends MethodCall { - public ThisCall(int offset,int variableLength) + public ThisCall(Receiver receiver, ArgumentList arglist, int offset) { - super(offset,variableLength); - } + super(offset); - public ThisCall(SyntaxTreeNode parent){ - this(0,0); - this.parent = parent; } public ArgumentList arglist; @@ -47,15 +34,7 @@ public class ThisCall extends MethodCall { return this.arglist; } - - public void set_UsedId(UsedId ui) - { - this.usedid = ui; - } - - - - + @Override public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { throw new TypeinferenceException("this(...)-Aufruf kann nicht als Ausdruck verwendet werden",this); @@ -65,8 +44,7 @@ public class ThisCall extends MethodCall * This kann auch als Konstruktoraufruf in einem Konstruktor-Block vorkommen. */ @Override - public ConstraintsSet TYPEStmt(TypeAssumptions assumptions) { - String className = this.getParentClass().getName().toString(); + public ConstraintsSet TYPEStmt(TypeAssumptions assumptions, Class parentClass) { ConstraintsSet ret = new ConstraintsSet(); this.setType(new Void(this,this.getOffset())); //Kontrollieren, dass sich this(...) in einem Konstruktor und dort als erstes Statement befindet: @@ -74,9 +52,7 @@ public class ThisCall extends MethodCall if(p instanceof Constructor && ((Constructor)p).get_Block().statements.firstElement().equals(this)){ //Constraints generieren: - - ConstructorCall constructorCall = new ConstructorCall(new Receiver(new This(this)), className, arglist, this.getOffset()); - ret.add(constructorCall.TYPEStmt(assumptions)); + ret.add(super.TYPEStmt(assumptions, parentClass)); return ret; }else{ //Ansonsten Fehler ausgeben: @@ -84,9 +60,18 @@ public class ThisCall extends MethodCall } } + @Override + public ConstraintsSet overloading(TypeAssumptions assumptions){ + ConstraintsSet ret = new ConstraintsSet(); + ConstructorAssumption cAss = assumptions.getConstructorAssumption(this.get_Name(), this.getArgumentList().size()); + if(cAss == null)throw new TypeinferenceException("Kein Konstruktor mit passender Parameteranzahl vorhanden",this); + + ret.add(constraintsFromMethodAssumption(cAss, assumptions)); + return ret; + } + public String toString() { - //return receiver/*.toString()*/ + " " + usedid.toString(); return "(" + "this" +"(" + this.getArgumentList() + "))"; } @@ -94,14 +79,6 @@ public class ThisCall extends MethodCall public JavaCodeResult printJavaCode(ResultSet resultSet) { return new JavaCodeResult("this("+this.getArgumentList().printJavaCode(resultSet)+")"); } - - @Override - public Menge getChildren() { - Menge ret = new Menge(); - if(arglist != null)ret.add(arglist); - return ret; - } - } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/UnaryExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/UnaryExpr.java index 99a3ab87..da6ac5b3 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/UnaryExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/UnaryExpr.java @@ -4,42 +4,42 @@ package de.dhbwstuttgart.syntaxtree.statement; // ino.module.UnaryExpr.8655.import import de.dhbwstuttgart.typeinference.Menge; +import org.apache.bcel.generic.InstructionList; + +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.OderConstraint; +import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.UndConstraint; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; - -// ino.class.UnaryExpr.26298.declaration -public abstract class UnaryExpr extends Expr -// ino.end -// ino.class.UnaryExpr.26298.body +public abstract class UnaryExpr extends MethodCall { public Expr expr; - // ino.method.UnaryExpr.26302.definition public UnaryExpr(int offset,int variableLength) - // ino.end - // ino.method.UnaryExpr.26302.body { super(offset,variableLength); } - // ino.end + @Override + public InstructionList genByteCode(ClassGenerator cg, TypeinferenceResultSet rs) { + /** + * TODO + * Je nach Typisierung wird eine andere Methode aufgerufen + * Alle Parameter müssen in ihren primitiven Datentyp umgewandelt werden + * Der Bytecodegenerator muss anhand der ermittelten Typen den korrekten Bytecode produzieren + * Es werden nie Typen generiert, die nicht Containertypen von primitiven Datentypen sind. + * Das lassen die generierten Constraints nicht zu. + */ + return super.genByteCode(cg, rs); + } - private Menge getNumericTypes(){ - Menge ret = new Menge<>(); - ret.add(new RefType("Integer",this,-1)); - ret.add(new RefType("Long",this,-1)); - ret.add(new RefType("Double",this,-1)); - ret.add(new RefType("Float",this,-1)); - return ret ; - } - + /* @Override public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { if(this.getType() == null)this.setType(TypePlaceholder.fresh(this)); @@ -63,7 +63,6 @@ public abstract class UnaryExpr extends Expr this.setType(new de.dhbwstuttgart.syntaxtree.type.Void(this, -1).TYPE(assumptions, this)); return ret; } - + */ } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.java b/src/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.java deleted file mode 100755 index 1dfef648..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/BoundedGenericTypeVar.java +++ /dev/null @@ -1,140 +0,0 @@ - -// ino.module.BoundedGenericTypeVar.8669.package -package de.dhbwstuttgart.syntaxtree.type; -// ino.end - -// ino.module.BoundedGenericTypeVar.8669.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.typeinference.ConstraintsSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - -// ino.class.BoundedGenericTypeVar.26464.description type=javadoc -/** - * Entspricht einem GenericTypeVar, jedoch mit Bounds - * (d.h. vorgaben, von welchem Typ die Typevar sein darf - * => extends Class x - * => implements Interface y - * ... - * @author hoti 4.5.06 - * - */ -// ino.end -// ino.class.BoundedGenericTypeVar.26464.declaration -public class BoundedGenericTypeVar extends GenericTypeVar -// ino.end -// ino.class.BoundedGenericTypeVar.26464.body -{ - - // ino.attribute.bounds.26468.decldescription type=javadoc - /** - * Hier sind die Bounds in Form von Type-Objekten abgespeichert - */ - // ino.end - // ino.attribute.bounds.26468.declaration - Menge bounds=new Menge(); - // ino.end - private int endOffset; - - /* - // ino.method.BoundedGenericTypeVar.26471.definition - public BoundedGenericTypeVar(String s, int offset, Menge t, int endOffset) - // ino.end - // ino.method.BoundedGenericTypeVar.26471.body - { - super(s, offset); - throw new NotImplementedException(); - } - // ino.end - */ - - // ino.method.BoundedGenericTypeVar.29409.definition - public BoundedGenericTypeVar(String s, Menge bounds, SyntaxTreeNode parentClass, int offset, int endOffset) - // ino.end - // ino.method.BoundedGenericTypeVar.29409.body - { - super(s, parentClass ,offset); - if(bounds != null)for(Type t : bounds){ - //if(t!=null)this.extendVars.add(t); - } - //this.genericTypeVar = new RefType(s,offset); - this.bounds = bounds; - this.endOffset = endOffset; - } - // ino.end - - @Override - public int getEndOffset(){ - return this.endOffset; - } - - // ino.method.getBounds.26474.definition - public Menge getBounds() - // ino.end - // ino.method.getBounds.26474.body - { - return bounds; - } - // ino.end - - - @Override - public ConstraintsSet TYPE(TypeAssumptions ass) { - ConstraintsSet ret = super.TYPE(ass); - //ass.addGenericVarAssumption(this); - //Die Type methode der BoundedGenericTypeVar schreibt zusätzlich noch die Constraints für die bounds - Menge tempBounds = new Menge<>(); - if(this.bounds != null){ - for(ObjectType ev : this.bounds){ - Type extendsType = ev.TYPE(ass, this); - if(extendsType == null)throw new TypeinferenceException("Der Typ "+ev.getName()+" ist nicht korrekt", this); - - //TODO: ??? stimmt der Cast??? - tempBounds.add((ObjectType)extendsType); - //ret.add(new SingleConstraint(ass.getTypeFor(this, this), extendsType )); - } - } - this.bounds = tempBounds; - return ret; - } - - // ino.method.addBound.26480.definition - public void addBound(ObjectType bound) - // ino.end - // ino.method.addBound.26480.body - { - bounds.addElement(bound); - } - // ino.end - - // ino.method.clone.26483.definition - public BoundedGenericTypeVar clone() - // ino.end - // ino.method.clone.26483.body - { - return new BoundedGenericTypeVar(this.getName().toString(), this.getBounds(), this.getParentClass(), getOffset(), this.getEndOffset()); - } - // ino.end - - // ino.method.toString.26486.definition - public String toString() - // ino.end - // ino.method.toString.26486.body - { - return "BoGTV " + this.getName(); - } - // ino.end - - - @Override - public Menge getChildren() { - Menge ret = super.getChildren(); - ret.addAll(this.bounds); - return ret; - } - -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java index 7883d97f..e6ee1044 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java @@ -1,8 +1,7 @@ package de.dhbwstuttgart.syntaxtree.type; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; @@ -23,9 +22,9 @@ public class ExtendsWildcardType extends WildcardType implements ITypeContainer, * Author: Arne Lüdtke
      * Standard Konstruktor für eine ExtendsWildcard */ - public ExtendsWildcardType (int offset, ObjectType extendsType) + public ExtendsWildcardType (int offset, RefType extendsType) { - super(extendsType, extendsType.getParent(), offset); + super(extendsType, offset); this.name = new JavaClassName(this.toString()); } @@ -81,16 +80,6 @@ public class ExtendsWildcardType extends WildcardType implements ITypeContainer, } } - /** - * Author: Arne Lüdtke
      - * Gibt die passende FreshWildcardType Klasse zurück. - * Wird für CaptureConversion verwendet - */ - public FreshExtendsWildcardType GetFreshWildcardType() - { - return new FreshExtendsWildcardType(this.innerType,this.getParent(),-1); - } - /** * Author: Arne Lüdtke
      * Das gleiche wie get_ExtendsType(). diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FreshExtendsWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/FreshExtendsWildcardType.java deleted file mode 100755 index 4c5d8e4f..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/FreshExtendsWildcardType.java +++ /dev/null @@ -1,95 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; - -public class FreshExtendsWildcardType extends FreshWildcardType implements IMatchable { - - private ObjectType extendsBoundType; - - /** - * Author: Arne Lüdtke
      - * Standard Konstruktor für eine FreshExtendsWildcard - */ - public FreshExtendsWildcardType(ObjectType extendsBound,SyntaxTreeNode parent ,int offset) - { - super(parent,offset); - this.extendsBoundType = extendsBound; - } - - /** - * Author: Arne Lüdtke
      - * Privater Konstruktor für clone - */ - private FreshExtendsWildcardType(ObjectType extendsBound ,SyntaxTreeNode parent,int offset, String name) - { - super(parent,offset,name); - this.extendsBoundType = extendsBound; - } - - /** - * Author: Arne Lüdtke
      - * Gibt String Entsprechung zurück. - */ - public String toString() - { - String s = "FEWCT " + this.name; - if(extendsBoundType != null) - s += " " + extendsBoundType.toString(); - - return s; - } - - /** - * Author: Arne Lüdtke
      - * Gibt einen Klon der Wildcard zurück. - * Der Innere Typ wird auch geklont - */ - public FreshExtendsWildcardType clone() - { - return new FreshExtendsWildcardType(this.extendsBoundType.clone(),this.getParent(),getOffset(),this.name.toString()); - } - - /** - * Author: Arne Lüdtke
      - * Gibt die Grenze der Wildcard zurück - */ - public ObjectType get_ExtendsBound() - { - return extendsBoundType; - } - - /** - * Author: Arne Lüdtke
      - * Prüft, ob zwei Objekte gleich sind. NICHT INSTANZGLEICH - */ - public boolean equals(Object obj) - { - if(obj instanceof FreshExtendsWildcardType) - { - FreshExtendsWildcardType FEWT = (FreshExtendsWildcardType)obj; - return this.get_ExtendsBound().equals(FEWT.get_ExtendsBound()); - } - else - return false; - } - - /** - * Author: Arne Lüdtke
      - * Gibt die passende ExtendsWildcardType Klasse zurück. - * Wird für smaller4 verwendet - */ - public ExtendsWildcardType get_WildcardType() - { - return new ExtendsWildcardType(this.getOffset(),this.get_ExtendsBound()); - } - - /** - * Author: Arne Lüdtke
      - * Gibt den Typen zurück, der bei einem match im Unify verwendet werden soll. - * Wird über IMatchable implementiert. - */ - public Type getMatchType() - { - return this.get_ExtendsBound(); - } -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FreshSuperWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/FreshSuperWildcardType.java deleted file mode 100755 index c381d8e8..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/FreshSuperWildcardType.java +++ /dev/null @@ -1,95 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; - -public class FreshSuperWildcardType extends FreshWildcardType implements IMatchable { - - private ObjectType superBoundType; - - /** - * Author: Arne Lüdtke
      - * Standard Konstruktor für eine FreshSuperWildcard - */ - public FreshSuperWildcardType(ObjectType superBound ,SyntaxTreeNode parent, int offset) - { - super(parent,offset); - this.superBoundType = superBound; - } - - /** - * Author: Arne Lüdtke
      - * Privater Konstruktor für clone - */ - private FreshSuperWildcardType(ObjectType superBound,SyntaxTreeNode parent,int offset, String name) - { - super(parent,offset,name); - this.superBoundType = superBound; - } - - /** - * Author: Arne Lüdtke
      - * Gibt String Entsprechung zurück. - */ - public String toString() - { - String s = "FSWCT " + this.name; - if(superBoundType != null) - s += " " + superBoundType.toString(); - - return s; - } - - /** - * Author: Arne Lüdtke
      - * Gibt einen Klon der Wildcard zurück. - * Der Innere Typ wird auch geklont - */ - public FreshSuperWildcardType clone() - { - return new FreshSuperWildcardType((ObjectType) this.superBoundType.clone(),this.getParent(),getOffset(),this.name.toString()); - } - - /** - * Author: Arne Lüdtke
      - * Gibt die Grenze der Wildcard zurück - */ - public ObjectType get_SuperBound() - { - return superBoundType; - } - - /** - * Author: Arne Lüdtke
      - * Prüft, ob zwei Objekte gleich sind. NICHT INSTANZGLEICH - */ - public boolean equals(Object obj) - { - if(obj instanceof FreshSuperWildcardType) - { - FreshSuperWildcardType FSWT = (FreshSuperWildcardType)obj; - return this.get_SuperBound().equals(FSWT.get_SuperBound()); - } - else - return false; - } - - /** - * Author: Arne Lüdtke
      - * Gibt die passende SuperWildcardType Klasse zurück. - * Wird für smaller4 verwendet - */ - public SuperWildcardType get_WildcardType() - { - return new SuperWildcardType(this.getOffset(),this.get_SuperBound()); - } - - /** - * Author: Arne Lüdtke
      - * Gibt den Typen zurück, der bei einem match im Unify verwendet werden soll. - * Wird über IMatchable implementiert. - */ - public Type getMatchType() - { - return this.get_SuperBound(); - } -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java deleted file mode 100755 index 3c77d84d..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java +++ /dev/null @@ -1,180 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; - -public class FreshWildcardType extends ObjectType { - - private static String strNextName = "A"; - private Menge upperBounds = new Menge(); - - /** - * Author: Arne Lüdtke
      - * Standard Konstruktor für eine FreshWildcard - */ - public FreshWildcardType(SyntaxTreeNode parent, int offset) - { - super(parent, offset); - this.name = makeNewName(); - } - - /** - * Author: Arne Lüdtke
      - * Protected Konstruktor für clone. - * Protected, da vererbte Klassen ihn verwenden müssen. - */ - protected FreshWildcardType(SyntaxTreeNode parent, int offset, String name) - { - super(parent, offset); - this.name = new JavaClassName(name); - } - - /** - * Author: Arne Lüdtke
      - * Gibt String Entsprechung zurück. - */ - public String toString() - { - String s = "FWCT " + this.name; - if(upperBounds.size() > 0) - { - s += "|"; - for(int i = 0;i - * Gibt einen Klon der Wildcard zurück. - * Der Innere Typ wird auch geklont - */ - public FreshWildcardType clone() - { - return new FreshWildcardType(this.getParent(),getOffset(),this.name.toString()); - } - - /** - * Author: Arne Lüdtke
      - * Prüft, ob zwei Objekte gleich sind. NICHT INSTANZGLEICH - */ - public boolean equals(Object obj) - { - //Da die Namensgebung von Typeplaceholdern und FreshWildcards identisch ist, - //und im Type nur auf Namen geprüft wird muss verhindert werden, dass ausversehen True zurückgegeben wird, - //Wenn eine FreshWildcard mit einem TypePlaceholder verglichen wird. - return (obj instanceof FreshWildcardType) && super.equals(obj); - } - - /** - * Erzeugt einen neuen Namen, und gibt diesen zurück - * Methode aus TypePlaceholder kopiert - */ - private static JavaClassName makeNewName() - { - // luar: Methode aus TypePlaceholder kopiert. - String strReturn = strNextName; - - // n�chster Name berechnen und in strNextName speichern - inc( strNextName.length() - 1 ); - - return new JavaClassName(strReturn); - } - - /** - * Hilfsmethode für makeNewName - * Methode aus TypePlaceholder kopiert - */ - private static void inc(int i) - { - // luar: Methode aus TypePlaceholder kopiert. - if ( i == -1 ) - { - strNextName = "A" + strNextName; - return; - } - - char cBuchstabe = (char)(strNextName.charAt( i )); - cBuchstabe++; - if ( cBuchstabe - 65 > 25 ) - { - // aktuelle Stelle: auf A zuruecksetzen - manipulate( i, 'A' ); - - // vorherige Stelle erh�hen - inc( i - 1 ); - } - else - { - // aktueller Buchstabe �ndern - manipulate( i, cBuchstabe ); - } - } - - /** - * Hilfsmethode für makeNewName - * Methode aus TypePlaceholder kopiert - */ - private static void manipulate( int nStelle, char nWert ) - { - // luar: Methode aus TypePlaceholder kopiert. - String strTemp = ""; - for( int i = 0; i < strNextName.length(); i++) - { - if ( i == nStelle ) - strTemp = strTemp + nWert; - else - strTemp = strTemp + strNextName.charAt( i ); - } - strNextName = strTemp; - } - - /** - * Author: Arne Lüdtke
      - * Gibt die passende WildcardType Klasse zurück. - * Wird für smaller4 verwendet - */ - public WildcardType get_WildcardType() - { - return new WildcardType(null, this.getParent(),this.getOffset()); - } - /** - * Author: Arne Lüdtke
      - * Gibt den Menge der oberen Grenzen zurück - */ - public Menge get_UpperBounds() - { - return this.upperBounds; - } - /** - * Author: Arne Lüdtke
      - * Setzt den Menge der oberen Grenzen - */ - public void set_UpperBounds(Menge bounds) - { - this.upperBounds = bounds; - } - - @Override - public JavaCodeResult printJavaCode(ResultSet resultSet) { - throw new NotImplementedException(); - } - - @Override - public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs) { - // TODO: Bytecode - return null; - } -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FunN.java b/src/de/dhbwstuttgart/syntaxtree/type/FunN.java index 6b3613b9..897fe55c 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/FunN.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/FunN.java @@ -2,22 +2,13 @@ package de.dhbwstuttgart.syntaxtree.type; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import de.dhbwstuttgart.typeinference.FunNInterface; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Method; -import de.dhbwstuttgart.syntaxtree.ParameterList; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.factory.NameGenerator; -import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; /** * @see Spezifikation "Complete Typeinference in Java 8" von Martin Plümicke @@ -30,8 +21,8 @@ import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; */ public class FunN extends RefType { - private Type R; - private List T; + private RefType R; + private List T; /** * @author Andreas Stadelmeier, a10023 @@ -41,8 +32,8 @@ public class FunN extends RefType { * @param T * @return */ - public FunN(Type R, List T) { - super("",null,0); + public FunN(RefType R, List T) { + super("",0); if(T==null || R == null)throw new NullPointerException(); setT(T); setR(R); @@ -53,7 +44,7 @@ public class FunN extends RefType { * Spezieller Konstruktor um eine FunN ohne Returntype zu generieren protected FunN(List list){ - super("",null,0); + super("",0); if(list==null)throw new NullPointerException(); setT(list); this.name = new JavaClassName("Fun"+list.size());//getName(); @@ -67,14 +58,14 @@ public class FunN extends RefType { * @param parameterCount */ public FunN(int parameterCount) { - super("",null,0); + super("",0); if(parameterCount<0)throw new RuntimeException("Anzahl der Parameter muss >0 sein"); - Menge t = new Menge(); + List t = new ArrayList<>(); for(int i=0;i t = new Menge(); + List t = new ArrayList<>(); if(R!=null)t.add(R); if(T!=null)t.addAll(T); - for(Type type : t){ + for(RefType type : t){ if(type instanceof WildcardType){ throw new DebugException("Der FunN-Typ darf keine Wildcards in den Parameter enthalten"); } } - this.set_ParaList(t); + this.parameter = t; } - protected void setT(List list){ + protected void setT(List list){ this.T = list; calculateNewParalist(); } - protected void setR(Type R){ + + protected void setR(RefType R){ this.R = R; calculateNewParalist(); } - - /* - @Override - public String getName(){ - String ret = "FunN<"+R.toString(); - for(Type t : T){ - ret += ", " + t.toString(); - } - ret += ">"; - return ret; - } -*/ - - - public int getTypeLineNumber() { - // TODO Auto-generated method stub - return 0; - } public String getBytecodeInvokeDynamicSignature(ClassGenerator cg, TypeinferenceResultSet rs) { String ret = "("; - for(Type t : T){ + for(RefType t : T){ ret+=t.getBytecodeType(cg, rs).getSignature(); } ret +=")"; @@ -135,62 +109,11 @@ public class FunN extends RefType { public String getBytecodeInvokeDynamicSignatureUpperBound(ClassGenerator cg) { String ret = "("; - for(Type t : T){ + for(RefType t : T){ ret+=cg.getInstructionFactory().createObjectType().getSignature(); } ret +=")"; ret += cg.getInstructionFactory().createObjectType().getSignature(); return ret; } - - @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent){ - //FunN Typen müssen nicht geprüft werden. Sie werden schließlich nur von unserem Typinferenzalgorithmus erstellt: - List paraList = new ArrayList<>(); - for(Type t : this.T){ - Type toAdd = t.TYPE(ass, parent); - //if(toAdd == null)throw new TypeinferenceException("Typ "+toAdd+" ist in den Assumptions nicht vorhanden",this); - paraList.add(toAdd); - } - FunN ret = new FunN(this.R.TYPE(ass, parent),paraList); - return ret; - } - - public FunNInterface getCorrespondingInterface(){ - return null; - } - - /* - @Override - public JavaCodeResult printJavaCode(ResultSet resultSet){ - //String ret = super.printJavaCode(resultSet) + (T!=null ? this.T.size() : 0) +"<"; - JavaCodeResult ret = new JavaCodeResult("Fun" + (T!=null ? this.T.size() : 0) +"<"); - ret .attach( this.R.printJavaCode(resultSet)).attach(", "); - Iterator it = T.iterator(); - while(it.hasNext()){ - Type t = it.next(); - ret.attach( t.printJavaCode(resultSet)); - if(it.hasNext())ret.attach(", "); - } - //ret = ret.substring(0, ret.length()-2); - return ret.attach(">"); - } - */ - /** - * Die Clone-Methode von RefType darf von FunN NICHT überschrieben werden. - @Override - public FunN clone() - { - FunN ret = null; - Menge clonepara = new Menge(); - for(int i = 0; i< this.T.size(); i++) - { - clonepara.addElement(((Type)this.T.elementAt(i)).clone()); - } - - ret = new FunN(this.R.clone(),clonepara); - ret.setPrimitiveFlag(this.getPrimitiveFlag()); - return ret; - } - */ } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java b/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java index 6ee24f83..6bef811b 100644 --- a/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java @@ -1,14 +1,10 @@ package de.dhbwstuttgart.syntaxtree.type; -import java.util.Iterator; -import de.dhbwstuttgart.typeinference.Menge; +import java.util.ArrayList; +import java.util.List; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Method; -import de.dhbwstuttgart.syntaxtree.ParameterList; -import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; +import de.dhbwstuttgart.typecheck.JavaClassName; /** * FunVoid { @@ -19,8 +15,8 @@ import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; */ public class FunVoidN extends FunN { - private Type R; - private Menge T; + private RefType R; + private List T; /** * @author Andreas Stadelmeier, a10023 @@ -29,8 +25,8 @@ public class FunVoidN extends FunN { * @param T * @return */ - public FunVoidN(Menge T) { - super(T.size()); + public FunVoidN(List T) { + super(null,T); this.setR(new Void(this, -1)); this.setT(T); this.name = new JavaClassName("FunVoid"+T.size()); @@ -52,9 +48,9 @@ public class FunVoidN extends FunN { * Dabei werden bestimmte, von RefType geerbte, Parameter angepasst. Dies ist wichtig für den Typinferenzalgorithmus. */ private void calculateNewParalist(){ - Menge t = new Menge(); + List t = new ArrayList<>(); if(T!=null)t.addAll(T); - this.set_ParaList(t); + this.parameter = t; } } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/GenericClassType.java b/src/de/dhbwstuttgart/syntaxtree/type/GenericClassType.java deleted file mode 100644 index 9985f48f..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/GenericClassType.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -import java.util.List; - -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.SourceFile; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.factory.ASTFactory; -import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; - -public class GenericClassType extends RefType{ - - public GenericClassType(String fullyQualifiedName, List parameter, SyntaxTreeNode parent, int offset) { - super(fullyQualifiedName, parameter, parent, offset); - } - - @Override - public String getBytecodeSignature(ClassGenerator cg, TypeinferenceResultSet rs) { - return "L"+getTypeName()+";"; - } -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java b/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java deleted file mode 100755 index b68cb9dc..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java +++ /dev/null @@ -1,250 +0,0 @@ -// ino.module.GenericTypeVar.8671.package -package de.dhbwstuttgart.syntaxtree.type; -// ino.end - -import java.util.ArrayList; -// ino.module.GenericTypeVar.8671.import -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.typeinference.ConstraintsSet; -import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.Pair; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeInsertable; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; -import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.GTVDeclarationContext; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.factory.ASTFactory; - -/** - * TODO: Diese Klasse überarbeiten. Pair genericTypeVar ist nicht implementiert. - * @author J�rg B�uerle - * @version $Date: 2013/09/22 20:12:53 $ - */ -public class GenericTypeVar extends ObjectType -{ - //Type genericTypeVar; - //Menge extendVars = new Menge(); - protected Pair genericConstraint; - /** - * Eine Registry f�r alle Generic-Instanzen, die vor der Bytecode-Generierung durch - * Ihre Superklasse ersetzt werden m�ssen. Siehe "Type Erasure" in Sun Spezifikation. - *
      Autor: J�rg B�uerle - */ - // ino.method.GenericTypeVar.26509.defdescription type=line - // private Hashtable> m_TypeErasureList; - // ino.end - private static HashMap tph = new HashMap<>(); - - /** - * - * @param genericTypeVarExtendsVar - - public GenericTypeVar(Pair genericTypeVarExtendsVar, int offset){ - super(offset); - genericTypeVar = genericTypeVarExtendsVar.TA1; - if(genericTypeVarExtendsVar.TA2!=null)this.extendVars.add(genericTypeVarExtendsVar.TA2); - else{ - this.genericConstraint = genericTypeVarExtendsVar; - } - this.name = genericTypeVar.toString(); - } - */ - - // ino.method.GenericTypeVar.26509.definition - public GenericTypeVar(String s, SyntaxTreeNode parentClass, int offset) - // ino.end - // ino.method.GenericTypeVar.26509.body - { - super(parentClass,offset); - this.name = new JavaClassName(s); - } - // ino.end - - /* - public GenericTypeVar(Type tA1, int offset) { - this(new Pair(tA1,null),offset); - } - */ - // ino.method.clone.26512.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.clone.26512.definition - public GenericTypeVar clone() - // ino.end - // ino.method.clone.26512.body - { - return new GenericTypeVar(this.getName().toString(), this.getParentClass(), getOffset()); - } - // ino.end - - // ino.method.equals.26515.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @param obj - * @return - */ - // ino.end - // ino.method.equals.26515.definition - public boolean equals(Object obj) - // ino.end - // ino.method.equals.26515.body - { - return super.equals(obj) && (obj instanceof GenericTypeVar); - } - // ino.end - - - - // ino.method.toString.26518.definition - public String toString() - // ino.end - // ino.method.toString.26518.body - { - return "GTV " + this.getName(); - } - // ino.end - - @Override - public int hashCode() { - return this.name.hashCode(); - } - - // ino.method.get_codegen_Type.26521.defdescription type=javadoc - /** - * hoti 4.5.06 - * Generische Typen werden im Bytecode - * aus Abwaertskompatiblitaet wie Object dargestellt - */ - // ino.end - // ino.method.get_codegen_Type.26521.definition - public String get_codegen_Type(Menge paralist) - // ino.end - // ino.method.get_codegen_Type.26521.body - { - return("Ljava/lang/Object;"); - } - // ino.end - - // ino.method.getSignatureType.26524.definition - public String getSignatureType(Menge paralist) - // ino.end - // ino.method.getSignatureType.26524.body - { - return "T" + name + ";"; - } - // ino.end - - @Override - public JavaCodeResult printJavaCode(ResultSet resultSet) { - /* - if(this.genericTypeVar!=null){ - JavaCodeResult ret = new JavaCodeResult(); - ret.attach(this.genericTypeVar.printJavaCode(resultSet)); - - if(this.extendVars.size()>0){ - ret.attach(" extends "); - Iterator it = this.extendVars.iterator(); - while(it.hasNext()){ - Type extend = it.next(); - ret.attach(extend.printJavaCode(resultSet)); - if(it.hasNext())ret.attach(", "); - } - } - - return ret; - } - */ - return new JavaCodeResult(this.name.toString()); - } - - public TypePlaceholder getTypePlaceHolder(SyntaxTreeNode environment) { - String hashValue = this.getName().toString()+environment.hashCode(); - if(!GenericTypeVar.tph.containsKey(hashValue)){ - GenericTypeVar.tph.put(hashValue, TypePlaceholder.fresh(hashValue,this)); - } - return GenericTypeVar.tph.get(hashValue); - //return TypePlaceholder.fresh(this.getParent()); - //if(this.tph == null)this.tph = TypePlaceholder.fresh(); - //return this.tph; - } - - @Override - public String get_Name() { - return this.getName().toString(); - } - - @Override - public JavaClassName getName() { - return this.name; - } - - public TypeAssumptions createAssumptions(){ - TypeAssumptions ret = new TypeAssumptions(); - ret.addGenericVarAssumption(this); - return ret; - } - - /** - * Die Type Methode auf generische Variablen angewandt sorgt für deren Eintragung in die TypeAssumptions. - * @param ass - * @return - */ - public ConstraintsSet TYPE(TypeAssumptions ass){ - ConstraintsSet ret = new ConstraintsSet(); - ass.addGenericVarAssumption(this); - return ret; - } - - @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent) { - ass.addGenericVarAssumption(this); //Eine GenericTypeVar kann nur an Stellen vorkommen, an denen sie auch gültig ist. Daher kann sie den Assumptions hinzugefügt werden. - return super.TYPE(ass, parent); - } - - public int getEndOffset() { - return this.getOffset() + this.name.toString().length(); - } - - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - //SyntaxTreeNode parentTemp = this.parent; - super.parserPostProcessing(parent); - //if(parentTemp != null)this.parent = parentTemp; //Der Parenttype einer GenericVar soll sich nicht ändern können, falls einmal gesetzt. - } - - public GTVDeclarationContext getDeclarationContext() { - return this.getGTVDeclarationContext(); - } - - @Override - public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs) { - // TODO Bytecode - return org.apache.bcel.generic.Type.getType(getSignatureType(null));// new org.apache.bcel.generic.ObjectType("Object"); - } - - public List getBounds() - { - //Gibt eine Liste mit "java.lang.Object" zurück, da jede Generic von Object erbt - ArrayList ret = new ArrayList<>(); - ret.add(ASTFactory.createObjectType()); - return ret; - } - -} -// ino.end - diff --git a/src/de/dhbwstuttgart/syntaxtree/type/IMatchable.java b/src/de/dhbwstuttgart/syntaxtree/type/IMatchable.java deleted file mode 100755 index 8950040a..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/IMatchable.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -/** - * Dieses Interface wird von allen Klassen implementiert, die weitere Klassen - * enthalten, die im match des Unify beachtet werden müssen. - * - * @author Arne Lüdtke - * - */ -public interface IMatchable -{ - /** - * Author: Arne Lüdtke
      - * Gibt den Typen zurück, der bei einem match im Unify verwendet werden soll. - * Wird über IMatchable implementiert. - */ - Type getMatchType(); -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/ITypeContainer.java b/src/de/dhbwstuttgart/syntaxtree/type/ITypeContainer.java deleted file mode 100755 index 8ce030cc..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/ITypeContainer.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -/** - * Dieses Interface wird von allen Klassen implementiert, die weitere Klassen enthalten. - * Wird für diverse Hilfsmethoden verwendet. - * - * @author Arne Lüdtke - * - */ - -public interface ITypeContainer -{ - /** - * Author: Arne Lüdtke
      - * Das gleiche wie get_ExtendsType(). - * Implementiert ITypeContainer - */ - Type getContainedType(); -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/ObjectType.java b/src/de/dhbwstuttgart/syntaxtree/type/ObjectType.java deleted file mode 100644 index 5b3b1dbe..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/ObjectType.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; - -/** - * Der ObjectType repräsentiert einen Typ ohne Wildcards. - * Eine Trennung zwischen Wildcard-Typen und anderen Typen ist notwendig. - * Ein WildcardTyp kann nur ObjectTypes aufnehmen: ? extends ObjectType - */ -public abstract class ObjectType extends Type { - - public ObjectType(String s, SyntaxTreeNode parent, int offset) { - super(s, parent, offset); - } - public ObjectType(SyntaxTreeNode parent, int offset) { - super(parent, offset); - } - public abstract ObjectType clone(); -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/ParaList.java b/src/de/dhbwstuttgart/syntaxtree/type/ParaList.java deleted file mode 100755 index 2e1a9f7a..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/ParaList.java +++ /dev/null @@ -1,86 +0,0 @@ -// ino.module.ParaList.8674.package -package de.dhbwstuttgart.syntaxtree.type; -// ino.end -// ino.module.ParaList.8674.import -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.logger.Logger; -// ino.end -import de.dhbwstuttgart.logger.Section; - - - - - -// ino.class.ParaList.26591.declaration -public class ParaList extends Menge -// ino.end -// ino.class.ParaList.26591.body -{ - // ino.attribute.paralist.26594.declaration - //protected Menge paralist = new Menge(); - // ino.end - // ino.attribute.parserlog.26597.declaration - protected static Logger parserlog = Logger.getLogger("parser"); - // ino.end - // ino.method.ParaList.26600.definition - public ParaList() - // ino.end - // ino.method.ParaList.26600.body - {} - // ino.end - // ino.method.ParaList.26603.definition - ParaList(Type t) - // ino.end - // ino.method.ParaList.26603.body - { - parserlog.debug( "ParaList: " + t, Section.PARSER ); - this.addElement(t); - } - // ino.end - - // ino.method.get_ParaList.26606.definition - public Menge get_ParaList() - // ino.end - // ino.method.get_ParaList.26606.body - { - return this; - } - // ino.end - - // ino.method.add_ParaList.26609.definition - public void add_ParaList(Type obj) - // ino.end - // ino.method.add_ParaList.26609.body - { - this.addElement(obj); - } - // ino.end - - // ino.method.get_firstElement.26612.definition - public Object get_firstElement() - // ino.end - // ino.method.get_firstElement.26612.body - { - return firstElement(); - } - // ino.end - // ino.method.getParalist.26615.definition - public Menge getParalist() - // ino.end - // ino.method.getParalist.26615.body - { - return this; - } - // ino.end - // ino.method.setParalist.26618.definition - public void setParalist(Menge paralist) - // ino.end - // ino.method.setParalist.26618.body - { - this.removeAllElements(); - this.addAll(paralist); - } - // ino.end -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java index f45bc1f2..c2d1fcbd 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java @@ -1,42 +1,22 @@ -// ino.module.RefType.8675.package package de.dhbwstuttgart.syntaxtree.type; -// ino.end -// ino.module.RefType.8675.import import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Hashtable; import java.util.Iterator; import java.util.List; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.Constructor; -import de.dhbwstuttgart.syntaxtree.Method; import de.dhbwstuttgart.syntaxtree.SourceFile; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.factory.ASTFactory; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.syntaxtree.statement.Block; -import de.dhbwstuttgart.syntaxtree.statement.SuperCall; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeInsertable; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResults; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - - -// ino.class.RefType.26621.declaration -public class RefType extends ObjectType implements IMatchable -// ino.end -// ino.class.RefType.26621.body +public class RefType extends SyntaxTreeNode { /** * Ist IsArray auf true, muss beim Codegen ein Zeichen [ gesetzt werden @@ -45,48 +25,21 @@ public class RefType extends ObjectType implements IMatchable * Bsp.: 9| tag = CONSTANT_Utf8, length = 21, (Ljava/lang/String;)V */ private boolean IsArray = false; - - // ino.attribute.parameter.26625.declaration - private List parameter = null; - // ino.end - // ino.attribute.primitiveFlag.29412.decldescription type=javadoc + protected JavaClassName name; + protected List parameter = null; /** * Ist primitiveFlag auf true, muss beim Codegen dieser Reftype durch * den primitiven Datentyp ersetzt werden * * Bsp: java.lang.Integer mit Flag wird dann zu [int] */ - // ino.end - // ino.attribute.primitiveFlag.29412.declaration private boolean primitiveFlag=false; - // ino.end - // ino.attribute.parserlog.26628.declaration - //protected static Logger parserlog = Logger.getLogger("parser"); - // ino.end - // ino.attribute.codegenlog.26631.declaration - //protected static Logger codegenlog = Logger.getLogger("codegen"); - // ino.end - - - - // ino.method.RefType.26634.definition - protected RefType(SyntaxTreeNode parent, int offset) - // ino.end - // ino.method.RefType.26634.body - { - super(parent,offset); - } - // ino.end - // ino.method.RefType.26637.definition - public RefType(String fullyQualifiedName,SyntaxTreeNode parent, int offset) - // ino.end - // ino.method.RefType.26637.body + public RefType(JavaClassName fullyQualifiedName, int offset) { - super(parent,offset); - this.setName(fullyQualifiedName); + super(offset); + this.name = (fullyQualifiedName); } - // ino.end @Override public int hashCode() { @@ -96,215 +49,28 @@ public class RefType extends ObjectType implements IMatchable return hash; } - // ino.method.RefType.26640.definition - public RefType(String fullyQualifiedName, List parameter,SyntaxTreeNode parent, int offset) - // ino.end - // ino.method.RefType.26640.body + public RefType(JavaClassName fullyQualifiedName, List parameter, int offset) { - super(parent,offset); - this.setName(fullyQualifiedName); - if(parameter != null && parameter.size()>0)this.set_ParaList(parameter); + this(fullyQualifiedName, offset); + if(parameter != null && parameter.size()>0)this.parameter = parameter; } - // ino.end - // ino.method.RefType.26643.definition - public RefType( RefType R, SyntaxTreeNode parent,int offset ) - // ino.end - // ino.method.RefType.26643.body - { - super(parent,offset); - // otth: Copy-Konstruktor - this.setName(R.getTypeName()); - this.set_ParaList(R.getParaList()); - } - // ino.end - - /** - * Erstellt einen Referenztyp aus dem übergebenen Type. - * Dabei wird der Name und der Offset des baseType's übernommen. - * @param baseType - */ - public RefType( Type baseType){ - super(baseType.getParent(),baseType.getOffset()); - this.setName(baseType.name.toString()); - //this.parameter = null; - } - - - public RefType(JavaClassName name, List parameter, int offset) { - super(name.toString(), null, offset); - this.parameter = parameter; - } - - /** - * Wandelt die Parameter des RefTypes in TPHs um, sofern es sich um Generische Variablen handelt. - * @return - */ - public void GTV2TPH(SyntaxTreeNode environment){ - Menge paralist = new Menge(); - if(this.get_ParaList()!=null)for(Type t : this.get_ParaList()){ - if(t instanceof GenericTypeVar)paralist.add(((GenericTypeVar)t).getTypePlaceHolder(environment)); - else{ - if(t instanceof RefType)((RefType) t).GTV2TPH(environment); - paralist.add(t); - } - } - this.set_ParaList(paralist); - } - - /** - * HOTI - * Diese Methode sucht in der Klassendefinition nach einen GTV, die - * so heißt wie die im RefType definierte Variable. Wenn sie diese gefunden - * hat, wird sie zurückgeben. Wenn dies nicht der Fall war, schaut sie, falls - * angegeben in den Methodenparametern nach. Findet sie dort auch nichts, liefert - * die Methode null. - * @param type - * @return - */ - public GenericTypeVar findGenericType(Menge paralist, Menge methodParaList) - { - for(int i=0;i 0) - para = para +", "+ t; - else para = " " + t; - } - return name + "<"+para + " >" ; - }*/ } - // ino.end - /** - * Fügt eine Parameterliste an und tauscht zuvor alle GenerictTypeVars durch TPH aus. - * In einem RefType dürfen keine GTVs enthalten sein. - * @param v - */ - // ino.method.set_ParaList.26661.definition - public void set_ParaList(List v) - // ino.end - // ino.method.set_ParaList.26661.body - { - /* - Menge paralist = new Menge(); - if(v!=null)for(Type t : v){ - if(t instanceof GenericTypeVar)paralist.add(((GenericTypeVar)t).getTypePlaceHolder()); - else paralist.add(t); - }*/ - this.parameter = v;//paralist; - } - // ino.end - - /** - * @return gibt bei leere Parameterliste null zurück. Ist entscheidend für unify-Algorithmus - */ - // ino.method.get_ParaList.26664.definition - public List get_ParaList() - // ino.end - // ino.method.get_ParaList.26664.body - { - if(this.parameter == null || this.parameter.size()==0)return null; + public List getParaList(){ + if(this.parameter==null)return new ArrayList<>(); return this.parameter; } - // ino.end - - public List getParaList(){ - if(this.parameter==null)return new Menge<>(); - return this.parameter; - } - - // ino.method.add_Parameter.26667.definition - public void add_Parameter(Type o) - // ino.end - // ino.method.add_Parameter.26667.body - { - this.parameter.add(o); - } - // ino.end - - // ino.method.getTypeName.26670.definition - public String getTypeName() - // ino.end - // ino.method.getTypeName.26670.body - { - // otth: Liefert den Namen des Typs, ohne Parameter, z.B. Stapel bei Stapel - return name.toString(); - } /** * Author: Jrg Buerle
      * @param Object * @return */ - // ino.end - // ino.method.equals.26685.definition public boolean equals(Object obj) - // ino.end - // ino.method.equals.26685.body { if(obj instanceof RefType){ boolean ret = true; @@ -313,13 +79,13 @@ public class RefType extends ObjectType implements IMatchable return false; if(parameter==null || parameter.size()==0){ - ret &= (((RefType)obj).get_ParaList()==null || ((RefType)obj).get_ParaList().size()==0); + ret &= (((RefType)obj).getParaList()==null || ((RefType)obj).getParaList().size()==0); } else{ - if(((RefType)obj).get_ParaList()==null){ + if(((RefType)obj).getParaList()==null){ ret = false; } - else if(parameter.size() != ((RefType)obj).get_ParaList().size()) + else if(parameter.size() != ((RefType)obj).getParaList().size()) { ret = false; } @@ -327,7 +93,7 @@ public class RefType extends ObjectType implements IMatchable { for(int i = 0; i clonepara = new Menge(); + List para = this.getParaList(); + List clonepara = new ArrayList<>(); for(int i = 0; i< para.size(); i++) { - clonepara.addElement(((Type)para.get(i)).clone()); + clonepara.add(((RefType)para.get(i)).clone()); } - RefType newRefType=new RefType(this.getTypeName(), clonepara,this.getParent(),getOffset()); - newRefType.setPrimitiveFlag(this.getPrimitiveFlag()); + RefType newRefType=new RefType(this.getName(), clonepara, getOffset()); newRefType.IsArray = this.IsArray; return newRefType; } else { - RefType newRefType = new RefType(this.getTypeName(), null,getOffset()); - newRefType.setPrimitiveFlag(this.getPrimitiveFlag()); + RefType newRefType = new RefType(this.getName(),getOffset()); newRefType.IsArray = this.IsArray; return newRefType; } } - // ino.end - // ino.method.toString.26691.definition public String toString() - // ino.end - // ino.method.toString.26691.body { String primitiveFlagMarker=primitiveFlag?"*":""; if(parameter==null) @@ -379,10 +135,10 @@ public class RefType extends ObjectType implements IMatchable else { String para = new String(); - Iterator e=parameter.iterator(); + Iterator e=parameter.iterator(); while(e.hasNext()) { - Type ty = (Type)e.next(); + RefType ty = e.next(); String t = ty.toString(); if(para.length() > 0) para = para +", "+ t; @@ -393,94 +149,15 @@ public class RefType extends ObjectType implements IMatchable return ret + primitiveFlagMarker;//name + "<"+para + " >" +primitiveFlagMarker; } } - // ino.end - - /* - // ino.method.modifyToGenericTypeVar.26694.definition - public GenericTypeVar modifyToGenericTypeVar(TypeInsertable parent) - // ino.end - // ino.method.modifyToGenericTypeVar.26694.body - { - return new GenericTypeVar(this.name.toString(),getOffset()); - } - // ino.end - */ - - // ino.method.getSimpleName.26697.defdescription type=javadoc - /** - * HOTI - * Liefert bei Klassen die fullyQualified angegeben wurden - * nur den schlussendlichen Bezeichner - * p.ex. de.dhbwstuttgart.typeinference.Menge => Menge - * @return - */ - // ino.end - // ino.method.getSimpleName.26697.definition - public String getSimpleName() - // ino.end - // ino.method.getSimpleName.26697.body - { - return UsedId.createFromQualifiedName(getTypeName(),getOffset()).getSimpleName(); - } - // ino.end - - - // ino.method.setPrimitiveFlag.29415.definition - public void setPrimitiveFlag(boolean b) - // ino.end - // ino.method.setPrimitiveFlag.29415.body - { - this.primitiveFlag=b; - } - // ino.end - // ino.method.getPrimitiveFlag.29418.definition - public boolean getPrimitiveFlag() - // ino.end - // ino.method.getPrimitiveFlag.29418.body - { - return(this.primitiveFlag); - } - // ino.end - - - /** - * Author: Daniel Feinler
      - * Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann - * wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht. - * @return the IsArray - */ - public boolean IsArray() { - return IsArray; - } - - /** - * Author: Daniel Feinler
      - * Handelt ab, ob der Typ eines Objekts ein Array ist, wenn true dann - * wird im Bytecode ein flag gesetzt wenn nicht, dann halt nicht. - * @param IsArray the IsArray to set - */ - public void setArray(boolean IsArray) { - this.IsArray = IsArray; - } - - /** - * Author: Arne Lüdtke
      - * Gibt den Typen zurück, der bei einem match im Unify verwendet werden soll. - * Wird über IMatchable implementiert. - */ - public Type getMatchType() - { - return this; - } @Override public JavaCodeResult printJavaCode(ResultSet resultSet) { JavaCodeResult ret = new JavaCodeResult(this.name.toString()); if(this.getParaList()!=null && this.getParaList().size()>0){ ret .attach( "<" ); - Iterator it = this.getParaList().iterator(); + Iterator it = this.getParaList().iterator(); while(it.hasNext()){ - Type t = it.next(); + RefType t = it.next(); ret .attach( t.printJavaCode(resultSet)); if(it.hasNext())ret.attach(", "); } @@ -489,87 +166,32 @@ public class RefType extends ObjectType implements IMatchable } return ret; } - - @Override - public Type applyResultSet(ResultSet result) { - - return super.applyResultSet(result); - } - /** - * Liefert alle SuperWildcardTypes, die in diesem Typ enthalten sind. - * Dabei werden auch die parameter auf SuperWildcardTypes durchsucht. - * @return - */ - @Override - public ArrayList getSuperWildcardTypes() { - ArrayList ret = super.getSuperWildcardTypes(); - if(this.parameter!=null)for(Type paraType : this.parameter){ - if(paraType instanceof SuperWildcardType)ret.add((SuperWildcardType)paraType); - } - return ret; - } - - @Override - public Menge getUnresolvedTPH(ResultSet resultSet) { - Menge ret = super.getUnresolvedTPH(resultSet); - /* - if(this.parameter!=null)for(Type t : this.parameter){ - if(t instanceof TypePlaceholder){ - TypePlaceholder tph = (TypePlaceholder)t; - Type eq = resultSet.getTypeEqualTo(tph); - if(eq instanceof TypePlaceholder)ret.add((TypePlaceholder)eq); - } - } - */ + public List getUnresolvedTPH(ResultSet resultSet) { + List ret = new ArrayList<>(); //super.getUnresolvedTPH(resultSet); ret.addAll(this.printJavaCode(resultSet).getUnresolvedTPH()); return ret; } - - @Override - public Menge getInvolvedTypePlaceholder() { - Menge ret = super.getInvolvedTypePlaceholder(); + + public List getInvolvedTypePlaceholder() { + List ret = new ArrayList<>(); //super.getInvolvedTypePlaceholder(); if(this.parameter == null)return ret; - for(Type param : this.parameter){ + for(RefType param : this.parameter){ ret.addAll(param.getInvolvedTypePlaceholder()); } return ret; } - - @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent){ - Type t = super.TYPE(ass,parent); - //((RefType)t.getType()).set_ParaList(this.get_ParaList()); - return t; - } @Override - public Menge getChildren() { - Menge ret = super.getChildren(); + public List getChildren() { + List ret = new ArrayList<>(); //super.getChildren(); ret.addAll(this.getParaList()); return ret; } - @Override - public Type checkTYPE(TypeAssumptions ass, SyntaxTreeNode method) { - Type t = ass.checkType(this, parent); - if(t==null) - throw new TypeinferenceException("Der Typ "+this.getName()+" ist nicht korrekt", parent); - return t; - } - - @Override - public void parserPostProcessing(SyntaxTreeNode parent) { - super.parserPostProcessing(parent); - if(this.parameter != null)for(Type param : this.parameter){ - param.parserPostProcessing(this); - } - } - - @Override - public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs) { + public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs) { org.apache.bcel.generic.ObjectType ret = new org.apache.bcel.generic.ObjectType(getCombinedType(cg, rs)); - if(this.IsArray()){ + if(this.IsArray){ //Hier wird einfachhalber von einer Dimension ausgegangen. Arrays sind im Bytecode nur für main-Methode relevant return new org.apache.bcel.generic.ArrayType(ret, 1); }else{ @@ -577,7 +199,6 @@ public class RefType extends ObjectType implements IMatchable } } - @Override public String getBytecodeSignature(ClassGenerator cg, TypeinferenceResultSet rs) { String combinedType = getCombinedType(cg, rs); /* @@ -586,21 +207,24 @@ public class RefType extends ObjectType implements IMatchable String ret = new org.apache.bcel.generic.ObjectType(combinedType).getSignature(); return ret; } - + public String getCombinedType(ClassGenerator cg, TypeinferenceResultSet rs){ //Bsp.: Ljava/util/Vector; StringBuilder sb = new StringBuilder(); String ret; - List newParams = new ArrayList<>(); + List newParams = new ArrayList<>(); if(parameter != null && parameter.size() > 0){ sb.append(getName().toString().replace(".", "%")); sb.append("%%"); - for(Type type: parameter){ - Type newParameter; + for(RefType type: parameter){ + RefType newParameter; if(type instanceof RefType){ sb.append(((RefType) type).getCombinedType(cg, rs).replace(".", "%")); newParameter = type; }else if(type instanceof TypePlaceholder){ + //TODO: Die Methode sollte keinen String, sondern einen BytecodeType zurückgeben. + //Auf sämtlichen RefTypes und TPHs muss eine Konvertierungsmethode aufgerufen werden, diese + // kann dann TPH dem entsprechenden Typ aus dem TypeinferenceResult zuweisen newParameter = rs.getTypeOfPlaceholder((TypePlaceholder)type); sb.append(((TypePlaceholder) type).getBytecodeType(cg, rs).toString().replace(".", "%")); }else if(type instanceof WildcardType){ @@ -626,12 +250,5 @@ public class RefType extends ObjectType implements IMatchable } return ret; } - - /* - public GenericClassType getGenericClassType(){ - return new GenericClassType(getName().toString(), getParaList(), parent, getOffset()); - } - */ } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java index 74a7648d..31bf03de 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java @@ -1,14 +1,12 @@ package de.dhbwstuttgart.syntaxtree.type; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; + +import java.util.List; /** * Stellt eine Wildcard mit unterer Grenze dar. @@ -18,9 +16,9 @@ import de.dhbwstuttgart.typeinference.exceptions.DebugException; * */ -public class SuperWildcardType extends WildcardType implements ITypeContainer, IMatchable{ +public class SuperWildcardType extends WildcardType{ - public SuperWildcardType(ObjectType innerType){ + public SuperWildcardType(RefType innerType){ this(innerType.getOffset(), innerType); } @@ -28,9 +26,9 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Author: Arne Lüdtke
      * Standard Konstruktor für eine SuperWildcard */ - public SuperWildcardType(int offset, ObjectType innerType) + public SuperWildcardType(int offset, RefType innerType) { - super(innerType, innerType.getParent(),offset); + super(innerType, offset); } /** @@ -39,7 +37,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Beispiel: ? super Integer. * Integer wird zurückgegeben. */ - public ObjectType get_SuperType() + public RefType get_SuperType() { return this.innerType; } @@ -60,18 +58,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I */ public SuperWildcardType clone() { - return new SuperWildcardType(getOffset(), (ObjectType) innerType.clone()); - } - - - /** - * Author: Arne Lüdtke
      - * Gibt die passende FreshWildcardType Klasse zurück. - * Wird für CaptureConversion verwendet - */ - public FreshSuperWildcardType GetFreshWildcardType() - { - return new FreshSuperWildcardType(this.innerType,this.getParent(),-1); + return new SuperWildcardType(getOffset(), innerType.clone()); } /** @@ -79,7 +66,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Das gleiche wie get_innerType(). * Überschreibt die Methode der Superklasse */ - public Type GetWildcardType() + public RefType GetWildcardType() { return this.get_SuperType(); } @@ -89,7 +76,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Setzt den Typ in der Wildcard * @param T - Type to be set */ - public void SetWildcardType(ObjectType T) + public void SetWildcardType(RefType T) { //if(T instanceof RefType) this.innerType = (RefType)T; @@ -100,7 +87,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Das gleiche wie get_innerType(). * Implementiert ITypeContainer */ - public Type getContainedType() + public RefType getContainedType() { return this.get_SuperType(); } @@ -110,7 +97,7 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I * Gibt den Typen zurück, der bei einem match im Unify verwendet werden soll. * Wird über IMatchable implementiert. */ - public Type getMatchType() + public RefType getMatchType() { return this.get_SuperType(); } @@ -138,8 +125,8 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I } @Override - public Menge getInvolvedTypePlaceholder() { - Menge ret = super.getInvolvedTypePlaceholder(); + public List getInvolvedTypePlaceholder() { + List ret = super.getInvolvedTypePlaceholder(); ret.addAll(this.innerType.getInvolvedTypePlaceholder()); return ret; } @@ -150,28 +137,9 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I this.innerType.parserPostProcessing(this); } - @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent) { - this.innerType = (ObjectType) this.innerType.TYPE(ass, parent); - return super.TYPE(ass, parent); - } - - /* - @Override - public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg) { - //return new de.dhbwstuttgart.bytecode.WildcardType(this.innerType.get_Name(), "-"); - return this.innerType.getBytecodeType(cg); - } - */ - @Override public String getBytecodeSignature(ClassGenerator cg, TypeinferenceResultSet rs) { return "-" + this.innerType.getBytecodeSignature(cg, rs); } - @Override - public String get_Name() { - return "? super "+this.innerType.get_Name(); - } - } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/Type.java b/src/de/dhbwstuttgart/syntaxtree/type/Type.java deleted file mode 100755 index 812a0350..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/Type.java +++ /dev/null @@ -1,343 +0,0 @@ -// ino.module.Type.8677.package -package de.dhbwstuttgart.syntaxtree.type; -// ino.end -// ino.module.Type.8677.import -import java.util.ArrayList; -import java.util.List; - -import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.misc.UsedId; -import de.dhbwstuttgart.typeinference.JavaCodeResult; -import de.dhbwstuttgart.typeinference.ResultSet; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - - -//TODO: Die Klasse Type muss abstract werden! -// ino.class.Type.26716.declaration -public abstract class Type extends SyntaxTreeNode implements IItemWithOffset -// ino.end -// ino.class.Type.26716.body -{ - // ino.attribute.name.26720.declaration - protected JavaClassName name; - // ino.end - // ino.attribute.used.26723.declaration - protected UsedId used; - // ino.end - // ino.attribute.offset.26726.declaration - private int offset; - // ino.end - - // ino.method.Type.26729.definition - public Type(String s, SyntaxTreeNode parent, int offset) - // ino.end - // ino.method.Type.26729.body - { - this(parent, offset); - this.name = new JavaClassName(s); - } - // ino.end - - // ino.method.Type.26732.definition - protected Type(SyntaxTreeNode parent,int offset) - // ino.end - // ino.method.Type.26732.body - { - //if(parent == null)throw new NullPointerException(); - //if(parent == null)throw new DebugException("Parent darf nicht null sein"); - this.parent = parent; - this.offset=offset; - } - // ino.end - - // ino.method.getOffset.26735.definition - public int getOffset() - // ino.end - // ino.method.getOffset.26735.body - { - return offset; - } - // ino.end - - public void setOffset(int offset){ - this.offset = offset; - } - - // ino.method.getVariableLength.26738.definition - public int getVariableLength() - // ino.end - // ino.method.getVariableLength.26738.body - { - if(this.name!=null){return this.name.toString().length();} - else{return 1;} - } - // ino.end - - // ino.method.set_UsedId.26741.definition - public void set_UsedId( UsedId uid) - // ino.end - // ino.method.set_UsedId.26741.body - { - this.used = uid; - } - // ino.end - - - - // ino.method.get_UsedId.26744.definition - public UsedId get_UsedId() - // ino.end - // ino.method.get_UsedId.26744.body - { - return this.used; - } - // ino.end - - - - // ino.method.get_Name.26747.definition - public String get_Name() - // ino.end - // ino.method.get_Name.26747.body - { - return used.name.toString(); - } - // ino.end - - - - // ino.method.Type2String.26756.definition - public String Type2String() - // ino.end - // ino.method.Type2String.26756.body - { - return "((TypePlaceholder))" + getName(); - } - // ino.end - - // ino.method.Type2Key.26759.definition - public String Type2Key() - // ino.end - // ino.method.Type2Key.26759.body - { - return ""; - } - // ino.end - - // ino.method.getName.26762.definition - public JavaClassName getName() - // ino.end - // ino.method.getName.26762.body - { - return name; - } - // ino.end - - // ino.method.equals.26765.defdescription type=javadoc - /** - * Author: J�rg B�uerle
      - * @param Object - * @return - */ - // ino.end - // ino.method.equals.26765.definition - public boolean equals(Object obj) - // ino.end - // ino.method.equals.26765.body - { - if(obj instanceof Type){ - // String name2 = ((Type)obj).printJavaCode(new ResultSet()).toString(); - //return printJavaCode(new ResultSet()).toString().equals(name2); - if(((Type)obj).name == null)return false; //Auch wenn der Name dieses Typs auch null ist. Typen sind nur gleich wenn sie einen gleichen Namen haben, welcher nicht null ist. - return ((Type)obj).name.equals(name); - } - else{ - return false; - } - } - // ino.end - - // ino.method.clone.26768.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - - // ino.end - // ino.method.clone.26768.definition - public Type clone() - // ino.end - // ino.method.clone.26768.body - { - return new RefType(this.getName().toString(), this.getParent(),getOffset()); - } - // ino.end - */ - - public abstract Type clone(); - - // ino.method.toString.26771.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.toString.26771.definition - public String toString() - // ino.end - // ino.method.toString.26771.body - { - return getName().toString(); - } - // ino.end - - /* - // ino.method.removeClassParameters.26774.definition - public Type removeClassParameters() - // ino.end - // ino.method.removeClassParameters.26774.body - { - if(this instanceof RefType){ - RefType rt=(RefType)this.clone(); - rt.set_ParaList(null); - return(rt); - }else{ - return(this); - } - } - // ino.end - */ - - // ino.method.getSimpleName.26777.defdescription type=javadoc - /** - * HOTI - * Liefert bei Klassen die fullyQualified angegeben wurden - * nur den schlussendlichen Bezeichner - * p.ex. de.dhbwstuttgart.typeinference.Menge => Menge - * @return - */ - // ino.end - // ino.method.getSimpleName.26777.definition - public String getSimpleName() - // ino.end - // ino.method.getSimpleName.26777.body - { - return UsedId.createFromQualifiedName(getName().toString(),getOffset()).getSimpleName(); - } - // ino.end - - public JavaCodeResult printJavaCode(ResultSet resultSet){ - return new JavaCodeResult(this.name.toString()); - } - - public JavaCodeResult printJavaCode(ResultSet resultSet, boolean resolveTPHs){ - return printJavaCode(resultSet); - } - - public Type applyResultSet(ResultSet result){ - return this.clone(); - } - - /** - * Liefert alle SuperWildcardTypes, die in diesem Typ enthalten sind. - * @return - */ - public ArrayList getSuperWildcardTypes() { - ArrayList ret = new ArrayList(); - if(this instanceof SuperWildcardType)ret.add((SuperWildcardType)this); - return ret; - } - - /** - * Sucht nach TPHs in diesem Typ, denen das resultSet keinen Typ zuordnen kann. - * @param resultSet - * @return - */ - public Menge getUnresolvedTPH(ResultSet resultSet) { - return new Menge(); - } - - /** - * Prüft ob der Typ von dem übergebenen TypPlaceholder abhängt. - * @param tph - * @return - */ - public boolean involves(TypePlaceholder tph) { - return false; - } - - /** - * Prüft ob der Typ in den Assumptions ass vorhanden ist. - * Dabei kann eine neue Instanz eines Typs entstehen, welche von der Methode zurückgegeben wird. - * @param ass - Die Assumptions für den jeweiligen Kontext in dem sich der Typ befindet. - - public ConstraintType checkType(TypeAssumptions ass, SyntaxTreeNode parent){ - ConstraintType t = ass.getTypeFor(this, this); - if(t==null) - throw new TypeinferenceException("Der Typ "+this.getName()+" ist nicht korrekt", parent); - return t; - } - */ - //TODO: checkType wird nicht mehr gebraucht. TYPE übernimmt dessen Aufgabe. Es muss nur sichergestellt werden, dass jeder Typ in den Constraints landet, dadurch wird für jeden Typ die Methode TYPE aufgerufen. - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent){ - Type t = ass.getTypeFor(this, parent); - if(t==null) - throw new TypeinferenceException("Der Typ "+this.getName()+" ist nicht korrekt", parent); - return t; - } - - /** - * Sammelt alle TypePlaceholder, welche in diesem Typ vorkommen. - * @return - */ - public Menge getInvolvedTypePlaceholder(){ - Menge ret = new Menge<>(); - return ret; - } - - @Override - public Menge getChildren() { - return new Menge<>(); - } - - public Type checkTYPE(TypeAssumptions ass, SyntaxTreeNode method){ - return this; - } - - public abstract org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs); - - /** - * Erzeugt einen String, welcher den Typ genauer angibt. - * Dieser kann dann in Methoden und Feldersignaturen verwendet werden - * @param cg - * @return - */ - public String getBytecodeSignature(ClassGenerator cg, TypeinferenceResultSet rs) { - return this.getBytecodeType(cg, rs).getSignature(); - } - - /** - * @param cg - * @return Die Signatur wie sie in Klassensignaturen verwendet wird - */ - public String getClassSignature(ClassGenerator cg, TypeinferenceResultSet rs){ - return this.getBytecodeSignature(cg, rs); - } - - /** - * Wird beim Bytecode gebraucht. - * Einige Klassen werden vom Compiler als gegeben angenommen, - * obwohl sie sich nicht in der Java Standard Library befinden. - * Diese müssen beim generieren von Bytecode als zusätzliche Klassen generiert werden. - * - * @return - Eine Liste der Klassen, welche bei Verwendung dieses Typs zusätzlich gebraucht werden. - */ - //public abstract List isClassFromJavaX(); -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java b/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java index 76e87f2f..3269b1e5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java @@ -1,18 +1,12 @@ -// ino.module.TypePlaceholder.8678.package package de.dhbwstuttgart.syntaxtree.type; -// ino.end - -// ino.module.TypePlaceholder.8678.import import java.util.Hashtable; -import java.util.Iterator; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.logger.*; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; import de.dhbwstuttgart.bytecode.TypePlaceholderType; -import de.dhbwstuttgart.core.MyCompiler; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.factory.NameGenerator; import de.dhbwstuttgart.typeinference.JavaCodeResult; @@ -20,11 +14,8 @@ import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeInsertable; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; -import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; -// ino.class.TypePlaceholder.26780.description type=javadoc + /** * Repr�sentiert einen Typparameter f�r einen vom Programmierer nicht angegeben * Typ. Jede TypePlaceholder besitzt einen eindeutigen Namen aus einem Namenspool @@ -33,17 +24,11 @@ import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; * @author J�rg B�uerle * @version $Date: 2013/06/19 12:45:37 $ */ -// ino.end -// ino.class.TypePlaceholder.26780.declaration -public class TypePlaceholder extends ObjectType -// ino.end -// ino.class.TypePlaceholder.26780.body +public class TypePlaceholder extends RefType { private static final Logger log = Logger.getLogger(TypePlaceholder.class.getName()); - // ino.end - // ino.attribute.m_TypePlaceholdersRegistry.26788.declaration + private static Hashtable m_TypePlaceholdersRegistry = new Hashtable(); - // ino.end private SyntaxTreeNode parent; @@ -52,27 +37,20 @@ public class TypePlaceholder extends ObjectType return this; } - // ino.method.TypePlaceholder.26794.defdescription type=javadoc /** * Privater Konstruktor - Eine TypePlaceholder-Variable wird �ber die * Factory-Methode fresh() erzeugt. *
      Author: J�rg B�uerle * @param typeName Der Name der TypePlaceholder-Variablen */ - // ino.end - // ino.method.TypePlaceholder.26794.definition private TypePlaceholder(String typeName, SyntaxTreeNode parent) - // ino.end - // ino.method.TypePlaceholder.26794.body { - super(parent, -1); + super(new JavaClassName(typeName), -1); if(typeName == null)throw new NullPointerException(); this.name = new JavaClassName(typeName); if(parent != null)log.debug("Erstelle TPH "+typeName+" für SyntaxTreeNode: "+parent, Section.TYPEINFERENCE); } - // ino.end - // ino.method.getInstance.26797.defdescription type=javadoc /** * Statische Methode, um einen TypePlaceholder aus der Registry zu holen. *
      Author: J�rg B�uerle @@ -80,15 +58,10 @@ public class TypePlaceholder extends ObjectType * @return Der TypePlaceholder oder null, falls er nicht in der * Registry existiert */ - // ino.end - // ino.method.getInstance.26797.definition public static TypePlaceholder getInstance(String name) - // ino.end - // ino.method.getInstance.26797.body { return m_TypePlaceholdersRegistry.get(name); } - // ino.end /** * Generiert einen neuen TPH mit einem bestimmten Namen. @@ -97,8 +70,6 @@ public class TypePlaceholder extends ObjectType * @return */ public static TypePlaceholder fresh(String name, SyntaxTreeNode parent) - // ino.end - // ino.method.fresh.26800.body { TypePlaceholder typeVar = new TypePlaceholder(name, parent); TypePlaceholder oldTPH = m_TypePlaceholdersRegistry.put(typeVar.getName().toString(), typeVar); @@ -108,7 +79,6 @@ public class TypePlaceholder extends ObjectType } return typeVar; } - // ino.end /** @@ -123,26 +93,14 @@ public class TypePlaceholder extends ObjectType m_TypePlaceholdersRegistry.put(ret.getName().toString(), ret); return ret; } - - @Override - public Menge getInvolvedTypePlaceholder() { - Menge ret = super.getInvolvedTypePlaceholder(); - ret.add(this); - return ret; - } - // ino.method.equals.26812.defdescription type=javadoc /** * Author: J�rg B�uerle
      * @param Object * @return */ - // ino.end - // ino.method.equals.26812.definition public boolean equals(Object obj) - // ino.end - // ino.method.equals.26812.body { if(obj instanceof TypePlaceholder){ return this.toString().equals(((TypePlaceholder)obj).toString()); @@ -152,27 +110,18 @@ public class TypePlaceholder extends ObjectType return false; } } - // ino.end - - // ino.method.deleteRegistry.26839.defdescription type=javadoc /** * L�scht die komplette Registry von TypePlaceholders. Sollte nur und * ausschlie�lich von MyCompiler.init() aufgerufen werden!!! *
      Author: J�rg B�uerle */ - // ino.end - // ino.method.deleteRegistry.26839.definition public static void deleteRegistry() - // ino.end - // ino.method.deleteRegistry.26839.body { m_TypePlaceholdersRegistry.clear(); m_TypePlaceholdersRegistry = new Hashtable(); } - // ino.end - // ino.method.clone.26842.defdescription type=javadoc /** * Diese Methode sollte nur sehr sparsam und mit Vorsicht verwendet werden, da die * Registrierung neuer Listener �ber die zentrale Instanz in der Registry laufen @@ -183,34 +132,16 @@ public class TypePlaceholder extends ObjectType *
      Author: J�rg B�uerle * @return */ - // ino.end - // ino.method.clone.26842.definition public TypePlaceholder clone() - // ino.end - // ino.method.clone.26842.body { TypePlaceholder dolly = new TypePlaceholder(name.toString(), this.parent); return dolly; } - // ino.end - - /** - * @author Andreas Stadelmeier, a10023 - * Überschreibt die get_Name-Methode der Type-Klasse. (Keine Ahnung wieso es überhaupt ein get_Name und ein getName gibt!) - */ - @Override - public String get_Name(){ - return getName().toString(); - } - - // ino.method.toString.26845.definition + public String toString() - // ino.end - // ino.method.toString.26845.body { return "TPH " + this.getName(); } - // ino.end /////////////////////////////////////////////////////////////////// // Spezialfunktionen, f�r makeFC() und unify() @@ -241,31 +172,7 @@ public class TypePlaceholder extends ObjectType //return new TypePlaceholder(makeNewName()); } - // ino.end - - // ino.method.backdoorSetName.26851.defdescription type=javadoc - /** - * Backdoor-Hilfsfunktion, die f�r makeFC() und unify() - * ben�tigt wird, um den Namen eines TypePlaceholders zu ver�ndern.
      - * ACHTUNG: Diese TypePlaceholder darf nicht Teil des abstrakten - * Syntaxbaumes sein!!! Es muss sicher gestellt werden, dass die betreffende - * TypePlaceholder nicht �ber die Methode fresh(), - * sondern �ber backdoorCreate() oder backdoorClone() - * erzeugt worden ist. - *
      Author: J�rg B�uerle - * @param varName Der Name des zu erzeugenden TypePlaceholders - */ - // ino.end - // ino.method.backdoorSetName.26851.definition - public void backdoorSetName(String varName) - // ino.end - // ino.method.backdoorSetName.26851.body - { - name = new JavaClassName(varName); - } - // ino.end - - // ino.method.backdoorCreate.26854.defdescription type=javadoc + /** * Backdoor-Hilfsfunktion, die f�r makeFC() und unify() * ben�tigt wird, zum Erzeugen eines TypePlaceholders, der nicht in @@ -274,11 +181,7 @@ public class TypePlaceholder extends ObjectType * @param name * @return */ - // ino.end - // ino.method.backdoorCreate.26854.definition public static TypePlaceholder backdoorCreate(String name) - // ino.end - // ino.method.backdoorCreate.26854.body { //PL 05-08-22 SEHR GEFAEHRLICH @@ -291,13 +194,13 @@ public class TypePlaceholder extends ObjectType //return new TypePlaceholder(name); } - // ino.end + /////////////////////////////////////////////////////////////////// // Ende Spezialfunktionen /////////////////////////////////////////////////////////////////// private JavaCodeResult printJavaCodePr(ResultSet resultSet) { - Type equalType = resultSet.getTypeEqualTo(this); + RefType equalType = resultSet.getTypeEqualTo(this); if(equalType == null || equalType.equals(this)){ //Für den Fall das der TPH nicht aufgelöst werden konnte. JavaCodeResult ret = new JavaCodeResult(this.getName().toString()); @@ -308,8 +211,7 @@ public class TypePlaceholder extends ObjectType return equalType.printJavaCode(resultSet); } - - @Override + public JavaCodeResult printJavaCode(ResultSet resultSet, boolean resolveTPHs){ if(resolveTPHs)return printJavaCodePr(resultSet); return new JavaCodeResult(this.get_Name()); @@ -387,4 +289,3 @@ public class TypePlaceholder extends ObjectType } } -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/Void.java b/src/de/dhbwstuttgart/syntaxtree/type/Void.java deleted file mode 100755 index 223d3f17..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/Void.java +++ /dev/null @@ -1,99 +0,0 @@ -// ino.module.Void.8679.package -package de.dhbwstuttgart.syntaxtree.type; - -import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.core.IItemWithOffset; -import de.dhbwstuttgart.syntaxtree.Method; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; - -// ino.end -// ino.class.Void.26857.declaration -public class Void extends RefType -// ino.end -// ino.class.Void.26857.body -{ - public static final String VOID_NAME = "void"; - // ino.method.Void.26861.definition - public Void(SyntaxTreeNode parent,int offset) - // ino.end - // ino.method.Void.26861.body - { - super(parent,offset); - super.setName(VOID_NAME); - } - // ino.end - - // ino.method.equals.26864.defdescription type=javadoc - /** - * Author: J�rg B�uerle
      - * @param Object - * @return - */ - // ino.end - // ino.method.equals.26864.definition - public boolean equals(Object obj) - // ino.end - // ino.method.equals.26864.body - { - if(obj instanceof RefType){ - boolean ret = true; - ret &= super.equals(obj); - // if(name==null){ - // ret &= ((Void)obj).get_Name()==null; - // } - - //PL 05-07-31 auf void kann man nicht casten, da parameter in RefType private - //ret &= name.equals(((Void)obj).getName()); - ret &= name.equals(((Type)obj).getName()); - - return ret; - } - else{ - return false; - } - } - // ino.end - - // ino.method.clone.26867.defdescription type=javadoc - /** - *
      Author: J�rg B�uerle - * @return - */ - // ino.end - // ino.method.clone.26867.definition - public Void clone() - // ino.end - // ino.method.clone.26867.body - { - return new Void(this.getParent(),getOffset()); - } - // ino.end - - @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent){ - return this; - } - - @Override - public Type checkTYPE(TypeAssumptions ass, SyntaxTreeNode method) { - return this;//VOID ist immer korrekt, das wird vom Parser geprüft - } - - @Override - public org.apache.bcel.generic.Type getBytecodeType(ClassGenerator cg, TypeinferenceResultSet rs) { - return org.apache.bcel.generic.Type.VOID; - } - - @Override - public String getBytecodeSignature(ClassGenerator cg, TypeinferenceResultSet rs) { - return this.getBytecodeType(cg, rs).getSignature(); - } - - public String getBytecodeMethodSignature(ClassGenerator cg, TypeinferenceResultSet rs) { - return this.getBytecodeSignature(cg, rs); - } -} -// ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java index 946a1090..ed1fede7 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java @@ -1,15 +1,14 @@ package de.dhbwstuttgart.syntaxtree.type; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; +import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; /** * Stellt eine Wildcard in Java dar. @@ -18,17 +17,18 @@ import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException; * */ -public class WildcardType extends Type{ +public abstract class WildcardType extends RefType{ - protected ObjectType innerType = null; + protected RefType innerType = null; /** * Author: Arne Lüdtke
      * Standard Konstruktor für eine Wildcard */ - public WildcardType(ObjectType innerType, SyntaxTreeNode parent, int offset) + public WildcardType(RefType innerType, int offset) { - super(parent, offset); + super(innerType.getName(), offset); + if(innerType instanceof WildcardType)throw new TypeinferenceException("Ein Wildcardtype kann keinen Wildcardtype als innerType besitzen",this); this.innerType = innerType; } @@ -41,43 +41,16 @@ public class WildcardType extends Type{ return "?"; } - /** - * Author: Arne Lüdtke
      - * Gibt einen Klon der Wildcard zurück. - */ - public WildcardType clone() - { - return new WildcardType(this.innerType, this.getParent(), getOffset()); - } - - /** - * Author: Arne Lüdtke
      - * Gibt die passende FreshWildcardType Klasse zurück. - * Wird für CaptureConversion verwendet - */ - public FreshWildcardType GetFreshWildcardType() - { - return new FreshWildcardType(this.getParent(),-1); - } /** * Author: Arne Lüdtke
      * Die Allgemeine Wildcard enthält keinen Typen. */ - public Type GetWildcardType() + public RefType GetWildcardType() { return null; } - - /** - * Author: Arne Lüdtke
      - * Setzt den Typ in der Wildcard, Allgemeine Wildcard hat aber keinen Typen. - * @param T - Type to be set - */ - public void SetWildcardType(Type T) - { - - } + @Override public JavaCodeResult printJavaCode(ResultSet resultSet) { @@ -85,8 +58,8 @@ public class WildcardType extends Type{ } @Override - public Type TYPE(TypeAssumptions ass, SyntaxTreeNode parent) { - this.innerType = (ObjectType) innerType.TYPE(ass, this); + public RefType TYPE(TypeAssumptions ass, SyntaxTreeNode parent) { + this.innerType = innerType.TYPE(ass, this); return this; } diff --git a/src/de/dhbwstuttgart/parser/JavaClassName.java b/src/de/dhbwstuttgart/typecheck/JavaClassName.java similarity index 86% rename from src/de/dhbwstuttgart/parser/JavaClassName.java rename to src/de/dhbwstuttgart/typecheck/JavaClassName.java index 857680f0..f650a9fc 100644 --- a/src/de/dhbwstuttgart/parser/JavaClassName.java +++ b/src/de/dhbwstuttgart/typecheck/JavaClassName.java @@ -1,14 +1,14 @@ -package de.dhbwstuttgart.parser; +package de.dhbwstuttgart.typecheck; -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.RefType; +import java.util.ArrayList; +import java.util.List; /** * Stellt den Namen einer Java Klasse dar. * Dieser kann auch den Packagenamen mit beinhalten: de.dhbwstuttgart.typeinference.Menge * * @author janulrich + * * */ public class JavaClassName { @@ -16,7 +16,11 @@ public class JavaClassName { private String name; private PackageName packageName; - public JavaClassName(String name){ + /** + * TODO: JavaClassName sollten aus den Assumptions generiert werden. + * Diese wissen, welche Typen und Typnamen existieren und können direkt auf Korrektheit prüfen. + */ + JavaClassName(String name){ if(name == null)throw new NullPointerException(); String[] names = name.split("[.]"); @@ -26,7 +30,7 @@ public class JavaClassName { this.name = name; }else { name = names[names.length-1]; - Menge packageNames = new Menge(); + List packageNames = new ArrayList(); for(int i = 0; i names = new Menge(); + List names = new ArrayList<>(); - public PackageName(Menge packageNames) { + public PackageName(List packageNames) { names = packageNames; } diff --git a/src/de/dhbwstuttgart/typecheck/JavaClassRegistry.java b/src/de/dhbwstuttgart/typecheck/JavaClassRegistry.java new file mode 100644 index 00000000..d4600d19 --- /dev/null +++ b/src/de/dhbwstuttgart/typecheck/JavaClassRegistry.java @@ -0,0 +1,18 @@ +package de.dhbwstuttgart.typecheck; + +import java.util.ArrayList; +import java.util.List; + +/** + * Speichert die Klassen im aktuellen Projektscope + */ +public class JavaClassRegistry { + public List existingClasses = new ArrayList<>(); + + public JavaClassName getName(String className) { + for(JavaClassName name : existingClasses){ + if(name.toString().equals(className))return name; + } + throw new TypeNotPresentException(className, new Throwable()); + } +} diff --git a/src/de/dhbwstuttgart/typeinference/FunNInterface.java b/src/de/dhbwstuttgart/typeinference/FunNInterface.java index 877e0632..a74baf8d 100644 --- a/src/de/dhbwstuttgart/typeinference/FunNInterface.java +++ b/src/de/dhbwstuttgart/typeinference/FunNInterface.java @@ -1,19 +1,15 @@ package de.dhbwstuttgart.typeinference; -import de.dhbwstuttgart.typeinference.Menge; - import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; import de.dhbwstuttgart.syntaxtree.type.FunN; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption; import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; diff --git a/src/de/dhbwstuttgart/typeinference/FunVoidNInterface.java b/src/de/dhbwstuttgart/typeinference/FunVoidNInterface.java index ad7d6108..6a8edd99 100644 --- a/src/de/dhbwstuttgart/typeinference/FunVoidNInterface.java +++ b/src/de/dhbwstuttgart/typeinference/FunVoidNInterface.java @@ -1,14 +1,9 @@ package de.dhbwstuttgart.typeinference; -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.modifier.Modifiers; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption; import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; diff --git a/src/de/dhbwstuttgart/typeinference/Pair.java b/src/de/dhbwstuttgart/typeinference/Pair.java index b0792868..5d5641f8 100755 --- a/src/de/dhbwstuttgart/typeinference/Pair.java +++ b/src/de/dhbwstuttgart/typeinference/Pair.java @@ -1,20 +1,10 @@ -// ino.module.Pair.8673.package package de.dhbwstuttgart.typeinference; -// ino.end -// ino.module.Pair.8673.import -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; import java.io.Serializable; -import java.util.Hashtable; +import java.util.ArrayList; import java.util.List; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.typeinference.unify.model.PairOperator; // ino.end -import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.type.FreshWildcardType; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; @@ -24,53 +14,17 @@ import de.dhbwstuttgart.syntaxtree.type.WildcardType; - - -// ino.class.Pair.26540.description type=line // Klasse, die ein Paar in der Menge Eq speichern kann -// ino.end -// ino.class.Pair.26540.declaration public class Pair implements Serializable, DeepCloneable -// ino.end -// ino.class.Pair.26540.body { - // ino.attribute.TA1.26543.declaration - public Type TA1; - // ino.end - // ino.attribute.TA2.26546.declaration - public Type TA2; - // ino.end - - // ino.attribute.bEqual.26549.declaration - private PairOperator eOperator = PairOperator.SMALLER; - - // ino.end - // ino.attribute.bSubst.26552.decldescription type=line - // false <--> vorinitialisierter Wert - // true <--> Dieses Paar entstand durch reduce1-Regel (=.) - // --> Name von TA1 mu� gleich sein wie Name von TA2 - // Nur noch reduce2-Regel anwendbar - - // luar 15-04-2007 - // Der Unify mit Wildcards benötigt 3 verschiedene Operatoren. - // Deshalb wurde der boolean durch einen Enum ersetzt. - // Smaller <--> vorinitialisierter Wert - // SmallerExtends <--> Kleiner extends (wie vorinitialisiert, nur mit einschluss der Wildcard) - // Equal <--> Gleich: Name von TA1 und TA2 müssen gleich sein. - // ino.end - - // ino.attribute.bSubst.26552.declaration - public boolean bSubst; // speichert, ob die SUBST -Regel auf diese Paar - // ino.end - // ino.method.Pair.26555.defdescription type=line - // schon angewandt wurde, Default = FALSE - // ino.end - + public RefType TA1; + public RefType TA2; - // ino.method.Pair.26555.definition - public Pair( Type TA1, Type TA2 ) - // ino.end - // ino.method.Pair.26555.body + private PairOperator eOperator = PairOperator.SMALLER; + + public boolean bSubst; // speichert, ob die SUBST -Regel auf diese Paar + + public Pair( RefType TA1, RefType TA2 ) { // Konstruktor //if(TA1 == null || TA2 == null)throw new NullPointerException(); @@ -79,12 +33,8 @@ public class Pair implements Serializable, DeepCloneable bSubst = false; eOperator = PairOperator.SMALLER; } - // ino.end - // ino.method.Pair.26558.definition - public Pair( Type TA1, Type TA2, PairOperator eOp) - // ino.end - // ino.method.Pair.26558.body + public Pair( RefType TA1, RefType TA2, PairOperator eOp) { // Konstruktor this(TA1,TA2); @@ -93,7 +43,7 @@ public class Pair implements Serializable, DeepCloneable // ino.end // ino.method.Pair.26561.definition - public Pair( Type TA1, Type TA2, PairOperator eOp, boolean bSubst ) + public Pair( RefType TA1, RefType TA2, PairOperator eOp, boolean bSubst ) // ino.end // ino.method.Pair.26561.body { @@ -130,12 +80,8 @@ public class Pair implements Serializable, DeepCloneable /*- Equals: " + bEqual*/ } - // ino.end - // ino.method.isEqual.26567.definition public boolean isEqual() - // ino.end - // ino.method.isEqual.26567.body { // otth: Prueft, ob TA1 == TA2 if( TA1 instanceof RefType && TA2 instanceof RefType ) @@ -213,15 +159,8 @@ public class Pair implements Serializable, DeepCloneable } - // ino.end - // ino.method.copyType.26570.defdescription type=line - // PL 05-01-22 static eingefuegt - // ino.end - // ino.method.copyType.26570.definition - public static Type copyType( Type T ) - // ino.end - // ino.method.copyType.26570.body + public static RefType copyType( RefType T ) { // #JB# 22.05.2005 // ########################################################### @@ -229,46 +168,13 @@ public class Pair implements Serializable, DeepCloneable // ########################################################### } - // ino.end - // ino.method.getTA1Copy.26573.definition - public Type getTA1Copy( ) - // ino.end - // ino.method.getTA1Copy.26573.body - { - return copyType( TA1 ); - } - // ino.end - - // ino.method.getTA2Copy.26576.definition - public Type getTA2Copy( ) - // ino.end - // ino.method.getTA2Copy.26576.body - { - return copyType( TA2 ); - } - // ino.end - - // ino.method.copyPair.26579.definition - public Pair copyPair() - // ino.end - // ino.method.copyPair.26579.body - { - return new Pair(getTA1Copy(), getTA2Copy(), eOperator, bSubst); - } - // ino.end - - // ino.method.equals.26588.defdescription type=javadoc /** *
      Author: J�rg B�uerle * @param obj * @return */ - // ino.end - // ino.method.equals.26588.definition public boolean equals(Object obj) - // ino.end - // ino.method.equals.26588.body { boolean ret = true; ret &= (obj instanceof Pair); @@ -277,16 +183,6 @@ public class Pair implements Serializable, DeepCloneable ret &= ((Pair)obj).TA2.equals(this.TA2); return ret; } - // ino.end - - /** - * Author: Arne Lüdtke
      - * Überprüft ob die Paare die gleichen Instanzen sind. - */ - public boolean instanzeEquals(Object obj) - { - return super.equals(obj); - } /** * Author: Arne Lüdtke
      @@ -323,16 +219,7 @@ public class Pair implements Serializable, DeepCloneable { return eOperator; } - - /** - * Author: Arne Lüdtke
      - * Setzt den Operator - * @param operator - Operator to set. - */ - public void SetOperator(PairOperator operator) - { - this.eOperator = operator; - } + /** * Author: Arne Lüdtke
      @@ -358,8 +245,8 @@ public class Pair implements Serializable, DeepCloneable /** * @return Menge aus TA1 und TA2 */ - public Menge getTypes(){ - Menge ret = new Menge<>(); + public List getTypes(){ + List ret = new ArrayList<>(); ret.add(this.TA1); ret.add(this.TA2); return ret; @@ -384,4 +271,3 @@ public class Pair implements Serializable, DeepCloneable return clone(); } } -// ino.end diff --git a/src/de/dhbwstuttgart/typeinference/ResultSet.java b/src/de/dhbwstuttgart/typeinference/ResultSet.java index 59de1ba0..87c3ecbd 100755 --- a/src/de/dhbwstuttgart/typeinference/ResultSet.java +++ b/src/de/dhbwstuttgart/typeinference/ResultSet.java @@ -1,6 +1,9 @@ package de.dhbwstuttgart.typeinference; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; + import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; @@ -37,7 +40,7 @@ public class ResultSet implements Iterable { * @param type * @return */ - public Type getTypeEqualTo(Type type) { + public RefType getTypeEqualTo(RefType type) { return getTypeEqualTo(type,null); } @@ -46,8 +49,8 @@ public class ResultSet implements Iterable { * @param type * @return */ - public Type getTypeEqualTo(Type type, Menge ofType) { - Type res = type; + public RefType getTypeEqualTo(RefType type, List ofType) { + RefType res = type; Menge modifiedResultPairs = (Menge) resultPairs.clone(); Ret r = findPairWithTypeEqualTo(type, modifiedResultPairs); while(r.i != -1 && r.ret != null){ @@ -64,14 +67,14 @@ public class ResultSet implements Iterable { class Ret{ int i; - Type ret; - private Ret(int i, Type ret){ + RefType ret; + private Ret(int i, RefType ret){ this.i = i; this.ret = ret; } } - private Ret findPairWithTypeEqualTo(Type type, Menge inResultPairs){ + private Ret findPairWithTypeEqualTo(RefType type, Menge inResultPairs){ for(int i = 0; i { * @param tA1 * @return true, falls der gesuchte Typ enthalten ist. */ - public boolean contains(Type tA1) { + public boolean contains(RefType tA1) { for(Pair p : this){ if(p.TA1.equals(tA1)||p.TA2.equals(tA1))return true; } @@ -138,8 +141,8 @@ public class ResultSet implements Iterable { * @param unresolvedTPH * @return */ - public Menge getTypesInvolving(Menge unresolvedTPH) { - Menge ret = new Menge(); + public List getTypesInvolving(Menge unresolvedTPH) { + List ret = new ArrayList<>(); for(Pair p : this.resultPairs){ for(TypePlaceholder tph : unresolvedTPH){ if(p.TA1.involves(tph))ret.add(p.TA1); diff --git a/src/de/dhbwstuttgart/typeinference/Typeable.java b/src/de/dhbwstuttgart/typeinference/Typeable.java index d0b276a9..ad305b01 100755 --- a/src/de/dhbwstuttgart/typeinference/Typeable.java +++ b/src/de/dhbwstuttgart/typeinference/Typeable.java @@ -6,10 +6,9 @@ public interface Typeable { /** * @author Andreas Stadelmeier, a10023 * Jede Expression und jedes Statement muss im Zuge des Typinferenzalgorithmus das Interfece Typable einbinden. - * Die Funktion setTypeVariable muss während des durchlaufens des Typinferenzalgorithmus einmalig für jedes Statement und jede Expression aufgerufen werden. - * Dabei kann auch eine FreshTypeVariable als Typ vergeben werden. + * Die Typen werden nur einmalig vom Parser gesetzt und können dann nur ausgelesen werden. + * Dadurch bleibt der Syntaxbaum immutable. * @param typ Der Typ der Typable-Expression/Statement */ - void setType(Type typ); Type getType(); } diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/Assumption.java b/src/de/dhbwstuttgart/typeinference/assumptions/Assumption.java index bb7a9063..db64c33c 100644 --- a/src/de/dhbwstuttgart/typeinference/assumptions/Assumption.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/Assumption.java @@ -1,10 +1,8 @@ package de.dhbwstuttgart.typeinference.assumptions; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.Class; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.typeinference.TypeInsertable; -import de.dhbwstuttgart.typeinference.Typeable; public class Assumption { diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/ConstructorAssumption.java b/src/de/dhbwstuttgart/typeinference/assumptions/ConstructorAssumption.java index 24d06c91..a3f72a46 100644 --- a/src/de/dhbwstuttgart/typeinference/assumptions/ConstructorAssumption.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/ConstructorAssumption.java @@ -26,7 +26,7 @@ public class ConstructorAssumption extends MethodAssumption{ @Override public Type getAssumedType() { - return new Void(this.method, this.method.getOffset()); + return new Void(this.method.getOffset()); //throw new DebugException("Eine ConstructorAssumption hat keinen Typ bzw. er ist nicht relevant"); //return this.getMethod().getParentClass().getType(); } diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.java b/src/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.java index fd226de3..1530e95f 100644 --- a/src/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.java @@ -1,9 +1,8 @@ package de.dhbwstuttgart.typeinference.assumptions; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.Field; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; public class FieldAssumption extends Assumption { diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/GenericVarAssumption.java b/src/de/dhbwstuttgart/typeinference/assumptions/GenericVarAssumption.java index 02bcd8c0..68772534 100644 --- a/src/de/dhbwstuttgart/typeinference/assumptions/GenericVarAssumption.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/GenericVarAssumption.java @@ -1,15 +1,8 @@ package de.dhbwstuttgart.typeinference.assumptions; -import de.dhbwstuttgart.parser.JavaClassName; -import de.dhbwstuttgart.syntaxtree.FieldDeclaration; -import de.dhbwstuttgart.syntaxtree.GTVDeclarationContext; -import de.dhbwstuttgart.syntaxtree.Method; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.statement.LocalVarDecl; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.Class; public class GenericVarAssumption extends Assumption{ diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/MethodAssumption.java b/src/de/dhbwstuttgart/typeinference/assumptions/MethodAssumption.java index c8063890..88c88773 100644 --- a/src/de/dhbwstuttgart/typeinference/assumptions/MethodAssumption.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/MethodAssumption.java @@ -19,7 +19,7 @@ public class MethodAssumption extends FieldAssumption { } public String getMethodName() { - return this.method.get_Method_Name(); + return this.method.get_Name(); } public int getParaCount(){ diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java index fe59bbd2..65bb44d8 100755 --- a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java @@ -1,25 +1,14 @@ package de.dhbwstuttgart.typeinference.assumptions; -import java.util.Iterator; import de.dhbwstuttgart.typeinference.Menge; -import de.dhbwstuttgart.core.IItemWithOffset; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.logger.Section; -import de.dhbwstuttgart.parser.JavaClassName; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; -import de.dhbwstuttgart.syntaxtree.GTVDeclarationContext; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.type.FunN; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; -import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; -import de.dhbwstuttgart.syntaxtree.type.WildcardType; -import de.dhbwstuttgart.typeinference.FunNInterface; -import de.dhbwstuttgart.typeinference.FunNMethod; -import de.dhbwstuttgart.typeinference.exceptions.DebugException; -import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; /** * Eine Sammlung von TypeAssumptions. @@ -250,89 +239,6 @@ public class TypeAssumptions { return ret; } - /** - * Kontrolliert den vom Parser gesetzten Typ. - * Erweitert dessen Bezeichnung, wenn nötig. - * @param t - * @return null, falls der Typ nicht vorhanden ist. - */ - public Type getTypeFor(Type t, SyntaxTreeNode inNode){ - //Alle bekannten Klassen nach diesem Typ durchsuchen: - JavaClassName typName = t.getName(); - for(ClassAssumption ass : this.classAssumptions){ - JavaClassName name = ass.getAssumedClass().getName(); //Das kann auch de.dhbwstuttgart.typeinference.Menge sein - boolean match = true; - match = name.equals(typName); - if(match && t instanceof RefType){ - RefType tr = (RefType)t; - RefType ret = ass.getAssumedClass().getType(); //Dadurch erhält der RefType den vollen Namen (bsp. java.lang.Integer) - ret.setArray(((RefType) t).IsArray()); - //Falls der RefType mit Parametern angegeben wurde, so müssen diese erhalten bleiben: - if(tr.get_ParaList()!=null && tr.getParaList().size()>0){ - ret.set_ParaList(tr.getParaList()); - } - - //Der RefType muss zusätzlich seine Parameter prüfen. - Menge parameterList = new Menge<>(); - if(ret.get_ParaList()!=null)for(Type param : ret.get_ParaList()){ - Type ct = param.TYPE(this, inNode); - parameterList.add(ct); - } - ret.set_ParaList(parameterList); - - return ret; - } - } - //Auch die generischen Variablen durchsuchen: - for(GenericVarAssumption ass : this.genericVarAssumptions){ - //if(ass.inheritsType(t))return t; - if(ass.getIdentifier().equals(t.getName())){ - //Generische Variable gefunden! - //Erkennen, ob sich inNode im gleichen Kontext wie die GTV aus den Assumptions befindet. - boolean sameContext = true; - //Der GTV-Kontext der einzusetzenden GTV - GTVDeclarationContext gtvDeclNode = ass.getAssumedType().getDeclarationContext(); - //Der GTV-Kontext von inNOde - GTVDeclarationContext gtvNode = inNode.getGTVDeclarationContext(); - //Überprüfungen (siehe Dokumentation): - if(gtvDeclNode.isClass()){ //GTV wurde in Klasse definiert - if(! gtvNode.getParentClass().equals(gtvDeclNode))sameContext = false; - }else{ //GTV wurde in Methode oder Feld definiert: - if(! gtvNode.equals(gtvDeclNode))sameContext = false; - } - - if(sameContext){ - TypeAssumptions.log.debug(t+" ist in Klasse: "+ass.getAssumedType().getParentClass(), Section.ASSUMPTIONS); - return ass.getAssumedType(); - }else{ - TypeAssumptions.log.debug(t+" ist NICHT in Klasse: "+ass.getAssumedType().getParentClass(), Section.ASSUMPTIONS); - //Ist die Generische Variable nicht aus dieser Klasse, so muss sie zu einem TPH umgewandelt werden: - return ass.getAssumedType().getTypePlaceHolder(inNode); - } - } - } - - if(t.getName() == null)throw new DebugException(t.toString()); - //Spezialfälle bei char, int, boolean, .... - String name = t.getName().toString(); - switch(name){ - case "int": - return new RefType("java.lang.Integer",t.getParent(),t.getOffset()); - case "boolean": - return new RefType("java.lang.Boolean",t.getParent(),t.getOffset()); - case "double": - return new RefType("java.lang.Double",t.getParent(),t.getOffset()); - case "float": - return new RefType("java.lang.Float",t.getParent(),t.getOffset()); - case "long": - return new RefType("java.lang.Long",t.getParent(),t.getOffset()); - case "char": - return new RefType("java.lang.Character",t.getParent(),t.getOffset()); - } - - throw new TypeinferenceException("Der Typ "+t.getName()+" ist nicht korrekt",inNode); - } - /** * Fügt eine TypAssumption an. * Dadurch wird ein Pool von Typen aufgebaut, welche überhaupt erlaubt sind. @@ -381,12 +287,6 @@ public class TypeAssumptions { return null; } - public Type checkType(RefType type, SyntaxTreeNode parent) { - Type t = this.getTypeFor(type, parent); //Richtigkeit des Typnahmensprüfen - type.setName(t.getName()); //Und diesen auf den Typ anwenden - return t; - } - /** * Prüft einen Typ auf das vorhandensein in den BasicAssumptions. * Dabei werden alle Konstruktoren nach diesem Typ durchsucht. Denn jede Klasse hat einen Konstruktor und der muss in den TypeAssumptions vorhanden sein. diff --git a/test/unify/UnifyTypeFactoryTest.java b/test/unify/UnifyTypeFactoryTest.java index 2cf5bc53..a7f984b8 100644 --- a/test/unify/UnifyTypeFactoryTest.java +++ b/test/unify/UnifyTypeFactoryTest.java @@ -6,8 +6,6 @@ import java.util.Set; import org.junit.Test; -import de.dhbwstuttgart.syntaxtree.NullSyntaxTreeNode; -import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.factory.UnifyTypeFactory; import de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType; import de.dhbwstuttgart.syntaxtree.type.FunN;