From eb0da3c36a5c1618cac299a46341df764589a886 Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Wed, 22 Jun 2016 20:29:16 +0200 Subject: [PATCH] =?UTF-8?q?Aufr=C3=A4umen,=20neues=20Eclipse-Projekt=20anl?= =?UTF-8?q?egen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 8 +- .cvsignore | 12 - .../JavaParserBuilder.launch | 21 - .idea/modules.xml | 8 - .idea/vcs.xml | 6 - .project | 14 - .settings/com.google.gwt.eclipse.core.prefs | 2 - .settings/org.eclipse.core.resources.prefs | 7 - .settings/org.eclipse.jdt.core.prefs | 24 +- .settings/org.eclipse.jdt.ui.prefs | 4 - JavaCompilerCore.iml | 75 - Papers/FMCO2005/main.bbl | 76 - Papers/FMCO2005/main.dvi | Bin 12008 -> 0 bytes Papers/FMCO2005/main.tex | 140 - Papers/FMCO2005/martin.bib | 2310 ----- Papers/FMCO2005/prolog.sty | 708 -- TODO.md | 2 - antlr/Java8.g4 | 1028 --- antlr/Java8.tokens | 201 - antlr/Java8BaseListener.java | 1251 --- antlr/Java8Lexer.java | 515 -- antlr/Java8Lexer.tokens | 201 - antlr/Java8Listener.java | 1020 --- antlr/Java8Parser.java | 7695 ----------------- antlr/makefile | 4 - bin/log4j.xml | 35 - examples/OldExamples/hama/Add.jav | 7 - examples/OldExamples/hama/AddMain.jav | 8 - examples/OldExamples/hama/Empty.jav | 4 - examples/OldExamples/hama/EmptyMain.jav | 8 - examples/OldExamples/hama/Ergebnis.jav | 18 - examples/OldExamples/hama/ErgebnisMain.jav | 9 - examples/OldExamples/hama/Setze.jav | 9 - examples/OldExamples/hama/SetzeMain.jav | 9 - .../OldExamples/hama/StoreSomethingObj.jav | 14 - .../OldExamples/hama/StoreSomethingObjCon.jav | 19 - .../hama/StoreSomethingObjMain.jav | 15 - .../OldExamples/hama/StoreSomethingPar.jav | 14 - .../OldExamples/hama/StoreSomethingParCon.jav | 19 - .../hama/StoreSomethingParMain.jav | 15 - .../hama/StoreSomethingParMainTrick.jav | 15 - .../OldExamples/hama/StoreSomethingStr.jav | 14 - .../OldExamples/hama/StoreSomethingStrCon.jav | 19 - .../hama/StoreSomethingStrMain.jav | 15 - examples/OldExamples/hama/Toggle1.jav | 16 - examples/OldExamples/hama/Toggle2.jav | 15 - examples/OldExamples/hama/Toggle3.jav | 25 - examples/OldExamples/hama/ToggleMain.jav | 18 - examples/OldExamples/hama/test1.jav | 37 - examples/OldExamples/hama/test11.jav | 37 - examples/OldExamples/hama/test1o.jav | 20 - examples/OldExamples/hama/test2.jav | 42 - examples/OldExamples/hama/test22.jav | 42 - examples/OldExamples/hama/test2o.jav | 32 - examples/OldExamples/hama/test3.jav | 29 - examples/OldExamples/hama/test33.jav | 29 - examples/OldExamples/hama/test3o.jav | 20 - examples/OldExamples/otth/otth10.jav | 22 - examples/OldExamples/otth/otth11.jav | 10 - examples/OldExamples/otth/otth12.jav | 26 - examples/OldExamples/otth/otth13.jav | 13 - examples/OldExamples/otth/otth14.jav | 11 - examples/OldExamples/otth/otth15.jav | 43 - examples/OldExamples/otth/otth16.jav | 38 - examples/OldExamples/otth/otth17.jav | 25 - examples/OldExamples/otth/otth18.jav | 1 - examples/OldExamples/otth/otth19.jav | 17 - examples/OldExamples/otth/otth20.jav | 10 - examples/OldExamples/otth/otth21.jav | 24 - examples/OldExamples/otth/otth22.jav | 23 - examples/OldExamples/otth/otth23.jav | 16 - examples/OldExamples/otth/otth24.jav | 16 - examples/OldExamples/otth/otth8.jav | 12 - examples/OldExamples/otth/pl1.jav.txt | 28 - examples/OldExamples/otth/pl2.jav.txt | 28 - examples/OldExamples/test/Class1.java | 8 - examples/OldExamples/test/Class2.java | 8 - examples/OldExamples/test/Class3.java | 8 - examples/OldExamples/test/Eins.java | 27 - examples/OldExamples/test/ExtendTest.java | 8 - examples/OldExamples/test/Main.java | 21 - examples/OldExamples/test/Main2.java | 11 - examples/OldExamples/test/MethTestBasis.java | 12 - .../OldExamples/test/MethTestInherit.java | 12 - examples/OldExamples/test/SCTest.java | 314 - examples/OldExamples/test/Test.java | 16 - examples/OldExamples/test/TestCode.java | 49 - examples/OldExamples/test/TestSemantic.java | 35 - examples/OldExamples/test/Vererbung.java | 8 - examples/OldExamples/test/X.java | 21 - examples/OldExamples/test/Zwei.java | 27 - examples/achim/Abstract.jav | 12 - examples/achim/Add.jav | 6 - examples/achim/Assert.jav | 13 - examples/achim/Continue.jav | 17 - examples/achim/ElseIf.jav | 20 - examples/achim/Exceptions.jav | 9 - examples/achim/ForTest.jav | 10 - examples/achim/Implements.jav | 18 - examples/achim/Instanceof.jav | 10 - examples/achim/Interface.jav | 4 - examples/achim/Modifier.jav | 53 - examples/achim/Modifier2.jav | 30 - examples/achim/Super.jav | 13 - examples/achim/SwitchCase.jav | 24 - examples/achim/Synchronized.jav | 8 - examples/achim/This.jav | 10 - examples/achim/TryCatch.jav | 10 - examples/achim/Types.jav | 31 - examples/achim/Vector.jav | 8 - examples/achim/While.jav | 19 - examples/achim/WhileTest.jav | 0 examples/bajo1/Martin.jav | 6 - examples/bajo1/Matrix.jav | 26 - examples/bajo1/SchorschTest.jav | 11 - examples/bajo1/Simple.jav | 7 - examples/bajo1/Test.jav | 3 - examples/bajo1_usecases/BlockIDTest.jav | 12 - examples/bajo1_usecases/Matrix.jav | 35 - examples/bajo1_usecases/Matrix1.jav | 21 - examples/bajo1_usecases/Matrix2.jav | 11 - examples/bajo1_usecases/Test.jav | 11 - examples/bajo1_usecases/UsecaseFive.jav | 15 - examples/bajo1_usecases/UsecaseFour.jav | 11 - examples/bajo1_usecases/UsecaseOne.jav | 5 - examples/bajo1_usecases/UsecaseSix.jav | 14 - examples/bajo1_usecases/UsecaseThree.jav | 20 - examples/bajo1_usecases/UsecaseTwo.jav | 6 - examples/feda/feda.jav | 25 - examples/feda/feda2.jav | 8 - examples/feda/feda3.jav | 4 - examples/feda/feda4.jav | 17 - examples/feda/quadrat.jav | 20 - examples/hoth/Test.jav | 15 - examples/hoth/Test2.jav | 23 - examples/hoti/BoundedClassPara.jav | 10 - examples/hoti/Constr.jav | 18 - examples/hoti/EmptyResultProblem.jav | 9 - examples/hoti/ErrorTest.jav | 13 - examples/hoti/Generic.jav | 22 - examples/hoti/GenericMethod.jav | 8 - examples/hoti/GenericsTest.jav | 15 - examples/hoti/Id.jav | 17 - examples/hoti/ImplClass.jav | 5 - examples/hoti/Import.jav | 10 - examples/hoti/Intf.jav | 18 - examples/hoti/IntfTest.jav | 15 - examples/hoti/Matrix.jav | 35 - examples/hoti/Mehrfachvererbung.jav | 14 - examples/hoti/Multiclass.jav | 11 - examples/hoti/Overl.jav | 24 - examples/hoti/ReturnTypeProblem.jav | 7 - examples/hoti/Simple.jav | 5 - examples/hoti/Simple2.jav | 10 - examples/hoti/Test.jav | 14 - examples/hoti/Test2.jav | 9 - examples/hoti/Test3.jav | 9 - examples/hoti/VectorStack.jav | 10 - examples/hoti/VectorTest.jav | 13 - examples/hoti/VererbProb.jav | 23 - examples/hoti/WorkerExample.jav | 17 - examples/hoti/arne.jav | 10 - examples/hoti/hothtest.jav | 9 - examples/lambda/general.jav | 23 - examples/lambda/test1.jav | 6 - examples/lambda/test2.jav | 3 - examples/luar/TestSmall.jav | 12 - examples/luar/WCParseTest.jav | 20 - examples/luar/WCTest1.jav | 23 - examples/luar/WCTest10.jav | 17 - examples/luar/WCTest11.jav | 47 - examples/luar/WCTest2.jav | 12 - examples/luar/WCTest3.jav | 9 - examples/luar/WCTest4.jav | 11 - examples/luar/WCTest5.jav | 71 - examples/luar/WCTest6.jav | 13 - examples/luar/WCTest7.jav | 120 - examples/luar/WCTest8.jav | 25 - examples/luar/WCTest9.jav | 14 - examples/mema_usecases/UsecaseFive.jav | 8 - examples/mema_usecases/UsecaseFour.jav | 10 - examples/mema_usecases/UsecaseOne.jav | 6 - examples/mema_usecases/UsecaseThree.jav | 20 - examples/mema_usecases/UsecaseTwo.jav | 6 - examples/mema_usecases/UsecaseZero.jav | 5 - examples/pl_usecases/AchimTest1.jav | 9 - examples/pl_usecases/BoundedType.jav | 12 - examples/pl_usecases/BoundedType1.jav | 16 - examples/pl_usecases/BoundedType2.jav | 15 - examples/pl_usecases/OL.jav | 16 - examples/pl_usecases/OL2.jav | 20 - examples/pl_usecases/Probleme | 41 - examples/pl_usecases/SMatrix.jav | 11 - examples/pl_usecases/Simple.jav | 10 - examples/pl_usecases/UnifyTest1.jav | 11 - examples/pl_usecases/UsecaseEight_pl.jav | 10 - examples/pl_usecases/UsecaseFive_pl.jav | 9 - examples/pl_usecases/UsecaseFour_pl.jav | 9 - examples/pl_usecases/UsecaseNine_pl.jav | 12 - examples/pl_usecases/UsecaseOne_pl.jav | 20 - examples/pl_usecases/UsecaseSeven_pl.jav | 18 - examples/pl_usecases/UsecaseSix_pl.jav | 5 - examples/pl_usecases/UsecaseTen_pl.jav | 14 - examples/pl_usecases/UsecaseThree_pl.jav | 9 - .../pl_usecases/UsecaseThree_pl.orig.java | 11 - examples/pl_usecases/UsecaseTwo_pl.jav | 11 - examples/pl_usecases/Usecase_MUBTest.jav | 12 - examples/pl_usecases/Usecase_MUBTest1.jav | 17 - examples/pl_usecases/Usecase_MUBTest2.jav | 13 - examples/pl_usecases/Usecase_MUBTest3.jav | 14 - examples/pl_usecases/Usecase_MUBTest4.jav | 12 - examples/pl_usecases/Usecase_MUBTest5.jav | 12 - examples/pl_usecases/Usecase_MUBTest6.jav | 9 - examples/pl_usecases/ZweiKlassen.jav | 17 - examples/scju/Boxing.jav | 26 - examples/scju/ClassGenerics.jav | 12 - examples/scju/ClassKonstanten.jav | 6 - examples/scju/FieldGenerics.jav | 11 - examples/scju/InterfaceGenerics.jav | 9 - examples/scju/InterfaceTest.jav | 10 - examples/scju/MethodGenerics.jav | 18 - examples/scju/SimpleMethodCall.jav | 15 - examples/scju/testPackage/Test.jav | 15 - lib/bcel-5.2-src.zip | Bin 584571 -> 0 bytes lib/bcel-5.2.jar | Bin 533339 -> 0 bytes lib/bcel-6.0-SNAPSHOT.jar | Bin 632972 -> 0 bytes log4j.xml | 35 - notizen/Joerg_fragen | 2 - notizen/bajo1/Fragen_und_Probleme.txt | 109 - notizen/bajo1/Notizen_zur_Implementierung.txt | 130 - notizen/bajo1/Theoretische_Erkenntnisse.txt | 45 - notizen/bajo1/merge-to-do.txt | 25 - notizen/hoti/Notizen.txt | 69 - ...o Holzherr Statusbericht Typinferenz I.pdf | 3134 ------- notizen/pl/Packages | 3 - notizen/pl/xxx | 77 - notizen/pl/yPluemicke.output | 7548 ---------------- notizen/stan/lambdaBytecode/Fun0.java | 3 - notizen/stan/lambdaBytecode/Fun1.java | 7 - notizen/stan/lambdaBytecode/GenericTest.java | 5 - notizen/stan/lambdaBytecode/Identity.java | 5 - notizen/stan/lambdaBytecode/InnerClass.java | 10 - notizen/stan/lambdaBytecode/Lambda1.decompile | 106 - notizen/stan/lambdaBytecode/Lambda1.java | 12 - notizen/stan/lambdaBytecode/Lambda2.java | 4 - notizen/stan/lambdaBytecode/Lambda3.decompile | 110 - notizen/stan/lambdaBytecode/Lambda3.java | 12 - notizen/stan/lambdaBytecode/Lambda4.decompile | 104 - notizen/stan/lambdaBytecode/Lambda4.java | 8 - notizen/stan/lambdaBytecode/Lambda5.java | 8 - notizen/stan/lambdaBytecode/Lambda5Test.java | 5 - notizen/stan/lambdaBytecode/Notizen.md | 43 - notizen/stan/lambdaBytecode/Runnable.java | 5 - notizen/stan/lambdaBytecode/Test.java | 8 - .../stan/stackmaptable/IfElseStatement.java | 9 - notizen/stan/stackmaptable/Notizen.md | 21 - notizen/stan/stackmaptable/StackMapTest.java | 6 - notizen/stan/stackmaptable/StackMapTest2.java | 8 - notizen/stan/stackmaptable/StackMapTest3.java | 14 - notizen/stan/stackmaptable/StackMapTest4.java | 17 - notizen/stan/stackmaptable/StackMapTest5.java | 12 - notizen/stf/Notes | 50 - .../dhbwstuttgart/core/AClassOrInterface.java | 7 - .../dhbwstuttgart/core/ConsoleInterface.java | 7 +- src/de/dhbwstuttgart/core/MyCompiler.java | 4 +- src/de/dhbwstuttgart/core/MyCompilerAPI.java | 4 +- .../CTypeReconstructionException.java | 128 - .../myexception/JVMCodeException.java | 23 - .../myexception/MatchException.java | 24 - .../myexception/NotImplementedException.java | 18 - .../myexception/SCClassBodyException.java | 40 - .../myexception/SCClassException.java | 67 - .../dhbwstuttgart/myexception/SCExcept.java | 113 - .../myexception/SCException.java | 50 - .../myexception/SCMethodException.java | 41 - .../myexception/SCStatementException.java | 41 - .../dhbwstuttgart/syntaxtree/ClassBody.java | 4 - src/de/dhbwstuttgart/syntaxtree/Constant.java | 1 - .../dhbwstuttgart/syntaxtree/Constructor.java | 1 - src/de/dhbwstuttgart/syntaxtree/Field.java | 1 - .../syntaxtree/FieldDeclaration.java | 5 +- .../dhbwstuttgart/syntaxtree/Interface.java | 1 - .../syntaxtree/InterfaceBody.java | 2 - src/de/dhbwstuttgart/syntaxtree/Method.java | 3 - .../dhbwstuttgart/syntaxtree/SourceFile.java | 7 +- .../syntaxtree/factory/UnifyTypeFactory.java | 2 +- .../dhbwstuttgart/syntaxtree/misc/DeclId.java | 1 - .../syntaxtree/operator/AddOp.java | 2 - .../syntaxtree/operator/DivideOp.java | 1 - .../syntaxtree/operator/EqualOp.java | 2 - .../syntaxtree/operator/GreaterEquOp.java | 2 - .../syntaxtree/operator/GreaterOp.java | 2 - .../syntaxtree/operator/LessEquOp.java | 2 - .../syntaxtree/operator/LessOp.java | 2 - .../syntaxtree/operator/LogOp.java | 3 - .../syntaxtree/operator/MinusOp.java | 2 - .../syntaxtree/operator/ModuloOp.java | 5 - .../syntaxtree/operator/MulOp.java | 1 - .../syntaxtree/operator/NotEqualOp.java | 2 - .../syntaxtree/operator/Operator.java | 2 - .../syntaxtree/operator/PlusOp.java | 1 - .../syntaxtree/operator/RelOp.java | 2 - .../syntaxtree/operator/TimesOp.java | 1 - .../syntaxtree/statement/ArgumentList.java | 1 - .../syntaxtree/statement/Assign.java | 4 - .../syntaxtree/statement/Binary.java | 4 - .../syntaxtree/statement/Block.java | 4 - .../syntaxtree/statement/BoolLiteral.java | 2 - .../syntaxtree/statement/CastExpr.java | 6 +- .../syntaxtree/statement/CharLiteral.java | 2 - .../syntaxtree/statement/DoubleLiteral.java | 2 - .../syntaxtree/statement/EmptyStmt.java | 2 - .../syntaxtree/statement/Expr.java | 2 - .../syntaxtree/statement/FloatLiteral.java | 2 - .../syntaxtree/statement/ForStmt.java | 7 +- .../syntaxtree/statement/IfStmt.java | 4 - .../syntaxtree/statement/InstVar.java | 4 +- .../syntaxtree/statement/InstanceOf.java | 6 +- .../syntaxtree/statement/IntLiteral.java | 2 - .../statement/LambdaExpression.java | 7 +- .../syntaxtree/statement/Literal.java | 1 - .../statement/LocalOrFieldVarOrClassname.java | 4 - .../syntaxtree/statement/LocalVarDecl.java | 3 - .../syntaxtree/statement/LongLiteral.java | 2 - .../syntaxtree/statement/MethodCall.java | 1 - .../syntaxtree/statement/NegativeExpr.java | 6 +- .../syntaxtree/statement/NewArray.java | 20 +- .../syntaxtree/statement/NewClass.java | 5 - .../syntaxtree/statement/NotExpr.java | 5 +- .../syntaxtree/statement/Null.java | 2 - .../syntaxtree/statement/PositivExpr.java | 4 +- .../syntaxtree/statement/PostDecExpr.java | 7 +- .../syntaxtree/statement/PostIncExpr.java | 4 - .../syntaxtree/statement/PreDecExpr.java | 6 +- .../syntaxtree/statement/PreIncExpr.java | 6 +- .../syntaxtree/statement/Receiver.java | 7 - .../syntaxtree/statement/Return.java | 4 - .../syntaxtree/statement/Statement.java | 3 - .../syntaxtree/statement/SuperCall.java | 3 - .../syntaxtree/statement/This.java | 3 - .../syntaxtree/statement/ThisCall.java | 3 - .../syntaxtree/statement/UnaryExpr.java | 1 - .../syntaxtree/statement/UnaryMinus.java | 1 - .../syntaxtree/statement/UnaryNot.java | 1 - .../syntaxtree/statement/WhileStmt.java | 4 - .../syntaxtree/type/RefType.java | 1 - .../typeinference/EinzelElement.java | 8 +- .../typeinference/unify/RuleSet.java | 6 +- 348 files changed, 43 insertions(+), 31472 deletions(-) mode change 100755 => 100644 .classpath delete mode 100755 .cvsignore delete mode 100755 .externalToolBuilders/JavaParserBuilder.launch delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml mode change 100755 => 100644 .project delete mode 100644 .settings/com.google.gwt.eclipse.core.prefs delete mode 100755 .settings/org.eclipse.core.resources.prefs mode change 100755 => 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100755 .settings/org.eclipse.jdt.ui.prefs delete mode 100644 JavaCompilerCore.iml delete mode 100755 Papers/FMCO2005/main.bbl delete mode 100755 Papers/FMCO2005/main.dvi delete mode 100755 Papers/FMCO2005/main.tex delete mode 100755 Papers/FMCO2005/martin.bib delete mode 100755 Papers/FMCO2005/prolog.sty delete mode 100644 TODO.md delete mode 100644 antlr/Java8.g4 delete mode 100644 antlr/Java8.tokens delete mode 100644 antlr/Java8BaseListener.java delete mode 100644 antlr/Java8Lexer.java delete mode 100644 antlr/Java8Lexer.tokens delete mode 100644 antlr/Java8Listener.java delete mode 100644 antlr/Java8Parser.java delete mode 100644 antlr/makefile delete mode 100755 bin/log4j.xml delete mode 100755 examples/OldExamples/hama/Add.jav delete mode 100755 examples/OldExamples/hama/AddMain.jav delete mode 100755 examples/OldExamples/hama/Empty.jav delete mode 100755 examples/OldExamples/hama/EmptyMain.jav delete mode 100755 examples/OldExamples/hama/Ergebnis.jav delete mode 100755 examples/OldExamples/hama/ErgebnisMain.jav delete mode 100755 examples/OldExamples/hama/Setze.jav delete mode 100755 examples/OldExamples/hama/SetzeMain.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingObj.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingObjCon.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingObjMain.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingPar.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingParCon.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingParMain.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingParMainTrick.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingStr.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingStrCon.jav delete mode 100755 examples/OldExamples/hama/StoreSomethingStrMain.jav delete mode 100755 examples/OldExamples/hama/Toggle1.jav delete mode 100755 examples/OldExamples/hama/Toggle2.jav delete mode 100755 examples/OldExamples/hama/Toggle3.jav delete mode 100755 examples/OldExamples/hama/ToggleMain.jav delete mode 100755 examples/OldExamples/hama/test1.jav delete mode 100755 examples/OldExamples/hama/test11.jav delete mode 100755 examples/OldExamples/hama/test1o.jav delete mode 100755 examples/OldExamples/hama/test2.jav delete mode 100755 examples/OldExamples/hama/test22.jav delete mode 100755 examples/OldExamples/hama/test2o.jav delete mode 100755 examples/OldExamples/hama/test3.jav delete mode 100755 examples/OldExamples/hama/test33.jav delete mode 100755 examples/OldExamples/hama/test3o.jav delete mode 100755 examples/OldExamples/otth/otth10.jav delete mode 100755 examples/OldExamples/otth/otth11.jav delete mode 100755 examples/OldExamples/otth/otth12.jav delete mode 100755 examples/OldExamples/otth/otth13.jav delete mode 100755 examples/OldExamples/otth/otth14.jav delete mode 100755 examples/OldExamples/otth/otth15.jav delete mode 100755 examples/OldExamples/otth/otth16.jav delete mode 100755 examples/OldExamples/otth/otth17.jav delete mode 100755 examples/OldExamples/otth/otth18.jav delete mode 100755 examples/OldExamples/otth/otth19.jav delete mode 100755 examples/OldExamples/otth/otth20.jav delete mode 100755 examples/OldExamples/otth/otth21.jav delete mode 100755 examples/OldExamples/otth/otth22.jav delete mode 100755 examples/OldExamples/otth/otth23.jav delete mode 100755 examples/OldExamples/otth/otth24.jav delete mode 100755 examples/OldExamples/otth/otth8.jav delete mode 100755 examples/OldExamples/otth/pl1.jav.txt delete mode 100755 examples/OldExamples/otth/pl2.jav.txt delete mode 100755 examples/OldExamples/test/Class1.java delete mode 100755 examples/OldExamples/test/Class2.java delete mode 100755 examples/OldExamples/test/Class3.java delete mode 100755 examples/OldExamples/test/Eins.java delete mode 100755 examples/OldExamples/test/ExtendTest.java delete mode 100755 examples/OldExamples/test/Main.java delete mode 100755 examples/OldExamples/test/Main2.java delete mode 100755 examples/OldExamples/test/MethTestBasis.java delete mode 100755 examples/OldExamples/test/MethTestInherit.java delete mode 100755 examples/OldExamples/test/SCTest.java delete mode 100755 examples/OldExamples/test/Test.java delete mode 100755 examples/OldExamples/test/TestCode.java delete mode 100755 examples/OldExamples/test/TestSemantic.java delete mode 100755 examples/OldExamples/test/Vererbung.java delete mode 100755 examples/OldExamples/test/X.java delete mode 100755 examples/OldExamples/test/Zwei.java delete mode 100755 examples/achim/Abstract.jav delete mode 100755 examples/achim/Add.jav delete mode 100755 examples/achim/Assert.jav delete mode 100755 examples/achim/Continue.jav delete mode 100755 examples/achim/ElseIf.jav delete mode 100755 examples/achim/Exceptions.jav delete mode 100755 examples/achim/ForTest.jav delete mode 100755 examples/achim/Implements.jav delete mode 100755 examples/achim/Instanceof.jav delete mode 100755 examples/achim/Interface.jav delete mode 100755 examples/achim/Modifier.jav delete mode 100755 examples/achim/Modifier2.jav delete mode 100755 examples/achim/Super.jav delete mode 100755 examples/achim/SwitchCase.jav delete mode 100755 examples/achim/Synchronized.jav delete mode 100755 examples/achim/This.jav delete mode 100755 examples/achim/TryCatch.jav delete mode 100755 examples/achim/Types.jav delete mode 100755 examples/achim/Vector.jav delete mode 100755 examples/achim/While.jav delete mode 100755 examples/achim/WhileTest.jav delete mode 100755 examples/bajo1/Martin.jav delete mode 100755 examples/bajo1/Matrix.jav delete mode 100755 examples/bajo1/SchorschTest.jav delete mode 100755 examples/bajo1/Simple.jav delete mode 100755 examples/bajo1/Test.jav delete mode 100755 examples/bajo1_usecases/BlockIDTest.jav delete mode 100755 examples/bajo1_usecases/Matrix.jav delete mode 100755 examples/bajo1_usecases/Matrix1.jav delete mode 100755 examples/bajo1_usecases/Matrix2.jav delete mode 100755 examples/bajo1_usecases/Test.jav delete mode 100755 examples/bajo1_usecases/UsecaseFive.jav delete mode 100755 examples/bajo1_usecases/UsecaseFour.jav delete mode 100755 examples/bajo1_usecases/UsecaseOne.jav delete mode 100755 examples/bajo1_usecases/UsecaseSix.jav delete mode 100755 examples/bajo1_usecases/UsecaseThree.jav delete mode 100755 examples/bajo1_usecases/UsecaseTwo.jav delete mode 100755 examples/feda/feda.jav delete mode 100755 examples/feda/feda2.jav delete mode 100755 examples/feda/feda3.jav delete mode 100755 examples/feda/feda4.jav delete mode 100755 examples/feda/quadrat.jav delete mode 100755 examples/hoth/Test.jav delete mode 100755 examples/hoth/Test2.jav delete mode 100755 examples/hoti/BoundedClassPara.jav delete mode 100755 examples/hoti/Constr.jav delete mode 100755 examples/hoti/EmptyResultProblem.jav delete mode 100755 examples/hoti/ErrorTest.jav delete mode 100755 examples/hoti/Generic.jav delete mode 100755 examples/hoti/GenericMethod.jav delete mode 100755 examples/hoti/GenericsTest.jav delete mode 100755 examples/hoti/Id.jav delete mode 100755 examples/hoti/ImplClass.jav delete mode 100755 examples/hoti/Import.jav delete mode 100755 examples/hoti/Intf.jav delete mode 100755 examples/hoti/IntfTest.jav delete mode 100755 examples/hoti/Matrix.jav delete mode 100755 examples/hoti/Mehrfachvererbung.jav delete mode 100755 examples/hoti/Multiclass.jav delete mode 100755 examples/hoti/Overl.jav delete mode 100755 examples/hoti/ReturnTypeProblem.jav delete mode 100755 examples/hoti/Simple.jav delete mode 100755 examples/hoti/Simple2.jav delete mode 100755 examples/hoti/Test.jav delete mode 100755 examples/hoti/Test2.jav delete mode 100755 examples/hoti/Test3.jav delete mode 100755 examples/hoti/VectorStack.jav delete mode 100755 examples/hoti/VectorTest.jav delete mode 100755 examples/hoti/VererbProb.jav delete mode 100755 examples/hoti/WorkerExample.jav delete mode 100755 examples/hoti/arne.jav delete mode 100755 examples/hoti/hothtest.jav delete mode 100755 examples/lambda/general.jav delete mode 100755 examples/lambda/test1.jav delete mode 100755 examples/lambda/test2.jav delete mode 100755 examples/luar/TestSmall.jav delete mode 100755 examples/luar/WCParseTest.jav delete mode 100755 examples/luar/WCTest1.jav delete mode 100755 examples/luar/WCTest10.jav delete mode 100755 examples/luar/WCTest11.jav delete mode 100755 examples/luar/WCTest2.jav delete mode 100755 examples/luar/WCTest3.jav delete mode 100755 examples/luar/WCTest4.jav delete mode 100755 examples/luar/WCTest5.jav delete mode 100755 examples/luar/WCTest6.jav delete mode 100755 examples/luar/WCTest7.jav delete mode 100755 examples/luar/WCTest8.jav delete mode 100755 examples/luar/WCTest9.jav delete mode 100755 examples/mema_usecases/UsecaseFive.jav delete mode 100755 examples/mema_usecases/UsecaseFour.jav delete mode 100755 examples/mema_usecases/UsecaseOne.jav delete mode 100755 examples/mema_usecases/UsecaseThree.jav delete mode 100755 examples/mema_usecases/UsecaseTwo.jav delete mode 100755 examples/mema_usecases/UsecaseZero.jav delete mode 100755 examples/pl_usecases/AchimTest1.jav delete mode 100755 examples/pl_usecases/BoundedType.jav delete mode 100755 examples/pl_usecases/BoundedType1.jav delete mode 100755 examples/pl_usecases/BoundedType2.jav delete mode 100755 examples/pl_usecases/OL.jav delete mode 100755 examples/pl_usecases/OL2.jav delete mode 100755 examples/pl_usecases/Probleme delete mode 100755 examples/pl_usecases/SMatrix.jav delete mode 100755 examples/pl_usecases/Simple.jav delete mode 100755 examples/pl_usecases/UnifyTest1.jav delete mode 100755 examples/pl_usecases/UsecaseEight_pl.jav delete mode 100755 examples/pl_usecases/UsecaseFive_pl.jav delete mode 100755 examples/pl_usecases/UsecaseFour_pl.jav delete mode 100755 examples/pl_usecases/UsecaseNine_pl.jav delete mode 100755 examples/pl_usecases/UsecaseOne_pl.jav delete mode 100755 examples/pl_usecases/UsecaseSeven_pl.jav delete mode 100755 examples/pl_usecases/UsecaseSix_pl.jav delete mode 100755 examples/pl_usecases/UsecaseTen_pl.jav delete mode 100755 examples/pl_usecases/UsecaseThree_pl.jav delete mode 100755 examples/pl_usecases/UsecaseThree_pl.orig.java delete mode 100755 examples/pl_usecases/UsecaseTwo_pl.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest1.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest2.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest3.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest4.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest5.jav delete mode 100755 examples/pl_usecases/Usecase_MUBTest6.jav delete mode 100755 examples/pl_usecases/ZweiKlassen.jav delete mode 100755 examples/scju/Boxing.jav delete mode 100755 examples/scju/ClassGenerics.jav delete mode 100755 examples/scju/ClassKonstanten.jav delete mode 100755 examples/scju/FieldGenerics.jav delete mode 100755 examples/scju/InterfaceGenerics.jav delete mode 100755 examples/scju/InterfaceTest.jav delete mode 100755 examples/scju/MethodGenerics.jav delete mode 100755 examples/scju/SimpleMethodCall.jav delete mode 100755 examples/scju/testPackage/Test.jav delete mode 100644 lib/bcel-5.2-src.zip delete mode 100644 lib/bcel-5.2.jar delete mode 100644 lib/bcel-6.0-SNAPSHOT.jar delete mode 100755 log4j.xml delete mode 100755 notizen/Joerg_fragen delete mode 100755 notizen/bajo1/Fragen_und_Probleme.txt delete mode 100755 notizen/bajo1/Notizen_zur_Implementierung.txt delete mode 100755 notizen/bajo1/Theoretische_Erkenntnisse.txt delete mode 100755 notizen/bajo1/merge-to-do.txt delete mode 100755 notizen/hoti/Notizen.txt delete mode 100755 notizen/hoti/Timo Holzherr Statusbericht Typinferenz I.pdf delete mode 100755 notizen/pl/Packages delete mode 100755 notizen/pl/xxx delete mode 100755 notizen/pl/yPluemicke.output delete mode 100644 notizen/stan/lambdaBytecode/Fun0.java delete mode 100644 notizen/stan/lambdaBytecode/Fun1.java delete mode 100644 notizen/stan/lambdaBytecode/GenericTest.java delete mode 100644 notizen/stan/lambdaBytecode/Identity.java delete mode 100644 notizen/stan/lambdaBytecode/InnerClass.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda1.decompile delete mode 100644 notizen/stan/lambdaBytecode/Lambda1.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda2.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda3.decompile delete mode 100644 notizen/stan/lambdaBytecode/Lambda3.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda4.decompile delete mode 100644 notizen/stan/lambdaBytecode/Lambda4.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda5.java delete mode 100644 notizen/stan/lambdaBytecode/Lambda5Test.java delete mode 100644 notizen/stan/lambdaBytecode/Notizen.md delete mode 100644 notizen/stan/lambdaBytecode/Runnable.java delete mode 100644 notizen/stan/lambdaBytecode/Test.java delete mode 100644 notizen/stan/stackmaptable/IfElseStatement.java delete mode 100644 notizen/stan/stackmaptable/Notizen.md delete mode 100644 notizen/stan/stackmaptable/StackMapTest.java delete mode 100644 notizen/stan/stackmaptable/StackMapTest2.java delete mode 100644 notizen/stan/stackmaptable/StackMapTest3.java delete mode 100644 notizen/stan/stackmaptable/StackMapTest4.java delete mode 100644 notizen/stan/stackmaptable/StackMapTest5.java delete mode 100644 notizen/stf/Notes delete mode 100755 src/de/dhbwstuttgart/myexception/CTypeReconstructionException.java delete mode 100755 src/de/dhbwstuttgart/myexception/JVMCodeException.java delete mode 100755 src/de/dhbwstuttgart/myexception/MatchException.java delete mode 100644 src/de/dhbwstuttgart/myexception/NotImplementedException.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCClassBodyException.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCClassException.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCExcept.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCException.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCMethodException.java delete mode 100755 src/de/dhbwstuttgart/myexception/SCStatementException.java diff --git a/.classpath b/.classpath old mode 100755 new mode 100644 index ea96f442c..bfd82db24 --- a/.classpath +++ b/.classpath @@ -1,14 +1,10 @@ - - - - + - - + diff --git a/.cvsignore b/.cvsignore deleted file mode 100755 index c9c3ce750..000000000 --- a/.cvsignore +++ /dev/null @@ -1,12 +0,0 @@ -bin -*.class -output* -JavaLexer.java -JavaParser.java -*.~*~ -*.aux -*.dvi -*.log -y.output -Bytecode -JavaParserBuilder.launch \ No newline at end of file diff --git a/.externalToolBuilders/JavaParserBuilder.launch b/.externalToolBuilders/JavaParserBuilder.launch deleted file mode 100755 index 8e4b330b5..000000000 --- a/.externalToolBuilders/JavaParserBuilder.launch +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 905ecb009..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfb..000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.project b/.project old mode 100755 new mode 100644 index dcf58c69e..792f8088b --- a/.project +++ b/.project @@ -5,20 +5,6 @@ - - org.eclipse.ui.externaltools.ExternalToolBuilder - clean,full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/JavaParserBuilder.launch - - - incclean - true - - - org.eclipse.jdt.core.javabuilder diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs deleted file mode 100644 index 82c36afe4..000000000 --- a/.settings/com.google.gwt.eclipse.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -filesCopiedToWebInfLib= diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100755 index 1f0adda88..000000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/de/dhbwstuttgart/core/MyCompiler.java=UTF-8 -encoding//src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java=UTF-8 -encoding//src/de/dhbwstuttgart/typeinference/UndConstraint.java=UTF-8 -encoding//src/de/dhbwstuttgart/typeinference/UnifySingleConstraint.java=UTF-8 -encoding//src/de/dhbwstuttgart/typeinference/UnifyUndConstraint.java=UTF-8 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs old mode 100755 new mode 100644 index 552a5c961..3a2153707 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,13 +1,11 @@ -eclipse.preferences.version=1 -instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true -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 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +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 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100755 index 417c0eda0..000000000 --- a/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Jul 27 10:21:29 CEST 2008 -eclipse.preferences.version=1 -instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true -internal.default.compliance=default diff --git a/JavaCompilerCore.iml b/JavaCompilerCore.iml deleted file mode 100644 index cb1e69708..000000000 --- a/JavaCompilerCore.iml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Papers/FMCO2005/main.bbl b/Papers/FMCO2005/main.bbl deleted file mode 100755 index 06ce9deab..000000000 --- a/Papers/FMCO2005/main.bbl +++ /dev/null @@ -1,76 +0,0 @@ -\begin{thebibliography}{CMP00} - -\bibitem[B{\"a}u05]{JB05} -J{\"o}rg B{\"a}uerle. -\newblock {\em Typinferenz in \textsf{Java}}. -\newblock Studienarbeit, BA Stuttgart/Horb, 2005. -\newblock (in german). - -\bibitem[CMP00]{CMP2000} -Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. -\newblock {\em D\'eveloppement d'applications avec Objective Caml}. -\newblock O'Reilly, avril 2000. -\newblock in french, translation http://caml.inria.fr/oreilly-book. - -\bibitem[Lit98]{VL98} -Vassily Litvinov. -\newblock Constraint-based polymorphism in {Cecil}: Towards a practical and - static type system. -\newblock In {\em {OOPSLA} '98 Conference Proceedings}, volume 33(10), pages - 388--411, 1998. - -\bibitem[Mel05]{MM05} -Markus Melzer. -\newblock {\em Integration der \textsf{Java}--Typeinferenz in eine - Programmierumgebung}. -\newblock Studienarbeit, BA Stuttgart/Horb, 2005. -\newblock Studienarbeit (in german). - -\bibitem[Ode02]{MO02} -Martin Odersky. -\newblock Inferred type instantiation for {GJ}. -\newblock Note sent to the types mailing list, January 2002. - -\bibitem[Ott04]{TO04} -Thomas Ott. -\newblock {\em Typinferenz in \textsf{Java}}. -\newblock Studienarbeit, BA Stuttgart/Horb, 2004. -\newblock (in german). - -\bibitem[OZZ01]{OZZ01} -Martin Odersky, Christoph Zenger, and Matthias Zenger. -\newblock Colored local type inference. -\newblock {\em ACM SIG{\-}PLAN Notices}, 36(3):41--53, 2001. - -\bibitem[PC94]{PC94} -John Plevyak and Andrew~A. Chien. -\newblock Precise concrete type inference for object-oriented languages. -\newblock In {\em Proceedings of the ninth annual conference on Object-oriented - programming systems, language, and applications}, pages 324--340. ACM Press, - 1994. - -\bibitem[Pl{\"u}04]{Plue04_1} -Martin Pl{\"u}micke. -\newblock Type unification in \textsf{Generic--Java}. -\newblock In Michael Kohlhase, editor, {\em Proceedings of 18th {I}nternational - {W}orkshop on {U}nification ({U}{N}{I}{F}'04)}, July 2004. -\newblock {\tt http://www.faculty.iu-bremen.de/mkohlhase/event/unif04}. - -\bibitem[PS91]{PS91} -Jens Palsberg and Michael~I. Schwartzbach. -\newblock Object-oriented type inference. -\newblock {\em Proceedings of OOPSLA'91, ACM SIGPLAN Sixth Annual Conference on - Object-Oriented Programming Systems, Languages and Applications}, pages - 146--161, October 1991. - -\bibitem[PS94]{PS94} -Jens Palsberg and Michael~I. Schwartzbach. -\newblock {\em Object-oriented type systems}. -\newblock John Wiley \& Sons, 1994. - -\bibitem[PT00]{PT00} -Benjamin~C. Pierce and David~N. Turner. -\newblock Local type inference. -\newblock {\em ACM Trans. Program. Lang. Syst.}, 22(1):1--44, 2000. - -\end{thebibliography} diff --git a/Papers/FMCO2005/main.dvi b/Papers/FMCO2005/main.dvi deleted file mode 100755 index eda59ca64c1c69042e6036ea45c18ce01d54be07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12008 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 B{0IO5 diff --git a/Papers/FMCO2005/main.tex b/Papers/FMCO2005/main.tex deleted file mode 100755 index e6dd92b04..000000000 --- a/Papers/FMCO2005/main.tex +++ /dev/null @@ -1,140 +0,0 @@ -\documentclass[11pt]{article} -\setlength{\unitlength}{1 true cm} -\setlength{\oddsidemargin}{0 true mm} -\setlength{\evensidemargin}{\oddsidemargin} -\setlength{\textwidth}{160 true mm} -\setlength{\parindent}{5 true mm} -\setlength{\topmargin}{1 true mm} -\setlength{\headheight}{12 true pt} -\setlength{\headsep}{20 true pt} -\setlength{\textheight}{240 true mm} -\setlength{\footskip}{15 true mm} -\setlength{\voffset}{-10 true mm} -%\setlength{\footheight}{5 true mm} - -\usepackage{prolog} - -\title{Type--Inference in \javafive} -\author{J\"org B\"auerle, Markus Melzer, Martin Pl\"umicke\medskip\\ -\small -University of Cooperative Education Stuttgart\\ - %Department of Information Technology\\ - %Florianstra{\ss}e 15\\ - %D--72160 Horb\\ - %tel. +49-7451-521142\\ - %fax. +49-7451-521190\\ -\small m.pluemicke@ba-horb.de -} - - -\begin{document} -\bibliographystyle{alpha} -\maketitle -\section{Overview} -We have developed for \javafive a type inference system. This means that the -user can write programs without any type annotations and the system determines -the correct types. We have implemented a prototype for this -system. Furthermore we have implemented a plugin for the integrated development -environment \eclipse. - -\section{The Type Inference Algorithm} -Since then type inference in \oldjava similar languages is known as the -automatic parameter instantiation in polymorphic methods (local type inference) -\cite{PT00,OZZ01,MO02}. It is proved that this type inference is -unsound. Some techniques are presented, which solve these unsoundness. - -We extend these approaches to a global variant, where additionally -the types of method parameters, methods' return types and the -types of local variables are determined automatically. The input of the algorithm -are only the types of the fields of the respective classes. - -The type inference algorithm traverses the programming code as an abstract syntax -tree and forms sets of type inequations. As it is known that even the local -type inference is unsound, it is obvious that our approach is also unsound. We -deal with this problem, as we allow different type assumptions for the -parameters, the return type, the local variables, and the expressions of each -method, respectively. During traversing the set of type assumptions is adapted, such -that the set contains exactly the assumptions, which are possible assumptions at -the respective position during the traverse. The adaption is done by solving the -inequations as far as possible by a type unification algorithm -\cite{Plue04_1}. The type unification is not unitary but finitary. This means -that each unification step reduces the set of type assumptions if there is no -solution for one set of inequations. On the other hand the set of type assumptions is extended, if -there is more than one solution for a set of inequations. - -The result of the type inference algorithm is the set of all correct -combinations of types of the parameters, the return type, and the local -variables. - -After the type inference step during the compilation, there are two possibilities. Either for each -combination of types of each method, byte code could be built, -respectively. This would lead to the property that method names, which are -declared only once, could be overloaded. -On the other hand one combination could -be selected. Then, for this combination of types byte code would be built. We -implemented the second possibility (cp. section \ref{sec:IDE}). - -Furthermore, we have done comparisons to other type inference -approaches. We considered the -type system of \textsf{Cecil} \cite{VL98}, which is a static type system -providing type checking and local type inference. Furthermore we considered a -type system for a language oriented at \textsf{Smalltalk} \cite{PS91, - PS94}. In this approach the types are computed by a least fixed point derivation. -In \cite{PC94} type inference for the language \textsf{Concurrent Aggregates} is -described, which contains a data flow analysis. Finally, we considered the type -system of \textsf{ocaml} \cite{CMP2000}. The approach of this type system -differs from our's, as \textsf{ocaml} allows higher-order functions. - -\section{Implementation} -We have done the implementation in \oldjava. The implementation consists of two -parts. First we describe the implementation of the type unification -algorithm. Then we present the implementation of the actual type inference via -code traverse. - -\subsection{Type Unification} -The implementation of the type unification \cite{TO04} contains as the main -datastructure a Menge of type term pairs. The algorithm itself is -implemented as an extension of the usual unification algorithm. Pairs of -the form $a \olsub ty$ respectively $ty \olsub a$, where $a$ is a variable and -$ty$ is a term but no variable, generate multiple solutions. - -\subsection{Type Inference} -The idea of the implementation of the actual type inference algorithm -\cite{JB05} is that each construct in a \javafive program (method, parameter, -return type, variable, -expression) get first a variable as its type assumption. Then, for each variable a -type is determined by the algorithm. - -There are two main datastructures. -The first one represents type assumptions for methods, fields, and -variables. During runtime a set of instances of this -datastructure represent the different possibilities of type assumptions. The -second main datastructure represents the substitutions of the variables to types, -calculated step by step. - -During runtime each construct of the abstract syntax tree is registered -as a listener by the corresponding type variable. These registrations finally allow -to substitute the variables in the abstract syntax tree by the -calculated types. - -\section{Integrated Development Environment (IDE)} -\label{sec:IDE} -For \javafive without explicite type declaration a plugin for \eclipse is -developed \cite{MM05}. The IDE allows to show all different correct -possibilities to give types to the methods, parameters, return types, and local -variables, which are determined by the type inference algorithm. Then, the user -can select the favored type for each construct step by step. Finally, the -selected types are substituted in the respective constructs of the abstract syntax -tree. - -\section{Summary and Outlook} -We have developed a system, which allows to give typeless \javafive -programs. The system calculates the correct types. The soundness problem is -solved such that all different possibilities are determined and the user -himself decides, which type should be used. - -In the moment only a subset of \javafive is implemented. Interfaces and -F--bounded type parameters are not implemented yet. This should be done -henceforth. -\bibliography{martin,SE} -\end{document} diff --git a/Papers/FMCO2005/martin.bib b/Papers/FMCO2005/martin.bib deleted file mode 100755 index 49705f64a..000000000 --- a/Papers/FMCO2005/martin.bib +++ /dev/null @@ -1,2310 +0,0 @@ -Inhalt: ------- -- Algebraische Spezification -- Informatik -- Compilerbau -- Funktionale Programmierung -- Imperative Programmierung -- OO -- JAVA -- Logik -- OS-Algebra -- Semantik -- Typen -- symbolischer Rechnen -- Rechnerarchitektur und Betriebssysteme -- XML/HTML -- RDF -- Textverarbeitung -- Software-Engineering (SE.bib) -- Geschäftsprozesse (siehe GP.bib ) -- Internet - -Algebraische Spezification --------------------------- - -@book{Gr79, - title={Universal Algebra}, - author={G. Gr{\"a}tzer}, - publisher={Springer-Verlag, New York}, - note={second edition}, - year=1979} - -@Book{ABC02, - author = {Hans-Jürgen Appelrath and Dietrich Boles and Volker Claus}, - title = {Starthilfe Informatik}, - publisher = {Teubner}, - year = {2002} -} - -@book{Kl83, - author={Herbert Klaeren}, - title={Algebraische {Spezifikation} --- {Eine} {Einf\"uhrung}}, - publisher={Springer Verlag}, - series={Lehrbuch Informatik}, - year=1983, - address={Berlin, Heidelberg, New York}} - -@Inbook{Kl831, - author={Herbert Klaeren}, - title={Algebraische {Spezifikation} --- {Eine} {Einf\"uhrung}}, - publisher={Springer Verlag}, - series={Lehrbuch Informatik}, - year=1983, - address={Berlin, Heidelberg, New York}, - chapter={6} -} - -@book{EM85, - title={Fundamentals of Algebraic Specification 1}, - author={H. Ehrig and B. Mahr}, - publisher={Springer-Verlag, Berlin}, - volume={6}, - year={1985}, - series={EATCS Monographs on Theoretical Computer Science}} - -@incollection{Wi90, - author = "M. Wirsing", - title = "{Algebraic Specifications}", - booktitle = "Handbook of Theoretical Computer Science, Volume {\bf B}", - publisher = "Elsevier Science Publishers B.V.", - editor = "J. van Leeuwen", - pages = "675-788", - chapter = "13", - year = "1990" -} - - -Informatik ----------- - -@book{Kl91, - author = {Klaeren, Herbert}, - title = { Vom Problem zum Programm: Eine Einf\"uhrung in die Informatik }, - publisher = { Teubner }, - year = 1991, - edition = {2., neubearbeitete und erweiterte Auflage}, -} - -@book{Klsp01, - author = {Klaeren, Herbert and Sperber, Michael}, - title = { Vom Problem zum Programm Architektur und Bedeutung von Computerprogrammen}, - publisher = { Teubner }, - year = 2001, - edition = {3., neubearbeitete und erweiterte {A}uflage}, -} - - -@Book{Sch2000, - author = {Schoening, Uwe}, - title = { Logik f\"ur Informatiker }, - publisher = { Spektrum Akademischer Verlag }, - year = 2000, - edition = {5. Auflage}, - annote = {automatisch generiert} -} - - - -@Book{No95, - author = {Noltenmeier, H.}, - title = {Einf\"uhrung in Algorithmen und Berechenbarkeit}, - publisher = {Hanser}, - year = {} -} - - -@Book{DP95, - author = {D\"orler and Peschek}, - title = {Einf\"uhrung in die {M}athematik f\"ur {I}nformatiker}, - publisher = {Hanser}, - year = {}, -} - - - -@Book{Wi00, - author = {Niklaus With}, - title = {Algorithmen und Datenstrukturen}, - publisher = {Teubner}, - year = {2000} -} - -@Book{Se92, - author = {Sedgewick, Robert}, - title = { Algorithmen in C }, - publisher = { Addison-Wesley }, - year = 1992, - address = {Bonn u.a.}, - edition = {1. Aufl.}, -} - -@Book{Se03, - author = {Sedgewick, Robert}, - title = {Algorithmen in Java}, - publisher = { Addison-Wesley }, - year = {2003} -} - - -@Book{OW90, - author = {Ottmann, Thomas and Widmayer, Peter}, - title = { Algorithmen und Datenstrukturen }, - publisher = { BI-Wiss.-Verl. }, - year = 1990, - series = {Reihe Informatik}, - address = {Mannheim u.a.}, -} - -@Book{OW02, - author = {Ottmann, Thomas and Widmayer, Peter}, - title = { Algorithmen und Datenstrukturen }, - publisher = { Spektrum akademischer Verlag }, - year = 2002 -} - -@Book{KuWe2000, - author = {K\"uchlin, Wolfgang and Weber, Andreas}, - title = {Einf\"uhrung in die Informatik Objektorientiert mit Java}, - publisher = {Springer-Verlag}, - year = {2000}, -} - -Compilerbau ------------ - -@misc{Spe94, - author={Michael Sperber}, - title={M\ork: a generater for preprocessors}, - howpublished={Universit"at T"ubingen}, - note={Diplomarbeit}, - year={1994}} - -@techreport{go92, - author={John Gough}, - title={The {D}-Code Compiler Front-end {GP2D}}, - publisher={Attempto-Verlag, Universität Tübingen}, - institution={Wilhelm-Schickard-Institut}, - year={1992}, - volume={WSI-92-2}} - -@misc{kl95, - author={Herbert Klaeren}, - title={{"U}bersetzung einer einfachen {P}rogrammiersprache}, - note={Vorlesungsskript}, - year={1995}} - -@book{WG84, - author = "W. M. Waite and G. Goos", - title = "Compiler Construction", - publisher = "Springer-Verlag", - address = "Berlin, Germany", - year = "1984"} - -@book{WM92, - author={Reinhard Wilhelm and Dieter Maurer}, - title={"Ubersetzerbau}, - edition = {2. Auflage}, - publisher={Springer-Verlag}, - year={1992}} - -@book{ASU86, - author={Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman}, - title={Compilers Principles, Techniques and Tools}, - publisher={Addison Wesley}, - year={1986}} - -@Book{ASU99_1, - author = {Aho, Alfred V. and Sethi, Ravi and Ullman, Jeffrey D.}, - title = {Compilerbau, 1. Teil}, - publisher = {Oldenburg}, - edition = {2. Auflage}, - year = {1999} -} - -@Book{ASU99_2, - author = {Aho, Alfred V. and Sethi, Ravi and Ullman, Jeffrey D.}, - title = {Compilerbau, 2. Teil}, - publisher = {Oldenburg}, - edition = {2. Auflage}, - year = {1999} -} - -@Book{HU04, - author = {Hedtst"uck}, - title = {Theoretische Informatik}, - publisher = {Oldenburg}, - year = {2004}, - edition = {3. Auflage} -} - -@Book{LMB92, - author = {von Levine, John R. and Mason, Tony and Brown, Doug}, - title = {Lex \& yacc, UNIX Programming Tools. A Nutshell-Handbook}, - publisher = {O'Reilly Associates}, - year = {1992}, - edition = {2nd} -} - -@TechReport{kuesch991, - author = {Bernd K\"uhl and Axel-Tobias Schreiner}, - title = {jay -- Compiler bauen mit yacc und Java}, - institution = {Fachbereich Mathematik/Informatik, Universit\"at Osnabr\"uck}, - year = {1999}, - note = {(in german)} -} - -@Article{kuesch992, - author = {Bernd K\"uhl and Axel-Tobias Schreiner}, - title = {jay -- {C}ompiler bauen mit {Y}acc und {J}ava}, - journal = {iX}, - year = {1999}, - note = {(in german)} -} - - - -@Manual{Be97, - title = {JLex: A lexical analyzer generator for Java(TM)}, - author = {Elliot Berk}, - edition = {1.2}, - month = {October}, - year = {1997} -} - -Funktionale Programmierung --------------------------- - -@BOOK{MiTH90, - AUTHOR = {Milner, Robin and Tofte, Mads and Harper, Robert} , - TITLE = {The definition of Standard ML}, - YEAR = {1990} , - PUBLISHER = {MIT Press, Cambridge, Mass.} , - SERIES = {} , - VOLUME = {} , - ISBN = {0-262-13255-9} , - ISSN = {} , - REPORT = {} , - POINTER = {Bib.d.Info. F.3.2}, - CATEGORY = {} , - KEYWORDS = {} , - ENTRY = {es} , - ABSTRACT = {} -} -@Book{MR97, - author = {Milner, Robin}, - title = { The definition of Standard ML (Revised) }, - publisher = { MIT Press }, - year = 1997, - address = {Cambridge, Mass.}, - annote = {automatisch generiert} -} - - - - -@Book{CMP2000, - author = {Emmanuel Chailloux and Pascal Manoury and Bruno Pagano}, - title = {D\'eveloppement d'applications avec Objective Caml}, - publisher = {O'Reilly}, - year = {2000}, - month = {avril}, - note = {in french, translation http://caml.inria.fr/oreilly-book} -} - -@TECHREPORT{BMS80, - AUTHOR= "Rod M. Burstall and Dave B. MacQueen and Don T. Sannella", - TITLE = "HOPE---An Experimental Applicative Language", - INSTITUTION="University of Edinburgh, Dept. of Computer Science", - NUMBER="CSR-62-80", - YEAR=1980} - -@BOOK{PT94, - AUTHOR = {Peter Thiemann} , - TITLE = {Grundlagen der funktionalen {P}rogrammierung} , - YEAR = {1994}, - PUBLISHER = {Teubner} -} - - -@InBook{PT941, - AUTHOR = {Peter Thiemann} , - TITLE = {Grundlagen der funktionalen {P}rogrammierung} , - YEAR = {1994}, - PUBLISHER = {Teubner}, - chapter = {11.2} -} - -@Book{Wik87, - author = {\AA ke Wikstr\"om}, - title = "{F}unctional {P}rogramming {U}sing {S}tandard {ML}", - publisher = "{P}rentice {H}all", - year = "1987" -} - -@inproceedings{Tu86, - author="D. A. Turner", - title="Miranda: {A} non-strict functional language with - polymorphic types", - booktitle="Proceedings Functional Programming Languages and Computer - Architecture, Nancy", - series={Lecture notes in computer science}, - volume=201, - pages="1--16", - publisher="Springer-Verlag", - year=1986} - - - - -@PhdThesis{Weh97, - author = "M. Wehr", - title = "???{O}verloading in {T}ype {T}heory???", - school = "University of Karlsruhe", - year = "1997", - OPTcrossref = "", - OPTkey = "", - OPTaddress = "", - OPTmonth = "", - OPTtype = "", - OPTnote = "", - OPTannote = "" -} - -@ARTICLE{haskell-r, - AUTHOR = {Paul Hudak and Simon {Peyton Jones} and Philip Wadler and others}, - TITLE = {Report on the Programming Language {Haskell}}, - JOURNAL = {SIGPLAN Notices}, - YEAR = 1992, - VOLUME = {27}, - NUMBER = {5}, - PAGES = {R1--R164} -} - - - - -@Booklet{haskell-1.3, - author = "John Peterson and Kevin Hammond and others", - title = "Report on the Programming Language {Haskell}, - Version 1.3", - year = "1996", - month = "May" -} - -@Booklet{haskell-1.4, - author = "John Peterson and Kevin Hammond and others", - title = "Report on the Programming Language {Haskell}, - Version 1.4", - year = "1997", - month = "April" -} - - - -@Booklet{haskell98, - title = {Haskell 98 Language and Libraries, The Revised Report}, - author = {Simon Peyton Jones [editor] and Lennart Augustsson and Dave Barton and Brian Boutel and Warren Burton and Joseph Fasel and Kevin Hammond and Ralf Hinze and Paul Hudak and John Hughes and Thomas Johnsson and Mark Jones and John Launchbury and Erik Meijer and John Peterson and Alastair Reid and Colin Runciman and Philip Wadler}, - month = {December}, - year = {2002} -} - -@Booklet{JO94, - title = "Gofer", - author = "Mark P. Jones", - month = "September", - year = "1994" -} - - -@Article{GKKMMW88, - author = "J. Goguen and C. Kirchner and H. Kirchner and - A. M\'{e}grelis and J. Meseguer and T. Wink\-ler ", - title = "An indroduction to {OBJ}--3", - journal = "Proceedings, Conference on Conditional Term - Rewriting, Lecture notes in computer science", - SERIES = {Lecture notes in computer science} , - publisher= "Springer-Verlag", - year = "1988", - volume = "308", - pages = "258-263" -} - -@incollection{KKM88, - title = {Operational Semantics of {OBJ--3}}, - author = {C. Kirchner and H. Kirchner and J. Meseguer}, - booktitle = {Proceedings, 15th International Colloquium on Automata, - Languages and Programming, Tampere, Finland, July 11-15, 1988}, - editor = {T. Lepist\"{o} and A. Salomaa}, - publisher = {Springer}, - pages = {287--301}, - year = 1988, - note = "Lecture Notes in Computer Science, Volume 317"} - - -@incollection(Go90, - title = "Higher-Order Functions Considered Unnecessary for Higher-Order - Programming", - author = "J. Goguen", - booktitle = "Research Topics in Functional Programming", - pages = "309-352", - editor = "David Turner", - publisher = "Addison-Wesley", - year = 1990, - note = "University of Texas at Austin Year of Programming Series; preliminary - version in SRI Technical Report SRI-CSL-88-1, January 1988") - -@book{Kl91a, - author={Herbert Klaeren}, - title={Efficient Implementation of a Functional Programming - Language}, - publisher={Springer-Verlag}, - note={preliminary draft}, - year={27. Februar 1991}} - -@Article{lg97, - author = "Luqi and Joseph A. Goguen", - title = "Formal Methods: Promises and Problems", - journal = "IEEE Software", - year = 1997, - volume = 14, - number = 1, - pages = "73-85" -} - - - -@InProceedings{GoDi94, - author = {Joseph Goguen and R{\u{a}}zvan Diaconescu}, - title = {An Oxford survey of order-sorted algebras}, - booktitle = {Mathematical Structures in Computer Science}, - pages = {362--392}, - year = {1994}, - volume = {4}} - -Imperative Programmierung -------------------------- - -@BOOK{JW75, - AUTHOR = {K. Jensen and N. Wirth}, - TITLE = {Pascal User Manual and Report}, - EDITION = {3rd}, - YEAR = {1976,1985}, - PUBLISHER = {Springer-Verlag}} - -@Book{JW74, - author = {Jensen, Kathleen and Wirth, Niklaus}, - title = { PASCAL. User Manual and Report }, - publisher = { Springer }, - year = 1974, - series = {Lecture notes in computer science, Bd. 18(S10)}, - address = {Berlin } -} - - -@Book{JKW85, - author = {Jensen, Kathleen and Wirth, Niklaus and Mickel, Andrew B.}, - title = { Pascal user manual and report : rev. for the ISO Pascal standard }, - publisher = { Springer }, - year = 1985, - address = {New York}, - edition = {3rd}, - note = {revised by Andrew B. Mickel and James F. Miner} -} - -@Book{HP87, - author = {Herschel, Rudolf and Pieper, Friedrich}, - title = { PASCAL und PASCAL-Systeme : systematische Darstellung f{\"u}r den Anwender }, - publisher = { Oldenbourg }, - year = 1987, - series = {Reihe Datenverarbeitung}, - address = {Muenchen, Wien}, - note = {6. verbesserte Auflage} -} - -@Book{Br86, - author = {Brauer, Klaus}, - title = { Programmieren mit FORTRAN 77 }, - publisher = { Huethig }, - year = 1986, - address = {Heidelberg}, - annote = {automatisch generiert} -} - - -@Book{Bu91, - author = {Budd, Timothy}, - title = { An introduction to object-oriented programming }, - publisher = { Addison-Wesley }, - year = 1991, - note = {Reprinted with corrections} -} - - -@Book{Mo94, - author = {Moessenboeck, Hanspeter}, - title = { Objektorientierte Programmierung in Oberon-2. Mit einem Geleitwort von Niklaus Wirth }, - publisher = { Springer }, - year = 1994, - address = {Berlin u.a.}, - note = {2. Auflage} - } - -@Book{KR88, - author = {Kernighan, Brian W. and Ritchie, Dennis M.}, - title = { The C programming language }, - publisher = { Prentice Hall }, - year = 1988, - series = {Prentice Hall software series}, - address = {Englewood Cliffs, NJ}, - edition = {2nd} -} - - - - -@Book{Wi88, - author = {Wirth, Niklaus}, - title = { Programming in Modula 2 }, - publisher = { Springer }, - year = 1988, - series = {Texts and monographs in computer science}, - address = {Berlin ; Heidelberg}, - edition = {4.} -} - -@Book{Bu91, - author = "Budd, Timothy", - title = "An {I}troduction to {O}bject--{O}riented {P}rogramming", - publisher = "Addison-Wesley", - year = "1991" -} - -@BOOK{Str91, - Author = {Bjarne Stroustrup}, - Title = {The C++ Programming Language}, - Publisher = {Addison-Wesley}, - Address = {Reading, MA}, - Edition = {2nd}, - Year = 1991, - ISBN = {0-201-53992-6}, - LC = {QA76.73.C15S79 1991}} - -@book{Me92, - author = "B. Meyer", - title = "Eiffel: {T}he language", - publisher = "Prentice Hall International", - year = "1992" } - - -@Book{Be86, - author = {Belli, Fevzi}, - title = { Einf{\"u}hrung in die logische Programmierung mit PROLOG }, - publisher = { Bibliographisches Institut }, - year = 1986, - series = {BI-Hochschultaschenb{\"u}cher}, - address = {Mannheim u.a.} -} - - -OO -------------------------- -@Article{DI81, - author = {Daniel H. H., Ingalls}, - title = {Design {P}rinciples {B}ehind {S}malltalk}, - journal = {{BYTE} Magazine}, - year = {1981}, - note = {\texttt{http://users.ipa.net/\~{ }dwighth/smalltalk/byte\_aug81/} \texttt{design\_principles\_behind\_smalltalk.html}}, - month = {August} -} - -@Book{AC93, - author = {Chien, Andrew A.}, - title = {Concurrent {A}ggregates: {S}upporting {M}odularity in {M}assivly--{P}arallel {P}rograms}, - publisher = {MIT Press, Cambridge}, - year = {1993} -} - - - -@TechReport{CKPZ93, - author = {Chien, Andrew A. and Karamcheti, Vijay and Plevyak, John and Zhang, Xingbin}, - title = {Concurrent aggregates language report 2.0}, - institution = {University of Illinois at Urbana--Champaign, Department of Computer Science}, - year = {1993}, - note = {\texttt{http://www-csag.ucsd.edu/projects/concert/ca.html}} -} - -JAVA -------------------------- -@Book{AG96, - author = {Arnold, Ken and Gosling, James}, - title = { The Java programming language }, - publisher = { Addison-Wesley }, - year = 1996, - series = {The Java series} -} - -@Book{AG2001, - author = {Arnold, Ken and Gosling, James and Holmes, David }, - title = { The Java programming language }, - publisher = { Addison-Wesley }, - year = 2001, - edition = {3rd}, - series = {The Java series} -} - -@Book{GoJoStBr05, - author = {Gosling, James and Joy, Bill and Steele, Guy and Bracha, Gilad }, - title = "{The Java$^{TM}$ language specifacation }", - publisher = "Addison-Wesley", - edition = {3rd}, - year = 2005, - series = {The Java series} -} - - -@Book{Fl97, - author = {David Flanagan}, - title = {Java in a {N}utschell}, - publisher = {O'Reilly}, - year = {1997} -} - -@Book{Fl01, - author = {David Flanagan}, - title = {Java in a {N}utschell}, - publisher = {O'Reilly}, - edition = {3rd}, - year = {2001} -} - -@Book{Fl03, - author = {David Flanagan}, - title = {Java in a {N}utschell}, - publisher = {O'Reilly}, - edition = {4.}, - year = {2003} -} - -@Book{CU05, - author = {Christian Ullenboom}, - title = {Java ist auch eine Insel}, - publisher = {Galileo Computing}, - year = {2005}, - volume = {4.}, - note = {in german} -} - -@Book{LP96, - author = {Lemay, Laura and Perkins, Charles L.}, - title = { Java 1.1 in 21 Tagen }, - publisher = { SAMS Verlag }, - year = 1997, - address = {Haar bei M\"unchen} -} - -@Book{LC01, - author = {Lemay, Laura and Cadenhead, Rogers}, - title = { Java 2 in 21 Tagen }, - publisher = { SAMS Verlag }, - year = 2001, - address = {Haar bei M\"unchen} -} - -@Book{LC03, - author = {Lemay, Laura and Cadenhead, Rogers}, - title = { Java 2 in 21 Tagen }, - publisher = { SAMS Verlag }, - year = 2003, - address = {Haar bei M\"unchen}, - edition = {4.} -} - - -@Book{GoJoSt96, - author = "Gosling, James and Joy, Bill and Steele, Guy", - title = "{The Java language specifacation }", - publisher = "Addison-Wesley", - year = 1996, - series = {The Java series}, -} - - - -@article{DE97, - author = "Sophia Drossopoulou and Susan Eisenbach", - title = "{Java} is Type Safe --- Probably", - journal = "Lecture Notes in Computer Science", - volume = "1241", - pages = "389--??", - year = "1997", - url = "citeseer.ist.psu.edu/drossopoulou96java.html" } - - -@article{DEK99, - author = "Sophia Drossopoulou and Susan Eisenbach and Sarfraz Khurshid", - title = "Is the Java Type System Sound?", - journal = "Theory and Practice of Object Systems", - volume = "5", - number = "1", - pages = "3-24", - year = "1999", - url = "citeseer.ist.psu.edu/drossopoulou97is.html" } - - -@Book{BH98, - author = {Bauer and H\"ollerer}, - title = {\"Ubersetzung Objekt-orientierter Programmiersprachen}, - publisher = {Springer-Verlag}, - year = {1998}, - note = {(in german)} -} - - -@inproceedings{BOSW98, - author = "Gilad Bracha and Martin Odersky and David Stoutamire and Philip Wadler", - title = "Making the Future Safe for the Past: Adding Genericity to the {Java} Programming Language", - booktitle = "{ACM} {S}ymposium on {O}bject {O}riented {P}rogramming: {S}ystems, {L}anguages, and {A}pplications ({OOPSLA})", - address = "Vancouver, BC", - editor = "Craig Chambers", - pages = "183--200", - year = "1998", - url = "citeseer.ist.psu.edu/bracha98making.html" } - -@Manual{OP982, - author = {Gilad Bracha and Martin Odersky and David Stoutamire and Philip Wadler}, - title = {G{J}: {E}xtending the {J}ava {P}rogramming {L}anguage with type parameters}, - year = {1998} -} - -@Manual{OP981, - author = {Gilad Bracha and Martin Odersky and David Stoutamire and Philip Wadler}, - title = {G{J} {S}pecification}, - year = {1998} -} - - -@Article{IPW99, - author = {Atsushi Igarashi and Benjamin Pierce and Philip Wadler}, - title = {Featherweight Java: A Minimal Core Calculus for Java and {GJ}}, - journal = {Proceedings of the 1999 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages \& Applications (OOPSLA`99)}, - year = {1999} -} - -@Article{OP01, - author = {Gilad Bracha and Norman Cohen and Christian Kemper and Steve Marx and Martin Odersky and Sven-Eric Panitz and David Stoutamire Kresten Thorup and Philip Wadler}, - title = {Adding {G}enerice to the {J}ava {P}rogramming {L}anguage: {P}articipant {D}raft {S}pecification}, - journal = {\texttt{http://java.sun.com}}, - year = {2001} -} - -@Misc{MO02, - author = {Martin Odersky}, - title = {Inferred Type Instantiation for {GJ}}, - howpublished = {Note sent to the types mailing list}, - month = {January}, - year = 2002 -} - -@Article{au04, - author = {Calvin Austin}, - title = {{J2SE} 1.5 in a Nutshell}, - journal = {\tt http://java.sun.com/\-developer/\-technicalArticles/\-releases/\-j2se15 \rm}, - year = {2004}, - month = {February} -} - - -@Book{GHJV94, - author = {Gamma, E. and Helm, R. and Johnson, R. and Vlissides, J.}, - title = {Design Patterns -- Microarchitectures for Reusable Object-Oriented Software}, - publisher = { Addison-Wesley, Reading}, - year = {1994} -} - - -@article{OHo95, - author = "Atsushi Ohori", - title = "A Polymorphic Record Calculus and Its Compilation", - journal = "ACM Transactions on Programming Languages and Systems", - volume = "17", - number = "6", - month = "November", - publisher = "ACM Press", - pages = "844--895", - year = "1995", - url = "citeseer.ist.psu.edu/ohori95polymorphic.html" } - -Logik ------ - -@BOOK{Bar84, - AUTHOR = {Barendregt, Hendrik P.} , - TITLE = {{The lambda calculus : {I}ts syntax and semantics}} , - YEAR = {1984} , - PUBLISHER = {North-Holland, Amsterdam} , - SERIES = {Studies in logic and the foundations of mathematics} , - VOLUME = {} , - ISBN = {0-444-86748-1} , - ISSN = {} , - REPORT = {} , - POINTER = {Bib.d.Info. F.4.1}, - CATEGORY = {} , - KEYWORDS = {} , - ENTRY = {es} , - ABSTRACT = {} -} - -OS-Algebra ----------- - -@article{Gog78, - author={J. A. Goguen}, - title={Order sorted algebras: {E}xception and {E}rror {S}orts, {C}oercions and {O}verloaded {O}perators}, - journal={Semantics and Theory of Computation Report}, - volume=14, - year={1978}} - - -@TechReport{Gog83, - author = "Martin Gogolla", - title = "Algebraic Specifications with Partially Ordered - Sorts and Declarations", - institution = "Univerisit{\"a}t Dortmund, Abteilung Informatik", - year = "1983" -} - -@Inproceedings{ Gog84, - Author = { M. Gogolla }, - Title = { Pa{rti}a{lly} {Ordered} {Sorts} {in} {Algebr}a{ic} - {Specific}a{tions} }, - Booktitle = { Proc. 9th CAAP, Bordeaux }, - Pages = { 139-154 }, - Year = { 1984 } } - Gibt es in unserer Bibliothek nicht. - - -@Article{FGJM85, - author = "K. Futatsugi and J. Goguen and J.-P. Jouannaud and - J. Meseguer", - title = "{P}rinciples of {OBJ}--2", - journal = "Proceedings, 12th ACM Symposium on Principles of - Programming Languages", - year = "1985", - pages = "52--66", - note = "Association for Computing Machinery" -} - -@article{GJM85, - author={J. A. Goguen and J.-P. Jouannaud and J. Meseguer}, - title={Operational semantics of order-sorted algebras}, - journal={Proc. Twelfth International EATCS Colloquium on Automata, Languages and Programming}, - volume=19, - year=1985, - pages={221-231}} - - - - - -@InProceedings{SS86, - author = "M. Schmidt-Schau{\ss{}}", - title = "Unification in many-sorted equational theories", - booktitle = "Proceedings of the 8th Conference on Automated Deduction", - year = "1986", - pages = "538--552", - editor = "J. H. Siekmann", - address = "Oxford" -} - - - -@Book{SS89, - author = {Manfred Schmidt-Schau{\ss{}}}, - title = {{C}omputational {A}spects of an {O}rder-{S}orted {L}ogic with {T}erm {D}eclarations}, - publisher = {Springer-Verlag}, - year = {1989}, - volume = {395}, - series = {LNCS} -} - -@Article{Gan91, - author = "H. Ganzinger", - title = "Order-sorted completion the many-sorted way", - journal = "Theoretical Computer Science", - year = "1991", - volume = "89", - pages = "3--32" -} - - -@Article{GS88, - author = "Gert Smolka", - title = "Logic programming with polymorphically order-sorted types", - journal = "Proc. First {I}nternational {W}orkshop on {A}lgebraic - and {L}ogic {P}rogramming, Springer-Verlag", - year = "1988", - volume = "{LNCS} 343", - pages = "53--70", - note = "Gaussig, {GDR}" -} - -@phdthesis{GS89, - author = "Gert Smolka", - title = "Logic Programming over Polymorphically Order-Sorted Types", - school = {Department Informatik, University of Kaisers\-lautern}, - address = {Kaiserslautern, Germany}, - month = may, - year = 1989 -} - - - - -@Article{MH91, - author = "Michael Hanus", - title = "Parametric order-sorted types in logic programming", - journal = "Proc. TAPSOFT 1991", - year = "1991", - volume = "LNCS", - number = "394", - pages = "181--200" -} - - - -@InProceedings{CB90, - author = "Christoph Beierle", - title = "Types, {M}odules and {D}atabases in the {L}ogic - {P}rogramming {L}anguage {PROTOS-L}", - editor = "K.H. Bl{\"a}sius and U. Hendtst{\"u}ck and C.-R. Rollinger", - volume = "418", - pages = "73--110", - booktitle = "Sort and {T}ypes in {A}rtificial {I}ntelligence", - year = "1990", - publisher = "Springer-Verlag Berlin", - note = "Proceedings of the workshop, Eringerfeld, April 1989" -} - -@Article{CB92, - author = "Christoph Beierle", - title = "Logic programming with typed unification and its - realization on an abstract machine", - journal = "IBM Journal of Research and Development", - year = "1992", - volume = "36", - number = "3", - pages = "375--390", - month = "May" -} - - -@INCOLLECTION{SNGM89, - Author ={Smolka, Gert - and Nutt, Werner and Goguen, Joseph A. and Meseguer, Jos{\'e} }, - Title ={Order-Sorted Equational Computation}, - Pages ={297--367}, - Type ={Chapter}, - Chapter = 10, - Booktitle = {Resolution of Equations in Algebraic Structures, Volume~2}, - Editor = {A{\"\i}t-Kaci, Hassan and Nivat, Maurice}, - Publisher = {Academic Press}, - Year = 1989, - Klasse = {Algebraische Spezifikation, Unifikation, Verschiedenes}, - Bemerkung={ }, - Kopiert ={x}, - Sa ={IUn}, - Sb ={IV}, - Eingabedatum = {05.09.1991}, - Aenderungsdatum = {05.12.1991} - } - - - -@TechReport{Wa90, - author = "U. Waldmann", - title = "Unitary Unification in {O}rder-sorted {S}ignatures", - institution = "Universit{\"a}t Dortmund", - year = "1989 (Revised Version 1990)", - number = "Forschungsbericht 298" -} - -@TechReport{GoMe89, - author = "J. A. Goguen and J. Meseguer", - title = "Order-Sorted Algebras {I}: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations", - institution = "SRI International", - year = "1989", - month = "July" -} - -@InProceedings{GoMe92, - author = "J. A. Goguen and J. Meseguer", - title = "Order-Sorted Algebras {I}: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations", - booktitle = {Theoretical Computer Science}, - year = "1992", - month = "November", - pages = "217--273", - volume = {105(2)} -} - - -@article{MGS89, - author={J. Meseguer and J. A. Goguen and G. Smolka}, - title={Order-Sorted Unification}, - journal={Journal of Symbolic Computation}, - volume=8, - year=1989, - pages={383-413}} - - -@Manual{GWMFJ93, - author = "J. A. Goguen and T. Winkler and J. Meseguer and - K. Futatsugi and J.-P. Jouannaud", - title = "Introducing OBJ", - year = "1993", - month = "October" -} - - -@Misc{Plue93, - author = "Martin Pl{\"u}micke", - title = "Ordnungs-sortierte {A}lgebren als {G}rundlage f{\"u}r {S}emantik und {T}yp\-sys\-tem - einer algebraischen {S}pezifikationssprache", - howpublished = "Universität Tübingen", - year = "1993", - month = "Oktober", - note = "Diplomarbeit" -} - -@techreport{Plue94, - author={Martin Pl{\"u}micke}, - title={Ordnungs-sortierte {A}lgebren als {G}rundlage f{\"u}r {S}emantik und {T}yp\-sys\-tem - einer algebraischen {S}pezifikationssprache}, - institution={Universit{\"a}t T{\"u}bingen, Wilhelm-Schickard-Institut}, - year={1994}, - number={WSI-94-7} -} - -@TechReport{PK95, - author = "Martin Pl{\"u}micke and Herbert Klaeren", - title = "Concepts for Overloading and Subtyping in an Algebraic Specification Language", - institution = "University of T{\"u}bingen, Wilhelm-Schickard-Institut", - year = "1995", - number = "WSI-95-22" -} - -@TechReport{Pluekl94, - author={Martin Pl{\"u}micke and Herbert Klaeren}, - title={Subtyping and Overloading in a Functional Programming - Language}, - institution = "University of T{\"u}bingen, Wilhelm-Schickard-Institut", - year={1994}, - number={WSI-94-14} -} - -@inproceedings{plue942, - author={Martin Pl{\"u}micke}, - title={Subtyping and Overloading in a Functional Programming - Language}, - booktitle={GI-Workshop, Alternative Konzepte für Sprachen und Rechner Bad - Honnef 1994}, - year={1994}, - editor={F.Simon}, - pages={99-104}, - month={september} -} - - - -@InProceedings{plue972, - author = {Martin Pl{\"u}micke}, - title = {Complete polymorphic order-sorted unification}, - booktitle = {Programming Languages and Fundamentals of Programming}, - pages = {272--286}, - year = {1997}, - editor = {Rudolf Berghammer and Friedemann Simon}, - OPTseries = {Bericht}, - number = {9717}, - month = {November}, - note = {9th colloquium}, - organization = {Christian--Albrechts--Universit{\"a}t, Kiel} -} - - - -@InProceedings{plue981, - author = {Martin Pl{\"u}micke}, - title = {Type {I}nference in \textsf{OBJ--P}}, - booktitle = {Workshop On Functional and Logic Programming Proceedings}, - year = {1998}, - editor = {Herbert Kuchen}, - number = {63}, - organization = {Westf{\"a}lische Wilhelms--Universit{\"a}t, M{\"u}nster}, - note = {7th International Workshop} -} - -@PhdThesis{plue982, - author = {Martin Pl{\"u}micke}, - title = {{\sf OBJ--P} {T}he {P}olymorphic {E}xtension of {\sf OBJ--3}}, - school = {University of Tuebingen}, - year = {1999}, - address = {WSI-99-4} - } - - - - -@InBook{plue98232, - author = {Martin Pl{\"u}micke}, - title = {{\sf OBJ--P} {T}he {P}olymorphic {E}xtension of {\sf OBJ--3}}, - chapter = {3.6}, - publisher = {PhD thesis, University of Tuebingen}, - year = {1999}, - volume = {WSI-99-4} -} - -@InProceedings{plue99, - author = "M. Pl{\"u}micke", - title = {Polymorphism in \textsf {OBJ--P}}, - booktitle = "Perspectives of {S}ystem {I}nformatics, Preliminary Proceedings", - year = "1999", - organization = "Akademgorodok, Novosibirsk, Russia", - month = "July" -} - -@InProceedings{plue991, - author = "Martin Pl{\"u}micke", - title = {Polymorphism in \textsf {OBJ--P}}, - booktitle = "Perspectives of {S}ystem {I}nformatics, Proceedings", - publisher = "Springer--Verlag", - year = "1999", - pages = {148--153}, - volume = {{LNCS} 1755}, - series = {{L}ecture {N}otes of {C}omputer {S}cience} -} - - - - -@InProceedings{Plue04_1, - author = {Martin Pl{\"u}micke}, - title = {Type Unification in \textsf{Generic--Java}}, - booktitle = {Proceedings of 18th {I}nternational {W}orkshop on {U}nification ({U}{N}{I}{F}'04)}, - year = {2004}, - editor = {Michael Kohlhase}, - month = {July}, - note = {{\tt http://www.faculty.iu-bremen.de/mkohlhase/event/unif04}} -} - - -@Manual{TO04, - author = {Thomas Ott}, - title = {Typinferenz in \textsf{Java}}, - organization = {Studienarbeit, BA Stuttgart/Horb}, - year = {2004}, - note = {(in german)} -} - -@Manual{JB05, - author = {J{\"o}rg B{\"a}uerle}, - title = {Typinferenz in \textsf{Java}}, - organization = {Studienarbeit, BA Stuttgart/Horb}, - year = {2005}, - note = {(in german)} -} - -@Manual{MM05, - author = {Markus Melzer}, - title = {Integration der \textsf{Java}--Typeinferenz in eine Programmierumgebung}, - organization = {Studienarbeit, BA Stuttgart/Horb}, - year = {2005}, - note = {Studienarbeit (in german)} -} - -@Article{Qia94, - author = "Zhenyu Qian", - title = "Another Look at Parameterization Of Order-Sorted - Algebraic Specifications", - journal = "Journal of Computer and System Sciences", - year = "1994", - volume = "49", - pages = "620--666" -} - -@inproceedings{plue95, - author={Martin Pl{\"u}micke}, - title={Semantics and Implementation of a Functional Programming Language with - Subtypes and Overloading}, - booktitle={Alternative Konzepte für Sprachen und Rechner Bad - Honnef 1995}, - year={1995}, - editor={J. Ebert}, - OPTnote={to appear} -} - - -@InProceedings{Plue96, - author = "M. Pl{\"u}micke and H. Klaeren and E. Hiti", - title = "Resolving of {O}verloading and {S}ubtyping", - pages = "286--291", - booktitle = "Perspectives of {S}ystem {I}nformatics, Preliminary Proceedings", - year = "1996", - organization = "Akademgorodok, Novosibirsk, Russia", - month = "June" -} - - - - -@TechReport{PS97, - author = "Martin Pl{\"u}micke and Christoph Schmitz", - title = "Polymorphically order-sorted types in {OBJ--3}", - institution = "University of T{\"u}bingen, Wilhelm-Schickard-Institut", - year = "1997", - number = "WSI-97-1" -} - - - -@TechReport{Plue97, - author = "Martin Pl{\"u}micke", - title = "Parametric Polymorphism in {OBJ--3}", - institution = "University of T{\"u}bingen, Wilhelm-Schickard-Institut", - year = "1997", - number = "WSI-97-2" -} - -@Unpublished{Plue962, - author = "Martin Pl{\"u}micke", - title = "Polymorphic {O}rder--{S}orted {S}ignatures with - {T}ype {V}ariables as {S}ubtypes", - note = "to appear" -} - -@InProceedings{Wa85, - author = "Christoph Walther", - title = "Unification in Many-sorted Theories", - editor = "T. O'Shea", - pages = "383-392", - booktitle = "Advances in Artificial Intelligence -- Proceedings, - Sixth European Conference on Artificial Intelligence", - year = "1985", - publisher = "North Holland" -} - -@INPROCEEDINGS{Erw93, -AUTHOR = "Erwig, M.", -TITLE = "Specifying Type Systems with Multi-Level Order-Sorted Algebra", -YEAR = "1993", -BOOKTITLE = "3rd Int. Conf. on Algebraic Methodology and Software -Technology", -SERIES = "", -PAGES = "177--184"} - -@INPROCEEDINGS{PT93, -AUTHOR = "Thiemann, Peter", -TITLE = "{A}n {O}verview of the {SODA} System", -YEAR = "1993", -BOOKTITLE = "3rd Int. Conf. on Algebraic Methodology and Software -Technology", -SERIES = "", -PAGES = "185--192"} - - -@misc{plue04, - author = {Martin Pl{\"u}micke}, - title = {Type inference in {\sf Generic--Java}}, - year = {2004}, - annote = {(to appear)} - } - -Semantik --------- -@BOOK{Fe89, - AUTHOR = {Elfriede Fehr}, - TITLE = {Semantik von Programmiersprachen}, - PUBLISHER = {Springer}, - YEAR = {1989}} - -@BOOK{Sto89 , - AUTHOR = {Stoy, Joseph E.} , - TITLE = {{Denotational semantics: the Scott-Strachey approach to programming language theory }} , - YEAR = {1989} , - PUBLISHER = {MIT Press, Cambridge, Mass.} , - SERIES = {The MIT Press series in computer science} , - VOLUME = {} , - ISBN = {0-262-69076-4} , - ISSN = {} , - REPORT = {} , - POINTER = {Bib.d.Info. F.3.2}, - CATEGORY = {} , - KEYWORDS = {} , - ENTRY = {es} , - ABSTRACT = {} -} - -Typen ------ - - -@Article{Hin69, - author = "R. Hindley", - title = "The principle type scheme of an object in - combinatory logic", - journal = "Trans. Am. Math. Soc. 146", - year = "1969", - pages = "29--60", - month = "December" -} - -@article{DM82, - author={Luis Damas and Robin Milner}, - title={Principal type-schemes for functional programs}, - journal={Proc. 9th Symposium on Principles of Programming Languages}, - year={1982}} - -@article{Lei83, - author={Daniel Leivant}, - title={Polymorphic type inference}, - journal={Proc. 10th Symposium on Principles of Programming Languages 1982}, - year={1983}} - -@article{Mil78, - author={Robin Milner}, - title={A theory of type polymorphism in programming}, - journal={Journal of Computer and System Sciences, 17}, - volume={17}, - pages={348-378}, - year={1978}} - - -@InProceedings{My84, - author = {A. Mycroft}, - title = {Polymorphic type schemes and recursive definitions}, - booktitle = {Proc. 6th Int. Conf. on Programming}, - year = {1984}, - volume = {LNCS 167} -} - -@misc{Hin89, - author={Ralf Hinze}, - title={Typsysteme und {T}ypinferenzsysteme}, - howpublished={Universit{\"a}t Dortmund}, - note={Diplomarbeit}, - year={1989}} - -@BOOK{Jone90 , - AUTHOR = {Jones, Neil D.} , - TITLE = {{Proceedings }} , - YEAR = {1990} , - PUBLISHER = {Springer, Berlin ; Heidelberg} , - SERIES = {Lecture notes in computer science} , - VOLUME = {} , - ISBN = {3-540-52592-0} , - ISSN = {} , - REPORT = {} , - POINTER = {Bib.d.Info. D.2.0}, - CATEGORY = {} , - KEYWORDS = {} , - ENTRY = {es} , - ABSTRACT = {} -} -@article{SK88, - Author = {Kaes, Stefan}, - Title = {Parametric Overloading in Polymorphic Programming Languages}, - journal = "ESOP~'88", - Series ={LNCS}, - Volume = {LNCS~300}, - year = "1988", - Pages = {131--144}} - -@Inproceedings{Kae88, - crossref = {ESOP88}, - Author = {Kaes, Stefan}, - Title = {Parametric Overloading in Polymorphic Programming Languages}, - Pages = {131--144}, - kopiert = {x}, - Eingabedatum = {04.03.1991} - } - - -@Article{FM88, - author = "Fuh, You-Chin and Mishra, Prateek", - title = "Type Inference with Subtypes", - journal = "Proceedings 2nd European Symposium on Programming - ({ESOP '88})", - year = "1988", - pages = "94--114" -} - -@Inproceedings{FuhMishra88, - crossref = {ESOP88}, - Author ={Fuh, You-Chin - and Mishra, Prateek }, - Title ={Type Inference with Subtypes}, - Pages ={94--114}, - Bemerkung = {Enthaelt Fehler (siehe WandKeefe; Thattish ...)}, - } - -@PROCEEDINGS{ESOP88, - Booktitle = {Proceedings 2nd European Symposium on Programming - ({ESOP~'88})}, - title = {Proceedings 2nd European Symposium on Programming - ({ESOP '88})}, - Editor = {H. Ganzinger}, - Year = 1988, - Month = mar, - Series ={Lecture Notes in Computer Science}, - Volume = 300, - Address ={Nancy, France}, - Publisher={Springer-Verlag}, - IBIB = {D.2.0}, - Eingabedatum = {03.04.1992} - } - -@Article{FM90, - Author ={Fuh, You-Chin - and Mishra, Prateek }, - Title ={Type Inference with Subtypes}, - Journal ={Theoretical Computer Science}, - Volume = 73, - Year = 1990, - Pages ={155--175}} - - - -@InProceedings{NS91, - author = {T. Nipkow and G. Snelting}, - title = {Type classes and overloading resolving via order-sorted unification}, - booktitle = {Proceedings of the 5th ACM Conference on Functional Programming Languages -and Computer Architecture}, - editor = {Hughes}, - volume = {523}, - publisher = {Springer-Verlag}, - year = {1991}, - series = {LNCS} -} - -@Article{Mit91, - author = "John C. Mitchell", - title = "Type inference with simple subtypes", - journal = "Journal of Functional Programming", - year = "1991", - volume = "1", - number = "3", - pages = "245--285" -} - -@InProceedings{WaBl89, - author = "Philip Wadler and Stephan Blott", - title = "How to make \textit{ad-hoc} polymorphism less - \textit{ad-hoc}", - year = "1989", - OPTcrossref = "", - OPTkey = "", - OPTeditor = "", - OPTvolume = "", - OPTnumber = "", - OPTseries = "", - pages = "60--76", - booktitle = "Conf. Record of the 16th ACM Annual Symposium on - Principles of Programming Languages", - OPTyear = "", - OPTorganization = "", - OPTpublisher = "", - OPTaddress = "", - OPTmonth = "January", - OPTnote = "", - OPTannote = "" -} - -@Article{CW85, - Author ={Cardelli, Luca - and Wegner, Peter }, - Title ={On Understanding Types, Data Abstraction and Polymorphism}, - Journal ={ACM Computing Surveys}, - Volume = 17, - Number = 4, - Year = 1985, - Pages ={470--522}, - Klasse = {Datentypen, existentielle Datentypen}, - Bemerkung={"Bounded Fun" - }, - Kopiert ={x}, - Sa ={IDaEx}, - Sb ={IDaTH}, - Eingabedatum = {30.11.1990}, - Aenderungsdatum = { } - } - - - - -@InProceedings{VS91, - author = "Dennis M. Volpano and Geoffrey S. Smith", - title = "On the Complexity of ML Typability with Overloading", - booktitle = {Proceedings of the 5th ACM Conference on Functional Programming Languages -and Computer Architecture}, - editor = {Hughes}, - volume = {523}, - publisher = {Springer-Verlag}, - year = {1991}, - series = "LNCS" -} - - - -@InProceedings{OWW95, - author = "Martin Odersky and Philip Wadler and Martin Wehr", - title = "A Second Look at Overloading", - booktitle = {Conference Record of Conference on Functional Programming Languages and Computer Architecture}, - pages = {135--146}, - year = {1995}, - address = {La Jolla, California}, - month = {June}, - publisher = {ACM Press} -} - -@Article{OSW99, - author = {Martin Odersky and Martin Sulzmann and Martin Wehr}, - title = {Type Inference with Constrained Types}, - journal = {TAPOS}, - year = 1999, - volume = 5, - number = 1 -} - -@InProceedings{OW97, - author = {Martin Odersky and Philip Wadler}, - title = {{P}izza into {J}ava: Translating theory into practice}, - booktitle = {Proceedings of the 24th ACM Symposium on Principles of Programming Languages}, - year = {1997}, - month = {January} -} - - -@Article{ORW00, - author = {Martin Odersky and Enno Runne and Philip Wadler.}, - title = {Two {W}ays to {B}ake {Y}our {P}izza -- {T}ranslating {P}arameterised {T}ypes into {J}ava}, - journal = {Proceedings of a Dagstuhl Seminar, Springer Lecture Notes in Computer Science}, - year = {2000}, - volume = {1766}, - pages = {114--132}, -} - - -@InProceedings{CHO92, - author = {Kung Chen and Paul Hudak and Martin Odersky}, - title = {Parametric type classes}, - booktitle = {Proceedings ACM Conference ob Lisp and Functional Programming}, - year = {1992}, - month = {June}, - pages = {170--181} -} - - -@InProceedings{Kae92, - author = {Stefan Kaes}, - title = {Type inference in the presence of overloading, subtyping, and recusive types}, - booktitle = {Proceedings ACM Conference on Lisp and Functional Programming Languages}, - pages = {193--204}, - year = {1992}, - month = {June} -} - -@InProceedings{Jo93, - author = {Mark P. Jones}, - title = {A system of constructor classes: {O}verloading and implicite higher-order -polymorphism}, - booktitle = {Proceedings of the ACM Conference on Functional Programming Languages -and Computer Architecture}, - address = {Copenhagen, Denmark}, - pages = {52--61}, - year = {1993}, - month = {June} -} - -@InProceedings{He88, - author = {Fritz Henglein}, - title = {Type inference and semi-unification}, - booktitle = {Proceedings ACM Conference ob Lisp and Functional Programming}, - year = {1988}, - address = {New Yourk}, - month = {July} -} - -@InProceedings{KTU90, - author = "A.J. Kfoury and J. Tiuryn and P. Urzyczyn", - title = "The undecidablity of the semi-unification problem", - booktitle = "Proceedings 22nd Annual ACM Symposium on Theory of Computation (STOC)", - address = "Baltimore, Maryland", - year = "1990", - pages = "468--476", - month = "May" -} - - -@InProceedings{He93, - author = "Fritz Henglein", - title = "Type Inference with {P}olymorphic {R}ecursion", - booktitle = {ACM Transactions on {P}rogramming {L}anguages and {S}ystems ({TOPLAS})}, - pages = {253--289}, - year = {1993}, - volume = {15(2)}, - month = {April} -} - -@Article{LY98, - author = {Oukseh Lee and Kwangkeun Yi}, - title = {Proofs {A}bout {A} {F}olklore {L}et-{P}olymorphic {T}ype {I}nference {A}lgorithm}, - journal = {ACM Transactions on {P}rogramming {L}anguages and {S}ystems ({TOPLAS})}, - year = {1998}, - note = {to appear} -} - -@Article{KTU93, - author = "A.J. Kfoury and J. Tiuryn and P. Urzyczyn", - title = "Type Reconstruction in the {P}resence of {P}olymorphic {R}ecursion", - journal = "ACM Transactions on Programming Languages and Systems", - year = "1993", - volume = "15", - number = "2", - month = "April" -} - - -@PhdThesis{We93, - author = {Andreas Weber}, - title = {Type {S}ystems for {C}omputer {A}lgebra}, - school = {University of T{\"u}bingen}, - year = {1993} -} - - - -@PhdThesis{Fr94, - author = {Tim Freeman}, - title = {Refinement {T}ypes of {ML}}, - school = {School of Compter Science, Carnegie Mellon University}, - year = {1994} -} - -@inproceedings{Mi84, - author = {John C. Mitchell}, - title = {Coercion and type inference}, - booktitle = {Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages}, - year = {1984}, - isbn = {0-89791-125-3}, - pages = {175--185}, - location = {Salt Lake City, Utah, United States}, - publisher = {ACM Press}, - } - -@inproceedings{Re85, - author = {J C Reynolds}, - title = {Three approaches to type structure}, - booktitle = {Proc. of the international joint conference on theory and practice of software development (TAPSOFT) Berlin, March 25-29, 1985 on Mathematical foundations of software development, Vol. 1: Colloquium on trees in algebra and programming (CAAP'85)}, - year = {1985}, - isbn = {0-387-15198-2}, - pages = {97--138}, - location = {Berlin, Germany}, - publisher = {Springer-Verlag New York, Inc.}, - } -@article{Ca88, - AUTHOR = {Luca Cardelli}, - TITLE = {A Semantics of Multiple Inheritance}, - JOURNAL = {Information and Computation}, - VOLUME = 76, - NUMBER = {2/3}, - MONTH = FEB # {/} # MAR, - YEAR = 1988, - PAGES = {138--164}, - DOCUMENTURL = {http://research.microsoft.com/Users/luca/Papers/Inheritance.A4.ps}, - ANOTE = {A revised version of the paper that appeared in the - 1984 Semantics of Data Types Symposium, LNCS 173, pages - 51--66. }, - url = {citeseer.ist.psu.edu/cardelli88semantics.html} } - -@inproceedings{PC94, - author = {John Plevyak and Andrew A. Chien}, - title = {Precise concrete type inference for object-oriented languages}, - booktitle = {Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications}, - year = {1994}, - isbn = {0-89791-688-3}, - pages = {324--340}, - location = {Portland, Oregon, United States}, - doi = {http://doi.acm.org/10.1145/191080.191130}, - publisher = {ACM Press}, - } - -@inproceedings{CCHOM89, - author = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell}, - title = {F-bounded polymorphism for object-oriented programming}, - booktitle = {Proceedings of the fourth international conference on Functional programming languages and computer architecture}, - year = {1989}, - isbn = {0-89791-328-0}, - pages = {273--280}, - location = {Imperial College, London, United Kingdom}, - doi = {http://doi.acm.org/10.1145/99370.99392}, - publisher = {ACM Press}, - } - -@inproceedings{CHC90, - author = {William R. Cook and Walter Hill and Peter S. Canning}, - title = {Inheritance is not subtyping}, - booktitle = {Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages}, - year = {1990}, - isbn = {0-89791-343-4}, - pages = {125--135}, - location = {San Francisco, California, United States}, - doi = {http://doi.acm.org/10.1145/96709.96721}, - publisher = {ACM Press}, - } - -@inproceedings{AW93, - author = "Alexander Aiken and Edward L. Wimmers", - title = "Type Inclusion Constraints and Type Inference", - booktitle = "Functional Programming Languages and Computer Architecture", - pages = "31-41", - year = "1993", - url = "citeseer.ist.psu.edu/aiken93type.html" } - -@Article{EST95, - author = {Jonathan Eifrig and Scott Smith and Valery Trifonov}, - title = {Type {I}nference for {R}ecursively {C}onstrained {T}ypes and its {A}pplication to {O}bject {O}riented {P}rogramming}, - journal = {Electronic Notes in Theoretical Computer Science}, - year = {1995}, - volume = {1} -} - -@Article{PS91, - author = {Jens Palsberg and Michael I. Schwartzbach}, - title = {Object-oriented type inference}, - journal = {Proceedings of OOPSLA'91, ACM SIGPLAN Sixth Annual Conference on Object-Oriented Programming Systems, Languages and Applications}, - year = {1991}, - pages = {146--161}, - month = {October} -} - - -@Article{PS92, - author = {Jens Palsberg and Michael I. Schwartzbach}, - title = {Safety analysis versus type inference for partial types}, - journal = {Information Processing Letters}, - year = {1992}, - volume = {43}, - pages = {175--180} -} - -@Article{OPS92, - author = {Nicholas Oxhoj and Jens Palsberg and Michael I. Schwartzbach}, - title = {Making type inference practical}, - journal = {Proceedings of ECOOP'92, Sixth European Conference on Object-Oriented Programming}, - year = {1992}, - volume = {LNCS 615}, - pages = {329--349}, - month = {July} -} - -@Book{PS94, - author = {Jens Palsberg and Michael I. Schwartzbach}, - title = {Object-oriented type systems}, - publisher = {John Wiley \& Sons}, - year = {1994} -} - -@Article{KPS94, - author = {Dexter Kozen and Jens Palsberg and Michael I. Schwartzbach}, - title = {Efficient inference of partial types}, - journal = {Journal of Computer and System Sciences}, - year = {1994}, - volume = {49}, - number = {2}, - pages = {306--324} -} - -@inproceedings{VL98, - author = "Vassily Litvinov", - title = "Constraint-Based Polymorphism in {Cecil}: Towards a Practical and Static Type System", - booktitle = "{OOPSLA} '98 Conference Proceedings", - volume = "33(10)", - pages = "388--411", - year = "1998", - url = "citeseer.ist.psu.edu/article/litvinov98constraintbased.html" } - - -@article{PT00, - author = {Benjamin C. Pierce and David N. Turner}, - title = {Local type inference}, - journal = {ACM Trans. Program. Lang. Syst.}, - volume = {22}, - number = {1}, - year = {2000}, - issn = {0164-0925}, - pages = {1--44}, - doi = {http://doi.acm.org/10.1145/345099.345100}, - publisher = {ACM Press}, - } - -@article{OZZ01, - author = "Martin Odersky and Christoph Zenger and Matthias Zenger", - title = "Colored local type inference", - journal = "ACM SIG{\-}PLAN Notices", - volume = "36", - number = "3", - pages = "41--53", - year = "2001", - url = "citeseer.ist.psu.edu/article/odersky01colored.html" } - - -@InBook{AA02, - author = {Andrew W. Appel}, - title = {Modern compiler implementation in Java}, - chapter = {16}, - publisher = {Cambridge University Press}, - year = {2002}, - pages = {354--386} -} - -symbolischer Rechnen --------------------- - -@Book{RV01, - editor = {Alan Robinson and Andrei Voronkov}, - title = {Handbook of {A}utomated {R}easoning}, - publisher = {Elsevier Science Publishers B.V.}, - year = {2001} -} - - - - -@InCollection{BS01, - author = {Franz Baader and Wayne Snyder}, - title = {Unification {T}heory}, - booktitle = {Handbook of {A}utomated {R}easoning}, - crossref = {RV01}, - pages = {447--533}, - chapter = {8} -} - -@InCollection{He30, - author = "J. Herbrand", - title = "Recherches sur la {T}h\'{e}orie de la - {D}\'{e}monstration (thesis)", - booktitle = "Logical {W}ritings", - year = "1930", - editor = "W. Goldfarb", - address = "Cambridge" -} - -@article{Rob65, - author={J. A. Robinson}, - title={A Machine-Oriented Logic Based on the Resolution Principle}, - journal={Journal of ACM}, - volume={12(1)}, - pages={23-41}, - month=Jan, - year={1965}} - - -@TechReport{MM76, - author = "A. Martelli and U. Montanari", - title = "Unification in {L}inear {T}ime and {S}pace, {A} - structured {P}resentation", - institution = "University of Pisa", - year = "1976", - number = "B76--16" -} - -@article{MM82, - author={A. Martelli and U. Montanari}, - title={An Efficient Unification Algorithm}, - journal={ACM Transactions on Programming Languages and Systems}, - volume={4}, - pages={258-282}, - year={1982}} - - - -@Article{Si89, - author = "J. Siekmann", - title = "Unification {T}heory", - journal = "J. Symbolic Computation", - year = "1989", - volume = "7", - pages = "207--274" -} - -@TechReport{CoLo90, - author = "George E. Collins and R{\"u}diger G. K. Loos", - title = "Specifications and {I}ndex of {SAC}--2 {A}lgorithms", - institution = "Wilhelm-Schickard-Institut", - year = "1990", - number = "WSI-90-4" -} - -@Manual{BuCo92, - title = "SACLIB User's Guide (version 1.0)", - author = "B. Buchberger and G. Collins and - M. Encarnac{$\acute{\rm o}$}n - and H. Hong and J. Johnson and W. Kran\-dick and - A. Mandache and A. Neubacher and H. Vielhaber", - year = "1992", - month = "September" -} - -@Article{Fo96, - author = "Jeroen Fokker", - title = "Explaining algebraic theory with functional programs" -} - - - -@Article{Ka, - author = "Jerzy Karczmarczuk", - title = "Function programming and Mathamatical Objects", - journal = "", - year = "", - volume = "", - number = "", - pages = "121--137" -} - - - -@Book{JeSu92, - author = {R. D. Jenks and R. S. Sutor}, - title = {{AXIOM}: The {S}cienttific {C}omputation {S}ystem}, - publisher = {Springer-Verlag}, - year = {1992}, - address = {New Yourk} -} - - - -@InProceedings{Je84, - author = {R. D. Jenks}, - title = {A primer: 11 keys to new {S}cratchpad}, - booktitle = {Proceedings Symposium on Symbolic and Algebraic Computation (EUROSAM 84)}, - pages = {123--147}, - year = {1984}, - editor = {J. Fitch}, - volume = {147}, - series = {LNCS}, - address = {Cambridge, England}, - month = {July}, - publisher = {Springer-Verlag} -} - -@Book{Leu90, - author = {Leeuwen, Jan van}, - title = { Handbook of theoretical computer science }, - publisher = { Elsevier }, - year = 1990, - volume = {Volume B: Formal models and semantics}, - address = {Amsterdam u.a.}, - annote = {automatisch generiert} -} - - -Rechnerarchitektur und Betriebssysteme --------------------------------------- - -@Article{BGN46, - author = {Burks, A. W. and Goldstine H. H. and von Neumann J.}, - title = {{P}reliminary {D}iscussion of the {L}ogical Design of an {E}lectronic {C}omputing {I}nstrument}, - journal = {U. S. Army Ordonance Dept. Report 1946}, - year = {1946} -} - - - -@Book{HP94, - author = {Hennessy, John. L. and Patterson, David A.}, - title = {Rechnerarchitektur}, - publisher = {Friedr. Vieweg \& Sohn Verlagsgesellschaft mbH, Braunschweig,/Wiesbaden}, - year = {1994} -} - -@Book{AT94, - author = {Tanenbaum, Andrew S.}, - title = { Moderne Betriebssysteme }, - publisher = { Hanser }, - year = 1994, - series = {Hanser Studienb{\"u}cher der Informatik}, - address = {M{\"u}nchen u.a.}, - annote = {automatisch generiert} -} - -@Book{AT95, - author = {Tanenbaum, Andrew S.}, - title = { Moderne Betriebssysteme }, - publisher = { Hanser }, - year = 1995, - series = {Hanser-Studienbuecher der Informatik}, - address = {Muenchen u.a.}, - edition = {2. verb. Aufl.}, - annote = {automatisch generiert} -} - - -@Article{Be65, - author = {Benes, V. E.}, - title = {Mathematical {T}heory of {C}onnecting {N}etworks and {T}elephone {T}raffic}, - journal = {Academic Press}, - year = {1965} -} - - -@Article{F72, - author = {Flynn, M. J.}, - title = {Some {C}omputer {O}rganizations and {T}heir {E}ffectiveness}, - journal = {IEEE Trans. on Computers}, - year = {1972}, - volume = {C--21}, - pages = {948 -- 960} -} - -@Book{SG98, - author = {Silberschatz, Abraham and Galvin, Peter B.}, - title = { Operating system concepts }, - publisher = { Addison-Wesley }, - year = 1998, - address = {Reading, Mass. u.a.}, - edition = {5. ed., reprint. with corr.}, - annote = {automatisch generiert} -} - -@Book{SGG00, - author = {Silberschatz, Abraham and Galvin, Peter B. and Gagne, Greg }, - title = { Applied Operating System Concepts }, - publisher = { Wiley and Sons }, - year = 2000, - edition = {First edition} -} - -@Book{ObVo87, - author = {Oberschelp, Walter and Vossen, Gottfried}, - title = { Rechneraufbau und Rechnerstrukturen }, - publisher = { Oldenbourg }, - year = 1987, - address = {Muenchen}, - edition = {2. Auflage} -} - - -@Book{He98, - author = {Herrmann, Paul}, - title = {Rechnerarchitektur Aufbau, Organisation und Implementierung}, - publisher = {Friedr. Vieweg \& Sohn Verlagsgesellschaft mbH, Braunschweig,/Wiesbaden}, - year = {1998} -} - -@Book{Eb88, - author = {Ebner, Dieter}, - title = { Technische Grundlagen der Informatik: Elektronik, Datenverarbeitung und Prozesssteuerung fuer Naturwissenschaftler u. Ingenieure }, - publisher = { Springer }, - year = 1988, - address = {Berlin, Heidelberg} -} - -@Book{Le92, - author = {Lewine, Donald A.}, - title = { POSIX programmer's guide : writing portable UNIX programs with the POSIX.1 standard }, - publisher = { O'Reilly }, - year = 1992, - address = {Sebastopol, CA}, - edition = {1. ed., minor corr.}, - annote = {automatisch generiert} -} - - -@book{CP89, - author = {Polze, Christoph}, - title = {Unix--Werkzeuge zur Programmentwicklung}, - publisher = {VEB Verlag Berlin}, - year = {1989} -} - - -@Book{KP86, - author = {Kernighan, Brian W. and Pike Rob}, - title = {Der Unix-Werkzeugkasten, Programmieren mit Unix}, - publisher = {Hanser}, - year = {1986} -} - - -@Book{MM85, - author = {Maas, Doris and Meith, Wolfgang H.}, - title = {Die Unix--Shell}, - publisher = {Springer--Verlag}, - year = {1985} -} - - -@Book{GoSt89, - author = {Staubach, Gottfried}, - title = {Unix--Werkzeuge zur Textmustererkennung}, - publisher = {Springer--Verlag}, - year = {1989} -} - - -@Book{SB01, - author = {H.-J. Siegert and U. Baumann}, - title = {Betriebssysteme}, - publisher = {Oldenbourg}, - year = {2001}, - volume = {5} -} - -XML/HTML ---- - -@Book{GoPr98, - author = {C.F. Goldfarb and P. Prescod}, - title = {The {XML} {H}andbook}, - publisher = {Prentice Hall}, - year = {1998}} - -@Book{GrQu99, - author = {I.S. Graham and L. Quin}, - title = {{XML} {S}pecification {G}uide}, - publisher = {John Wiley \& Sons, Inc.}, - year = {1999}} - -@Book{MuNe99, - author = {S. M\"unz and Wolfgang Nefzger}, - title = {HTML-4.0-Referenz}, - publisher = {Franzis--Verlag GmBH}, - year = {1999} -} - -RDF ---- -@Misc{RDF04, - author = {Dave Beckett}, - title = {{RDF/XML} {S}yntax {S}pecification}, - howpublished = {http://www.w3.org/TR/rdf-syntax-grammar}, - month = {February}, - year = {2004} -} - -@Misc{RDFS04, - author = {Dan Brickley and R.V. Guha}, - title = {{RDF} Vocabulary {D}escription {L}anguage 1.0: {RDF} Schema}, - howpublished = {http://www.w3.org/TR/rdf-schema}, - month = {February}, - year = {2004} -} - - -@Misc{OWL04, - author = {Peter F. Patel-Schneider and Patrick Hayes and Ian Horrocks}, - title = {{OWL} {W}eb {O}ntology {L}anguage, {S}emantics and {A}bstract {S}yntax}, - howpublished = {http://www.w3.org/TR/owl-semantics}, - month = {February}, - year = {2004} -} - -Textverarbeitung ----------------- - -@Book{GoMiSa94, - author = {M. Goossens and F. Mittelbach and A. Samarin}, - title = {The \LaTeX {C}ompanion}, - publisher = {Addison-Wesley}, - year = {1994} -} - - - -Internet --------- - -@Book{St94, - author = {Stevens, W. R.}, - title = { TCP/IP illustrated }, - publisher = { Addison-Wesley }, - year = 1994, - volume = {1. The protocols.}, - series = {Addison-Wesley professional computing series}, - address = {Reading, Mass. u.a.}, - annote = {automatisch generiert} -} - -@Book{SW95, - author = {Stevens, W. R. and Wright, Gary R.}, - title = { TCP/IP illustrated }, - publisher = { Addison-Wesley }, - year = 1995, - volume = {2. The Implementation.}, - series = {Addison-Wesley professional computing series}, - address = {Reading, Mass. u.a.}, - annote = {automatisch generiert} -} - -@Book{St96, - author = {Stevens, W. R.}, - title = { TCP/IP illustrated }, - publisher = { Addison-Wesley }, - year = 1996, - volume = {3. TCP for transactions, HTTP, NNTP,and the UNIX domain protocols.}, - series = {Addison-Wesley professional computing series}, - address = {Reading, Mass. u.a.}, - annote = {automatisch generiert} -} - - -@Book{Ta00, - author = {Tanenbaum, Andrew S.}, - title = { Computernetzwerke }, - publisher = { Pearson Studium }, - year = 2000, - series = {Informatik Kommunikation}, - address = {Muenchen}, - edition = {3. rev. Aufl.}, - annote = {automatisch generiert} -} - -@Book{Ny92, - editor = {Adrian Nye}, - title = {X protocol reference manual}, - publisher = {O'Reilly}, - year = {1992}, - edition = {2 ed.}, - volume = {0}, - series = {The definitive guides to the X window system} -} - - -@TechReport{Cl02, - author = {Jörn Clausen}, - title = {Internet--Protokolle}, - institution = {Universität Bielefeld}, - year = {2002}, - address = {http://www.techfak.uni-bielefeld.de/ags/pi/lehre/IProt01/} -} - -@Misc{RFC, - key = {RFC}, - title = {{R}{F}{C}}, - howpublished = {http://www.ietf.org/rfc.html} -} - -@TechReport{, - author = {}, - title = {}, - institution = {}, - year = {}, - OPTkey = {}, - OPTtype = {}, - OPTnumber = {}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} -} - diff --git a/Papers/FMCO2005/prolog.sty b/Papers/FMCO2005/prolog.sty deleted file mode 100755 index 6b0050d7c..000000000 --- a/Papers/FMCO2005/prolog.sty +++ /dev/null @@ -1,708 +0,0 @@ -\usepackage{float} -\usepackage{color} -\usepackage{xspace_spezial} -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{alltt} -\usepackage{fancybox} -\usepackage{stmaryrd} -\usepackage{verbatim} -\usepackage{epsfig} -\usepackage{multicol} -\newlength{\textwid} -\setlength{\textwid}{\textwidth} -\addtolength{\textwid}{-4ex} -\newlength{\textfighei} -\setlength{\textfighei}{\textheight} -\addtolength{\textfighei}{-10ex} -\DeclareSymbolFont{blackboard}{OT1}{bbm}{m}{sl} -\DeclareMathSymbol{\IR}{0}{blackboard}{"52} -\DeclareMathSymbol{\IN}{0}{blackboard}{"4E} -\DeclareMathSymbol{\IF}{0}{blackboard}{"46} -\DeclareMathSymbol{\IP}{0}{blackboard}{"50} -\DeclareMathSymbol{\IK}{0}{blackboard}{"4D} -\DeclareMathSymbol{\IZ}{0}{blackboard}{"5A} -\DeclareMathSymbol{\IQ}{0}{blackboard}{"51} -\DeclareMathSymbol{\IC}{0}{blackboard}{"43} -\parindent 0mm -\renewcommand{\unlhd}{<} -%\renewcommand{\lhd}{<\!\!|} -%\renewcommand{\rhd}{|\!\!>} -\definecolor{blue}{rgb}{0,0,1} -\definecolor{red}{rgb}{1,0,0} -\definecolor{green}{rgb}{0,1,0.3} -\definecolor{bluered}{rgb}{1,0,1} -\definecolor{bluegreen}{rgb}{1,0.3,0} -\newcommand{\red}[1]{\textcolor{red}{#1}} -\newcommand{\blue}[1]{\textcolor{blue}{#1}} -\newcommand{\green}[1]{\textcolor{green}{#1}} -\newcommand{\bluered}[1]{\textcolor{bluered}{#1}} -\newcommand{\bluegreen}[1]{\textcolor{bluegreen}{#1}} -\reversemarginpar -\newcommand{\commentary}[1]{\marginpar[\tiny #1]{\tiny #1}} -%\newcommand{\commentaryforKlaeren}[1]{\marginpar[\tiny #1]{\tiny #1}} -%\newcommand{\commentary}[1]{} -\newcommand{\commentaryforKlaeren}[1]{} -% -% figure - Einstellungen -% -\def\textfraction{0} -\def\topfraction{1.5} -\def\bottomfraction{1} -\def\floatpagefraction{1.0} -%\def\dbltopfraction{1} -%\def\dblfloatpagefraction{1.0} -\newcommand{\indexentry}[2]{\item[] #1 \dotfill #2\qquad\qquad\vspace{-0.8em}} -\newcommand{\sub}{\textrm{\,$\sqsubseteq$\,}\xspace} -\newcommand{\nsub}{\text{\,$\not\sqsubseteq$\,}\xspace} -\newcommand{\ecap}{\mbox{$\,\sqcap\,$}} -\newcommand{\ecup}{\mbox{$\,\sqcup\,$}} -\newcommand{\pre}{\mbox{$\,\preceq\,$}} -\newcommand{\botam}{{\{\, \bot,\ \amalg \,\}}\xspace} - -% -% Substitutions -% -\newcommand{\subst}{\textrm{$\expbf{subst}{\normaltset}$}} - -% -% Signaturen -% -\def\einf#1#2{\mbox{$(#1,~#2)$}\xspace} -\newcommand{\sig}{\einf{\normalbtermset}{\Theta}} -\newcommand{\typesig}{\einf{BTV}{TC}\xspace} -\newcommand{\einsig}{\einf{\normaltermset}{F}\xspace} -\newcommand{\msig}{\einsig} -\newcommand{\mssig}{\einf{\equivtermset}{F_{ms}}\xspace} -\newcommand{\ossig}{\einf{\normaltset, \sub}{F_{os}}\xspace} -\def\einfm#1#2{\langle #1,\ #2 \rangle} -%\def\pos#1#2{\einf{#1,\ \sqsubseteq}{#2}} -\def\pos#1#2#3{\einf{#1,\ #2}{#3}} -\def\posm#1#2{\pos{#1}{#2}} -\def\posSO#1{\pos{#1}{F}} -\def\posSIG#1{\pos{S}{#1}} -\newcommand{\posig}{\pos{\normaltset}{\olsub}{\Sigma}} -\newcommand{\posigM}{\pos{\normaltset}{\olsub}{M}} -%\newcommand{\posig}{\pos{S}{\Sigma}} -\newcommand{\overposig}{\pos{\overline{S}}{\overline{\Sigma}}} -\def\fsf#1#2#3{\mbox{$#1^{(#2,#3)}$}\xspace} -\def\Sigmaa#1#2{\fsf{F}{#1}{#2}\xspace} -\newcommand{\Sigmaws}{\Sigmaa{w}{s}} -\newcommand{\Sigmawt}{\Sigmaa{w}{\theta}} -\def\set#1{\{\,#1 \,\}} -\newcommand{\termset}[3]{\textrm{$\exp{#1_{#2}}{#3}$}\xspace} -\newcommand{\normaltset}{\termset{T}{\Theta}{TV}} -\newcommand{\normaltermset}{\termset{T}{\Theta}{TV}} -\newcommand{\normalbtermset}{\termset{T}{TC}{BTV}} -\newcommand{\equivtermset}{\textrm{$\exp{T_{\Theta_{\sim}}}{TV}$}\xspace} -\newcommand{\equiva}[1]{[#1]_{\sim}} -\newcommand{\popoSIG}[1]{\einf{\normaltset,~\sqsubseteq}{#1}} -\newcommand{\poposig}{\popoSIG{F}} -%\newcommand{\poss}{polymorphically order-sorted signature\xspace} -%\newcommand{\posa}{polymorphically order-sorted algebra\xspace} -\newcommand{\polyosalg}{\textrm{\rm \textbf{PolyOSAlg}$_{\SigO}$}} -\newcommand{\polyalg}{\textrm{\rm \textbf{PolyAlg}$_{\SigM}$}} -\newcommand{\SigO}{\textrm{$\Sigma_{\textit{os}}$}\xspace} -\newcommand{\FuO}{\textrm{$F$}\xspace} -\newcommand{\SigM}{\textrm{$\Sigma_{\textit{ms}}$}\xspace} -\newcommand{\FuM}{\textrm{$F$}\xspace} -\newcommand{\Sig}{\textrm{$\Sigma$}\xspace} -\newcommand{\SigE}{\textrm{$\Sigma_{\textit{ext}}$}\xspace} -\newcommand{\objprogram}{\textrm{$<\Sig, \, E>$}\xspace} - -% -% Algebren -% -\let\oldsqsubseteq=\sqsubseteq -\renewcommand{\sqsubseteq}{\leq} -\def\alg#1#2{\textrm{{\rm (}$#1;#2${\rm )}}\xspace} -\def\algm#1#2{(#1;#2)} -\def\algME#1{\alg{#1}{\alpha}} -\def\algABB#1{\alg{A}{#1}} -\def\algebra{\alg{A}{\alpha}} -\def\termalg{\mbox{$\algm{T_{\text{\rm posig}}}{\iota}$}} -\def\termalgm#1{\algm{T_{\text{#1}}}{\iota_{\text{#1}}}} -\def\OStermsetvar#1{\textrm{$T_{\SigO}#1$}\xspace} -\def\OStermset{\OStermsetvar{(V)}} -\def\OStset{\OStermsetvar{}\xspace} -\def\OStermsettypevar#1#2{\textrm{$T^{#1}_{\SigO}#2$}\xspace} -\def\OStermsettype#1{\OStermsettypevar{#1}{(V)}} -\def\ops{\exp{Ops}{A}} -\def\exp#1#2{#1(\,#2\,)\xspace} -%\def\exptt#1#2{\exp{\text{\tt #1}}{\text{\tt #2}}} -\def\exptt#1#2{\exp{\mbox{$\mathtt{#1}$}}{\mbox{$\mathtt{#2}$}}} -\def\expsyn#1#2{\exp{\syn{#1}}{\syn{#2}}} -\def\expbf#1#2{\exp{\text{\bf #1}}{#2}} -\def\expsf#1#2{\exp{\text{\sf #1}}{#2}} -\def\exptype#1#2{#1\textrm{{\tt <}}#2\textrm{{\tt >}}\xspace} -\def\exptypett#1#2{\mathtt{#1}\textrm{{\tt <}}\mathtt{#2}\textrm{{\tt >}}\xspace} -\def\smalltt#1{\texttt{\small #1}} -\def\term{\textrm{$\exp{f}{t_1, \ \ldots \ ,t_n}$}\xspace} -\def\hverbandm#1#2{\textrm{$(#1,~#2)$}} -\def\partord#1#2{\hverbandm{#1}{#2}\xspace} -\def\eval#1{eval_{\left<#1\right>}\xspace} -\def\evalA{$\eval{\algm{A}{\alpha}}$\xspace} -\def\la#1#2{\mbox{$\lambda#1.#2$}\xspace} -\def\set#1{\{\, #1 \,\}} - -\newcommand{\inletters}[1]{ - \ifx\the - first - \fi} - -%\newcommand{\olsub}{\textrm{$\, \ol{\sqsubseteq} \,$}\xspace} -\newcommand{\olsub}{\textrm{$\, \leq^\ast \,$}\xspace} -\newcommand{\olsubprime}{\textrm{$\, \ol{\sqsubseteq}' \,$}\xspace} -\newcommand{\nolsub}{\textrm{$\, \not\sqsubseteq^* \,$}\xspace} -\newcommand{\hverband}{\partord{S}{\sqsubseteq}\xspace} -\newcommand{\qverband}{\partord{\exp{\ol{T}_{\Theta}}{V}}{\olsub}} -\newcommand{\cloqverband}{\partord{\exp{T_{\Theta}}{V}}{\olsub}} -\newcommand{\hord}{\mbox{$(S,~\sqsubseteq)$}\xspace} -\def\einschr#1{|_{#1}} -%\newcommand{\lsem}{[\hspace*{-0.3ex}[} -%\newcommand{\rsem}{]\hspace*{-0.3ex}]} -\newcommand{\lsem}{\llbracket\hspace{.5ex}} -\newcommand{\rsem}{\hspace{.5ex}\rrbracket} -\newcommand{\lsemm}{\lsem} -\newcommand{\rsemm}{\rsem} -\newcommand{\semantic}[1]{\lsem #1 \rsem\xspace} -\newcommand{\ol}[1]{\overline{#1}} -\newcommand{\ul}[1]{\underline{#1}} -\newcommand{\dps}{\displaystyle} -\newcommand{\sema}[3]{{\cal #1}_{#2}\semantic{#3}} -\newcommand{\sem}[2]{\sema{#1}{}{#2}\xspace} - -% -% Programming languages -% - -\newcommand{\haskell}{\textsf{Haskell}\xspace} -\newcommand{\gofer}{\textsf{Gofer}\xspace} -\newcommand{\objp}{\mbox{\textsf{OBJ--P}}\xspace} -\newcommand{\java}{\mbox{\textsf{G--JAVA}}\xspace} -\newcommand{\oldjava}{\mbox{\textsf{JAVA}}\xspace} -\newcommand{\javafive}{\mbox{\textsf{JAVA 5.0}}\xspace} -\newcommand{\eclipse}{\mbox{\textsf{eclipse}}\xspace} -\newcommand{\pizza}{\mbox{\textsf{PIZZA}}\xspace} -\newcommand{\gj}{\mbox{\textsf{GJ}}\xspace} -\newcommand{\sml}{\mbox{\textsf{SML}}\xspace} -\newcommand{\ocaml}{\textsf{OCAML}} -\newcommand{\obj}{\mbox{\textsf{OBJ--3}}\xspace} -\newcommand{\objtwo}{\mbox{\textsf{OBJ--2}}\xspace} - -\def\pot#1{{\cal P}(\, #1 \,)\xspace} -\def\partf{\overset{\text{\tiny part}}{\longrightarrow}\xspace} -% -% Deduktionssystem -% -\newcommand{\byrule}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}} -\newcommand{\byruleok}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm \small #1}}}} -\newcommand{\byrulewb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}} -\newcommand{\byruleokwb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm \small #1}}}} -\newcommand{\byrulesli}[1]{\raisebox{3.0ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}} -\newcommand{\inter}[1]{\bigwedge \hspace{-.55em} \bigwedge_{#1}} - -% -% ARRAY WITH ARGUMENTS -% -\newcommand{\sarray}[2]{\begin{array}[t]{#1} #2 \end{array}} -\newcommand{\sarrayt}[2]{\begin{array}[t]{#1} #2 \end{array}} -\newcommand{\sarrayb}[2]{\begin{array}[b]{#1} #2 \end{array}} -\newcommand{\sarrayo}[2]{\begin{array}{#1} #2 \end{array}} - -% -% INFERENCE RULES -% -\newcommand{\byrulenew}[1]{\raisebox{2.1ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}} -\newcommand{\postcond}[1]{\raisebox{2.1ex}[0ex][0ex]{#1}} -\newcommand{\lef}[1]{\multicolumn{1}{@{}l}{#1}} -\newcommand{\ri}[1]{\multicolumn{1}{r@{}}{#1}} -\newcommand{\ce}[1]{\multicolumn{1}{@{}c}{#1}} -\newcommand{\axiom}[2]{\textrm{[}\textbf{\small #1}\textrm{]} & \lef{#2}} -\newcommand{\irule}[4]{& \sarray{c}{#2}\vspace{1ex}\\\cline{2-2} - \vspace{-2ex}\\ \byrulenew{#1} & \sarray{c}{#3} & \postcond{$#4$}} -\newcommand{\irulealign}[6]{& \sarray{#2}{#3}\vspace{1ex}\\\cline{2-2} - \vspace{-2ex}\\ \byrulenew{#1} & \sarray{#4}{#5} & \postcond{$#6$}} -\newenvironment{irules}{$\begin{array}{lcl}}{\end{array}$} - -% -% Kategorien -% -\newcommand{\funs}[1]{\mbox{$F^S_{ERR}$(\, #1 \,)}\xspace} -\newcommand{\funa}[1]{\mbox{$F^A_{ERR}$(\, #1 \,)}\xspace} -\newcommand{\funh}[1]{\mbox{$F^H_{ERR}(\, #1 \,)$}\xspace} - -% -% Typherleitungen -% -%\let\oldrhd=\rhd -%\newcommand{\rder}{\hspace*{0.5ex} \rhd_{\textrm{\tiny $\Sig$}} \hspace{0.5ex}} -\newcommand{\rder}{\hspace*{0.5ex} \rhd \hspace{0.5ex}} -%\newcommand{\lder}{\hspace*{0.5ex} \lhd_{\textrm{\tiny $\Sig$}} \hspace*{0.5ex}} -\newcommand{\lder}{\hspace*{0.5ex} \lhd \hspace*{0.5ex}} -\newcommand{\rderStmt}{\hspace*{0.5ex} \rhd_{Stmt} \hspace*{0.5ex}} -\newcommand{\rderExpr}{\hspace*{0.5ex} \rhd_{Expr} \hspace*{0.5ex}} -\newcommand{\rderIdent}{\hspace*{0.5ex} \rhd_{Id} \hspace*{0.5ex}} -\let\oldblacktriangleright=\blacktriangleright -%\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright_{\textsl{\tiny \hspace{-1ex}\Sig}}$}} -\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright$}} - -\newcommand{\newtheo}[3]{\newtheorem{#1}[defhalbordnung]{#2} - \begin{#1} {\rm #3} \label{#1} \end{#1}} -\newcommand{\der}[2]{\mbox{$#1 \rhd\ #2$}\xspace} -\newcommand{\derl}[2]{#1 \lhd_{\textrm{\tiny $\Sig$}} #2\xspace} -\newcommand{\derr}[2]{#1 \rhd_{\textrm{\tiny \hspace{-1ex}$\Sig$}} #2\xspace} -\newcommand{\derf}[3]{( \, #1, \, #2 \, ) \fder #3\xspace} - -\newcommand{\deri}[1]{\der{A}{K}{#1}\xspace} -\newcommand{\derif}[1]{\derf{A}{K}{D}{#1}\xspace} -\newcommand{\arity}[3]{\textrm{$\alpha^{(#1,#2)}_{#3}$}\xspace} -\newcommand{\coarity}[2]{\textrm{$\beta^{(#1,#2)}$}\xspace} -\newcommand{\sodaprg}{\textrm{$(\,\textsl{csig},\ D\,)$\xspace}} - -% -% Typen -% -\newcommand{\typ}[3]{\textrm{$ #1 \times \ldots \times #2 \rightarrow #3$}\xspace} -\newcommand{\syn}[1]{{\rm \texttt{\small #1}}} -\newcommand{\sigmatyp}{\typ{\sigma_1}{\sigma_n}{\sigma}\xspace} -\newcommand{\sigmadef}{\mbox{$\sigma_1 \times \ldots \times \sigma_n$}\xspace} -\newcommand{\tautyp}{\typ{\tau_1}{\tau_n}{\tau}\xspace} -\newcommand{\tautypsup}[1]{\typ{\tau^{#1}_1}{\tau^{#1}_n}{\tau^{#1}}\xspace} -\newcommand{\taudef}{\mbox{$\tau_1 \times \ldots \times \tau_n$}\xspace} -\newcommand{\thetatyp}{\typ{\theta_1}{\theta_n}{\theta_0}\xspace} -\newcommand{\type}{\text{$\text{TYPE}(\,S,\ V\,)$}\xspace} -\newcommand{\typea}{\text{$\text{TYPE}_T(\,S,\ V\,)$}\xspace} -\newcommand{\ptype}{{\rm \expsf{Type}{\normalbtermset}}\xspace} -\newcommand{\ptypea}{\text{$\text{TYPE}_T(\,\Theta,\ V\,)$}\xspace} -\newcommand{\types}{\text{$\text{TYPE}_s(\,S,\ \Gamma\,)$}\xspace} - -\newcommand{\epsbox}[2]{ - %\begin{center} - \setlength{\fboxsep}{4mm} - \fbox{\epsfxsize=#1 \epsfbox{#2}} - %\end{center} - } - -\newcommand{\epsxybox}[3]{ - \begin{minipage}[t]{#1} - \setlength{\fboxsep}{4mm} - \fbox{\epsfysize=#2 \epsfbox{#3}} - \end{minipage}} - -\newenvironment{program}{\begin{alltt}\small} - {\normalsize\end{alltt}\vspace*{-1em}} -\floatstyle{plain} -\newfloat{soda}{htp}{lop} -\floatname{soda}{SODA-Program} - -%\sodaprog -% 1. width -% 2. figure -% 3. file -\newcommand{\sodaprog}[3]{ - \begin{figure}%[#2] - %\begin{center} - \begin{Sbox} - \begin{minipage}{#1} - \small - \begin{alltt} - \verbatiminput{#3.soda} - \end{alltt} - \normalsize - \end{minipage} - \end{Sbox} - \setlength{\fboxsep}{2mm} - \fbox{\TheSbox} - %\end{center} - \caption{SODA module \texttt{#3}} - \label{fig:#3} - \end{figure} - } - -% -% Theorem -% -\newcommand{\QED}{\rule{1.1ex}{1.1ex}} -%\newenvironment{proof}{\par \bigskip \noindent {\bf Proof:} -% }{\mbox{ } \hfill \QED \par \smallskip} -%\newenvironment{remark}{\par \bigskip \noindent {\bf Remark} -% }{\par \smallskip} -%\newtheorem{definition}{Definition}[section] -%\newtheorem{example}[definition]{Example} -%\newtheorem{theorem}[definition]{Theorem} -%\newtheorem{corollary}[definition]{Corollary} -%\newtheorem{lemma}[definition]{Lemma} -%\newtheorem{algorithm}[definition]{Algorithm} -%\newenvironment{abstract}{\small \begin{center} {\bf Abstract}\\[2ex] - %\begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}} -\newenvironment{Zusammenfassung}{\small \begin{center} {\bf Zusammenfassung}\\[2ex] - \begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}} -\newlength{\level} -\newlength{\wid} - - -%\newcommand{\thelb}{ -\def\notunlhd{\mathrel{\unlhd\!\!\!\!\!\mid}} -\def\In#1#2{#1 \! \in \! #2} -\def\Leq#1#2#3{#1 \! \leqslant \! #2 \! \leqslant \! #3} -\def\Lequ#1#2#3{#1 \leqslant #2 \leqslant #3} -\newcommand{\ma}[1]{\text{``}#1\text{''}\xspace} -\newcommand{\ttm}[1]{\mbox{\tt #1}\xspace} -\newcommand{\ret}[2]{\ttm{r}^{\ttm{\footnotesize #1}}_{\ttm{\footnotesize #2}}\xspace} -\newcommand{\retm}[2]{\ttm{r}^{#1}_{#2}\xspace} -\newcommand{\re}[2]{\displaystyle r^{#1}_{#2}\xspace} -\newlength{\qwert} -%\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \addtolength{\qwert}{-0.65ex} \hspace*{\qwert}} -\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \hspace*{\qwert}} -\newcommand{\leng}[1]{\settowidth{\qwert}{#1} \qwert} -\newcommand{\ldo}{, \ldots , } - - -% -% Algorithmus -% -\newcommand{\nll}{\newline\hspace*{\level}} -\newcommand{\nlevel}{\addtolength{\level}{0.4cm}} -\newcommand{\llevel}{\addtolength{\level}{-0.4cm}} -\newcommand{\ifc}[1]{\textbf{if} \nlevel #1 \llevel} -\newcommand{\elsifc}[1]{\textbf{elsif} \nlevel #1 \llevel} -\newcommand{\foreachc}[2]{\textbf{foreach} #1 \nlevel #2 \llevel} -\newcommand{\thenc}[1]{\textbf{then} \nlevel #1 \llevel} -\newcommand{\ifthenc}[2]{\textbf{if} #1 \textbf{then} \nlevel #2 \llevel} -\newcommand{\elsec}[1]{\textbf{else} \nlevel #1 \llevel} -\newcommand{\eifc}{\textbf{endif}\\} -\newcommand{\casec}[2]{\fbox{\textbf{case} #1}\ \nlevel \nlevel #2 \llevel \llevel} -\newcommand{\letc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel} -\newcommand{\letbf}[1]{\textbf{let} \nlevel \\ #1 \llevel} -\newcommand{\inc}[1]{\textbf{in} \nlevel #1 \llevel \nopagebreak\\ \textbf{end}} -\newcommand{\lam}[2]{\textbf{fn } #1 \textrm{$\, \Rightarrow \,$} #2} -\newcommand{\inputc}[1]{\nll \textbf{Input:} \nlevel #1 \llevel} -\newcommand{\outputc}[1]{\nll \textbf{Output:} \nlevel #1 \llevel} -%\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ \ul{#2} = \nlevel #3 \llevel \llevel} -\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ #2 = \nlevel #3 \llevel \llevel} -%\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ \ul{#1} = \nlevel #2 \llevel \llevel} -\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel} -\newcommand{\letoeq}[3]{\textbf{let} \nlevel \\ #1 #2 \nlevel #3 \llevel \llevel} -\newcommand{\letoeqol}[3]{\nlevel \\ #1 #2 \nlevel #3 \llevel \llevel} -%\newcommand{\letu}[2]{\nlevel\\ \ul{#1} = \nlevel #2 \llevel\llevel} -\newcommand{\letu}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel} -\newcommand{\letnc}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel} -\newcommand{\misc}[1]{\nlevel\\ #1 \llevel} -\newcommand{\least}{\textrm{$\top$}\xspace} -\newenvironment{algocommands}{ - \setlength{\level}{2mm} - \renewcommand{\\}{\nll} - \noindent - }{\renewcommand{\\}{\newline} - \vspace{1ex} - } -\newenvironment{algo}{\begin{algorithm} \rm %\mbox{}\\ - \begin{algocommands} - }{\end{algocommands} - \end{algorithm} - } - -\newenvironment{boxedalgo}{ - \begin{Sbox} - \begin{minipage}{\textwid} - \begin{algo} - }{\end{algo} - \end{minipage} - \end{Sbox} - \fbox{\TheSbox} - } - -\newenvironment{Liste}{\begin{list}{\textbf{--}}{ - \setlength{\parsep}{0pt plus0.0ex} - \setlength{\labelwidth}{2ex} - \setlength{\itemsep}{0pt} - \setlength{\leftmargin}{\labelsep +\labelwidth} - }}{\normalsize \end{list}} - - -\newcounter{ficall} -\setcounter{ficall}{0} -\newcommand{\ficall}[1]{\addtocounter{ficall}{1}\subsubsection*{(\theficall) \ - #1} -\setcounter{secall}{0} -\setcounter{thicall}{0} -\setcounter{focall}{0} -\setcounter{fifcall}{0} -\setcounter{sixcall}{0} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\reficall}[1]{\subsubsection*{(\theficall) \ - #1}} -\newcounter{fifinum} -\newcommand{\finumset}{\setcounter{fifinum}{\value{ficall}}} -\newcommand{\finum}{\thefifinum} -\newcounter{fifinumold} -\newcommand{\finumoldset}{ - \setcounter{fifinumold}{\value{fifinum}} -} -\newcommand{\finumold}{\thesefinumold} - -\newcounter{secall} -\setcounter{secall}{0} -\newcounter{sefinum}\newcounter{sesenum} -\newcommand{\senumset}{\setcounter{sefinum}{\value{ficall}}\setcounter{sesenum}{\value{secall}}} -\newcommand{\secall}[1]{\addtocounter{secall}{1}\subsubsection*{(\theficall.\thesecall) \ #1} -\setcounter{thicall}{0} -\setcounter{focall}{0} -\setcounter{fifcall}{0} -\setcounter{sixcall}{0} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\resecall}[1]{\subsubsection*{(\theficall.\thesecall) \ #1}} -\newcommand{\senum}{\thesefinum.\thesesenum} -\newcounter{sefinumold} -\newcounter{sesenumold} -\newcommand{\senumoldset}{ - \setcounter{sefinumold}{\value{sefinum}} - \setcounter{sesenumold}{\value{sesenum}} -} -\newcommand{\senumold}{\thesefinumold.\thesesenumold} - -\newcounter{thicall} -\setcounter{thicall}{0} -\newcounter{thifinum}\newcounter{thisenum}\newcounter{thithinum} -\newcommand{\thinumset}{\setcounter{thifinum}{\value{ficall}}\setcounter{thisenum}{\value{secall}}\setcounter{thithinum}{\value{thicall}}} -\newcommand{\thicall}[1]{\addtocounter{thicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1} -\setcounter{focall}{0} -\setcounter{fifcall}{0} -\setcounter{sixcall}{0} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\rethicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1}} -\newcommand{\thinum}{\thethifinum.\thethisenum.\thethithinum} - -\newcounter{focall} -\setcounter{focall}{0} -\newcounter{fofinum}\newcounter{fosenum}\newcounter{fothinum}\newcounter{fofonum} -\newcommand{\focall}[1]{\addtocounter{focall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1} -\setcounter{fifcall}{0} -\setcounter{sixcall}{0} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\fonumset}{\setcounter{fofinum}{\value{ficall}}\setcounter{fosenum}{\value{secall}}\setcounter{fothinum}{\value{thicall}}\setcounter{fofonum}{\value{focall}}} -\newcommand{\fonum}{\thefofinum.\thefosenum.\thefothinum.\thefofonum} -\newcommand{\refocall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1}} - -\newcounter{fifcall} -\setcounter{fifcall}{0} -\newcommand{\fifcall}[1]{\addtocounter{fifcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1} -\setcounter{sixcall}{0} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcounter{fiffinum}\newcounter{fifsenum}\newcounter{fifthinum}\newcounter{fiffonum}\newcounter{fiffifnum} -\newcommand{\fifnumset}{\setcounter{fiffinum}{\value{ficall}}\setcounter{fifsenum}{\value{secall}}\setcounter{fifthinum}{\value{thicall}}\setcounter{fiffonum}{\value{focall}}\setcounter{fiffifnum}{\value{fifcall}}} -\newcommand{\fifnum}{\thefiffinum.\thefifsenum.\thefifthinum.\thefiffonum.\thefiffifnum} -\newcommand{\refifcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1}} -\newcounter{fiffinumold} -\newcounter{fifsenumold} -\newcounter{fifthinumold} -\newcounter{fiffonumold} -\newcounter{fiffifnumold} -\newcommand{\fifnumoldset}{ - \setcounter{fiffinumold}{\value{fiffinum}} - \setcounter{fifsenumold}{\value{fifsenum}} - \setcounter{fifthinumold}{\value{fifthinum}} - \setcounter{fiffonumold}{\value{fiffonum}} - \setcounter{fiffifnumold}{\value{fiffifnum}} -} -\newcommand{\fifnumold}{\thefiffinumold.\thefifsenumold.\thefifthinumold.\thefiffonumold.\thefiffifnumold} - -\newcounter{fiffinumoldold} -\newcounter{fifsenumoldold} -\newcounter{fifthinumoldold} -\newcounter{fiffonumoldold} -\newcounter{fiffifnumoldold} -\newcommand{\fifnumoldoldset}{ - \setcounter{fiffinumoldold}{\value{fiffinum}} - \setcounter{fifsenumoldold}{\value{fifsenum}} - \setcounter{fifthinumoldold}{\value{fifthinum}} - \setcounter{fiffonumoldold}{\value{fiffonum}} - \setcounter{fiffifnumoldold}{\value{fiffifnum}} -} -\newcommand{\fifnumoldold}{\thefiffinumoldold.\thefifsenumoldold.\thefifthinumoldold.\thefiffonumoldold.\thefiffifnumoldold} - -\newcounter{sixcall} -\setcounter{sixcall}{0} -\newcommand{\sixcall}[1]{\addtocounter{sixcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1} -\setcounter{sevcall}{0} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcounter{sixfinum} -\newcounter{sixsenum} -\newcounter{sixthinum} -\newcounter{sixfonum} -\newcounter{sixfifnum} -\newcounter{sixsixnum} -\newcommand{\sixnumset}{ - \setcounter{sixfinum}{\value{ficall}} - \setcounter{sixsenum}{\value{secall}} - \setcounter{sixthinum}{\value{thicall}} - \setcounter{sixfonum}{\value{focall}} - \setcounter{sixfifnum}{\value{fifcall}} - \setcounter{sixsixnum}{\value{sixcall}} - } -\newcommand{\sixnum}{\thesixfinum.\thesixsenum.\thesixthinum.\thesixfonum.\thesixfifnum.\thesixsixnum} -\newcommand{\resixcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1}} - -\newcounter{sevcall} -\setcounter{sevcall}{0} -\newcommand{\sevcall}[1]{\addtocounter{sevcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1} -\setcounter{eigcall}{0} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcounter{sevfinum} -\newcounter{sevsenum} -\newcounter{sevthinum} -\newcounter{sevfonum} -\newcounter{sevfifnum} -\newcounter{sevsixnum} -\newcounter{sevsevnum} -\newcommand{\sevnumset}{ - \setcounter{sevfinum}{\value{ficall}} - \setcounter{sevsenum}{\value{secall}} - \setcounter{sevthinum}{\value{thicall}} - \setcounter{sevfonum}{\value{focall}} - \setcounter{sevfifnum}{\value{fifcall}} - \setcounter{sevsixnum}{\value{sixcall}} - \setcounter{sevsevnum}{\value{sevcall}} - } -\newcommand{\sevnum}{\thesevfinum.\thesevsenum.\thesevthinum.\thesevfonum.\thesevfifnum.\thesevsixnum.\thesevsevnum} -\newcommand{\resevcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1}} - -\newcounter{eigcall} -\newcounter{eigfinum}\newcounter{eigsenum}\newcounter{eigthinum}\newcounter{eigfonum}\newcounter{eigfifnum}\newcounter{eigsixnum}\newcounter{eigsevnum}\newcounter{eigeignum} -\setcounter{eigcall}{0} -\newcommand{\eignumset}{\setcounter{eigfinum}{\value{ficall}}\setcounter{eigsenum}{\value{secall}}\setcounter{eigthinum}{\value{thicall}}\setcounter{eigfonum}{\value{focall}}\setcounter{eigfifnum}{\value{fifcall}}\setcounter{eigsixnum}{\value{sixcall}}\setcounter{eigsevnum}{\value{sevcall}}\setcounter{eigeignum}{\value{eigcall}}} -\newcommand{\eignum}{\theeigfinum.\theeigsenum.\theeigthinum.\theeigfonum.\theeigfifnum.\theeigsixnum.\theeigsevnum.\theeigeignum} -\newcommand{\eigcall}[1]{\addtocounter{eigcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1} -\setcounter{nicall}{0} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\reeigcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1}} - -\newcounter{nicall} -\newcounter{nifinum}\newcounter{nisenum}\newcounter{nithinum}\newcounter{nifonum}\newcounter{nififnum}\newcounter{nisixnum}\newcounter{nisevnum}\newcounter{nieignum}\newcounter{nininum} -\setcounter{nicall}{0} -\newcommand{\ninumset}{\setcounter{nifinum}{\value{ficall}}\setcounter{nisenum}{\value{secall}}\setcounter{nithinum}{\value{thicall}}\setcounter{nifonum}{\value{focall}}\setcounter{nififnum}{\value{fifcall}}\setcounter{nisixnum}{\value{sixcall}}\setcounter{nisevnum}{\value{sevcall}}\setcounter{nieignum}{\value{eigcall}}\setcounter{nininum}{\value{nicall}}} -\newcommand{\ninum}{\thenifinum.\thenisenum.\thenithinum.\thenifonum.\thenififnum.\thenisixnum.\thenisevnum.\thenieignum.\thenininum} -\newcommand{\nicall}[1]{\addtocounter{nicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall) - \ #1} -\setcounter{tencall}{0} -\setcounter{elecall}{0} -} -\newcommand{\renicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall) - \ #1}} -\newcounter{nifinumold} -\newcounter{nisenumold} -\newcounter{nithinumold} -\newcounter{nifonumold} -\newcounter{nififnumold} -\newcounter{nisixnumold} -\newcounter{nisevnumold} -\newcounter{nieignumold} -\newcounter{nininumold} -\newcommand{\ninumoldset}{ - \setcounter{nifinumold}{\value{nifinum}} - \setcounter{nisenumold}{\value{nisenum}} - \setcounter{nithinumold}{\value{nithinum}} - \setcounter{nifonumold}{\value{nifonum}} - \setcounter{nififnumold}{\value{nififnum}} - \setcounter{nisixnumold}{\value{nisixnum}} - \setcounter{nisevnumold}{\value{nisevnum}} - \setcounter{nieignumold}{\value{nieignum}} - \setcounter{nininumold}{\value{nininum}} -} -\newcommand{\ninumold}{\thenifinumold.\thenisenumold.\thenithinumold.\thenifonumold.\thenififnumold.\thenisixnumold.\thenisevnumold.\thenieignumold.\thenininumold} - - -\newcounter{tencall} -\setcounter{tencall}{0} -\newcommand{\tencall}[1]{\addtocounter{tencall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall) - \ #1} -\setcounter{elecall}{0} -} -\newcommand{\retencall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall) - \ #1}} -\newcounter{tenfinum} -\newcounter{tensenum} -\newcounter{tenthinum} -\newcounter{tenfonum} -\newcounter{tenfifnum} -\newcounter{tensixnum} -\newcounter{tensevnum} -\newcounter{teneignum} -\newcounter{tenninum} -\newcounter{tentennum} -\newcommand{\tennumset}{ - \setcounter{tenfinum}{\value{ficall}} - \setcounter{tensenum}{\value{secall}} - \setcounter{tenthinum}{\value{thicall}} - \setcounter{tenfonum}{\value{focall}} - \setcounter{tenfifnum}{\value{fifcall}} - \setcounter{tensixnum}{\value{sixcall}} - \setcounter{tensevnum}{\value{sevcall}} - \setcounter{teneignum}{\value{eigcall}} - \setcounter{tenninum}{\value{nicall}} - \setcounter{tentennum}{\value{tencall}}} -\newcommand{\tennum}{\thetenfinum.\thetensenum.\thetenthinum.\thetenfonum.\thetenfifnum.\thetensixnum.\thetensevnum.\theteneignum.\thetenninum.\thetentennum} - -\newcounter{elecall} -\setcounter{elecall}{0} -\newcommand{\elecall}[1]{\addtocounter{elecall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall.\theelecall) \ #1}} -\newcounter{elefinum} -\newcounter{elesenum} -\newcounter{elethinum} -\newcounter{elefonum} -\newcounter{elefifnum} -\newcounter{elesixnum} -\newcounter{elesevnum} -\newcounter{eleeignum} -\newcounter{eleninum} -\newcounter{eletennum} -\newcounter{eleelenum} -\newcommand{\elenumset}{ - \setcounter{elefinum}{\value{ficall}} - \setcounter{elesenum}{\value{secall}} - \setcounter{elethinum}{\value{thicall}} - \setcounter{elefonum}{\value{focall}} - \setcounter{elefifnum}{\value{fifcall}} - \setcounter{elesixnum}{\value{sixcall}} - \setcounter{elesevnum}{\value{sevcall}} - \setcounter{eleeignum}{\value{eigcall}} - \setcounter{eleninum}{\value{nicall}} - \setcounter{eletennum}{\value{tencall}} - \setcounter{eleelenum}{\value{elecall}} - } -\newcommand{\elenum}{\theelefinum.\theelesenum.\theelethinum.\theelefonum.\theelefifnum.\theelesixnum.\theelesevnum.\theeleeignum.\theeleninum.\theeletennum.\theeleelenum} \ No newline at end of file diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 8099110c1..000000000 --- a/TODO.md +++ /dev/null @@ -1,2 +0,0 @@ -Nächste Aufgaben: - diff --git a/antlr/Java8.g4 b/antlr/Java8.g4 deleted file mode 100644 index 6810eb44b..000000000 --- a/antlr/Java8.g4 +++ /dev/null @@ -1,1028 +0,0 @@ -/* - [The "BSD licence"] - Copyright (c) 2014 Terence Parr, 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 v4 derived from ANTLR v3 Java grammar. - * Follows syntax from spec: - * http://docs.oracle.com/javase/specs/jls/se8/html/jls-19.html - * Uses ANTLR v4's left-recursive expression notation. - * - * You can test with - * - * $ antlr4 Java.g4 - * $ javac *.java - * $ grun Java compilationUnit *.java - * - * Or, -~/antlr/code/grammars-v4/java8 $ j 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 384ms. - */ -grammar Java8; - -// starting point for parsing a java file -compilationUnit - : packageDeclaration? importDeclaration* typeDeclaration* EOF - ; - -packageDeclaration - : annotation* 'package' qualifiedName ';' - ; - -importDeclaration - : 'import' 'static'? qualifiedName ('.' '*')? ';' - ; - -typeDeclaration - : classOrInterfaceModifier* classDeclaration - | classOrInterfaceModifier* enumDeclaration - | classOrInterfaceModifier* interfaceDeclaration - | classOrInterfaceModifier* annotationTypeDeclaration - | ';' - ; - -modifier - : classOrInterfaceModifier - | ( 'native' - | 'synchronized' - | 'transient' - | 'volatile' - ) - ; - -classOrInterfaceModifier - : annotation // class or interface - | ( 'public' // class or interface - | 'protected' // class or interface - | 'private' // class or interface - | 'static' // class or interface - | 'abstract' // class or interface - | 'final' // class only -- does not apply to interfaces - | 'strictfp' // class or interface - ) - ; - -variableModifier - : 'final' - | annotation - ; - -classDeclaration - : 'class' Identifier typeParameters? - ('extends' type)? - ('implements' typeList)? - classBody - ; - -typeParameters - : '<' typeParameter (',' typeParameter)* '>' - ; - -typeParameter - : Identifier ('extends' typeBound)? - ; - -typeBound - : type ('&' type)* - ; - -enumDeclaration - : ENUM Identifier ('implements' typeList)? - '{' enumConstants? ','? enumBodyDeclarations? '}' - ; - -enumConstants - : enumConstant (',' enumConstant)* - ; - -enumConstant - : annotation* Identifier arguments? classBody? - ; - -enumBodyDeclarations - : ';' classBodyDeclaration* - ; - -interfaceDeclaration - : 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody - ; - -typeList - : type (',' type)* - ; - -classBody - : '{' classBodyDeclaration* '}' - ; - -interfaceBody - : '{' interfaceBodyDeclaration* '}' - ; - -classBodyDeclaration - : ';' - | 'static'? block - | modifier* memberDeclaration - ; - -memberDeclaration - : methodDeclaration - | genericMethodDeclaration - | fieldDeclaration - | constructorDeclaration - | genericConstructorDeclaration - | interfaceDeclaration - | annotationTypeDeclaration - | classDeclaration - | enumDeclaration - ; - -/* We use rule this even for void methods which cannot have [] after parameters. - This simplifies grammar and we can consider void to be a type, which - renders the [] matching as a context-sensitive issue or a semantic check - for invalid return type after parsing. - */ -methodDeclaration - : (type|'void') Identifier formalParameters ('[' ']')* - ('throws' qualifiedNameList)? - ( methodBody - | ';' - ) - ; - -genericMethodDeclaration - : typeParameters methodDeclaration - ; - -constructorDeclaration - : Identifier formalParameters ('throws' qualifiedNameList)? - constructorBody - ; - -genericConstructorDeclaration - : typeParameters constructorDeclaration - ; - -fieldDeclaration - : type variableDeclarators ';' - ; - -interfaceBodyDeclaration - : modifier* interfaceMemberDeclaration - | ';' - ; - -interfaceMemberDeclaration - : constDeclaration - | interfaceMethodDeclaration - | genericInterfaceMethodDeclaration - | interfaceDeclaration - | annotationTypeDeclaration - | classDeclaration - | enumDeclaration - ; - -constDeclaration - : type constantDeclarator (',' constantDeclarator)* ';' - ; - -constantDeclarator - : Identifier ('[' ']')* '=' variableInitializer - ; - -// see matching of [] comment in methodDeclaratorRest -interfaceMethodDeclaration - : (type|'void') Identifier formalParameters ('[' ']')* - ('throws' qualifiedNameList)? - ';' - ; - -genericInterfaceMethodDeclaration - : typeParameters interfaceMethodDeclaration - ; - -variableDeclarators - : variableDeclarator (',' variableDeclarator)* - ; - -variableDeclarator - : variableDeclaratorId ('=' variableInitializer)? - ; - -variableDeclaratorId - : Identifier ('[' ']')* - ; - -variableInitializer - : arrayInitializer - | expression - ; - -arrayInitializer - : '{' (variableInitializer (',' variableInitializer)* (',')? )? '}' - ; - -enumConstantName - : Identifier - ; - -type - : classOrInterfaceType ('[' ']')* - | primitiveType ('[' ']')* - ; - -classOrInterfaceType - : Identifier typeArguments? ('.' Identifier typeArguments? )* - ; - -primitiveType - : 'boolean' - | 'char' - | 'byte' - | 'short' - | 'int' - | 'long' - | 'float' - | 'double' - ; - -typeArguments - : '<' typeArgument (',' typeArgument)* '>' - ; - -typeArgument - : type - | '?' (('extends' | 'super') type)? - ; - -qualifiedNameList - : qualifiedName (',' qualifiedName)* - ; - -formalParameters - : '(' formalParameterList? ')' - ; - -formalParameterList - : formalParameter (',' formalParameter)* (',' lastFormalParameter)? - | lastFormalParameter - ; - -formalParameter - : variableModifier* type variableDeclaratorId - ; - -lastFormalParameter - : variableModifier* type '...' variableDeclaratorId - ; - -methodBody - : block - ; - -constructorBody - : block - ; - -qualifiedName - : Identifier ('.' Identifier)* - ; - -literal - : IntegerLiteral - | FloatingPointLiteral - | CharacterLiteral - | StringLiteral - | BooleanLiteral - | 'null' - ; - -// ANNOTATIONS - -annotation - : '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )? - ; - -annotationName : qualifiedName ; - -elementValuePairs - : elementValuePair (',' elementValuePair)* - ; - -elementValuePair - : Identifier '=' elementValue - ; - -elementValue - : expression - | annotation - | elementValueArrayInitializer - ; - -elementValueArrayInitializer - : '{' (elementValue (',' elementValue)*)? (',')? '}' - ; - -annotationTypeDeclaration - : '@' 'interface' Identifier annotationTypeBody - ; - -annotationTypeBody - : '{' (annotationTypeElementDeclaration)* '}' - ; - -annotationTypeElementDeclaration - : modifier* annotationTypeElementRest - | ';' // this is not allowed by the grammar, but apparently allowed by the actual compiler - ; - -annotationTypeElementRest - : type annotationMethodOrConstantRest ';' - | classDeclaration ';'? - | interfaceDeclaration ';'? - | enumDeclaration ';'? - | annotationTypeDeclaration ';'? - ; - -annotationMethodOrConstantRest - : annotationMethodRest - | annotationConstantRest - ; - -annotationMethodRest - : Identifier '(' ')' defaultValue? - ; - -annotationConstantRest - : variableDeclarators - ; - -defaultValue - : 'default' elementValue - ; - -// STATEMENTS / BLOCKS - -block - : '{' blockStatement* '}' - ; - -blockStatement - : localVariableDeclarationStatement - | statement - | typeDeclaration - ; - -localVariableDeclarationStatement - : localVariableDeclaration ';' - ; - -localVariableDeclaration - : variableModifier* type variableDeclarators - ; - -statement - : block - | ASSERT expression (':' expression)? ';' - | 'if' parExpression statement ('else' statement)? - | 'for' '(' forControl ')' statement - | 'while' parExpression statement - | 'do' statement 'while' parExpression ';' - | 'try' block (catchClause+ finallyBlock? | finallyBlock) - | 'try' resourceSpecification block catchClause* finallyBlock? - | 'switch' parExpression '{' switchBlockStatementGroup* switchLabel* '}' - | 'synchronized' parExpression block - | 'return' expression? ';' - | 'throw' expression ';' - | 'break' Identifier? ';' - | 'continue' Identifier? ';' - | ';' - | statementExpression ';' - | Identifier ':' statement - ; - -catchClause - : 'catch' '(' variableModifier* catchType Identifier ')' block - ; - -catchType - : qualifiedName ('|' qualifiedName)* - ; - -finallyBlock - : 'finally' block - ; - -resourceSpecification - : '(' resources ';'? ')' - ; - -resources - : resource (';' resource)* - ; - -resource - : variableModifier* classOrInterfaceType variableDeclaratorId '=' expression - ; - -/** Matches cases then statements, both of which are mandatory. - * To handle empty cases at the end, we add switchLabel* to statement. - */ -switchBlockStatementGroup - : switchLabel+ blockStatement+ - ; - -switchLabel - : 'case' constantExpression ':' - | 'case' enumConstantName ':' - | 'default' ':' - ; - -forControl - : enhancedForControl - | forInit? ';' expression? ';' forUpdate? - ; - -forInit - : localVariableDeclaration - | expressionList - ; - -enhancedForControl - : variableModifier* type Identifier ':' expression - ; - -forUpdate - : expressionList - ; - -// EXPRESSIONS - -parExpression - : '(' expression ')' - ; - -expressionList - : expression (',' expression)* - ; - -statementExpression - : expression - ; - -constantExpression - : expression - ; - -expression - : primary - | expression '.' Identifier - | expression '.' 'this' - | expression '.' 'new' nonWildcardTypeArguments? innerCreator - | expression '.' 'super' superSuffix - | expression '.' explicitGenericInvocation - | expression '[' expression ']' - | expression '(' expressionList? ')' - | 'new' creator - | '(' type ')' expression - | expression ('++' | '--') - | ('+'|'-'|'++'|'--') expression - | ('~'|'!') expression - | expression ('*'|'/'|'%') expression - | expression ('+'|'-') expression - | expression ('<' '<' | '>' '>' '>' | '>' '>') expression - | expression ('<=' | '>=' | '>' | '<') expression - | expression 'instanceof' type - | expression ('==' | '!=') expression - | expression '&' expression - | expression '^' expression - | expression '|' expression - | expression '&&' expression - | expression '||' expression - | expression '?' expression ':' expression - | expression - ( '=' - | '+=' - | '-=' - | '*=' - | '/=' - | '&=' - | '|=' - | '^=' - | '>>=' - | '>>>=' - | '<<=' - | '%=' - ) - expression - ; - -primary - : '(' expression ')' - | 'this' - | 'super' - | literal - | Identifier - | type '.' 'class' - | 'void' '.' 'class' - | nonWildcardTypeArguments (explicitGenericInvocationSuffix | 'this' arguments) - ; - -creator - : nonWildcardTypeArguments createdName classCreatorRest - | createdName (arrayCreatorRest | classCreatorRest) - ; - -createdName - : Identifier typeArgumentsOrDiamond? ('.' Identifier typeArgumentsOrDiamond?)* - | primitiveType - ; - -innerCreator - : Identifier nonWildcardTypeArgumentsOrDiamond? classCreatorRest - ; - -arrayCreatorRest - : '[' - ( ']' ('[' ']')* arrayInitializer - | expression ']' ('[' expression ']')* ('[' ']')* - ) - ; - -classCreatorRest - : arguments classBody? - ; - -explicitGenericInvocation - : nonWildcardTypeArguments explicitGenericInvocationSuffix - ; - -nonWildcardTypeArguments - : '<' typeList '>' - ; - -typeArgumentsOrDiamond - : '<' '>' - | typeArguments - ; - -nonWildcardTypeArgumentsOrDiamond - : '<' '>' - | nonWildcardTypeArguments - ; - -superSuffix - : arguments - | '.' Identifier arguments? - ; - -explicitGenericInvocationSuffix - : 'super' superSuffix - | Identifier arguments - ; - -arguments - : '(' expressionList? ')' - ; - -// 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 (DigitOrUnderscore* Digit)? - ; - -fragment -Digit - : '0' - | NonZeroDigit - ; - -fragment -NonZeroDigit - : [1-9] - ; - -fragment -DigitOrUnderscore - : Digit - | '_' - ; - -fragment -Underscores - : '_'+ - ; - -fragment -HexNumeral - : '0' [xX] HexDigits - ; - -fragment -HexDigits - : HexDigit (HexDigitOrUnderscore* HexDigit)? - ; - -fragment -HexDigit - : [0-9a-fA-F] - ; - -fragment -HexDigitOrUnderscore - : HexDigit - | '_' - ; - -fragment -OctalNumeral - : '0' Underscores? OctalDigits - ; - -fragment -OctalDigits - : OctalDigit (OctalDigitOrUnderscore* OctalDigit)? - ; - -fragment -OctalDigit - : [0-7] - ; - -fragment -OctalDigitOrUnderscore - : OctalDigit - | '_' - ; - -fragment -BinaryNumeral - : '0' [bB] BinaryDigits - ; - -fragment -BinaryDigits - : BinaryDigit (BinaryDigitOrUnderscore* BinaryDigit)? - ; - -fragment -BinaryDigit - : [01] - ; - -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 - ; - -fragment -OctalEscape - : '\\' OctalDigit - | '\\' OctalDigit OctalDigit - | '\\' ZeroToThree OctalDigit OctalDigit - ; - -fragment -UnicodeEscape - : '\\' 'u' HexDigit HexDigit HexDigit HexDigit - ; - -fragment -ZeroToThree - : [0-3] - ; - -// §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 : '%'; - -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 0xFF - | // covers all characters above 0xFF which are not a surrogate - ~[\u0000-\u00FF\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 0xFF - | // covers all characters above 0xFF which are not a surrogate - ~[\u0000-\u00FF\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/antlr/Java8.tokens b/antlr/Java8.tokens deleted file mode 100644 index 3f62bddf3..000000000 --- a/antlr/Java8.tokens +++ /dev/null @@ -1,201 +0,0 @@ -THROW=44 -STATIC=38 -INTERFACE=28 -AND_ASSIGN=93 -BREAK=4 -BYTE=5 -ELSE=15 -IF=22 -ENUM=16 -SUB=82 -BANG=69 -LPAREN=57 -DOT=65 -CASE=6 -AT=101 -LINE_COMMENT=105 -StringLiteral=55 -ELLIPSIS=102 -LBRACK=61 -PUBLIC=35 -THROWS=45 -NullLiteral=56 -RSHIFT_ASSIGN=98 -LBRACE=59 -GOTO=23 -SUB_ASSIGN=90 -SEMI=63 -CHAR=8 -ASSIGN=66 -COMMENT=104 -IMPORT=25 -BITOR=86 -CATCH=7 -MUL_ASSIGN=91 -DOUBLE=14 -PROTECTED=34 -LONG=29 -COMMA=64 -BITAND=85 -PRIVATE=33 -CONTINUE=11 -DIV=84 -FloatingPointLiteral=52 -LE=74 -CharacterLiteral=54 -VOLATILE=49 -EXTENDS=17 -INSTANCEOF=26 -NEW=31 -ADD=81 -LT=68 -CLASS=9 -DO=13 -FINALLY=19 -Identifier=100 -CONST=10 -PACKAGE=32 -OR_ASSIGN=94 -TRY=47 -IntegerLiteral=51 -SYNCHRONIZED=42 -MUL=83 -FOR=21 -FINAL=18 -RPAREN=58 -CARET=87 -URSHIFT_ASSIGN=99 -BOOLEAN=3 -NOTEQUAL=76 -RBRACK=62 -RBRACE=60 -AND=77 -THIS=43 -SWITCH=41 -VOID=48 -TRANSIENT=46 -INC=79 -FLOAT=20 -NATIVE=30 -DIV_ASSIGN=92 -BooleanLiteral=53 -ABSTRACT=1 -STRICTFP=39 -INT=27 -QUESTION=71 -RETURN=36 -LSHIFT_ASSIGN=97 -ADD_ASSIGN=89 -WS=103 -GE=75 -SUPER=40 -OR=78 -DEC=80 -MOD=88 -XOR_ASSIGN=95 -ASSERT=2 -EQUAL=73 -IMPLEMENTS=24 -COLON=72 -GT=67 -SHORT=37 -MOD_ASSIGN=96 -WHILE=50 -TILDE=70 -DEFAULT=12 -'import'=25 -'-'=82 -')'=58 -'super'=40 -'else'=15 -'%'=88 -'!'=69 -'>'=67 -'public'=35 -'=='=73 -'--'=80 -'|'=86 -'['=61 -':'=72 -'...'=102 -'throw'=44 -'case'=6 -'.'=65 -'this'=43 -'*'=83 -'switch'=41 -'synchronized'=42 -'&'=85 -'double'=14 -'break'=4 -'short'=37 -'<='=74 -'enum'=16 -'try'=47 -'?'=71 -'if'=22 -'extends'=17 -'goto'=23 -'}'=60 -'instanceof'=26 -';'=63 -'||'=78 -'>>='=98 -'class'=9 -'return'=36 -'&='=93 -'catch'=7 -'native'=30 -'continue'=11 -'strictfp'=39 -'/'=84 -'*='=91 -'+'=81 -'final'=18 -'protected'=34 -'static'=38 -'@'=101 -'transient'=46 -'~'=70 -'assert'=2 -']'=62 -'<'=68 -'++'=79 -'>>>='=99 -'>='=75 -'long'=29 -'boolean'=3 -'const'=10 -'abstract'=1 -'implements'=24 -'volatile'=49 -'throws'=45 -'/='=92 -','=64 -'-='=90 -'do'=13 -'package'=32 -'('=57 -'null'=56 -'int'=27 -'|='=94 -'for'=21 -'^'=87 -'<<='=97 -'='=66 -'byte'=5 -'&&'=77 -'^='=95 -'void'=48 -'while'=50 -'{'=59 -'float'=20 -'!='=76 -'new'=31 -'char'=8 -'finally'=19 -'interface'=28 -'%='=96 -'private'=33 -'+='=89 -'default'=12 diff --git a/antlr/Java8BaseListener.java b/antlr/Java8BaseListener.java deleted file mode 100644 index ba69f6df5..000000000 --- a/antlr/Java8BaseListener.java +++ /dev/null @@ -1,1251 +0,0 @@ -// Generated from Java8.g4 by ANTLR 4.4 - -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.misc.NotNull; -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 enterMemberDeclaration(@NotNull Java8Parser.MemberDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMemberDeclaration(@NotNull Java8Parser.MemberDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterGenericInterfaceMethodDeclaration(@NotNull Java8Parser.GenericInterfaceMethodDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGenericInterfaceMethodDeclaration(@NotNull Java8Parser.GenericInterfaceMethodDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterEnhancedForControl(@NotNull Java8Parser.EnhancedForControlContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEnhancedForControl(@NotNull Java8Parser.EnhancedForControlContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnnotationConstantRest(@NotNull Java8Parser.AnnotationConstantRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnnotationConstantRest(@NotNull Java8Parser.AnnotationConstantRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExplicitGenericInvocation(@NotNull Java8Parser.ExplicitGenericInvocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExplicitGenericInvocation(@NotNull Java8Parser.ExplicitGenericInvocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNonWildcardTypeArgumentsOrDiamond(@NotNull Java8Parser.NonWildcardTypeArgumentsOrDiamondContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNonWildcardTypeArgumentsOrDiamond(@NotNull Java8Parser.NonWildcardTypeArgumentsOrDiamondContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExpressionList(@NotNull Java8Parser.ExpressionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExpressionList(@NotNull Java8Parser.ExpressionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnnotationTypeElementRest(@NotNull Java8Parser.AnnotationTypeElementRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnnotationTypeElementRest(@NotNull Java8Parser.AnnotationTypeElementRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterClassCreatorRest(@NotNull Java8Parser.ClassCreatorRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassCreatorRest(@NotNull Java8Parser.ClassCreatorRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInterfaceBodyDeclaration(@NotNull Java8Parser.InterfaceBodyDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInterfaceBodyDeclaration(@NotNull Java8Parser.InterfaceBodyDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterAnnotationName(@NotNull Java8Parser.AnnotationNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnnotationName(@NotNull Java8Parser.AnnotationNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFinallyBlock(@NotNull Java8Parser.FinallyBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFinallyBlock(@NotNull Java8Parser.FinallyBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterAnnotationMethodOrConstantRest(@NotNull Java8Parser.AnnotationMethodOrConstantRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnnotationMethodOrConstantRest(@NotNull Java8Parser.AnnotationMethodOrConstantRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterTypeList(@NotNull Java8Parser.TypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTypeList(@NotNull Java8Parser.TypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEnumConstants(@NotNull Java8Parser.EnumConstantsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEnumConstants(@NotNull Java8Parser.EnumConstantsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterCreatedName(@NotNull Java8Parser.CreatedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreatedName(@NotNull Java8Parser.CreatedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterParExpression(@NotNull Java8Parser.ParExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitParExpression(@NotNull Java8Parser.ParExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterCreator(@NotNull Java8Parser.CreatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreator(@NotNull Java8Parser.CreatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrayCreatorRest(@NotNull Java8Parser.ArrayCreatorRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrayCreatorRest(@NotNull Java8Parser.ArrayCreatorRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterQualifiedNameList(@NotNull Java8Parser.QualifiedNameListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedNameList(@NotNull Java8Parser.QualifiedNameListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterForControl(@NotNull Java8Parser.ForControlContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitForControl(@NotNull Java8Parser.ForControlContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSuperSuffix(@NotNull Java8Parser.SuperSuffixContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSuperSuffix(@NotNull Java8Parser.SuperSuffixContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariableDeclarators(@NotNull Java8Parser.VariableDeclaratorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariableDeclarators(@NotNull Java8Parser.VariableDeclaratorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterClassOrInterfaceModifier(@NotNull Java8Parser.ClassOrInterfaceModifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassOrInterfaceModifier(@NotNull Java8Parser.ClassOrInterfaceModifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterModifier(@NotNull Java8Parser.ModifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifier(@NotNull Java8Parser.ModifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInnerCreator(@NotNull Java8Parser.InnerCreatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInnerCreator(@NotNull Java8Parser.InnerCreatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExplicitGenericInvocationSuffix(@NotNull Java8Parser.ExplicitGenericInvocationSuffixContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExplicitGenericInvocationSuffix(@NotNull Java8Parser.ExplicitGenericInvocationSuffixContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterConstDeclaration(@NotNull Java8Parser.ConstDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstDeclaration(@NotNull Java8Parser.ConstDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterQualifiedName(@NotNull Java8Parser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedName(@NotNull Java8Parser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterAnnotationMethodRest(@NotNull Java8Parser.AnnotationMethodRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnnotationMethodRest(@NotNull Java8Parser.AnnotationMethodRestContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterGenericConstructorDeclaration(@NotNull Java8Parser.GenericConstructorDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGenericConstructorDeclaration(@NotNull Java8Parser.GenericConstructorDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterConstantDeclarator(@NotNull Java8Parser.ConstantDeclaratorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstantDeclarator(@NotNull Java8Parser.ConstantDeclaratorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResources(@NotNull Java8Parser.ResourcesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResources(@NotNull Java8Parser.ResourcesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterElementValuePairs(@NotNull Java8Parser.ElementValuePairsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitElementValuePairs(@NotNull Java8Parser.ElementValuePairsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterNonWildcardTypeArguments(@NotNull Java8Parser.NonWildcardTypeArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNonWildcardTypeArguments(@NotNull Java8Parser.NonWildcardTypeArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void enterArguments(@NotNull Java8Parser.ArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArguments(@NotNull Java8Parser.ArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGenericMethodDeclaration(@NotNull Java8Parser.GenericMethodDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGenericMethodDeclaration(@NotNull Java8Parser.GenericMethodDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void visitErrorNode(@NotNull ErrorNode node) { } -} \ No newline at end of file diff --git a/antlr/Java8Lexer.java b/antlr/Java8Lexer.java deleted file mode 100644 index 91a2c30ed..000000000 --- a/antlr/Java8Lexer.java +++ /dev/null @@ -1,515 +0,0 @@ -// Generated from Java8.g4 by ANTLR 4.4 -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.4", 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, ADD_ASSIGN=89, - SUB_ASSIGN=90, MUL_ASSIGN=91, DIV_ASSIGN=92, AND_ASSIGN=93, OR_ASSIGN=94, - XOR_ASSIGN=95, MOD_ASSIGN=96, LSHIFT_ASSIGN=97, RSHIFT_ASSIGN=98, URSHIFT_ASSIGN=99, - Identifier=100, AT=101, ELLIPSIS=102, WS=103, COMMENT=104, LINE_COMMENT=105; - public static String[] modeNames = { - "DEFAULT_MODE" - }; - - public static final String[] tokenNames = { - "'\\u0000'", "'\\u0001'", "'\\u0002'", "'\\u0003'", "'\\u0004'", "'\\u0005'", - "'\\u0006'", "'\\u0007'", "'\b'", "'\t'", "'\n'", "'\\u000B'", "'\f'", - "'\r'", "'\\u000E'", "'\\u000F'", "'\\u0010'", "'\\u0011'", "'\\u0012'", - "'\\u0013'", "'\\u0014'", "'\\u0015'", "'\\u0016'", "'\\u0017'", "'\\u0018'", - "'\\u0019'", "'\\u001A'", "'\\u001B'", "'\\u001C'", "'\\u001D'", "'\\u001E'", - "'\\u001F'", "' '", "'!'", "'\"'", "'#'", "'$'", "'%'", "'&'", "'''", - "'('", "')'", "'*'", "'+'", "','", "'-'", "'.'", "'/'", "'0'", "'1'", - "'2'", "'3'", "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "':'", "';'", - "'<'", "'='", "'>'", "'?'", "'@'", "'A'", "'B'", "'C'", "'D'", "'E'", - "'F'", "'G'", "'H'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'", - "'P'", "'Q'", "'R'", "'S'", "'T'", "'U'", "'V'", "'W'", "'X'", "'Y'", - "'Z'", "'['", "'\\'", "']'", "'^'", "'_'", "'`'", "'a'", "'b'", "'c'", - "'d'", "'e'", "'f'", "'g'", "'h'", "'i'" - }; - 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", "DigitOrUnderscore", - "Underscores", "HexNumeral", "HexDigits", "HexDigit", "HexDigitOrUnderscore", - "OctalNumeral", "OctalDigits", "OctalDigit", "OctalDigitOrUnderscore", - "BinaryNumeral", "BinaryDigits", "BinaryDigit", "BinaryDigitOrUnderscore", - "FloatingPointLiteral", "DecimalFloatingPointLiteral", "ExponentPart", - "ExponentIndicator", "SignedInteger", "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral", - "HexSignificand", "BinaryExponent", "BinaryExponentIndicator", "BooleanLiteral", - "CharacterLiteral", "SingleCharacter", "StringLiteral", "StringCharacters", - "StringCharacter", "EscapeSequence", "OctalEscape", "UnicodeEscape", "ZeroToThree", - "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", "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" - }; - - - public Java8Lexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "Java8.g4"; } - - @Override - public String[] getTokenNames() { return tokenNames; } - - @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 140: return JavaLetter_sempred((RuleContext)_localctx, predIndex); - case 141: return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex); - } - 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; - } - 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; - } - - public static final String _serializedATN = - "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2k\u042e\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\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\u0281\n\64"+ - "\3\65\3\65\5\65\u0285\n\65\3\66\3\66\5\66\u0289\n\66\3\67\3\67\5\67\u028d"+ - "\n\67\38\38\58\u0291\n8\39\39\3:\3:\3:\5:\u0298\n:\3:\3:\3:\5:\u029d\n"+ - ":\5:\u029f\n:\3;\3;\7;\u02a3\n;\f;\16;\u02a6\13;\3;\5;\u02a9\n;\3<\3<"+ - "\5<\u02ad\n<\3=\3=\3>\3>\5>\u02b3\n>\3?\6?\u02b6\n?\r?\16?\u02b7\3@\3"+ - "@\3@\3@\3A\3A\7A\u02c0\nA\fA\16A\u02c3\13A\3A\5A\u02c6\nA\3B\3B\3C\3C"+ - "\5C\u02cc\nC\3D\3D\5D\u02d0\nD\3D\3D\3E\3E\7E\u02d6\nE\fE\16E\u02d9\13"+ - "E\3E\5E\u02dc\nE\3F\3F\3G\3G\5G\u02e2\nG\3H\3H\3H\3H\3I\3I\7I\u02ea\n"+ - "I\fI\16I\u02ed\13I\3I\5I\u02f0\nI\3J\3J\3K\3K\5K\u02f6\nK\3L\3L\5L\u02fa"+ - "\nL\3M\3M\3M\5M\u02ff\nM\3M\5M\u0302\nM\3M\5M\u0305\nM\3M\3M\3M\5M\u030a"+ - "\nM\3M\5M\u030d\nM\3M\3M\3M\5M\u0312\nM\3M\3M\3M\5M\u0317\nM\3N\3N\3N"+ - "\3O\3O\3P\5P\u031f\nP\3P\3P\3Q\3Q\3R\3R\3S\3S\3S\5S\u032a\nS\3T\3T\5T"+ - "\u032e\nT\3T\3T\3T\5T\u0333\nT\3T\3T\5T\u0337\nT\3U\3U\3U\3V\3V\3W\3W"+ - "\3W\3W\3W\3W\3W\3W\3W\5W\u0347\nW\3X\3X\3X\3X\3X\3X\3X\3X\5X\u0351\nX"+ - "\3Y\3Y\3Z\3Z\5Z\u0357\nZ\3Z\3Z\3[\6[\u035c\n[\r[\16[\u035d\3\\\3\\\5\\"+ - "\u0362\n\\\3]\3]\3]\3]\5]\u0368\n]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\5"+ - "^\u0375\n^\3_\3_\3_\3_\3_\3_\3_\3`\3`\3a\3a\3a\3a\3a\3b\3b\3c\3c\3d\3"+ - "d\3e\3e\3f\3f\3g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3"+ - "p\3p\3q\3q\3r\3r\3r\3s\3s\3s\3t\3t\3t\3u\3u\3u\3v\3v\3v\3w\3w\3w\3x\3"+ - "x\3x\3y\3y\3y\3z\3z\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\u0082\3\u0083\3\u0083\3\u0083\3\u0084"+ - "\3\u0084\3\u0084\3\u0085\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\u008a\3\u008b\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c"+ - "\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\7\u008d\u03f4\n\u008d\f\u008d"+ - "\16\u008d\u03f7\13\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+ - "\5\u008e\u03ff\n\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+ - "\5\u008f\u0407\n\u008f\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091"+ - "\3\u0092\6\u0092\u0410\n\u0092\r\u0092\16\u0092\u0411\3\u0092\3\u0092"+ - "\3\u0093\3\u0093\3\u0093\3\u0093\7\u0093\u041a\n\u0093\f\u0093\16\u0093"+ - "\u041d\13\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094"+ - "\3\u0094\3\u0094\7\u0094\u0428\n\u0094\f\u0094\16\u0094\u042b\13\u0094"+ - "\3\u0094\3\u0094\3\u041b\2\u0095\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\2y\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\66\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3\2\u00a5\2\u00a7"+ - "\2\u00a9\2\u00ab\2\u00ad\67\u00af8\u00b1\2\u00b39\u00b5\2\u00b7\2\u00b9"+ - "\2\u00bb\2\u00bd\2\u00bf\2\u00c1:\u00c3;\u00c5<\u00c7=\u00c9>\u00cb?\u00cd"+ - "@\u00cfA\u00d1B\u00d3C\u00d5D\u00d7E\u00d9F\u00dbG\u00ddH\u00dfI\u00e1"+ - "J\u00e3K\u00e5L\u00e7M\u00e9N\u00ebO\u00edP\u00efQ\u00f1R\u00f3S\u00f5"+ - "T\u00f7U\u00f9V\u00fbW\u00fdX\u00ffY\u0101Z\u0103[\u0105\\\u0107]\u0109"+ - "^\u010b_\u010d`\u010fa\u0111b\u0113c\u0115d\u0117e\u0119f\u011b\2\u011d"+ - "\2\u011fg\u0121h\u0123i\u0125j\u0127k\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\2FFHHffhh\4\2R"+ - "Rrr\4\2))^^\4\2$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac|\4\2\2\u0101"+ - "\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\u043c\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\2"+ - "C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\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"+ - "\u0097\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b3\3\2\2\2\2\u00c1"+ - "\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\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\u011f"+ - "\3\2\2\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2"+ - "\2\3\u0129\3\2\2\2\5\u0132\3\2\2\2\7\u0139\3\2\2\2\t\u0141\3\2\2\2\13"+ - "\u0147\3\2\2\2\r\u014c\3\2\2\2\17\u0151\3\2\2\2\21\u0157\3\2\2\2\23\u015c"+ - "\3\2\2\2\25\u0162\3\2\2\2\27\u0168\3\2\2\2\31\u0171\3\2\2\2\33\u0179\3"+ - "\2\2\2\35\u017c\3\2\2\2\37\u0183\3\2\2\2!\u0188\3\2\2\2#\u018d\3\2\2\2"+ - "%\u0195\3\2\2\2\'\u019b\3\2\2\2)\u01a3\3\2\2\2+\u01a9\3\2\2\2-\u01ad\3"+ - "\2\2\2/\u01b0\3\2\2\2\61\u01b5\3\2\2\2\63\u01c0\3\2\2\2\65\u01c7\3\2\2"+ - "\2\67\u01d2\3\2\2\29\u01d6\3\2\2\2;\u01e0\3\2\2\2=\u01e5\3\2\2\2?\u01ec"+ - "\3\2\2\2A\u01f0\3\2\2\2C\u01f8\3\2\2\2E\u0200\3\2\2\2G\u020a\3\2\2\2I"+ - "\u0211\3\2\2\2K\u0218\3\2\2\2M\u021e\3\2\2\2O\u0225\3\2\2\2Q\u022e\3\2"+ - "\2\2S\u0234\3\2\2\2U\u023b\3\2\2\2W\u0248\3\2\2\2Y\u024d\3\2\2\2[\u0253"+ - "\3\2\2\2]\u025a\3\2\2\2_\u0264\3\2\2\2a\u0268\3\2\2\2c\u026d\3\2\2\2e"+ - "\u0276\3\2\2\2g\u0280\3\2\2\2i\u0282\3\2\2\2k\u0286\3\2\2\2m\u028a\3\2"+ - "\2\2o\u028e\3\2\2\2q\u0292\3\2\2\2s\u029e\3\2\2\2u\u02a0\3\2\2\2w\u02ac"+ - "\3\2\2\2y\u02ae\3\2\2\2{\u02b2\3\2\2\2}\u02b5\3\2\2\2\177\u02b9\3\2\2"+ - "\2\u0081\u02bd\3\2\2\2\u0083\u02c7\3\2\2\2\u0085\u02cb\3\2\2\2\u0087\u02cd"+ - "\3\2\2\2\u0089\u02d3\3\2\2\2\u008b\u02dd\3\2\2\2\u008d\u02e1\3\2\2\2\u008f"+ - "\u02e3\3\2\2\2\u0091\u02e7\3\2\2\2\u0093\u02f1\3\2\2\2\u0095\u02f5\3\2"+ - "\2\2\u0097\u02f9\3\2\2\2\u0099\u0316\3\2\2\2\u009b\u0318\3\2\2\2\u009d"+ - "\u031b\3\2\2\2\u009f\u031e\3\2\2\2\u00a1\u0322\3\2\2\2\u00a3\u0324\3\2"+ - "\2\2\u00a5\u0326\3\2\2\2\u00a7\u0336\3\2\2\2\u00a9\u0338\3\2\2\2\u00ab"+ - "\u033b\3\2\2\2\u00ad\u0346\3\2\2\2\u00af\u0350\3\2\2\2\u00b1\u0352\3\2"+ - "\2\2\u00b3\u0354\3\2\2\2\u00b5\u035b\3\2\2\2\u00b7\u0361\3\2\2\2\u00b9"+ - "\u0367\3\2\2\2\u00bb\u0374\3\2\2\2\u00bd\u0376\3\2\2\2\u00bf\u037d\3\2"+ - "\2\2\u00c1\u037f\3\2\2\2\u00c3\u0384\3\2\2\2\u00c5\u0386\3\2\2\2\u00c7"+ - "\u0388\3\2\2\2\u00c9\u038a\3\2\2\2\u00cb\u038c\3\2\2\2\u00cd\u038e\3\2"+ - "\2\2\u00cf\u0390\3\2\2\2\u00d1\u0392\3\2\2\2\u00d3\u0394\3\2\2\2\u00d5"+ - "\u0396\3\2\2\2\u00d7\u0398\3\2\2\2\u00d9\u039a\3\2\2\2\u00db\u039c\3\2"+ - "\2\2\u00dd\u039e\3\2\2\2\u00df\u03a0\3\2\2\2\u00e1\u03a2\3\2\2\2\u00e3"+ - "\u03a4\3\2\2\2\u00e5\u03a7\3\2\2\2\u00e7\u03aa\3\2\2\2\u00e9\u03ad\3\2"+ - "\2\2\u00eb\u03b0\3\2\2\2\u00ed\u03b3\3\2\2\2\u00ef\u03b6\3\2\2\2\u00f1"+ - "\u03b9\3\2\2\2\u00f3\u03bc\3\2\2\2\u00f5\u03be\3\2\2\2\u00f7\u03c0\3\2"+ - "\2\2\u00f9\u03c2\3\2\2\2\u00fb\u03c4\3\2\2\2\u00fd\u03c6\3\2\2\2\u00ff"+ - "\u03c8\3\2\2\2\u0101\u03ca\3\2\2\2\u0103\u03cc\3\2\2\2\u0105\u03cf\3\2"+ - "\2\2\u0107\u03d2\3\2\2\2\u0109\u03d5\3\2\2\2\u010b\u03d8\3\2\2\2\u010d"+ - "\u03db\3\2\2\2\u010f\u03de\3\2\2\2\u0111\u03e1\3\2\2\2\u0113\u03e4\3\2"+ - "\2\2\u0115\u03e8\3\2\2\2\u0117\u03ec\3\2\2\2\u0119\u03f1\3\2\2\2\u011b"+ - "\u03fe\3\2\2\2\u011d\u0406\3\2\2\2\u011f\u0408\3\2\2\2\u0121\u040a\3\2"+ - "\2\2\u0123\u040f\3\2\2\2\u0125\u0415\3\2\2\2\u0127\u0423\3\2\2\2\u0129"+ - "\u012a\7c\2\2\u012a\u012b\7d\2\2\u012b\u012c\7u\2\2\u012c\u012d\7v\2\2"+ - "\u012d\u012e\7t\2\2\u012e\u012f\7c\2\2\u012f\u0130\7e\2\2\u0130\u0131"+ - "\7v\2\2\u0131\4\3\2\2\2\u0132\u0133\7c\2\2\u0133\u0134\7u\2\2\u0134\u0135"+ - "\7u\2\2\u0135\u0136\7g\2\2\u0136\u0137\7t\2\2\u0137\u0138\7v\2\2\u0138"+ - "\6\3\2\2\2\u0139\u013a\7d\2\2\u013a\u013b\7q\2\2\u013b\u013c\7q\2\2\u013c"+ - "\u013d\7n\2\2\u013d\u013e\7g\2\2\u013e\u013f\7c\2\2\u013f\u0140\7p\2\2"+ - "\u0140\b\3\2\2\2\u0141\u0142\7d\2\2\u0142\u0143\7t\2\2\u0143\u0144\7g"+ - "\2\2\u0144\u0145\7c\2\2\u0145\u0146\7m\2\2\u0146\n\3\2\2\2\u0147\u0148"+ - "\7d\2\2\u0148\u0149\7{\2\2\u0149\u014a\7v\2\2\u014a\u014b\7g\2\2\u014b"+ - "\f\3\2\2\2\u014c\u014d\7e\2\2\u014d\u014e\7c\2\2\u014e\u014f\7u\2\2\u014f"+ - "\u0150\7g\2\2\u0150\16\3\2\2\2\u0151\u0152\7e\2\2\u0152\u0153\7c\2\2\u0153"+ - "\u0154\7v\2\2\u0154\u0155\7e\2\2\u0155\u0156\7j\2\2\u0156\20\3\2\2\2\u0157"+ - "\u0158\7e\2\2\u0158\u0159\7j\2\2\u0159\u015a\7c\2\2\u015a\u015b\7t\2\2"+ - "\u015b\22\3\2\2\2\u015c\u015d\7e\2\2\u015d\u015e\7n\2\2\u015e\u015f\7"+ - "c\2\2\u015f\u0160\7u\2\2\u0160\u0161\7u\2\2\u0161\24\3\2\2\2\u0162\u0163"+ - "\7e\2\2\u0163\u0164\7q\2\2\u0164\u0165\7p\2\2\u0165\u0166\7u\2\2\u0166"+ - "\u0167\7v\2\2\u0167\26\3\2\2\2\u0168\u0169\7e\2\2\u0169\u016a\7q\2\2\u016a"+ - "\u016b\7p\2\2\u016b\u016c\7v\2\2\u016c\u016d\7k\2\2\u016d\u016e\7p\2\2"+ - "\u016e\u016f\7w\2\2\u016f\u0170\7g\2\2\u0170\30\3\2\2\2\u0171\u0172\7"+ - "f\2\2\u0172\u0173\7g\2\2\u0173\u0174\7h\2\2\u0174\u0175\7c\2\2\u0175\u0176"+ - "\7w\2\2\u0176\u0177\7n\2\2\u0177\u0178\7v\2\2\u0178\32\3\2\2\2\u0179\u017a"+ - "\7f\2\2\u017a\u017b\7q\2\2\u017b\34\3\2\2\2\u017c\u017d\7f\2\2\u017d\u017e"+ - "\7q\2\2\u017e\u017f\7w\2\2\u017f\u0180\7d\2\2\u0180\u0181\7n\2\2\u0181"+ - "\u0182\7g\2\2\u0182\36\3\2\2\2\u0183\u0184\7g\2\2\u0184\u0185\7n\2\2\u0185"+ - "\u0186\7u\2\2\u0186\u0187\7g\2\2\u0187 \3\2\2\2\u0188\u0189\7g\2\2\u0189"+ - "\u018a\7p\2\2\u018a\u018b\7w\2\2\u018b\u018c\7o\2\2\u018c\"\3\2\2\2\u018d"+ - "\u018e\7g\2\2\u018e\u018f\7z\2\2\u018f\u0190\7v\2\2\u0190\u0191\7g\2\2"+ - "\u0191\u0192\7p\2\2\u0192\u0193\7f\2\2\u0193\u0194\7u\2\2\u0194$\3\2\2"+ - "\2\u0195\u0196\7h\2\2\u0196\u0197\7k\2\2\u0197\u0198\7p\2\2\u0198\u0199"+ - "\7c\2\2\u0199\u019a\7n\2\2\u019a&\3\2\2\2\u019b\u019c\7h\2\2\u019c\u019d"+ - "\7k\2\2\u019d\u019e\7p\2\2\u019e\u019f\7c\2\2\u019f\u01a0\7n\2\2\u01a0"+ - "\u01a1\7n\2\2\u01a1\u01a2\7{\2\2\u01a2(\3\2\2\2\u01a3\u01a4\7h\2\2\u01a4"+ - "\u01a5\7n\2\2\u01a5\u01a6\7q\2\2\u01a6\u01a7\7c\2\2\u01a7\u01a8\7v\2\2"+ - "\u01a8*\3\2\2\2\u01a9\u01aa\7h\2\2\u01aa\u01ab\7q\2\2\u01ab\u01ac\7t\2"+ - "\2\u01ac,\3\2\2\2\u01ad\u01ae\7k\2\2\u01ae\u01af\7h\2\2\u01af.\3\2\2\2"+ - "\u01b0\u01b1\7i\2\2\u01b1\u01b2\7q\2\2\u01b2\u01b3\7v\2\2\u01b3\u01b4"+ - "\7q\2\2\u01b4\60\3\2\2\2\u01b5\u01b6\7k\2\2\u01b6\u01b7\7o\2\2\u01b7\u01b8"+ - "\7r\2\2\u01b8\u01b9\7n\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb\7o\2\2\u01bb"+ - "\u01bc\7g\2\2\u01bc\u01bd\7p\2\2\u01bd\u01be\7v\2\2\u01be\u01bf\7u\2\2"+ - "\u01bf\62\3\2\2\2\u01c0\u01c1\7k\2\2\u01c1\u01c2\7o\2\2\u01c2\u01c3\7"+ - "r\2\2\u01c3\u01c4\7q\2\2\u01c4\u01c5\7t\2\2\u01c5\u01c6\7v\2\2\u01c6\64"+ - "\3\2\2\2\u01c7\u01c8\7k\2\2\u01c8\u01c9\7p\2\2\u01c9\u01ca\7u\2\2\u01ca"+ - "\u01cb\7v\2\2\u01cb\u01cc\7c\2\2\u01cc\u01cd\7p\2\2\u01cd\u01ce\7e\2\2"+ - "\u01ce\u01cf\7g\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7h\2\2\u01d1\66\3\2"+ - "\2\2\u01d2\u01d3\7k\2\2\u01d3\u01d4\7p\2\2\u01d4\u01d5\7v\2\2\u01d58\3"+ - "\2\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7p\2\2\u01d8\u01d9\7v\2\2\u01d9"+ - "\u01da\7g\2\2\u01da\u01db\7t\2\2\u01db\u01dc\7h\2\2\u01dc\u01dd\7c\2\2"+ - "\u01dd\u01de\7e\2\2\u01de\u01df\7g\2\2\u01df:\3\2\2\2\u01e0\u01e1\7n\2"+ - "\2\u01e1\u01e2\7q\2\2\u01e2\u01e3\7p\2\2\u01e3\u01e4\7i\2\2\u01e4<\3\2"+ - "\2\2\u01e5\u01e6\7p\2\2\u01e6\u01e7\7c\2\2\u01e7\u01e8\7v\2\2\u01e8\u01e9"+ - "\7k\2\2\u01e9\u01ea\7x\2\2\u01ea\u01eb\7g\2\2\u01eb>\3\2\2\2\u01ec\u01ed"+ - "\7p\2\2\u01ed\u01ee\7g\2\2\u01ee\u01ef\7y\2\2\u01ef@\3\2\2\2\u01f0\u01f1"+ - "\7r\2\2\u01f1\u01f2\7c\2\2\u01f2\u01f3\7e\2\2\u01f3\u01f4\7m\2\2\u01f4"+ - "\u01f5\7c\2\2\u01f5\u01f6\7i\2\2\u01f6\u01f7\7g\2\2\u01f7B\3\2\2\2\u01f8"+ - "\u01f9\7r\2\2\u01f9\u01fa\7t\2\2\u01fa\u01fb\7k\2\2\u01fb\u01fc\7x\2\2"+ - "\u01fc\u01fd\7c\2\2\u01fd\u01fe\7v\2\2\u01fe\u01ff\7g\2\2\u01ffD\3\2\2"+ - "\2\u0200\u0201\7r\2\2\u0201\u0202\7t\2\2\u0202\u0203\7q\2\2\u0203\u0204"+ - "\7v\2\2\u0204\u0205\7g\2\2\u0205\u0206\7e\2\2\u0206\u0207\7v\2\2\u0207"+ - "\u0208\7g\2\2\u0208\u0209\7f\2\2\u0209F\3\2\2\2\u020a\u020b\7r\2\2\u020b"+ - "\u020c\7w\2\2\u020c\u020d\7d\2\2\u020d\u020e\7n\2\2\u020e\u020f\7k\2\2"+ - "\u020f\u0210\7e\2\2\u0210H\3\2\2\2\u0211\u0212\7t\2\2\u0212\u0213\7g\2"+ - "\2\u0213\u0214\7v\2\2\u0214\u0215\7w\2\2\u0215\u0216\7t\2\2\u0216\u0217"+ - "\7p\2\2\u0217J\3\2\2\2\u0218\u0219\7u\2\2\u0219\u021a\7j\2\2\u021a\u021b"+ - "\7q\2\2\u021b\u021c\7t\2\2\u021c\u021d\7v\2\2\u021dL\3\2\2\2\u021e\u021f"+ - "\7u\2\2\u021f\u0220\7v\2\2\u0220\u0221\7c\2\2\u0221\u0222\7v\2\2\u0222"+ - "\u0223\7k\2\2\u0223\u0224\7e\2\2\u0224N\3\2\2\2\u0225\u0226\7u\2\2\u0226"+ - "\u0227\7v\2\2\u0227\u0228\7t\2\2\u0228\u0229\7k\2\2\u0229\u022a\7e\2\2"+ - "\u022a\u022b\7v\2\2\u022b\u022c\7h\2\2\u022c\u022d\7r\2\2\u022dP\3\2\2"+ - "\2\u022e\u022f\7u\2\2\u022f\u0230\7w\2\2\u0230\u0231\7r\2\2\u0231\u0232"+ - "\7g\2\2\u0232\u0233\7t\2\2\u0233R\3\2\2\2\u0234\u0235\7u\2\2\u0235\u0236"+ - "\7y\2\2\u0236\u0237\7k\2\2\u0237\u0238\7v\2\2\u0238\u0239\7e\2\2\u0239"+ - "\u023a\7j\2\2\u023aT\3\2\2\2\u023b\u023c\7u\2\2\u023c\u023d\7{\2\2\u023d"+ - "\u023e\7p\2\2\u023e\u023f\7e\2\2\u023f\u0240\7j\2\2\u0240\u0241\7t\2\2"+ - "\u0241\u0242\7q\2\2\u0242\u0243\7p\2\2\u0243\u0244\7k\2\2\u0244\u0245"+ - "\7|\2\2\u0245\u0246\7g\2\2\u0246\u0247\7f\2\2\u0247V\3\2\2\2\u0248\u0249"+ - "\7v\2\2\u0249\u024a\7j\2\2\u024a\u024b\7k\2\2\u024b\u024c\7u\2\2\u024c"+ - "X\3\2\2\2\u024d\u024e\7v\2\2\u024e\u024f\7j\2\2\u024f\u0250\7t\2\2\u0250"+ - "\u0251\7q\2\2\u0251\u0252\7y\2\2\u0252Z\3\2\2\2\u0253\u0254\7v\2\2\u0254"+ - "\u0255\7j\2\2\u0255\u0256\7t\2\2\u0256\u0257\7q\2\2\u0257\u0258\7y\2\2"+ - "\u0258\u0259\7u\2\2\u0259\\\3\2\2\2\u025a\u025b\7v\2\2\u025b\u025c\7t"+ - "\2\2\u025c\u025d\7c\2\2\u025d\u025e\7p\2\2\u025e\u025f\7u\2\2\u025f\u0260"+ - "\7k\2\2\u0260\u0261\7g\2\2\u0261\u0262\7p\2\2\u0262\u0263\7v\2\2\u0263"+ - "^\3\2\2\2\u0264\u0265\7v\2\2\u0265\u0266\7t\2\2\u0266\u0267\7{\2\2\u0267"+ - "`\3\2\2\2\u0268\u0269\7x\2\2\u0269\u026a\7q\2\2\u026a\u026b\7k\2\2\u026b"+ - "\u026c\7f\2\2\u026cb\3\2\2\2\u026d\u026e\7x\2\2\u026e\u026f\7q\2\2\u026f"+ - "\u0270\7n\2\2\u0270\u0271\7c\2\2\u0271\u0272\7v\2\2\u0272\u0273\7k\2\2"+ - "\u0273\u0274\7n\2\2\u0274\u0275\7g\2\2\u0275d\3\2\2\2\u0276\u0277\7y\2"+ - "\2\u0277\u0278\7j\2\2\u0278\u0279\7k\2\2\u0279\u027a\7n\2\2\u027a\u027b"+ - "\7g\2\2\u027bf\3\2\2\2\u027c\u0281\5i\65\2\u027d\u0281\5k\66\2\u027e\u0281"+ - "\5m\67\2\u027f\u0281\5o8\2\u0280\u027c\3\2\2\2\u0280\u027d\3\2\2\2\u0280"+ - "\u027e\3\2\2\2\u0280\u027f\3\2\2\2\u0281h\3\2\2\2\u0282\u0284\5s:\2\u0283"+ - "\u0285\5q9\2\u0284\u0283\3\2\2\2\u0284\u0285\3\2\2\2\u0285j\3\2\2\2\u0286"+ - "\u0288\5\177@\2\u0287\u0289\5q9\2\u0288\u0287\3\2\2\2\u0288\u0289\3\2"+ - "\2\2\u0289l\3\2\2\2\u028a\u028c\5\u0087D\2\u028b\u028d\5q9\2\u028c\u028b"+ - "\3\2\2\2\u028c\u028d\3\2\2\2\u028dn\3\2\2\2\u028e\u0290\5\u008fH\2\u028f"+ - "\u0291\5q9\2\u0290\u028f\3\2\2\2\u0290\u0291\3\2\2\2\u0291p\3\2\2\2\u0292"+ - "\u0293\t\2\2\2\u0293r\3\2\2\2\u0294\u029f\7\62\2\2\u0295\u029c\5y=\2\u0296"+ - "\u0298\5u;\2\u0297\u0296\3\2\2\2\u0297\u0298\3\2\2\2\u0298\u029d\3\2\2"+ - "\2\u0299\u029a\5}?\2\u029a\u029b\5u;\2\u029b\u029d\3\2\2\2\u029c\u0297"+ - "\3\2\2\2\u029c\u0299\3\2\2\2\u029d\u029f\3\2\2\2\u029e\u0294\3\2\2\2\u029e"+ - "\u0295\3\2\2\2\u029ft\3\2\2\2\u02a0\u02a8\5w<\2\u02a1\u02a3\5{>\2\u02a2"+ - "\u02a1\3\2\2\2\u02a3\u02a6\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a4\u02a5\3\2"+ - "\2\2\u02a5\u02a7\3\2\2\2\u02a6\u02a4\3\2\2\2\u02a7\u02a9\5w<\2\u02a8\u02a4"+ - "\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9v\3\2\2\2\u02aa\u02ad\7\62\2\2\u02ab"+ - "\u02ad\5y=\2\u02ac\u02aa\3\2\2\2\u02ac\u02ab\3\2\2\2\u02adx\3\2\2\2\u02ae"+ - "\u02af\t\3\2\2\u02afz\3\2\2\2\u02b0\u02b3\5w<\2\u02b1\u02b3\7a\2\2\u02b2"+ - "\u02b0\3\2\2\2\u02b2\u02b1\3\2\2\2\u02b3|\3\2\2\2\u02b4\u02b6\7a\2\2\u02b5"+ - "\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b5\3\2\2\2\u02b7\u02b8\3\2"+ - "\2\2\u02b8~\3\2\2\2\u02b9\u02ba\7\62\2\2\u02ba\u02bb\t\4\2\2\u02bb\u02bc"+ - "\5\u0081A\2\u02bc\u0080\3\2\2\2\u02bd\u02c5\5\u0083B\2\u02be\u02c0\5\u0085"+ - "C\2\u02bf\u02be\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2\u02c1"+ - "\u02c2\3\2\2\2\u02c2\u02c4\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4\u02c6\5\u0083"+ - "B\2\u02c5\u02c1\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0082\3\2\2\2\u02c7"+ - "\u02c8\t\5\2\2\u02c8\u0084\3\2\2\2\u02c9\u02cc\5\u0083B\2\u02ca\u02cc"+ - "\7a\2\2\u02cb\u02c9\3\2\2\2\u02cb\u02ca\3\2\2\2\u02cc\u0086\3\2\2\2\u02cd"+ - "\u02cf\7\62\2\2\u02ce\u02d0\5}?\2\u02cf\u02ce\3\2\2\2\u02cf\u02d0\3\2"+ - "\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d2\5\u0089E\2\u02d2\u0088\3\2\2\2\u02d3"+ - "\u02db\5\u008bF\2\u02d4\u02d6\5\u008dG\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\u02da\3\2\2\2\u02d9"+ - "\u02d7\3\2\2\2\u02da\u02dc\5\u008bF\2\u02db\u02d7\3\2\2\2\u02db\u02dc"+ - "\3\2\2\2\u02dc\u008a\3\2\2\2\u02dd\u02de\t\6\2\2\u02de\u008c\3\2\2\2\u02df"+ - "\u02e2\5\u008bF\2\u02e0\u02e2\7a\2\2\u02e1\u02df\3\2\2\2\u02e1\u02e0\3"+ - "\2\2\2\u02e2\u008e\3\2\2\2\u02e3\u02e4\7\62\2\2\u02e4\u02e5\t\7\2\2\u02e5"+ - "\u02e6\5\u0091I\2\u02e6\u0090\3\2\2\2\u02e7\u02ef\5\u0093J\2\u02e8\u02ea"+ - "\5\u0095K\2\u02e9\u02e8\3\2\2\2\u02ea\u02ed\3\2\2\2\u02eb\u02e9\3\2\2"+ - "\2\u02eb\u02ec\3\2\2\2\u02ec\u02ee\3\2\2\2\u02ed\u02eb\3\2\2\2\u02ee\u02f0"+ - "\5\u0093J\2\u02ef\u02eb\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u0092\3\2\2"+ - "\2\u02f1\u02f2\t\b\2\2\u02f2\u0094\3\2\2\2\u02f3\u02f6\5\u0093J\2\u02f4"+ - "\u02f6\7a\2\2\u02f5\u02f3\3\2\2\2\u02f5\u02f4\3\2\2\2\u02f6\u0096\3\2"+ - "\2\2\u02f7\u02fa\5\u0099M\2\u02f8\u02fa\5\u00a5S\2\u02f9\u02f7\3\2\2\2"+ - "\u02f9\u02f8\3\2\2\2\u02fa\u0098\3\2\2\2\u02fb\u02fc\5u;\2\u02fc\u02fe"+ - "\7\60\2\2\u02fd\u02ff\5u;\2\u02fe\u02fd\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff"+ - "\u0301\3\2\2\2\u0300\u0302\5\u009bN\2\u0301\u0300\3\2\2\2\u0301\u0302"+ - "\3\2\2\2\u0302\u0304\3\2\2\2\u0303\u0305\5\u00a3R\2\u0304\u0303\3\2\2"+ - "\2\u0304\u0305\3\2\2\2\u0305\u0317\3\2\2\2\u0306\u0307\7\60\2\2\u0307"+ - "\u0309\5u;\2\u0308\u030a\5\u009bN\2\u0309\u0308\3\2\2\2\u0309\u030a\3"+ - "\2\2\2\u030a\u030c\3\2\2\2\u030b\u030d\5\u00a3R\2\u030c\u030b\3\2\2\2"+ - "\u030c\u030d\3\2\2\2\u030d\u0317\3\2\2\2\u030e\u030f\5u;\2\u030f\u0311"+ - "\5\u009bN\2\u0310\u0312\5\u00a3R\2\u0311\u0310\3\2\2\2\u0311\u0312\3\2"+ - "\2\2\u0312\u0317\3\2\2\2\u0313\u0314\5u;\2\u0314\u0315\5\u00a3R\2\u0315"+ - "\u0317\3\2\2\2\u0316\u02fb\3\2\2\2\u0316\u0306\3\2\2\2\u0316\u030e\3\2"+ - "\2\2\u0316\u0313\3\2\2\2\u0317\u009a\3\2\2\2\u0318\u0319\5\u009dO\2\u0319"+ - "\u031a\5\u009fP\2\u031a\u009c\3\2\2\2\u031b\u031c\t\t\2\2\u031c\u009e"+ - "\3\2\2\2\u031d\u031f\5\u00a1Q\2\u031e\u031d\3\2\2\2\u031e\u031f\3\2\2"+ - "\2\u031f\u0320\3\2\2\2\u0320\u0321\5u;\2\u0321\u00a0\3\2\2\2\u0322\u0323"+ - "\t\n\2\2\u0323\u00a2\3\2\2\2\u0324\u0325\t\13\2\2\u0325\u00a4\3\2\2\2"+ - "\u0326\u0327\5\u00a7T\2\u0327\u0329\5\u00a9U\2\u0328\u032a\5\u00a3R\2"+ - "\u0329\u0328\3\2\2\2\u0329\u032a\3\2\2\2\u032a\u00a6\3\2\2\2\u032b\u032d"+ - "\5\177@\2\u032c\u032e\7\60\2\2\u032d\u032c\3\2\2\2\u032d\u032e\3\2\2\2"+ - "\u032e\u0337\3\2\2\2\u032f\u0330\7\62\2\2\u0330\u0332\t\4\2\2\u0331\u0333"+ - "\5\u0081A\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2\2\u0333\u0334\3\2\2"+ - "\2\u0334\u0335\7\60\2\2\u0335\u0337\5\u0081A\2\u0336\u032b\3\2\2\2\u0336"+ - "\u032f\3\2\2\2\u0337\u00a8\3\2\2\2\u0338\u0339\5\u00abV\2\u0339\u033a"+ - "\5\u009fP\2\u033a\u00aa\3\2\2\2\u033b\u033c\t\f\2\2\u033c\u00ac\3\2\2"+ - "\2\u033d\u033e\7v\2\2\u033e\u033f\7t\2\2\u033f\u0340\7w\2\2\u0340\u0347"+ - "\7g\2\2\u0341\u0342\7h\2\2\u0342\u0343\7c\2\2\u0343\u0344\7n\2\2\u0344"+ - "\u0345\7u\2\2\u0345\u0347\7g\2\2\u0346\u033d\3\2\2\2\u0346\u0341\3\2\2"+ - "\2\u0347\u00ae\3\2\2\2\u0348\u0349\7)\2\2\u0349\u034a\5\u00b1Y\2\u034a"+ - "\u034b\7)\2\2\u034b\u0351\3\2\2\2\u034c\u034d\7)\2\2\u034d\u034e\5\u00b9"+ - "]\2\u034e\u034f\7)\2\2\u034f\u0351\3\2\2\2\u0350\u0348\3\2\2\2\u0350\u034c"+ - "\3\2\2\2\u0351\u00b0\3\2\2\2\u0352\u0353\n\r\2\2\u0353\u00b2\3\2\2\2\u0354"+ - "\u0356\7$\2\2\u0355\u0357\5\u00b5[\2\u0356\u0355\3\2\2\2\u0356\u0357\3"+ - "\2\2\2\u0357\u0358\3\2\2\2\u0358\u0359\7$\2\2\u0359\u00b4\3\2\2\2\u035a"+ - "\u035c\5\u00b7\\\2\u035b\u035a\3\2\2\2\u035c\u035d\3\2\2\2\u035d\u035b"+ - "\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u00b6\3\2\2\2\u035f\u0362\n\16\2\2"+ - "\u0360\u0362\5\u00b9]\2\u0361\u035f\3\2\2\2\u0361\u0360\3\2\2\2\u0362"+ - "\u00b8\3\2\2\2\u0363\u0364\7^\2\2\u0364\u0368\t\17\2\2\u0365\u0368\5\u00bb"+ - "^\2\u0366\u0368\5\u00bd_\2\u0367\u0363\3\2\2\2\u0367\u0365\3\2\2\2\u0367"+ - "\u0366\3\2\2\2\u0368\u00ba\3\2\2\2\u0369\u036a\7^\2\2\u036a\u0375\5\u008b"+ - "F\2\u036b\u036c\7^\2\2\u036c\u036d\5\u008bF\2\u036d\u036e\5\u008bF\2\u036e"+ - "\u0375\3\2\2\2\u036f\u0370\7^\2\2\u0370\u0371\5\u00bf`\2\u0371\u0372\5"+ - "\u008bF\2\u0372\u0373\5\u008bF\2\u0373\u0375\3\2\2\2\u0374\u0369\3\2\2"+ - "\2\u0374\u036b\3\2\2\2\u0374\u036f\3\2\2\2\u0375\u00bc\3\2\2\2\u0376\u0377"+ - "\7^\2\2\u0377\u0378\7w\2\2\u0378\u0379\5\u0083B\2\u0379\u037a\5\u0083"+ - "B\2\u037a\u037b\5\u0083B\2\u037b\u037c\5\u0083B\2\u037c\u00be\3\2\2\2"+ - "\u037d\u037e\t\20\2\2\u037e\u00c0\3\2\2\2\u037f\u0380\7p\2\2\u0380\u0381"+ - "\7w\2\2\u0381\u0382\7n\2\2\u0382\u0383\7n\2\2\u0383\u00c2\3\2\2\2\u0384"+ - "\u0385\7*\2\2\u0385\u00c4\3\2\2\2\u0386\u0387\7+\2\2\u0387\u00c6\3\2\2"+ - "\2\u0388\u0389\7}\2\2\u0389\u00c8\3\2\2\2\u038a\u038b\7\177\2\2\u038b"+ - "\u00ca\3\2\2\2\u038c\u038d\7]\2\2\u038d\u00cc\3\2\2\2\u038e\u038f\7_\2"+ - "\2\u038f\u00ce\3\2\2\2\u0390\u0391\7=\2\2\u0391\u00d0\3\2\2\2\u0392\u0393"+ - "\7.\2\2\u0393\u00d2\3\2\2\2\u0394\u0395\7\60\2\2\u0395\u00d4\3\2\2\2\u0396"+ - "\u0397\7?\2\2\u0397\u00d6\3\2\2\2\u0398\u0399\7@\2\2\u0399\u00d8\3\2\2"+ - "\2\u039a\u039b\7>\2\2\u039b\u00da\3\2\2\2\u039c\u039d\7#\2\2\u039d\u00dc"+ - "\3\2\2\2\u039e\u039f\7\u0080\2\2\u039f\u00de\3\2\2\2\u03a0\u03a1\7A\2"+ - "\2\u03a1\u00e0\3\2\2\2\u03a2\u03a3\7<\2\2\u03a3\u00e2\3\2\2\2\u03a4\u03a5"+ - "\7?\2\2\u03a5\u03a6\7?\2\2\u03a6\u00e4\3\2\2\2\u03a7\u03a8\7>\2\2\u03a8"+ - "\u03a9\7?\2\2\u03a9\u00e6\3\2\2\2\u03aa\u03ab\7@\2\2\u03ab\u03ac\7?\2"+ - "\2\u03ac\u00e8\3\2\2\2\u03ad\u03ae\7#\2\2\u03ae\u03af\7?\2\2\u03af\u00ea"+ - "\3\2\2\2\u03b0\u03b1\7(\2\2\u03b1\u03b2\7(\2\2\u03b2\u00ec\3\2\2\2\u03b3"+ - "\u03b4\7~\2\2\u03b4\u03b5\7~\2\2\u03b5\u00ee\3\2\2\2\u03b6\u03b7\7-\2"+ - "\2\u03b7\u03b8\7-\2\2\u03b8\u00f0\3\2\2\2\u03b9\u03ba\7/\2\2\u03ba\u03bb"+ - "\7/\2\2\u03bb\u00f2\3\2\2\2\u03bc\u03bd\7-\2\2\u03bd\u00f4\3\2\2\2\u03be"+ - "\u03bf\7/\2\2\u03bf\u00f6\3\2\2\2\u03c0\u03c1\7,\2\2\u03c1\u00f8\3\2\2"+ - "\2\u03c2\u03c3\7\61\2\2\u03c3\u00fa\3\2\2\2\u03c4\u03c5\7(\2\2\u03c5\u00fc"+ - "\3\2\2\2\u03c6\u03c7\7~\2\2\u03c7\u00fe\3\2\2\2\u03c8\u03c9\7`\2\2\u03c9"+ - "\u0100\3\2\2\2\u03ca\u03cb\7\'\2\2\u03cb\u0102\3\2\2\2\u03cc\u03cd\7-"+ - "\2\2\u03cd\u03ce\7?\2\2\u03ce\u0104\3\2\2\2\u03cf\u03d0\7/\2\2\u03d0\u03d1"+ - "\7?\2\2\u03d1\u0106\3\2\2\2\u03d2\u03d3\7,\2\2\u03d3\u03d4\7?\2\2\u03d4"+ - "\u0108\3\2\2\2\u03d5\u03d6\7\61\2\2\u03d6\u03d7\7?\2\2\u03d7\u010a\3\2"+ - "\2\2\u03d8\u03d9\7(\2\2\u03d9\u03da\7?\2\2\u03da\u010c\3\2\2\2\u03db\u03dc"+ - "\7~\2\2\u03dc\u03dd\7?\2\2\u03dd\u010e\3\2\2\2\u03de\u03df\7`\2\2\u03df"+ - "\u03e0\7?\2\2\u03e0\u0110\3\2\2\2\u03e1\u03e2\7\'\2\2\u03e2\u03e3\7?\2"+ - "\2\u03e3\u0112\3\2\2\2\u03e4\u03e5\7>\2\2\u03e5\u03e6\7>\2\2\u03e6\u03e7"+ - "\7?\2\2\u03e7\u0114\3\2\2\2\u03e8\u03e9\7@\2\2\u03e9\u03ea\7@\2\2\u03ea"+ - "\u03eb\7?\2\2\u03eb\u0116\3\2\2\2\u03ec\u03ed\7@\2\2\u03ed\u03ee\7@\2"+ - "\2\u03ee\u03ef\7@\2\2\u03ef\u03f0\7?\2\2\u03f0\u0118\3\2\2\2\u03f1\u03f5"+ - "\5\u011b\u008e\2\u03f2\u03f4\5\u011d\u008f\2\u03f3\u03f2\3\2\2\2\u03f4"+ - "\u03f7\3\2\2\2\u03f5\u03f3\3\2\2\2\u03f5\u03f6\3\2\2\2\u03f6\u011a\3\2"+ - "\2\2\u03f7\u03f5\3\2\2\2\u03f8\u03ff\t\21\2\2\u03f9\u03fa\n\22\2\2\u03fa"+ - "\u03ff\6\u008e\2\2\u03fb\u03fc\t\23\2\2\u03fc\u03fd\t\24\2\2\u03fd\u03ff"+ - "\6\u008e\3\2\u03fe\u03f8\3\2\2\2\u03fe\u03f9\3\2\2\2\u03fe\u03fb\3\2\2"+ - "\2\u03ff\u011c\3\2\2\2\u0400\u0407\t\25\2\2\u0401\u0402\n\22\2\2\u0402"+ - "\u0407\6\u008f\4\2\u0403\u0404\t\23\2\2\u0404\u0405\t\24\2\2\u0405\u0407"+ - "\6\u008f\5\2\u0406\u0400\3\2\2\2\u0406\u0401\3\2\2\2\u0406\u0403\3\2\2"+ - "\2\u0407\u011e\3\2\2\2\u0408\u0409\7B\2\2\u0409\u0120\3\2\2\2\u040a\u040b"+ - "\7\60\2\2\u040b\u040c\7\60\2\2\u040c\u040d\7\60\2\2\u040d\u0122\3\2\2"+ - "\2\u040e\u0410\t\26\2\2\u040f\u040e\3\2\2\2\u0410\u0411\3\2\2\2\u0411"+ - "\u040f\3\2\2\2\u0411\u0412\3\2\2\2\u0412\u0413\3\2\2\2\u0413\u0414\b\u0092"+ - "\2\2\u0414\u0124\3\2\2\2\u0415\u0416\7\61\2\2\u0416\u0417\7,\2\2\u0417"+ - "\u041b\3\2\2\2\u0418\u041a\13\2\2\2\u0419\u0418\3\2\2\2\u041a\u041d\3"+ - "\2\2\2\u041b\u041c\3\2\2\2\u041b\u0419\3\2\2\2\u041c\u041e\3\2\2\2\u041d"+ - "\u041b\3\2\2\2\u041e\u041f\7,\2\2\u041f\u0420\7\61\2\2\u0420\u0421\3\2"+ - "\2\2\u0421\u0422\b\u0093\2\2\u0422\u0126\3\2\2\2\u0423\u0424\7\61\2\2"+ - "\u0424\u0425\7\61\2\2\u0425\u0429\3\2\2\2\u0426\u0428\n\27\2\2\u0427\u0426"+ - "\3\2\2\2\u0428\u042b\3\2\2\2\u0429\u0427\3\2\2\2\u0429\u042a\3\2\2\2\u042a"+ - "\u042c\3\2\2\2\u042b\u0429\3\2\2\2\u042c\u042d\b\u0094\2\2\u042d\u0128"+ - "\3\2\2\2\64\2\u0280\u0284\u0288\u028c\u0290\u0297\u029c\u029e\u02a4\u02a8"+ - "\u02ac\u02b2\u02b7\u02c1\u02c5\u02cb\u02cf\u02d7\u02db\u02e1\u02eb\u02ef"+ - "\u02f5\u02f9\u02fe\u0301\u0304\u0309\u030c\u0311\u0316\u031e\u0329\u032d"+ - "\u0332\u0336\u0346\u0350\u0356\u035d\u0361\u0367\u0374\u03f5\u03fe\u0406"+ - "\u0411\u041b\u0429\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/antlr/Java8Lexer.tokens b/antlr/Java8Lexer.tokens deleted file mode 100644 index 3f62bddf3..000000000 --- a/antlr/Java8Lexer.tokens +++ /dev/null @@ -1,201 +0,0 @@ -THROW=44 -STATIC=38 -INTERFACE=28 -AND_ASSIGN=93 -BREAK=4 -BYTE=5 -ELSE=15 -IF=22 -ENUM=16 -SUB=82 -BANG=69 -LPAREN=57 -DOT=65 -CASE=6 -AT=101 -LINE_COMMENT=105 -StringLiteral=55 -ELLIPSIS=102 -LBRACK=61 -PUBLIC=35 -THROWS=45 -NullLiteral=56 -RSHIFT_ASSIGN=98 -LBRACE=59 -GOTO=23 -SUB_ASSIGN=90 -SEMI=63 -CHAR=8 -ASSIGN=66 -COMMENT=104 -IMPORT=25 -BITOR=86 -CATCH=7 -MUL_ASSIGN=91 -DOUBLE=14 -PROTECTED=34 -LONG=29 -COMMA=64 -BITAND=85 -PRIVATE=33 -CONTINUE=11 -DIV=84 -FloatingPointLiteral=52 -LE=74 -CharacterLiteral=54 -VOLATILE=49 -EXTENDS=17 -INSTANCEOF=26 -NEW=31 -ADD=81 -LT=68 -CLASS=9 -DO=13 -FINALLY=19 -Identifier=100 -CONST=10 -PACKAGE=32 -OR_ASSIGN=94 -TRY=47 -IntegerLiteral=51 -SYNCHRONIZED=42 -MUL=83 -FOR=21 -FINAL=18 -RPAREN=58 -CARET=87 -URSHIFT_ASSIGN=99 -BOOLEAN=3 -NOTEQUAL=76 -RBRACK=62 -RBRACE=60 -AND=77 -THIS=43 -SWITCH=41 -VOID=48 -TRANSIENT=46 -INC=79 -FLOAT=20 -NATIVE=30 -DIV_ASSIGN=92 -BooleanLiteral=53 -ABSTRACT=1 -STRICTFP=39 -INT=27 -QUESTION=71 -RETURN=36 -LSHIFT_ASSIGN=97 -ADD_ASSIGN=89 -WS=103 -GE=75 -SUPER=40 -OR=78 -DEC=80 -MOD=88 -XOR_ASSIGN=95 -ASSERT=2 -EQUAL=73 -IMPLEMENTS=24 -COLON=72 -GT=67 -SHORT=37 -MOD_ASSIGN=96 -WHILE=50 -TILDE=70 -DEFAULT=12 -'import'=25 -'-'=82 -')'=58 -'super'=40 -'else'=15 -'%'=88 -'!'=69 -'>'=67 -'public'=35 -'=='=73 -'--'=80 -'|'=86 -'['=61 -':'=72 -'...'=102 -'throw'=44 -'case'=6 -'.'=65 -'this'=43 -'*'=83 -'switch'=41 -'synchronized'=42 -'&'=85 -'double'=14 -'break'=4 -'short'=37 -'<='=74 -'enum'=16 -'try'=47 -'?'=71 -'if'=22 -'extends'=17 -'goto'=23 -'}'=60 -'instanceof'=26 -';'=63 -'||'=78 -'>>='=98 -'class'=9 -'return'=36 -'&='=93 -'catch'=7 -'native'=30 -'continue'=11 -'strictfp'=39 -'/'=84 -'*='=91 -'+'=81 -'final'=18 -'protected'=34 -'static'=38 -'@'=101 -'transient'=46 -'~'=70 -'assert'=2 -']'=62 -'<'=68 -'++'=79 -'>>>='=99 -'>='=75 -'long'=29 -'boolean'=3 -'const'=10 -'abstract'=1 -'implements'=24 -'volatile'=49 -'throws'=45 -'/='=92 -','=64 -'-='=90 -'do'=13 -'package'=32 -'('=57 -'null'=56 -'int'=27 -'|='=94 -'for'=21 -'^'=87 -'<<='=97 -'='=66 -'byte'=5 -'&&'=77 -'^='=95 -'void'=48 -'while'=50 -'{'=59 -'float'=20 -'!='=76 -'new'=31 -'char'=8 -'finally'=19 -'interface'=28 -'%='=96 -'private'=33 -'+='=89 -'default'=12 diff --git a/antlr/Java8Listener.java b/antlr/Java8Listener.java deleted file mode 100644 index 5b49ebda2..000000000 --- a/antlr/Java8Listener.java +++ /dev/null @@ -1,1020 +0,0 @@ -// Generated from Java8.g4 by ANTLR 4.4 -import org.antlr.v4.runtime.misc.NotNull; -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#memberDeclaration}. - * @param ctx the parse tree - */ - void enterMemberDeclaration(@NotNull Java8Parser.MemberDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#memberDeclaration}. - * @param ctx the parse tree - */ - void exitMemberDeclaration(@NotNull Java8Parser.MemberDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#defaultValue}. - * @param ctx the parse tree - */ - void enterDefaultValue(@NotNull Java8Parser.DefaultValueContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#defaultValue}. - * @param ctx the parse tree - */ - void exitDefaultValue(@NotNull Java8Parser.DefaultValueContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. - * @param ctx the parse tree - */ - void enterAnnotationTypeElementDeclaration(@NotNull Java8Parser.AnnotationTypeElementDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. - * @param ctx the parse tree - */ - void exitAnnotationTypeElementDeclaration(@NotNull Java8Parser.AnnotationTypeElementDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#type}. - * @param ctx the parse tree - */ - void enterType(@NotNull Java8Parser.TypeContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#type}. - * @param ctx the parse tree - */ - void exitType(@NotNull Java8Parser.TypeContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationTypeBody}. - * @param ctx the parse tree - */ - void enterAnnotationTypeBody(@NotNull Java8Parser.AnnotationTypeBodyContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationTypeBody}. - * @param ctx the parse tree - */ - void exitAnnotationTypeBody(@NotNull Java8Parser.AnnotationTypeBodyContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#genericInterfaceMethodDeclaration}. - * @param ctx the parse tree - */ - void enterGenericInterfaceMethodDeclaration(@NotNull Java8Parser.GenericInterfaceMethodDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#genericInterfaceMethodDeclaration}. - * @param ctx the parse tree - */ - void exitGenericInterfaceMethodDeclaration(@NotNull Java8Parser.GenericInterfaceMethodDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classBodyDeclaration}. - * @param ctx the parse tree - */ - void enterClassBodyDeclaration(@NotNull Java8Parser.ClassBodyDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classBodyDeclaration}. - * @param ctx the parse tree - */ - void exitClassBodyDeclaration(@NotNull Java8Parser.ClassBodyDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#block}. - * @param ctx the parse tree - */ - void enterBlock(@NotNull Java8Parser.BlockContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#block}. - * @param ctx the parse tree - */ - void exitBlock(@NotNull Java8Parser.BlockContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. - * @param ctx the parse tree - */ - void enterEnumBodyDeclarations(@NotNull Java8Parser.EnumBodyDeclarationsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. - * @param ctx the parse tree - */ - void exitEnumBodyDeclarations(@NotNull Java8Parser.EnumBodyDeclarationsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#forUpdate}. - * @param ctx the parse tree - */ - void enterForUpdate(@NotNull Java8Parser.ForUpdateContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#forUpdate}. - * @param ctx the parse tree - */ - void exitForUpdate(@NotNull Java8Parser.ForUpdateContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enhancedForControl}. - * @param ctx the parse tree - */ - void enterEnhancedForControl(@NotNull Java8Parser.EnhancedForControlContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enhancedForControl}. - * @param ctx the parse tree - */ - void exitEnhancedForControl(@NotNull Java8Parser.EnhancedForControlContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationConstantRest}. - * @param ctx the parse tree - */ - void enterAnnotationConstantRest(@NotNull Java8Parser.AnnotationConstantRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationConstantRest}. - * @param ctx the parse tree - */ - void exitAnnotationConstantRest(@NotNull Java8Parser.AnnotationConstantRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#explicitGenericInvocation}. - * @param ctx the parse tree - */ - void enterExplicitGenericInvocation(@NotNull Java8Parser.ExplicitGenericInvocationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#explicitGenericInvocation}. - * @param ctx the parse tree - */ - void exitExplicitGenericInvocation(@NotNull Java8Parser.ExplicitGenericInvocationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#nonWildcardTypeArgumentsOrDiamond}. - * @param ctx the parse tree - */ - void enterNonWildcardTypeArgumentsOrDiamond(@NotNull Java8Parser.NonWildcardTypeArgumentsOrDiamondContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#nonWildcardTypeArgumentsOrDiamond}. - * @param ctx the parse tree - */ - void exitNonWildcardTypeArgumentsOrDiamond(@NotNull Java8Parser.NonWildcardTypeArgumentsOrDiamondContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#expressionList}. - * @param ctx the parse tree - */ - void enterExpressionList(@NotNull Java8Parser.ExpressionListContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#expressionList}. - * @param ctx the parse tree - */ - void exitExpressionList(@NotNull Java8Parser.ExpressionListContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementRest}. - * @param ctx the parse tree - */ - void enterAnnotationTypeElementRest(@NotNull Java8Parser.AnnotationTypeElementRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementRest}. - * @param ctx the parse tree - */ - void exitAnnotationTypeElementRest(@NotNull Java8Parser.AnnotationTypeElementRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classOrInterfaceType}. - * @param ctx the parse tree - */ - void enterClassOrInterfaceType(@NotNull Java8Parser.ClassOrInterfaceTypeContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classOrInterfaceType}. - * @param ctx the parse tree - */ - void exitClassOrInterfaceType(@NotNull Java8Parser.ClassOrInterfaceTypeContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeBound}. - * @param ctx the parse tree - */ - void enterTypeBound(@NotNull Java8Parser.TypeBoundContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeBound}. - * @param ctx the parse tree - */ - void exitTypeBound(@NotNull Java8Parser.TypeBoundContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorId}. - * @param ctx the parse tree - */ - void enterVariableDeclaratorId(@NotNull Java8Parser.VariableDeclaratorIdContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorId}. - * @param ctx the parse tree - */ - void exitVariableDeclaratorId(@NotNull Java8Parser.VariableDeclaratorIdContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#primary}. - * @param ctx the parse tree - */ - void enterPrimary(@NotNull Java8Parser.PrimaryContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#primary}. - * @param ctx the parse tree - */ - void exitPrimary(@NotNull Java8Parser.PrimaryContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classCreatorRest}. - * @param ctx the parse tree - */ - void enterClassCreatorRest(@NotNull Java8Parser.ClassCreatorRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classCreatorRest}. - * @param ctx the parse tree - */ - void exitClassCreatorRest(@NotNull Java8Parser.ClassCreatorRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#interfaceBodyDeclaration}. - * @param ctx the parse tree - */ - void enterInterfaceBodyDeclaration(@NotNull Java8Parser.InterfaceBodyDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#interfaceBodyDeclaration}. - * @param ctx the parse tree - */ - void exitInterfaceBodyDeclaration(@NotNull Java8Parser.InterfaceBodyDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeArguments}. - * @param ctx the parse tree - */ - void enterTypeArguments(@NotNull Java8Parser.TypeArgumentsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeArguments}. - * @param ctx the parse tree - */ - void exitTypeArguments(@NotNull Java8Parser.TypeArgumentsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationName}. - * @param ctx the parse tree - */ - void enterAnnotationName(@NotNull Java8Parser.AnnotationNameContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationName}. - * @param ctx the parse tree - */ - void exitAnnotationName(@NotNull Java8Parser.AnnotationNameContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#finallyBlock}. - * @param ctx the parse tree - */ - void enterFinallyBlock(@NotNull Java8Parser.FinallyBlockContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#finallyBlock}. - * @param ctx the parse tree - */ - void exitFinallyBlock(@NotNull Java8Parser.FinallyBlockContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeParameters}. - * @param ctx the parse tree - */ - void enterTypeParameters(@NotNull Java8Parser.TypeParametersContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeParameters}. - * @param ctx the parse tree - */ - void exitTypeParameters(@NotNull Java8Parser.TypeParametersContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#lastFormalParameter}. - * @param ctx the parse tree - */ - void enterLastFormalParameter(@NotNull Java8Parser.LastFormalParameterContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#lastFormalParameter}. - * @param ctx the parse tree - */ - void exitLastFormalParameter(@NotNull Java8Parser.LastFormalParameterContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#constructorBody}. - * @param ctx the parse tree - */ - void enterConstructorBody(@NotNull Java8Parser.ConstructorBodyContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#constructorBody}. - * @param ctx the parse tree - */ - void exitConstructorBody(@NotNull Java8Parser.ConstructorBodyContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#literal}. - * @param ctx the parse tree - */ - void enterLiteral(@NotNull Java8Parser.LiteralContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#literal}. - * @param ctx the parse tree - */ - void exitLiteral(@NotNull Java8Parser.LiteralContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationMethodOrConstantRest}. - * @param ctx the parse tree - */ - void enterAnnotationMethodOrConstantRest(@NotNull Java8Parser.AnnotationMethodOrConstantRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationMethodOrConstantRest}. - * @param ctx the parse tree - */ - void exitAnnotationMethodOrConstantRest(@NotNull Java8Parser.AnnotationMethodOrConstantRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#catchClause}. - * @param ctx the parse tree - */ - void enterCatchClause(@NotNull Java8Parser.CatchClauseContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#catchClause}. - * @param ctx the parse tree - */ - void exitCatchClause(@NotNull Java8Parser.CatchClauseContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#variableDeclarator}. - * @param ctx the parse tree - */ - void enterVariableDeclarator(@NotNull Java8Parser.VariableDeclaratorContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#variableDeclarator}. - * @param ctx the parse tree - */ - void exitVariableDeclarator(@NotNull Java8Parser.VariableDeclaratorContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeList}. - * @param ctx the parse tree - */ - void enterTypeList(@NotNull Java8Parser.TypeListContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeList}. - * @param ctx the parse tree - */ - void exitTypeList(@NotNull Java8Parser.TypeListContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enumConstants}. - * @param ctx the parse tree - */ - void enterEnumConstants(@NotNull Java8Parser.EnumConstantsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enumConstants}. - * @param ctx the parse tree - */ - void exitEnumConstants(@NotNull Java8Parser.EnumConstantsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classBody}. - * @param ctx the parse tree - */ - void enterClassBody(@NotNull Java8Parser.ClassBodyContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classBody}. - * @param ctx the parse tree - */ - void exitClassBody(@NotNull Java8Parser.ClassBodyContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#createdName}. - * @param ctx the parse tree - */ - void enterCreatedName(@NotNull Java8Parser.CreatedNameContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#createdName}. - * @param ctx the parse tree - */ - void exitCreatedName(@NotNull Java8Parser.CreatedNameContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enumDeclaration}. - * @param ctx the parse tree - */ - void enterEnumDeclaration(@NotNull Java8Parser.EnumDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enumDeclaration}. - * @param ctx the parse tree - */ - void exitEnumDeclaration(@NotNull Java8Parser.EnumDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#formalParameter}. - * @param ctx the parse tree - */ - void enterFormalParameter(@NotNull Java8Parser.FormalParameterContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#formalParameter}. - * @param ctx the parse tree - */ - void exitFormalParameter(@NotNull Java8Parser.FormalParameterContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#parExpression}. - * @param ctx the parse tree - */ - void enterParExpression(@NotNull Java8Parser.ParExpressionContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#parExpression}. - * @param ctx the parse tree - */ - void exitParExpression(@NotNull Java8Parser.ParExpressionContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotation}. - * @param ctx the parse tree - */ - void enterAnnotation(@NotNull Java8Parser.AnnotationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotation}. - * @param ctx the parse tree - */ - void exitAnnotation(@NotNull Java8Parser.AnnotationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#variableInitializer}. - * @param ctx the parse tree - */ - void enterVariableInitializer(@NotNull Java8Parser.VariableInitializerContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#variableInitializer}. - * @param ctx the parse tree - */ - void exitVariableInitializer(@NotNull Java8Parser.VariableInitializerContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. - * @param ctx the parse tree - */ - void enterElementValueArrayInitializer(@NotNull Java8Parser.ElementValueArrayInitializerContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. - * @param ctx the parse tree - */ - void exitElementValueArrayInitializer(@NotNull Java8Parser.ElementValueArrayInitializerContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#creator}. - * @param ctx the parse tree - */ - void enterCreator(@NotNull Java8Parser.CreatorContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#creator}. - * @param ctx the parse tree - */ - void exitCreator(@NotNull Java8Parser.CreatorContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#arrayCreatorRest}. - * @param ctx the parse tree - */ - void enterArrayCreatorRest(@NotNull Java8Parser.ArrayCreatorRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#arrayCreatorRest}. - * @param ctx the parse tree - */ - void exitArrayCreatorRest(@NotNull Java8Parser.ArrayCreatorRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#expression}. - * @param ctx the parse tree - */ - void enterExpression(@NotNull Java8Parser.ExpressionContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#expression}. - * @param ctx the parse tree - */ - void exitExpression(@NotNull Java8Parser.ExpressionContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#constantExpression}. - * @param ctx the parse tree - */ - void enterConstantExpression(@NotNull Java8Parser.ConstantExpressionContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#constantExpression}. - * @param ctx the parse tree - */ - void exitConstantExpression(@NotNull Java8Parser.ConstantExpressionContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#qualifiedNameList}. - * @param ctx the parse tree - */ - void enterQualifiedNameList(@NotNull Java8Parser.QualifiedNameListContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#qualifiedNameList}. - * @param ctx the parse tree - */ - void exitQualifiedNameList(@NotNull Java8Parser.QualifiedNameListContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#constructorDeclaration}. - * @param ctx the parse tree - */ - void enterConstructorDeclaration(@NotNull Java8Parser.ConstructorDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#constructorDeclaration}. - * @param ctx the parse tree - */ - void exitConstructorDeclaration(@NotNull Java8Parser.ConstructorDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#forControl}. - * @param ctx the parse tree - */ - void enterForControl(@NotNull Java8Parser.ForControlContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#forControl}. - * @param ctx the parse tree - */ - void exitForControl(@NotNull Java8Parser.ForControlContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#superSuffix}. - * @param ctx the parse tree - */ - void enterSuperSuffix(@NotNull Java8Parser.SuperSuffixContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#superSuffix}. - * @param ctx the parse tree - */ - void exitSuperSuffix(@NotNull Java8Parser.SuperSuffixContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#variableDeclarators}. - * @param ctx the parse tree - */ - void enterVariableDeclarators(@NotNull Java8Parser.VariableDeclaratorsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#variableDeclarators}. - * @param ctx the parse tree - */ - void exitVariableDeclarators(@NotNull Java8Parser.VariableDeclaratorsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#catchType}. - * @param ctx the parse tree - */ - void enterCatchType(@NotNull Java8Parser.CatchTypeContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#catchType}. - * @param ctx the parse tree - */ - void exitCatchType(@NotNull Java8Parser.CatchTypeContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classOrInterfaceModifier}. - * @param ctx the parse tree - */ - void enterClassOrInterfaceModifier(@NotNull Java8Parser.ClassOrInterfaceModifierContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classOrInterfaceModifier}. - * @param ctx the parse tree - */ - void exitClassOrInterfaceModifier(@NotNull Java8Parser.ClassOrInterfaceModifierContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enumConstantName}. - * @param ctx the parse tree - */ - void enterEnumConstantName(@NotNull Java8Parser.EnumConstantNameContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enumConstantName}. - * @param ctx the parse tree - */ - void exitEnumConstantName(@NotNull Java8Parser.EnumConstantNameContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#modifier}. - * @param ctx the parse tree - */ - void enterModifier(@NotNull Java8Parser.ModifierContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#modifier}. - * @param ctx the parse tree - */ - void exitModifier(@NotNull Java8Parser.ModifierContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#innerCreator}. - * @param ctx the parse tree - */ - void enterInnerCreator(@NotNull Java8Parser.InnerCreatorContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#innerCreator}. - * @param ctx the parse tree - */ - void exitInnerCreator(@NotNull Java8Parser.InnerCreatorContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#explicitGenericInvocationSuffix}. - * @param ctx the parse tree - */ - void enterExplicitGenericInvocationSuffix(@NotNull Java8Parser.ExplicitGenericInvocationSuffixContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#explicitGenericInvocationSuffix}. - * @param ctx the parse tree - */ - void exitExplicitGenericInvocationSuffix(@NotNull Java8Parser.ExplicitGenericInvocationSuffixContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#variableModifier}. - * @param ctx the parse tree - */ - void enterVariableModifier(@NotNull Java8Parser.VariableModifierContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#variableModifier}. - * @param ctx the parse tree - */ - void exitVariableModifier(@NotNull Java8Parser.VariableModifierContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#elementValuePair}. - * @param ctx the parse tree - */ - void enterElementValuePair(@NotNull Java8Parser.ElementValuePairContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#elementValuePair}. - * @param ctx the parse tree - */ - void exitElementValuePair(@NotNull Java8Parser.ElementValuePairContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#arrayInitializer}. - * @param ctx the parse tree - */ - void enterArrayInitializer(@NotNull Java8Parser.ArrayInitializerContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#arrayInitializer}. - * @param ctx the parse tree - */ - void exitArrayInitializer(@NotNull Java8Parser.ArrayInitializerContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#elementValue}. - * @param ctx the parse tree - */ - void enterElementValue(@NotNull Java8Parser.ElementValueContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#elementValue}. - * @param ctx the parse tree - */ - void exitElementValue(@NotNull Java8Parser.ElementValueContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#constDeclaration}. - * @param ctx the parse tree - */ - void enterConstDeclaration(@NotNull Java8Parser.ConstDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#constDeclaration}. - * @param ctx the parse tree - */ - void exitConstDeclaration(@NotNull Java8Parser.ConstDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#resource}. - * @param ctx the parse tree - */ - void enterResource(@NotNull Java8Parser.ResourceContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#resource}. - * @param ctx the parse tree - */ - void exitResource(@NotNull Java8Parser.ResourceContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#qualifiedName}. - * @param ctx the parse tree - */ - void enterQualifiedName(@NotNull Java8Parser.QualifiedNameContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#qualifiedName}. - * @param ctx the parse tree - */ - void exitQualifiedName(@NotNull Java8Parser.QualifiedNameContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#resourceSpecification}. - * @param ctx the parse tree - */ - void enterResourceSpecification(@NotNull Java8Parser.ResourceSpecificationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#resourceSpecification}. - * @param ctx the parse tree - */ - void exitResourceSpecification(@NotNull Java8Parser.ResourceSpecificationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#formalParameterList}. - * @param ctx the parse tree - */ - void enterFormalParameterList(@NotNull Java8Parser.FormalParameterListContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#formalParameterList}. - * @param ctx the parse tree - */ - void exitFormalParameterList(@NotNull Java8Parser.FormalParameterListContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. - * @param ctx the parse tree - */ - void enterAnnotationTypeDeclaration(@NotNull Java8Parser.AnnotationTypeDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. - * @param ctx the parse tree - */ - void exitAnnotationTypeDeclaration(@NotNull Java8Parser.AnnotationTypeDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#compilationUnit}. - * @param ctx the parse tree - */ - void enterCompilationUnit(@NotNull Java8Parser.CompilationUnitContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#compilationUnit}. - * @param ctx the parse tree - */ - void exitCompilationUnit(@NotNull Java8Parser.CompilationUnitContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#annotationMethodRest}. - * @param ctx the parse tree - */ - void enterAnnotationMethodRest(@NotNull Java8Parser.AnnotationMethodRestContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#annotationMethodRest}. - * @param ctx the parse tree - */ - void exitAnnotationMethodRest(@NotNull Java8Parser.AnnotationMethodRestContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. - * @param ctx the parse tree - */ - void enterSwitchBlockStatementGroup(@NotNull Java8Parser.SwitchBlockStatementGroupContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. - * @param ctx the parse tree - */ - void exitSwitchBlockStatementGroup(@NotNull Java8Parser.SwitchBlockStatementGroupContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeParameter}. - * @param ctx the parse tree - */ - void enterTypeParameter(@NotNull Java8Parser.TypeParameterContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeParameter}. - * @param ctx the parse tree - */ - void exitTypeParameter(@NotNull Java8Parser.TypeParameterContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#interfaceBody}. - * @param ctx the parse tree - */ - void enterInterfaceBody(@NotNull Java8Parser.InterfaceBodyContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#interfaceBody}. - * @param ctx the parse tree - */ - void exitInterfaceBody(@NotNull Java8Parser.InterfaceBodyContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#methodDeclaration}. - * @param ctx the parse tree - */ - void enterMethodDeclaration(@NotNull Java8Parser.MethodDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#methodDeclaration}. - * @param ctx the parse tree - */ - void exitMethodDeclaration(@NotNull Java8Parser.MethodDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#methodBody}. - * @param ctx the parse tree - */ - void enterMethodBody(@NotNull Java8Parser.MethodBodyContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#methodBody}. - * @param ctx the parse tree - */ - void exitMethodBody(@NotNull Java8Parser.MethodBodyContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeArgument}. - * @param ctx the parse tree - */ - void enterTypeArgument(@NotNull Java8Parser.TypeArgumentContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeArgument}. - * @param ctx the parse tree - */ - void exitTypeArgument(@NotNull Java8Parser.TypeArgumentContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeDeclaration}. - * @param ctx the parse tree - */ - void enterTypeDeclaration(@NotNull Java8Parser.TypeDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeDeclaration}. - * @param ctx the parse tree - */ - void exitTypeDeclaration(@NotNull Java8Parser.TypeDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#genericConstructorDeclaration}. - * @param ctx the parse tree - */ - void enterGenericConstructorDeclaration(@NotNull Java8Parser.GenericConstructorDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#genericConstructorDeclaration}. - * @param ctx the parse tree - */ - void exitGenericConstructorDeclaration(@NotNull Java8Parser.GenericConstructorDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#classDeclaration}. - * @param ctx the parse tree - */ - void enterClassDeclaration(@NotNull Java8Parser.ClassDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#classDeclaration}. - * @param ctx the parse tree - */ - void exitClassDeclaration(@NotNull Java8Parser.ClassDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#enumConstant}. - * @param ctx the parse tree - */ - void enterEnumConstant(@NotNull Java8Parser.EnumConstantContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#enumConstant}. - * @param ctx the parse tree - */ - void exitEnumConstant(@NotNull Java8Parser.EnumConstantContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#statement}. - * @param ctx the parse tree - */ - void enterStatement(@NotNull Java8Parser.StatementContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#statement}. - * @param ctx the parse tree - */ - void exitStatement(@NotNull Java8Parser.StatementContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#importDeclaration}. - * @param ctx the parse tree - */ - void enterImportDeclaration(@NotNull Java8Parser.ImportDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#importDeclaration}. - * @param ctx the parse tree - */ - void exitImportDeclaration(@NotNull Java8Parser.ImportDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#primitiveType}. - * @param ctx the parse tree - */ - void enterPrimitiveType(@NotNull Java8Parser.PrimitiveTypeContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#primitiveType}. - * @param ctx the parse tree - */ - void exitPrimitiveType(@NotNull Java8Parser.PrimitiveTypeContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#interfaceDeclaration}. - * @param ctx the parse tree - */ - void enterInterfaceDeclaration(@NotNull Java8Parser.InterfaceDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#interfaceDeclaration}. - * @param ctx the parse tree - */ - void exitInterfaceDeclaration(@NotNull Java8Parser.InterfaceDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. - * @param ctx the parse tree - */ - void enterLocalVariableDeclarationStatement(@NotNull Java8Parser.LocalVariableDeclarationStatementContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. - * @param ctx the parse tree - */ - void exitLocalVariableDeclarationStatement(@NotNull Java8Parser.LocalVariableDeclarationStatementContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#blockStatement}. - * @param ctx the parse tree - */ - void enterBlockStatement(@NotNull Java8Parser.BlockStatementContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#blockStatement}. - * @param ctx the parse tree - */ - void exitBlockStatement(@NotNull Java8Parser.BlockStatementContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#fieldDeclaration}. - * @param ctx the parse tree - */ - void enterFieldDeclaration(@NotNull Java8Parser.FieldDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#fieldDeclaration}. - * @param ctx the parse tree - */ - void exitFieldDeclaration(@NotNull Java8Parser.FieldDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#constantDeclarator}. - * @param ctx the parse tree - */ - void enterConstantDeclarator(@NotNull Java8Parser.ConstantDeclaratorContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#constantDeclarator}. - * @param ctx the parse tree - */ - void exitConstantDeclarator(@NotNull Java8Parser.ConstantDeclaratorContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#resources}. - * @param ctx the parse tree - */ - void enterResources(@NotNull Java8Parser.ResourcesContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#resources}. - * @param ctx the parse tree - */ - void exitResources(@NotNull Java8Parser.ResourcesContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#statementExpression}. - * @param ctx the parse tree - */ - void enterStatementExpression(@NotNull Java8Parser.StatementExpressionContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#statementExpression}. - * @param ctx the parse tree - */ - void exitStatementExpression(@NotNull Java8Parser.StatementExpressionContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. - * @param ctx the parse tree - */ - void enterInterfaceMethodDeclaration(@NotNull Java8Parser.InterfaceMethodDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. - * @param ctx the parse tree - */ - void exitInterfaceMethodDeclaration(@NotNull Java8Parser.InterfaceMethodDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#packageDeclaration}. - * @param ctx the parse tree - */ - void enterPackageDeclaration(@NotNull Java8Parser.PackageDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#packageDeclaration}. - * @param ctx the parse tree - */ - void exitPackageDeclaration(@NotNull Java8Parser.PackageDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#elementValuePairs}. - * @param ctx the parse tree - */ - void enterElementValuePairs(@NotNull Java8Parser.ElementValuePairsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#elementValuePairs}. - * @param ctx the parse tree - */ - void exitElementValuePairs(@NotNull Java8Parser.ElementValuePairsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#localVariableDeclaration}. - * @param ctx the parse tree - */ - void enterLocalVariableDeclaration(@NotNull Java8Parser.LocalVariableDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#localVariableDeclaration}. - * @param ctx the parse tree - */ - void exitLocalVariableDeclaration(@NotNull Java8Parser.LocalVariableDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#nonWildcardTypeArguments}. - * @param ctx the parse tree - */ - void enterNonWildcardTypeArguments(@NotNull Java8Parser.NonWildcardTypeArgumentsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#nonWildcardTypeArguments}. - * @param ctx the parse tree - */ - void exitNonWildcardTypeArguments(@NotNull Java8Parser.NonWildcardTypeArgumentsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. - * @param ctx the parse tree - */ - void enterInterfaceMemberDeclaration(@NotNull Java8Parser.InterfaceMemberDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. - * @param ctx the parse tree - */ - void exitInterfaceMemberDeclaration(@NotNull Java8Parser.InterfaceMemberDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#switchLabel}. - * @param ctx the parse tree - */ - void enterSwitchLabel(@NotNull Java8Parser.SwitchLabelContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#switchLabel}. - * @param ctx the parse tree - */ - void exitSwitchLabel(@NotNull Java8Parser.SwitchLabelContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#forInit}. - * @param ctx the parse tree - */ - void enterForInit(@NotNull Java8Parser.ForInitContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#forInit}. - * @param ctx the parse tree - */ - void exitForInit(@NotNull Java8Parser.ForInitContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#formalParameters}. - * @param ctx the parse tree - */ - void enterFormalParameters(@NotNull Java8Parser.FormalParametersContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#formalParameters}. - * @param ctx the parse tree - */ - void exitFormalParameters(@NotNull Java8Parser.FormalParametersContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#arguments}. - * @param ctx the parse tree - */ - void enterArguments(@NotNull Java8Parser.ArgumentsContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#arguments}. - * @param ctx the parse tree - */ - void exitArguments(@NotNull Java8Parser.ArgumentsContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#genericMethodDeclaration}. - * @param ctx the parse tree - */ - void enterGenericMethodDeclaration(@NotNull Java8Parser.GenericMethodDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#genericMethodDeclaration}. - * @param ctx the parse tree - */ - void exitGenericMethodDeclaration(@NotNull Java8Parser.GenericMethodDeclarationContext ctx); - /** - * Enter a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. - * @param ctx the parse tree - */ - void enterTypeArgumentsOrDiamond(@NotNull Java8Parser.TypeArgumentsOrDiamondContext ctx); - /** - * Exit a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. - * @param ctx the parse tree - */ - void exitTypeArgumentsOrDiamond(@NotNull Java8Parser.TypeArgumentsOrDiamondContext ctx); -} \ No newline at end of file diff --git a/antlr/Java8Parser.java b/antlr/Java8Parser.java deleted file mode 100644 index 1ebb18417..000000000 --- a/antlr/Java8Parser.java +++ /dev/null @@ -1,7695 +0,0 @@ -// Generated from Java8.g4 by ANTLR 4.4 -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.4", 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, ADD_ASSIGN=89, - SUB_ASSIGN=90, MUL_ASSIGN=91, DIV_ASSIGN=92, AND_ASSIGN=93, OR_ASSIGN=94, - XOR_ASSIGN=95, MOD_ASSIGN=96, LSHIFT_ASSIGN=97, RSHIFT_ASSIGN=98, URSHIFT_ASSIGN=99, - Identifier=100, AT=101, ELLIPSIS=102, WS=103, COMMENT=104, LINE_COMMENT=105; - public static final String[] tokenNames = { - "", "'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", - "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", - "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", "'=='", "'<='", "'>='", - "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", "'*'", "'/'", "'&'", - "'|'", "'^'", "'%'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", - "'%='", "'<<='", "'>>='", "'>>>='", "Identifier", "'@'", "'...'", "WS", - "COMMENT", "LINE_COMMENT" - }; - public static final int - RULE_compilationUnit = 0, RULE_packageDeclaration = 1, RULE_importDeclaration = 2, - RULE_typeDeclaration = 3, RULE_modifier = 4, RULE_classOrInterfaceModifier = 5, - RULE_variableModifier = 6, RULE_classDeclaration = 7, RULE_typeParameters = 8, - RULE_typeParameter = 9, RULE_typeBound = 10, RULE_enumDeclaration = 11, - RULE_enumConstants = 12, RULE_enumConstant = 13, RULE_enumBodyDeclarations = 14, - RULE_interfaceDeclaration = 15, RULE_typeList = 16, RULE_classBody = 17, - RULE_interfaceBody = 18, RULE_classBodyDeclaration = 19, RULE_memberDeclaration = 20, - RULE_methodDeclaration = 21, RULE_genericMethodDeclaration = 22, RULE_constructorDeclaration = 23, - RULE_genericConstructorDeclaration = 24, RULE_fieldDeclaration = 25, RULE_interfaceBodyDeclaration = 26, - RULE_interfaceMemberDeclaration = 27, RULE_constDeclaration = 28, RULE_constantDeclarator = 29, - RULE_interfaceMethodDeclaration = 30, RULE_genericInterfaceMethodDeclaration = 31, - RULE_variableDeclarators = 32, RULE_variableDeclarator = 33, RULE_variableDeclaratorId = 34, - RULE_variableInitializer = 35, RULE_arrayInitializer = 36, RULE_enumConstantName = 37, - RULE_type = 38, RULE_classOrInterfaceType = 39, RULE_primitiveType = 40, - RULE_typeArguments = 41, RULE_typeArgument = 42, RULE_qualifiedNameList = 43, - RULE_formalParameters = 44, RULE_formalParameterList = 45, RULE_formalParameter = 46, - RULE_lastFormalParameter = 47, RULE_methodBody = 48, RULE_constructorBody = 49, - RULE_qualifiedName = 50, RULE_literal = 51, RULE_annotation = 52, RULE_annotationName = 53, - RULE_elementValuePairs = 54, RULE_elementValuePair = 55, RULE_elementValue = 56, - RULE_elementValueArrayInitializer = 57, RULE_annotationTypeDeclaration = 58, - RULE_annotationTypeBody = 59, RULE_annotationTypeElementDeclaration = 60, - RULE_annotationTypeElementRest = 61, RULE_annotationMethodOrConstantRest = 62, - RULE_annotationMethodRest = 63, RULE_annotationConstantRest = 64, RULE_defaultValue = 65, - RULE_block = 66, RULE_blockStatement = 67, RULE_localVariableDeclarationStatement = 68, - RULE_localVariableDeclaration = 69, RULE_statement = 70, RULE_catchClause = 71, - RULE_catchType = 72, RULE_finallyBlock = 73, RULE_resourceSpecification = 74, - RULE_resources = 75, RULE_resource = 76, RULE_switchBlockStatementGroup = 77, - RULE_switchLabel = 78, RULE_forControl = 79, RULE_forInit = 80, RULE_enhancedForControl = 81, - RULE_forUpdate = 82, RULE_parExpression = 83, RULE_expressionList = 84, - RULE_statementExpression = 85, RULE_constantExpression = 86, RULE_expression = 87, - RULE_primary = 88, RULE_creator = 89, RULE_createdName = 90, RULE_innerCreator = 91, - RULE_arrayCreatorRest = 92, RULE_classCreatorRest = 93, RULE_explicitGenericInvocation = 94, - RULE_nonWildcardTypeArguments = 95, RULE_typeArgumentsOrDiamond = 96, - RULE_nonWildcardTypeArgumentsOrDiamond = 97, RULE_superSuffix = 98, RULE_explicitGenericInvocationSuffix = 99, - RULE_arguments = 100; - public static final String[] ruleNames = { - "compilationUnit", "packageDeclaration", "importDeclaration", "typeDeclaration", - "modifier", "classOrInterfaceModifier", "variableModifier", "classDeclaration", - "typeParameters", "typeParameter", "typeBound", "enumDeclaration", "enumConstants", - "enumConstant", "enumBodyDeclarations", "interfaceDeclaration", "typeList", - "classBody", "interfaceBody", "classBodyDeclaration", "memberDeclaration", - "methodDeclaration", "genericMethodDeclaration", "constructorDeclaration", - "genericConstructorDeclaration", "fieldDeclaration", "interfaceBodyDeclaration", - "interfaceMemberDeclaration", "constDeclaration", "constantDeclarator", - "interfaceMethodDeclaration", "genericInterfaceMethodDeclaration", "variableDeclarators", - "variableDeclarator", "variableDeclaratorId", "variableInitializer", "arrayInitializer", - "enumConstantName", "type", "classOrInterfaceType", "primitiveType", "typeArguments", - "typeArgument", "qualifiedNameList", "formalParameters", "formalParameterList", - "formalParameter", "lastFormalParameter", "methodBody", "constructorBody", - "qualifiedName", "literal", "annotation", "annotationName", "elementValuePairs", - "elementValuePair", "elementValue", "elementValueArrayInitializer", "annotationTypeDeclaration", - "annotationTypeBody", "annotationTypeElementDeclaration", "annotationTypeElementRest", - "annotationMethodOrConstantRest", "annotationMethodRest", "annotationConstantRest", - "defaultValue", "block", "blockStatement", "localVariableDeclarationStatement", - "localVariableDeclaration", "statement", "catchClause", "catchType", "finallyBlock", - "resourceSpecification", "resources", "resource", "switchBlockStatementGroup", - "switchLabel", "forControl", "forInit", "enhancedForControl", "forUpdate", - "parExpression", "expressionList", "statementExpression", "constantExpression", - "expression", "primary", "creator", "createdName", "innerCreator", "arrayCreatorRest", - "classCreatorRest", "explicitGenericInvocation", "nonWildcardTypeArguments", - "typeArgumentsOrDiamond", "nonWildcardTypeArgumentsOrDiamond", "superSuffix", - "explicitGenericInvocationSuffix", "arguments" - }; - - @Override - public String getGrammarFileName() { return "Java8.g4"; } - - @Override - public String[] getTokenNames() { return tokenNames; } - - @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 CompilationUnitContext extends ParserRuleContext { - public TypeDeclarationContext typeDeclaration(int i) { - return getRuleContext(TypeDeclarationContext.class,i); - } - public ImportDeclarationContext importDeclaration(int i) { - return getRuleContext(ImportDeclarationContext.class,i); - } - public List importDeclaration() { - return getRuleContexts(ImportDeclarationContext.class); - } - public TerminalNode EOF() { return getToken(Java8Parser.EOF, 0); } - public PackageDeclarationContext packageDeclaration() { - return getRuleContext(PackageDeclarationContext.class,0); - } - public List typeDeclaration() { - return getRuleContexts(TypeDeclarationContext.class); - } - 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, 0, RULE_compilationUnit); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(203); - switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { - case 1: - { - setState(202); packageDeclaration(); - } - break; - } - setState(208); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==IMPORT) { - { - { - setState(205); importDeclaration(); - } - } - setState(210); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(214); - _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(211); typeDeclaration(); - } - } - setState(216); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(217); 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 annotation() { - return getRuleContexts(AnnotationContext.class); - } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public AnnotationContext annotation(int i) { - return getRuleContext(AnnotationContext.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, 2, RULE_packageDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(222); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(219); annotation(); - } - } - setState(224); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(225); match(PACKAGE); - setState(226); qualifiedName(); - setState(227); match(SEMI); - } - } - 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 QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.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, 4, RULE_importDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(229); match(IMPORT); - setState(231); - _la = _input.LA(1); - if (_la==STATIC) { - { - setState(230); match(STATIC); - } - } - - setState(233); qualifiedName(); - setState(236); - _la = _input.LA(1); - if (_la==DOT) { - { - setState(234); match(DOT); - setState(235); match(MUL); - } - } - - setState(238); 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 ClassOrInterfaceModifierContext classOrInterfaceModifier(int i) { - return getRuleContext(ClassOrInterfaceModifierContext.class,i); - } - public EnumDeclarationContext enumDeclaration() { - return getRuleContext(EnumDeclarationContext.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public AnnotationTypeDeclarationContext annotationTypeDeclaration() { - return getRuleContext(AnnotationTypeDeclarationContext.class,0); - } - public List classOrInterfaceModifier() { - return getRuleContexts(ClassOrInterfaceModifierContext.class); - } - 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, 6, RULE_typeDeclaration); - int _la; - try { - int _alt; - setState(269); - switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(243); - _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(240); classOrInterfaceModifier(); - } - } - setState(245); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(246); classDeclaration(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(250); - _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(247); classOrInterfaceModifier(); - } - } - setState(252); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(253); enumDeclaration(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(257); - _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(254); classOrInterfaceModifier(); - } - } - setState(259); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(260); interfaceDeclaration(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(264); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,9,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(261); classOrInterfaceModifier(); - } - } - } - setState(266); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,9,_ctx); - } - setState(267); annotationTypeDeclaration(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(268); match(SEMI); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ModifierContext extends ParserRuleContext { - public ClassOrInterfaceModifierContext classOrInterfaceModifier() { - return getRuleContext(ClassOrInterfaceModifierContext.class,0); - } - public ModifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_modifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterModifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitModifier(this); - } - } - - public final ModifierContext modifier() throws RecognitionException { - ModifierContext _localctx = new ModifierContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_modifier); - int _la; - try { - setState(273); - switch (_input.LA(1)) { - case ABSTRACT: - case FINAL: - case PRIVATE: - case PROTECTED: - case PUBLIC: - case STATIC: - case STRICTFP: - case AT: - enterOuterAlt(_localctx, 1); - { - setState(271); classOrInterfaceModifier(); - } - break; - case NATIVE: - case SYNCHRONIZED: - case TRANSIENT: - case VOLATILE: - enterOuterAlt(_localctx, 2); - { - setState(272); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NATIVE) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOLATILE))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - } - 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 ClassOrInterfaceModifierContext extends ParserRuleContext { - public AnnotationContext annotation() { - return getRuleContext(AnnotationContext.class,0); - } - public ClassOrInterfaceModifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_classOrInterfaceModifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassOrInterfaceModifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassOrInterfaceModifier(this); - } - } - - public final ClassOrInterfaceModifierContext classOrInterfaceModifier() throws RecognitionException { - ClassOrInterfaceModifierContext _localctx = new ClassOrInterfaceModifierContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_classOrInterfaceModifier); - int _la; - try { - setState(277); - switch (_input.LA(1)) { - case AT: - enterOuterAlt(_localctx, 1); - { - setState(275); annotation(); - } - break; - case ABSTRACT: - case FINAL: - case PRIVATE: - case PROTECTED: - case PUBLIC: - case STATIC: - case STRICTFP: - enterOuterAlt(_localctx, 2); - { - setState(276); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - } - 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 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, 12, RULE_variableModifier); - try { - setState(281); - switch (_input.LA(1)) { - case FINAL: - enterOuterAlt(_localctx, 1); - { - setState(279); match(FINAL); - } - break; - case AT: - enterOuterAlt(_localctx, 2); - { - setState(280); annotation(); - } - 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 ClassDeclarationContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public ClassBodyContext classBody() { - return getRuleContext(ClassBodyContext.class,0); - } - public TypeListContext typeList() { - return getRuleContext(TypeListContext.class,0); - } - public TypeParametersContext typeParameters() { - return getRuleContext(TypeParametersContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.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, 14, RULE_classDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(283); match(CLASS); - setState(284); match(Identifier); - setState(286); - _la = _input.LA(1); - if (_la==LT) { - { - setState(285); typeParameters(); - } - } - - setState(290); - _la = _input.LA(1); - if (_la==EXTENDS) { - { - setState(288); match(EXTENDS); - setState(289); type(); - } - } - - setState(294); - _la = _input.LA(1); - if (_la==IMPLEMENTS) { - { - setState(292); match(IMPLEMENTS); - setState(293); typeList(); - } - } - - setState(296); classBody(); - } - } - 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 List typeParameter() { - return getRuleContexts(TypeParameterContext.class); - } - public TypeParameterContext typeParameter(int i) { - return getRuleContext(TypeParameterContext.class,i); - } - 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, 16, RULE_typeParameters); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(298); match(LT); - setState(299); typeParameter(); - setState(304); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(300); match(COMMA); - setState(301); typeParameter(); - } - } - setState(306); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(307); match(GT); - } - } - 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 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, 18, RULE_typeParameter); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(309); match(Identifier); - setState(312); - _la = _input.LA(1); - if (_la==EXTENDS) { - { - setState(310); match(EXTENDS); - setState(311); typeBound(); - } - } - - } - } - 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 TypeContext type(int i) { - return getRuleContext(TypeContext.class,i); - } - public List type() { - return getRuleContexts(TypeContext.class); - } - 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, 20, RULE_typeBound); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(314); type(); - setState(319); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==BITAND) { - { - { - setState(315); match(BITAND); - setState(316); type(); - } - } - setState(321); - _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 EnumDeclarationContext extends ParserRuleContext { - public EnumBodyDeclarationsContext enumBodyDeclarations() { - return getRuleContext(EnumBodyDeclarationsContext.class,0); - } - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public TypeListContext typeList() { - return getRuleContext(TypeListContext.class,0); - } - public TerminalNode ENUM() { return getToken(Java8Parser.ENUM, 0); } - public EnumConstantsContext enumConstants() { - return getRuleContext(EnumConstantsContext.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, 22, RULE_enumDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(322); match(ENUM); - setState(323); match(Identifier); - setState(326); - _la = _input.LA(1); - if (_la==IMPLEMENTS) { - { - setState(324); match(IMPLEMENTS); - setState(325); typeList(); - } - } - - setState(328); match(LBRACE); - setState(330); - _la = _input.LA(1); - if (_la==Identifier || _la==AT) { - { - setState(329); enumConstants(); - } - } - - setState(333); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(332); match(COMMA); - } - } - - setState(336); - _la = _input.LA(1); - if (_la==SEMI) { - { - setState(335); enumBodyDeclarations(); - } - } - - setState(338); match(RBRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class EnumConstantsContext extends ParserRuleContext { - public List enumConstant() { - return getRuleContexts(EnumConstantContext.class); - } - public EnumConstantContext enumConstant(int i) { - return getRuleContext(EnumConstantContext.class,i); - } - public EnumConstantsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enumConstants; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstants(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstants(this); - } - } - - public final EnumConstantsContext enumConstants() throws RecognitionException { - EnumConstantsContext _localctx = new EnumConstantsContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_enumConstants); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(340); enumConstant(); - setState(345); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,24,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(341); match(COMMA); - setState(342); enumConstant(); - } - } - } - setState(347); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,24,_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 annotation() { - return getRuleContexts(AnnotationContext.class); - } - public ClassBodyContext classBody() { - return getRuleContext(ClassBodyContext.class,0); - } - public AnnotationContext annotation(int i) { - return getRuleContext(AnnotationContext.class,i); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.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, 26, RULE_enumConstant); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(351); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(348); annotation(); - } - } - setState(353); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(354); match(Identifier); - setState(356); - _la = _input.LA(1); - if (_la==LPAREN) { - { - setState(355); arguments(); - } - } - - setState(359); - _la = _input.LA(1); - if (_la==LBRACE) { - { - setState(358); classBody(); - } - } - - } - } - 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, 28, RULE_enumBodyDeclarations); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(361); match(SEMI); - setState(365); - _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(362); classBodyDeclaration(); - } - } - setState(367); - _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 TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public InterfaceBodyContext interfaceBody() { - return getRuleContext(InterfaceBodyContext.class,0); - } - public TypeListContext typeList() { - return getRuleContext(TypeListContext.class,0); - } - public TypeParametersContext typeParameters() { - return getRuleContext(TypeParametersContext.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, 30, RULE_interfaceDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(368); match(INTERFACE); - setState(369); match(Identifier); - setState(371); - _la = _input.LA(1); - if (_la==LT) { - { - setState(370); typeParameters(); - } - } - - setState(375); - _la = _input.LA(1); - if (_la==EXTENDS) { - { - setState(373); match(EXTENDS); - setState(374); typeList(); - } - } - - setState(377); interfaceBody(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TypeListContext extends ParserRuleContext { - public TypeContext type(int i) { - return getRuleContext(TypeContext.class,i); - } - public List type() { - return getRuleContexts(TypeContext.class); - } - public TypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeList(this); - } - } - - public final TypeListContext typeList() throws RecognitionException { - TypeListContext _localctx = new TypeListContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_typeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(379); type(); - setState(384); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(380); match(COMMA); - setState(381); type(); - } - } - setState(386); - _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, 34, RULE_classBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(387); match(LBRACE); - setState(391); - _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(388); classBodyDeclaration(); - } - } - setState(393); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(394); match(RBRACE); - } - } - 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 interfaceBodyDeclaration() { - return getRuleContexts(InterfaceBodyDeclarationContext.class); - } - public InterfaceBodyDeclarationContext interfaceBodyDeclaration(int i) { - return getRuleContext(InterfaceBodyDeclarationContext.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, 36, RULE_interfaceBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(396); match(LBRACE); - setState(400); - _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 << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { - { - { - setState(397); interfaceBodyDeclaration(); - } - } - setState(402); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(403); 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 List modifier() { - return getRuleContexts(ModifierContext.class); - } - public MemberDeclarationContext memberDeclaration() { - return getRuleContext(MemberDeclarationContext.class,0); - } - public ModifierContext modifier(int i) { - return getRuleContext(ModifierContext.class,i); - } - public BlockContext block() { - return getRuleContext(BlockContext.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, 38, RULE_classBodyDeclaration); - int _la; - try { - int _alt; - setState(417); - switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(405); match(SEMI); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(407); - _la = _input.LA(1); - if (_la==STATIC) { - { - setState(406); match(STATIC); - } - } - - setState(409); block(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(413); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,35,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(410); modifier(); - } - } - } - setState(415); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,35,_ctx); - } - setState(416); memberDeclaration(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MemberDeclarationContext extends ParserRuleContext { - public GenericMethodDeclarationContext genericMethodDeclaration() { - return getRuleContext(GenericMethodDeclarationContext.class,0); - } - public MethodDeclarationContext methodDeclaration() { - return getRuleContext(MethodDeclarationContext.class,0); - } - public EnumDeclarationContext enumDeclaration() { - return getRuleContext(EnumDeclarationContext.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public AnnotationTypeDeclarationContext annotationTypeDeclaration() { - return getRuleContext(AnnotationTypeDeclarationContext.class,0); - } - public GenericConstructorDeclarationContext genericConstructorDeclaration() { - return getRuleContext(GenericConstructorDeclarationContext.class,0); - } - public InterfaceDeclarationContext interfaceDeclaration() { - return getRuleContext(InterfaceDeclarationContext.class,0); - } - public ConstructorDeclarationContext constructorDeclaration() { - return getRuleContext(ConstructorDeclarationContext.class,0); - } - public FieldDeclarationContext fieldDeclaration() { - return getRuleContext(FieldDeclarationContext.class,0); - } - public MemberDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_memberDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMemberDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMemberDeclaration(this); - } - } - - public final MemberDeclarationContext memberDeclaration() throws RecognitionException { - MemberDeclarationContext _localctx = new MemberDeclarationContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_memberDeclaration); - try { - setState(428); - switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(419); methodDeclaration(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(420); genericMethodDeclaration(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(421); fieldDeclaration(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(422); constructorDeclaration(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(423); genericConstructorDeclaration(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(424); interfaceDeclaration(); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(425); annotationTypeDeclaration(); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(426); classDeclaration(); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(427); enumDeclaration(); - } - 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 TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public MethodBodyContext methodBody() { - return getRuleContext(MethodBodyContext.class,0); - } - public QualifiedNameListContext qualifiedNameList() { - return getRuleContext(QualifiedNameListContext.class,0); - } - public FormalParametersContext formalParameters() { - return getRuleContext(FormalParametersContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - 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, 42, RULE_methodDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(432); - switch (_input.LA(1)) { - case BOOLEAN: - case BYTE: - case CHAR: - case DOUBLE: - case FLOAT: - case INT: - case LONG: - case SHORT: - case Identifier: - { - setState(430); type(); - } - break; - case VOID: - { - setState(431); match(VOID); - } - break; - default: - throw new NoViableAltException(this); - } - setState(434); match(Identifier); - setState(435); formalParameters(); - setState(440); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LBRACK) { - { - { - setState(436); match(LBRACK); - setState(437); match(RBRACK); - } - } - setState(442); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(445); - _la = _input.LA(1); - if (_la==THROWS) { - { - setState(443); match(THROWS); - setState(444); qualifiedNameList(); - } - } - - setState(449); - switch (_input.LA(1)) { - case LBRACE: - { - setState(447); methodBody(); - } - break; - case SEMI: - { - setState(448); 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 GenericMethodDeclarationContext extends ParserRuleContext { - public MethodDeclarationContext methodDeclaration() { - return getRuleContext(MethodDeclarationContext.class,0); - } - public TypeParametersContext typeParameters() { - return getRuleContext(TypeParametersContext.class,0); - } - public GenericMethodDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_genericMethodDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterGenericMethodDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitGenericMethodDeclaration(this); - } - } - - public final GenericMethodDeclarationContext genericMethodDeclaration() throws RecognitionException { - GenericMethodDeclarationContext _localctx = new GenericMethodDeclarationContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_genericMethodDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(451); typeParameters(); - setState(452); methodDeclaration(); - } - } - 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 TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public ConstructorBodyContext constructorBody() { - return getRuleContext(ConstructorBodyContext.class,0); - } - public QualifiedNameListContext qualifiedNameList() { - return getRuleContext(QualifiedNameListContext.class,0); - } - public FormalParametersContext formalParameters() { - return getRuleContext(FormalParametersContext.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, 46, RULE_constructorDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(454); match(Identifier); - setState(455); formalParameters(); - setState(458); - _la = _input.LA(1); - if (_la==THROWS) { - { - setState(456); match(THROWS); - setState(457); qualifiedNameList(); - } - } - - setState(460); constructorBody(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class GenericConstructorDeclarationContext extends ParserRuleContext { - public TypeParametersContext typeParameters() { - return getRuleContext(TypeParametersContext.class,0); - } - public ConstructorDeclarationContext constructorDeclaration() { - return getRuleContext(ConstructorDeclarationContext.class,0); - } - public GenericConstructorDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_genericConstructorDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterGenericConstructorDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitGenericConstructorDeclaration(this); - } - } - - public final GenericConstructorDeclarationContext genericConstructorDeclaration() throws RecognitionException { - GenericConstructorDeclarationContext _localctx = new GenericConstructorDeclarationContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_genericConstructorDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(462); typeParameters(); - setState(463); constructorDeclaration(); - } - } - 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 VariableDeclaratorsContext variableDeclarators() { - return getRuleContext(VariableDeclaratorsContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.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, 50, RULE_fieldDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(465); type(); - setState(466); variableDeclarators(); - setState(467); match(SEMI); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class InterfaceBodyDeclarationContext extends ParserRuleContext { - public List modifier() { - return getRuleContexts(ModifierContext.class); - } - public ModifierContext modifier(int i) { - return getRuleContext(ModifierContext.class,i); - } - public InterfaceMemberDeclarationContext interfaceMemberDeclaration() { - return getRuleContext(InterfaceMemberDeclarationContext.class,0); - } - public InterfaceBodyDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_interfaceBodyDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceBodyDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceBodyDeclaration(this); - } - } - - public final InterfaceBodyDeclarationContext interfaceBodyDeclaration() throws RecognitionException { - InterfaceBodyDeclarationContext _localctx = new InterfaceBodyDeclarationContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_interfaceBodyDeclaration); - try { - int _alt; - setState(477); - switch (_input.LA(1)) { - case ABSTRACT: - case BOOLEAN: - case BYTE: - case CHAR: - case CLASS: - case DOUBLE: - case ENUM: - case FINAL: - case FLOAT: - case INT: - case INTERFACE: - case LONG: - case NATIVE: - case PRIVATE: - case PROTECTED: - case PUBLIC: - case SHORT: - case STATIC: - case STRICTFP: - case SYNCHRONIZED: - case TRANSIENT: - case VOID: - case VOLATILE: - case LT: - case Identifier: - case AT: - enterOuterAlt(_localctx, 1); - { - setState(472); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,43,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(469); modifier(); - } - } - } - setState(474); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,43,_ctx); - } - setState(475); interfaceMemberDeclaration(); - } - break; - case SEMI: - enterOuterAlt(_localctx, 2); - { - setState(476); 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 InterfaceMemberDeclarationContext extends ParserRuleContext { - public EnumDeclarationContext enumDeclaration() { - return getRuleContext(EnumDeclarationContext.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public GenericInterfaceMethodDeclarationContext genericInterfaceMethodDeclaration() { - return getRuleContext(GenericInterfaceMethodDeclarationContext.class,0); - } - public AnnotationTypeDeclarationContext annotationTypeDeclaration() { - return getRuleContext(AnnotationTypeDeclarationContext.class,0); - } - public InterfaceDeclarationContext interfaceDeclaration() { - return getRuleContext(InterfaceDeclarationContext.class,0); - } - public ConstDeclarationContext constDeclaration() { - return getRuleContext(ConstDeclarationContext.class,0); - } - public InterfaceMethodDeclarationContext interfaceMethodDeclaration() { - return getRuleContext(InterfaceMethodDeclarationContext.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, 54, RULE_interfaceMemberDeclaration); - try { - setState(486); - switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(479); constDeclaration(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(480); interfaceMethodDeclaration(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(481); genericInterfaceMethodDeclaration(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(482); interfaceDeclaration(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(483); annotationTypeDeclaration(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(484); classDeclaration(); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(485); enumDeclaration(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ConstDeclarationContext extends ParserRuleContext { - public ConstantDeclaratorContext constantDeclarator(int i) { - return getRuleContext(ConstantDeclaratorContext.class,i); - } - public List constantDeclarator() { - return getRuleContexts(ConstantDeclaratorContext.class); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - public ConstDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstDeclaration(this); - } - } - - public final ConstDeclarationContext constDeclaration() throws RecognitionException { - ConstDeclarationContext _localctx = new ConstDeclarationContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_constDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(488); type(); - setState(489); constantDeclarator(); - setState(494); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(490); match(COMMA); - setState(491); constantDeclarator(); - } - } - setState(496); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(497); match(SEMI); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ConstantDeclaratorContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public VariableInitializerContext variableInitializer() { - return getRuleContext(VariableInitializerContext.class,0); - } - public ConstantDeclaratorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constantDeclarator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantDeclarator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantDeclarator(this); - } - } - - public final ConstantDeclaratorContext constantDeclarator() throws RecognitionException { - ConstantDeclaratorContext _localctx = new ConstantDeclaratorContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_constantDeclarator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(499); match(Identifier); - setState(504); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LBRACK) { - { - { - setState(500); match(LBRACK); - setState(501); match(RBRACK); - } - } - setState(506); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(507); match(ASSIGN); - setState(508); variableInitializer(); - } - } - 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 TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public QualifiedNameListContext qualifiedNameList() { - return getRuleContext(QualifiedNameListContext.class,0); - } - public FormalParametersContext formalParameters() { - return getRuleContext(FormalParametersContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - 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, 60, RULE_interfaceMethodDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(512); - switch (_input.LA(1)) { - case BOOLEAN: - case BYTE: - case CHAR: - case DOUBLE: - case FLOAT: - case INT: - case LONG: - case SHORT: - case Identifier: - { - setState(510); type(); - } - break; - case VOID: - { - setState(511); match(VOID); - } - break; - default: - throw new NoViableAltException(this); - } - setState(514); match(Identifier); - setState(515); formalParameters(); - setState(520); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LBRACK) { - { - { - setState(516); match(LBRACK); - setState(517); match(RBRACK); - } - } - setState(522); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(525); - _la = _input.LA(1); - if (_la==THROWS) { - { - setState(523); match(THROWS); - setState(524); qualifiedNameList(); - } - } - - setState(527); match(SEMI); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class GenericInterfaceMethodDeclarationContext extends ParserRuleContext { - public TypeParametersContext typeParameters() { - return getRuleContext(TypeParametersContext.class,0); - } - public InterfaceMethodDeclarationContext interfaceMethodDeclaration() { - return getRuleContext(InterfaceMethodDeclarationContext.class,0); - } - public GenericInterfaceMethodDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_genericInterfaceMethodDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterGenericInterfaceMethodDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitGenericInterfaceMethodDeclaration(this); - } - } - - public final GenericInterfaceMethodDeclarationContext genericInterfaceMethodDeclaration() throws RecognitionException { - GenericInterfaceMethodDeclarationContext _localctx = new GenericInterfaceMethodDeclarationContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_genericInterfaceMethodDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(529); typeParameters(); - setState(530); interfaceMethodDeclaration(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class VariableDeclaratorsContext extends ParserRuleContext { - public List variableDeclarator() { - return getRuleContexts(VariableDeclaratorContext.class); - } - public VariableDeclaratorContext variableDeclarator(int i) { - return getRuleContext(VariableDeclaratorContext.class,i); - } - public VariableDeclaratorsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableDeclarators; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclarators(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclarators(this); - } - } - - public final VariableDeclaratorsContext variableDeclarators() throws RecognitionException { - VariableDeclaratorsContext _localctx = new VariableDeclaratorsContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_variableDeclarators); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(532); variableDeclarator(); - setState(537); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(533); match(COMMA); - setState(534); variableDeclarator(); - } - } - setState(539); - _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 VariableInitializerContext variableInitializer() { - return getRuleContext(VariableInitializerContext.class,0); - } - public VariableDeclaratorIdContext variableDeclaratorId() { - return getRuleContext(VariableDeclaratorIdContext.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, 66, RULE_variableDeclarator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(540); variableDeclaratorId(); - setState(543); - _la = _input.LA(1); - if (_la==ASSIGN) { - { - setState(541); match(ASSIGN); - setState(542); 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 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, 68, RULE_variableDeclaratorId); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(545); match(Identifier); - setState(550); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LBRACK) { - { - { - setState(546); match(LBRACK); - setState(547); match(RBRACK); - } - } - setState(552); - _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 VariableInitializerContext extends ParserRuleContext { - public ArrayInitializerContext arrayInitializer() { - return getRuleContext(ArrayInitializerContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.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, 70, RULE_variableInitializer); - try { - setState(555); - switch (_input.LA(1)) { - case LBRACE: - enterOuterAlt(_localctx, 1); - { - setState(553); arrayInitializer(); - } - 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 LT: - case BANG: - case TILDE: - case INC: - case DEC: - case ADD: - case SUB: - case Identifier: - enterOuterAlt(_localctx, 2); - { - setState(554); expression(0); - } - 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 ArrayInitializerContext extends ParserRuleContext { - public List variableInitializer() { - return getRuleContexts(VariableInitializerContext.class); - } - public VariableInitializerContext variableInitializer(int i) { - return getRuleContext(VariableInitializerContext.class,i); - } - 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, 72, RULE_arrayInitializer); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(557); match(LBRACE); - setState(569); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(558); variableInitializer(); - setState(563); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,55,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(559); match(COMMA); - setState(560); variableInitializer(); - } - } - } - setState(565); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,55,_ctx); - } - setState(567); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(566); match(COMMA); - } - } - - } - } - - setState(571); match(RBRACE); - } - } - 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, 74, RULE_enumConstantName); - try { - enterOuterAlt(_localctx, 1); - { - setState(573); match(Identifier); - } - } - 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 ClassOrInterfaceTypeContext classOrInterfaceType() { - return getRuleContext(ClassOrInterfaceTypeContext.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, 76, RULE_type); - try { - int _alt; - setState(591); - switch (_input.LA(1)) { - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(575); classOrInterfaceType(); - setState(580); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,58,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(576); match(LBRACK); - setState(577); match(RBRACK); - } - } - } - setState(582); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,58,_ctx); - } - } - break; - case BOOLEAN: - case BYTE: - case CHAR: - case DOUBLE: - case FLOAT: - case INT: - case LONG: - case SHORT: - enterOuterAlt(_localctx, 2); - { - setState(583); primitiveType(); - setState(588); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,59,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(584); match(LBRACK); - setState(585); match(RBRACK); - } - } - } - setState(590); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,59,_ctx); - } - } - 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 ClassOrInterfaceTypeContext extends ParserRuleContext { - public List typeArguments() { - return getRuleContexts(TypeArgumentsContext.class); - } - public List Identifier() { return getTokens(Java8Parser.Identifier); } - public TerminalNode Identifier(int i) { - return getToken(Java8Parser.Identifier, i); - } - public TypeArgumentsContext typeArguments(int i) { - return getRuleContext(TypeArgumentsContext.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, 78, RULE_classOrInterfaceType); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(593); match(Identifier); - setState(595); - switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { - case 1: - { - setState(594); typeArguments(); - } - break; - } - setState(604); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,63,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(597); match(DOT); - setState(598); match(Identifier); - setState(600); - switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) { - case 1: - { - setState(599); typeArguments(); - } - break; - } - } - } - } - setState(606); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,63,_ctx); - } - } - } - 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 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, 80, RULE_primitiveType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(607); - _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 << SHORT))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - } - } - 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 List typeArgument() { - return getRuleContexts(TypeArgumentContext.class); - } - public TypeArgumentContext typeArgument(int i) { - return getRuleContext(TypeArgumentContext.class,i); - } - 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, 82, RULE_typeArguments); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(609); match(LT); - setState(610); typeArgument(); - setState(615); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(611); match(COMMA); - setState(612); typeArgument(); - } - } - setState(617); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(618); match(GT); - } - } - 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 TypeContext type() { - return getRuleContext(TypeContext.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, 84, RULE_typeArgument); - int _la; - try { - setState(626); - 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(620); type(); - } - break; - case QUESTION: - enterOuterAlt(_localctx, 2); - { - setState(621); match(QUESTION); - setState(624); - _la = _input.LA(1); - if (_la==EXTENDS || _la==SUPER) { - { - setState(622); - _la = _input.LA(1); - if ( !(_la==EXTENDS || _la==SUPER) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(623); type(); - } - } - - } - 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 QualifiedNameListContext extends ParserRuleContext { - public List qualifiedName() { - return getRuleContexts(QualifiedNameContext.class); - } - public QualifiedNameContext qualifiedName(int i) { - return getRuleContext(QualifiedNameContext.class,i); - } - public QualifiedNameListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedNameList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterQualifiedNameList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitQualifiedNameList(this); - } - } - - public final QualifiedNameListContext qualifiedNameList() throws RecognitionException { - QualifiedNameListContext _localctx = new QualifiedNameListContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_qualifiedNameList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(628); qualifiedName(); - setState(633); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(629); match(COMMA); - setState(630); qualifiedName(); - } - } - setState(635); - _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 FormalParametersContext extends ParserRuleContext { - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.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, 88, RULE_formalParameters); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(636); match(LPAREN); - setState(638); - _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(637); formalParameterList(); - } - } - - setState(640); match(RPAREN); - } - } - 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 List formalParameter() { - return getRuleContexts(FormalParameterContext.class); - } - public LastFormalParameterContext lastFormalParameter() { - return getRuleContext(LastFormalParameterContext.class,0); - } - public FormalParameterContext formalParameter(int i) { - return getRuleContext(FormalParameterContext.class,i); - } - 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, 90, RULE_formalParameterList); - int _la; - try { - int _alt; - setState(655); - switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(642); formalParameter(); - setState(647); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,69,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(643); match(COMMA); - setState(644); formalParameter(); - } - } - } - setState(649); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,69,_ctx); - } - setState(652); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(650); match(COMMA); - setState(651); lastFormalParameter(); - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(654); lastFormalParameter(); - } - 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 VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - public VariableDeclaratorIdContext variableDeclaratorId() { - return getRuleContext(VariableDeclaratorIdContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.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, 92, RULE_formalParameter); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(660); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(657); variableModifier(); - } - } - setState(662); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(663); type(); - setState(664); variableDeclaratorId(); - } - } - 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 VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - public VariableDeclaratorIdContext variableDeclaratorId() { - return getRuleContext(VariableDeclaratorIdContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.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, 94, RULE_lastFormalParameter); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(669); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(666); variableModifier(); - } - } - setState(671); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(672); type(); - setState(673); match(ELLIPSIS); - setState(674); variableDeclaratorId(); - } - } - 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, 96, RULE_methodBody); - try { - enterOuterAlt(_localctx, 1); - { - setState(676); block(); - } - } - 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 BlockContext block() { - return getRuleContext(BlockContext.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, 98, RULE_constructorBody); - try { - enterOuterAlt(_localctx, 1); - { - setState(678); block(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class QualifiedNameContext extends ParserRuleContext { - public List Identifier() { return getTokens(Java8Parser.Identifier); } - public TerminalNode Identifier(int i) { - return getToken(Java8Parser.Identifier, i); - } - public QualifiedNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterQualifiedName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitQualifiedName(this); - } - } - - public final QualifiedNameContext qualifiedName() throws RecognitionException { - QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_qualifiedName); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(680); match(Identifier); - setState(685); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,74,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(681); match(DOT); - setState(682); match(Identifier); - } - } - } - setState(687); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,74,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class LiteralContext extends ParserRuleContext { - public TerminalNode StringLiteral() { return getToken(Java8Parser.StringLiteral, 0); } - 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 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, 102, RULE_literal); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(688); - _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); - } - consume(); - } - } - 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 ElementValuePairsContext elementValuePairs() { - return getRuleContext(ElementValuePairsContext.class,0); - } - public AnnotationNameContext annotationName() { - return getRuleContext(AnnotationNameContext.class,0); - } - public ElementValueContext elementValue() { - return getRuleContext(ElementValueContext.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, 104, RULE_annotation); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(690); match(AT); - setState(691); annotationName(); - setState(698); - _la = _input.LA(1); - if (_la==LPAREN) { - { - setState(692); match(LPAREN); - setState(695); - switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { - case 1: - { - setState(693); elementValuePairs(); - } - break; - case 2: - { - setState(694); elementValue(); - } - break; - } - setState(697); match(RPAREN); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class AnnotationNameContext extends ParserRuleContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public AnnotationNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationName(this); - } - } - - public final AnnotationNameContext annotationName() throws RecognitionException { - AnnotationNameContext _localctx = new AnnotationNameContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_annotationName); - try { - enterOuterAlt(_localctx, 1); - { - setState(700); qualifiedName(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ElementValuePairsContext extends ParserRuleContext { - public ElementValuePairContext elementValuePair(int i) { - return getRuleContext(ElementValuePairContext.class,i); - } - public List elementValuePair() { - return getRuleContexts(ElementValuePairContext.class); - } - public ElementValuePairsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_elementValuePairs; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePairs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePairs(this); - } - } - - public final ElementValuePairsContext elementValuePairs() throws RecognitionException { - ElementValuePairsContext _localctx = new ElementValuePairsContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_elementValuePairs); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(702); elementValuePair(); - setState(707); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(703); match(COMMA); - setState(704); elementValuePair(); - } - } - setState(709); - _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, 110, RULE_elementValuePair); - try { - enterOuterAlt(_localctx, 1); - { - setState(710); match(Identifier); - setState(711); match(ASSIGN); - setState(712); 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 ElementValueArrayInitializerContext elementValueArrayInitializer() { - return getRuleContext(ElementValueArrayInitializerContext.class,0); - } - public AnnotationContext annotation() { - return getRuleContext(AnnotationContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.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, 112, RULE_elementValue); - try { - setState(717); - 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 LT: - case BANG: - case TILDE: - case INC: - case DEC: - case ADD: - case SUB: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(714); expression(0); - } - break; - case AT: - enterOuterAlt(_localctx, 2); - { - setState(715); annotation(); - } - break; - case LBRACE: - enterOuterAlt(_localctx, 3); - { - setState(716); elementValueArrayInitializer(); - } - 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 ElementValueArrayInitializerContext extends ParserRuleContext { - public ElementValueContext elementValue(int i) { - return getRuleContext(ElementValueContext.class,i); - } - public List elementValue() { - return getRuleContexts(ElementValueContext.class); - } - 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, 114, RULE_elementValueArrayInitializer); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(719); match(LBRACE); - setState(728); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { - { - setState(720); elementValue(); - setState(725); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,79,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(721); match(COMMA); - setState(722); elementValue(); - } - } - } - setState(727); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,79,_ctx); - } - } - } - - setState(731); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(730); match(COMMA); - } - } - - setState(733); match(RBRACE); - } - } - 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 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, 116, RULE_annotationTypeDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(735); match(AT); - setState(736); match(INTERFACE); - setState(737); match(Identifier); - setState(738); 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 annotationTypeElementDeclaration() { - return getRuleContexts(AnnotationTypeElementDeclarationContext.class); - } - public AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration(int i) { - return getRuleContext(AnnotationTypeElementDeclarationContext.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, 118, RULE_annotationTypeBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(740); match(LBRACE); - setState(744); - _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 << VOLATILE) | (1L << SEMI))) != 0) || _la==Identifier || _la==AT) { - { - { - setState(741); annotationTypeElementDeclaration(); - } - } - setState(746); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(747); match(RBRACE); - } - } - 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 List modifier() { - return getRuleContexts(ModifierContext.class); - } - public AnnotationTypeElementRestContext annotationTypeElementRest() { - return getRuleContext(AnnotationTypeElementRestContext.class,0); - } - public ModifierContext modifier(int i) { - return getRuleContext(ModifierContext.class,i); - } - 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, 120, RULE_annotationTypeElementDeclaration); - try { - int _alt; - setState(757); - switch (_input.LA(1)) { - case ABSTRACT: - case BOOLEAN: - case BYTE: - case CHAR: - case CLASS: - case DOUBLE: - case ENUM: - case FINAL: - case FLOAT: - case INT: - case INTERFACE: - case LONG: - case NATIVE: - case PRIVATE: - case PROTECTED: - case PUBLIC: - case SHORT: - case STATIC: - case STRICTFP: - case SYNCHRONIZED: - case TRANSIENT: - case VOLATILE: - case Identifier: - case AT: - enterOuterAlt(_localctx, 1); - { - setState(752); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,83,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(749); modifier(); - } - } - } - setState(754); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,83,_ctx); - } - setState(755); annotationTypeElementRest(); - } - break; - case SEMI: - enterOuterAlt(_localctx, 2); - { - setState(756); 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 AnnotationTypeElementRestContext extends ParserRuleContext { - public EnumDeclarationContext enumDeclaration() { - return getRuleContext(EnumDeclarationContext.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public AnnotationMethodOrConstantRestContext annotationMethodOrConstantRest() { - return getRuleContext(AnnotationMethodOrConstantRestContext.class,0); - } - public AnnotationTypeDeclarationContext annotationTypeDeclaration() { - return getRuleContext(AnnotationTypeDeclarationContext.class,0); - } - public InterfaceDeclarationContext interfaceDeclaration() { - return getRuleContext(InterfaceDeclarationContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - public AnnotationTypeElementRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationTypeElementRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementRest(this); - } - } - - public final AnnotationTypeElementRestContext annotationTypeElementRest() throws RecognitionException { - AnnotationTypeElementRestContext _localctx = new AnnotationTypeElementRestContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_annotationTypeElementRest); - try { - setState(779); - 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(759); type(); - setState(760); annotationMethodOrConstantRest(); - setState(761); match(SEMI); - } - break; - case CLASS: - enterOuterAlt(_localctx, 2); - { - setState(763); classDeclaration(); - setState(765); - switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) { - case 1: - { - setState(764); match(SEMI); - } - break; - } - } - break; - case INTERFACE: - enterOuterAlt(_localctx, 3); - { - setState(767); interfaceDeclaration(); - setState(769); - switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) { - case 1: - { - setState(768); match(SEMI); - } - break; - } - } - break; - case ENUM: - enterOuterAlt(_localctx, 4); - { - setState(771); enumDeclaration(); - setState(773); - switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { - case 1: - { - setState(772); match(SEMI); - } - break; - } - } - break; - case AT: - enterOuterAlt(_localctx, 5); - { - setState(775); annotationTypeDeclaration(); - setState(777); - switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { - case 1: - { - setState(776); match(SEMI); - } - 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 AnnotationMethodOrConstantRestContext extends ParserRuleContext { - public AnnotationMethodRestContext annotationMethodRest() { - return getRuleContext(AnnotationMethodRestContext.class,0); - } - public AnnotationConstantRestContext annotationConstantRest() { - return getRuleContext(AnnotationConstantRestContext.class,0); - } - public AnnotationMethodOrConstantRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationMethodOrConstantRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationMethodOrConstantRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationMethodOrConstantRest(this); - } - } - - public final AnnotationMethodOrConstantRestContext annotationMethodOrConstantRest() throws RecognitionException { - AnnotationMethodOrConstantRestContext _localctx = new AnnotationMethodOrConstantRestContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_annotationMethodOrConstantRest); - try { - setState(783); - switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(781); annotationMethodRest(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(782); annotationConstantRest(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class AnnotationMethodRestContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public DefaultValueContext defaultValue() { - return getRuleContext(DefaultValueContext.class,0); - } - public AnnotationMethodRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationMethodRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationMethodRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationMethodRest(this); - } - } - - public final AnnotationMethodRestContext annotationMethodRest() throws RecognitionException { - AnnotationMethodRestContext _localctx = new AnnotationMethodRestContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_annotationMethodRest); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(785); match(Identifier); - setState(786); match(LPAREN); - setState(787); match(RPAREN); - setState(789); - _la = _input.LA(1); - if (_la==DEFAULT) { - { - setState(788); defaultValue(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class AnnotationConstantRestContext extends ParserRuleContext { - public VariableDeclaratorsContext variableDeclarators() { - return getRuleContext(VariableDeclaratorsContext.class,0); - } - public AnnotationConstantRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationConstantRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationConstantRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationConstantRest(this); - } - } - - public final AnnotationConstantRestContext annotationConstantRest() throws RecognitionException { - AnnotationConstantRestContext _localctx = new AnnotationConstantRestContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_annotationConstantRest); - try { - enterOuterAlt(_localctx, 1); - { - setState(791); variableDeclarators(); - } - } - 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, 130, RULE_defaultValue); - try { - enterOuterAlt(_localctx, 1); - { - setState(793); match(DEFAULT); - setState(794); elementValue(); - } - } - 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 List blockStatement() { - return getRuleContexts(BlockStatementContext.class); - } - public BlockStatementContext blockStatement(int i) { - return getRuleContext(BlockStatementContext.class,i); - } - 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, 132, RULE_block); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(796); match(LBRACE); - setState(800); - _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 << INTERFACE) | (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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { - { - { - setState(797); blockStatement(); - } - } - setState(802); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(803); match(RBRACE); - } - } - 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 TypeDeclarationContext typeDeclaration() { - return getRuleContext(TypeDeclarationContext.class,0); - } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public LocalVariableDeclarationStatementContext localVariableDeclarationStatement() { - return getRuleContext(LocalVariableDeclarationStatementContext.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, 134, RULE_blockStatement); - try { - setState(808); - switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(805); localVariableDeclarationStatement(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(806); statement(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(807); typeDeclaration(); - } - 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, 136, RULE_localVariableDeclarationStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(810); localVariableDeclaration(); - setState(811); 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 VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - public VariableDeclaratorsContext variableDeclarators() { - return getRuleContext(VariableDeclaratorsContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - 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, 138, RULE_localVariableDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(816); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(813); variableModifier(); - } - } - setState(818); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(819); type(); - setState(820); variableDeclarators(); - } - } - 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 ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public StatementExpressionContext statementExpression() { - return getRuleContext(StatementExpressionContext.class,0); - } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); - } - public List switchLabel() { - return getRuleContexts(SwitchLabelContext.class); - } - public List switchBlockStatementGroup() { - return getRuleContexts(SwitchBlockStatementGroupContext.class); - } - public ParExpressionContext parExpression() { - return getRuleContext(ParExpressionContext.class,0); - } - public List catchClause() { - return getRuleContexts(CatchClauseContext.class); - } - public CatchClauseContext catchClause(int i) { - return getRuleContext(CatchClauseContext.class,i); - } - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public FinallyBlockContext finallyBlock() { - return getRuleContext(FinallyBlockContext.class,0); - } - public SwitchBlockStatementGroupContext switchBlockStatementGroup(int i) { - return getRuleContext(SwitchBlockStatementGroupContext.class,i); - } - public ForControlContext forControl() { - return getRuleContext(ForControlContext.class,0); - } - public TerminalNode ASSERT() { return getToken(Java8Parser.ASSERT, 0); } - public ResourceSpecificationContext resourceSpecification() { - return getRuleContext(ResourceSpecificationContext.class,0); - } - public List statement() { - return getRuleContexts(StatementContext.class); - } - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public SwitchLabelContext switchLabel(int i) { - return getRuleContext(SwitchLabelContext.class,i); - } - 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, 140, RULE_statement); - int _la; - try { - int _alt; - setState(926); - switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(822); block(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(823); match(ASSERT); - setState(824); expression(0); - setState(827); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(825); match(COLON); - setState(826); expression(0); - } - } - - setState(829); match(SEMI); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(831); match(IF); - setState(832); parExpression(); - setState(833); statement(); - setState(836); - switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) { - case 1: - { - setState(834); match(ELSE); - setState(835); statement(); - } - break; - } - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(838); match(FOR); - setState(839); match(LPAREN); - setState(840); forControl(); - setState(841); match(RPAREN); - setState(842); statement(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(844); match(WHILE); - setState(845); parExpression(); - setState(846); statement(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(848); match(DO); - setState(849); statement(); - setState(850); match(WHILE); - setState(851); parExpression(); - setState(852); match(SEMI); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(854); match(TRY); - setState(855); block(); - setState(865); - switch (_input.LA(1)) { - case CATCH: - { - setState(857); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(856); catchClause(); - } - } - setState(859); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==CATCH ); - setState(862); - _la = _input.LA(1); - if (_la==FINALLY) { - { - setState(861); finallyBlock(); - } - } - - } - break; - case FINALLY: - { - setState(864); finallyBlock(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(867); match(TRY); - setState(868); resourceSpecification(); - setState(869); block(); - setState(873); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==CATCH) { - { - { - setState(870); catchClause(); - } - } - setState(875); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(877); - _la = _input.LA(1); - if (_la==FINALLY) { - { - setState(876); finallyBlock(); - } - } - - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(879); match(SWITCH); - setState(880); parExpression(); - setState(881); match(LBRACE); - setState(885); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,102,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(882); switchBlockStatementGroup(); - } - } - } - setState(887); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,102,_ctx); - } - setState(891); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==CASE || _la==DEFAULT) { - { - { - setState(888); switchLabel(); - } - } - setState(893); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(894); match(RBRACE); - } - break; - case 10: - enterOuterAlt(_localctx, 10); - { - setState(896); match(SYNCHRONIZED); - setState(897); parExpression(); - setState(898); block(); - } - break; - case 11: - enterOuterAlt(_localctx, 11); - { - setState(900); match(RETURN); - setState(902); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(901); expression(0); - } - } - - setState(904); match(SEMI); - } - break; - case 12: - enterOuterAlt(_localctx, 12); - { - setState(905); match(THROW); - setState(906); expression(0); - setState(907); match(SEMI); - } - break; - case 13: - enterOuterAlt(_localctx, 13); - { - setState(909); match(BREAK); - setState(911); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(910); match(Identifier); - } - } - - setState(913); match(SEMI); - } - break; - case 14: - enterOuterAlt(_localctx, 14); - { - setState(914); match(CONTINUE); - setState(916); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(915); match(Identifier); - } - } - - setState(918); match(SEMI); - } - break; - case 15: - enterOuterAlt(_localctx, 15); - { - setState(919); match(SEMI); - } - break; - case 16: - enterOuterAlt(_localctx, 16); - { - setState(920); statementExpression(); - setState(921); match(SEMI); - } - break; - case 17: - enterOuterAlt(_localctx, 17); - { - setState(923); match(Identifier); - setState(924); match(COLON); - setState(925); statement(); - } - break; - } - } - 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 CatchTypeContext catchType() { - return getRuleContext(CatchTypeContext.class,0); - } - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - 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, 142, RULE_catchClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(928); match(CATCH); - setState(929); match(LPAREN); - setState(933); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(930); variableModifier(); - } - } - setState(935); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(936); catchType(); - setState(937); match(Identifier); - setState(938); match(RPAREN); - setState(939); block(); - } - } - 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 List qualifiedName() { - return getRuleContexts(QualifiedNameContext.class); - } - public QualifiedNameContext qualifiedName(int i) { - return getRuleContext(QualifiedNameContext.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, 144, RULE_catchType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(941); qualifiedName(); - setState(946); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==BITOR) { - { - { - setState(942); match(BITOR); - setState(943); qualifiedName(); - } - } - setState(948); - _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 FinallyBlockContext extends ParserRuleContext { - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public FinallyBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_finallyBlock; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFinallyBlock(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFinallyBlock(this); - } - } - - public final FinallyBlockContext finallyBlock() throws RecognitionException { - FinallyBlockContext _localctx = new FinallyBlockContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_finallyBlock); - try { - enterOuterAlt(_localctx, 1); - { - setState(949); match(FINALLY); - setState(950); block(); - } - } - 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 ResourcesContext resources() { - return getRuleContext(ResourcesContext.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, 148, RULE_resourceSpecification); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(952); match(LPAREN); - setState(953); resources(); - setState(955); - _la = _input.LA(1); - if (_la==SEMI) { - { - setState(954); match(SEMI); - } - } - - setState(957); match(RPAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ResourcesContext extends ParserRuleContext { - public ResourceContext resource(int i) { - return getRuleContext(ResourceContext.class,i); - } - public List resource() { - return getRuleContexts(ResourceContext.class); - } - public ResourcesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_resources; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResources(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResources(this); - } - } - - public final ResourcesContext resources() throws RecognitionException { - ResourcesContext _localctx = new ResourcesContext(_ctx, getState()); - enterRule(_localctx, 150, RULE_resources); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(959); resource(); - setState(964); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,111,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(960); match(SEMI); - setState(961); resource(); - } - } - } - setState(966); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,111,_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 VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - public ClassOrInterfaceTypeContext classOrInterfaceType() { - return getRuleContext(ClassOrInterfaceTypeContext.class,0); - } - public VariableDeclaratorIdContext variableDeclaratorId() { - return getRuleContext(VariableDeclaratorIdContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - 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, 152, RULE_resource); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(970); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(967); variableModifier(); - } - } - setState(972); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(973); classOrInterfaceType(); - setState(974); variableDeclaratorId(); - setState(975); match(ASSIGN); - setState(976); expression(0); - } - } - 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 List blockStatement() { - return getRuleContexts(BlockStatementContext.class); - } - public List switchLabel() { - return getRuleContexts(SwitchLabelContext.class); - } - public BlockStatementContext blockStatement(int i) { - return getRuleContext(BlockStatementContext.class,i); - } - public SwitchLabelContext switchLabel(int i) { - return getRuleContext(SwitchLabelContext.class,i); - } - 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, 154, RULE_switchBlockStatementGroup); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(979); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(978); switchLabel(); - } - } - setState(981); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==CASE || _la==DEFAULT ); - setState(984); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(983); blockStatement(); - } - } - setState(986); - _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 << INTERFACE) | (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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0) ); - } - } - 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, 156, RULE_switchLabel); - try { - setState(998); - switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(988); match(CASE); - setState(989); constantExpression(); - setState(990); match(COLON); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(992); match(CASE); - setState(993); enumConstantName(); - setState(994); match(COLON); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(996); match(DEFAULT); - setState(997); match(COLON); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ForControlContext extends ParserRuleContext { - public ForUpdateContext forUpdate() { - return getRuleContext(ForUpdateContext.class,0); - } - public ForInitContext forInit() { - return getRuleContext(ForInitContext.class,0); - } - public EnhancedForControlContext enhancedForControl() { - return getRuleContext(EnhancedForControlContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public ForControlContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_forControl; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForControl(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForControl(this); - } - } - - public final ForControlContext forControl() throws RecognitionException { - ForControlContext _localctx = new ForControlContext(_ctx, getState()); - enterRule(_localctx, 158, RULE_forControl); - int _la; - try { - setState(1012); - switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1000); enhancedForControl(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1002); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { - { - setState(1001); forInit(); - } - } - - setState(1004); match(SEMI); - setState(1006); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(1005); expression(0); - } - } - - setState(1008); match(SEMI); - setState(1010); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(1009); forUpdate(); - } - } - - } - break; - } - } - 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 LocalVariableDeclarationContext localVariableDeclaration() { - return getRuleContext(LocalVariableDeclarationContext.class,0); - } - public ExpressionListContext expressionList() { - return getRuleContext(ExpressionListContext.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, 160, RULE_forInit); - try { - setState(1016); - switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1014); localVariableDeclaration(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1015); expressionList(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class EnhancedForControlContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public VariableModifierContext variableModifier(int i) { - return getRuleContext(VariableModifierContext.class,i); - } - public List variableModifier() { - return getRuleContexts(VariableModifierContext.class); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public EnhancedForControlContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enhancedForControl; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForControl(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForControl(this); - } - } - - public final EnhancedForControlContext enhancedForControl() throws RecognitionException { - EnhancedForControlContext _localctx = new EnhancedForControlContext(_ctx, getState()); - enterRule(_localctx, 162, RULE_enhancedForControl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1021); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==FINAL || _la==AT) { - { - { - setState(1018); variableModifier(); - } - } - setState(1023); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1024); type(); - setState(1025); match(Identifier); - setState(1026); match(COLON); - setState(1027); expression(0); - } - } - 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 ExpressionListContext expressionList() { - return getRuleContext(ExpressionListContext.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, 164, RULE_forUpdate); - try { - enterOuterAlt(_localctx, 1); - { - setState(1029); expressionList(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ParExpressionContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public ParExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_parExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterParExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitParExpression(this); - } - } - - public final ParExpressionContext parExpression() throws RecognitionException { - ParExpressionContext _localctx = new ParExpressionContext(_ctx, getState()); - enterRule(_localctx, 166, RULE_parExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(1031); match(LPAREN); - setState(1032); expression(0); - setState(1033); match(RPAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ExpressionListContext extends ParserRuleContext { - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expressionList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionList(this); - } - } - - public final ExpressionListContext expressionList() throws RecognitionException { - ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState()); - enterRule(_localctx, 168, RULE_expressionList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1035); expression(0); - setState(1040); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1036); match(COMMA); - setState(1037); expression(0); - } - } - setState(1042); - _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 StatementExpressionContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.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, 170, RULE_statementExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(1043); expression(0); - } - } - 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, 172, RULE_constantExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(1045); expression(0); - } - } - 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 TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() { - return getRuleContext(NonWildcardTypeArgumentsContext.class,0); - } - public ExplicitGenericInvocationContext explicitGenericInvocation() { - return getRuleContext(ExplicitGenericInvocationContext.class,0); - } - public ExpressionListContext expressionList() { - return getRuleContext(ExpressionListContext.class,0); - } - public InnerCreatorContext innerCreator() { - return getRuleContext(InnerCreatorContext.class,0); - } - public SuperSuffixContext superSuffix() { - return getRuleContext(SuperSuffixContext.class,0); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public PrimaryContext primary() { - return getRuleContext(PrimaryContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public CreatorContext creator() { - return getRuleContext(CreatorContext.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 { - return expression(0); - } - - private ExpressionContext expression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); - ExpressionContext _prevctx = _localctx; - int _startState = 174; - enterRecursionRule(_localctx, 174, RULE_expression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1060); - switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) { - case 1: - { - setState(1048); match(LPAREN); - setState(1049); type(); - setState(1050); match(RPAREN); - setState(1051); expression(17); - } - break; - case 2: - { - setState(1053); - _la = _input.LA(1); - if ( !(((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (ADD - 79)) | (1L << (SUB - 79)))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1054); expression(15); - } - break; - case 3: - { - setState(1055); - _la = _input.LA(1); - if ( !(_la==BANG || _la==TILDE) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1056); expression(14); - } - break; - case 4: - { - setState(1057); primary(); - } - break; - case 5: - { - setState(1058); match(NEW); - setState(1059); creator(); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(1147); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,128,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(1145); - switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) { - case 1: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1062); - if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); - setState(1063); - _la = _input.LA(1); - if ( !(((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (MUL - 83)) | (1L << (DIV - 83)) | (1L << (MOD - 83)))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1064); expression(14); - } - break; - case 2: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1065); - if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); - setState(1066); - _la = _input.LA(1); - if ( !(_la==ADD || _la==SUB) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1067); expression(13); - } - break; - case 3: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1068); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); - setState(1076); - switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) { - case 1: - { - setState(1069); match(LT); - setState(1070); match(LT); - } - break; - case 2: - { - setState(1071); match(GT); - setState(1072); match(GT); - setState(1073); match(GT); - } - break; - case 3: - { - setState(1074); match(GT); - setState(1075); match(GT); - } - break; - } - setState(1078); expression(12); - } - break; - case 4: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1079); - if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); - setState(1080); - _la = _input.LA(1); - if ( !(((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & ((1L << (GT - 67)) | (1L << (LT - 67)) | (1L << (LE - 67)) | (1L << (GE - 67)))) != 0)) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1081); expression(11); - } - break; - case 5: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1082); - if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(1083); - _la = _input.LA(1); - if ( !(_la==EQUAL || _la==NOTEQUAL) ) { - _errHandler.recoverInline(this); - } - consume(); - setState(1084); expression(9); - } - break; - case 6: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1085); - if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(1086); match(BITAND); - setState(1087); expression(8); - } - break; - case 7: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1088); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(1089); match(CARET); - setState(1090); expression(7); - } - break; - case 8: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1091); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(1092); match(BITOR); - setState(1093); expression(6); - } - break; - case 9: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1094); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(1095); match(AND); - setState(1096); expression(5); - } - break; - case 10: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1097); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1098); match(OR); - setState(1099); expression(4); - } - break; - case 11: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1100); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(1101); match(QUESTION); - setState(1102); expression(0); - setState(1103); match(COLON); - setState(1104); expression(3); - } - break; - case 12: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1106); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(1107); - _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); - } - consume(); - setState(1108); expression(2); - } - break; - case 13: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1109); - if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)"); - setState(1110); match(DOT); - setState(1111); match(Identifier); - } - break; - case 14: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1112); - if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)"); - setState(1113); match(DOT); - setState(1114); match(THIS); - } - break; - case 15: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1115); - if (!(precpred(_ctx, 23))) throw new FailedPredicateException(this, "precpred(_ctx, 23)"); - setState(1116); match(DOT); - setState(1117); match(NEW); - setState(1119); - _la = _input.LA(1); - if (_la==LT) { - { - setState(1118); nonWildcardTypeArguments(); - } - } - - setState(1121); innerCreator(); - } - break; - case 16: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1122); - if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)"); - setState(1123); match(DOT); - setState(1124); match(SUPER); - setState(1125); superSuffix(); - } - break; - case 17: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1126); - if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)"); - setState(1127); match(DOT); - setState(1128); explicitGenericInvocation(); - } - break; - case 18: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1129); - if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)"); - setState(1130); match(LBRACK); - setState(1131); expression(0); - setState(1132); match(RBRACK); - } - break; - case 19: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1134); - if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)"); - setState(1135); match(LPAREN); - setState(1137); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(1136); expressionList(); - } - } - - setState(1139); match(RPAREN); - } - break; - case 20: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1140); - if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); - setState(1141); - _la = _input.LA(1); - if ( !(_la==INC || _la==DEC) ) { - _errHandler.recoverInline(this); - } - consume(); - } - break; - case 21: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(1142); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(1143); match(INSTANCEOF); - setState(1144); type(); - } - break; - } - } - } - setState(1149); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,128,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public static class PrimaryContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() { - return getRuleContext(NonWildcardTypeArgumentsContext.class,0); - } - public ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() { - return getRuleContext(ExplicitGenericInvocationSuffixContext.class,0); - } - public LiteralContext literal() { - return getRuleContext(LiteralContext.class,0); - } - public TypeContext type() { - return getRuleContext(TypeContext.class,0); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - 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, 176, RULE_primary); - try { - setState(1171); - switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1150); match(LPAREN); - setState(1151); expression(0); - setState(1152); match(RPAREN); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1154); match(THIS); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1155); match(SUPER); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1156); literal(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(1157); match(Identifier); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(1158); type(); - setState(1159); match(DOT); - setState(1160); match(CLASS); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(1162); match(VOID); - setState(1163); match(DOT); - setState(1164); match(CLASS); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(1165); nonWildcardTypeArguments(); - setState(1169); - switch (_input.LA(1)) { - case SUPER: - case Identifier: - { - setState(1166); explicitGenericInvocationSuffix(); - } - break; - case THIS: - { - setState(1167); match(THIS); - setState(1168); arguments(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class CreatorContext extends ParserRuleContext { - public ArrayCreatorRestContext arrayCreatorRest() { - return getRuleContext(ArrayCreatorRestContext.class,0); - } - public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() { - return getRuleContext(NonWildcardTypeArgumentsContext.class,0); - } - public ClassCreatorRestContext classCreatorRest() { - return getRuleContext(ClassCreatorRestContext.class,0); - } - public CreatedNameContext createdName() { - return getRuleContext(CreatedNameContext.class,0); - } - public CreatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_creator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCreator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCreator(this); - } - } - - public final CreatorContext creator() throws RecognitionException { - CreatorContext _localctx = new CreatorContext(_ctx, getState()); - enterRule(_localctx, 178, RULE_creator); - try { - setState(1182); - switch (_input.LA(1)) { - case LT: - enterOuterAlt(_localctx, 1); - { - setState(1173); nonWildcardTypeArguments(); - setState(1174); createdName(); - setState(1175); classCreatorRest(); - } - break; - case BOOLEAN: - case BYTE: - case CHAR: - case DOUBLE: - case FLOAT: - case INT: - case LONG: - case SHORT: - case Identifier: - enterOuterAlt(_localctx, 2); - { - setState(1177); createdName(); - setState(1180); - switch (_input.LA(1)) { - case LBRACK: - { - setState(1178); arrayCreatorRest(); - } - break; - case LPAREN: - { - setState(1179); classCreatorRest(); - } - break; - default: - throw new NoViableAltException(this); - } - } - 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 CreatedNameContext extends ParserRuleContext { - public List Identifier() { return getTokens(Java8Parser.Identifier); } - public TerminalNode Identifier(int i) { - return getToken(Java8Parser.Identifier, i); - } - public List typeArgumentsOrDiamond() { - return getRuleContexts(TypeArgumentsOrDiamondContext.class); - } - public PrimitiveTypeContext primitiveType() { - return getRuleContext(PrimitiveTypeContext.class,0); - } - public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond(int i) { - return getRuleContext(TypeArgumentsOrDiamondContext.class,i); - } - public CreatedNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_createdName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCreatedName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCreatedName(this); - } - } - - public final CreatedNameContext createdName() throws RecognitionException { - CreatedNameContext _localctx = new CreatedNameContext(_ctx, getState()); - enterRule(_localctx, 180, RULE_createdName); - int _la; - try { - setState(1199); - switch (_input.LA(1)) { - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(1184); match(Identifier); - setState(1186); - _la = _input.LA(1); - if (_la==LT) { - { - setState(1185); typeArgumentsOrDiamond(); - } - } - - setState(1195); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==DOT) { - { - { - setState(1188); match(DOT); - setState(1189); match(Identifier); - setState(1191); - _la = _input.LA(1); - if (_la==LT) { - { - setState(1190); typeArgumentsOrDiamond(); - } - } - - } - } - setState(1197); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case BOOLEAN: - case BYTE: - case CHAR: - case DOUBLE: - case FLOAT: - case INT: - case LONG: - case SHORT: - enterOuterAlt(_localctx, 2); - { - setState(1198); primitiveType(); - } - 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 InnerCreatorContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public ClassCreatorRestContext classCreatorRest() { - return getRuleContext(ClassCreatorRestContext.class,0); - } - public NonWildcardTypeArgumentsOrDiamondContext nonWildcardTypeArgumentsOrDiamond() { - return getRuleContext(NonWildcardTypeArgumentsOrDiamondContext.class,0); - } - public InnerCreatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_innerCreator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInnerCreator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInnerCreator(this); - } - } - - public final InnerCreatorContext innerCreator() throws RecognitionException { - InnerCreatorContext _localctx = new InnerCreatorContext(_ctx, getState()); - enterRule(_localctx, 182, RULE_innerCreator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1201); match(Identifier); - setState(1203); - _la = _input.LA(1); - if (_la==LT) { - { - setState(1202); nonWildcardTypeArgumentsOrDiamond(); - } - } - - setState(1205); classCreatorRest(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ArrayCreatorRestContext extends ParserRuleContext { - public ArrayInitializerContext arrayInitializer() { - return getRuleContext(ArrayInitializerContext.class,0); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ArrayCreatorRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrayCreatorRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayCreatorRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayCreatorRest(this); - } - } - - public final ArrayCreatorRestContext arrayCreatorRest() throws RecognitionException { - ArrayCreatorRestContext _localctx = new ArrayCreatorRestContext(_ctx, getState()); - enterRule(_localctx, 184, RULE_arrayCreatorRest); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1207); match(LBRACK); - setState(1235); - switch (_input.LA(1)) { - case RBRACK: - { - setState(1208); match(RBRACK); - setState(1213); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LBRACK) { - { - { - setState(1209); match(LBRACK); - setState(1210); match(RBRACK); - } - } - setState(1215); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1216); arrayInitializer(); - } - 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 LT: - case BANG: - case TILDE: - case INC: - case DEC: - case ADD: - case SUB: - case Identifier: - { - setState(1217); expression(0); - setState(1218); match(RBRACK); - setState(1225); - _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(1219); match(LBRACK); - setState(1220); expression(0); - setState(1221); match(RBRACK); - } - } - } - setState(1227); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,139,_ctx); - } - setState(1232); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,140,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1228); match(LBRACK); - setState(1229); match(RBRACK); - } - } - } - setState(1234); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,140,_ctx); - } - } - 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 ClassCreatorRestContext extends ParserRuleContext { - public ClassBodyContext classBody() { - return getRuleContext(ClassBodyContext.class,0); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public ClassCreatorRestContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_classCreatorRest; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassCreatorRest(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassCreatorRest(this); - } - } - - public final ClassCreatorRestContext classCreatorRest() throws RecognitionException { - ClassCreatorRestContext _localctx = new ClassCreatorRestContext(_ctx, getState()); - enterRule(_localctx, 186, RULE_classCreatorRest); - try { - enterOuterAlt(_localctx, 1); - { - setState(1237); arguments(); - setState(1239); - switch ( getInterpreter().adaptivePredict(_input,142,_ctx) ) { - case 1: - { - setState(1238); classBody(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ExplicitGenericInvocationContext extends ParserRuleContext { - public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() { - return getRuleContext(NonWildcardTypeArgumentsContext.class,0); - } - public ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() { - return getRuleContext(ExplicitGenericInvocationSuffixContext.class,0); - } - public ExplicitGenericInvocationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_explicitGenericInvocation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExplicitGenericInvocation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExplicitGenericInvocation(this); - } - } - - public final ExplicitGenericInvocationContext explicitGenericInvocation() throws RecognitionException { - ExplicitGenericInvocationContext _localctx = new ExplicitGenericInvocationContext(_ctx, getState()); - enterRule(_localctx, 188, RULE_explicitGenericInvocation); - try { - enterOuterAlt(_localctx, 1); - { - setState(1241); nonWildcardTypeArguments(); - setState(1242); explicitGenericInvocationSuffix(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NonWildcardTypeArgumentsContext extends ParserRuleContext { - public TypeListContext typeList() { - return getRuleContext(TypeListContext.class,0); - } - public NonWildcardTypeArgumentsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_nonWildcardTypeArguments; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNonWildcardTypeArguments(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNonWildcardTypeArguments(this); - } - } - - public final NonWildcardTypeArgumentsContext nonWildcardTypeArguments() throws RecognitionException { - NonWildcardTypeArgumentsContext _localctx = new NonWildcardTypeArgumentsContext(_ctx, getState()); - enterRule(_localctx, 190, RULE_nonWildcardTypeArguments); - try { - enterOuterAlt(_localctx, 1); - { - setState(1244); match(LT); - setState(1245); typeList(); - setState(1246); match(GT); - } - } - 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, 192, RULE_typeArgumentsOrDiamond); - try { - setState(1251); - switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1248); match(LT); - setState(1249); match(GT); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1250); typeArguments(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NonWildcardTypeArgumentsOrDiamondContext extends ParserRuleContext { - public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() { - return getRuleContext(NonWildcardTypeArgumentsContext.class,0); - } - public NonWildcardTypeArgumentsOrDiamondContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_nonWildcardTypeArgumentsOrDiamond; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNonWildcardTypeArgumentsOrDiamond(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNonWildcardTypeArgumentsOrDiamond(this); - } - } - - public final NonWildcardTypeArgumentsOrDiamondContext nonWildcardTypeArgumentsOrDiamond() throws RecognitionException { - NonWildcardTypeArgumentsOrDiamondContext _localctx = new NonWildcardTypeArgumentsOrDiamondContext(_ctx, getState()); - enterRule(_localctx, 194, RULE_nonWildcardTypeArgumentsOrDiamond); - try { - setState(1256); - switch ( getInterpreter().adaptivePredict(_input,144,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1253); match(LT); - setState(1254); match(GT); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1255); nonWildcardTypeArguments(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SuperSuffixContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public SuperSuffixContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_superSuffix; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperSuffix(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperSuffix(this); - } - } - - public final SuperSuffixContext superSuffix() throws RecognitionException { - SuperSuffixContext _localctx = new SuperSuffixContext(_ctx, getState()); - enterRule(_localctx, 196, RULE_superSuffix); - try { - setState(1264); - switch (_input.LA(1)) { - case LPAREN: - enterOuterAlt(_localctx, 1); - { - setState(1258); arguments(); - } - break; - case DOT: - enterOuterAlt(_localctx, 2); - { - setState(1259); match(DOT); - setState(1260); match(Identifier); - setState(1262); - switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) { - case 1: - { - setState(1261); arguments(); - } - 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 ExplicitGenericInvocationSuffixContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } - public SuperSuffixContext superSuffix() { - return getRuleContext(SuperSuffixContext.class,0); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public ExplicitGenericInvocationSuffixContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_explicitGenericInvocationSuffix; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExplicitGenericInvocationSuffix(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExplicitGenericInvocationSuffix(this); - } - } - - public final ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() throws RecognitionException { - ExplicitGenericInvocationSuffixContext _localctx = new ExplicitGenericInvocationSuffixContext(_ctx, getState()); - enterRule(_localctx, 198, RULE_explicitGenericInvocationSuffix); - try { - setState(1270); - switch (_input.LA(1)) { - case SUPER: - enterOuterAlt(_localctx, 1); - { - setState(1266); match(SUPER); - setState(1267); superSuffix(); - } - break; - case Identifier: - enterOuterAlt(_localctx, 2); - { - setState(1268); match(Identifier); - setState(1269); arguments(); - } - 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 ArgumentsContext extends ParserRuleContext { - public ExpressionListContext expressionList() { - return getRuleContext(ExpressionListContext.class,0); - } - public ArgumentsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arguments; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArguments(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArguments(this); - } - } - - public final ArgumentsContext arguments() throws RecognitionException { - ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState()); - enterRule(_localctx, 200, RULE_arguments); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1272); match(LPAREN); - setState(1274); - _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 - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (BANG - 68)) | (1L << (TILDE - 68)) | (1L << (INC - 68)) | (1L << (DEC - 68)) | (1L << (ADD - 68)) | (1L << (SUB - 68)) | (1L << (Identifier - 68)))) != 0)) { - { - setState(1273); expressionList(); - } - } - - setState(1276); match(RPAREN); - } - } - 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 87: return expression_sempred((ExpressionContext)_localctx, predIndex); - } - return true; - } - private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 0: return precpred(_ctx, 13); - case 1: return precpred(_ctx, 12); - case 2: return precpred(_ctx, 11); - case 3: return precpred(_ctx, 10); - case 4: return precpred(_ctx, 8); - case 5: return precpred(_ctx, 7); - case 6: return precpred(_ctx, 6); - case 7: return precpred(_ctx, 5); - case 8: return precpred(_ctx, 4); - case 9: return precpred(_ctx, 3); - case 10: return precpred(_ctx, 2); - case 11: return precpred(_ctx, 1); - case 12: return precpred(_ctx, 25); - case 13: return precpred(_ctx, 24); - case 14: return precpred(_ctx, 23); - case 15: return precpred(_ctx, 22); - case 16: return precpred(_ctx, 21); - case 17: return precpred(_ctx, 20); - case 18: return precpred(_ctx, 19); - case 19: return precpred(_ctx, 16); - case 20: return precpred(_ctx, 9); - } - return true; - } - - public static final String _serializedATN = - "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3k\u0501\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\3\2\5\2\u00ce\n\2\3\2\7\2\u00d1"+ - "\n\2\f\2\16\2\u00d4\13\2\3\2\7\2\u00d7\n\2\f\2\16\2\u00da\13\2\3\2\3\2"+ - "\3\3\7\3\u00df\n\3\f\3\16\3\u00e2\13\3\3\3\3\3\3\3\3\3\3\4\3\4\5\4\u00ea"+ - "\n\4\3\4\3\4\3\4\5\4\u00ef\n\4\3\4\3\4\3\5\7\5\u00f4\n\5\f\5\16\5\u00f7"+ - "\13\5\3\5\3\5\7\5\u00fb\n\5\f\5\16\5\u00fe\13\5\3\5\3\5\7\5\u0102\n\5"+ - "\f\5\16\5\u0105\13\5\3\5\3\5\7\5\u0109\n\5\f\5\16\5\u010c\13\5\3\5\3\5"+ - "\5\5\u0110\n\5\3\6\3\6\5\6\u0114\n\6\3\7\3\7\5\7\u0118\n\7\3\b\3\b\5\b"+ - "\u011c\n\b\3\t\3\t\3\t\5\t\u0121\n\t\3\t\3\t\5\t\u0125\n\t\3\t\3\t\5\t"+ - "\u0129\n\t\3\t\3\t\3\n\3\n\3\n\3\n\7\n\u0131\n\n\f\n\16\n\u0134\13\n\3"+ - "\n\3\n\3\13\3\13\3\13\5\13\u013b\n\13\3\f\3\f\3\f\7\f\u0140\n\f\f\f\16"+ - "\f\u0143\13\f\3\r\3\r\3\r\3\r\5\r\u0149\n\r\3\r\3\r\5\r\u014d\n\r\3\r"+ - "\5\r\u0150\n\r\3\r\5\r\u0153\n\r\3\r\3\r\3\16\3\16\3\16\7\16\u015a\n\16"+ - "\f\16\16\16\u015d\13\16\3\17\7\17\u0160\n\17\f\17\16\17\u0163\13\17\3"+ - "\17\3\17\5\17\u0167\n\17\3\17\5\17\u016a\n\17\3\20\3\20\7\20\u016e\n\20"+ - "\f\20\16\20\u0171\13\20\3\21\3\21\3\21\5\21\u0176\n\21\3\21\3\21\5\21"+ - "\u017a\n\21\3\21\3\21\3\22\3\22\3\22\7\22\u0181\n\22\f\22\16\22\u0184"+ - "\13\22\3\23\3\23\7\23\u0188\n\23\f\23\16\23\u018b\13\23\3\23\3\23\3\24"+ - "\3\24\7\24\u0191\n\24\f\24\16\24\u0194\13\24\3\24\3\24\3\25\3\25\5\25"+ - "\u019a\n\25\3\25\3\25\7\25\u019e\n\25\f\25\16\25\u01a1\13\25\3\25\5\25"+ - "\u01a4\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u01af\n"+ - "\26\3\27\3\27\5\27\u01b3\n\27\3\27\3\27\3\27\3\27\7\27\u01b9\n\27\f\27"+ - "\16\27\u01bc\13\27\3\27\3\27\5\27\u01c0\n\27\3\27\3\27\5\27\u01c4\n\27"+ - "\3\30\3\30\3\30\3\31\3\31\3\31\3\31\5\31\u01cd\n\31\3\31\3\31\3\32\3\32"+ - "\3\32\3\33\3\33\3\33\3\33\3\34\7\34\u01d9\n\34\f\34\16\34\u01dc\13\34"+ - "\3\34\3\34\5\34\u01e0\n\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5\35\u01e9"+ - "\n\35\3\36\3\36\3\36\3\36\7\36\u01ef\n\36\f\36\16\36\u01f2\13\36\3\36"+ - "\3\36\3\37\3\37\3\37\7\37\u01f9\n\37\f\37\16\37\u01fc\13\37\3\37\3\37"+ - "\3\37\3 \3 \5 \u0203\n \3 \3 \3 \3 \7 \u0209\n \f \16 \u020c\13 \3 \3"+ - " \5 \u0210\n \3 \3 \3!\3!\3!\3\"\3\"\3\"\7\"\u021a\n\"\f\"\16\"\u021d"+ - "\13\"\3#\3#\3#\5#\u0222\n#\3$\3$\3$\7$\u0227\n$\f$\16$\u022a\13$\3%\3"+ - "%\5%\u022e\n%\3&\3&\3&\3&\7&\u0234\n&\f&\16&\u0237\13&\3&\5&\u023a\n&"+ - "\5&\u023c\n&\3&\3&\3\'\3\'\3(\3(\3(\7(\u0245\n(\f(\16(\u0248\13(\3(\3"+ - "(\3(\7(\u024d\n(\f(\16(\u0250\13(\5(\u0252\n(\3)\3)\5)\u0256\n)\3)\3)"+ - "\3)\5)\u025b\n)\7)\u025d\n)\f)\16)\u0260\13)\3*\3*\3+\3+\3+\3+\7+\u0268"+ - "\n+\f+\16+\u026b\13+\3+\3+\3,\3,\3,\3,\5,\u0273\n,\5,\u0275\n,\3-\3-\3"+ - "-\7-\u027a\n-\f-\16-\u027d\13-\3.\3.\5.\u0281\n.\3.\3.\3/\3/\3/\7/\u0288"+ - "\n/\f/\16/\u028b\13/\3/\3/\5/\u028f\n/\3/\5/\u0292\n/\3\60\7\60\u0295"+ - "\n\60\f\60\16\60\u0298\13\60\3\60\3\60\3\60\3\61\7\61\u029e\n\61\f\61"+ - "\16\61\u02a1\13\61\3\61\3\61\3\61\3\61\3\62\3\62\3\63\3\63\3\64\3\64\3"+ - "\64\7\64\u02ae\n\64\f\64\16\64\u02b1\13\64\3\65\3\65\3\66\3\66\3\66\3"+ - "\66\3\66\5\66\u02ba\n\66\3\66\5\66\u02bd\n\66\3\67\3\67\38\38\38\78\u02c4"+ - "\n8\f8\168\u02c7\138\39\39\39\39\3:\3:\3:\5:\u02d0\n:\3;\3;\3;\3;\7;\u02d6"+ - "\n;\f;\16;\u02d9\13;\5;\u02db\n;\3;\5;\u02de\n;\3;\3;\3<\3<\3<\3<\3<\3"+ - "=\3=\7=\u02e9\n=\f=\16=\u02ec\13=\3=\3=\3>\7>\u02f1\n>\f>\16>\u02f4\13"+ - ">\3>\3>\5>\u02f8\n>\3?\3?\3?\3?\3?\3?\5?\u0300\n?\3?\3?\5?\u0304\n?\3"+ - "?\3?\5?\u0308\n?\3?\3?\5?\u030c\n?\5?\u030e\n?\3@\3@\5@\u0312\n@\3A\3"+ - "A\3A\3A\5A\u0318\nA\3B\3B\3C\3C\3C\3D\3D\7D\u0321\nD\fD\16D\u0324\13D"+ - "\3D\3D\3E\3E\3E\5E\u032b\nE\3F\3F\3F\3G\7G\u0331\nG\fG\16G\u0334\13G\3"+ - "G\3G\3G\3H\3H\3H\3H\3H\5H\u033e\nH\3H\3H\3H\3H\3H\3H\3H\5H\u0347\nH\3"+ - "H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\6H\u035c\nH\r"+ - "H\16H\u035d\3H\5H\u0361\nH\3H\5H\u0364\nH\3H\3H\3H\3H\7H\u036a\nH\fH\16"+ - "H\u036d\13H\3H\5H\u0370\nH\3H\3H\3H\3H\7H\u0376\nH\fH\16H\u0379\13H\3"+ - "H\7H\u037c\nH\fH\16H\u037f\13H\3H\3H\3H\3H\3H\3H\3H\3H\5H\u0389\nH\3H"+ - "\3H\3H\3H\3H\3H\3H\5H\u0392\nH\3H\3H\3H\5H\u0397\nH\3H\3H\3H\3H\3H\3H"+ - "\3H\3H\5H\u03a1\nH\3I\3I\3I\7I\u03a6\nI\fI\16I\u03a9\13I\3I\3I\3I\3I\3"+ - "I\3J\3J\3J\7J\u03b3\nJ\fJ\16J\u03b6\13J\3K\3K\3K\3L\3L\3L\5L\u03be\nL"+ - "\3L\3L\3M\3M\3M\7M\u03c5\nM\fM\16M\u03c8\13M\3N\7N\u03cb\nN\fN\16N\u03ce"+ - "\13N\3N\3N\3N\3N\3N\3O\6O\u03d6\nO\rO\16O\u03d7\3O\6O\u03db\nO\rO\16O"+ - "\u03dc\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\5P\u03e9\nP\3Q\3Q\5Q\u03ed\nQ\3Q"+ - "\3Q\5Q\u03f1\nQ\3Q\3Q\5Q\u03f5\nQ\5Q\u03f7\nQ\3R\3R\5R\u03fb\nR\3S\7S"+ - "\u03fe\nS\fS\16S\u0401\13S\3S\3S\3S\3S\3S\3T\3T\3U\3U\3U\3U\3V\3V\3V\7"+ - "V\u0411\nV\fV\16V\u0414\13V\3W\3W\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y"+ - "\3Y\3Y\3Y\5Y\u0427\nY\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0437"+ - "\nY\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y"+ - "\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0462\nY"+ - "\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0474\nY\3Y\3Y\3Y"+ - "\3Y\3Y\3Y\7Y\u047c\nY\fY\16Y\u047f\13Y\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3"+ - "Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\5Z\u0494\nZ\5Z\u0496\nZ\3[\3[\3[\3[\3[\3[\3"+ - "[\5[\u049f\n[\5[\u04a1\n[\3\\\3\\\5\\\u04a5\n\\\3\\\3\\\3\\\5\\\u04aa"+ - "\n\\\7\\\u04ac\n\\\f\\\16\\\u04af\13\\\3\\\5\\\u04b2\n\\\3]\3]\5]\u04b6"+ - "\n]\3]\3]\3^\3^\3^\3^\7^\u04be\n^\f^\16^\u04c1\13^\3^\3^\3^\3^\3^\3^\3"+ - "^\7^\u04ca\n^\f^\16^\u04cd\13^\3^\3^\7^\u04d1\n^\f^\16^\u04d4\13^\5^\u04d6"+ - "\n^\3_\3_\5_\u04da\n_\3`\3`\3`\3a\3a\3a\3a\3b\3b\3b\5b\u04e6\nb\3c\3c"+ - "\3c\5c\u04eb\nc\3d\3d\3d\3d\5d\u04f1\nd\5d\u04f3\nd\3e\3e\3e\3e\5e\u04f9"+ - "\ne\3f\3f\5f\u04fd\nf\3f\3f\3f\2\3\u00b0g\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\2\17\6\2 ,,\60\60\63\63\6\2\3\3\24\24#%()\n\2\5\5\7\7\n\n\20\20"+ - "\26\26\35\35\37\37\'\'\4\2\23\23**\3\2\65:\3\2QT\3\2GH\4\2UVZZ\3\2ST\4"+ - "\2EFLM\4\2KKNN\4\2DD[e\3\2QR\u0573\2\u00cd\3\2\2\2\4\u00e0\3\2\2\2\6\u00e7"+ - "\3\2\2\2\b\u010f\3\2\2\2\n\u0113\3\2\2\2\f\u0117\3\2\2\2\16\u011b\3\2"+ - "\2\2\20\u011d\3\2\2\2\22\u012c\3\2\2\2\24\u0137\3\2\2\2\26\u013c\3\2\2"+ - "\2\30\u0144\3\2\2\2\32\u0156\3\2\2\2\34\u0161\3\2\2\2\36\u016b\3\2\2\2"+ - " \u0172\3\2\2\2\"\u017d\3\2\2\2$\u0185\3\2\2\2&\u018e\3\2\2\2(\u01a3\3"+ - "\2\2\2*\u01ae\3\2\2\2,\u01b2\3\2\2\2.\u01c5\3\2\2\2\60\u01c8\3\2\2\2\62"+ - "\u01d0\3\2\2\2\64\u01d3\3\2\2\2\66\u01df\3\2\2\28\u01e8\3\2\2\2:\u01ea"+ - "\3\2\2\2<\u01f5\3\2\2\2>\u0202\3\2\2\2@\u0213\3\2\2\2B\u0216\3\2\2\2D"+ - "\u021e\3\2\2\2F\u0223\3\2\2\2H\u022d\3\2\2\2J\u022f\3\2\2\2L\u023f\3\2"+ - "\2\2N\u0251\3\2\2\2P\u0253\3\2\2\2R\u0261\3\2\2\2T\u0263\3\2\2\2V\u0274"+ - "\3\2\2\2X\u0276\3\2\2\2Z\u027e\3\2\2\2\\\u0291\3\2\2\2^\u0296\3\2\2\2"+ - "`\u029f\3\2\2\2b\u02a6\3\2\2\2d\u02a8\3\2\2\2f\u02aa\3\2\2\2h\u02b2\3"+ - "\2\2\2j\u02b4\3\2\2\2l\u02be\3\2\2\2n\u02c0\3\2\2\2p\u02c8\3\2\2\2r\u02cf"+ - "\3\2\2\2t\u02d1\3\2\2\2v\u02e1\3\2\2\2x\u02e6\3\2\2\2z\u02f7\3\2\2\2|"+ - "\u030d\3\2\2\2~\u0311\3\2\2\2\u0080\u0313\3\2\2\2\u0082\u0319\3\2\2\2"+ - "\u0084\u031b\3\2\2\2\u0086\u031e\3\2\2\2\u0088\u032a\3\2\2\2\u008a\u032c"+ - "\3\2\2\2\u008c\u0332\3\2\2\2\u008e\u03a0\3\2\2\2\u0090\u03a2\3\2\2\2\u0092"+ - "\u03af\3\2\2\2\u0094\u03b7\3\2\2\2\u0096\u03ba\3\2\2\2\u0098\u03c1\3\2"+ - "\2\2\u009a\u03cc\3\2\2\2\u009c\u03d5\3\2\2\2\u009e\u03e8\3\2\2\2\u00a0"+ - "\u03f6\3\2\2\2\u00a2\u03fa\3\2\2\2\u00a4\u03ff\3\2\2\2\u00a6\u0407\3\2"+ - "\2\2\u00a8\u0409\3\2\2\2\u00aa\u040d\3\2\2\2\u00ac\u0415\3\2\2\2\u00ae"+ - "\u0417\3\2\2\2\u00b0\u0426\3\2\2\2\u00b2\u0495\3\2\2\2\u00b4\u04a0\3\2"+ - "\2\2\u00b6\u04b1\3\2\2\2\u00b8\u04b3\3\2\2\2\u00ba\u04b9\3\2\2\2\u00bc"+ - "\u04d7\3\2\2\2\u00be\u04db\3\2\2\2\u00c0\u04de\3\2\2\2\u00c2\u04e5\3\2"+ - "\2\2\u00c4\u04ea\3\2\2\2\u00c6\u04f2\3\2\2\2\u00c8\u04f8\3\2\2\2\u00ca"+ - "\u04fa\3\2\2\2\u00cc\u00ce\5\4\3\2\u00cd\u00cc\3\2\2\2\u00cd\u00ce\3\2"+ - "\2\2\u00ce\u00d2\3\2\2\2\u00cf\u00d1\5\6\4\2\u00d0\u00cf\3\2\2\2\u00d1"+ - "\u00d4\3\2\2\2\u00d2\u00d0\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00d8\3\2"+ - "\2\2\u00d4\u00d2\3\2\2\2\u00d5\u00d7\5\b\5\2\u00d6\u00d5\3\2\2\2\u00d7"+ - "\u00da\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d8\u00d9\3\2\2\2\u00d9\u00db\3\2"+ - "\2\2\u00da\u00d8\3\2\2\2\u00db\u00dc\7\2\2\3\u00dc\3\3\2\2\2\u00dd\u00df"+ - "\5j\66\2\u00de\u00dd\3\2\2\2\u00df\u00e2\3\2\2\2\u00e0\u00de\3\2\2\2\u00e0"+ - "\u00e1\3\2\2\2\u00e1\u00e3\3\2\2\2\u00e2\u00e0\3\2\2\2\u00e3\u00e4\7\""+ - "\2\2\u00e4\u00e5\5f\64\2\u00e5\u00e6\7A\2\2\u00e6\5\3\2\2\2\u00e7\u00e9"+ - "\7\33\2\2\u00e8\u00ea\7(\2\2\u00e9\u00e8\3\2\2\2\u00e9\u00ea\3\2\2\2\u00ea"+ - "\u00eb\3\2\2\2\u00eb\u00ee\5f\64\2\u00ec\u00ed\7C\2\2\u00ed\u00ef\7U\2"+ - "\2\u00ee\u00ec\3\2\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\3\2\2\2\u00f0\u00f1"+ - "\7A\2\2\u00f1\7\3\2\2\2\u00f2\u00f4\5\f\7\2\u00f3\u00f2\3\2\2\2\u00f4"+ - "\u00f7\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f8\3\2"+ - "\2\2\u00f7\u00f5\3\2\2\2\u00f8\u0110\5\20\t\2\u00f9\u00fb\5\f\7\2\u00fa"+ - "\u00f9\3\2\2\2\u00fb\u00fe\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fc\u00fd\3\2"+ - "\2\2\u00fd\u00ff\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff\u0110\5\30\r\2\u0100"+ - "\u0102\5\f\7\2\u0101\u0100\3\2\2\2\u0102\u0105\3\2\2\2\u0103\u0101\3\2"+ - "\2\2\u0103\u0104\3\2\2\2\u0104\u0106\3\2\2\2\u0105\u0103\3\2\2\2\u0106"+ - "\u0110\5 \21\2\u0107\u0109\5\f\7\2\u0108\u0107\3\2\2\2\u0109\u010c\3\2"+ - "\2\2\u010a\u0108\3\2\2\2\u010a\u010b\3\2\2\2\u010b\u010d\3\2\2\2\u010c"+ - "\u010a\3\2\2\2\u010d\u0110\5v<\2\u010e\u0110\7A\2\2\u010f\u00f5\3\2\2"+ - "\2\u010f\u00fc\3\2\2\2\u010f\u0103\3\2\2\2\u010f\u010a\3\2\2\2\u010f\u010e"+ - "\3\2\2\2\u0110\t\3\2\2\2\u0111\u0114\5\f\7\2\u0112\u0114\t\2\2\2\u0113"+ - "\u0111\3\2\2\2\u0113\u0112\3\2\2\2\u0114\13\3\2\2\2\u0115\u0118\5j\66"+ - "\2\u0116\u0118\t\3\2\2\u0117\u0115\3\2\2\2\u0117\u0116\3\2\2\2\u0118\r"+ - "\3\2\2\2\u0119\u011c\7\24\2\2\u011a\u011c\5j\66\2\u011b\u0119\3\2\2\2"+ - "\u011b\u011a\3\2\2\2\u011c\17\3\2\2\2\u011d\u011e\7\13\2\2\u011e\u0120"+ - "\7f\2\2\u011f\u0121\5\22\n\2\u0120\u011f\3\2\2\2\u0120\u0121\3\2\2\2\u0121"+ - "\u0124\3\2\2\2\u0122\u0123\7\23\2\2\u0123\u0125\5N(\2\u0124\u0122\3\2"+ - "\2\2\u0124\u0125\3\2\2\2\u0125\u0128\3\2\2\2\u0126\u0127\7\32\2\2\u0127"+ - "\u0129\5\"\22\2\u0128\u0126\3\2\2\2\u0128\u0129\3\2\2\2\u0129\u012a\3"+ - "\2\2\2\u012a\u012b\5$\23\2\u012b\21\3\2\2\2\u012c\u012d\7F\2\2\u012d\u0132"+ - "\5\24\13\2\u012e\u012f\7B\2\2\u012f\u0131\5\24\13\2\u0130\u012e\3\2\2"+ - "\2\u0131\u0134\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0135"+ - "\3\2\2\2\u0134\u0132\3\2\2\2\u0135\u0136\7E\2\2\u0136\23\3\2\2\2\u0137"+ - "\u013a\7f\2\2\u0138\u0139\7\23\2\2\u0139\u013b\5\26\f\2\u013a\u0138\3"+ - "\2\2\2\u013a\u013b\3\2\2\2\u013b\25\3\2\2\2\u013c\u0141\5N(\2\u013d\u013e"+ - "\7W\2\2\u013e\u0140\5N(\2\u013f\u013d\3\2\2\2\u0140\u0143\3\2\2\2\u0141"+ - "\u013f\3\2\2\2\u0141\u0142\3\2\2\2\u0142\27\3\2\2\2\u0143\u0141\3\2\2"+ - "\2\u0144\u0145\7\22\2\2\u0145\u0148\7f\2\2\u0146\u0147\7\32\2\2\u0147"+ - "\u0149\5\"\22\2\u0148\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u014a\3"+ - "\2\2\2\u014a\u014c\7=\2\2\u014b\u014d\5\32\16\2\u014c\u014b\3\2\2\2\u014c"+ - "\u014d\3\2\2\2\u014d\u014f\3\2\2\2\u014e\u0150\7B\2\2\u014f\u014e\3\2"+ - "\2\2\u014f\u0150\3\2\2\2\u0150\u0152\3\2\2\2\u0151\u0153\5\36\20\2\u0152"+ - "\u0151\3\2\2\2\u0152\u0153\3\2\2\2\u0153\u0154\3\2\2\2\u0154\u0155\7>"+ - "\2\2\u0155\31\3\2\2\2\u0156\u015b\5\34\17\2\u0157\u0158\7B\2\2\u0158\u015a"+ - "\5\34\17\2\u0159\u0157\3\2\2\2\u015a\u015d\3\2\2\2\u015b\u0159\3\2\2\2"+ - "\u015b\u015c\3\2\2\2\u015c\33\3\2\2\2\u015d\u015b\3\2\2\2\u015e\u0160"+ - "\5j\66\2\u015f\u015e\3\2\2\2\u0160\u0163\3\2\2\2\u0161\u015f\3\2\2\2\u0161"+ - "\u0162\3\2\2\2\u0162\u0164\3\2\2\2\u0163\u0161\3\2\2\2\u0164\u0166\7f"+ - "\2\2\u0165\u0167\5\u00caf\2\u0166\u0165\3\2\2\2\u0166\u0167\3\2\2\2\u0167"+ - "\u0169\3\2\2\2\u0168\u016a\5$\23\2\u0169\u0168\3\2\2\2\u0169\u016a\3\2"+ - "\2\2\u016a\35\3\2\2\2\u016b\u016f\7A\2\2\u016c\u016e\5(\25\2\u016d\u016c"+ - "\3\2\2\2\u016e\u0171\3\2\2\2\u016f\u016d\3\2\2\2\u016f\u0170\3\2\2\2\u0170"+ - "\37\3\2\2\2\u0171\u016f\3\2\2\2\u0172\u0173\7\36\2\2\u0173\u0175\7f\2"+ - "\2\u0174\u0176\5\22\n\2\u0175\u0174\3\2\2\2\u0175\u0176\3\2\2\2\u0176"+ - "\u0179\3\2\2\2\u0177\u0178\7\23\2\2\u0178\u017a\5\"\22\2\u0179\u0177\3"+ - "\2\2\2\u0179\u017a\3\2\2\2\u017a\u017b\3\2\2\2\u017b\u017c\5&\24\2\u017c"+ - "!\3\2\2\2\u017d\u0182\5N(\2\u017e\u017f\7B\2\2\u017f\u0181\5N(\2\u0180"+ - "\u017e\3\2\2\2\u0181\u0184\3\2\2\2\u0182\u0180\3\2\2\2\u0182\u0183\3\2"+ - "\2\2\u0183#\3\2\2\2\u0184\u0182\3\2\2\2\u0185\u0189\7=\2\2\u0186\u0188"+ - "\5(\25\2\u0187\u0186\3\2\2\2\u0188\u018b\3\2\2\2\u0189\u0187\3\2\2\2\u0189"+ - "\u018a\3\2\2\2\u018a\u018c\3\2\2\2\u018b\u0189\3\2\2\2\u018c\u018d\7>"+ - "\2\2\u018d%\3\2\2\2\u018e\u0192\7=\2\2\u018f\u0191\5\66\34\2\u0190\u018f"+ - "\3\2\2\2\u0191\u0194\3\2\2\2\u0192\u0190\3\2\2\2\u0192\u0193\3\2\2\2\u0193"+ - "\u0195\3\2\2\2\u0194\u0192\3\2\2\2\u0195\u0196\7>\2\2\u0196\'\3\2\2\2"+ - "\u0197\u01a4\7A\2\2\u0198\u019a\7(\2\2\u0199\u0198\3\2\2\2\u0199\u019a"+ - "\3\2\2\2\u019a\u019b\3\2\2\2\u019b\u01a4\5\u0086D\2\u019c\u019e\5\n\6"+ - "\2\u019d\u019c\3\2\2\2\u019e\u01a1\3\2\2\2\u019f\u019d\3\2\2\2\u019f\u01a0"+ - "\3\2\2\2\u01a0\u01a2\3\2\2\2\u01a1\u019f\3\2\2\2\u01a2\u01a4\5*\26\2\u01a3"+ - "\u0197\3\2\2\2\u01a3\u0199\3\2\2\2\u01a3\u019f\3\2\2\2\u01a4)\3\2\2\2"+ - "\u01a5\u01af\5,\27\2\u01a6\u01af\5.\30\2\u01a7\u01af\5\64\33\2\u01a8\u01af"+ - "\5\60\31\2\u01a9\u01af\5\62\32\2\u01aa\u01af\5 \21\2\u01ab\u01af\5v<\2"+ - "\u01ac\u01af\5\20\t\2\u01ad\u01af\5\30\r\2\u01ae\u01a5\3\2\2\2\u01ae\u01a6"+ - "\3\2\2\2\u01ae\u01a7\3\2\2\2\u01ae\u01a8\3\2\2\2\u01ae\u01a9\3\2\2\2\u01ae"+ - "\u01aa\3\2\2\2\u01ae\u01ab\3\2\2\2\u01ae\u01ac\3\2\2\2\u01ae\u01ad\3\2"+ - "\2\2\u01af+\3\2\2\2\u01b0\u01b3\5N(\2\u01b1\u01b3\7\62\2\2\u01b2\u01b0"+ - "\3\2\2\2\u01b2\u01b1\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b5\7f\2\2\u01b5"+ - "\u01ba\5Z.\2\u01b6\u01b7\7?\2\2\u01b7\u01b9\7@\2\2\u01b8\u01b6\3\2\2\2"+ - "\u01b9\u01bc\3\2\2\2\u01ba\u01b8\3\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bf"+ - "\3\2\2\2\u01bc\u01ba\3\2\2\2\u01bd\u01be\7/\2\2\u01be\u01c0\5X-\2\u01bf"+ - "\u01bd\3\2\2\2\u01bf\u01c0\3\2\2\2\u01c0\u01c3\3\2\2\2\u01c1\u01c4\5b"+ - "\62\2\u01c2\u01c4\7A\2\2\u01c3\u01c1\3\2\2\2\u01c3\u01c2\3\2\2\2\u01c4"+ - "-\3\2\2\2\u01c5\u01c6\5\22\n\2\u01c6\u01c7\5,\27\2\u01c7/\3\2\2\2\u01c8"+ - "\u01c9\7f\2\2\u01c9\u01cc\5Z.\2\u01ca\u01cb\7/\2\2\u01cb\u01cd\5X-\2\u01cc"+ - "\u01ca\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce\u01cf\5d"+ - "\63\2\u01cf\61\3\2\2\2\u01d0\u01d1\5\22\n\2\u01d1\u01d2\5\60\31\2\u01d2"+ - "\63\3\2\2\2\u01d3\u01d4\5N(\2\u01d4\u01d5\5B\"\2\u01d5\u01d6\7A\2\2\u01d6"+ - "\65\3\2\2\2\u01d7\u01d9\5\n\6\2\u01d8\u01d7\3\2\2\2\u01d9\u01dc\3\2\2"+ - "\2\u01da\u01d8\3\2\2\2\u01da\u01db\3\2\2\2\u01db\u01dd\3\2\2\2\u01dc\u01da"+ - "\3\2\2\2\u01dd\u01e0\58\35\2\u01de\u01e0\7A\2\2\u01df\u01da\3\2\2\2\u01df"+ - "\u01de\3\2\2\2\u01e0\67\3\2\2\2\u01e1\u01e9\5:\36\2\u01e2\u01e9\5> \2"+ - "\u01e3\u01e9\5@!\2\u01e4\u01e9\5 \21\2\u01e5\u01e9\5v<\2\u01e6\u01e9\5"+ - "\20\t\2\u01e7\u01e9\5\30\r\2\u01e8\u01e1\3\2\2\2\u01e8\u01e2\3\2\2\2\u01e8"+ - "\u01e3\3\2\2\2\u01e8\u01e4\3\2\2\2\u01e8\u01e5\3\2\2\2\u01e8\u01e6\3\2"+ - "\2\2\u01e8\u01e7\3\2\2\2\u01e99\3\2\2\2\u01ea\u01eb\5N(\2\u01eb\u01f0"+ - "\5<\37\2\u01ec\u01ed\7B\2\2\u01ed\u01ef\5<\37\2\u01ee\u01ec\3\2\2\2\u01ef"+ - "\u01f2\3\2\2\2\u01f0\u01ee\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1\u01f3\3\2"+ - "\2\2\u01f2\u01f0\3\2\2\2\u01f3\u01f4\7A\2\2\u01f4;\3\2\2\2\u01f5\u01fa"+ - "\7f\2\2\u01f6\u01f7\7?\2\2\u01f7\u01f9\7@\2\2\u01f8\u01f6\3\2\2\2\u01f9"+ - "\u01fc\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01fd\3\2"+ - "\2\2\u01fc\u01fa\3\2\2\2\u01fd\u01fe\7D\2\2\u01fe\u01ff\5H%\2\u01ff=\3"+ - "\2\2\2\u0200\u0203\5N(\2\u0201\u0203\7\62\2\2\u0202\u0200\3\2\2\2\u0202"+ - "\u0201\3\2\2\2\u0203\u0204\3\2\2\2\u0204\u0205\7f\2\2\u0205\u020a\5Z."+ - "\2\u0206\u0207\7?\2\2\u0207\u0209\7@\2\2\u0208\u0206\3\2\2\2\u0209\u020c"+ - "\3\2\2\2\u020a\u0208\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u020f\3\2\2\2\u020c"+ - "\u020a\3\2\2\2\u020d\u020e\7/\2\2\u020e\u0210\5X-\2\u020f\u020d\3\2\2"+ - "\2\u020f\u0210\3\2\2\2\u0210\u0211\3\2\2\2\u0211\u0212\7A\2\2\u0212?\3"+ - "\2\2\2\u0213\u0214\5\22\n\2\u0214\u0215\5> \2\u0215A\3\2\2\2\u0216\u021b"+ - "\5D#\2\u0217\u0218\7B\2\2\u0218\u021a\5D#\2\u0219\u0217\3\2\2\2\u021a"+ - "\u021d\3\2\2\2\u021b\u0219\3\2\2\2\u021b\u021c\3\2\2\2\u021cC\3\2\2\2"+ - "\u021d\u021b\3\2\2\2\u021e\u0221\5F$\2\u021f\u0220\7D\2\2\u0220\u0222"+ - "\5H%\2\u0221\u021f\3\2\2\2\u0221\u0222\3\2\2\2\u0222E\3\2\2\2\u0223\u0228"+ - "\7f\2\2\u0224\u0225\7?\2\2\u0225\u0227\7@\2\2\u0226\u0224\3\2\2\2\u0227"+ - "\u022a\3\2\2\2\u0228\u0226\3\2\2\2\u0228\u0229\3\2\2\2\u0229G\3\2\2\2"+ - "\u022a\u0228\3\2\2\2\u022b\u022e\5J&\2\u022c\u022e\5\u00b0Y\2\u022d\u022b"+ - "\3\2\2\2\u022d\u022c\3\2\2\2\u022eI\3\2\2\2\u022f\u023b\7=\2\2\u0230\u0235"+ - "\5H%\2\u0231\u0232\7B\2\2\u0232\u0234\5H%\2\u0233\u0231\3\2\2\2\u0234"+ - "\u0237\3\2\2\2\u0235\u0233\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0239\3\2"+ - "\2\2\u0237\u0235\3\2\2\2\u0238\u023a\7B\2\2\u0239\u0238\3\2\2\2\u0239"+ - "\u023a\3\2\2\2\u023a\u023c\3\2\2\2\u023b\u0230\3\2\2\2\u023b\u023c\3\2"+ - "\2\2\u023c\u023d\3\2\2\2\u023d\u023e\7>\2\2\u023eK\3\2\2\2\u023f\u0240"+ - "\7f\2\2\u0240M\3\2\2\2\u0241\u0246\5P)\2\u0242\u0243\7?\2\2\u0243\u0245"+ - "\7@\2\2\u0244\u0242\3\2\2\2\u0245\u0248\3\2\2\2\u0246\u0244\3\2\2\2\u0246"+ - "\u0247\3\2\2\2\u0247\u0252\3\2\2\2\u0248\u0246\3\2\2\2\u0249\u024e\5R"+ - "*\2\u024a\u024b\7?\2\2\u024b\u024d\7@\2\2\u024c\u024a\3\2\2\2\u024d\u0250"+ - "\3\2\2\2\u024e\u024c\3\2\2\2\u024e\u024f\3\2\2\2\u024f\u0252\3\2\2\2\u0250"+ - "\u024e\3\2\2\2\u0251\u0241\3\2\2\2\u0251\u0249\3\2\2\2\u0252O\3\2\2\2"+ - "\u0253\u0255\7f\2\2\u0254\u0256\5T+\2\u0255\u0254\3\2\2\2\u0255\u0256"+ - "\3\2\2\2\u0256\u025e\3\2\2\2\u0257\u0258\7C\2\2\u0258\u025a\7f\2\2\u0259"+ - "\u025b\5T+\2\u025a\u0259\3\2\2\2\u025a\u025b\3\2\2\2\u025b\u025d\3\2\2"+ - "\2\u025c\u0257\3\2\2\2\u025d\u0260\3\2\2\2\u025e\u025c\3\2\2\2\u025e\u025f"+ - "\3\2\2\2\u025fQ\3\2\2\2\u0260\u025e\3\2\2\2\u0261\u0262\t\4\2\2\u0262"+ - "S\3\2\2\2\u0263\u0264\7F\2\2\u0264\u0269\5V,\2\u0265\u0266\7B\2\2\u0266"+ - "\u0268\5V,\2\u0267\u0265\3\2\2\2\u0268\u026b\3\2\2\2\u0269\u0267\3\2\2"+ - "\2\u0269\u026a\3\2\2\2\u026a\u026c\3\2\2\2\u026b\u0269\3\2\2\2\u026c\u026d"+ - "\7E\2\2\u026dU\3\2\2\2\u026e\u0275\5N(\2\u026f\u0272\7I\2\2\u0270\u0271"+ - "\t\5\2\2\u0271\u0273\5N(\2\u0272\u0270\3\2\2\2\u0272\u0273\3\2\2\2\u0273"+ - "\u0275\3\2\2\2\u0274\u026e\3\2\2\2\u0274\u026f\3\2\2\2\u0275W\3\2\2\2"+ - "\u0276\u027b\5f\64\2\u0277\u0278\7B\2\2\u0278\u027a\5f\64\2\u0279\u0277"+ - "\3\2\2\2\u027a\u027d\3\2\2\2\u027b\u0279\3\2\2\2\u027b\u027c\3\2\2\2\u027c"+ - "Y\3\2\2\2\u027d\u027b\3\2\2\2\u027e\u0280\7;\2\2\u027f\u0281\5\\/\2\u0280"+ - "\u027f\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0282\3\2\2\2\u0282\u0283\7<"+ - "\2\2\u0283[\3\2\2\2\u0284\u0289\5^\60\2\u0285\u0286\7B\2\2\u0286\u0288"+ - "\5^\60\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\u028e\3\2\2\2\u028b\u0289\3\2\2\2\u028c\u028d\7B"+ - "\2\2\u028d\u028f\5`\61\2\u028e\u028c\3\2\2\2\u028e\u028f\3\2\2\2\u028f"+ - "\u0292\3\2\2\2\u0290\u0292\5`\61\2\u0291\u0284\3\2\2\2\u0291\u0290\3\2"+ - "\2\2\u0292]\3\2\2\2\u0293\u0295\5\16\b\2\u0294\u0293\3\2\2\2\u0295\u0298"+ - "\3\2\2\2\u0296\u0294\3\2\2\2\u0296\u0297\3\2\2\2\u0297\u0299\3\2\2\2\u0298"+ - "\u0296\3\2\2\2\u0299\u029a\5N(\2\u029a\u029b\5F$\2\u029b_\3\2\2\2\u029c"+ - "\u029e\5\16\b\2\u029d\u029c\3\2\2\2\u029e\u02a1\3\2\2\2\u029f\u029d\3"+ - "\2\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a2\3\2\2\2\u02a1\u029f\3\2\2\2\u02a2"+ - "\u02a3\5N(\2\u02a3\u02a4\7h\2\2\u02a4\u02a5\5F$\2\u02a5a\3\2\2\2\u02a6"+ - "\u02a7\5\u0086D\2\u02a7c\3\2\2\2\u02a8\u02a9\5\u0086D\2\u02a9e\3\2\2\2"+ - "\u02aa\u02af\7f\2\2\u02ab\u02ac\7C\2\2\u02ac\u02ae\7f\2\2\u02ad\u02ab"+ - "\3\2\2\2\u02ae\u02b1\3\2\2\2\u02af\u02ad\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0"+ - "g\3\2\2\2\u02b1\u02af\3\2\2\2\u02b2\u02b3\t\6\2\2\u02b3i\3\2\2\2\u02b4"+ - "\u02b5\7g\2\2\u02b5\u02bc\5l\67\2\u02b6\u02b9\7;\2\2\u02b7\u02ba\5n8\2"+ - "\u02b8\u02ba\5r:\2\u02b9\u02b7\3\2\2\2\u02b9\u02b8\3\2\2\2\u02b9\u02ba"+ - "\3\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u02bd\7<\2\2\u02bc\u02b6\3\2\2\2\u02bc"+ - "\u02bd\3\2\2\2\u02bdk\3\2\2\2\u02be\u02bf\5f\64\2\u02bfm\3\2\2\2\u02c0"+ - "\u02c5\5p9\2\u02c1\u02c2\7B\2\2\u02c2\u02c4\5p9\2\u02c3\u02c1\3\2\2\2"+ - "\u02c4\u02c7\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6o\3"+ - "\2\2\2\u02c7\u02c5\3\2\2\2\u02c8\u02c9\7f\2\2\u02c9\u02ca\7D\2\2\u02ca"+ - "\u02cb\5r:\2\u02cbq\3\2\2\2\u02cc\u02d0\5\u00b0Y\2\u02cd\u02d0\5j\66\2"+ - "\u02ce\u02d0\5t;\2\u02cf\u02cc\3\2\2\2\u02cf\u02cd\3\2\2\2\u02cf\u02ce"+ - "\3\2\2\2\u02d0s\3\2\2\2\u02d1\u02da\7=\2\2\u02d2\u02d7\5r:\2\u02d3\u02d4"+ - "\7B\2\2\u02d4\u02d6\5r:\2\u02d5\u02d3\3\2\2\2\u02d6\u02d9\3\2\2\2\u02d7"+ - "\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02db\3\2\2\2\u02d9\u02d7\3\2"+ - "\2\2\u02da\u02d2\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02dd\3\2\2\2\u02dc"+ - "\u02de\7B\2\2\u02dd\u02dc\3\2\2\2\u02dd\u02de\3\2\2\2\u02de\u02df\3\2"+ - "\2\2\u02df\u02e0\7>\2\2\u02e0u\3\2\2\2\u02e1\u02e2\7g\2\2\u02e2\u02e3"+ - "\7\36\2\2\u02e3\u02e4\7f\2\2\u02e4\u02e5\5x=\2\u02e5w\3\2\2\2\u02e6\u02ea"+ - "\7=\2\2\u02e7\u02e9\5z>\2\u02e8\u02e7\3\2\2\2\u02e9\u02ec\3\2\2\2\u02ea"+ - "\u02e8\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb\u02ed\3\2\2\2\u02ec\u02ea\3\2"+ - "\2\2\u02ed\u02ee\7>\2\2\u02eey\3\2\2\2\u02ef\u02f1\5\n\6\2\u02f0\u02ef"+ - "\3\2\2\2\u02f1\u02f4\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3"+ - "\u02f5\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f5\u02f8\5|?\2\u02f6\u02f8\7A\2"+ - "\2\u02f7\u02f2\3\2\2\2\u02f7\u02f6\3\2\2\2\u02f8{\3\2\2\2\u02f9\u02fa"+ - "\5N(\2\u02fa\u02fb\5~@\2\u02fb\u02fc\7A\2\2\u02fc\u030e\3\2\2\2\u02fd"+ - "\u02ff\5\20\t\2\u02fe\u0300\7A\2\2\u02ff\u02fe\3\2\2\2\u02ff\u0300\3\2"+ - "\2\2\u0300\u030e\3\2\2\2\u0301\u0303\5 \21\2\u0302\u0304\7A\2\2\u0303"+ - "\u0302\3\2\2\2\u0303\u0304\3\2\2\2\u0304\u030e\3\2\2\2\u0305\u0307\5\30"+ - "\r\2\u0306\u0308\7A\2\2\u0307\u0306\3\2\2\2\u0307\u0308\3\2\2\2\u0308"+ - "\u030e\3\2\2\2\u0309\u030b\5v<\2\u030a\u030c\7A\2\2\u030b\u030a\3\2\2"+ - "\2\u030b\u030c\3\2\2\2\u030c\u030e\3\2\2\2\u030d\u02f9\3\2\2\2\u030d\u02fd"+ - "\3\2\2\2\u030d\u0301\3\2\2\2\u030d\u0305\3\2\2\2\u030d\u0309\3\2\2\2\u030e"+ - "}\3\2\2\2\u030f\u0312\5\u0080A\2\u0310\u0312\5\u0082B\2\u0311\u030f\3"+ - "\2\2\2\u0311\u0310\3\2\2\2\u0312\177\3\2\2\2\u0313\u0314\7f\2\2\u0314"+ - "\u0315\7;\2\2\u0315\u0317\7<\2\2\u0316\u0318\5\u0084C\2\u0317\u0316\3"+ - "\2\2\2\u0317\u0318\3\2\2\2\u0318\u0081\3\2\2\2\u0319\u031a\5B\"\2\u031a"+ - "\u0083\3\2\2\2\u031b\u031c\7\16\2\2\u031c\u031d\5r:\2\u031d\u0085\3\2"+ - "\2\2\u031e\u0322\7=\2\2\u031f\u0321\5\u0088E\2\u0320\u031f\3\2\2\2\u0321"+ - "\u0324\3\2\2\2\u0322\u0320\3\2\2\2\u0322\u0323\3\2\2\2\u0323\u0325\3\2"+ - "\2\2\u0324\u0322\3\2\2\2\u0325\u0326\7>\2\2\u0326\u0087\3\2\2\2\u0327"+ - "\u032b\5\u008aF\2\u0328\u032b\5\u008eH\2\u0329\u032b\5\b\5\2\u032a\u0327"+ - "\3\2\2\2\u032a\u0328\3\2\2\2\u032a\u0329\3\2\2\2\u032b\u0089\3\2\2\2\u032c"+ - "\u032d\5\u008cG\2\u032d\u032e\7A\2\2\u032e\u008b\3\2\2\2\u032f\u0331\5"+ - "\16\b\2\u0330\u032f\3\2\2\2\u0331\u0334\3\2\2\2\u0332\u0330\3\2\2\2\u0332"+ - "\u0333\3\2\2\2\u0333\u0335\3\2\2\2\u0334\u0332\3\2\2\2\u0335\u0336\5N"+ - "(\2\u0336\u0337\5B\"\2\u0337\u008d\3\2\2\2\u0338\u03a1\5\u0086D\2\u0339"+ - "\u033a\7\4\2\2\u033a\u033d\5\u00b0Y\2\u033b\u033c\7J\2\2\u033c\u033e\5"+ - "\u00b0Y\2\u033d\u033b\3\2\2\2\u033d\u033e\3\2\2\2\u033e\u033f\3\2\2\2"+ - "\u033f\u0340\7A\2\2\u0340\u03a1\3\2\2\2\u0341\u0342\7\30\2\2\u0342\u0343"+ - "\5\u00a8U\2\u0343\u0346\5\u008eH\2\u0344\u0345\7\21\2\2\u0345\u0347\5"+ - "\u008eH\2\u0346\u0344\3\2\2\2\u0346\u0347\3\2\2\2\u0347\u03a1\3\2\2\2"+ - "\u0348\u0349\7\27\2\2\u0349\u034a\7;\2\2\u034a\u034b\5\u00a0Q\2\u034b"+ - "\u034c\7<\2\2\u034c\u034d\5\u008eH\2\u034d\u03a1\3\2\2\2\u034e\u034f\7"+ - "\64\2\2\u034f\u0350\5\u00a8U\2\u0350\u0351\5\u008eH\2\u0351\u03a1\3\2"+ - "\2\2\u0352\u0353\7\17\2\2\u0353\u0354\5\u008eH\2\u0354\u0355\7\64\2\2"+ - "\u0355\u0356\5\u00a8U\2\u0356\u0357\7A\2\2\u0357\u03a1\3\2\2\2\u0358\u0359"+ - "\7\61\2\2\u0359\u0363\5\u0086D\2\u035a\u035c\5\u0090I\2\u035b\u035a\3"+ - "\2\2\2\u035c\u035d\3\2\2\2\u035d\u035b\3\2\2\2\u035d\u035e\3\2\2\2\u035e"+ - "\u0360\3\2\2\2\u035f\u0361\5\u0094K\2\u0360\u035f\3\2\2\2\u0360\u0361"+ - "\3\2\2\2\u0361\u0364\3\2\2\2\u0362\u0364\5\u0094K\2\u0363\u035b\3\2\2"+ - "\2\u0363\u0362\3\2\2\2\u0364\u03a1\3\2\2\2\u0365\u0366\7\61\2\2\u0366"+ - "\u0367\5\u0096L\2\u0367\u036b\5\u0086D\2\u0368\u036a\5\u0090I\2\u0369"+ - "\u0368\3\2\2\2\u036a\u036d\3\2\2\2\u036b\u0369\3\2\2\2\u036b\u036c\3\2"+ - "\2\2\u036c\u036f\3\2\2\2\u036d\u036b\3\2\2\2\u036e\u0370\5\u0094K\2\u036f"+ - "\u036e\3\2\2\2\u036f\u0370\3\2\2\2\u0370\u03a1\3\2\2\2\u0371\u0372\7+"+ - "\2\2\u0372\u0373\5\u00a8U\2\u0373\u0377\7=\2\2\u0374\u0376\5\u009cO\2"+ - "\u0375\u0374\3\2\2\2\u0376\u0379\3\2\2\2\u0377\u0375\3\2\2\2\u0377\u0378"+ - "\3\2\2\2\u0378\u037d\3\2\2\2\u0379\u0377\3\2\2\2\u037a\u037c\5\u009eP"+ - "\2\u037b\u037a\3\2\2\2\u037c\u037f\3\2\2\2\u037d\u037b\3\2\2\2\u037d\u037e"+ - "\3\2\2\2\u037e\u0380\3\2\2\2\u037f\u037d\3\2\2\2\u0380\u0381\7>\2\2\u0381"+ - "\u03a1\3\2\2\2\u0382\u0383\7,\2\2\u0383\u0384\5\u00a8U\2\u0384\u0385\5"+ - "\u0086D\2\u0385\u03a1\3\2\2\2\u0386\u0388\7&\2\2\u0387\u0389\5\u00b0Y"+ - "\2\u0388\u0387\3\2\2\2\u0388\u0389\3\2\2\2\u0389\u038a\3\2\2\2\u038a\u03a1"+ - "\7A\2\2\u038b\u038c\7.\2\2\u038c\u038d\5\u00b0Y\2\u038d\u038e\7A\2\2\u038e"+ - "\u03a1\3\2\2\2\u038f\u0391\7\6\2\2\u0390\u0392\7f\2\2\u0391\u0390\3\2"+ - "\2\2\u0391\u0392\3\2\2\2\u0392\u0393\3\2\2\2\u0393\u03a1\7A\2\2\u0394"+ - "\u0396\7\r\2\2\u0395\u0397\7f\2\2\u0396\u0395\3\2\2\2\u0396\u0397\3\2"+ - "\2\2\u0397\u0398\3\2\2\2\u0398\u03a1\7A\2\2\u0399\u03a1\7A\2\2\u039a\u039b"+ - "\5\u00acW\2\u039b\u039c\7A\2\2\u039c\u03a1\3\2\2\2\u039d\u039e\7f\2\2"+ - "\u039e\u039f\7J\2\2\u039f\u03a1\5\u008eH\2\u03a0\u0338\3\2\2\2\u03a0\u0339"+ - "\3\2\2\2\u03a0\u0341\3\2\2\2\u03a0\u0348\3\2\2\2\u03a0\u034e\3\2\2\2\u03a0"+ - "\u0352\3\2\2\2\u03a0\u0358\3\2\2\2\u03a0\u0365\3\2\2\2\u03a0\u0371\3\2"+ - "\2\2\u03a0\u0382\3\2\2\2\u03a0\u0386\3\2\2\2\u03a0\u038b\3\2\2\2\u03a0"+ - "\u038f\3\2\2\2\u03a0\u0394\3\2\2\2\u03a0\u0399\3\2\2\2\u03a0\u039a\3\2"+ - "\2\2\u03a0\u039d\3\2\2\2\u03a1\u008f\3\2\2\2\u03a2\u03a3\7\t\2\2\u03a3"+ - "\u03a7\7;\2\2\u03a4\u03a6\5\16\b\2\u03a5\u03a4\3\2\2\2\u03a6\u03a9\3\2"+ - "\2\2\u03a7\u03a5\3\2\2\2\u03a7\u03a8\3\2\2\2\u03a8\u03aa\3\2\2\2\u03a9"+ - "\u03a7\3\2\2\2\u03aa\u03ab\5\u0092J\2\u03ab\u03ac\7f\2\2\u03ac\u03ad\7"+ - "<\2\2\u03ad\u03ae\5\u0086D\2\u03ae\u0091\3\2\2\2\u03af\u03b4\5f\64\2\u03b0"+ - "\u03b1\7X\2\2\u03b1\u03b3\5f\64\2\u03b2\u03b0\3\2\2\2\u03b3\u03b6\3\2"+ - "\2\2\u03b4\u03b2\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5\u0093\3\2\2\2\u03b6"+ - "\u03b4\3\2\2\2\u03b7\u03b8\7\25\2\2\u03b8\u03b9\5\u0086D\2\u03b9\u0095"+ - "\3\2\2\2\u03ba\u03bb\7;\2\2\u03bb\u03bd\5\u0098M\2\u03bc\u03be\7A\2\2"+ - "\u03bd\u03bc\3\2\2\2\u03bd\u03be\3\2\2\2\u03be\u03bf\3\2\2\2\u03bf\u03c0"+ - "\7<\2\2\u03c0\u0097\3\2\2\2\u03c1\u03c6\5\u009aN\2\u03c2\u03c3\7A\2\2"+ - "\u03c3\u03c5\5\u009aN\2\u03c4\u03c2\3\2\2\2\u03c5\u03c8\3\2\2\2\u03c6"+ - "\u03c4\3\2\2\2\u03c6\u03c7\3\2\2\2\u03c7\u0099\3\2\2\2\u03c8\u03c6\3\2"+ - "\2\2\u03c9\u03cb\5\16\b\2\u03ca\u03c9\3\2\2\2\u03cb\u03ce\3\2\2\2\u03cc"+ - "\u03ca\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u03cf\3\2\2\2\u03ce\u03cc\3\2"+ - "\2\2\u03cf\u03d0\5P)\2\u03d0\u03d1\5F$\2\u03d1\u03d2\7D\2\2\u03d2\u03d3"+ - "\5\u00b0Y\2\u03d3\u009b\3\2\2\2\u03d4\u03d6\5\u009eP\2\u03d5\u03d4\3\2"+ - "\2\2\u03d6\u03d7\3\2\2\2\u03d7\u03d5\3\2\2\2\u03d7\u03d8\3\2\2\2\u03d8"+ - "\u03da\3\2\2\2\u03d9\u03db\5\u0088E\2\u03da\u03d9\3\2\2\2\u03db\u03dc"+ - "\3\2\2\2\u03dc\u03da\3\2\2\2\u03dc\u03dd\3\2\2\2\u03dd\u009d\3\2\2\2\u03de"+ - "\u03df\7\b\2\2\u03df\u03e0\5\u00aeX\2\u03e0\u03e1\7J\2\2\u03e1\u03e9\3"+ - "\2\2\2\u03e2\u03e3\7\b\2\2\u03e3\u03e4\5L\'\2\u03e4\u03e5\7J\2\2\u03e5"+ - "\u03e9\3\2\2\2\u03e6\u03e7\7\16\2\2\u03e7\u03e9\7J\2\2\u03e8\u03de\3\2"+ - "\2\2\u03e8\u03e2\3\2\2\2\u03e8\u03e6\3\2\2\2\u03e9\u009f\3\2\2\2\u03ea"+ - "\u03f7\5\u00a4S\2\u03eb\u03ed\5\u00a2R\2\u03ec\u03eb\3\2\2\2\u03ec\u03ed"+ - "\3\2\2\2\u03ed\u03ee\3\2\2\2\u03ee\u03f0\7A\2\2\u03ef\u03f1\5\u00b0Y\2"+ - "\u03f0\u03ef\3\2\2\2\u03f0\u03f1\3\2\2\2\u03f1\u03f2\3\2\2\2\u03f2\u03f4"+ - "\7A\2\2\u03f3\u03f5\5\u00a6T\2\u03f4\u03f3\3\2\2\2\u03f4\u03f5\3\2\2\2"+ - "\u03f5\u03f7\3\2\2\2\u03f6\u03ea\3\2\2\2\u03f6\u03ec\3\2\2\2\u03f7\u00a1"+ - "\3\2\2\2\u03f8\u03fb\5\u008cG\2\u03f9\u03fb\5\u00aaV\2\u03fa\u03f8\3\2"+ - "\2\2\u03fa\u03f9\3\2\2\2\u03fb\u00a3\3\2\2\2\u03fc\u03fe\5\16\b\2\u03fd"+ - "\u03fc\3\2\2\2\u03fe\u0401\3\2\2\2\u03ff\u03fd\3\2\2\2\u03ff\u0400\3\2"+ - "\2\2\u0400\u0402\3\2\2\2\u0401\u03ff\3\2\2\2\u0402\u0403\5N(\2\u0403\u0404"+ - "\7f\2\2\u0404\u0405\7J\2\2\u0405\u0406\5\u00b0Y\2\u0406\u00a5\3\2\2\2"+ - "\u0407\u0408\5\u00aaV\2\u0408\u00a7\3\2\2\2\u0409\u040a\7;\2\2\u040a\u040b"+ - "\5\u00b0Y\2\u040b\u040c\7<\2\2\u040c\u00a9\3\2\2\2\u040d\u0412\5\u00b0"+ - "Y\2\u040e\u040f\7B\2\2\u040f\u0411\5\u00b0Y\2\u0410\u040e\3\2\2\2\u0411"+ - "\u0414\3\2\2\2\u0412\u0410\3\2\2\2\u0412\u0413\3\2\2\2\u0413\u00ab\3\2"+ - "\2\2\u0414\u0412\3\2\2\2\u0415\u0416\5\u00b0Y\2\u0416\u00ad\3\2\2\2\u0417"+ - "\u0418\5\u00b0Y\2\u0418\u00af\3\2\2\2\u0419\u041a\bY\1\2\u041a\u041b\7"+ - ";\2\2\u041b\u041c\5N(\2\u041c\u041d\7<\2\2\u041d\u041e\5\u00b0Y\23\u041e"+ - "\u0427\3\2\2\2\u041f\u0420\t\7\2\2\u0420\u0427\5\u00b0Y\21\u0421\u0422"+ - "\t\b\2\2\u0422\u0427\5\u00b0Y\20\u0423\u0427\5\u00b2Z\2\u0424\u0425\7"+ - "!\2\2\u0425\u0427\5\u00b4[\2\u0426\u0419\3\2\2\2\u0426\u041f\3\2\2\2\u0426"+ - "\u0421\3\2\2\2\u0426\u0423\3\2\2\2\u0426\u0424\3\2\2\2\u0427\u047d\3\2"+ - "\2\2\u0428\u0429\f\17\2\2\u0429\u042a\t\t\2\2\u042a\u047c\5\u00b0Y\20"+ - "\u042b\u042c\f\16\2\2\u042c\u042d\t\n\2\2\u042d\u047c\5\u00b0Y\17\u042e"+ - "\u0436\f\r\2\2\u042f\u0430\7F\2\2\u0430\u0437\7F\2\2\u0431\u0432\7E\2"+ - "\2\u0432\u0433\7E\2\2\u0433\u0437\7E\2\2\u0434\u0435\7E\2\2\u0435\u0437"+ - "\7E\2\2\u0436\u042f\3\2\2\2\u0436\u0431\3\2\2\2\u0436\u0434\3\2\2\2\u0437"+ - "\u0438\3\2\2\2\u0438\u047c\5\u00b0Y\16\u0439\u043a\f\f\2\2\u043a\u043b"+ - "\t\13\2\2\u043b\u047c\5\u00b0Y\r\u043c\u043d\f\n\2\2\u043d\u043e\t\f\2"+ - "\2\u043e\u047c\5\u00b0Y\13\u043f\u0440\f\t\2\2\u0440\u0441\7W\2\2\u0441"+ - "\u047c\5\u00b0Y\n\u0442\u0443\f\b\2\2\u0443\u0444\7Y\2\2\u0444\u047c\5"+ - "\u00b0Y\t\u0445\u0446\f\7\2\2\u0446\u0447\7X\2\2\u0447\u047c\5\u00b0Y"+ - "\b\u0448\u0449\f\6\2\2\u0449\u044a\7O\2\2\u044a\u047c\5\u00b0Y\7\u044b"+ - "\u044c\f\5\2\2\u044c\u044d\7P\2\2\u044d\u047c\5\u00b0Y\6\u044e\u044f\f"+ - "\4\2\2\u044f\u0450\7I\2\2\u0450\u0451\5\u00b0Y\2\u0451\u0452\7J\2\2\u0452"+ - "\u0453\5\u00b0Y\5\u0453\u047c\3\2\2\2\u0454\u0455\f\3\2\2\u0455\u0456"+ - "\t\r\2\2\u0456\u047c\5\u00b0Y\4\u0457\u0458\f\33\2\2\u0458\u0459\7C\2"+ - "\2\u0459\u047c\7f\2\2\u045a\u045b\f\32\2\2\u045b\u045c\7C\2\2\u045c\u047c"+ - "\7-\2\2\u045d\u045e\f\31\2\2\u045e\u045f\7C\2\2\u045f\u0461\7!\2\2\u0460"+ - "\u0462\5\u00c0a\2\u0461\u0460\3\2\2\2\u0461\u0462\3\2\2\2\u0462\u0463"+ - "\3\2\2\2\u0463\u047c\5\u00b8]\2\u0464\u0465\f\30\2\2\u0465\u0466\7C\2"+ - "\2\u0466\u0467\7*\2\2\u0467\u047c\5\u00c6d\2\u0468\u0469\f\27\2\2\u0469"+ - "\u046a\7C\2\2\u046a\u047c\5\u00be`\2\u046b\u046c\f\26\2\2\u046c\u046d"+ - "\7?\2\2\u046d\u046e\5\u00b0Y\2\u046e\u046f\7@\2\2\u046f\u047c\3\2\2\2"+ - "\u0470\u0471\f\25\2\2\u0471\u0473\7;\2\2\u0472\u0474\5\u00aaV\2\u0473"+ - "\u0472\3\2\2\2\u0473\u0474\3\2\2\2\u0474\u0475\3\2\2\2\u0475\u047c\7<"+ - "\2\2\u0476\u0477\f\22\2\2\u0477\u047c\t\16\2\2\u0478\u0479\f\13\2\2\u0479"+ - "\u047a\7\34\2\2\u047a\u047c\5N(\2\u047b\u0428\3\2\2\2\u047b\u042b\3\2"+ - "\2\2\u047b\u042e\3\2\2\2\u047b\u0439\3\2\2\2\u047b\u043c\3\2\2\2\u047b"+ - "\u043f\3\2\2\2\u047b\u0442\3\2\2\2\u047b\u0445\3\2\2\2\u047b\u0448\3\2"+ - "\2\2\u047b\u044b\3\2\2\2\u047b\u044e\3\2\2\2\u047b\u0454\3\2\2\2\u047b"+ - "\u0457\3\2\2\2\u047b\u045a\3\2\2\2\u047b\u045d\3\2\2\2\u047b\u0464\3\2"+ - "\2\2\u047b\u0468\3\2\2\2\u047b\u046b\3\2\2\2\u047b\u0470\3\2\2\2\u047b"+ - "\u0476\3\2\2\2\u047b\u0478\3\2\2\2\u047c\u047f\3\2\2\2\u047d\u047b\3\2"+ - "\2\2\u047d\u047e\3\2\2\2\u047e\u00b1\3\2\2\2\u047f\u047d\3\2\2\2\u0480"+ - "\u0481\7;\2\2\u0481\u0482\5\u00b0Y\2\u0482\u0483\7<\2\2\u0483\u0496\3"+ - "\2\2\2\u0484\u0496\7-\2\2\u0485\u0496\7*\2\2\u0486\u0496\5h\65\2\u0487"+ - "\u0496\7f\2\2\u0488\u0489\5N(\2\u0489\u048a\7C\2\2\u048a\u048b\7\13\2"+ - "\2\u048b\u0496\3\2\2\2\u048c\u048d\7\62\2\2\u048d\u048e\7C\2\2\u048e\u0496"+ - "\7\13\2\2\u048f\u0493\5\u00c0a\2\u0490\u0494\5\u00c8e\2\u0491\u0492\7"+ - "-\2\2\u0492\u0494\5\u00caf\2\u0493\u0490\3\2\2\2\u0493\u0491\3\2\2\2\u0494"+ - "\u0496\3\2\2\2\u0495\u0480\3\2\2\2\u0495\u0484\3\2\2\2\u0495\u0485\3\2"+ - "\2\2\u0495\u0486\3\2\2\2\u0495\u0487\3\2\2\2\u0495\u0488\3\2\2\2\u0495"+ - "\u048c\3\2\2\2\u0495\u048f\3\2\2\2\u0496\u00b3\3\2\2\2\u0497\u0498\5\u00c0"+ - "a\2\u0498\u0499\5\u00b6\\\2\u0499\u049a\5\u00bc_\2\u049a\u04a1\3\2\2\2"+ - "\u049b\u049e\5\u00b6\\\2\u049c\u049f\5\u00ba^\2\u049d\u049f\5\u00bc_\2"+ - "\u049e\u049c\3\2\2\2\u049e\u049d\3\2\2\2\u049f\u04a1\3\2\2\2\u04a0\u0497"+ - "\3\2\2\2\u04a0\u049b\3\2\2\2\u04a1\u00b5\3\2\2\2\u04a2\u04a4\7f\2\2\u04a3"+ - "\u04a5\5\u00c2b\2\u04a4\u04a3\3\2\2\2\u04a4\u04a5\3\2\2\2\u04a5\u04ad"+ - "\3\2\2\2\u04a6\u04a7\7C\2\2\u04a7\u04a9\7f\2\2\u04a8\u04aa\5\u00c2b\2"+ - "\u04a9\u04a8\3\2\2\2\u04a9\u04aa\3\2\2\2\u04aa\u04ac\3\2\2\2\u04ab\u04a6"+ - "\3\2\2\2\u04ac\u04af\3\2\2\2\u04ad\u04ab\3\2\2\2\u04ad\u04ae\3\2\2\2\u04ae"+ - "\u04b2\3\2\2\2\u04af\u04ad\3\2\2\2\u04b0\u04b2\5R*\2\u04b1\u04a2\3\2\2"+ - "\2\u04b1\u04b0\3\2\2\2\u04b2\u00b7\3\2\2\2\u04b3\u04b5\7f\2\2\u04b4\u04b6"+ - "\5\u00c4c\2\u04b5\u04b4\3\2\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04b7\3\2\2"+ - "\2\u04b7\u04b8\5\u00bc_\2\u04b8\u00b9\3\2\2\2\u04b9\u04d5\7?\2\2\u04ba"+ - "\u04bf\7@\2\2\u04bb\u04bc\7?\2\2\u04bc\u04be\7@\2\2\u04bd\u04bb\3\2\2"+ - "\2\u04be\u04c1\3\2\2\2\u04bf\u04bd\3\2\2\2\u04bf\u04c0\3\2\2\2\u04c0\u04c2"+ - "\3\2\2\2\u04c1\u04bf\3\2\2\2\u04c2\u04d6\5J&\2\u04c3\u04c4\5\u00b0Y\2"+ - "\u04c4\u04cb\7@\2\2\u04c5\u04c6\7?\2\2\u04c6\u04c7\5\u00b0Y\2\u04c7\u04c8"+ - "\7@\2\2\u04c8\u04ca\3\2\2\2\u04c9\u04c5\3\2\2\2\u04ca\u04cd\3\2\2\2\u04cb"+ - "\u04c9\3\2\2\2\u04cb\u04cc\3\2\2\2\u04cc\u04d2\3\2\2\2\u04cd\u04cb\3\2"+ - "\2\2\u04ce\u04cf\7?\2\2\u04cf\u04d1\7@\2\2\u04d0\u04ce\3\2\2\2\u04d1\u04d4"+ - "\3\2\2\2\u04d2\u04d0\3\2\2\2\u04d2\u04d3\3\2\2\2\u04d3\u04d6\3\2\2\2\u04d4"+ - "\u04d2\3\2\2\2\u04d5\u04ba\3\2\2\2\u04d5\u04c3\3\2\2\2\u04d6\u00bb\3\2"+ - "\2\2\u04d7\u04d9\5\u00caf\2\u04d8\u04da\5$\23\2\u04d9\u04d8\3\2\2\2\u04d9"+ - "\u04da\3\2\2\2\u04da\u00bd\3\2\2\2\u04db\u04dc\5\u00c0a\2\u04dc\u04dd"+ - "\5\u00c8e\2\u04dd\u00bf\3\2\2\2\u04de\u04df\7F\2\2\u04df\u04e0\5\"\22"+ - "\2\u04e0\u04e1\7E\2\2\u04e1\u00c1\3\2\2\2\u04e2\u04e3\7F\2\2\u04e3\u04e6"+ - "\7E\2\2\u04e4\u04e6\5T+\2\u04e5\u04e2\3\2\2\2\u04e5\u04e4\3\2\2\2\u04e6"+ - "\u00c3\3\2\2\2\u04e7\u04e8\7F\2\2\u04e8\u04eb\7E\2\2\u04e9\u04eb\5\u00c0"+ - "a\2\u04ea\u04e7\3\2\2\2\u04ea\u04e9\3\2\2\2\u04eb\u00c5\3\2\2\2\u04ec"+ - "\u04f3\5\u00caf\2\u04ed\u04ee\7C\2\2\u04ee\u04f0\7f\2\2\u04ef\u04f1\5"+ - "\u00caf\2\u04f0\u04ef\3\2\2\2\u04f0\u04f1\3\2\2\2\u04f1\u04f3\3\2\2\2"+ - "\u04f2\u04ec\3\2\2\2\u04f2\u04ed\3\2\2\2\u04f3\u00c7\3\2\2\2\u04f4\u04f5"+ - "\7*\2\2\u04f5\u04f9\5\u00c6d\2\u04f6\u04f7\7f\2\2\u04f7\u04f9\5\u00ca"+ - "f\2\u04f8\u04f4\3\2\2\2\u04f8\u04f6\3\2\2\2\u04f9\u00c9\3\2\2\2\u04fa"+ - "\u04fc\7;\2\2\u04fb\u04fd\5\u00aaV\2\u04fc\u04fb\3\2\2\2\u04fc\u04fd\3"+ - "\2\2\2\u04fd\u04fe\3\2\2\2\u04fe\u04ff\7<\2\2\u04ff\u00cb\3\2\2\2\u0097"+ - "\u00cd\u00d2\u00d8\u00e0\u00e9\u00ee\u00f5\u00fc\u0103\u010a\u010f\u0113"+ - "\u0117\u011b\u0120\u0124\u0128\u0132\u013a\u0141\u0148\u014c\u014f\u0152"+ - "\u015b\u0161\u0166\u0169\u016f\u0175\u0179\u0182\u0189\u0192\u0199\u019f"+ - "\u01a3\u01ae\u01b2\u01ba\u01bf\u01c3\u01cc\u01da\u01df\u01e8\u01f0\u01fa"+ - "\u0202\u020a\u020f\u021b\u0221\u0228\u022d\u0235\u0239\u023b\u0246\u024e"+ - "\u0251\u0255\u025a\u025e\u0269\u0272\u0274\u027b\u0280\u0289\u028e\u0291"+ - "\u0296\u029f\u02af\u02b9\u02bc\u02c5\u02cf\u02d7\u02da\u02dd\u02ea\u02f2"+ - "\u02f7\u02ff\u0303\u0307\u030b\u030d\u0311\u0317\u0322\u032a\u0332\u033d"+ - "\u0346\u035d\u0360\u0363\u036b\u036f\u0377\u037d\u0388\u0391\u0396\u03a0"+ - "\u03a7\u03b4\u03bd\u03c6\u03cc\u03d7\u03dc\u03e8\u03ec\u03f0\u03f4\u03f6"+ - "\u03fa\u03ff\u0412\u0426\u0436\u0461\u0473\u047b\u047d\u0493\u0495\u049e"+ - "\u04a0\u04a4\u04a9\u04ad\u04b1\u04b5\u04bf\u04cb\u04d2\u04d5\u04d9\u04e5"+ - "\u04ea\u04f0\u04f2\u04f8\u04fc"; - 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/antlr/makefile b/antlr/makefile deleted file mode 100644 index fb834ab21..000000000 --- a/antlr/makefile +++ /dev/null @@ -1,4 +0,0 @@ -all: - java -jar ./antlr-4.4-complete.jar Java8.g4 - javac -cp ./antlr-4.4-complete.jar:. *.java - diff --git a/bin/log4j.xml b/bin/log4j.xml deleted file mode 100755 index 64e7c5dbd..000000000 --- a/bin/log4j.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/OldExamples/hama/Add.jav b/examples/OldExamples/hama/Add.jav deleted file mode 100755 index 2836a30eb..000000000 --- a/examples/OldExamples/hama/Add.jav +++ /dev/null @@ -1,7 +0,0 @@ -class Add -{ - int add(int a, int b) - { - return a + b; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/AddMain.jav b/examples/OldExamples/hama/AddMain.jav deleted file mode 100755 index ec994b648..000000000 --- a/examples/OldExamples/hama/AddMain.jav +++ /dev/null @@ -1,8 +0,0 @@ -class AddMain -{ - public static void main(String[] args) - { - Add a = new Add(); - System.out.println("Addition: 3+4= " + a.add(3, 4)); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Empty.jav b/examples/OldExamples/hama/Empty.jav deleted file mode 100755 index 518f97690..000000000 --- a/examples/OldExamples/hama/Empty.jav +++ /dev/null @@ -1,4 +0,0 @@ -class Empty -{ - -} \ No newline at end of file diff --git a/examples/OldExamples/hama/EmptyMain.jav b/examples/OldExamples/hama/EmptyMain.jav deleted file mode 100755 index a183eefee..000000000 --- a/examples/OldExamples/hama/EmptyMain.jav +++ /dev/null @@ -1,8 +0,0 @@ -public class EmptyMain -{ - public static void main(String[] args) - { - Empty e = new Empty(); - System.out.println("finished"); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Ergebnis.jav b/examples/OldExamples/hama/Ergebnis.jav deleted file mode 100755 index 5a12e67a7..000000000 --- a/examples/OldExamples/hama/Ergebnis.jav +++ /dev/null @@ -1,18 +0,0 @@ -class Ergebnis -{ - int zahl1; - int zahl2; - int erg; - - void berechne(int a, int b) - { - zahl1 = a; - zahl2 = b; - erg = zahl1 + zahl2; - } - - int ergebnis() - { - return erg; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/ErgebnisMain.jav b/examples/OldExamples/hama/ErgebnisMain.jav deleted file mode 100755 index 3639afcc6..000000000 --- a/examples/OldExamples/hama/ErgebnisMain.jav +++ /dev/null @@ -1,9 +0,0 @@ -public class ErgebnisMain -{ - public static void main(String[] args) - { - Ergebnis e = new Ergebnis(); - e.berechne(2, 3); - System.out.println("Addition: 2+3= " + e.ergebnis()); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Setze.jav b/examples/OldExamples/hama/Setze.jav deleted file mode 100755 index 74312dd1e..000000000 --- a/examples/OldExamples/hama/Setze.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Setze -{ - int zahl; - - void setze() - { - zahl = 555; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/SetzeMain.jav b/examples/OldExamples/hama/SetzeMain.jav deleted file mode 100755 index 4198bd63c..000000000 --- a/examples/OldExamples/hama/SetzeMain.jav +++ /dev/null @@ -1,9 +0,0 @@ -public class SetzeMain -{ - public static void main(String[] args) - { - Setze s = new Setze(); - s.setze(); - System.out.println("finished"); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingObj.jav b/examples/OldExamples/hama/StoreSomethingObj.jav deleted file mode 100755 index 83a47a395..000000000 --- a/examples/OldExamples/hama/StoreSomethingObj.jav +++ /dev/null @@ -1,14 +0,0 @@ -class StoreSomethingObj -{ - Object something; - - Object get() - { - return something; - } - - void set(Object some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingObjCon.jav b/examples/OldExamples/hama/StoreSomethingObjCon.jav deleted file mode 100755 index 07ca94f83..000000000 --- a/examples/OldExamples/hama/StoreSomethingObjCon.jav +++ /dev/null @@ -1,19 +0,0 @@ -class StoreSomethingObjCon -{ - Object something; - - StoreSomethingObjCon(Object some) - { - something = some; - } - - Object get() - { - return something; - } - - void set(Object some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingObjMain.jav b/examples/OldExamples/hama/StoreSomethingObjMain.jav deleted file mode 100755 index 747a404a0..000000000 --- a/examples/OldExamples/hama/StoreSomethingObjMain.jav +++ /dev/null @@ -1,15 +0,0 @@ -public class StoreSomethingObjMain -{ - public static void main(String[] args) - { - StoreSomethingObjCon a = new StoreSomethingObjCon("I'm a String"); - System.out.println(a.get()); - a.set("new String"); - System.out.println(a.get()); - StoreSomethingObj b = new StoreSomethingObj(); - b.set("I'm var b"); - System.out.println(b.get()); - b.set("new b"); - System.out.println(b.get()); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingPar.jav b/examples/OldExamples/hama/StoreSomethingPar.jav deleted file mode 100755 index a5c453f45..000000000 --- a/examples/OldExamples/hama/StoreSomethingPar.jav +++ /dev/null @@ -1,14 +0,0 @@ -class StoreSomethingPar -{ - A something; - - A get() - { - return something; - } - - void set(A some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingParCon.jav b/examples/OldExamples/hama/StoreSomethingParCon.jav deleted file mode 100755 index 47b58a44f..000000000 --- a/examples/OldExamples/hama/StoreSomethingParCon.jav +++ /dev/null @@ -1,19 +0,0 @@ -class StoreSomethingParCon -{ - A something; - - StoreSomethingParCon(A some) - { - something = some; - } - - A get() - { - return something; - } - - void set(A some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingParMain.jav b/examples/OldExamples/hama/StoreSomethingParMain.jav deleted file mode 100755 index b633055f0..000000000 --- a/examples/OldExamples/hama/StoreSomethingParMain.jav +++ /dev/null @@ -1,15 +0,0 @@ -public class MStoreSomethingParMain -{ - public static void main(String[] args) - { - StoreSomethingParCon a = new StoreSomethingParCon("I'm a String"); - System.out.println(a.get()); - a.set("new String"); - System.out.println(a.get()); - StoreSomethingPar b = new StoreSomethingPar(); - b.set("I'm var b"); - System.out.println(b.get()); - b.set("new b"); - System.out.println(b.get()); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingParMainTrick.jav b/examples/OldExamples/hama/StoreSomethingParMainTrick.jav deleted file mode 100755 index b87435234..000000000 --- a/examples/OldExamples/hama/StoreSomethingParMainTrick.jav +++ /dev/null @@ -1,15 +0,0 @@ -public class StoreSomethingParMainTrick -{ - public static void main(String[] args) - { - StoreSomethingParCon a = new StoreSomethingParCon("I'm a String"); - System.out.println(a.get()); - a.set("new String"); - System.out.println(a.get()); - StoreSomethingPar b = new StoreSomethingPar(); - b.set("I'm var b"); - System.out.println(b.get()); - b.set("new b"); - System.out.println(b.get()); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingStr.jav b/examples/OldExamples/hama/StoreSomethingStr.jav deleted file mode 100755 index 20a600fe5..000000000 --- a/examples/OldExamples/hama/StoreSomethingStr.jav +++ /dev/null @@ -1,14 +0,0 @@ -class StoreSomethingStr -{ - String something; - - String get() - { - return something; - } - - void set(String some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingStrCon.jav b/examples/OldExamples/hama/StoreSomethingStrCon.jav deleted file mode 100755 index e3b90155a..000000000 --- a/examples/OldExamples/hama/StoreSomethingStrCon.jav +++ /dev/null @@ -1,19 +0,0 @@ -class StoreSomethingStrCon -{ - String something; - - StoreSomethingStrCon(String some) - { - something = some; - } - - String get() - { - return something; - } - - void set(String some) - { - something = some; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/StoreSomethingStrMain.jav b/examples/OldExamples/hama/StoreSomethingStrMain.jav deleted file mode 100755 index 05b258d1f..000000000 --- a/examples/OldExamples/hama/StoreSomethingStrMain.jav +++ /dev/null @@ -1,15 +0,0 @@ -public class StoreSomethingStrMain -{ - public static void main(String[] args) - { - StoreSomethingStrCon a = new StoreSomethingStrCon("I'm a String"); - System.out.println(a.get()); - a.set("new String"); - System.out.println(a.get()); - StoreSomethingStr b = new StoreSomethingStr(); - b.set("I'm var b"); - System.out.println(b.get()); - b.set("new b"); - System.out.println(b.get()); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Toggle1.jav b/examples/OldExamples/hama/Toggle1.jav deleted file mode 100755 index 01bd0d959..000000000 --- a/examples/OldExamples/hama/Toggle1.jav +++ /dev/null @@ -1,16 +0,0 @@ -class Toggle1 -{ - boolean toggle(boolean b) - { - if(b) - { - b = false; - return b; - } - else - { - b = true; - return b; - } - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Toggle2.jav b/examples/OldExamples/hama/Toggle2.jav deleted file mode 100755 index f66d824c2..000000000 --- a/examples/OldExamples/hama/Toggle2.jav +++ /dev/null @@ -1,15 +0,0 @@ -class Toggle2 -{ - boolean toggle(boolean b) - { - if(b) - { - b = false; - } - else - { - b = true; - } - return b; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/Toggle3.jav b/examples/OldExamples/hama/Toggle3.jav deleted file mode 100755 index c437e6b3e..000000000 --- a/examples/OldExamples/hama/Toggle3.jav +++ /dev/null @@ -1,25 +0,0 @@ -public class Toggle3 -{ - boolean toggle(boolean b) - { - if(b) - { - b = false; - if(true) - { - return b; - } - b = false; - } - else - { - b = true; - if(true) - { - return b; - } - b = true; - } - return b; - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/ToggleMain.jav b/examples/OldExamples/hama/ToggleMain.jav deleted file mode 100755 index 8b24c5eea..000000000 --- a/examples/OldExamples/hama/ToggleMain.jav +++ /dev/null @@ -1,18 +0,0 @@ -public class ToggleMain -{ - public static void main(String[] args) - { - Toggle1 t1 = new Toggle1(); - boolean b1 = false; - System.out.println("b1: " + b1); - System.out.println("b1 getoggelt: " + t1.toggle(b1)); - Toggle2 t2 = new Toggle2(); - boolean b2 = false; - System.out.println("b2: " + b2); - System.out.println("b2 getoggelt: " + t2.toggle(b2)); - Toggle3 t3 = new Toggle3(); - boolean b3 = false; - System.out.println("b3: " + b3); - System.out.println("b3 getoggelt: " + t3.toggle(b3)); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test1.jav b/examples/OldExamples/hama/test1.jav deleted file mode 100755 index 74c0dacf1..000000000 --- a/examples/OldExamples/hama/test1.jav +++ /dev/null @@ -1,37 +0,0 @@ -class Test -{ -} - - - -class List1 -{ - A ab; - C da; - - B bu() - { - } -} - - - -class Listst2 -{ - A object = null; - Listst2 next = new Listst2(); -} - - - -class MainKlasse extends List1, List1> -{ - x ra; - List1 li = new List1(); - - void main() - { - List1> si = new List1(); - si.bu(); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test11.jav b/examples/OldExamples/hama/test11.jav deleted file mode 100755 index bc9051d11..000000000 --- a/examples/OldExamples/hama/test11.jav +++ /dev/null @@ -1,37 +0,0 @@ -class Test -{ -} - - - -class List1 -{ - A ab; - C da; - - B bu() - { - } -} - - - -class Listst2 -{ - A object = null; - Listst2 next = new Listst2(); -} - - - -class MainKlasse extends List1, List1> -{ - x ra; - List1 li = new List1(); - - void main() - { - List1> si = new List1(); - si.bu(); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test1o.jav b/examples/OldExamples/hama/test1o.jav deleted file mode 100755 index 824d88a1d..000000000 --- a/examples/OldExamples/hama/test1o.jav +++ /dev/null @@ -1,20 +0,0 @@ -class test{} -class list{ - A a; - B b(){} - C d; -} - -class main extends list,list> { - x r; - list l = new list(); - void main(){ - list>s= new list(); - s.b(); - } -} - -class List{ - List next = new List(); - A object = null; -} diff --git a/examples/OldExamples/hama/test2.jav b/examples/OldExamples/hama/test2.jav deleted file mode 100755 index 834363c00..000000000 --- a/examples/OldExamples/hama/test2.jav +++ /dev/null @@ -1,42 +0,0 @@ -class Inte -{ -} - - - -class Liststst3 -{ - A ab = null; - Liststst3 next = new Liststst3(); - - void insert(A elem) - { - if(ab = null) - { - ab = elem; - } - else - { - next.insert(elem); - } - } - - void get(A elem) - { - System.out.println(elem); - next.get(elem); - } -} - - - -class MainClass extends Liststst3> -{ - Liststst3 li = new Liststst3(); - - void main() - { - Liststst3 sa = new Liststst3(), li = new Liststst3(); - Inte in = new Inte(); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test22.jav b/examples/OldExamples/hama/test22.jav deleted file mode 100755 index 863f80bba..000000000 --- a/examples/OldExamples/hama/test22.jav +++ /dev/null @@ -1,42 +0,0 @@ -class Inte -{ -} - - - -class Liststst3 -{ - A ab = null; - Liststst3 next = new Liststst3(); - - void insert(A elem) - { - if(ab == null) - { - ab = elem; - } - else - { - next.insert(elem); - } - } - - void get(A elem) - { - System.out.println(elem); - next.get(elem); - } -} - - - -class MainClass extends Liststst3> -{ - Liststst3 li = new Liststst3(); - - void main() - { - Liststst3 sa = new Liststst3(), li = new Liststst3(); - Inte in = new Inte(); - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test2o.jav b/examples/OldExamples/hama/test2o.jav deleted file mode 100755 index 41be95a16..000000000 --- a/examples/OldExamples/hama/test2o.jav +++ /dev/null @@ -1,32 +0,0 @@ -class INT{} -class list{ - A a = null; - listnext = new list(); - void insert(A elem){ - if(a = null){ - a=elem; - } - else{ - next.insert(elem); - } - } - void get(A elem){ - - System.out.println(elem); - - next.get(elem); - - } -} - -class main extends list> { - - list l = new list(); - void main(){ - lists= new list(), l = new list(); - INT i = new INT(); - } -} - - - diff --git a/examples/OldExamples/hama/test3.jav b/examples/OldExamples/hama/test3.jav deleted file mode 100755 index 854523d1a..000000000 --- a/examples/OldExamples/hama/test3.jav +++ /dev/null @@ -1,29 +0,0 @@ -class Listststst4 -{ - A objec = null; - Listststst4 next = new Listststst4(); - - void insert(A obj) - { - if(this.objec == null) - { - this.objec = obj; - } - else - { - this.next.insert(obj); - } - } - - A getObjectAt(int n) - { - if(n == 0) - { - return this.objec; - } - else - { - return this.next.getObjectAt(n-1); - } - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test33.jav b/examples/OldExamples/hama/test33.jav deleted file mode 100755 index 0253886de..000000000 --- a/examples/OldExamples/hama/test33.jav +++ /dev/null @@ -1,29 +0,0 @@ -class Listststst4 -{ - A objec = null; - Listststst4 next = new Listststst4(); - - void insert(A obj) - { - if(objec = null) - { - objec = obj; - } - else - { - next.insert(obj); - } - } - - A getObjectAt(int n) - { - if(n = 0) - { - return objec; - } - else - { - return next.getObjectAt(n-1); - } - } -} \ No newline at end of file diff --git a/examples/OldExamples/hama/test3o.jav b/examples/OldExamples/hama/test3o.jav deleted file mode 100755 index 3fe316db7..000000000 --- a/examples/OldExamples/hama/test3o.jav +++ /dev/null @@ -1,20 +0,0 @@ -class List{ - List next = new List(); - A object = null; - A getObjectAt(int n){ - if(n==0){ - return object; - } - else{ - return this.next.getObjectAt(n-1); - } - } - void insert(A object){ - if(this. Object == null){ - this.object = object; - } - else{ - this.next.insert(object); - } - } -} diff --git a/examples/OldExamples/otth/otth10.jav b/examples/OldExamples/otth/otth10.jav deleted file mode 100755 index 435f3a933..000000000 --- a/examples/OldExamples/otth/otth10.jav +++ /dev/null @@ -1,22 +0,0 @@ -class otth10 -{ - f1( a, int b ) - { - } - - int f3( X test ) - { - } - - otth10( int b, c, d ) - { - } - -} - -class Test -{ - f5() - { - } -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth11.jav b/examples/OldExamples/otth/otth11.jav deleted file mode 100755 index dcc091ef0..000000000 --- a/examples/OldExamples/otth/otth11.jav +++ /dev/null @@ -1,10 +0,0 @@ -class otth11 -{ - f1( a, int b ) - { - } - - void f2( TYPEA VA, TYPEB VB) - { - } -} diff --git a/examples/OldExamples/otth/otth12.jav b/examples/OldExamples/otth/otth12.jav deleted file mode 100755 index 2491fd15d..000000000 --- a/examples/OldExamples/otth/otth12.jav +++ /dev/null @@ -1,26 +0,0 @@ -class AbstractList -{ - A a = null; -} - -class Vektor extends AbstractList -{ - B a = null; -} - -class Stapel extends Vektor -{ - A a = null; -} - -class IntZahl -{ -} - -class Bool -{ -} - -class Main -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth13.jav b/examples/OldExamples/otth/otth13.jav deleted file mode 100755 index 90f1104d3..000000000 --- a/examples/OldExamples/otth/otth13.jav +++ /dev/null @@ -1,13 +0,0 @@ -class AbstractList -{ - A a = null; - B b = null; -} - - -class Vektor extends AbstractList -{ - A a = null; - B b = null; - C c = null; -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth14.jav b/examples/OldExamples/otth/otth14.jav deleted file mode 100755 index fcb267559..000000000 --- a/examples/OldExamples/otth/otth14.jav +++ /dev/null @@ -1,11 +0,0 @@ -class X -{ - B a = null; -} - -class otth14 -{ - void f1( X a ) - { - } -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth15.jav b/examples/OldExamples/otth/otth15.jav deleted file mode 100755 index 74036c937..000000000 --- a/examples/OldExamples/otth/otth15.jav +++ /dev/null @@ -1,43 +0,0 @@ -class List -{ - A a = null; -} - -class Vektor extends List -{ - A a = null; -} - -class Stack extends Vektor -{ - A a = null; -} - -class ClassB -{ - A a = null; - B b = null; - C c = null; -} - -class ClassA extends ClassB -{ - A a = null; - B b = null; - C c = null; -} - -class Int -{ -} - -class Bool -{ -} - -class otth15 -{ - void f1( X a ) - { - } -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth16.jav b/examples/OldExamples/otth/otth16.jav deleted file mode 100755 index 409b607e0..000000000 --- a/examples/OldExamples/otth/otth16.jav +++ /dev/null @@ -1,38 +0,0 @@ -class List -{ - A a = null; -} - -class AbstractList extends List -{ - A a = null; -} - -class Vektor extends AbstractList -{ - A a = null; -} - -class Stack extends Vektor -{ - A a = null; -} - -class Objekt -{ -} - -class Int -{ -} - -class Paar -{ - A a = null; - B b = null; -} - - -class otth16 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth17.jav b/examples/OldExamples/otth/otth17.jav deleted file mode 100755 index 77e0d56ab..000000000 --- a/examples/OldExamples/otth/otth17.jav +++ /dev/null @@ -1,25 +0,0 @@ -class DD -{ - A a = null; - B b = null; -} - -class CC -{ - A a = null; -} - -class BB< A > extends CC -{ - A a = null; -} - -class AA extends BB< DD > -{ - A a = null; - B b = null; -} - -class otth17 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth18.jav b/examples/OldExamples/otth/otth18.jav deleted file mode 100755 index 0519ecba6..000000000 --- a/examples/OldExamples/otth/otth18.jav +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/OldExamples/otth/otth19.jav b/examples/OldExamples/otth/otth19.jav deleted file mode 100755 index 883ea900e..000000000 --- a/examples/OldExamples/otth/otth19.jav +++ /dev/null @@ -1,17 +0,0 @@ -class List -{ - A a; -} - -class Objekt -{ -} - -class AbstractList { A a; } -class Vektor extends AbstractList { A a; } -class Matrix extends Vektor> { A a; } -class ExtMatrix extends Matrix { A a; } - -class otth19 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth20.jav b/examples/OldExamples/otth/otth20.jav deleted file mode 100755 index 03f233744..000000000 --- a/examples/OldExamples/otth/otth20.jav +++ /dev/null @@ -1,10 +0,0 @@ -class otth20 -{ - f1( a, b ) - { - } - - f2( a, int b, c ) - { - } -} diff --git a/examples/OldExamples/otth/otth21.jav b/examples/OldExamples/otth/otth21.jav deleted file mode 100755 index 6e2bc6691..000000000 --- a/examples/OldExamples/otth/otth21.jav +++ /dev/null @@ -1,24 +0,0 @@ -class T1 -{ -} - -class T0 -{ -} - -class BB< W, X, Y > -{ - X a = null; - Y b = null; - W c = null; -} - -class AA extends BB< T0, CC, T1 > -{ - A a = null; - B b = null; -} - -class otth21 -{ -} diff --git a/examples/OldExamples/otth/otth22.jav b/examples/OldExamples/otth/otth22.jav deleted file mode 100755 index b2b4035a6..000000000 --- a/examples/OldExamples/otth/otth22.jav +++ /dev/null @@ -1,23 +0,0 @@ -class AbstractList -{ - A a = null; -} - -class Vektor extends AbstractList -{ - A a = null; -} - -class Matrix extends Vektor> -{ - A a = null; -} - -class ExMatrix extends Matrix -{ - A a = null; -} - -class otth22 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth23.jav b/examples/OldExamples/otth/otth23.jav deleted file mode 100755 index f936c99be..000000000 --- a/examples/OldExamples/otth/otth23.jav +++ /dev/null @@ -1,16 +0,0 @@ -class BB -{ - A a = null; -} - -class CC -{ - C c = null; - D d = null; -} - -class XX extends CC>>, BB>> -{ - A a = null; - X b = null; -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth24.jav b/examples/OldExamples/otth/otth24.jav deleted file mode 100755 index 1b7dd33e2..000000000 --- a/examples/OldExamples/otth/otth24.jav +++ /dev/null @@ -1,16 +0,0 @@ -class BB -{ - A a = null; -} - -class CC -{ - C c = null; - D d = null; -} - -class XX extends CC>>, BB>> -{ - A a = null; - X b = null; -} \ No newline at end of file diff --git a/examples/OldExamples/otth/otth8.jav b/examples/OldExamples/otth/otth8.jav deleted file mode 100755 index bbe343211..000000000 --- a/examples/OldExamples/otth/otth8.jav +++ /dev/null @@ -1,12 +0,0 @@ -class otth8 -{ - int add( int x, int y ) - { - return x + y; - } - - int mul( int x, int y ) - { - return x * y; - } -} \ No newline at end of file diff --git a/examples/OldExamples/otth/pl1.jav.txt b/examples/OldExamples/otth/pl1.jav.txt deleted file mode 100755 index cb581afb4..000000000 --- a/examples/OldExamples/otth/pl1.jav.txt +++ /dev/null @@ -1,28 +0,0 @@ -class Vektor -{ - A a = null; -} - -class Matrix extends Vektor> -{ - A a = null; -} - -class ExtMatrix extends Matrix> -{ - A a = null; -} - - -class Objekt -{ -} - -class List -{ - A a = null; -} - -class otth19 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/otth/pl2.jav.txt b/examples/OldExamples/otth/pl2.jav.txt deleted file mode 100755 index c003ef376..000000000 --- a/examples/OldExamples/otth/pl2.jav.txt +++ /dev/null @@ -1,28 +0,0 @@ -class Vektor -{ - A a = null; -} - -class Matrix extends Vektor> -{ - A a = null; -} - -class ExtMatrix extends Vektor>> -{ - A a = null; -} - - -class Objekt -{ -} - -class List -{ - A a = null; -} - -class otth19 -{ -} \ No newline at end of file diff --git a/examples/OldExamples/test/Class1.java b/examples/OldExamples/test/Class1.java deleted file mode 100755 index 52bd8c020..000000000 --- a/examples/OldExamples/test/Class1.java +++ /dev/null @@ -1,8 +0,0 @@ -package test; - - - -public class Class1 -{ - int testwert; -} \ No newline at end of file diff --git a/examples/OldExamples/test/Class2.java b/examples/OldExamples/test/Class2.java deleted file mode 100755 index a12baf138..000000000 --- a/examples/OldExamples/test/Class2.java +++ /dev/null @@ -1,8 +0,0 @@ -package test; - - - -public class Class2 -{ - Class1 class1var; -} \ No newline at end of file diff --git a/examples/OldExamples/test/Class3.java b/examples/OldExamples/test/Class3.java deleted file mode 100755 index 102a36ef5..000000000 --- a/examples/OldExamples/test/Class3.java +++ /dev/null @@ -1,8 +0,0 @@ -package test; - - - -public class Class3 -{ - Class2 class2var; -} \ No newline at end of file diff --git a/examples/OldExamples/test/Eins.java b/examples/OldExamples/test/Eins.java deleted file mode 100755 index 444efd0e0..000000000 --- a/examples/OldExamples/test/Eins.java +++ /dev/null @@ -1,27 +0,0 @@ -package test; - - - -public class Eins -{ - int a; - char b = 'a'; - boolean c = false; - String s = "Hallo"; - - public static void Methode() - { - int g = 34; - char h = 'c'; - String bla = "Haus"; - boolean bo = true; - } - - private int Methode2() - { - Zwei testklasse = new Zwei(); - int d; - int f = d = 5; - return 14; - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/ExtendTest.java b/examples/OldExamples/test/ExtendTest.java deleted file mode 100755 index eba0a4127..000000000 --- a/examples/OldExamples/test/ExtendTest.java +++ /dev/null @@ -1,8 +0,0 @@ -package test; - - - -public class ExtendTest -{ - int testwert; -} \ No newline at end of file diff --git a/examples/OldExamples/test/Main.java b/examples/OldExamples/test/Main.java deleted file mode 100755 index 3c4bdd144..000000000 --- a/examples/OldExamples/test/Main.java +++ /dev/null @@ -1,21 +0,0 @@ -package test; - - - -public class Main -{ - int i = 10; - - public static void main(String[] args) - { - Main2 m = new Main2(); - m.print(); - - /* - int i = 0; - i = Integer.parseInt(args[0]); - test_code x = new test_code(); - x.main(i); - */ - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/Main2.java b/examples/OldExamples/test/Main2.java deleted file mode 100755 index cdb316083..000000000 --- a/examples/OldExamples/test/Main2.java +++ /dev/null @@ -1,11 +0,0 @@ -package test; - - - -public class Main2 extends Main -{ - public void print() - { - System.out.println(i); - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/MethTestBasis.java b/examples/OldExamples/test/MethTestBasis.java deleted file mode 100755 index 9fd2a4ec8..000000000 --- a/examples/OldExamples/test/MethTestBasis.java +++ /dev/null @@ -1,12 +0,0 @@ -package test; - - - -public class MethTestBasis -{ - int test; - int testen() - { - return test; - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/MethTestInherit.java b/examples/OldExamples/test/MethTestInherit.java deleted file mode 100755 index a815204ac..000000000 --- a/examples/OldExamples/test/MethTestInherit.java +++ /dev/null @@ -1,12 +0,0 @@ -package test; - - - -public class MethTestInherit extends MethTestBasis -{ - int testen(int a,int b) - { - a=b; - return test; - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/SCTest.java b/examples/OldExamples/test/SCTest.java deleted file mode 100755 index a7a41c396..000000000 --- a/examples/OldExamples/test/SCTest.java +++ /dev/null @@ -1,314 +0,0 @@ -package test; - - - -import SourceFile; -import Class; -import ClassBody; -import InstVarDecl; -import DeclId; -import Method; -import Return; -import ParameterList; -import FormalParameter; -import Block; -import Assign; -import Receiver; -import MethodCall; -import LocalOrFieldVar; -import ClassDeclId; -import UsedId; -import Type; -import SCException; - - - - -public class SCTest -{ - public SourceFile source=new SourceFile(); - - private boolean extendedsc; - - public void build_tree() - { - Class a=new Class(); - Class class1=new Class(); - Class class2=new Class(); - Class class3 =new Class(); - Class b=new Class(); - Class c=new Class(); - Class dc=new Class(); - ClassBody ab=new ClassBody(); - ClassBody b1=new ClassBody(); - ClassBody b2=new ClassBody(); - ClassBody b3=new ClassBody(); - ClassBody bb=new ClassBody(); - ClassBody cb=new ClassBody(); - ClassBody dcb=new ClassBody(); - InstVarDecl i=new InstVarDecl(); - InstVarDecl j=new InstVarDecl(); - InstVarDecl ij=new InstVarDecl(); - InstVarDecl inst1=new InstVarDecl(); - InstVarDecl inst2=new InstVarDecl(); - InstVarDecl inst3=new InstVarDecl(); - InstVarDecl binstvar1=new InstVarDecl(); - InstVarDecl binstvar2=new InstVarDecl(); - InstVarDecl aformeth=new InstVarDecl(); - InstVarDecl aformeth2=new InstVarDecl(); - DeclId adeclformeth=new DeclId(); - DeclId decl1=new DeclId(); - DeclId decl2=new DeclId(); - DeclId decl3=new DeclId(); - DeclId decl=new DeclId(); - DeclId d=new DeclId(); - DeclId d1=new DeclId(); - DeclId d2=new DeclId(); - DeclId d3=new DeclId(); - DeclId bd1=new DeclId(); - DeclId bd2=new DeclId(); - DeclId amd1=new DeclId(); - DeclId amd2=new DeclId(); - DeclId dcmd1=new DeclId(); - DeclId dcmd2=new DeclId(); - DeclId adc=new DeclId(); - DeclId cmname=new DeclId(); - DeclId dcmname=new DeclId(); - Method m=new Method(); - Method bm=new Method(); - Method cm=new Method(); - Method dcm=new Method(); - Return amr=new Return(); - ParameterList amp=new ParameterList(); - ParameterList dcmp=new ParameterList(); - FormalParameter dcmpf=new FormalParameter(); - FormalParameter ampf1=new FormalParameter(); - FormalParameter ampf2=new FormalParameter(); - FormalParameter dcmpf1=new FormalParameter(); - FormalParameter dcmpf2=new FormalParameter(); - Block bl=new Block(); - Block bbl=new Block(); - Block dcmb=new Block(); - Block cmb=new Block(); - Assign as=new Assign(); - Receiver amrcv=new Receiver(); - Receiver amrcv2=new Receiver(); - MethodCall ammc=new MethodCall(); - MethodCall ammc2=new MethodCall(); - LocalOrFieldVar lf=new LocalOrFieldVar(); - LocalOrFieldVar lf2=new LocalOrFieldVar(); - LocalOrFieldVar amerst=new LocalOrFieldVar(); - LocalOrFieldVar amzwei=new LocalOrFieldVar(); - LocalOrFieldVar am2=new LocalOrFieldVar(); - ClassDeclId cdi=new ClassDeclId(); - ClassDeclId cdi1=new ClassDeclId(); - ClassDeclId cdi2=new ClassDeclId(); - ClassDeclId cdi3=new ClassDeclId(); - ClassDeclId bcd=new ClassDeclId(); - ClassDeclId ccd=new ClassDeclId(); - ClassDeclId dccd=new ClassDeclId(); - UsedId u1=new UsedId(); - UsedId u2=new UsedId(); - UsedId text=new UsedId(); - UsedId dccdsclass=new UsedId(); - UsedId ausedformeth=new UsedId(); - UsedId ausedformeth2=new UsedId(); - UsedId ausedinmeth=new UsedId(); - UsedId ausedinmeth2=new UsedId(); - Type t=new Type(); - Type t1=new Type(); - Type t2=new Type(); - Type t3=new Type(); - Type t4=new Type(); - Type t5=new Type(); - Type t6=new Type(); - - cdi.set_classname("test"); - cdi1.set_classname("class1"); - cdi2.set_classname("class2"); - cdi3.set_classname("class3"); - bcd.set_classname("extendtest"); - ccd.set_classname("methtestbasis"); - dccd.set_classname("methtestinherit"); - - text.set_Name("extendtest"); - dccdsclass.set_Name("methtestbasis"); - a.set_ClassDeclId(cdi); - a.set_UsedId(text); - class1.set_ClassDeclId(cdi1); - class2.set_ClassDeclId(cdi2); - class3.set_ClassDeclId(cdi3); - b.set_ClassDeclId(bcd); - c.set_ClassDeclId(ccd); - dc.set_ClassDeclId(dccd); - dc.set_UsedId(dccdsclass); - - d1.set_Name("testint1"); - d2.set_Name("testint2"); - d3.set_Name("class1var"); - decl1.set_Name("class2var"); - decl2.set_Name("class3var"); - decl3.set_Name("inttest"); - bd1.set_Name("externesint1"); - bd2.set_Name("externesint2"); - adeclformeth.set_Name("klassenvariable"); - adc.set_Name("klassenvariabledc"); - - t.set_Type("int"); - t1.set_Type("class2"); - t2.set_Type("class3"); - t3.set_Type("int"); - t4.set_Type("class1"); - t5.set_Type("extendtest"); - t6.set_Type("methtestinherit"); - - inst1.set_Type(t1); - inst2.set_Type(t2); - inst3.set_Type(t3); - ij.set_Type(t4); - i.set_Type(t); - j.set_Type(t); - aformeth.set_Type(t5); - binstvar1.set_Type(t); - binstvar2.set_Type(t); - aformeth2.set_Type(t6); - - i.set_DeclId(d1); - j.set_DeclId(d2); - ij.set_DeclId(d3); - aformeth.set_DeclId(adeclformeth); - inst1.set_DeclId(decl1); - inst2.set_DeclId(decl2); - inst3.set_DeclId(decl3); - binstvar1.set_DeclId(bd1); - binstvar2.set_DeclId(bd2); - aformeth2.set_DeclId(adc); - - ab.set_FieldDecl(i); - ab.set_FieldDecl(j); - ab.set_FieldDecl(ij); - ab.set_FieldDecl(aformeth); - b1.set_FieldDecl(inst1); - b2.set_FieldDecl(inst2); - b3.set_FieldDecl(inst3); - bb.set_FieldDecl(binstvar1); - bb.set_FieldDecl(binstvar2); - ab.set_FieldDecl(aformeth2); - - u1.set_Name("class1var"); - u1.set_Name("class2var"); - u1.set_Name("class3var"); - u1.set_Name("inttest"); - u2.set_Name("testint2"); - ausedformeth.set_Name("testfkt"); - ausedinmeth.set_Name("klassenvariable"); - ausedformeth2.set_Name("klassenvariabledc"); - ausedformeth2.set_Name("testen"); - - lf.set_UsedId(u1); - lf2.set_UsedId(u2); - amerst.set_UsedId(u1); - amzwei.set_UsedId(ausedinmeth); - - as.set_Expr(lf,lf2); - amr.set_ReturnExpr(lf2); - - amrcv.set_Expr(lf); - ammc.set_Receiver(amrcv); - ammc.set_UsedId(ausedformeth); - ammc.add_Expr(amerst); - ammc.add_Expr(amzwei); - ammc2.set_Receiver(amrcv); - ammc2.set_UsedId(ausedformeth2); - - bl.set_Statement(as); - bl.set_Statement(ammc); - bl.set_Statement(ammc2); - bl.set_Statement(amr); - - amd1.set_Name("intwert"); - amd2.set_Name("extendtest"); - dcmd1.set_Name("intwert"); - dcmd2.set_Name("intwert"); - - ampf1.set_Type(t); - ampf2.set_Type(t5); - ampf1.set_DeclId(amd1); - ampf2.set_DeclId(amd2); - dcmpf1.set_Type(t); - dcmpf2.set_Type(t); - dcmpf1.set_DeclId(dcmd1); - dcmpf2.set_DeclId(dcmd2); - - amp.set_AddParameter(ampf1); - amp.set_AddParameter(ampf2); - dcmp.set_AddParameter(dcmpf1); - dcmp.set_AddParameter(dcmpf2); - - dcm.set_ParaList(dcmp); - m.set_ParaList(amp); - - dcm.set_Block(dcmb); - m.set_Block(bl); - cm.set_Block(cmb); - - d.set_Name("testfkt"); - cmname.set_Name("testen"); - dcmname.set_Name("testen"); - - m.set_ReturnType(t); - cm.set_ReturnType(t); - dcm.set_ReturnType(t); - - m.set_DeclId(d); - cm.set_DeclId(cmname); - dcm.set_DeclId(dcmname); - - ab.set_FieldDecl(m); - cb.set_FieldDecl(cm); - dcb.set_FieldDecl(dcm); - - a.set_ClassBody(ab); - class1.set_ClassBody(b1); - class2.set_ClassBody(b2); - class3.set_ClassBody(b3); - b.set_ClassBody(bb); - c.set_ClassBody(cb); - dc.set_ClassBody(dcb); - - source.set_Class(c); - source.set_Class(dc); - source.set_Class(b); - source.set_Class(class3); - source.set_Class(class2); - source.set_Class(class1); - source.set_Class(a); - try - { - source.sc_check(extendedsc); - } - catch (SCException ex) - { - ex.fehlerausgabe(); - } - } - - public void set_ext(boolean ext) - { - extendedsc=ext; - } - - public static void main(String args[]) - { - SCTest test=new SCTest(); - if(args!=null) - { - if(args[0].equals("fullinfo")) - test.set_ext(true); - else - test.set_ext(false); - } - test.build_tree(); - - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/Test.java b/examples/OldExamples/test/Test.java deleted file mode 100755 index 4a7f0452a..000000000 --- a/examples/OldExamples/test/Test.java +++ /dev/null @@ -1,16 +0,0 @@ -package test; - - - -public class Test extends ExtendTest -{ - Class3 testclass; - MethTestInherit mctest; - int versuch; - int testfkt() - { - testclass.class2var.class1var.testwert=testwert; - versuch=mctest.testen(); - return testwert; - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/TestCode.java b/examples/OldExamples/test/TestCode.java deleted file mode 100755 index 74ebff15f..000000000 --- a/examples/OldExamples/test/TestCode.java +++ /dev/null @@ -1,49 +0,0 @@ -package test; - - - -public class TestCode -{ - - TestSemantic sem = new TestSemantic(); - Vererbung vererb = new Vererbung(); - - void print_String(String s) { - System.out.println(s); - } - - void main(int a) { - if(a == 0) { - int i = 0; - while(i < 20) { - int k = 0; - while(k < i) { - System.out.print(" "); - k++; - } - - System.out.println("Hello World"); - i++; - } - vererb.print_Hello_World(); - vererb.print_Hello_World(); - - System.out.println(""); - } - else { - print_String(""); - print_String(""); - print_String(""); - print_String(" Dies war ein erfolgreicher Versuch der Gruppe 2: "); - print_String(""); - - sem.sem_test(); - - int i = 0; - while(i < 7) { - print_String(""); - i++; - } - } - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/TestSemantic.java b/examples/OldExamples/test/TestSemantic.java deleted file mode 100755 index eae83e23b..000000000 --- a/examples/OldExamples/test/TestSemantic.java +++ /dev/null @@ -1,35 +0,0 @@ -package test; - - - -public class TestSemantic -{ - - void print_Hello_World() { - System.out.println("Hello World"); - } - - void sem_test() { - System.out.println(" Parser:"); - System.out.println(""); - System.out.println(" Jochen Schlachter"); - System.out.println(" Thomas Schaumann"); - System.out.println(" Christian Riess"); - System.out.println(" Matthias Eichholz"); - System.out.println(""); - - System.out.println(" Sematicchecker:"); - System.out.println(""); - System.out.println(" Felix Reichenbach"); - System.out.println(" Stephan Lachenmaier"); - System.out.println(" Sabine Dawidowski"); - System.out.println(" "); - - System.out.println(" CodierSchweinchens:"); - System.out.println(""); - System.out.println(" Matthias Benesch"); - System.out.println(" Michael Henninger"); - System.out.println(" Volker Straub"); - System.out.println(" Stefan Teutsch"); - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/Vererbung.java b/examples/OldExamples/test/Vererbung.java deleted file mode 100755 index 4f1405bd5..000000000 --- a/examples/OldExamples/test/Vererbung.java +++ /dev/null @@ -1,8 +0,0 @@ -package test; - - - -public class Vererbung extends TestSemantic -{ - -} \ No newline at end of file diff --git a/examples/OldExamples/test/X.java b/examples/OldExamples/test/X.java deleted file mode 100755 index 316bc12f7..000000000 --- a/examples/OldExamples/test/X.java +++ /dev/null @@ -1,21 +0,0 @@ -package test; - - - -import java.io.FileOutputStream; -import CPInfo; -import ClassFile; - - - -public class X extends CPInfo -{ - byte tag; - short class_index; - short name_and_type_index; - - public void codegen(ClassFile classfile, FileOutputStream f) - { - - } -} \ No newline at end of file diff --git a/examples/OldExamples/test/Zwei.java b/examples/OldExamples/test/Zwei.java deleted file mode 100755 index 61555acb2..000000000 --- a/examples/OldExamples/test/Zwei.java +++ /dev/null @@ -1,27 +0,0 @@ -package test; - - - -public class Zwei -{ - int i,a; - - private void schleifen() - { - if( i <= 10) - { - i--; - } - else - { - i++; - a *= 2; - a = i+22; - } - int r = 0; - while (r !=10) - { - r++; - } - } -} \ No newline at end of file diff --git a/examples/achim/Abstract.jav b/examples/achim/Abstract.jav deleted file mode 100755 index 448e188df..000000000 --- a/examples/achim/Abstract.jav +++ /dev/null @@ -1,12 +0,0 @@ -static class Abstract{ - abstract test(){ - i; - i=0; - } - - final test2(){ - b; - b = true; - b = false; - } -} \ No newline at end of file diff --git a/examples/achim/Add.jav b/examples/achim/Add.jav deleted file mode 100755 index e512e2e46..000000000 --- a/examples/achim/Add.jav +++ /dev/null @@ -1,6 +0,0 @@ -class Add{ - test(i,j){ - a; - a=i+j; - } -} diff --git a/examples/achim/Assert.jav b/examples/achim/Assert.jav deleted file mode 100755 index c13faafc6..000000000 --- a/examples/achim/Assert.jav +++ /dev/null @@ -1,13 +0,0 @@ -public class Assert -{ - div( divident, divisor ) - { - assert divisor != 0 : "Oh bitte keine Zahl durch null teilen."; - return divident/divisor; - } - public static void main( args ) - { - println( "Quotient ist " + div(10, 2) ); - println( "Quotient ist " + div(10, 0) ); - } -} \ No newline at end of file diff --git a/examples/achim/Continue.jav b/examples/achim/Continue.jav deleted file mode 100755 index 0979d0566..000000000 --- a/examples/achim/Continue.jav +++ /dev/null @@ -1,17 +0,0 @@ -class Continue{ - public static main(args){ - w1; - w2; - w1 = 13; - - while(w1>0){ - if(w1<5){ - for(w1=0;w1<5;w1=w1+1){ - w2=w1; - y; - y=1; - } - } - } - } -} diff --git a/examples/achim/ElseIf.jav b/examples/achim/ElseIf.jav deleted file mode 100755 index 81fb15e85..000000000 --- a/examples/achim/ElseIf.jav +++ /dev/null @@ -1,20 +0,0 @@ -class ElseIf{ - public static void main(args){ - s; - i; - s = args; - e; - if(s < 10){ - e = s + 10; - } - else if(s > 10 && s < 20){ - e = s + 20; - } - else if(s > 20){ - e = s + 30; - } - else{ - e = s + 30; - } - } -} \ No newline at end of file diff --git a/examples/achim/Exceptions.jav b/examples/achim/Exceptions.jav deleted file mode 100755 index 9e218c4b9..000000000 --- a/examples/achim/Exceptions.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Exceptions{ - funktion(){ - i; - if(true){ - a; - } - - } -} \ No newline at end of file diff --git a/examples/achim/ForTest.jav b/examples/achim/ForTest.jav deleted file mode 100755 index 8962de468..000000000 --- a/examples/achim/ForTest.jav +++ /dev/null @@ -1,10 +0,0 @@ -class ForTest{ - methode(){ - i; - /*i=0;*/ - b; - for(;i+1;){ - /*i=1;*/ - } - } -} diff --git a/examples/achim/Implements.jav b/examples/achim/Implements.jav deleted file mode 100755 index abe024a7a..000000000 --- a/examples/achim/Implements.jav +++ /dev/null @@ -1,18 +0,0 @@ -class Implements extends Types implements Modifier{ - method(){ - i; - println(i); - } - - println(i){ - d; - d = i; - } -} - -class Implements2 extends Types{ - method2(){ - n; - n = 4; - } -} \ No newline at end of file diff --git a/examples/achim/Instanceof.jav b/examples/achim/Instanceof.jav deleted file mode 100755 index 14a6e7916..000000000 --- a/examples/achim/Instanceof.jav +++ /dev/null @@ -1,10 +0,0 @@ -class Instanceof{ - method(mitgift){ - i; - i = new Integer(); - if(mitgift == Instanceof){ - return mitgift; - } - else return null; - } -} \ No newline at end of file diff --git a/examples/achim/Interface.jav b/examples/achim/Interface.jav deleted file mode 100755 index d63ad974b..000000000 --- a/examples/achim/Interface.jav +++ /dev/null @@ -1,4 +0,0 @@ -interface Unterhaltend -{ - int unterhaltungswert(); -} \ No newline at end of file diff --git a/examples/achim/Modifier.jav b/examples/achim/Modifier.jav deleted file mode 100755 index ffb986026..000000000 --- a/examples/achim/Modifier.jav +++ /dev/null @@ -1,53 +0,0 @@ -package examples.achim; - -class Modifier{ - - void test2(){ - i; - i = "hallo2"; - } - - public test3(){ - text; - text = "text"; - return text; - } - - public test31(){ - text; - text = "text"; - } - - static test4(){ - buchstabe; - buchstabe = 'a'; - return buchstabe; - } - - static test41(){ - buchstabe; - buchstabe = 'a'; - } - - protected test5(){ - zahl; - zahl = 10; - return zahl; - } - - protected test51(){ - zahl; - zahl = 10; - } - - private test6(){ - zahl; - zahl = 10; - return zahl; - } - - private test61(){ - zahl; - zahl = 10; - } -} \ No newline at end of file diff --git a/examples/achim/Modifier2.jav b/examples/achim/Modifier2.jav deleted file mode 100755 index c852d389c..000000000 --- a/examples/achim/Modifier2.jav +++ /dev/null @@ -1,30 +0,0 @@ -package examples.achim; -import java.lang.Math; -class Modifier2{ - - void test2(){ - int s; - i; - i = 42; - s; - s = "string"; - d; - } - - public test3(){ - text; - text = "text"; - return text; - } - - public test31(){ - text; - text = "text"; - } - - static test4(){ - buchstabe; - buchstabe = 'a'; - return buchstabe; - } -} \ No newline at end of file diff --git a/examples/achim/Super.jav b/examples/achim/Super.jav deleted file mode 100755 index d918a33d6..000000000 --- a/examples/achim/Super.jav +++ /dev/null @@ -1,13 +0,0 @@ -import javax.swing.JFrame; - -class Super extends JFrame{ - method(mitgift){ - super("Fenster"); - i; - i = new Integer(); - if(mitgift == Instanceof){ - return mitgift; - } - else return null; - } -} \ No newline at end of file diff --git a/examples/achim/SwitchCase.jav b/examples/achim/SwitchCase.jav deleted file mode 100755 index 8723eeb6c..000000000 --- a/examples/achim/SwitchCase.jav +++ /dev/null @@ -1,24 +0,0 @@ -class SwitchCase{ - test(){ - i; - i=3; - switch (i){ - case 1: - case 3: - case 5: - case 7: - case 9: - System.out.println("ungerade"); - break; - case 2: - case 4: - case 6: - case 8: - System.out.println("gerade"); - break; - default: - System.out.println("nicht im wertebereich"); - break; - } - } -} \ No newline at end of file diff --git a/examples/achim/Synchronized.jav b/examples/achim/Synchronized.jav deleted file mode 100755 index 4ffb1af0a..000000000 --- a/examples/achim/Synchronized.jav +++ /dev/null @@ -1,8 +0,0 @@ -class Synchronized{ - method(){ - i; - synchronized(i){ - - } - } -} \ No newline at end of file diff --git a/examples/achim/This.jav b/examples/achim/This.jav deleted file mode 100755 index 59455ce6a..000000000 --- a/examples/achim/This.jav +++ /dev/null @@ -1,10 +0,0 @@ -class This{ - public This(i){ - i; - } - - methode(){ - i; - this.i = 0; - } -} \ No newline at end of file diff --git a/examples/achim/TryCatch.jav b/examples/achim/TryCatch.jav deleted file mode 100755 index dc23cce14..000000000 --- a/examples/achim/TryCatch.jav +++ /dev/null @@ -1,10 +0,0 @@ -class TryCatch{ - test(){ - try{ - i; - i=0; - }catch(e){ - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/examples/achim/Types.jav b/examples/achim/Types.jav deleted file mode 100755 index 200bca8d5..000000000 --- a/examples/achim/Types.jav +++ /dev/null @@ -1,31 +0,0 @@ -class Types{ - test(b, c, d, f, i, l, s){ - b; - b2; - c; - d; - f; - i; - l; - s; - - b = true; - if(b){ - b=false; - } - if(true) - b2 = b; - i = 65; - c = 'a'; - f = i/2; - d = "hallo"; - s = -3; - l = d.substring(2,1); - - boolean bo; - char c; - int i; - - return i; - } -} \ No newline at end of file diff --git a/examples/achim/Vector.jav b/examples/achim/Vector.jav deleted file mode 100755 index 29b0b9882..000000000 --- a/examples/achim/Vector.jav +++ /dev/null @@ -1,8 +0,0 @@ -class Menge{ - method(){ - v; - v = new Menge(); - v.add((new Integer(9)); - ((String)v.get(5)) + "hallo"; - } -} \ No newline at end of file diff --git a/examples/achim/While.jav b/examples/achim/While.jav deleted file mode 100755 index b9c1b0a38..000000000 --- a/examples/achim/While.jav +++ /dev/null @@ -1,19 +0,0 @@ -class While{ - method(){ - i; - i = 0; - while(i < 10) { - i++; - } - - while(true){ - s; - s = "zweiundvierzig"; - } - - while(false){ - t; - t = 42; - } - } -} diff --git a/examples/achim/WhileTest.jav b/examples/achim/WhileTest.jav deleted file mode 100755 index e69de29bb..000000000 diff --git a/examples/bajo1/Martin.jav b/examples/bajo1/Martin.jav deleted file mode 100755 index ea9bdeb79..000000000 --- a/examples/bajo1/Martin.jav +++ /dev/null @@ -1,6 +0,0 @@ -class Martin{ - - void TalkTo(String person){ - - } -} \ No newline at end of file diff --git a/examples/bajo1/Matrix.jav b/examples/bajo1/Matrix.jav deleted file mode 100755 index 48709bc2a..000000000 --- a/examples/bajo1/Matrix.jav +++ /dev/null @@ -1,26 +0,0 @@ -class Matrix extends Menge> { - - mul(m){ - ret = new Matrix(); - i = 0; - while(i (); - j = 0; - while(j < v1.size()) { - erg = 0; - k = 0; - while(k < v1.size()) { - erg = erg + v1.elementAt(k).intValue() * m.elmentAt(k).elementAt(j).intValue(); - k++; - } - v2.addElement(new Integer(erg); - j++; - } - ret.addElement(v2); - i++; - } - return ret; - } - -} \ No newline at end of file diff --git a/examples/bajo1/SchorschTest.jav b/examples/bajo1/SchorschTest.jav deleted file mode 100755 index 4132c169b..000000000 --- a/examples/bajo1/SchorschTest.jav +++ /dev/null @@ -1,11 +0,0 @@ -class SchorschTest{ - int iMember; - String hallo; - - SchorschTest(int i){ - iMember = i; - } - - void tuWas(){ - } -} \ No newline at end of file diff --git a/examples/bajo1/Simple.jav b/examples/bajo1/Simple.jav deleted file mode 100755 index aa0d83636..000000000 --- a/examples/bajo1/Simple.jav +++ /dev/null @@ -1,7 +0,0 @@ -class Simple{ - int x; - - simple(){ - return 5; - } -} \ No newline at end of file diff --git a/examples/bajo1/Test.jav b/examples/bajo1/Test.jav deleted file mode 100755 index 6109d7815..000000000 --- a/examples/bajo1/Test.jav +++ /dev/null @@ -1,3 +0,0 @@ -class Bla extends Blub{ - Menge v = null; -} \ No newline at end of file diff --git a/examples/bajo1_usecases/BlockIDTest.jav b/examples/bajo1_usecases/BlockIDTest.jav deleted file mode 100755 index 0d319866f..000000000 --- a/examples/bajo1_usecases/BlockIDTest.jav +++ /dev/null @@ -1,12 +0,0 @@ -class BlockIDTest{ - - void foo(Stack bar){ - { - umu; - umu = bar; - } - { - Integer x; - } - } -} \ No newline at end of file diff --git a/examples/bajo1_usecases/Matrix.jav b/examples/bajo1_usecases/Matrix.jav deleted file mode 100755 index cbcc59eab..000000000 --- a/examples/bajo1_usecases/Matrix.jav +++ /dev/null @@ -1,35 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class Matrix extends Menge> { - - mul(m){ - Menge> ret; - ret = new Matrix(); - i; - i = 0; - while(i (); - j; - j = 0; - while(j < v1.size()) { - erg; - erg = 0; - k; - k = 0; - while(k < v1.size()) { - erg = erg + v1.elementAt(k).intValue() * m.elementAt(k).elementAt(j).intValue(); - k++; - } - v2.addElement(new Integer(erg)); - j++; - } - ret.addElement(v2); - i++; - } - return ret; - } - -} diff --git a/examples/bajo1_usecases/Matrix1.jav b/examples/bajo1_usecases/Matrix1.jav deleted file mode 100755 index 673ab47da..000000000 --- a/examples/bajo1_usecases/Matrix1.jav +++ /dev/null @@ -1,21 +0,0 @@ -class Matrix extends Menge> { - - mul(m){ - Menge> ret; - ret = new Matrix(); - i; - i = 0; - while(i (); - j; - j = 0; - ret.addElement(v2); - i++; - } - return ret; - } - -} diff --git a/examples/bajo1_usecases/Matrix2.jav b/examples/bajo1_usecases/Matrix2.jav deleted file mode 100755 index b98a82cfd..000000000 --- a/examples/bajo1_usecases/Matrix2.jav +++ /dev/null @@ -1,11 +0,0 @@ -class Matrix extends Menge> { - - mul(m){ - k; - k = 0; - ret; - ret = m.elementAt(k).elementAt(k).intValue(); - return ret; - } - -} diff --git a/examples/bajo1_usecases/Test.jav b/examples/bajo1_usecases/Test.jav deleted file mode 100755 index 864afb82c..000000000 --- a/examples/bajo1_usecases/Test.jav +++ /dev/null @@ -1,11 +0,0 @@ -class Test{ - Character foo(Character bar){ - return bar; - } - - bla(blub, umu, lala){ - blub = this.foo(umu); - return blub; - } - -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseFive.jav b/examples/bajo1_usecases/UsecaseFive.jav deleted file mode 100755 index 59edc47bc..000000000 --- a/examples/bajo1_usecases/UsecaseFive.jav +++ /dev/null @@ -1,15 +0,0 @@ -class UsecaseFive{ - - foo(bar){ - if(bar==true){ - umu; - umu = bar; - return new Integer(3); - } - else { - x; - return x; - } - } - -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseFour.jav b/examples/bajo1_usecases/UsecaseFour.jav deleted file mode 100755 index 68cb7eba1..000000000 --- a/examples/bajo1_usecases/UsecaseFour.jav +++ /dev/null @@ -1,11 +0,0 @@ -class UsecaseFour{ - - foo(bla){ - while(bla==true){ - Integer x; - x = 5; - } - return bla; - } - -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseOne.jav b/examples/bajo1_usecases/UsecaseOne.jav deleted file mode 100755 index 845d7bc92..000000000 --- a/examples/bajo1_usecases/UsecaseOne.jav +++ /dev/null @@ -1,5 +0,0 @@ -class UsecaseOne{ - foo(){ - return (4*(3-2))>2; - } -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseSix.jav b/examples/bajo1_usecases/UsecaseSix.jav deleted file mode 100755 index 88594c1b9..000000000 --- a/examples/bajo1_usecases/UsecaseSix.jav +++ /dev/null @@ -1,14 +0,0 @@ -class UsecaseSix{ - - umu(Character c){ - x; - return x; - } - - void foo(bar){ - y; - y = 5; - y = this.umu(bar); - } - -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseThree.jav b/examples/bajo1_usecases/UsecaseThree.jav deleted file mode 100755 index 248964e44..000000000 --- a/examples/bajo1_usecases/UsecaseThree.jav +++ /dev/null @@ -1,20 +0,0 @@ -class UsecaseThree{ - Boolean m_Zulu; - - foo(bar, umu, Stack lala, num){ - ret; - { - bar = 5; - { - myTestVar; - myTestVar = lala; - } - { - myTestVar; - myTestVar = m_Zulu && true; - } - } - ret = (num+3)==8; - return ret; - } -} \ No newline at end of file diff --git a/examples/bajo1_usecases/UsecaseTwo.jav b/examples/bajo1_usecases/UsecaseTwo.jav deleted file mode 100755 index 2712c16d5..000000000 --- a/examples/bajo1_usecases/UsecaseTwo.jav +++ /dev/null @@ -1,6 +0,0 @@ -class UsecaseTwo{ - foo(bar){ - bar = new Integer(3); - return bar!=2; - } -} \ No newline at end of file diff --git a/examples/feda/feda.jav b/examples/feda/feda.jav deleted file mode 100755 index 27fd449bf..000000000 --- a/examples/feda/feda.jav +++ /dev/null @@ -1,25 +0,0 @@ -package none; - -import de.dhbwstuttgart.typeinference.Menge; -import java.util.Stack; - -interface GeomObjektTrans { - void verschieben(); - void strecken(); -} - -public class Hello { - public static void main(String[] args) { - - } -} - -public class Quadrat implements GeomObjektTrans { - public strecken(a,b){ - return a*b; - } - public void verschieben(){ - - } - -} \ No newline at end of file diff --git a/examples/feda/feda2.jav b/examples/feda/feda2.jav deleted file mode 100755 index c20f7245b..000000000 --- a/examples/feda/feda2.jav +++ /dev/null @@ -1,8 +0,0 @@ -class Daniel { - static void drinkCoffee() { - - } - public void soso() { - Daniel.drinkCoffee(); - } -} \ No newline at end of file diff --git a/examples/feda/feda3.jav b/examples/feda/feda3.jav deleted file mode 100755 index 720050264..000000000 --- a/examples/feda/feda3.jav +++ /dev/null @@ -1,4 +0,0 @@ -interface GeomObjektTrans { - void verschieben(); - void strecken(); - } \ No newline at end of file diff --git a/examples/feda/feda4.jav b/examples/feda/feda4.jav deleted file mode 100755 index 99ce821c2..000000000 --- a/examples/feda/feda4.jav +++ /dev/null @@ -1,17 +0,0 @@ -public class Auto { - - tachoStand; - - public void fahren(distanz) { - tachoStand = tachoStand + distanz; - } - - public void abschleppen(auto, distanz) { - auto.fahren(distanz); - } - public static void main(String[] args) { - meinPKW.fahren(100); - bmw.fahren(100); - bmw.fahren(100); - } - } \ No newline at end of file diff --git a/examples/feda/quadrat.jav b/examples/feda/quadrat.jav deleted file mode 100755 index 11a26c39d..000000000 --- a/examples/feda/quadrat.jav +++ /dev/null @@ -1,20 +0,0 @@ -public class Quadrat { - public machwas(){ - - return " Daniel" ; - } - - public static drinken(){ - return " Daniel drinkt was"; - } - -} - -public class Sohalt { - - public machwas2(){ - - - return Quadrat.drinken(); - } -} \ No newline at end of file diff --git a/examples/hoth/Test.jav b/examples/hoth/Test.jav deleted file mode 100755 index d43d919c2..000000000 --- a/examples/hoth/Test.jav +++ /dev/null @@ -1,15 +0,0 @@ -class Test { - - public getValue(a){ - String x; - - Stack s = new Stack(); - a=s; - d; - d.addElement("33"); - x=x; - - -return x; - } } - diff --git a/examples/hoth/Test2.jav b/examples/hoth/Test2.jav deleted file mode 100755 index 6dc6bbce0..000000000 --- a/examples/hoth/Test2.jav +++ /dev/null @@ -1,23 +0,0 @@ -class Test2{ - String b="33"; - - foo(){ - ret; - String g="w"; - { - ret = 5; - g="5"; - } - ret = 3+4; - b="22"; - return ret; - } - - int neufoo(a) - { - tt; - tt=foo(); - a="ww"; - return 3; - } -} \ No newline at end of file diff --git a/examples/hoti/BoundedClassPara.jav b/examples/hoti/BoundedClassPara.jav deleted file mode 100755 index d0595ee34..000000000 --- a/examples/hoti/BoundedClassPara.jav +++ /dev/null @@ -1,10 +0,0 @@ -class Gen { - public doSomething(X num){ - } -} - -class Test{ - public void test(x){ - x.doSomething(""); - } -} \ No newline at end of file diff --git a/examples/hoti/Constr.jav b/examples/hoti/Constr.jav deleted file mode 100755 index c878748fb..000000000 --- a/examples/hoti/Constr.jav +++ /dev/null @@ -1,18 +0,0 @@ -public class Constr{ - String name; - public Constr(x){ - name=x; - } - -} - - -public class Test{ - - public void test(){ - a; - Constr x; - x=new Constr(a); - } - -} \ No newline at end of file diff --git a/examples/hoti/EmptyResultProblem.jav b/examples/hoti/EmptyResultProblem.jav deleted file mode 100755 index a181746bd..000000000 --- a/examples/hoti/EmptyResultProblem.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Empty{ - hasenfuss(){ - } -} -class User{ - testProblem(x){ - x.hasenfuss(); - } -} \ No newline at end of file diff --git a/examples/hoti/ErrorTest.jav b/examples/hoti/ErrorTest.jav deleted file mode 100755 index 31cb3b9af..000000000 --- a/examples/hoti/ErrorTest.jav +++ /dev/null @@ -1,13 +0,0 @@ - public class MyInterface { - public String convert(String x, Integer mode){ - return(""); - } -} - -public class Test{ - public void test(x){ - y; - z; - y=x.convert(z,1); - } -} diff --git a/examples/hoti/Generic.jav b/examples/hoti/Generic.jav deleted file mode 100755 index cb55e9fdb..000000000 --- a/examples/hoti/Generic.jav +++ /dev/null @@ -1,22 +0,0 @@ -public class Generic extends Tester -{ - - X elem; - - public setElement(e){ - elem=e; - } - - public X getElement(){ - return elem; - } - -} - -public class Tester{ - public meth(String e){ - x; - x.setElement(""); - return(x.getElement()); - } -} \ No newline at end of file diff --git a/examples/hoti/GenericMethod.jav b/examples/hoti/GenericMethod.jav deleted file mode 100755 index 270da7903..000000000 --- a/examples/hoti/GenericMethod.jav +++ /dev/null @@ -1,8 +0,0 @@ -class Test { - addElement2(E elem){ - return(elem); - } - test(x){ - x.addElement2(new Number()); - } -} \ No newline at end of file diff --git a/examples/hoti/GenericsTest.jav b/examples/hoti/GenericsTest.jav deleted file mode 100755 index 1f2bc4558..000000000 --- a/examples/hoti/GenericsTest.jav +++ /dev/null @@ -1,15 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -public class Test{ - - public X method(a){ - return(a); - } - -} - -public class Inst{ - public inst(b){ - return(b.method("HALLO")); - } -} \ No newline at end of file diff --git a/examples/hoti/Id.jav b/examples/hoti/Id.jav deleted file mode 100755 index e338d04b9..000000000 --- a/examples/hoti/Id.jav +++ /dev/null @@ -1,17 +0,0 @@ -class Helper{ - public id(x){ - return(x); - } -} - -class User{ - public test(Integer input1, String input2){ - x; - x=new Helper(); - a; - a=x.id(input1); - b; - b=x.id(input2); - - } -} \ No newline at end of file diff --git a/examples/hoti/ImplClass.jav b/examples/hoti/ImplClass.jav deleted file mode 100755 index 7099d5020..000000000 --- a/examples/hoti/ImplClass.jav +++ /dev/null @@ -1,5 +0,0 @@ -public class ImplClass implements Test{ - - - -} \ No newline at end of file diff --git a/examples/hoti/Import.jav b/examples/hoti/Import.jav deleted file mode 100755 index 2b5f738dd..000000000 --- a/examples/hoti/Import.jav +++ /dev/null @@ -1,10 +0,0 @@ -package none; - -import de.dhbwstuttgart.typeinference.Menge; -import java.util.Stack; - -public class Test{ - test(Menge x){ - x.addElement(""); - } -} \ No newline at end of file diff --git a/examples/hoti/Intf.jav b/examples/hoti/Intf.jav deleted file mode 100755 index 5fe463636..000000000 --- a/examples/hoti/Intf.jav +++ /dev/null @@ -1,18 +0,0 @@ -/*interface Intf { - E test2(E para1); -} -class Test{ - public test(String x){ - a; - return(a.test2(x)); - } -}*/ - -interface Intf{ - doSomething(); -} -class Test{ - public test(x){ - x.doSomething(); - } -} \ No newline at end of file diff --git a/examples/hoti/IntfTest.jav b/examples/hoti/IntfTest.jav deleted file mode 100755 index a4993a34c..000000000 --- a/examples/hoti/IntfTest.jav +++ /dev/null @@ -1,15 +0,0 @@ -interface Intf1{ -} -interface Intf2{ -} -class Gesucht implements Intf1, Intf2{ - doSomething(){ - } -} - -class Test{ - public test(x){ - x.doSomething(); - return(x); - } -} \ No newline at end of file diff --git a/examples/hoti/Matrix.jav b/examples/hoti/Matrix.jav deleted file mode 100755 index cbcc59eab..000000000 --- a/examples/hoti/Matrix.jav +++ /dev/null @@ -1,35 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class Matrix extends Menge> { - - mul(m){ - Menge> ret; - ret = new Matrix(); - i; - i = 0; - while(i (); - j; - j = 0; - while(j < v1.size()) { - erg; - erg = 0; - k; - k = 0; - while(k < v1.size()) { - erg = erg + v1.elementAt(k).intValue() * m.elementAt(k).elementAt(j).intValue(); - k++; - } - v2.addElement(new Integer(erg)); - j++; - } - ret.addElement(v2); - i++; - } - return ret; - } - -} diff --git a/examples/hoti/Mehrfachvererbung.jav b/examples/hoti/Mehrfachvererbung.jav deleted file mode 100755 index f6b5943ea..000000000 --- a/examples/hoti/Mehrfachvererbung.jav +++ /dev/null @@ -1,14 +0,0 @@ -interface Intf1{ -} -interface Intf2{ -} -class Gesucht implements Intf1, Intf2{ - -} - -class Test{ - public test(x){ - x=new Intf1(); - x=new Intf2(); - } -} diff --git a/examples/hoti/Multiclass.jav b/examples/hoti/Multiclass.jav deleted file mode 100755 index f3d2fff52..000000000 --- a/examples/hoti/Multiclass.jav +++ /dev/null @@ -1,11 +0,0 @@ -public class Blubb extends Timo {} - -public class Timo extends Holzherr { - public test2( ){ - - x; - x = "blubb"; - x = 10; - - } -} diff --git a/examples/hoti/Overl.jav b/examples/hoti/Overl.jav deleted file mode 100755 index ad0df64e4..000000000 --- a/examples/hoti/Overl.jav +++ /dev/null @@ -1,24 +0,0 @@ -class Overl{ - - public Integer overloaded(a){ - return(a); - } - public String overloaded(b){ - return(b); - } - -} - -class OverlMaster extends Overl{ - public X overloaded(a){ - return(a); - } -} - -class Test{ - public Boolean test(Boolean b){ - c; - return(c.overloaded(b)); - } - -} \ No newline at end of file diff --git a/examples/hoti/ReturnTypeProblem.jav b/examples/hoti/ReturnTypeProblem.jav deleted file mode 100755 index 4fccddfa1..000000000 --- a/examples/hoti/ReturnTypeProblem.jav +++ /dev/null @@ -1,7 +0,0 @@ -class Test{ - public Boolean test(Boolean b,c){ - c=b; - return(c); - } - -} \ No newline at end of file diff --git a/examples/hoti/Simple.jav b/examples/hoti/Simple.jav deleted file mode 100755 index af04c73f8..000000000 --- a/examples/hoti/Simple.jav +++ /dev/null @@ -1,5 +0,0 @@ -public class Timo { - public E getElement(E x){ - return(x); - } -} \ No newline at end of file diff --git a/examples/hoti/Simple2.jav b/examples/hoti/Simple2.jav deleted file mode 100755 index e942b0ffd..000000000 --- a/examples/hoti/Simple2.jav +++ /dev/null @@ -1,10 +0,0 @@ -import java.util.Stack; - -class Simple2{ - Menge test(Boolean first){ - x; - x=new Menge(); - x=new Stack(); - return(x); - } -} \ No newline at end of file diff --git a/examples/hoti/Test.jav b/examples/hoti/Test.jav deleted file mode 100755 index 314aa2122..000000000 --- a/examples/hoti/Test.jav +++ /dev/null @@ -1,14 +0,0 @@ -interface AA {} - -interface BB {} - -class CC implements AA, BB {} - -class BoundedTypeVar { - CC c; - & BB> m(T x) { - m(new CC()); - x = new CC(); - } -} - diff --git a/examples/hoti/Test2.jav b/examples/hoti/Test2.jav deleted file mode 100755 index 5930c3b80..000000000 --- a/examples/hoti/Test2.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Test2 { - public meth(){ - if(true) { - return(1); - }else{ - return(2); - } - } -} \ No newline at end of file diff --git a/examples/hoti/Test3.jav b/examples/hoti/Test3.jav deleted file mode 100755 index aab68cd16..000000000 --- a/examples/hoti/Test3.jav +++ /dev/null @@ -1,9 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -public class Test3 { - - public getValue(a,String y){ - a.addElement(y); - return(y); - } -} \ No newline at end of file diff --git a/examples/hoti/VectorStack.jav b/examples/hoti/VectorStack.jav deleted file mode 100755 index 013722d89..000000000 --- a/examples/hoti/VectorStack.jav +++ /dev/null @@ -1,10 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -public class MengeStack { - - public test(x,y){ - x.addElement("TEST"); - return(x.elementAt(y)); - } - -} \ No newline at end of file diff --git a/examples/hoti/VectorTest.jav b/examples/hoti/VectorTest.jav deleted file mode 100755 index ea534326b..000000000 --- a/examples/hoti/VectorTest.jav +++ /dev/null @@ -1,13 +0,0 @@ -import java.util.Stack; -import java.util.Hashtable; - -public class MengeTest{ - - public test(x){ - b; - b=1; - a; - a=x+b; - } - -} \ No newline at end of file diff --git a/examples/hoti/VererbProb.jav b/examples/hoti/VererbProb.jav deleted file mode 100755 index e504fc42a..000000000 --- a/examples/hoti/VererbProb.jav +++ /dev/null @@ -1,23 +0,0 @@ -public class M1{} - -public class M2 extends M1 {} - -public class Test { - - public doSomething(Boolean big){ - M2 ret; - - ret1; - ret2; - - ret1=new M2(); - ret2=new M2(); - - if(big){ - ret=ret1; - }else{ - ret=ret2; - } - return(ret); - } -} \ No newline at end of file diff --git a/examples/hoti/WorkerExample.jav b/examples/hoti/WorkerExample.jav deleted file mode 100755 index 1e7073939..000000000 --- a/examples/hoti/WorkerExample.jav +++ /dev/null @@ -1,17 +0,0 @@ -class Worker1{ - void doSomething(String x){} - } - class Worker2{ - void doSomething(Integer y){} - } - class Content1{ - String getElem(){return("");} - } - class Content2{ - Integer getElem(){return(1);} - } - class User{ - meth(worker,content){ - worker.doSomething(content.getElem()); - } - } \ No newline at end of file diff --git a/examples/hoti/arne.jav b/examples/hoti/arne.jav deleted file mode 100755 index 9b564ca8f..000000000 --- a/examples/hoti/arne.jav +++ /dev/null @@ -1,10 +0,0 @@ -import java.util.Stack; - -class Arne { - -drinkCoffee(x) { - x.push("Hallo"); - String y = x.pop(); -} - -} \ No newline at end of file diff --git a/examples/hoti/hothtest.jav b/examples/hoti/hothtest.jav deleted file mode 100755 index f89221ff5..000000000 --- a/examples/hoti/hothtest.jav +++ /dev/null @@ -1,9 +0,0 @@ -public class Test{ - public test(y){ - c; - c=5; - d; - d=5; - y=c+d; - } -} \ No newline at end of file diff --git a/examples/lambda/general.jav b/examples/lambda/general.jav deleted file mode 100755 index 751ba06d2..000000000 --- a/examples/lambda/general.jav +++ /dev/null @@ -1,23 +0,0 @@ -//package LampdaExpressions; - -import java.util.concurrent.Callable; - -public class general extends Menge> { - - - - public String test(String c) throws Exception { - Callable halloLambda; - a; - a = () -> {return "hallo";}; - a = a + 1; - return a.call(); - } - - - - public String test2(){ - return "hallo"; - } - -} diff --git a/examples/lambda/test1.jav b/examples/lambda/test1.jav deleted file mode 100755 index bb0ff15d1..000000000 --- a/examples/lambda/test1.jav +++ /dev/null @@ -1,6 +0,0 @@ -class Matrix extends Menge> { - method(){ - op; - op = "test"; - } -} \ No newline at end of file diff --git a/examples/lambda/test2.jav b/examples/lambda/test2.jav deleted file mode 100755 index 1f66bb0d4..000000000 --- a/examples/lambda/test2.jav +++ /dev/null @@ -1,3 +0,0 @@ -class Matrix extends Menge> { - op = (m) -> (f) -> f.apply(this, m); -} \ No newline at end of file diff --git a/examples/luar/TestSmall.jav b/examples/luar/TestSmall.jav deleted file mode 100755 index d3213a1f0..000000000 --- a/examples/luar/TestSmall.jav +++ /dev/null @@ -1,12 +0,0 @@ -class TestSmall -{ - void test() - { - x; - x = "Hallo"; - i; - i = 17; - j; - j = i; - } -} \ No newline at end of file diff --git a/examples/luar/WCParseTest.jav b/examples/luar/WCParseTest.jav deleted file mode 100755 index 5409750ac..000000000 --- a/examples/luar/WCParseTest.jav +++ /dev/null @@ -1,20 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class WCTest{ - - void test() - { - Menge> v1 = new Menge>(); - } - -} - -class Sub1 {} - -class Sub2 extends Sub1 {} - -class Sub3 extends Sub2 {} - -class N {} - -class Test extends N> {} \ No newline at end of file diff --git a/examples/luar/WCTest1.jav b/examples/luar/WCTest1.jav deleted file mode 100755 index c89aed4bb..000000000 --- a/examples/luar/WCTest1.jav +++ /dev/null @@ -1,23 +0,0 @@ - -Menge Menge> - - -Menge Menge> - -class A { } -class B extends A { } -class D { } -class E extends D,b> { } - -class Number {} -class Integer extends Number {} - -class AbstractList extends List {} -class List {} -class Menge extends List {} -class Stack extends Menge {} -class Test extends Menge {} - -/*D, ? extends A> Test,A>*/ -/*D, D> D, ? super E>*/ -/*Stack Menge AbstractList List*/ \ No newline at end of file diff --git a/examples/luar/WCTest10.jav b/examples/luar/WCTest10.jav deleted file mode 100755 index c02e3e8ff..000000000 --- a/examples/luar/WCTest10.jav +++ /dev/null @@ -1,17 +0,0 @@ -/* Menge> Menge> */ - -/* FUNKTIONIERT!! */ - -Big2,d,e,f> BigBig2 - -/* Funktioniert auch!!! */ - -class Big extends BigBig {} -class BigBig {} - -class Big2 extends BigBig2 {} -class BigBig2 {} - -class Menge {} -class Integer extends Number {} -class Number {} \ No newline at end of file diff --git a/examples/luar/WCTest11.jav b/examples/luar/WCTest11.jav deleted file mode 100755 index 5fe2ab930..000000000 --- a/examples/luar/WCTest11.jav +++ /dev/null @@ -1,47 +0,0 @@ -Menge Menge -/* Menge Menge> */ -/* Erg.: -[[(TPH a = Menge< Integer >), (TPH b = Matrix)], - [(TPH a = Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Object), (TPH b = Matrix)], - [(TPH a = ? extends Object), (TPH b = ? extends Matrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = Matrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = Menge< Integer >), (TPH b = ExtMatrix)], - [(TPH a = Menge< Integer >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = ExtMatrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = ExtMatrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = ExtMatrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? extends Object), (TPH b = ExtMatrix)], - [(TPH a = ? extends Object), (TPH b = ? extends ExtMatrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = ExtMatrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = ? extends ExtMatrix)], - [(TPH b = Menge< TPH a >)], - [(TPH b = ? extends Menge< TPH a >)]] -*/ - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Matrix extends Menge> { } - -class ExtMatrix extends Matrix { } \ No newline at end of file diff --git a/examples/luar/WCTest2.jav b/examples/luar/WCTest2.jav deleted file mode 100755 index b881e55be..000000000 --- a/examples/luar/WCTest2.jav +++ /dev/null @@ -1,12 +0,0 @@ -Stack Menge -AbstractList List - -/* funktioniert */ - -class Number {} -class Integer extends Number {} - -class AbstractList extends List {} -class List {} -class Menge extends List {} -class Stack extends Menge {} \ No newline at end of file diff --git a/examples/luar/WCTest3.jav b/examples/luar/WCTest3.jav deleted file mode 100755 index 42525f114..000000000 --- a/examples/luar/WCTest3.jav +++ /dev/null @@ -1,9 +0,0 @@ -List List> - -/* funktioniert */ - -class Number {} -class Integer extends Number {} - -class myLi extends List {} -class List {} \ No newline at end of file diff --git a/examples/luar/WCTest4.jav b/examples/luar/WCTest4.jav deleted file mode 100755 index 5a6876dea..000000000 --- a/examples/luar/WCTest4.jav +++ /dev/null @@ -1,11 +0,0 @@ -Matrix Menge - -/* Fehler behoben. Korrekt? - sieht gut aus PL 07-07-09 */ - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Matrix extends Menge> { } \ No newline at end of file diff --git a/examples/luar/WCTest5.jav b/examples/luar/WCTest5.jav deleted file mode 100755 index 668489c00..000000000 --- a/examples/luar/WCTest5.jav +++ /dev/null @@ -1,71 +0,0 @@ -/* Menge Menge> */ -/* Erg: -[[(TPH a = Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = ? extends Matrix)], - [(TPH a = ? extends Object), (TPH b = ? extends Matrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = ? extends Matrix)], - [(TPH a = Menge< Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Number >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? extends Object >), (TPH b = Matrix)], - [(TPH a = ? extends Menge< ? super Integer >), (TPH b = Matrix)], - [(TPH a = ? extends Object), (TPH b = Matrix)], - [(TPH a = ? super Menge< Integer >), (TPH b = Matrix)], - [(TPH b = ? extends Menge< TPH a >)], - [(TPH b = Menge< TPH a >)]] - */ -/* FUNKTIONIERT !!! */ - - -/* Fehler bei b : - Reflexivitaet fehlt: b = Vec bzw. b = ? ext Vec wird nicht berechnet - isRXSimilarRY ist wahrscheinlich die falsche Methode, hier wird geprueft, - ob RY instance von RFC ist. Das ist bei RY = Vec und RFC = Vec> - nicht der Fall. Moeglicherweise statt isRXSimilarRY match benutzen ??? - - PL 07-07-04: isRXSimilarRY scheint jetzt zu funktionieren. - Reflexivitaet fehlt noch - */ - -/* Fehler behoben. Korrekt? */ - - - /* Menge> Menge */ - - /* FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */ - -/* Menge Menge> */ -/* Test der 3. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */ - -/* Menge Menge */ -/* Test der 4. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */ - -Menge Menge>> -/* funktioniert. Ergebnis: -[[(TPH b = Integer), (TPH a = ? extends Matrix)], - [(TPH b = Integer), (TPH a = Matrix)], - [(TPH b = ? extends Integer), (TPH a = ? extends Matrix)], - [(TPH b = ? extends Integer), (TPH a = Matrix)], - [(TPH b = ? extends Number), (TPH a = ? extends Matrix)], - [(TPH b = ? extends Number), (TPH a = Matrix)], - [(TPH b = ? extends Object), (TPH a = ? extends Matrix)], - [(TPH b = ? extends Object), (TPH a = Matrix)], - [(TPH b = ? super Integer), (TPH a = ? extends Matrix)], - [(TPH b = ? super Integer), (TPH a = Matrix)], - [(TPH a = ? extends Menge< ? extends Menge< TPH b > >)], - [(TPH a = Menge< ? extends Menge< TPH b > >)], - [(TPH a = ? extends Menge< Menge< TPH b > >)], - [(TPH a = Menge< Menge< TPH b > >)]] */ - - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Matrix extends Menge> { } \ No newline at end of file diff --git a/examples/luar/WCTest6.jav b/examples/luar/WCTest6.jav deleted file mode 100755 index 9f9419453..000000000 --- a/examples/luar/WCTest6.jav +++ /dev/null @@ -1,13 +0,0 @@ -Menge Menge> - -/* Nach Sub_unify - FUNKTIONIERT !!! */ - -/* muss noch nac der 2. Menge angepasst werden PL 07-08-03 - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Matrix extends Menge> { } \ No newline at end of file diff --git a/examples/luar/WCTest7.jav b/examples/luar/WCTest7.jav deleted file mode 100755 index 6b90116b8..000000000 --- a/examples/luar/WCTest7.jav +++ /dev/null @@ -1,120 +0,0 @@ -/* VecPair Menge> */ -/* Funktioniert !!! -*/ - -/* VecPair Menge> */ -/* Funktioniert !!! - */ - -/* VecPair Menge> */ -/* Funktioniert !!! */ - -/* Menge> Menge */ -/* Funktioniert !!! nochmals ueberpruefen 07-07-29 */ - -/* VecPair Menge> */ -/* Funktioniert kein Unifier!!! */ - -/* VecPair Menge> */ -/* Funktioniert!!! */ - - -/* Menge Menge>> */ -/* funktioniert */ -/* Erg.: -[[(TPH a = TPH A), (TPH c = Integer), (TPH b = ? extends VecPair< TPH A, TPH B >)], - [(TPH a = TPH A), (TPH c = Integer), (TPH b = VecPair< TPH A, TPH B >)], - [(TPH b = ? extends Menge< Pair< TPH a, TPH c > >)], - [(TPH b = Menge< Pair< TPH a, TPH c > >)]] -*/ - -/* Menge Menge>> */ -/* Erg: -[[(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)], - [(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)], - [(TPH b = Menge< Pair< Number, TPH c > >)], - [(TPH b = ? extends Menge< Pair< Number, TPH c > >)]] -*/ - -/* Menge Menge> */ -/* Erg.: -[[(TPH a = Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH B >)], - [(TPH a = Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH B >)], - [(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH C >)], - [(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH C >)], - [(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = ? extends VecPair< TPH A, TPH D >)], - [(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = VecPair< TPH A, TPH D >)], - [(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = ? extends VecPair< TPH A, TPH E >)], - [(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = VecPair< TPH A, TPH E >)], - [(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = ? extends VecPair< TPH A, TPH F >)], - [(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = VecPair< TPH A, TPH F >)], - [(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = ? extends VecPair< TPH A, TPH G >)], - [(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = VecPair< TPH A, TPH G >)], - [(TPH a = ? extends Object), (TPH b = ? extends VecPair< TPH A, TPH H >)], - [(TPH a = ? extends Object), (TPH b = VecPair< TPH A, TPH H >)], - [(TPH a = ? super Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH I >)], - [(TPH a = ? super Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH I >)], - [(TPH b = ? extends Menge< TPH a >)], - [(TPH b = Menge< TPH a >)]] -*/ - - -/* Menge> Menge> */ -/* funktioniert */ -/* Erg. -[[(TPH a = Pair< Number, Integer >)], - [(TPH a = ? extends Pair< Number, Integer >)], - [(TPH a = ? extends Pair< Number, ? extends Integer >)], - [(TPH a = ? extends Pair< Number, ? extends Number >)], - [(TPH a = ? extends Pair< Number, ? extends Object >)], - [(TPH a = ? extends Pair< Number, ? super Integer >)], - [(TPH a = ? extends Pair< ? extends Number, Integer >)], - [(TPH a = ? extends Pair< ? extends Number, ? extends Integer >)], - [(TPH a = ? extends Pair< ? extends Number, ? extends Number >)], - [(TPH a = ? extends Pair< ? extends Number, ? extends Object >)], - [(TPH a = ? extends Pair< ? extends Number, ? super Integer >)], - [(TPH a = ? extends Pair< ? extends Object, Integer >)], - [(TPH a = ? extends Pair< ? extends Object, ? extends Integer >)], - [(TPH a = ? extends Pair< ? extends Object, ? extends Number >)], - [(TPH a = ? extends Pair< ? extends Object, ? extends Object >)], - [(TPH a = ? extends Pair< ? extends Object, ? super Integer >)], - [(TPH a = ? extends Pair< ? super Number, Integer >)], - [(TPH a = ? extends Pair< ? super Number, ? extends Integer >)], - [(TPH a = ? extends Pair< ? super Number, ? extends Number >)], - [(TPH a = ? extends Pair< ? super Number, ? extends Object >)], - [(TPH a = ? extends Pair< ? super Number, ? super Integer >)], - [(TPH a = ? extends Pair< ? super Integer, Integer >)], - [(TPH a = ? extends Pair< ? super Integer, ? extends Integer >)], - [(TPH a = ? extends Pair< ? super Integer, ? extends Number >)], - [(TPH a = ? extends Pair< ? super Integer, ? extends Object >)], - [(TPH a = ? extends Pair< ? super Integer, ? super Integer >)], - [(TPH a = ? extends Object)], - [(TPH a = ? super Pair< Number, Integer >)]] - */ - -/* Menge Menge>> */ - /* Erg. stimmt - [[[(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)], - [(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)], - [(TPH c = ? extends Integer), (TPH b = ? extends VecPair< Number, TPH C >)], - [(TPH c = ? extends Integer), (TPH b = VecPair< Number, TPH C >)], - [(TPH c = ? extends Number), (TPH b = ? extends VecPair< Number, TPH D >)], - [(TPH c = ? extends Number), (TPH b = VecPair< Number, TPH D >)], - [(TPH c = ? extends Object), (TPH b = ? extends VecPair< Number, TPH E >)], - [(TPH c = ? extends Object), (TPH b = VecPair< Number, TPH E >)], - [(TPH c = ? super Integer), (TPH b = ? extends VecPair< Number, TPH F >)], - [(TPH c = ? super Integer), (TPH b = VecPair< Number, TPH F >)], - [(TPH b = ? extends Menge< ? extends Pair< Number, TPH c > >)], - [(TPH b = Menge< ? extends Pair< Number, TPH c > >)], - [(TPH b = ? extends Menge< Pair< Number, TPH c > >)], - [(TPH b = Menge< Pair< Number, TPH c > >)]] - */ - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Pair { } - -class VecPair extends Menge> { } \ No newline at end of file diff --git a/examples/luar/WCTest8.jav b/examples/luar/WCTest8.jav deleted file mode 100755 index 9bbaaf231..000000000 --- a/examples/luar/WCTest8.jav +++ /dev/null @@ -1,25 +0,0 @@ -/* Subtype Menge> OK */ - -/* Subtype Menge> */ - -/* Korrekt */ - -/* Menge> Menge>> */ - -/* Super, FUNKTIONIERT!!! */ - -/* Menge> Menge> */ - -/* redureSup Test: FUNKTIONIERT!!! */ - -class Number {} -class Integer extends Number {} - -class List { } - -class Menge extends List { } - -class Pair { } - - -class Subtype extends Menge> { } \ No newline at end of file diff --git a/examples/luar/WCTest9.jav b/examples/luar/WCTest9.jav deleted file mode 100755 index 4a393aa2f..000000000 --- a/examples/luar/WCTest9.jav +++ /dev/null @@ -1,14 +0,0 @@ - - -Subtype Pair - -/* nochmals pruefen koennte aber stimmen */ - -class Number {} -class Integer extends Number {} - -class Menge { } - -class Pair { } - -class Subtype extends Pair { } \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseFive.jav b/examples/mema_usecases/UsecaseFive.jav deleted file mode 100755 index 9078f0dd5..000000000 --- a/examples/mema_usecases/UsecaseFive.jav +++ /dev/null @@ -1,8 +0,0 @@ -class UsecaseFive{ - - foo(bar){ - bar.addElement(new Integer()); - return bar; - } - -} \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseFour.jav b/examples/mema_usecases/UsecaseFour.jav deleted file mode 100755 index b4319c97b..000000000 --- a/examples/mema_usecases/UsecaseFour.jav +++ /dev/null @@ -1,10 +0,0 @@ -class UsecaseFour{ - foo(bla, Stack blub){ - return (1!=2) && true; - } - - bar(dipsy, Stack laalaa, po){ - dipsy = this.foo(laalaa, po); - return dipsy; - } -} \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseOne.jav b/examples/mema_usecases/UsecaseOne.jav deleted file mode 100755 index c5fc1c81e..000000000 --- a/examples/mema_usecases/UsecaseOne.jav +++ /dev/null @@ -1,6 +0,0 @@ -class UsecaseOne extends Menge{ - foo(bar){ - SchorschKlasse x; - return 3; - } -} \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseThree.jav b/examples/mema_usecases/UsecaseThree.jav deleted file mode 100755 index 248964e44..000000000 --- a/examples/mema_usecases/UsecaseThree.jav +++ /dev/null @@ -1,20 +0,0 @@ -class UsecaseThree{ - Boolean m_Zulu; - - foo(bar, umu, Stack lala, num){ - ret; - { - bar = 5; - { - myTestVar; - myTestVar = lala; - } - { - myTestVar; - myTestVar = m_Zulu && true; - } - } - ret = (num+3)==8; - return ret; - } -} \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseTwo.jav b/examples/mema_usecases/UsecaseTwo.jav deleted file mode 100755 index eb954cba6..000000000 --- a/examples/mema_usecases/UsecaseTwo.jav +++ /dev/null @@ -1,6 +0,0 @@ -class UsecaseTwo{ - foo(bar){ - bar = 3; - return bar!=2; - } -} \ No newline at end of file diff --git a/examples/mema_usecases/UsecaseZero.jav b/examples/mema_usecases/UsecaseZero.jav deleted file mode 100755 index b7f0eec06..000000000 --- a/examples/mema_usecases/UsecaseZero.jav +++ /dev/null @@ -1,5 +0,0 @@ -class UsecaseZero{ - foo(bar){ - return (4*(3-2))>2; - } -} \ No newline at end of file diff --git a/examples/pl_usecases/AchimTest1.jav b/examples/pl_usecases/AchimTest1.jav deleted file mode 100755 index 35d7739d5..000000000 --- a/examples/pl_usecases/AchimTest1.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Test{ - test(){ - return 1; - } - test2(){ - i; - i = test(); - } -} diff --git a/examples/pl_usecases/BoundedType.jav b/examples/pl_usecases/BoundedType.jav deleted file mode 100755 index ca33735a7..000000000 --- a/examples/pl_usecases/BoundedType.jav +++ /dev/null @@ -1,12 +0,0 @@ -class BoundedType { - - m(T x) { - return x; - } - - m1(x) { - T y; - x = y; - return y; - } -} \ No newline at end of file diff --git a/examples/pl_usecases/BoundedType1.jav b/examples/pl_usecases/BoundedType1.jav deleted file mode 100755 index af71bfa73..000000000 --- a/examples/pl_usecases/BoundedType1.jav +++ /dev/null @@ -1,16 +0,0 @@ -interface BB { } -interface AA extends BB { - AAm(BB x); - } - -interface RR extends BB { - } - -class BoundedType1 { - - - m1(AA a) { - T1 b; - a.AAm(b); - } -} \ No newline at end of file diff --git a/examples/pl_usecases/BoundedType2.jav b/examples/pl_usecases/BoundedType2.jav deleted file mode 100755 index 47602aba5..000000000 --- a/examples/pl_usecases/BoundedType2.jav +++ /dev/null @@ -1,15 +0,0 @@ -class BoundedType { - m(T x) { - r; - r=x; - return r; - } - m1(b) { return b; } - -} - -class Id { - BoundedType bb; - m(x) { return bb.m1(x); } - } - \ No newline at end of file diff --git a/examples/pl_usecases/OL.jav b/examples/pl_usecases/OL.jav deleted file mode 100755 index 66e95aeb3..000000000 --- a/examples/pl_usecases/OL.jav +++ /dev/null @@ -1,16 +0,0 @@ -class OL { - - Integer m(Integer x) { return x + x; } - - Boolean m(Boolean x) {return x || x; } -} - -class Main { - - main(x) { - ol; - ol = new OL(); - return ol.m(x); - } - -} diff --git a/examples/pl_usecases/OL2.jav b/examples/pl_usecases/OL2.jav deleted file mode 100755 index b42eb1dc8..000000000 --- a/examples/pl_usecases/OL2.jav +++ /dev/null @@ -1,20 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class OL2 { - - Integer m(Integer x) { return x + x; } - - Boolean m(Boolean x) {return x || x; } -} - -class Main { - - main(x) { - ol; - ol = new OL2(); - y; - /* y = new Menge(); */ - y.addElement(ol.m(x)); - } - -} diff --git a/examples/pl_usecases/Probleme b/examples/pl_usecases/Probleme deleted file mode 100755 index f4ebc5a23..000000000 --- a/examples/pl_usecases/Probleme +++ /dev/null @@ -1,41 +0,0 @@ -- Sequenz-Diagramme fuer TR-Algorithmen -- In der GUI werden bei der Auswahl bei Typisierungen mehrerer Klassen immer nur die Typisierung der einzelnen Klasse angepasst (Use-Rase ZweiKlassen.jav) -- Bound bleiben in der GUI erhalten auch wenn durch Auswahl die Bounds gar nicht mehr existieren (Use-Rase BoundedType2.jav) -- Parameter gehen nicht Matrix Use-Rase -- gleiche TypePlaceHolder in unterschiedlichen Intersections werden durch unterschiedliche GentypeVars ersetzt (BoundedType2.jav) -- Mail von Juergen, welche Usecases machen ihm Probleme? -- UsedId bei bei "extends" in RefType bzw. bei "implements" in Menge umwandeln. (siehe mail an Timo) -- Roundtrip fuer den Innovator einbauen erledigt 06-06 -- Schnittstelle mit syntaktischen Angaben fuer den Konstantenpool wird bei unbeboxten Typen nicht richtig erzeugt -- Boxing und Unboxing geht noch nicht bei allen primitiven Typen und Operatoren --------------------------------------------------------------------------------------------------- -- makeFC testen durch Verschiebung von TyploseVaribale yu GentypeVar - sind Probleme entstanden PL 06-03-16 -- Alle UseCases noch mit Vervielfachung testen -- Codeerzeugung: called_method -- Returntyp void UsecaseThree_pl.jav ERLEDIGT Fehler in Void.java 05-07-31 -- Parameter in Typen: Werden die �berhaupt betrachtet? UsecaseTwo_pl.jav -- Die Argumente bei UsedId Konstruktion f�r die Parameter in dem Attribut paralist von Typen - sind immer GenericTypeVars, k�nnten aber auch Typen wie Integer als RefTypes sein. - In der Methode wandleGeneric2RefType (MyCompiler) werden nur die GenericTypeVars - der Superklassen-Deklarationen angepasst. Hier muessten alle expliziten Typdeklarationen - im gesamten abstrakten Syntaxbaum angepasst werden. Koennte ueber eine Registry - und die Listener realisiert werden. ERLEDIGT SourceFile.java 05-07-31 -- getypte Variablen werden nicht richtig gesetzt UsecaseFive_pl.jav ERLEDIGT JavaParser.jay 05-07-30 - -- UNIFY funktioniert nicht mit GenericTypeVars UsecaseOne_pl.jav -- Einschränkungen bei TRMAPP von noch einbauen. -- a.b wird als Expression nicht in InstVar umgewandelt, sondern bleibt LocalOrFieldVar mit UsedId UsecaseNine_pl.jav - wird inzwischen bei zwei Identifieren umgewandelt. Mit mehr testen -- In Usecase UsecaseNine_pl.jav wird der Parameter bei der Klasse bei b nicht bestimmt. -- Braucht man das Field type vom Typ String in InstVar.java? -- in Assign stimmt der Typ von Assign nicht (Beispiel Matrix1.jav in bajo) -- unifyAndregister in allen Subklassen von ExprStmt durch register ersetzen. erledigt 05-08-21 -- Class.java: m_MethodIntersectionTypes wird in CTypeReconstructionResult nicht richtig gestetzt. - Beispiel Matrix.jav in bajo1_usecases -- clone in alle Subklassen von CTypeAssumption ueberpruefen. -- Was ist der Unterschied zwischen RefType.clone() und Pair.copyType -- in instanceSmaller neuhinzugekommene GENTYPEVARS durch typlose Vars ersetzen. -- EST95A anschauen. Insbesondere: Wann ist this View und wann GView? - siehe SubtypeingTest this wird immer dynamisch angepasst. Auch in - der Theorie aendern \ No newline at end of file diff --git a/examples/pl_usecases/SMatrix.jav b/examples/pl_usecases/SMatrix.jav deleted file mode 100755 index bbb6bb5f7..000000000 --- a/examples/pl_usecases/SMatrix.jav +++ /dev/null @@ -1,11 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class Matrix extends Menge> { - - mul(){ - Menge> ret1; - Menge ret; - return ret; - } - -} diff --git a/examples/pl_usecases/Simple.jav b/examples/pl_usecases/Simple.jav deleted file mode 100755 index 312e8a885..000000000 --- a/examples/pl_usecases/Simple.jav +++ /dev/null @@ -1,10 +0,0 @@ -class Simple { - - simple(a) { - return 1; - } - - main(a) { - return a; - } -} \ No newline at end of file diff --git a/examples/pl_usecases/UnifyTest1.jav b/examples/pl_usecases/UnifyTest1.jav deleted file mode 100755 index 78cc68e91..000000000 --- a/examples/pl_usecases/UnifyTest1.jav +++ /dev/null @@ -1,11 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; -import java.util.Stack; - - -class Test { - public getValue(a){ - String x; - a.addElement(x); - } - -} diff --git a/examples/pl_usecases/UsecaseEight_pl.jav b/examples/pl_usecases/UsecaseEight_pl.jav deleted file mode 100755 index f2395352f..000000000 --- a/examples/pl_usecases/UsecaseEight_pl.jav +++ /dev/null @@ -1,10 +0,0 @@ -class UsecaseEight_pl { - - foo1() { - a; - b; - a = b.foo1(); - return 1; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseFive_pl.jav b/examples/pl_usecases/UsecaseFive_pl.jav deleted file mode 100755 index 6857d4481..000000000 --- a/examples/pl_usecases/UsecaseFive_pl.jav +++ /dev/null @@ -1,9 +0,0 @@ -class UsecaseFive_pl { - - foo() { - Menge c; - c = new Menge() ; - return c; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseFour_pl.jav b/examples/pl_usecases/UsecaseFour_pl.jav deleted file mode 100755 index 415318d4f..000000000 --- a/examples/pl_usecases/UsecaseFour_pl.jav +++ /dev/null @@ -1,9 +0,0 @@ -class UsecaseFour_pl { - - foo() { - c; - c = new Menge() ; - return c; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseNine_pl.jav b/examples/pl_usecases/UsecaseNine_pl.jav deleted file mode 100755 index 979b2baad..000000000 --- a/examples/pl_usecases/UsecaseNine_pl.jav +++ /dev/null @@ -1,12 +0,0 @@ -class UsecaseNine_pl { - - Integer c; - - foo1() { - a; - b; - a = b.c; - return 1; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseOne_pl.jav b/examples/pl_usecases/UsecaseOne_pl.jav deleted file mode 100755 index 5156ae484..000000000 --- a/examples/pl_usecases/UsecaseOne_pl.jav +++ /dev/null @@ -1,20 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class UsecaseOne_pl { - - A x; - - foo(bar){ - bar = true; - return 1; - } -/* - foo1(a) { - c; - c = new Menge(); - b; - b = new UsecaseOne_pl(); - return c.addElement(a); - } -*/ -} diff --git a/examples/pl_usecases/UsecaseSeven_pl.jav b/examples/pl_usecases/UsecaseSeven_pl.jav deleted file mode 100755 index 5744f550e..000000000 --- a/examples/pl_usecases/UsecaseSeven_pl.jav +++ /dev/null @@ -1,18 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class UsecaseSeven_pl { - - foo(bar){ - bar = true; - return 1; - } - - foo1(a) { - c; - c = new Menge(); - b; - b = new UsecaseSeven_pl(); - return c.addElement(a); - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseSix_pl.jav b/examples/pl_usecases/UsecaseSix_pl.jav deleted file mode 100755 index 45c140af8..000000000 --- a/examples/pl_usecases/UsecaseSix_pl.jav +++ /dev/null @@ -1,5 +0,0 @@ -class uuu {} -class vvv {} -class UsecaseSix_pl extends Menge> { - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseTen_pl.jav b/examples/pl_usecases/UsecaseTen_pl.jav deleted file mode 100755 index ab5b8d005..000000000 --- a/examples/pl_usecases/UsecaseTen_pl.jav +++ /dev/null @@ -1,14 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class UsecaseTen_pl { - - Menge c; - - foo1() { - a; - b; - a = b.c.elementAt(1); - return b; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseThree_pl.jav b/examples/pl_usecases/UsecaseThree_pl.jav deleted file mode 100755 index b03518144..000000000 --- a/examples/pl_usecases/UsecaseThree_pl.jav +++ /dev/null @@ -1,9 +0,0 @@ -class UsecaseThree_pl { - - foo() { - c; - c = new Menge(); - return c; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/UsecaseThree_pl.orig.java b/examples/pl_usecases/UsecaseThree_pl.orig.java deleted file mode 100755 index aecefabd1..000000000 --- a/examples/pl_usecases/UsecaseThree_pl.orig.java +++ /dev/null @@ -1,11 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class UsecaseThree_pl_org { - - Menge foo() { - Menge c; - c = new Menge(); - return c; - } - -} diff --git a/examples/pl_usecases/UsecaseTwo_pl.jav b/examples/pl_usecases/UsecaseTwo_pl.jav deleted file mode 100755 index 8fbb75e16..000000000 --- a/examples/pl_usecases/UsecaseTwo_pl.jav +++ /dev/null @@ -1,11 +0,0 @@ -class UsecaseTwo_pl { - - foo() { - d; - d = new UsecaseTwo_pl (); - e; - e = d.foo(); - return d; - } - -} \ No newline at end of file diff --git a/examples/pl_usecases/Usecase_MUBTest.jav b/examples/pl_usecases/Usecase_MUBTest.jav deleted file mode 100755 index bda38eb28..000000000 --- a/examples/pl_usecases/Usecase_MUBTest.jav +++ /dev/null @@ -1,12 +0,0 @@ -class A { } - -class B extends A { - f(Boolean x) { - if (x) { - return new B(); } - else { - return new A(); } - } -} - -class C extends B> {} diff --git a/examples/pl_usecases/Usecase_MUBTest1.jav b/examples/pl_usecases/Usecase_MUBTest1.jav deleted file mode 100755 index cfe0e30e8..000000000 --- a/examples/pl_usecases/Usecase_MUBTest1.jav +++ /dev/null @@ -1,17 +0,0 @@ - - -class A { } - -class B extends A { - f(Boolean x) { - if (x) { - return new B(); } - else { - return new A(); } - } -} - -class C extends B> {} - - - diff --git a/examples/pl_usecases/Usecase_MUBTest2.jav b/examples/pl_usecases/Usecase_MUBTest2.jav deleted file mode 100755 index 08e66aed6..000000000 --- a/examples/pl_usecases/Usecase_MUBTest2.jav +++ /dev/null @@ -1,13 +0,0 @@ -class A { } - -class B extends A { - f(x) { - a; - if (x) { - return new C(); } - else { - return a; } - } -} - -class C extends B> {} diff --git a/examples/pl_usecases/Usecase_MUBTest3.jav b/examples/pl_usecases/Usecase_MUBTest3.jav deleted file mode 100755 index fc7a33cd3..000000000 --- a/examples/pl_usecases/Usecase_MUBTest3.jav +++ /dev/null @@ -1,14 +0,0 @@ -class A { } - -class B extends A { - f(x) { - a; - b; - if (x) { - return a; } - else { - return b; } - } -} - -class C extends B> {} diff --git a/examples/pl_usecases/Usecase_MUBTest4.jav b/examples/pl_usecases/Usecase_MUBTest4.jav deleted file mode 100755 index 0325a6008..000000000 --- a/examples/pl_usecases/Usecase_MUBTest4.jav +++ /dev/null @@ -1,12 +0,0 @@ -class A { } - -class B extends A { - f(Boolean x) { - if (x) { - return new B(); } - else { - return new C(); } - } -} - -class C extends B> {} diff --git a/examples/pl_usecases/Usecase_MUBTest5.jav b/examples/pl_usecases/Usecase_MUBTest5.jav deleted file mode 100755 index c1b2b19b6..000000000 --- a/examples/pl_usecases/Usecase_MUBTest5.jav +++ /dev/null @@ -1,12 +0,0 @@ -class A { } - -class B extends A { - f(Boolean x) { - if (x) { - return new B(); } - else { - return new C(); } - } -} - -class C extends B> {} diff --git a/examples/pl_usecases/Usecase_MUBTest6.jav b/examples/pl_usecases/Usecase_MUBTest6.jav deleted file mode 100755 index 2d494563d..000000000 --- a/examples/pl_usecases/Usecase_MUBTest6.jav +++ /dev/null @@ -1,9 +0,0 @@ -class Test2 { - public meth(){ - if(true) { - return(1); - }else{ - return(2); - } - } -} diff --git a/examples/pl_usecases/ZweiKlassen.jav b/examples/pl_usecases/ZweiKlassen.jav deleted file mode 100755 index e74b9b9fe..000000000 --- a/examples/pl_usecases/ZweiKlassen.jav +++ /dev/null @@ -1,17 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -class ZweiKlassen { - - foo() { - c; - c = new Menge() ; - return c; - } - -} - -class X { - ZweiKlassen bb; - - foo2() { return bb.foo();} -} \ No newline at end of file diff --git a/examples/scju/Boxing.jav b/examples/scju/Boxing.jav deleted file mode 100755 index c632c2c0e..000000000 --- a/examples/scju/Boxing.jav +++ /dev/null @@ -1,26 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -public class Boxing { - - public BoxingTest() { - a; - a= new Integer(12); - - v; - v = new Menge(); - - - v.addElement(a); - - b; - b = 0; - - c; - - c = v.elementAt(b); - - v.addElement(c); - - return v; - } -} \ No newline at end of file diff --git a/examples/scju/ClassGenerics.jav b/examples/scju/ClassGenerics.jav deleted file mode 100755 index 938046cc1..000000000 --- a/examples/scju/ClassGenerics.jav +++ /dev/null @@ -1,12 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; -import java.lang.Comparable; - -public class ClassGenerics extends Menge implements Comparable{ - public typ1 variable1; - protected typ2 variable2; - - public Integer compareTo(String s) { - return null; - } - -} \ No newline at end of file diff --git a/examples/scju/ClassKonstanten.jav b/examples/scju/ClassKonstanten.jav deleted file mode 100755 index 059110ea1..000000000 --- a/examples/scju/ClassKonstanten.jav +++ /dev/null @@ -1,6 +0,0 @@ -public class ClassKonstanten { - public final static boolean testcase = true; - public final static int variable = 32; - public final static char testchar = 'A'; - public final static String var2 = "Hallo Welt!"; -} \ No newline at end of file diff --git a/examples/scju/FieldGenerics.jav b/examples/scju/FieldGenerics.jav deleted file mode 100755 index d0f91aa1c..000000000 --- a/examples/scju/FieldGenerics.jav +++ /dev/null @@ -1,11 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; -import java.util.Hashtable; - -public class FieldGenerics { - public Menge StringVec; - public Hashtable ht; - - public Menge TestMethode(Hashtable para1) { - return null; - } -} \ No newline at end of file diff --git a/examples/scju/InterfaceGenerics.jav b/examples/scju/InterfaceGenerics.jav deleted file mode 100755 index a66dd8ca8..000000000 --- a/examples/scju/InterfaceGenerics.jav +++ /dev/null @@ -1,9 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; -import java.lang.Comparable; -import java.io.Serializable; - -public interface InterfaceGenerics extends Comparable, Serializable{ - - public typ1 compareTo(typ2 s); - -} \ No newline at end of file diff --git a/examples/scju/InterfaceTest.jav b/examples/scju/InterfaceTest.jav deleted file mode 100755 index 83c9d788a..000000000 --- a/examples/scju/InterfaceTest.jav +++ /dev/null @@ -1,10 +0,0 @@ -public interface InterfaceTest extends Interface1, Interface2 { - public final static boolean testcase = true; - public final static int variable = 32; - public final static char testchar = 'A'; - public final static String var2 = "Hallo Welt!"; - - public void TestProzedur(); - public void TestProzedur2(String wert1, int wert2); - public int TestProzedur3(int wert2); -} \ No newline at end of file diff --git a/examples/scju/MethodGenerics.jav b/examples/scju/MethodGenerics.jav deleted file mode 100755 index 31c0fbb51..000000000 --- a/examples/scju/MethodGenerics.jav +++ /dev/null @@ -1,18 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; -import java.io.Serializable; -import java.lang.Comparable; - -public class MethodGenerics { - - public typ1 TestMethode(String wert1, typ1 that, String wert2) { - return null; - } - - t TestMethode2() { - return null; - } - - u TestMethode3() { - return null; - } -} \ No newline at end of file diff --git a/examples/scju/SimpleMethodCall.jav b/examples/scju/SimpleMethodCall.jav deleted file mode 100755 index 5133efcc3..000000000 --- a/examples/scju/SimpleMethodCall.jav +++ /dev/null @@ -1,15 +0,0 @@ -import de.dhbwstuttgart.typeinference.Menge; - -public class SimpleMethodCall { - - public TestProzedur() { - v; - v = new Menge(); - x; - x = "Hallo Welt!"; - - v.addElement(x); - - return v; - } -} \ No newline at end of file diff --git a/examples/scju/testPackage/Test.jav b/examples/scju/testPackage/Test.jav deleted file mode 100755 index d9ebd0d6b..000000000 --- a/examples/scju/testPackage/Test.jav +++ /dev/null @@ -1,15 +0,0 @@ -package testPackage.second.third; - -import de.dhbwstuttgart.typeinference.Menge; - -class PackageTest { - - public final String variable = "Hallo Welt!"; - - TestProzedur() { - c; - c = new Menge(); - return c; - } - -} \ No newline at end of file diff --git a/lib/bcel-5.2-src.zip b/lib/bcel-5.2-src.zip deleted file mode 100644 index 097426150a3d64736bca4329e3fc2b4fc0da5686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584571 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%0D9G)I?`K%T>9_3t7+@ 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%0A3i@`;R?K6eMF{E2!`?=gc z*R`n&S6lvE-d&k<<|%I^;jo-*kY&U~)vc2*h2V2K2xfQoA( zGKny@sCd=Nz8Z2+v7__o^1p6_p+H2mas$S$XWSR_Fo88M;!02tFp6-24#Pk5s# z1!!5wlpA>g{oS3S=F9Z0W}GNN8?_az4i}jGf3;irn{y@Pm z;QzG&AtFu(K35TXXqX9hpBBH97TI??@`d1y-H!xCv)%1W^ZvR)_d)exI#uZFlVX4y z&Y1{=s;ptXq{I`e<=T9mbYgsgdXrif>lg2S+i?=OSH3*fAfxMEy3cH!rb|xhUncD| z@)yco!kwzM-qH3myNpd?BSVe#5+{<;nbX$&S(j$U%DkUbQ)u57@w=-TNuGTm3KcX%1V>-6dkMI%xQ^@}JqOH*Xc@g^&K@4o2o&K$1 zMHyCh>+Gl@-N$P1y#VVJiew5IhO<*Jq73~Z>O*kU?J}krhIxpJ$wytDAoP?&`8Zh=_@a(e3f2oBc>BaLY9PD^afE znY)A?Z>dH*&srnd0}`&Db6dA71;TfO*@&swjs3^9!`6>~_5^|l3HE7G?wzk&K=B}N zEl=jnZ>(ITJtRyL`A{Xn;|*Lr@3utwu5s=KBs_U7?rRaBv~sNz8&Vwvq4@>&VM z^{%-|ld#1)7TUM%y3709&CS=BPm<((LAfp-s?PdR-0bZuF^4bUkf)^rYKMjVzl!^%G*ARd(nf| z8?3R+9bZ0Lu?3tM^zZ5pA1Q+Y6I6=OfnhCe^LFa2c1o*U)Bl1J9WYI=nHF*;_oZvT zRmvxBIW+8MmixpNFb4KTBCIN7NfiiW>dYRk?+H8!Cq_Czy7T_g$^%gDTD{Q3z}#rs zTR;q#GKbtJwTc7>LAd8S*;LW7;lv7jgCO7x(6s2SOPD>p(L3x=XT3366D)2A63xR_ zUZrt{e;}1C#Ik6``kGYRiu{m^A&*Kl{yK$F(P*j&26#9FUh%J;l-iZo4ao6d1{sF49Y)=6_&#eRHk1R0VG(+QE6Mh<=Apu!nF{?~I$%wu!znZtuPd{O$T#U69 zR-q7faLI?+P^AwN858h@rbcBf-xIce=lD8tk<_Kn*R6o+)2+m`F6aEZ#>@mWJA3>< zD?;||_1pPPQo5=}7dyLyomXUdxJE8UFSqNB%`)$49QBj&w>F)fC zbTYEZqZ5N>etq)#d@^-5;riQ!Ll8a2mm|veoVI8ac7lKC$^0jltlT>maU{HsI40;IJI?Dk?Vbj6A zlDKW(j4tN$g$Rr9uAm$03WKZebR?Fy_7sWltw^T(p+L^&Z6V&&WinlFGF`{%NX^M` znAE2>948ZGFvfbVvAgyX`<-LB$?2ovUR}CNwPe^DbH8i+u-8cKl#QFo{b(8~k?f0` z)%{|6m=y2*-i*}uXgXHL=VF?SH23A6S@vjt^_3prApRJF9!1>`s1{k=52y**-cQh) zVgL}zETvDwuWv;W9h{svMewdcaIUYut<0Wf zwcs17Rlk9rG>%s8(b{5Rn#FjnlFByEL9o|d$=&>h|H1uD5 zz-0ASl}cydEE%=@Oscj}`_xlKxi+2z26~TjA|IG6C0<@GhZHh?!IQ zU<+|ru&m&n2hGrKxQH6i6(peja%DR>8t_?r3gK9|1H4`19tj9uXWs|&V{be&gv-QO za|l^5?jCNeiF){ZV|qEkiNw5paq;2!UT#Q+SnzxH0dCxhefWE~6LxIYvk zyxo03ywIIdKeFnY?A4dLZ!PhQHbam#xPIY_cRxGWo7wit&n-Ez0bYb!1Oz@5hoN;H z8@1mqym}L)Z@048uM+f90m0(%QUO8Y`cgol;sYtd*n|cY+%)=Pxr2BsuLqYOhW7MX z4yfsR6UEn_y0|U*sq>I1*D0j;_g_oqId{pe#rHMJJJNK7DUH17&`q1=W~`MyhbG;I zhEoK5$c00b4yciIu`G*3`;`h*Et$C+uYxb)GClaPmTt2bYH3iG zoU)aTrGg)`v++N%AQia;-q;WeT>=(l#Cg6Vg`l@=*_}v;Ky_nxOptlkG@~RPKeW|QTMOf@sa~(@j1O8 z70d+Rnc&QeKvds0~CX zB7V#<>rX=J1VOVh@lTOxcR^{rlS7Kdc9p!E@ZWDs_HY>A6CK|(c)HTXYIp=N)>|#i zY+ZctX$~hrzqSb>+}LjfVqxw^z?p?SM518m?*QdsZU(@;Ed1!adz65=e*>i}s2nM& zm?|f~Dkq~Ogv$vV3KIh&5CJ=%i&?7=@~YMvpm@S^xR<1Ml0R>>8TzGh34?{T2)X(F zbJCn}EjQgjSD+xw^53a1}v%27*+DHx-{k|t`C=5J=C4}d%x=}5-OK~mJ zFYC(MTJRKe>f4^`w)V~B{Y_cw&WfiPrXj(z{-MU#l5-=Go*XV@*tq&yTnF%m=8=Bw z!cCFtrvb~>3#k=OT|af1#FgI(1C|laAYnjZRDLLaI)JrpG){h1T5wSM)c^_r4xoR5 z{!-zqmYBf({XH%KIDvu>gc9O&Z^jiomeuFP>^dKvf)mRpLkf$(RZHnPkJ?xzy3Xjl43zFMhy|MMlH zoAMFZ;G)89M+3F)YF{I@ZwSdpL}x2m&Xb!Hf2Uxan1wi*24-PSp(L=OCH{SRHK8xY z)WQ^qGr3b8x6-QCE*3Fz`-BtSeq=O!B(cox;3a17zSxP^;_O+T2<@|(d-``js^b!2 zSfVpFAiH3P7s@3jAN65DM&qJwE7dc~U0>K}0JtBsA6LDyb_IAoNv+a=qB@cdyKUEz zL^i>38j?|M8^jXV6H)Y!3`=54pkI6z%7YYDC=O-ZZf8Wmjch}th zbB-r!VDxhzcmKDUy~MV1U2l5y^Z|{LT~-Viju$-3jmlCPA)%TWxW)=N;z(J@EmR!FUsII|U^29UIgP<1MunlXv31+zPUfwursBSY^;*&Y+iOi^*Am_e< zD?L_}*iD7pT0!n;Y@kB32)Q&CjPSN6?;SvpCVP={@3EbvMMzlDcsLZdrKZ$4$W_+j zlDa~jqg~lGfYLz0*ASF^8(>_EzMHj`QLwaF0HGDO=5vOxG+KkUw`>sD=6KS6vFQNIm>h*utb=1tJ(nf;Fm ze~B|{_^MuJbmz6@^zsb+Ieo5UXH5cp5$YjB|D_$IXE^1p67j>35Gz-N6G8B9w1I>g zut=n#);~>lX?f?{=iTVdV6RVf({SCMAx9qGqq(sKI_5gtwOIxMfK3nC!Z@OJ-r36=ycBtp}TYO8ub3^0+LHnL(ooN zVo&f-c*au}TR95>a&KbpnrLc;eV!m-mLInhu*{-zhJ6S09aPHR z%K$AWpRd960mJUnXEhP3XhP{o1^j^ofxi`KoSQ`9hzym@@pxI-m*Wc)P+$XxL+4{8 z%2MUd;`#;+J5txbOA4PrDkRuEf~q8yR;ppiOdj~CgB27|h&kSbsK}*k3u`w+ zw!^2jZSV#7F5wUBJLm`eVHcSp^D=O(>1{~7Z!5RNX zN0>OMU{!2Tl`oRaBa4OnL1q#VW+Y+s8D>^mEPyX=xgF6~v?Qm~`J$8*i0>FP z5*g4u7k(;->nO%AI)EC3Y7Qs&HyNToptiv-ImY<6MAj2|t{OZ`=w)TSQVP(K^87UT ziwaKjN(32zgLxIP>r*OUHHdb4;t`fJ~U%5e%nkN58Hy zkQoFs$lnCBN(sf7X@V^?qoA5A-wM3ZYm z^=HHuVWSn9ZdDY-^S=tvl`ca3LU&08G(@0)jSry3AdV!y^-ws)I^hTa^& zHk$?IE|1tAEu-$&>^eGWWpto9M^G-ah-MJu=zTtM4NBrl1UyQNIE?ZPOp zOf6`%PZNVg1;O?h3j^&cTL6?<{i*%;TvwBf3tO-t&8>MC2|) z{v;ecMXuj;gSUCnUAjw&lhbc+UTo)#Dmvl4myb|gvnK}Pz4C^aAZ%>?d}{-O(-x7g zPeJSK*x`O%&xb!HT~4bx+~z><{SNO1%KP;SD>(fxo!~NrmHb`!-ulr*YV1O==M|Gc z$+PxF*2;DF04s(L$K8Q79=|bTP=KL+C6~k&_BvW{#C1=)Z%I`8&6nOr1(Tp8KvY{) zk|YN@n${{MdVR706yo9AGfhE?!S6N}%ld9&y8J;6fPx(Jav0{x<1Cta4T5+%4Voir4**AWxv0rLwGq8d}Ilb>m^dWA%^C)h095I{P^Mri}%6m360qT z(|$1h6tG*d=|yCJqodvZ8~U-0ZeY`!n_Lw!70P2zvG4-BgBB=1MLjrlhSA6z!)R(H>t&i6F{P31Q^F9AB#I7lTp~GXj<5S;`!E(OPt+ zZ53k!XLFQ$Le>>;(Jqb@@y6SamXNRkP-ZKXbZQxTSVOU@3piU~xBv-E9y6Jn3i`%g zX}afS6SWz*Zztzbe?D4D+P5&wojlUoob(5MR0$h4i9Nv>g#z1~1iP-1D7dg9sE|_<3ICxPVCN z)lPEd__9hzRAI-5>Z}QO{Nsz5NNnzbPL5jmq2kzQ>~io&))(B~=@o6x)zyFeK|}aOojg!SuE{XD`f>jyO|8BOxx%Z@$OaT=&>&(D zO-K*)6@XE}Z!S+Vh!v+7MSr^L7BF}^{POt0;Wa-K^)`-b@uoCf3|Mcm`+E%e-(qn)-WMXY@S$czrsiwxR54TaRSY#q5V@?w0+qmN^m^T z@ZreqSLN1+@)S)24|PcFQ{RmOXusHRnEN)iZ?F`b<)DqDr5hS<5T)KlctAbK7DCtg zna8pe+Rb5>H}51o-(im}A0TbX2Rj8uP8f4z$I?OYox3N5RDZ08$B8rsP`naH1wC|^k6XmxUw?XRV>B*(mnL{UVc z@#;%5a}I}>XgVY#b+(xD$*+522T*w*a>8(mvkva;XXSbGo|k*II!}Qp6#yrXm&QPW zh1(R%ORLB$r(f}d3QS@#q9FgK8&S4b?#5H<{Ttg{nBefG2E&jm%!@8%3^`nqo(~nl zsioYjU=u}&epaafDpti&j$c+QhJx(LAU?{UJ4{$`SA5DjD+9BNXy$f&cW*U2$6|gf zW3$H!1#IlIVNv8-9zIS%Xw>|ITVKl6TcM_iqNGZEsr|&smk$Pg;t7_#M%XXQGH$Kw zcrythXt3*V7lA~5aU1})_ea*WWI4fH6C|C3Jw%vP%QA6GF|8w0e_f~c7l+i(kM9}n z?+@k|O-=zU;>fX9A3%xb49X|YCFHGYPkPY29aadbqauNHj|ZxI+g~>Q8cuzR$Jp&g z@iwW|1srP=M)jkW@J7R>^uNC>4%Rq*Wb7^bWh>ekgL5WFA!lz}CTY**7jzbyy9Z+P z&`hjq`B`GK6)Ky)Gf_yu8;46#(dQfv*K=uv&2*-LA0Du$j^+Kg$Cn9&wJ zafELOMMsOSRQ{`4`a2idgoo6cYWd7Gg9 zHul?4{qFO7#h8NAp)j$3CN~PRCqS~IMx%$?7zvw36qMZdaoonalt77j4+ybNtUP#K+CRLehaENd%nAjXi_HjAxNc1IN9deaJgy#7L2NS?g^@z03Dxwt7CS1U z3D^aIM9{=@oH2>(0 z=~i9OFUVmDaO=LZbMD$<2zS$9Q>j6ep*)tKG7X&S_3r=o<78y0Zw;9lHdkQCgBbeG zVAZ{KY-Am*>@P`9{#+rmg3hDWkn-%8A~ZQAkyw>Q*`v&g^dgtb7^qn2FJb}HfoRtP;#id0dh1KOnAw_MK zMIi-u*hA!NGl<^2!vs-D*^}Nk6z9^;8QYO*M;>kt7F2CEuI#wqZr&{3JZZmaHA*uZ z4MJY8+4mk-6=XUPQ0%UQUjiaEeB9|s^69qRBG|yj;Y`M&p0Z}iR})ixtHb?J5ppcs zKmu(3^xgEvNIiKNmb8tZzjb!2biaWBM8_&RU2FL&JFQ{?kQ-tyb;N)Ih)ARTX4Wa4 zb5;IYx+3-w$Pcj?ulUfe86Kgb;*DIK|EvSquhbALRvF%r z{E(yFU5Cqxtw!az3JfDKZvSmy^8wvUcEHvHHOw+)x|!A)TG;(AK=4B9DsbvbNRI^V z?;$j!LaYi@taW@xf=jFfJkm&Y8tJJXqGgApr6Ue>s+tr;B;E4Y&B?z`uhoa&efkIh z01f*8m7K%>e>$BMH?TFfHu+c0Y1H`sv3;R_^Y{*0(O0^hkDRulh8k0x6`fjYXTmtN z8M>l-GzhP2n@ET$x^xPCKYPX&5=-W9>drDntRap*AKrH{?SqTm0MOnWk_|c*0s64> z@bL70`vkS4gi7=peq-yAow40Oz4FneA)g#jiEp;a?f{iCzt zF!9?s@m|#!S7vVcJte{2NNLp|CDW4Ud)C}rw#^7kf?}=OF-q-f(Ry-pHPvQnWaMtY z&umg0i}>$+Qw8&v?s5JC9Y(BT7s;%mIzn1ga8#dW9c)SFi8NvRJK|$5(dM%JzlCOoG^W?*nutVLaW2|KGm^%rsU3Uc$sHw<$F{o+2dXgI+5ag*_J3Z6Qa z?aDP7D3pm{>Ks{&8RdIz>3Iz@c?qw=xUf${TcX8#h~8efJ91>3?Ma+3Pl8u5GzUy&q1bl zFO6gy#$(e^PVCMh=So&K!uw~cOyHr~rX?!tC)adQf!t z+Sh|=3XycE9;K=bM8p}8Ie{Iaz(j*USZ19BueJgqN~vdZm?5=)mxkd?!IX$WS#m=& zk}Vl%0D5#EEfu>hlUUE|f$&Pg{k1+nPbNpf!N^klgc=I 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�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�!KQel%GVQK%ibU{kKHrk02P&{FWS4ld%#N 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�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