From b57ac7debc35b6f181ed4d652248ae27e3dccd01 Mon Sep 17 00:00:00 2001 From: someilay Date: Tue, 19 Oct 2021 19:41:09 +0300 Subject: [PATCH 01/26] Translators for literals & MethodInvocations --- src/main/java/translator/Literals.java | 23 ++++++++++++++ .../java/translator/MethodInvocations.java | 30 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/translator/Literals.java create mode 100644 src/main/java/translator/MethodInvocations.java diff --git a/src/main/java/translator/Literals.java b/src/main/java/translator/Literals.java new file mode 100644 index 00000000..29727c41 --- /dev/null +++ b/src/main/java/translator/Literals.java @@ -0,0 +1,23 @@ +package translator; + +import eotree.data.EOData; +import eotree.data.EOFloatData; +import eotree.data.EOIntData; +import eotree.data.EOStringData; +import lexer.TokenCode; +import tree.Expression.Primary.Literal; + + +public class Literals { + public static EOData mapLiteral(Literal literal) { + if (literal.code == TokenCode.StringLiteral){ + return new EOStringData((String) literal.value); + } else if (literal.code == TokenCode.FloatingLiteral){ + return new EOFloatData(((Number) literal.value).floatValue()); + } else if (literal.code == TokenCode.IntegerLiteral){ + return new EOIntData(((Number) literal.value).intValue()); + } + + return null; + } +} diff --git a/src/main/java/translator/MethodInvocations.java b/src/main/java/translator/MethodInvocations.java new file mode 100644 index 00000000..49d4f92b --- /dev/null +++ b/src/main/java/translator/MethodInvocations.java @@ -0,0 +1,30 @@ +package translator; + +import eotree.*; +import tree.Expression.Primary.MethodInvocation; +import java.util.Optional; +import java.util.stream.Collectors; + + +public class MethodInvocations { + public static EOCopy mapMethodInvocation(MethodInvocation methodInvocation){ + if (methodInvocation.qualifier != null){ + throw new IllegalArgumentException("Qualifiers aren't supported yet"); + } + if (methodInvocation.superSign){ + throw new IllegalArgumentException("Super sign isn't supported yet"); + } + if (methodInvocation.typeArguments != null){ + throw new IllegalArgumentException("Type arguments aren't supported yet"); + } + + return new EOCopy( + new EODot(Optional.empty(), methodInvocation.name), + methodInvocation.arguments.arguments.stream() + .map(expression -> new EOAnonExpr(new EODot(Optional.empty(), "not implemented"))) + .collect(Collectors.toList()) + ); + // expression -> Expressions.mapExpresion(expression) + // Optional.empty() in EODot will be removed + } +} From ec84a2cfbecccd3f3d61509fc1b4b21af8673a02 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Fri, 22 Oct 2021 19:07:57 +0300 Subject: [PATCH 02/26] FEATURE: expressions, scanner fixes --- src/main/java/lexer/Scanner.java | 30 ++++---- src/main/java/main/Main.java | 2 +- src/main/java/translator/Expressions.java | 15 ++++ src/main/java/translator/Methods.java | 22 ++++-- src/main/java/translator/Statements.java | 17 ++++- src/test/java/common/TestJ2EO.java | 88 +++++++++++++++++++---- 6 files changed, 136 insertions(+), 38 deletions(-) create mode 100644 src/main/java/translator/Expressions.java diff --git a/src/main/java/lexer/Scanner.java b/src/main/java/lexer/Scanner.java index 02d0b984..91a9cac8 100644 --- a/src/main/java/lexer/Scanner.java +++ b/src/main/java/lexer/Scanner.java @@ -9,9 +9,9 @@ public class Scanner implements JavaParser.Lexer { private static String sourcePath; - private static char[] sourceText; + private char[] sourceText; - public static boolean read(String path) + public boolean read(String path) { sourcePath = path; try { @@ -28,12 +28,12 @@ public static boolean read(String path) // Machinery for reading bytes from the source /////////////////////// - private static int currentLine = 0; - private static int currentPos = 0; - private static int globalPos = -1; - private static char currentChar = '\0'; + private int currentLine = 0; + private int currentPos = 0; + private int globalPos = -1; + private char currentChar = '\0'; - private static char getChar() + private char getChar() { if ( currentChar == '\0' ) { @@ -44,7 +44,7 @@ private static char getChar() return currentChar; } - private static void forgetChar() + private void forgetChar() { currentChar = '\0'; } @@ -77,18 +77,18 @@ public void yyerror(String msg) { // Detecting the current token ////////////////////////////// - private static Token currentToken; - public static Token get() + private Token currentToken; + public Token get() { if ( currentToken == null ) currentToken = getToken(); return currentToken; } - public static void forget() + public void forget() { currentToken = null; } - private static Token getToken() + private Token getToken() { char ch; TokenCode code; @@ -330,17 +330,17 @@ else if ( Character.isDigit(ch) ) return token; } - private static String scanShortComment() + private String scanShortComment() { return ""; } - private static String scanLongComment() + private String scanLongComment() { return ""; } - private static TokenCode detectKeyword(String identifier) + private TokenCode detectKeyword(String identifier) { switch ( identifier ) { case "abstract" : return TokenCode.Abstract; diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index f4cedeba..ac5b6c60 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -47,8 +47,8 @@ public static void main(String[] args) throws FileNotFoundException { // Read, parse, map and print file - Scanner.read(inputFilepath); Scanner scanner = new Scanner(); + scanner.read(inputFilepath); JavaParser parser = new JavaParser(scanner); try { boolean result = parser.parse(); diff --git a/src/main/java/translator/Expressions.java b/src/main/java/translator/Expressions.java new file mode 100644 index 00000000..bea3f9e5 --- /dev/null +++ b/src/main/java/translator/Expressions.java @@ -0,0 +1,15 @@ +package translator; + +import eotree.EOAnonExpr; +import eotree.EODot; +import tree.Expression.Expression; + +import java.util.Optional; + +public class Expressions { + public static EOAnonExpr mapExpression(Expression expr) { + return new EOAnonExpr( + new EODot(Optional.empty(), "Expr UUID: " + expr.unique) + ); + } +} diff --git a/src/main/java/translator/Methods.java b/src/main/java/translator/Methods.java index b0a014cf..0d50058a 100644 --- a/src/main/java/translator/Methods.java +++ b/src/main/java/translator/Methods.java @@ -1,8 +1,6 @@ package translator; -import eotree.EOBndExpr; -import eotree.EOBndName; -import eotree.EOObject; +import eotree.*; import tree.Declaration.Declaration; import tree.Declaration.MethodDeclaration; @@ -32,10 +30,20 @@ public static EOBndExpr mapMethodDeclaration(MethodDeclaration dec) { .findFirst() : Optional.empty(), // Bound attributes -// dec.methodBody.block.blockStatements.stream() -// .map(Statements::mapBlockStatement) -// .collect(Collectors.toList()) - new ArrayList<>() + new ArrayList<>() { + { + add(new EOBndExpr( + new EOCopy( + new EODot(Optional.empty(), "seq"), + dec.methodBody.block.blockStatements.stream() + .map(Statements::mapBlockStatement) + .collect(Collectors.toList()) + ), + new EOBndName("@") + ) + ); + } + } ), new EOBndName(dec.name) ); diff --git a/src/main/java/translator/Statements.java b/src/main/java/translator/Statements.java index 391e2ae0..50c848bf 100644 --- a/src/main/java/translator/Statements.java +++ b/src/main/java/translator/Statements.java @@ -1,11 +1,12 @@ package translator; -import eotree.EOBndExpr; +import eotree.EOAnonExpr; import tree.Statement.BlockStatement; import tree.Statement.Statement; +import tree.Statement.StatementExpression; public class Statements { - public static EOBndExpr mapBlockStatement(BlockStatement stmt) { + public static EOAnonExpr mapBlockStatement(BlockStatement stmt) { // Block statement is one of three variants if (stmt.statement != null) { return Statements.mapStatement(stmt.statement); @@ -17,7 +18,17 @@ public static EOBndExpr mapBlockStatement(BlockStatement stmt) { throw new IllegalArgumentException("BlockStatement does not have any known type"); } - public static EOBndExpr mapStatement(Statement statement) { + public static EOAnonExpr mapStatement(Statement statement) { + if (statement instanceof StatementExpression) { + return mapStatementExpression((StatementExpression) statement); + } + return null; + } + + public static EOAnonExpr mapStatementExpression(StatementExpression stmtExpr) { + if (stmtExpr.expression != null) { + return Expressions.mapExpression(stmtExpr.expression); + } return null; } } diff --git a/src/test/java/common/TestJ2EO.java b/src/test/java/common/TestJ2EO.java index 5dab5a26..b0a68147 100644 --- a/src/test/java/common/TestJ2EO.java +++ b/src/test/java/common/TestJ2EO.java @@ -10,7 +10,6 @@ import parser.JavaParser; import translator.Translator; import tree.Compilation.CompilationUnit; -import tree.Compilation.Package; import java.io.BufferedReader; import java.io.File; @@ -21,7 +20,6 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -39,8 +37,23 @@ static void setup() { } @TestFactory - Collection testChapter15() { - return testChapter(testFolderRoot + "/ch_15_expressions"); + Collection testChapter4() { + return testChapter(testFolderRoot + "/ch_4_types_values_variables"); + } + + @TestFactory + Collection testChapter5() { + return testChapter(testFolderRoot + "/ch_5_conversions_and_contexts"); + } + + @TestFactory + Collection testChapter6() { + return testChapter(testFolderRoot + "/ch_6_names"); + } + + @TestFactory + Collection testChapter7() { + return testChapter(testFolderRoot + "/ch_7_packages_and_modules"); } @TestFactory @@ -48,6 +61,55 @@ Collection testChapter8() { return testChapter(testFolderRoot + "/ch_8_classes"); } + @TestFactory + Collection testChapter9() { + return testChapter(testFolderRoot + "/ch_9_interfaces"); + } + + @TestFactory + Collection testChapter10() { + return testChapter(testFolderRoot + "/ch_10_arrays"); + } + + @TestFactory + Collection testChapter11() { + return testChapter(testFolderRoot + "/ch_11_exceptions"); + } + + @TestFactory + Collection testChapter14() { + return testChapter(testFolderRoot + "/ch_14_blocks_statements_and_patterns"); + } + + @TestFactory + Collection testChapter15() { + return testChapter(testFolderRoot + "/ch_15_expressions"); + } + + @TestFactory + Collection testChapter16() { + return testChapter(testFolderRoot + "/ch_16_definite_assignment"); + } + + @TestFactory + Collection testChapter17() { + return testChapter(testFolderRoot + "/ch_17_threads_and_locks"); + } + + @TestFactory + Collection testChapter18() { + return testChapter(testFolderRoot + "/ch_18_type_inference"); + } + + @TestFactory + Collection zerothTest() { + return new ArrayList<>() { + { + add(testFile(Paths.get(testFolderRoot + "/../TEST0.java"))); + } + }; + } + private ArrayList testChapter(String chapterPath) { ArrayList chapterTests = new ArrayList<>(); try { @@ -75,8 +137,8 @@ private static DynamicTest testFile(Path path) { CompilationUnit unit = parseAndBuildAST(path); // EO tree to string - //String eoCode = translateToEO(unit); - String eoCode = "[args...] > app"; + String eoCode = translateToEO(unit); + System.out.println("eoCode = " + eoCode); // Compile and execute translated to EO Java file String eoExecOutput = compileAndExecuteEO(eoCode); @@ -113,8 +175,9 @@ private static String compileAndExecuteJava(Path path) { .filter(Files::isRegularFile) .filter(TestJ2EO::isClassFile) .collect(Collectors.toList())) { - p.toFile().delete(); - p.toFile().deleteOnExit(); + if (!p.toFile().delete()) { + System.err.println("Unable to delete file/dir: \"" + p.toString() + "\""); + } } } catch (IOException | InterruptedException e) { @@ -124,11 +187,13 @@ private static String compileAndExecuteJava(Path path) { } private static CompilationUnit parseAndBuildAST(Path path) { - Scanner.read(path.toString()); Scanner scanner = new Scanner(); + scanner.read(path.toString()); JavaParser parser = new JavaParser(scanner); try { - boolean success = parser.parse(); + if (!parser.parse()) { + System.err.println("Unable to parse a .java file: \"" + path.toString() + "\""); + } } catch (IOException e) { e.printStackTrace(); } @@ -136,8 +201,7 @@ private static CompilationUnit parseAndBuildAST(Path path) { } private static String translateToEO(CompilationUnit unit) { - Translator translator = new Translator(); - EOProgram eoProgram = translator.translate((Package) unit); // TODO: 'CompilationUnit' preferred + EOProgram eoProgram = Translator.translate(unit); return eoProgram.generateEO(0); } From 02f513a4c25420583dc1a1c5ed9cf21ad2d4f229 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sat, 23 Oct 2021 00:09:01 +0300 Subject: [PATCH 03/26] TEST: EO compilation/execution Problem We want to compile & execute our generated EO code when testing. Solution Using Maven we are able to do that. --- src/test/java/common/TestJ2EO.java | 156 +++++++++++++++++--- src/test/resources/eo_execution_pom/pom.xml | 67 +++++++++ 2 files changed, 201 insertions(+), 22 deletions(-) create mode 100644 src/test/resources/eo_execution_pom/pom.xml diff --git a/src/test/java/common/TestJ2EO.java b/src/test/java/common/TestJ2EO.java index b0a68147..7838c296 100644 --- a/src/test/java/common/TestJ2EO.java +++ b/src/test/java/common/TestJ2EO.java @@ -15,9 +15,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.Collection; import java.util.stream.Collectors; @@ -28,88 +27,98 @@ public class TestJ2EO { private static String testFolderRoot; + private static final char sep = File.separatorChar; @BeforeAll static void setup() { - String testFolderPath = "src/test/resources"; + String testFolderPath = "src" + sep + "test" + sep + "resources"; File file = new File(testFolderPath); testFolderRoot = file.getAbsolutePath(); } @TestFactory Collection testChapter4() { - return testChapter(testFolderRoot + "/ch_4_types_values_variables"); + return testChapter(testFolderRoot + sep + "ch_4_types_values_variables"); } @TestFactory Collection testChapter5() { - return testChapter(testFolderRoot + "/ch_5_conversions_and_contexts"); + return testChapter(testFolderRoot + sep + "ch_5_conversions_and_contexts"); } @TestFactory Collection testChapter6() { - return testChapter(testFolderRoot + "/ch_6_names"); + return testChapter(testFolderRoot + sep + "ch_6_names"); } @TestFactory Collection testChapter7() { - return testChapter(testFolderRoot + "/ch_7_packages_and_modules"); + return testChapter(testFolderRoot + sep + "ch_7_packages_and_modules"); } @TestFactory Collection testChapter8() { - return testChapter(testFolderRoot + "/ch_8_classes"); + return testChapter(testFolderRoot + sep + "ch_8_classes"); } @TestFactory Collection testChapter9() { - return testChapter(testFolderRoot + "/ch_9_interfaces"); + return testChapter(testFolderRoot + sep + "ch_9_interfaces"); } @TestFactory Collection testChapter10() { - return testChapter(testFolderRoot + "/ch_10_arrays"); + return testChapter(testFolderRoot + sep + "ch_10_arrays"); } @TestFactory Collection testChapter11() { - return testChapter(testFolderRoot + "/ch_11_exceptions"); + return testChapter(testFolderRoot + sep + "ch_11_exceptions"); } @TestFactory Collection testChapter14() { - return testChapter(testFolderRoot + "/ch_14_blocks_statements_and_patterns"); + return testChapter(testFolderRoot + sep + "ch_14_blocks_statements_and_patterns"); } @TestFactory Collection testChapter15() { - return testChapter(testFolderRoot + "/ch_15_expressions"); + return testChapter(testFolderRoot + sep + "ch_15_expressions"); } @TestFactory Collection testChapter16() { - return testChapter(testFolderRoot + "/ch_16_definite_assignment"); + return testChapter(testFolderRoot + sep + "ch_16_definite_assignment"); } @TestFactory Collection testChapter17() { - return testChapter(testFolderRoot + "/ch_17_threads_and_locks"); + return testChapter(testFolderRoot + sep + "ch_17_threads_and_locks"); } @TestFactory Collection testChapter18() { - return testChapter(testFolderRoot + "/ch_18_type_inference"); + return testChapter(testFolderRoot + sep + "ch_18_type_inference"); } @TestFactory Collection zerothTest() { return new ArrayList<>() { { - add(testFile(Paths.get(testFolderRoot + "/../TEST0.java"))); + add(testFile(Paths.get(testFolderRoot + sep + ".." + sep + "TEST0.java"))); } }; } + @TestFactory + Collection simpleTest() { + return new ArrayList<>() { + { + add(testFile(Paths.get(testFolderRoot + sep + "SimpleTest.java"))); + } + }; + } + private ArrayList testChapter(String chapterPath) { ArrayList chapterTests = new ArrayList<>(); try { @@ -138,10 +147,20 @@ private static DynamicTest testFile(Path path) { // EO tree to string String eoCode = translateToEO(unit); - System.out.println("eoCode = " + eoCode); + System.out.println("eoCode = \n" + eoCode); + + // FIXME + { + eoCode = "+alias org.eolang.io.stdout" + System.lineSeparator(); + eoCode += System.lineSeparator(); + eoCode += "[args...] > main" + System.lineSeparator(); + eoCode += " stdout > @" + System.lineSeparator(); + eoCode += " \"passed\\n\"" + System.lineSeparator(); + } // Compile and execute translated to EO Java file - String eoExecOutput = compileAndExecuteEO(eoCode); + String eoExecOutput = compileAndExecuteEO(eoCode, path); + System.out.println("eoExecOutput = \n" + eoExecOutput); // Assert equal execution outputs assertEquals(javaExecOutput, eoExecOutput); @@ -205,8 +224,101 @@ private static String translateToEO(CompilationUnit unit) { return eoProgram.generateEO(0); } - private static String compileAndExecuteEO(String eoCode) { - return "passed" + System.lineSeparator(); // TODO: actual compilation & execution of EO code + /*** + * The process is following:
+ * 1. In the same parent folder as the ".java" test file has create subfolder.
+ * 2. In that subfolder create "eo" subfolder.
+ * 3. In "eo" subfolder create "main.eo" file and write previously generated EO code to it.
+ * 4. Alongside "eo" subfolder make a copy of "pom.xml" file fo Maven.
+ * 5. Compile "main.eo" with
mvn clean compile
+ * 6. Execute with
java -cp ...
+ * 7. Receive execution output
+ * 8. Pass received output back
+ * @param eoCode previously generated EO code + * @param testFilePath path to the ".java" test file + * @return EO execution output + */ + private static String compileAndExecuteEO(String eoCode, Path testFilePath) { + StringBuilder eoExecOut = new StringBuilder(); + try { + // Setup temporary folders and files + String eoFileName = testFilePath.getFileName().toString(); + eoFileName = eoFileName.substring(0, eoFileName.lastIndexOf('.')); + Path eoExecDir = Files.createDirectories( + Paths.get(Paths.get(testFilePath.getParent().toString(), eoFileName).toString(), "eo")); + Path eoFilePath = Files.createFile(Paths.get(eoExecDir.toString() + sep + "main.eo")); + Files.copy( + Paths.get(testFolderRoot, "eo_execution_pom", "pom.xml"), + Paths.get(eoExecDir.getParent().toString() + sep + "pom.xml")); + + // Write generated code to the file + Files.writeString(eoFilePath, eoCode); + + // Execute generated EO code + try { + boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows"); // Matters a lot + + // Compile EO file + ProcessBuilder compilePb = new ProcessBuilder("mvn" + (isWindows ? ".cmd" : ""), "clean", "compile"); + compilePb.directory(new File(eoExecDir.getParent().toString())); + compilePb.redirectErrorStream(true); + Process compileProcess = compilePb.start(); + + // Receive compilation output (may be useful) + BufferedReader mvnStdInput = new BufferedReader(new + InputStreamReader(compileProcess.getInputStream())); + String m; + while ((m = mvnStdInput.readLine()) != null) { + System.out.println(m); + } + compileProcess.waitFor(); + + // Execute Java ".class"es + ProcessBuilder execPb = new ProcessBuilder( + "java", + "-cp", + (isWindows ? + "\"target/classes;target/eo-runtime.jar\"" : + "target/classes:target/eo-runtime.jar"), + "org.eolang.Main", + "main", + (isWindows ? "%*" : "\"$@\"") + ); + execPb.directory(new File(eoExecDir.getParent().toString())); + execPb.redirectErrorStream(true); + Process execProcess = execPb.start(); + + // Receive EO execution output + BufferedReader stdInput = new BufferedReader(new + InputStreamReader(execProcess.getInputStream())); + String s; + while ((s = stdInput.readLine()) != null) { + eoExecOut.append(s).append(System.lineSeparator()); + } + execProcess.waitFor(); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + // Clean everything out + Files.walkFileTree(eoExecDir.getParent(), new SimpleFileVisitor<>() { + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { + Files.delete(dir); + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + Files.delete(file); + return FileVisitResult.CONTINUE; + } + }); + + } catch (IOException e) { + e.printStackTrace(); + } + return eoExecOut.isEmpty() ? "not passed" : eoExecOut.toString(); } private static boolean isReadyTest(Path path) { diff --git a/src/test/resources/eo_execution_pom/pom.xml b/src/test/resources/eo_execution_pom/pom.xml new file mode 100644 index 00000000..4f6b34d0 --- /dev/null +++ b/src/test/resources/eo_execution_pom/pom.xml @@ -0,0 +1,67 @@ + + + + 4.0.0 + org.eolang + sandbox-canonical + 1.0-SNAPSHOT + + 0.14.0 + 1.8 + 1.8 + UTF-8 + UTF-8 + + + + + maven-compiler-plugin + 3.8.1 + + 8 + 8 + + + + org.eolang + eo-maven-plugin + ${eolang.version} + + + + register + assemble + transpile + + + ${project.basedir}/eo + ${project.basedir}/target + + + + + + + From d921c1a34556db1f3765c07ddb017709d1bac42e Mon Sep 17 00:00:00 2001 From: someilay Date: Sun, 24 Oct 2021 15:30:19 +0300 Subject: [PATCH 04/26] Tests fixed because there is new EOCopy code generation --- src/test/java/eotree/TestEOCopy.java | 3 ++- src/test/java/eotree/data/TestEOFloatData.java | 2 +- src/test/java/eotree/data/TestEOIntData.java | 2 +- src/test/java/eotree/data/TestEOStringData.java | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/test/java/eotree/TestEOCopy.java b/src/test/java/eotree/TestEOCopy.java index 5b4425cb..139eba78 100644 --- a/src/test/java/eotree/TestEOCopy.java +++ b/src/test/java/eotree/TestEOCopy.java @@ -22,7 +22,8 @@ public void TestGenerateEOZeroIndent() { ) ) ); - assertEquals("name arg1 arg2", f.generateEO(0)); + System.out.println(f.generateEO(0)); + assertEquals("name.\n arg1\n arg2", f.generateEO(0)); } @Test diff --git a/src/test/java/eotree/data/TestEOFloatData.java b/src/test/java/eotree/data/TestEOFloatData.java index 2a970ca9..874eb827 100644 --- a/src/test/java/eotree/data/TestEOFloatData.java +++ b/src/test/java/eotree/data/TestEOFloatData.java @@ -17,6 +17,6 @@ public void TestGenerateEOZeroIndent() { public void TestGenerateEONonZeroIndent() { var f = new EOFloatData(3.14f); - assertEquals(f.generateEO(1), "3.14"); + assertEquals(f.generateEO(1), " 3.14"); } } diff --git a/src/test/java/eotree/data/TestEOIntData.java b/src/test/java/eotree/data/TestEOIntData.java index 58b02632..3a6971c0 100644 --- a/src/test/java/eotree/data/TestEOIntData.java +++ b/src/test/java/eotree/data/TestEOIntData.java @@ -17,6 +17,6 @@ public void TestGenerateEOZeroIndent() { public void TestGenerateEONonZeroIndent() { var f = new EOIntData(42); - assertEquals(f.generateEO(1), "42"); + assertEquals(f.generateEO(1), " 42"); } } diff --git a/src/test/java/eotree/data/TestEOStringData.java b/src/test/java/eotree/data/TestEOStringData.java index 73971241..239197de 100644 --- a/src/test/java/eotree/data/TestEOStringData.java +++ b/src/test/java/eotree/data/TestEOStringData.java @@ -17,6 +17,6 @@ public void TestGenerateEOZeroIndent() { public void TestGenerateEONonZeroIndent() { var f = new EOStringData("hello world"); - assertEquals(f.generateEO(1), "\"hello world\""); + assertEquals(f.generateEO(1), " \"hello world\""); } } From 0c58f04c80fcd0366879e401b4fb4bc837703da5 Mon Sep 17 00:00:00 2001 From: someilay Date: Sun, 24 Oct 2021 15:30:45 +0300 Subject: [PATCH 05/26] New EOCopy code generation --- src/main/java/eotree/EOCopy.java | 4 ++-- src/main/java/eotree/data/EOFloatData.java | 2 +- src/main/java/eotree/data/EOIntData.java | 2 +- src/main/java/eotree/data/EOStringData.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/eotree/EOCopy.java b/src/main/java/eotree/EOCopy.java index b3b37ef9..9cdd041b 100644 --- a/src/main/java/eotree/EOCopy.java +++ b/src/main/java/eotree/EOCopy.java @@ -14,8 +14,8 @@ public EOCopy(EOExpr trg, List args) { @Override public String generateEO(int indent) { - return trg.generateEO(indent) + args.stream() - .map(arg -> " " + arg.generateEO(indent + 1)) + return trg.generateEO(indent) + "." + args.stream() + .map(arg -> "\n" + arg.generateEO(indent + 1)) .collect(Collectors.joining()); } } diff --git a/src/main/java/eotree/data/EOFloatData.java b/src/main/java/eotree/data/EOFloatData.java index 5dcf1a82..9228728b 100644 --- a/src/main/java/eotree/data/EOFloatData.java +++ b/src/main/java/eotree/data/EOFloatData.java @@ -15,6 +15,6 @@ public EOFloatData(Float f) { @Override public String generateEO(int indent) { - return f.toString(); + return indent(indent) + f.toString(); } } diff --git a/src/main/java/eotree/data/EOIntData.java b/src/main/java/eotree/data/EOIntData.java index c1ca1349..5021f365 100644 --- a/src/main/java/eotree/data/EOIntData.java +++ b/src/main/java/eotree/data/EOIntData.java @@ -15,6 +15,6 @@ public EOIntData(Integer i) { @Override public String generateEO(int indent) { - return i.toString(); + return indent(indent) + i.toString(); } } diff --git a/src/main/java/eotree/data/EOStringData.java b/src/main/java/eotree/data/EOStringData.java index a4e98636..5d8fc919 100644 --- a/src/main/java/eotree/data/EOStringData.java +++ b/src/main/java/eotree/data/EOStringData.java @@ -15,6 +15,6 @@ public EOStringData(String str) { @Override public String generateEO(int indent) { - return "\"" + str + "\""; + return indent(indent) + "\"" + str + "\""; } } From fb729817f8ccac043d9a0561e607d328f9e3f75f Mon Sep 17 00:00:00 2001 From: someilay Date: Sun, 24 Oct 2021 15:32:37 +0300 Subject: [PATCH 06/26] Expressions (start). Minor fixes in MethodInvocations & Methods --- src/main/java/translator/Expressions.java | 14 +++++---- .../java/translator/MethodInvocations.java | 3 +- src/main/java/translator/Methods.java | 29 ++++++++----------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/main/java/translator/Expressions.java b/src/main/java/translator/Expressions.java index bea3f9e5..d0f27792 100644 --- a/src/main/java/translator/Expressions.java +++ b/src/main/java/translator/Expressions.java @@ -1,15 +1,19 @@ package translator; import eotree.EOAnonExpr; -import eotree.EODot; import tree.Expression.Expression; +import tree.Expression.Primary.Literal; +import tree.Expression.Primary.MethodInvocation; -import java.util.Optional; public class Expressions { public static EOAnonExpr mapExpression(Expression expr) { - return new EOAnonExpr( - new EODot(Optional.empty(), "Expr UUID: " + expr.unique) - ); + if (expr instanceof MethodInvocation){ + return new EOAnonExpr(MethodInvocations.mapMethodInvocation((MethodInvocation) expr)); + } else if (expr instanceof Literal){ + return new EOAnonExpr(Literals.mapLiteral((Literal) expr)); + } + + throw new IllegalArgumentException("Only MethodInvocation & Literal are supported!"); } } diff --git a/src/main/java/translator/MethodInvocations.java b/src/main/java/translator/MethodInvocations.java index 49d4f92b..3d161180 100644 --- a/src/main/java/translator/MethodInvocations.java +++ b/src/main/java/translator/MethodInvocations.java @@ -21,10 +21,9 @@ public static EOCopy mapMethodInvocation(MethodInvocation methodInvocation){ return new EOCopy( new EODot(Optional.empty(), methodInvocation.name), methodInvocation.arguments.arguments.stream() - .map(expression -> new EOAnonExpr(new EODot(Optional.empty(), "not implemented"))) + .map(Expressions::mapExpression) .collect(Collectors.toList()) ); - // expression -> Expressions.mapExpresion(expression) // Optional.empty() in EODot will be removed } } diff --git a/src/main/java/translator/Methods.java b/src/main/java/translator/Methods.java index 0d50058a..132712a6 100644 --- a/src/main/java/translator/Methods.java +++ b/src/main/java/translator/Methods.java @@ -1,15 +1,13 @@ package translator; import eotree.*; -import tree.Declaration.Declaration; import tree.Declaration.MethodDeclaration; import java.util.ArrayList; import java.util.Optional; import java.util.stream.Collectors; -import java.util.stream.Stream; -import static util.ListUtils.first; +import static util.ListUtils.listOf; public class Methods { public static EOBndExpr mapMethodDeclaration(MethodDeclaration dec) { @@ -30,20 +28,17 @@ public static EOBndExpr mapMethodDeclaration(MethodDeclaration dec) { .findFirst() : Optional.empty(), // Bound attributes - new ArrayList<>() { - { - add(new EOBndExpr( - new EOCopy( - new EODot(Optional.empty(), "seq"), - dec.methodBody.block.blockStatements.stream() - .map(Statements::mapBlockStatement) - .collect(Collectors.toList()) - ), - new EOBndName("@") - ) - ); - } - } + listOf( + new EOBndExpr( + new EOCopy( + new EODot(Optional.empty(), "seq"), + dec.methodBody.block.blockStatements.stream() + .map(Statements::mapBlockStatement) + .collect(Collectors.toList()) + ), + new EOBndName("@") + ) + ) ), new EOBndName(dec.name) ); From 585450d4923ae950623ed8d6d911b601e95057ce Mon Sep 17 00:00:00 2001 From: someilay Date: Sun, 24 Oct 2021 15:58:35 +0300 Subject: [PATCH 07/26] Hot fix. Remove useless point in EOCopy code generation --- src/main/java/eotree/EOCopy.java | 2 +- src/test/java/eotree/TestEOCopy.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/eotree/EOCopy.java b/src/main/java/eotree/EOCopy.java index 9cdd041b..6afeda4b 100644 --- a/src/main/java/eotree/EOCopy.java +++ b/src/main/java/eotree/EOCopy.java @@ -14,7 +14,7 @@ public EOCopy(EOExpr trg, List args) { @Override public String generateEO(int indent) { - return trg.generateEO(indent) + "." + args.stream() + return trg.generateEO(indent) + args.stream() .map(arg -> "\n" + arg.generateEO(indent + 1)) .collect(Collectors.joining()); } diff --git a/src/test/java/eotree/TestEOCopy.java b/src/test/java/eotree/TestEOCopy.java index 139eba78..251ce645 100644 --- a/src/test/java/eotree/TestEOCopy.java +++ b/src/test/java/eotree/TestEOCopy.java @@ -22,8 +22,7 @@ public void TestGenerateEOZeroIndent() { ) ) ); - System.out.println(f.generateEO(0)); - assertEquals("name.\n arg1\n arg2", f.generateEO(0)); + assertEquals("name\n arg1\n arg2", f.generateEO(0)); } @Test From 14494753d64bad5f728ceb58bda8c1000b9bf130 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:01:40 +0300 Subject: [PATCH 08/26] FIX: Testing added to the build pipeline --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 97373be5..4fff4617 100755 --- a/build.sh +++ b/build.sh @@ -1,4 +1,4 @@ #/bin/sh -./gradlew fatJar +./gradlew fatJar test cp build/libs/* j2eo.jar From b3e3557679e428943fe4b2d95c97401480be8276 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:23:01 +0300 Subject: [PATCH 09/26] CI/CD: bison installation --- .github/workflows/gradle-build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index b60d6c94..ac1f41a4 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -8,6 +8,11 @@ on: pull_request: jobs: + bison: + runs-on: ubuntu-latest + steps: + - run: sudo apt-get install flex + - run: sudo apt-get install bison gradle: strategy: matrix: @@ -31,4 +36,3 @@ jobs: - uses: gradle/gradle-build-action@v1 with: arguments: test - From 8076bbd60bac847c0c75d58d3d22546f1493f97e Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:25:28 +0300 Subject: [PATCH 10/26] CI/CD: rollback --- .github/workflows/gradle-build.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index ac1f41a4..ecef496a 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -8,11 +8,6 @@ on: pull_request: jobs: - bison: - runs-on: ubuntu-latest - steps: - - run: sudo apt-get install flex - - run: sudo apt-get install bison gradle: strategy: matrix: From 9451119ace3450841cd8b69648e2ef4d05267c0f Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:31:33 +0300 Subject: [PATCH 11/26] CI/CD: bison for unix --- .github/workflows/gradle-build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index ecef496a..d03ad2da 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -23,6 +23,10 @@ jobs: - uses: actions/setup-java@v1 with: java-version: 16 + + - if: ${{ matrix.os }} == ubuntu-latest + run: sudo apt-get install flex + run: sudo apt-get install bison - uses: gradle/gradle-build-action@v1 with: From e37fb98a99d852ebc12dd645a717865c41f8485b Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:34:58 +0300 Subject: [PATCH 12/26] CI/CD: fix --- .github/workflows/gradle-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index d03ad2da..ca43bc35 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -25,8 +25,8 @@ jobs: java-version: 16 - if: ${{ matrix.os }} == ubuntu-latest - run: sudo apt-get install flex - run: sudo apt-get install bison + - run: sudo apt-get install flex + - run: sudo apt-get install bison - uses: gradle/gradle-build-action@v1 with: From b44f8edba477fa3776275219851d4d1b3b3b82f9 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:38:22 +0300 Subject: [PATCH 13/26] CI/CD: fixes --- .github/workflows/gradle-build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index ca43bc35..4fc1c018 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -25,8 +25,9 @@ jobs: java-version: 16 - if: ${{ matrix.os }} == ubuntu-latest - - run: sudo apt-get install flex - - run: sudo apt-get install bison + run: | + sudo apt-get install flex + sudo apt-get install bison - uses: gradle/gradle-build-action@v1 with: From 8e0aba16baca512410632cf01462eab6712f5265 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:45:55 +0300 Subject: [PATCH 14/26] CI/CD: ubuntu fix --- .github/workflows/gradle-build.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 4fc1c018..80310426 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -16,6 +16,11 @@ jobs: macos-latest, windows-latest ] + os_name: [ + 'ubuntu', + 'macos', + 'windows' + ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -24,7 +29,7 @@ jobs: with: java-version: 16 - - if: ${{ matrix.os }} == ubuntu-latest + - if: ${{ matrix.os_name }} == 'ubuntu' run: | sudo apt-get install flex sudo apt-get install bison From e605bc192ca3aca6d3097f9fa4d4bd38b58fafe2 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:55:16 +0300 Subject: [PATCH 15/26] CI/CD: fixes --- .github/workflows/gradle-build.yml | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 80310426..4454eccb 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -12,15 +12,9 @@ jobs: strategy: matrix: os: [ - ubuntu-latest, macos-latest, windows-latest ] - os_name: [ - 'ubuntu', - 'macos', - 'windows' - ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -28,11 +22,27 @@ jobs: - uses: actions/setup-java@v1 with: java-version: 16 - - - if: ${{ matrix.os_name }} == 'ubuntu' - run: | - sudo apt-get install flex - sudo apt-get install bison + + - uses: gradle/gradle-build-action@v1 + with: + arguments: build + + - uses: gradle/gradle-build-action@v1 + with: + arguments: test + + ubuntu_gradle: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-java@v1 + with: + java-version: 16 + + - run: | + sudo apt-get install flex + sudo apt-get install flex - uses: gradle/gradle-build-action@v1 with: From 9089d037f31232e53f7a126da9ac4bc2e7f90f2f Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 17:57:02 +0300 Subject: [PATCH 16/26] CI/CD: yaml file fix --- .github/workflows/gradle-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 4454eccb..4d6ee675 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -41,8 +41,8 @@ jobs: java-version: 16 - run: | - sudo apt-get install flex - sudo apt-get install flex + sudo apt-get install flex + sudo apt-get install flex - uses: gradle/gradle-build-action@v1 with: From fac212876e6dab2880c9cc1d08e4da1a2c1ae5e1 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 18:04:45 +0300 Subject: [PATCH 17/26] CI/CD: rollback --- .github/workflows/gradle-build.yml | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 4d6ee675..ecef496a 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -12,6 +12,7 @@ jobs: strategy: matrix: os: [ + ubuntu-latest, macos-latest, windows-latest ] @@ -30,24 +31,3 @@ jobs: - uses: gradle/gradle-build-action@v1 with: arguments: test - - ubuntu_gradle: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-java@v1 - with: - java-version: 16 - - - run: | - sudo apt-get install flex - sudo apt-get install flex - - - uses: gradle/gradle-build-action@v1 - with: - arguments: build - - - uses: gradle/gradle-build-action@v1 - with: - arguments: test From 2f0fac82f1b33d587c6dbf59320457f8e00f730c Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 19:43:43 +0300 Subject: [PATCH 18/26] CI/CD: ubuntu fix --- .github/workflows/gradle-build.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index ecef496a..a9dce51e 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -12,7 +12,6 @@ jobs: strategy: matrix: os: [ - ubuntu-latest, macos-latest, windows-latest ] @@ -31,3 +30,24 @@ jobs: - uses: gradle/gradle-build-action@v1 with: arguments: test + + gradle_ubuntu: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-java@v1 + with: + java-version: 16 + + - run: | + sudo apt-get update -y + sudo apt-get install -y bison + + - uses: gradle/gradle-build-action@v1 + with: + arguments: build + + - uses: gradle/gradle-build-action@v1 + with: + arguments: test From 7f36a75decddef35536b964d63fd50302c4e75e4 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 20:01:11 +0300 Subject: [PATCH 19/26] CI/CD: ubuntu get latest bison --- .github/workflows/gradle-build.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index a9dce51e..df8fe9fa 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -41,8 +41,12 @@ jobs: java-version: 16 - run: | - sudo apt-get update -y - sudo apt-get install -y bison + wget http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz + tar -xvzf bison-3.8.2.tar.gz + cd bison-3.8.2 + ./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/libiconv/ + make + sudo make install - uses: gradle/gradle-build-action@v1 with: From 05b6a4bd93d4aa13ad70047e899be829a846d886 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 20:07:16 +0300 Subject: [PATCH 20/26] CI/CD: bison fix --- .github/workflows/gradle-build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index df8fe9fa..d8aa162d 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -44,9 +44,11 @@ jobs: wget http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz tar -xvzf bison-3.8.2.tar.gz cd bison-3.8.2 - ./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/libiconv/ - make + sudo ./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/libiconv/ + sudo make sudo make install + sudo ln -s /usr/local/bin/bison /usr/bin/bison + bison --version - uses: gradle/gradle-build-action@v1 with: From d6e3c2759b2a4cce65f40e9b6b30f980ea46d30e Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 20:10:54 +0300 Subject: [PATCH 21/26] CI/CD: bison fix --- .github/workflows/gradle-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index d8aa162d..1ba55458 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -41,6 +41,7 @@ jobs: java-version: 16 - run: | + sudo apt-get purge --auto-remove bison wget http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz tar -xvzf bison-3.8.2.tar.gz cd bison-3.8.2 From 419f03e536b379c92454c2eecbef09ef351958e2 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 20:20:37 +0300 Subject: [PATCH 22/26] CI/CD: bison --- .github/workflows/gradle-build.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 1ba55458..c5857afe 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -41,17 +41,15 @@ jobs: java-version: 16 - run: | - sudo apt-get purge --auto-remove bison - wget http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz - tar -xvzf bison-3.8.2.tar.gz - cd bison-3.8.2 - sudo ./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/libiconv/ - sudo make + wget http://ftp.gnu.org/gnu/bison/bison-3.8.tar.gz + tar -zxvf bison-3.8.tar.gz + cd bison-3.8 + ./configure + make sudo make install - sudo ln -s /usr/local/bin/bison /usr/bin/bison - bison --version + bison -V - - uses: gradle/gradle-build-action@v1 + - uses: gradle/gradle-build-action@v1 with: arguments: build From 1a12c8f5e808c0804cf3161f7869be33ce4e0e2b Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Sun, 24 Oct 2021 20:21:41 +0300 Subject: [PATCH 23/26] CI/CD: yml hotfix --- .github/workflows/gradle-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index c5857afe..2dcec580 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -49,7 +49,7 @@ jobs: sudo make install bison -V - - uses: gradle/gradle-build-action@v1 + - uses: gradle/gradle-build-action@v1 with: arguments: build From e3ae75ab1703b52b6aa849012dd82fe5bbfc6781 Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Mon, 25 Oct 2021 01:18:17 +0300 Subject: [PATCH 24/26] FEATURE: fill pipeline +fixes --- src/main/java/eotree/EOObject.java | 2 +- src/main/java/eotree/EOProgram.java | 2 +- src/main/java/main/Main.java | 2 +- src/main/java/parser/JavaParser.java | 3222 +++++++++-------- src/main/java/translator/Classes.java | 11 +- .../java/translator/MethodInvocations.java | 31 +- src/main/java/translator/Methods.java | 7 +- src/main/java/translator/Translator.java | 116 +- src/main/resources/Java_16_Grammar.y | 14 +- src/test/java/common/TestJ2EO.java | 13 +- src/test/resources/eo_execution_pom/pom.xml | 2 +- 11 files changed, 1808 insertions(+), 1614 deletions(-) diff --git a/src/main/java/eotree/EOObject.java b/src/main/java/eotree/EOObject.java index 19121e82..4f16cc46 100644 --- a/src/main/java/eotree/EOObject.java +++ b/src/main/java/eotree/EOObject.java @@ -24,7 +24,7 @@ public String generateEO(int indent) { .map(attr -> attr.generateEO(indent)) .collect(Collectors.joining(" ")) + (varargAttr - .map(attr -> " " + attr.generateEO(indent) + "...") + .map(attr -> (freeAttrs.size() > 0 ? " " : "") + attr.generateEO(indent) + "...") .orElse("")) + "]\n" + bndAttrs.stream() diff --git a/src/main/java/eotree/EOProgram.java b/src/main/java/eotree/EOProgram.java index b0a35879..1f874460 100644 --- a/src/main/java/eotree/EOProgram.java +++ b/src/main/java/eotree/EOProgram.java @@ -28,6 +28,6 @@ public String generateEO(int indent) { "\n" + bnds.stream() .map(bnd -> bnd.generateEO(indent)) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining("\n")) + "\n"; } } diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index ac5b6c60..6bb48ad4 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -54,7 +54,7 @@ public static void main(String[] args) throws FileNotFoundException { boolean result = parser.parse(); System.out.println(result ? "SUCCESS" : "FAIL"); if (parser.ast != null) { - parser.ast.report(0); + //parser.ast.report(0); var eoProgram = Translator.translate(parser.ast); var targetText = eoProgram.generateEO(0); diff --git a/src/main/java/parser/JavaParser.java b/src/main/java/parser/JavaParser.java index 2f86c47f..6e883eb3 100644 --- a/src/main/java/parser/JavaParser.java +++ b/src/main/java/parser/JavaParser.java @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Skeleton implementation for Bison LALR(1) parsers in Java - Copyright (C) 2007-2015, 2018-2021 Free Software Foundation, Inc. + Copyright (C) 2007-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -40,21 +40,21 @@ the parser skeleton itself, you may (at your option) remove this import java.text.MessageFormat; /* "%code imports" blocks. */ -/* "src/main/resources/Java_16_Grammar.y":137 */ - import lexer.*; /* "src/main/resources/Java_16_Grammar.y":138 */ - import tree.*; + import lexer.*; /* "src/main/resources/Java_16_Grammar.y":139 */ - import tree.Compilation.*; + import tree.*; /* "src/main/resources/Java_16_Grammar.y":140 */ - import tree.Declaration.*; + import tree.Compilation.*; /* "src/main/resources/Java_16_Grammar.y":141 */ - import tree.Expression.*; + import tree.Declaration.*; /* "src/main/resources/Java_16_Grammar.y":142 */ - import tree.Expression.Primary.*; + import tree.Expression.*; /* "src/main/resources/Java_16_Grammar.y":143 */ - import tree.Statement.*; + import tree.Expression.Primary.*; /* "src/main/resources/Java_16_Grammar.y":144 */ + import tree.Statement.*; +/* "src/main/resources/Java_16_Grammar.y":145 */ import tree.Type.*; /* "src/main/java/parser/JavaParser.java":61 */ @@ -67,13 +67,30 @@ the parser skeleton itself, you may (at your option) remove this public class JavaParser { /** Version number for the Bison executable that generated this parser. */ - public static final String bisonVersion = "3.7.6"; + public static final String bisonVersion = "3.7.4"; /** Name of the skeleton that generated this parser. */ public static final String bisonSkeleton = "lalr1.java"; + /** + * True if verbose error messages are enabled. + */ + private boolean yyErrorVerbose = true; + + /** + * Whether verbose error messages are enabled. + */ + public final boolean getErrorVerbose() { return yyErrorVerbose; } + + /** + * Set the verbosity of error messages. + * @param verbose True to request verbose error messages. + */ + public final void setErrorVerbose(boolean verbose) + { yyErrorVerbose = verbose; } + @@ -722,80 +739,47 @@ public final int getCode() { return this.yycode_; } - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - private static String yytnamerr_(String yystr) - { - if (yystr.charAt (0) == '"') - { - StringBuffer yyr = new StringBuffer(); - strip_quotes: for (int i = 1; i < yystr.length(); i++) - switch (yystr.charAt(i)) - { - case '\'': - case ',': - break strip_quotes; - - case '\\': - if (yystr.charAt(++i) != '\\') - break strip_quotes; - /* Fall through. */ - default: - yyr.append(yystr.charAt(i)); - break; - - case '"': - return yyr.toString(); - } - } - return yystr; - } - - /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + /* YYNAMES_[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at \a YYNTOKENS_, nonterminals. */ - private static final String[] yytname_ = yytname_init(); - private static final String[] yytname_init() + private static final String[] yynames_ = yynames_init(); + private static final String[] yynames_init() { return new String[] { - "\"end of file\"", "error", "\"invalid token\"", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COMMA", "DOT", "SEMICOLON", - "COLON", "DBL_COLON", "STAR", "SLASH", "PERCENT", "AMPERSAND", "AT", - "LESS", "GREATER", "VERTICAL", "PLUS", "MINUS", "ARROW", "DIAMOND", - "QUESTION", "CARET", "EQUAL", "TILDE", "EXCLAMATION", "ELLIPSIS", - "LESS_EQUAL", "GREATER_EQUAL", "STAR_EQUAL", "SLASH_EQUAL", - "PERCENT_EQUAL", "PLUS_EQUAL", "MINUS_EQUAL", "LESS_LESS_EQUAL", - "GR_GR_EQUAL", "GR_GR_GR_EQUAL", "AMP_EQUAL", "CARET_EQUAL", - "VERTICAL_EQUAL", "DBL_PLUS", "DBL_MINUS", "DBL_VERTICAL", - "DBL_AMPERSAND", "DBL_EQUAL", "TRIPL_EQUAL", "NON_EQUAL", "DBL_LESS", - "DBL_GREATER", "TRIPL_GREATER", "IDENTIFIER", "INTEGER_LITERAL", - "FLOATING_POINT_LITERAL", "CHARACTER_LITERAL", "STRING_LITERAL", - "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", - "CHAR", "CLASS", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", - "EXTENDS", "FALSE", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", - "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", - "MODULE", "NATIVE", "NEW", "NULL", "OPEN", "PACKAGE", "PRIVATE", - "PROTECTED", "PUBLIC", "RECORD", "RETURN", "SHORT", "STATIC", "STRICTFP", - "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", - "TRANSIENT", "TRANSITIVE", "TRUE", "TRY", "VAR", "VOID", "VOLATILE", - "WHILE", "YIELD", "SHORT_COMMENT", "LONG_COMMENT", "EOS", "\"requires\"", - "\"exports\"", "\"to\"", "\"opens\"", "\"uses\"", "\"provides\"", - "\"with\"", "$accept", "Literal", "CompoundName", "ModifierSeqOpt", - "ModifierSeq", "StandardModifierSeq", "StandardModifier", - "CompilationUnit", "Package", "Module", "ImportDeclarationSeqOpt", - "ImportDeclarationSeq", "ImportDeclaration", "TopLevelComponentSeqOpt", - "TopLevelComponentSeq", "TopLevelComponent", "ModuleDirectiveSeqOpt", - "ModuleDirectiveSeq", "ModuleDirective", "ModuleNameList", - "RequiresModifierSeqOpt", "Type", "UnannotatedType", "PrimitiveType", - "ClassDeclaration", "NormalClassDeclaration", "TypeParametersOpt", - "TypeParameters", "TypeParameterList", "TypeParameter", - "TypeParameterTail", "ClassExtendsOpt", "ClassImplementsOpt", - "ClassTypeList1", "ClassTypeList2", "ClassBodyOpt", "ClassBody", - "ClassBodyDeclarationSeq", "ClassBodyDeclaration", "PureBodyDeclaration", - "ConstructorDeclaration", "ConstructorDeclarator", "ConstructorBody", + "end of file", "error", "invalid token", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACKET", "RBRACKET", "COMMA", "DOT", "SEMICOLON", "COLON", + "DBL_COLON", "STAR", "SLASH", "PERCENT", "AMPERSAND", "AT", "LESS", + "GREATER", "VERTICAL", "PLUS", "MINUS", "ARROW", "DIAMOND", "QUESTION", + "CARET", "EQUAL", "TILDE", "EXCLAMATION", "ELLIPSIS", "LESS_EQUAL", + "GREATER_EQUAL", "STAR_EQUAL", "SLASH_EQUAL", "PERCENT_EQUAL", + "PLUS_EQUAL", "MINUS_EQUAL", "LESS_LESS_EQUAL", "GR_GR_EQUAL", + "GR_GR_GR_EQUAL", "AMP_EQUAL", "CARET_EQUAL", "VERTICAL_EQUAL", + "DBL_PLUS", "DBL_MINUS", "DBL_VERTICAL", "DBL_AMPERSAND", "DBL_EQUAL", + "TRIPL_EQUAL", "NON_EQUAL", "DBL_LESS", "DBL_GREATER", "TRIPL_GREATER", + "IDENTIFIER", "INTEGER_LITERAL", "FLOATING_POINT_LITERAL", + "CHARACTER_LITERAL", "STRING_LITERAL", "ABSTRACT", "ASSERT", "BOOLEAN", + "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONTINUE", "DEFAULT", + "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FALSE", "FINAL", "FINALLY", + "FLOAT", "FOR", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", + "INTERFACE", "LONG", "MODULE", "NATIVE", "NEW", "NULL", "OPEN", + "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RECORD", "RETURN", "SHORT", + "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", + "THROWS", "TRANSIENT", "TRANSITIVE", "TRUE", "TRY", "VAR", "VOID", + "VOLATILE", "WHILE", "YIELD", "SHORT_COMMENT", "LONG_COMMENT", "EOS", + "requires", "exports", "to", "opens", "uses", "provides", "with", + "$accept", "Literal", "CompoundName", "ModifierSeqOpt", "ModifierSeq", + "StandardModifierSeq", "StandardModifier", "CompilationUnit", "Package", + "Module", "ImportDeclarationSeqOpt", "ImportDeclarationSeq", + "ImportDeclaration", "TopLevelComponentSeqOpt", "TopLevelComponentSeq", + "TopLevelComponent", "ModuleDirectiveSeqOpt", "ModuleDirectiveSeq", + "ModuleDirective", "ModuleNameList", "RequiresModifierSeqOpt", "Type", + "UnannotatedType", "PrimitiveType", "ClassDeclaration", + "NormalClassDeclaration", "TypeParametersOpt", "TypeParameters", + "TypeParameterList", "TypeParameter", "TypeParameterTail", + "ClassExtendsOpt", "ClassImplementsOpt", "ClassTypeList1", + "ClassTypeList2", "ClassBodyOpt", "ClassBody", "ClassBodyDeclarationSeq", + "ClassBodyDeclaration", "PureBodyDeclaration", "ConstructorDeclaration", + "ConstructorDeclarator", "ConstructorBody", "ExplicitConstructorInvocation", "EnumDeclaration", "EnumBody", "EnumConstantListOpt", "EnumConstant", "EnumBodyDeclarationsOpt", "RecordDeclaration", "RecordHeader", "RecordComponentListOpt", @@ -849,9 +833,8 @@ private static final String[] yytname_init() /* The user-facing name of this symbol. */ public final String getName() { - return yytnamerr_(yytname_[yycode_]); + return yynames_[yycode_]; } - }; @@ -1303,693 +1286,693 @@ private int yyaction(int yyn, YYStack yystack, int yylen) { case 2: /* Literal: INTEGER_LITERAL */ if (yyn == 2) - /* "src/main/resources/Java_16_Grammar.y":258 */ + /* "src/main/resources/Java_16_Grammar.y":259 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 3: /* Literal: FLOATING_POINT_LITERAL */ if (yyn == 3) - /* "src/main/resources/Java_16_Grammar.y":259 */ + /* "src/main/resources/Java_16_Grammar.y":260 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 4: /* Literal: TRUE */ if (yyn == 4) - /* "src/main/resources/Java_16_Grammar.y":260 */ + /* "src/main/resources/Java_16_Grammar.y":261 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 5: /* Literal: FALSE */ if (yyn == 5) - /* "src/main/resources/Java_16_Grammar.y":261 */ + /* "src/main/resources/Java_16_Grammar.y":262 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 6: /* Literal: CHARACTER_LITERAL */ if (yyn == 6) - /* "src/main/resources/Java_16_Grammar.y":262 */ + /* "src/main/resources/Java_16_Grammar.y":263 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 7: /* Literal: STRING_LITERAL */ if (yyn == 7) - /* "src/main/resources/Java_16_Grammar.y":263 */ + /* "src/main/resources/Java_16_Grammar.y":264 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 8: /* Literal: NULL */ if (yyn == 8) - /* "src/main/resources/Java_16_Grammar.y":265 */ + /* "src/main/resources/Java_16_Grammar.y":266 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 9: /* CompoundName: IDENTIFIER */ if (yyn == 9) - /* "src/main/resources/Java_16_Grammar.y":271 */ + /* "src/main/resources/Java_16_Grammar.y":272 */ { yyval = new CompoundName(((Token)(yystack.valueAt (0))).image); }; break; case 10: /* CompoundName: CompoundName DOT IDENTIFIER */ if (yyn == 10) - /* "src/main/resources/Java_16_Grammar.y":272 */ + /* "src/main/resources/Java_16_Grammar.y":273 */ { yyval = ((CompoundName)(yystack.valueAt (2))).add(((Token)(yystack.valueAt (0))).image); }; break; case 11: /* ModifierSeqOpt: %empty */ if (yyn == 11) - /* "src/main/resources/Java_16_Grammar.y":276 */ + /* "src/main/resources/Java_16_Grammar.y":277 */ { yyval = null; }; break; case 12: /* ModifierSeqOpt: ModifierSeq */ if (yyn == 12) - /* "src/main/resources/Java_16_Grammar.y":277 */ + /* "src/main/resources/Java_16_Grammar.y":278 */ { yyval = ((Modifiers)(yystack.valueAt (0))); }; break; case 13: /* ModifierSeq: StandardModifierSeq */ if (yyn == 13) - /* "src/main/resources/Java_16_Grammar.y":281 */ + /* "src/main/resources/Java_16_Grammar.y":282 */ { yyval = new Modifiers(null,((StandardModifiers)(yystack.valueAt (0)))); }; break; case 14: /* ModifierSeq: AnnotationSeq StandardModifierSeq */ if (yyn == 14) - /* "src/main/resources/Java_16_Grammar.y":282 */ + /* "src/main/resources/Java_16_Grammar.y":283 */ { yyval = new Modifiers(((Annotations)(yystack.valueAt (1))),((StandardModifiers)(yystack.valueAt (0)))); }; break; case 15: /* StandardModifierSeq: StandardModifier */ if (yyn == 15) - /* "src/main/resources/Java_16_Grammar.y":286 */ + /* "src/main/resources/Java_16_Grammar.y":287 */ { yyval = new StandardModifiers(((Token)(yystack.valueAt (0)))); }; break; case 16: /* StandardModifierSeq: StandardModifierSeq StandardModifier */ if (yyn == 16) - /* "src/main/resources/Java_16_Grammar.y":287 */ + /* "src/main/resources/Java_16_Grammar.y":288 */ { yyval = ((StandardModifiers)(yystack.valueAt (1))).add(((Token)(yystack.valueAt (0)))); }; break; case 17: /* StandardModifier: DEFAULT */ if (yyn == 17) - /* "src/main/resources/Java_16_Grammar.y":292 */ + /* "src/main/resources/Java_16_Grammar.y":293 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 18: /* StandardModifier: FINAL */ if (yyn == 18) - /* "src/main/resources/Java_16_Grammar.y":293 */ + /* "src/main/resources/Java_16_Grammar.y":294 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 19: /* StandardModifier: PUBLIC */ if (yyn == 19) - /* "src/main/resources/Java_16_Grammar.y":294 */ + /* "src/main/resources/Java_16_Grammar.y":295 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 20: /* StandardModifier: PROTECTED */ if (yyn == 20) - /* "src/main/resources/Java_16_Grammar.y":295 */ + /* "src/main/resources/Java_16_Grammar.y":296 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 21: /* StandardModifier: PRIVATE */ if (yyn == 21) - /* "src/main/resources/Java_16_Grammar.y":296 */ + /* "src/main/resources/Java_16_Grammar.y":297 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 22: /* StandardModifier: ABSTRACT */ if (yyn == 22) - /* "src/main/resources/Java_16_Grammar.y":297 */ + /* "src/main/resources/Java_16_Grammar.y":298 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 23: /* StandardModifier: STATIC */ if (yyn == 23) - /* "src/main/resources/Java_16_Grammar.y":298 */ + /* "src/main/resources/Java_16_Grammar.y":299 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 24: /* StandardModifier: STRICTFP */ if (yyn == 24) - /* "src/main/resources/Java_16_Grammar.y":299 */ + /* "src/main/resources/Java_16_Grammar.y":300 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 25: /* StandardModifier: SYNCHRONIZED */ if (yyn == 25) - /* "src/main/resources/Java_16_Grammar.y":300 */ + /* "src/main/resources/Java_16_Grammar.y":301 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 26: /* StandardModifier: TRANSIENT */ if (yyn == 26) - /* "src/main/resources/Java_16_Grammar.y":301 */ + /* "src/main/resources/Java_16_Grammar.y":302 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 27: /* StandardModifier: VOLATILE */ if (yyn == 27) - /* "src/main/resources/Java_16_Grammar.y":302 */ + /* "src/main/resources/Java_16_Grammar.y":303 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 28: /* StandardModifier: OPEN */ if (yyn == 28) - /* "src/main/resources/Java_16_Grammar.y":303 */ + /* "src/main/resources/Java_16_Grammar.y":304 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 29: /* CompilationUnit: %empty */ if (yyn == 29) - /* "src/main/resources/Java_16_Grammar.y":309 */ + /* "src/main/resources/Java_16_Grammar.y":310 */ { yyval = null; }; break; case 30: /* CompilationUnit: Package */ if (yyn == 30) - /* "src/main/resources/Java_16_Grammar.y":310 */ + /* "src/main/resources/Java_16_Grammar.y":311 */ { yyval = ((tree.Compilation.CompilationUnit)(yystack.valueAt (0))); ast = ((tree.Compilation.CompilationUnit)(yystack.valueAt (0))); }; break; case 31: /* CompilationUnit: Module */ if (yyn == 31) - /* "src/main/resources/Java_16_Grammar.y":311 */ + /* "src/main/resources/Java_16_Grammar.y":312 */ { yyval = ((tree.Compilation.Module)(yystack.valueAt (0))); ast = ((tree.Compilation.Module)(yystack.valueAt (0))); }; break; case 32: /* CompilationUnit: ImportDeclarationSeqOpt TopLevelComponentSeq */ if (yyn == 32) - /* "src/main/resources/Java_16_Grammar.y":312 */ + /* "src/main/resources/Java_16_Grammar.y":313 */ { ast = new SimpleCompilationUnit(((tree.Declaration.ImportDeclarations)(yystack.valueAt (1))),((tree.Compilation.TopLevelComponents)(yystack.valueAt (0)))); }; break; case 33: /* Package: PACKAGE CompoundName SEMICOLON ImportDeclarationSeqOpt TopLevelComponentSeqOpt */ if (yyn == 33) - /* "src/main/resources/Java_16_Grammar.y":317 */ + /* "src/main/resources/Java_16_Grammar.y":318 */ { yyval = new tree.Compilation.Package(((CompoundName)(yystack.valueAt (3))),((tree.Declaration.ImportDeclarations)(yystack.valueAt (1))),((tree.Compilation.TopLevelComponents)(yystack.valueAt (0)))); }; break; - case 34: /* Module: ModifierSeqOpt MODULE CompoundName LBRACE ModuleDirectiveSeqOpt RBRACE */ + case 34: /* Module: MODULE CompoundName LBRACE ModuleDirectiveSeqOpt RBRACE */ if (yyn == 34) - /* "src/main/resources/Java_16_Grammar.y":323 */ - { yyval = null; }; + /* "src/main/resources/Java_16_Grammar.y":324 */ + { yyval = null; }; break; case 35: /* ImportDeclarationSeqOpt: %empty */ if (yyn == 35) - /* "src/main/resources/Java_16_Grammar.y":327 */ + /* "src/main/resources/Java_16_Grammar.y":328 */ { yyval = null; }; break; case 36: /* ImportDeclarationSeqOpt: ImportDeclarationSeq */ if (yyn == 36) - /* "src/main/resources/Java_16_Grammar.y":328 */ + /* "src/main/resources/Java_16_Grammar.y":329 */ { yyval = ((tree.Declaration.ImportDeclarations)(yystack.valueAt (0))); }; break; case 37: /* ImportDeclarationSeq: ImportDeclaration */ if (yyn == 37) - /* "src/main/resources/Java_16_Grammar.y":332 */ + /* "src/main/resources/Java_16_Grammar.y":333 */ { yyval = new ImportDeclarations(((tree.Declaration.ImportDeclaration)(yystack.valueAt (0)))); }; break; case 38: /* ImportDeclarationSeq: ImportDeclarationSeqOpt ImportDeclaration */ if (yyn == 38) - /* "src/main/resources/Java_16_Grammar.y":333 */ + /* "src/main/resources/Java_16_Grammar.y":334 */ { yyval = ((tree.Declaration.ImportDeclarations)(yystack.valueAt (1))).add(((tree.Declaration.ImportDeclaration)(yystack.valueAt (0)))); }; break; case 39: /* ImportDeclaration: IMPORT CompoundName SEMICOLON */ if (yyn == 39) - /* "src/main/resources/Java_16_Grammar.y":337 */ + /* "src/main/resources/Java_16_Grammar.y":338 */ { yyval = new ImportDeclaration(false,((CompoundName)(yystack.valueAt (1))),false); }; break; case 40: /* ImportDeclaration: IMPORT STATIC CompoundName SEMICOLON */ if (yyn == 40) - /* "src/main/resources/Java_16_Grammar.y":338 */ + /* "src/main/resources/Java_16_Grammar.y":339 */ { yyval = new ImportDeclaration(true,((CompoundName)(yystack.valueAt (1))),false); }; break; case 41: /* ImportDeclaration: IMPORT CompoundName DOT STAR SEMICOLON */ if (yyn == 41) - /* "src/main/resources/Java_16_Grammar.y":339 */ + /* "src/main/resources/Java_16_Grammar.y":340 */ { yyval = new ImportDeclaration(false,((CompoundName)(yystack.valueAt (3))),true); }; break; case 42: /* ImportDeclaration: IMPORT STATIC CompoundName DOT STAR SEMICOLON */ if (yyn == 42) - /* "src/main/resources/Java_16_Grammar.y":340 */ + /* "src/main/resources/Java_16_Grammar.y":341 */ { yyval = new ImportDeclaration(true,((CompoundName)(yystack.valueAt (3))),true); }; break; case 43: /* TopLevelComponentSeqOpt: %empty */ if (yyn == 43) - /* "src/main/resources/Java_16_Grammar.y":344 */ + /* "src/main/resources/Java_16_Grammar.y":345 */ { yyval = null; }; break; case 44: /* TopLevelComponentSeqOpt: TopLevelComponentSeq */ if (yyn == 44) - /* "src/main/resources/Java_16_Grammar.y":345 */ + /* "src/main/resources/Java_16_Grammar.y":346 */ { yyval = ((tree.Compilation.TopLevelComponents)(yystack.valueAt (0))); }; break; case 45: /* TopLevelComponentSeq: ModifierSeqOpt TopLevelComponent */ if (yyn == 45) - /* "src/main/resources/Java_16_Grammar.y":349 */ + /* "src/main/resources/Java_16_Grammar.y":350 */ { ((tree.Compilation.TopLevelComponent)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1)))); yyval = new TopLevelComponents(((tree.Compilation.TopLevelComponent)(yystack.valueAt (0)))); }; break; case 46: /* TopLevelComponentSeq: TopLevelComponentSeq ModifierSeqOpt TopLevelComponent */ if (yyn == 46) - /* "src/main/resources/Java_16_Grammar.y":350 */ + /* "src/main/resources/Java_16_Grammar.y":351 */ { ((tree.Compilation.TopLevelComponent)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1)))); yyval = ((tree.Compilation.TopLevelComponents)(yystack.valueAt (2))).add(((tree.Compilation.TopLevelComponent)(yystack.valueAt (0)))); }; break; case 47: /* TopLevelComponent: ClassDeclaration */ if (yyn == 47) - /* "src/main/resources/Java_16_Grammar.y":354 */ + /* "src/main/resources/Java_16_Grammar.y":355 */ { yyval = new TopLevelComponent(((ClassDeclaration)(yystack.valueAt (0)))); }; break; case 48: /* TopLevelComponent: InterfaceDeclaration */ if (yyn == 48) - /* "src/main/resources/Java_16_Grammar.y":355 */ + /* "src/main/resources/Java_16_Grammar.y":356 */ { yyval = new TopLevelComponent(((InterfaceDeclaration)(yystack.valueAt (0)))); }; break; case 67: /* Type: UnannotatedType */ if (yyn == 67) - /* "src/main/resources/Java_16_Grammar.y":402 */ + /* "src/main/resources/Java_16_Grammar.y":403 */ { yyval = ((tree.Type.UnannotatedType)(yystack.valueAt (0))); }; break; case 68: /* Type: AnnotationSeq UnannotatedType */ if (yyn == 68) - /* "src/main/resources/Java_16_Grammar.y":403 */ + /* "src/main/resources/Java_16_Grammar.y":404 */ { yyval = ((tree.Type.UnannotatedType)(yystack.valueAt (0))).addAnnotations(((Annotations)(yystack.valueAt (1)))); }; break; case 69: /* UnannotatedType: PrimitiveType */ if (yyn == 69) - /* "src/main/resources/Java_16_Grammar.y":407 */ + /* "src/main/resources/Java_16_Grammar.y":408 */ { yyval = new PrimitiveType(((Token)(yystack.valueAt (0)))); }; break; case 70: /* UnannotatedType: CompoundName */ if (yyn == 70) - /* "src/main/resources/Java_16_Grammar.y":409 */ + /* "src/main/resources/Java_16_Grammar.y":410 */ { yyval = new TypeName(((CompoundName)(yystack.valueAt (0))),null); }; break; case 71: /* UnannotatedType: CompoundName TypeArguments */ if (yyn == 71) - /* "src/main/resources/Java_16_Grammar.y":410 */ + /* "src/main/resources/Java_16_Grammar.y":411 */ { yyval = new TypeName(((CompoundName)(yystack.valueAt (1))),((tree.Type.TypeArguments)(yystack.valueAt (0)))); }; break; case 72: /* UnannotatedType: UnannotatedType Dim */ if (yyn == 72) - /* "src/main/resources/Java_16_Grammar.y":412 */ + /* "src/main/resources/Java_16_Grammar.y":413 */ { yyval = ((tree.Type.UnannotatedType)(yystack.valueAt (1))).addDimension(((Dim)(yystack.valueAt (0)))); }; break; case 73: /* PrimitiveType: BYTE */ if (yyn == 73) - /* "src/main/resources/Java_16_Grammar.y":421 */ + /* "src/main/resources/Java_16_Grammar.y":422 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 74: /* PrimitiveType: SHORT */ if (yyn == 74) - /* "src/main/resources/Java_16_Grammar.y":422 */ + /* "src/main/resources/Java_16_Grammar.y":423 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 75: /* PrimitiveType: INT */ if (yyn == 75) - /* "src/main/resources/Java_16_Grammar.y":423 */ + /* "src/main/resources/Java_16_Grammar.y":424 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 76: /* PrimitiveType: LONG */ if (yyn == 76) - /* "src/main/resources/Java_16_Grammar.y":424 */ + /* "src/main/resources/Java_16_Grammar.y":425 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 77: /* PrimitiveType: CHAR */ if (yyn == 77) - /* "src/main/resources/Java_16_Grammar.y":425 */ + /* "src/main/resources/Java_16_Grammar.y":426 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 78: /* PrimitiveType: FLOAT */ if (yyn == 78) - /* "src/main/resources/Java_16_Grammar.y":427 */ + /* "src/main/resources/Java_16_Grammar.y":428 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 79: /* PrimitiveType: DOUBLE */ if (yyn == 79) - /* "src/main/resources/Java_16_Grammar.y":428 */ + /* "src/main/resources/Java_16_Grammar.y":429 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 80: /* PrimitiveType: BOOLEAN */ if (yyn == 80) - /* "src/main/resources/Java_16_Grammar.y":429 */ + /* "src/main/resources/Java_16_Grammar.y":430 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 81: /* ClassDeclaration: NormalClassDeclaration */ if (yyn == 81) - /* "src/main/resources/Java_16_Grammar.y":450 */ + /* "src/main/resources/Java_16_Grammar.y":451 */ { yyval = ((ClassDeclaration)(yystack.valueAt (0))); }; break; case 82: /* ClassDeclaration: EnumDeclaration */ if (yyn == 82) - /* "src/main/resources/Java_16_Grammar.y":451 */ + /* "src/main/resources/Java_16_Grammar.y":452 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; case 83: /* ClassDeclaration: RecordDeclaration */ if (yyn == 83) - /* "src/main/resources/Java_16_Grammar.y":452 */ + /* "src/main/resources/Java_16_Grammar.y":453 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; - case 84: /* NormalClassDeclaration: CLASS IDENTIFIER TypeParametersOpt ClassExtendsOpt ClassImplementsOpt ClassBody */ + case 84: /* NormalClassDeclaration: ModifierSeqOpt CLASS IDENTIFIER TypeParametersOpt ClassExtendsOpt ClassImplementsOpt ClassBody */ if (yyn == 84) - /* "src/main/resources/Java_16_Grammar.y":457 */ + /* "src/main/resources/Java_16_Grammar.y":458 */ { yyval = new NormalClassDeclaration(((Token)(yystack.valueAt (4))),((TypeParameters)(yystack.valueAt (3))),((tree.Type.Type)(yystack.valueAt (2))),((tree.Type.TypeList)(yystack.valueAt (1))),((Declarations)(yystack.valueAt (0)))); }; break; case 85: /* TypeParametersOpt: %empty */ if (yyn == 85) - /* "src/main/resources/Java_16_Grammar.y":461 */ + /* "src/main/resources/Java_16_Grammar.y":462 */ { yyval = null; }; break; case 86: /* TypeParametersOpt: TypeParameters */ if (yyn == 86) - /* "src/main/resources/Java_16_Grammar.y":462 */ + /* "src/main/resources/Java_16_Grammar.y":463 */ { yyval = ((TypeParameters)(yystack.valueAt (0))); }; break; case 87: /* TypeParameters: LESS TypeParameterList GREATER */ if (yyn == 87) - /* "src/main/resources/Java_16_Grammar.y":466 */ + /* "src/main/resources/Java_16_Grammar.y":467 */ { yyval = ((TypeParameters)(yystack.valueAt (1))); }; break; case 88: /* TypeParameterList: TypeParameter */ if (yyn == 88) - /* "src/main/resources/Java_16_Grammar.y":470 */ + /* "src/main/resources/Java_16_Grammar.y":471 */ { yyval = new TypeParameters(((TypeParameter)(yystack.valueAt (0)))); }; break; case 89: /* TypeParameterList: TypeParameterList COMMA TypeParameter */ if (yyn == 89) - /* "src/main/resources/Java_16_Grammar.y":471 */ + /* "src/main/resources/Java_16_Grammar.y":472 */ { yyval = ((TypeParameters)(yystack.valueAt (2))).add(((TypeParameter)(yystack.valueAt (0)))); }; break; case 90: /* TypeParameter: AnnotationSeq TypeParameterTail */ if (yyn == 90) - /* "src/main/resources/Java_16_Grammar.y":481 */ + /* "src/main/resources/Java_16_Grammar.y":482 */ { yyval = new TypeParameter(((Annotations)(yystack.valueAt (1))),((TypeParameterTail)(yystack.valueAt (0)))); }; break; case 91: /* TypeParameter: TypeParameterTail */ if (yyn == 91) - /* "src/main/resources/Java_16_Grammar.y":482 */ + /* "src/main/resources/Java_16_Grammar.y":483 */ { yyval = new TypeParameter(null,((TypeParameterTail)(yystack.valueAt (0)))); }; break; case 92: /* TypeParameterTail: IDENTIFIER */ if (yyn == 92) - /* "src/main/resources/Java_16_Grammar.y":486 */ + /* "src/main/resources/Java_16_Grammar.y":487 */ { yyval = new TypeParameterTail(((Token)(yystack.valueAt (0))),null); }; break; case 93: /* TypeParameterTail: IDENTIFIER EXTENDS AnnotationSeqOpt IDENTIFIER */ if (yyn == 93) - /* "src/main/resources/Java_16_Grammar.y":487 */ + /* "src/main/resources/Java_16_Grammar.y":488 */ { yyval = new TypeParameterTail(((Token)(yystack.valueAt (3))),((Annotations)(yystack.valueAt (1))),((Token)(yystack.valueAt (0)))); }; break; case 94: /* TypeParameterTail: IDENTIFIER EXTENDS ClassTypeList2 */ if (yyn == 94) - /* "src/main/resources/Java_16_Grammar.y":488 */ + /* "src/main/resources/Java_16_Grammar.y":489 */ { yyval = new TypeParameterTail(((Token)(yystack.valueAt (2))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 95: /* ClassExtendsOpt: %empty */ if (yyn == 95) - /* "src/main/resources/Java_16_Grammar.y":492 */ + /* "src/main/resources/Java_16_Grammar.y":493 */ { yyval = null; }; break; case 96: /* ClassExtendsOpt: EXTENDS Type */ if (yyn == 96) - /* "src/main/resources/Java_16_Grammar.y":493 */ + /* "src/main/resources/Java_16_Grammar.y":494 */ { yyval = ((tree.Type.Type)(yystack.valueAt (0))); }; break; case 97: /* ClassImplementsOpt: %empty */ if (yyn == 97) - /* "src/main/resources/Java_16_Grammar.y":497 */ + /* "src/main/resources/Java_16_Grammar.y":498 */ { yyval = null; }; break; case 98: /* ClassImplementsOpt: IMPLEMENTS ClassTypeList1 */ if (yyn == 98) - /* "src/main/resources/Java_16_Grammar.y":498 */ + /* "src/main/resources/Java_16_Grammar.y":499 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (0))); }; break; case 99: /* ClassTypeList1: Type */ if (yyn == 99) - /* "src/main/resources/Java_16_Grammar.y":502 */ + /* "src/main/resources/Java_16_Grammar.y":503 */ { yyval = new TypeList(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 100: /* ClassTypeList1: ClassTypeList1 COMMA Type */ if (yyn == 100) - /* "src/main/resources/Java_16_Grammar.y":503 */ + /* "src/main/resources/Java_16_Grammar.y":504 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (2))).add(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 101: /* ClassTypeList2: Type */ if (yyn == 101) - /* "src/main/resources/Java_16_Grammar.y":507 */ + /* "src/main/resources/Java_16_Grammar.y":508 */ { yyval = new TypeList(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 102: /* ClassTypeList2: ClassTypeList2 AMPERSAND Type */ if (yyn == 102) - /* "src/main/resources/Java_16_Grammar.y":508 */ + /* "src/main/resources/Java_16_Grammar.y":509 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (2))).add(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 103: /* ClassBodyOpt: %empty */ if (yyn == 103) - /* "src/main/resources/Java_16_Grammar.y":512 */ + /* "src/main/resources/Java_16_Grammar.y":513 */ { yyval = null; }; break; case 104: /* ClassBodyOpt: ClassBody */ if (yyn == 104) - /* "src/main/resources/Java_16_Grammar.y":513 */ + /* "src/main/resources/Java_16_Grammar.y":514 */ { yyval = ((Declarations)(yystack.valueAt (0))); }; break; case 105: /* ClassBody: LBRACE RBRACE */ if (yyn == 105) - /* "src/main/resources/Java_16_Grammar.y":517 */ + /* "src/main/resources/Java_16_Grammar.y":518 */ { yyval = null; }; break; case 106: /* ClassBody: LBRACE ClassBodyDeclarationSeq RBRACE */ if (yyn == 106) - /* "src/main/resources/Java_16_Grammar.y":518 */ + /* "src/main/resources/Java_16_Grammar.y":519 */ { yyval = ((Declarations)(yystack.valueAt (1))); }; break; case 107: /* ClassBodyDeclarationSeq: ClassBodyDeclaration */ if (yyn == 107) - /* "src/main/resources/Java_16_Grammar.y":522 */ + /* "src/main/resources/Java_16_Grammar.y":523 */ { yyval = new Declarations(((tree.Declaration.Declaration)(yystack.valueAt (0)))); }; break; case 108: /* ClassBodyDeclarationSeq: ClassBodyDeclarationSeq ClassBodyDeclaration */ if (yyn == 108) - /* "src/main/resources/Java_16_Grammar.y":523 */ + /* "src/main/resources/Java_16_Grammar.y":524 */ { yyval = ((Declarations)(yystack.valueAt (1))).add(((tree.Declaration.Declaration)(yystack.valueAt (0)))); }; break; case 109: /* ClassBodyDeclaration: ModifierSeqOpt PureBodyDeclaration */ if (yyn == 109) - /* "src/main/resources/Java_16_Grammar.y":527 */ + /* "src/main/resources/Java_16_Grammar.y":528 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1)))); }; break; case 110: /* ClassBodyDeclaration: Block */ if (yyn == 110) - /* "src/main/resources/Java_16_Grammar.y":528 */ + /* "src/main/resources/Java_16_Grammar.y":529 */ { yyval = new ClassInitializer(((tree.Statement.Block)(yystack.valueAt (0))),false); }; break; case 111: /* ClassBodyDeclaration: STATIC Block */ if (yyn == 111) - /* "src/main/resources/Java_16_Grammar.y":529 */ + /* "src/main/resources/Java_16_Grammar.y":530 */ { yyval = new ClassInitializer(((tree.Statement.Block)(yystack.valueAt (0))),true); }; break; case 112: /* ClassBodyDeclaration: SEMICOLON */ if (yyn == 112) - /* "src/main/resources/Java_16_Grammar.y":530 */ + /* "src/main/resources/Java_16_Grammar.y":531 */ { yyval = null; }; break; case 113: /* PureBodyDeclaration: FieldDeclaration */ if (yyn == 113) - /* "src/main/resources/Java_16_Grammar.y":534 */ + /* "src/main/resources/Java_16_Grammar.y":535 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; case 114: /* PureBodyDeclaration: MethodDeclaration */ if (yyn == 114) - /* "src/main/resources/Java_16_Grammar.y":535 */ + /* "src/main/resources/Java_16_Grammar.y":536 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; case 115: /* PureBodyDeclaration: ClassDeclaration */ if (yyn == 115) - /* "src/main/resources/Java_16_Grammar.y":536 */ + /* "src/main/resources/Java_16_Grammar.y":537 */ { yyval = ((ClassDeclaration)(yystack.valueAt (0))); }; break; case 116: /* PureBodyDeclaration: InterfaceDeclaration */ if (yyn == 116) - /* "src/main/resources/Java_16_Grammar.y":537 */ + /* "src/main/resources/Java_16_Grammar.y":538 */ { yyval = ((InterfaceDeclaration)(yystack.valueAt (0))); }; break; case 117: /* PureBodyDeclaration: ConstructorDeclaration */ if (yyn == 117) - /* "src/main/resources/Java_16_Grammar.y":538 */ + /* "src/main/resources/Java_16_Grammar.y":539 */ { yyval = ((ConstructorDeclaration)(yystack.valueAt (0))); }; break; case 118: /* ConstructorDeclaration: ConstructorDeclarator ThrowsOpt ConstructorBody */ if (yyn == 118) - /* "src/main/resources/Java_16_Grammar.y":545 */ + /* "src/main/resources/Java_16_Grammar.y":546 */ { yyval = new ConstructorDeclaration(null,((ConstructorDeclarator)(yystack.valueAt (2))).typeParameters,((ConstructorDeclarator)(yystack.valueAt (2))).formalParameters, ((tree.Type.TypeList)(yystack.valueAt (1))),((ConstructorBody)(yystack.valueAt (0))).invocation,((ConstructorBody)(yystack.valueAt (0))).block); }; break; @@ -1997,56 +1980,56 @@ private int yyaction(int yyn, YYStack yystack, int yylen) case 119: /* ConstructorDeclarator: TypeParametersOpt IDENTIFIER LPAREN FormalParameterList RPAREN */ if (yyn == 119) - /* "src/main/resources/Java_16_Grammar.y":551 */ + /* "src/main/resources/Java_16_Grammar.y":552 */ { yyval = new ConstructorDeclarator(((TypeParameters)(yystack.valueAt (4))),((ParameterDeclarations)(yystack.valueAt (1)))); }; break; case 120: /* ConstructorBody: LBRACE RBRACE */ if (yyn == 120) - /* "src/main/resources/Java_16_Grammar.y":555 */ + /* "src/main/resources/Java_16_Grammar.y":556 */ { yyval = new ConstructorBody(null,null); }; break; case 121: /* ConstructorBody: LBRACE ExplicitConstructorInvocation RBRACE */ if (yyn == 121) - /* "src/main/resources/Java_16_Grammar.y":556 */ + /* "src/main/resources/Java_16_Grammar.y":557 */ { yyval = new ConstructorBody(((ExplicitConstructorInvocation)(yystack.valueAt (1))),null); }; break; case 122: /* ConstructorBody: LBRACE BlockStatementSeq RBRACE */ if (yyn == 122) - /* "src/main/resources/Java_16_Grammar.y":557 */ + /* "src/main/resources/Java_16_Grammar.y":558 */ { yyval = new ConstructorBody(null,new Block(null,((tree.Statement.BlockStatements)(yystack.valueAt (1))))); }; break; case 123: /* ConstructorBody: LBRACE ExplicitConstructorInvocation BlockStatementSeq RBRACE */ if (yyn == 123) - /* "src/main/resources/Java_16_Grammar.y":558 */ + /* "src/main/resources/Java_16_Grammar.y":559 */ { yyval = new ConstructorBody(((ExplicitConstructorInvocation)(yystack.valueAt (2))),new Block(null,((tree.Statement.BlockStatements)(yystack.valueAt (1))))); }; break; case 124: /* ExplicitConstructorInvocation: TypeArgumentsOpt THIS Arguments SEMICOLON */ if (yyn == 124) - /* "src/main/resources/Java_16_Grammar.y":562 */ + /* "src/main/resources/Java_16_Grammar.y":563 */ { yyval = new ExplicitConstructorInvocation(null,((tree.Type.TypeArguments)(yystack.valueAt (3))),false,((tree.Expression.ArgumentList)(yystack.valueAt (1)))); }; break; case 125: /* ExplicitConstructorInvocation: TypeArgumentsOpt SUPER Arguments SEMICOLON */ if (yyn == 125) - /* "src/main/resources/Java_16_Grammar.y":563 */ + /* "src/main/resources/Java_16_Grammar.y":564 */ { yyval = new ExplicitConstructorInvocation(null,((tree.Type.TypeArguments)(yystack.valueAt (3))),true,((tree.Expression.ArgumentList)(yystack.valueAt (1)))); }; break; case 126: /* ExplicitConstructorInvocation: CompoundName DOT TypeArgumentsOpt SUPER Arguments SEMICOLON */ if (yyn == 126) - /* "src/main/resources/Java_16_Grammar.y":564 */ + /* "src/main/resources/Java_16_Grammar.y":565 */ { Expression expr = new SimpleReference(((CompoundName)(yystack.valueAt (5)))); yyval = new ExplicitConstructorInvocation(expr,((tree.Type.TypeArguments)(yystack.valueAt (3))),true,((tree.Expression.ArgumentList)(yystack.valueAt (1)))); }; break; @@ -2054,1226 +2037,1229 @@ private int yyaction(int yyn, YYStack yystack, int yylen) case 127: /* ExplicitConstructorInvocation: Primary DOT TypeArgumentsOpt SUPER Arguments SEMICOLON */ if (yyn == 127) - /* "src/main/resources/Java_16_Grammar.y":566 */ + /* "src/main/resources/Java_16_Grammar.y":567 */ { yyval = new ExplicitConstructorInvocation(((tree.Expression.Expression)(yystack.valueAt (5))),((tree.Type.TypeArguments)(yystack.valueAt (3))),true,((tree.Expression.ArgumentList)(yystack.valueAt (1)))); }; break; case 128: /* EnumDeclaration: ENUM IDENTIFIER ClassImplementsOpt EnumBody */ if (yyn == 128) - /* "src/main/resources/Java_16_Grammar.y":572 */ + /* "src/main/resources/Java_16_Grammar.y":573 */ { yyval = null; }; break; case 139: /* RecordDeclaration: RECORD IDENTIFIER TypeParametersOpt RecordHeader ClassImplementsOpt RecordBody */ if (yyn == 139) - /* "src/main/resources/Java_16_Grammar.y":600 */ + /* "src/main/resources/Java_16_Grammar.y":601 */ { yyval = null; }; break; case 152: /* FieldDeclaration: UnannotatedType VariableDeclaratorList SEMICOLON */ if (yyn == 152) - /* "src/main/resources/Java_16_Grammar.y":636 */ + /* "src/main/resources/Java_16_Grammar.y":637 */ { yyval = new TypeAndDeclarators(((tree.Type.UnannotatedType)(yystack.valueAt (2))),((VariableDeclarators)(yystack.valueAt (1)))); }; break; case 153: /* VariableDeclaratorList: VariableDeclarator */ if (yyn == 153) - /* "src/main/resources/Java_16_Grammar.y":640 */ + /* "src/main/resources/Java_16_Grammar.y":641 */ { yyval = new VariableDeclarators(((VariableDeclarator)(yystack.valueAt (0)))); }; break; case 154: /* VariableDeclaratorList: VariableDeclaratorList COMMA VariableDeclarator */ if (yyn == 154) - /* "src/main/resources/Java_16_Grammar.y":641 */ + /* "src/main/resources/Java_16_Grammar.y":642 */ { yyval = ((VariableDeclarators)(yystack.valueAt (2))).add(((VariableDeclarator)(yystack.valueAt (0)))); }; break; case 155: /* VariableDeclarator: IDENTIFIER */ if (yyn == 155) - /* "src/main/resources/Java_16_Grammar.y":645 */ + /* "src/main/resources/Java_16_Grammar.y":646 */ { yyval = new VariableDeclarator(((Token)(yystack.valueAt (0))),null,null); }; break; case 156: /* VariableDeclarator: IDENTIFIER EQUAL Expression */ if (yyn == 156) - /* "src/main/resources/Java_16_Grammar.y":646 */ + /* "src/main/resources/Java_16_Grammar.y":647 */ { yyval = new VariableDeclarator(((Token)(yystack.valueAt (2))),null,new InitializerSimple(((tree.Expression.Expression)(yystack.valueAt (0))))); }; break; case 157: /* VariableDeclarator: IDENTIFIER Dims */ if (yyn == 157) - /* "src/main/resources/Java_16_Grammar.y":647 */ + /* "src/main/resources/Java_16_Grammar.y":648 */ { yyval = new VariableDeclarator(((Token)(yystack.valueAt (1))),((Dims)(yystack.valueAt (0))),null); }; break; case 158: /* VariableDeclarator: IDENTIFIER Dims EQUAL ArrayInitializer */ if (yyn == 158) - /* "src/main/resources/Java_16_Grammar.y":648 */ + /* "src/main/resources/Java_16_Grammar.y":649 */ { yyval = new VariableDeclarator(((Token)(yystack.valueAt (3))),((Dims)(yystack.valueAt (2))),((InitializerArray)(yystack.valueAt (0)))); }; break; case 159: /* ArrayInitializer: LBRACE VariableInitializerListOpt RBRACE */ if (yyn == 159) - /* "src/main/resources/Java_16_Grammar.y":652 */ + /* "src/main/resources/Java_16_Grammar.y":653 */ { yyval = ((InitializerArray)(yystack.valueAt (1))); }; break; case 160: /* ArrayInitializer: LBRACE VariableInitializerListOpt COMMA RBRACE */ if (yyn == 160) - /* "src/main/resources/Java_16_Grammar.y":653 */ + /* "src/main/resources/Java_16_Grammar.y":654 */ { yyval = ((InitializerArray)(yystack.valueAt (2))); }; break; case 161: /* VariableInitializerListOpt: %empty */ if (yyn == 161) - /* "src/main/resources/Java_16_Grammar.y":657 */ + /* "src/main/resources/Java_16_Grammar.y":658 */ { yyval = null; }; break; case 162: /* VariableInitializerListOpt: VariableInitializerList */ if (yyn == 162) - /* "src/main/resources/Java_16_Grammar.y":658 */ + /* "src/main/resources/Java_16_Grammar.y":659 */ { yyval = ((InitializerArray)(yystack.valueAt (0))); }; break; case 163: /* VariableInitializerList: VariableInitializer */ if (yyn == 163) - /* "src/main/resources/Java_16_Grammar.y":662 */ + /* "src/main/resources/Java_16_Grammar.y":663 */ { yyval = new InitializerArray(((InitializerSimple)(yystack.valueAt (0)))); }; break; case 164: /* VariableInitializerList: VariableInitializerList COMMA VariableInitializer */ if (yyn == 164) - /* "src/main/resources/Java_16_Grammar.y":663 */ + /* "src/main/resources/Java_16_Grammar.y":664 */ { yyval = ((InitializerArray)(yystack.valueAt (2))).add(((InitializerSimple)(yystack.valueAt (0)))); }; break; case 165: /* VariableInitializer: Expression */ if (yyn == 165) - /* "src/main/resources/Java_16_Grammar.y":667 */ + /* "src/main/resources/Java_16_Grammar.y":668 */ { yyval = new InitializerSimple(((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 166: /* VariableInitializer: ArrayInitializer */ if (yyn == 166) - /* "src/main/resources/Java_16_Grammar.y":668 */ + /* "src/main/resources/Java_16_Grammar.y":669 */ { yyval = ((InitializerArray)(yystack.valueAt (0))); }; break; case 167: /* MethodDeclaration: MethodHeader MethodBody */ if (yyn == 167) - /* "src/main/resources/Java_16_Grammar.y":674 */ + /* "src/main/resources/Java_16_Grammar.y":675 */ { yyval = new MethodDeclaration(((MethodHeader)(yystack.valueAt (1))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 168: /* MethodHeader: TypeParameters Type MethodDeclarator ThrowsOpt */ if (yyn == 168) - /* "src/main/resources/Java_16_Grammar.y":684 */ + /* "src/main/resources/Java_16_Grammar.y":685 */ { yyval = new MethodHeader(((TypeParameters)(yystack.valueAt (3))),((tree.Type.Type)(yystack.valueAt (2))),((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 169: /* MethodHeader: TypeParameters AnnotationSeq VOID MethodDeclarator ThrowsOpt */ if (yyn == 169) - /* "src/main/resources/Java_16_Grammar.y":685 */ + /* "src/main/resources/Java_16_Grammar.y":686 */ { yyval = new MethodHeader(((TypeParameters)(yystack.valueAt (4))),null,((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 170: /* MethodHeader: TypeParameters UnannotatedType MethodDeclarator ThrowsOpt */ if (yyn == 170) - /* "src/main/resources/Java_16_Grammar.y":686 */ + /* "src/main/resources/Java_16_Grammar.y":687 */ { yyval = new MethodHeader(((TypeParameters)(yystack.valueAt (3))),((tree.Type.UnannotatedType)(yystack.valueAt (2))),((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 171: /* MethodHeader: TypeParameters VOID MethodDeclarator ThrowsOpt */ if (yyn == 171) - /* "src/main/resources/Java_16_Grammar.y":687 */ + /* "src/main/resources/Java_16_Grammar.y":688 */ { yyval = new MethodHeader(((TypeParameters)(yystack.valueAt (3))),null,((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 172: /* MethodHeader: UnannotatedType MethodDeclarator ThrowsOpt */ if (yyn == 172) - /* "src/main/resources/Java_16_Grammar.y":688 */ + /* "src/main/resources/Java_16_Grammar.y":689 */ { yyval = new MethodHeader(null,((tree.Type.UnannotatedType)(yystack.valueAt (2))),((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 173: /* MethodHeader: VOID MethodDeclarator ThrowsOpt */ if (yyn == 173) - /* "src/main/resources/Java_16_Grammar.y":689 */ + /* "src/main/resources/Java_16_Grammar.y":690 */ { yyval = new MethodHeader(null,null,((MethodDeclarator)(yystack.valueAt (1))),((tree.Type.TypeList)(yystack.valueAt (0)))); }; break; case 174: /* MethodDeclarator: IDENTIFIER LPAREN RPAREN DimsOpt */ if (yyn == 174) - /* "src/main/resources/Java_16_Grammar.y":698 */ + /* "src/main/resources/Java_16_Grammar.y":699 */ { yyval = new MethodDeclarator(((Token)(yystack.valueAt (3))),null,((Dims)(yystack.valueAt (0)))); }; break; case 175: /* MethodDeclarator: IDENTIFIER LPAREN FormalParameterList RPAREN DimsOpt */ if (yyn == 175) - /* "src/main/resources/Java_16_Grammar.y":699 */ + /* "src/main/resources/Java_16_Grammar.y":700 */ { yyval = new MethodDeclarator(((Token)(yystack.valueAt (4))),((ParameterDeclarations)(yystack.valueAt (2))),((Dims)(yystack.valueAt (0)))); }; break; case 176: /* FormalParameterList: FormalParameter */ if (yyn == 176) - /* "src/main/resources/Java_16_Grammar.y":713 */ + /* "src/main/resources/Java_16_Grammar.y":714 */ { yyval = new ParameterDeclarations(((ParameterDeclaration)(yystack.valueAt (0)))); }; break; case 177: /* FormalParameterList: FormalParameterList COMMA FormalParameter */ if (yyn == 177) - /* "src/main/resources/Java_16_Grammar.y":714 */ + /* "src/main/resources/Java_16_Grammar.y":715 */ { yyval = ((ParameterDeclarations)(yystack.valueAt (2))).add(((ParameterDeclaration)(yystack.valueAt (0))));}; break; case 178: /* FormalParameter: ModifierSeq UnannotatedType FormalParameterTail */ if (yyn == 178) - /* "src/main/resources/Java_16_Grammar.y":718 */ + /* "src/main/resources/Java_16_Grammar.y":719 */ { yyval = ParameterDeclaration.create(((Modifiers)(yystack.valueAt (2))),((tree.Type.UnannotatedType)(yystack.valueAt (1))),((ParameterTail)(yystack.valueAt (0)))); }; break; case 179: /* FormalParameter: UnannotatedType FormalParameterTail */ if (yyn == 179) - /* "src/main/resources/Java_16_Grammar.y":719 */ + /* "src/main/resources/Java_16_Grammar.y":720 */ { yyval = ParameterDeclaration.create(null,((tree.Type.UnannotatedType)(yystack.valueAt (1))),((ParameterTail)(yystack.valueAt (0)))); }; break; case 180: /* FormalParameterTail: IDENTIFIER DimsOpt */ if (yyn == 180) - /* "src/main/resources/Java_16_Grammar.y":723 */ + /* "src/main/resources/Java_16_Grammar.y":724 */ { yyval = new ParameterTail(null,((Token)(yystack.valueAt (1))),((Dims)(yystack.valueAt (0))),false,false); }; break; case 181: /* FormalParameterTail: AnnotationSeqOpt ELLIPSIS IDENTIFIER */ if (yyn == 181) - /* "src/main/resources/Java_16_Grammar.y":724 */ + /* "src/main/resources/Java_16_Grammar.y":725 */ { yyval = new ParameterTail(((Annotations)(yystack.valueAt (2))),((Token)(yystack.valueAt (0))),null,true,false); }; break; case 182: /* FormalParameterTail: THIS */ if (yyn == 182) - /* "src/main/resources/Java_16_Grammar.y":725 */ + /* "src/main/resources/Java_16_Grammar.y":726 */ { yyval = new ParameterTail(null,null,null,false,true); }; break; case 183: /* FormalParameterTail: IDENTIFIER DOT THIS */ if (yyn == 183) - /* "src/main/resources/Java_16_Grammar.y":726 */ + /* "src/main/resources/Java_16_Grammar.y":727 */ { yyval = new ParameterTail(null,((Token)(yystack.valueAt (2))),null,false,true); }; break; case 184: /* ThrowsOpt: %empty */ if (yyn == 184) - /* "src/main/resources/Java_16_Grammar.y":738 */ + /* "src/main/resources/Java_16_Grammar.y":739 */ { yyval = null; }; break; case 185: /* ThrowsOpt: THROWS ClassTypeList1 */ if (yyn == 185) - /* "src/main/resources/Java_16_Grammar.y":739 */ + /* "src/main/resources/Java_16_Grammar.y":740 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (0))); }; break; case 186: /* MethodBody: Block */ if (yyn == 186) - /* "src/main/resources/Java_16_Grammar.y":743 */ + /* "src/main/resources/Java_16_Grammar.y":744 */ { yyval = ((tree.Statement.Block)(yystack.valueAt (0))); }; break; case 187: /* MethodBody: SEMICOLON */ if (yyn == 187) - /* "src/main/resources/Java_16_Grammar.y":744 */ + /* "src/main/resources/Java_16_Grammar.y":745 */ { yyval = null; }; break; case 188: /* DimsOpt: %empty */ if (yyn == 188) - /* "src/main/resources/Java_16_Grammar.y":750 */ + /* "src/main/resources/Java_16_Grammar.y":751 */ { yyval = null; }; break; case 189: /* DimsOpt: Dims */ if (yyn == 189) - /* "src/main/resources/Java_16_Grammar.y":751 */ + /* "src/main/resources/Java_16_Grammar.y":752 */ { yyval = ((Dims)(yystack.valueAt (0))); }; break; case 190: /* Dims: Dim */ if (yyn == 190) - /* "src/main/resources/Java_16_Grammar.y":755 */ + /* "src/main/resources/Java_16_Grammar.y":756 */ { yyval = new Dims(((Dim)(yystack.valueAt (0)))); }; break; case 191: /* Dims: Dims Dim */ if (yyn == 191) - /* "src/main/resources/Java_16_Grammar.y":756 */ + /* "src/main/resources/Java_16_Grammar.y":757 */ { yyval = ((Dims)(yystack.valueAt (1))).add(((Dim)(yystack.valueAt (0)))); }; break; case 192: /* Dim: AnnotationSeq LBRACKET RBRACKET */ if (yyn == 192) - /* "src/main/resources/Java_16_Grammar.y":760 */ + /* "src/main/resources/Java_16_Grammar.y":761 */ { yyval = new Dim(((Annotations)(yystack.valueAt (2)))); }; break; case 193: /* Dim: LBRACKET RBRACKET */ if (yyn == 193) - /* "src/main/resources/Java_16_Grammar.y":761 */ + /* "src/main/resources/Java_16_Grammar.y":762 */ { yyval = new Dim(null); }; break; case 194: /* InterfaceDeclaration: NormalInterfaceDeclaration */ if (yyn == 194) - /* "src/main/resources/Java_16_Grammar.y":767 */ + /* "src/main/resources/Java_16_Grammar.y":768 */ { yyval = ((InterfaceDeclaration)(yystack.valueAt (0))); }; break; case 195: /* InterfaceDeclaration: AnnotationInterfaceDeclaration */ if (yyn == 195) - /* "src/main/resources/Java_16_Grammar.y":768 */ + /* "src/main/resources/Java_16_Grammar.y":769 */ { yyval = null; }; break; case 196: /* NormalInterfaceDeclaration: INTERFACE IDENTIFIER TypeParametersOpt InterfaceExtendsOpt InterfaceBody */ if (yyn == 196) - /* "src/main/resources/Java_16_Grammar.y":773 */ + /* "src/main/resources/Java_16_Grammar.y":774 */ { yyval = new NormalInterfaceDeclaration(((Token)(yystack.valueAt (3))),((TypeParameters)(yystack.valueAt (2))),((tree.Type.TypeList)(yystack.valueAt (1))),((Declarations)(yystack.valueAt (0)))); }; break; case 197: /* InterfaceExtendsOpt: %empty */ if (yyn == 197) - /* "src/main/resources/Java_16_Grammar.y":777 */ + /* "src/main/resources/Java_16_Grammar.y":778 */ { yyval = null; }; break; case 198: /* InterfaceExtendsOpt: InterfaceExtends */ if (yyn == 198) - /* "src/main/resources/Java_16_Grammar.y":778 */ + /* "src/main/resources/Java_16_Grammar.y":779 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (0))); }; break; case 199: /* InterfaceExtends: EXTENDS Type */ if (yyn == 199) - /* "src/main/resources/Java_16_Grammar.y":782 */ + /* "src/main/resources/Java_16_Grammar.y":783 */ { yyval = new TypeList(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 200: /* InterfaceExtends: InterfaceExtends COMMA Type */ if (yyn == 200) - /* "src/main/resources/Java_16_Grammar.y":783 */ + /* "src/main/resources/Java_16_Grammar.y":784 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (2))).add(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 201: /* InterfaceBody: LBRACE RBRACE */ if (yyn == 201) - /* "src/main/resources/Java_16_Grammar.y":787 */ + /* "src/main/resources/Java_16_Grammar.y":788 */ { yyval = null; }; break; case 202: /* InterfaceBody: LBRACE InterfaceMemberDeclarationSeq RBRACE */ if (yyn == 202) - /* "src/main/resources/Java_16_Grammar.y":788 */ + /* "src/main/resources/Java_16_Grammar.y":789 */ { yyval = ((Declarations)(yystack.valueAt (1))); }; break; case 203: /* InterfaceMemberDeclarationSeq: ModifierSeqOpt InterfaceMemberDeclaration */ if (yyn == 203) - /* "src/main/resources/Java_16_Grammar.y":792 */ + /* "src/main/resources/Java_16_Grammar.y":793 */ { yyval = new Declarations(((tree.Declaration.Declaration)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1))))); }; break; case 204: /* InterfaceMemberDeclarationSeq: InterfaceMemberDeclarationSeq ModifierSeqOpt InterfaceMemberDeclaration */ if (yyn == 204) - /* "src/main/resources/Java_16_Grammar.y":793 */ + /* "src/main/resources/Java_16_Grammar.y":794 */ { yyval = ((Declarations)(yystack.valueAt (2))).add(((tree.Declaration.Declaration)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1))))); }; break; case 205: /* InterfaceMemberDeclaration: ConstantDeclaration */ if (yyn == 205) - /* "src/main/resources/Java_16_Grammar.y":797 */ + /* "src/main/resources/Java_16_Grammar.y":798 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; case 206: /* InterfaceMemberDeclaration: InterfaceMethodDeclaration */ if (yyn == 206) - /* "src/main/resources/Java_16_Grammar.y":798 */ + /* "src/main/resources/Java_16_Grammar.y":799 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (0))); }; break; case 207: /* InterfaceMemberDeclaration: ClassDeclaration */ if (yyn == 207) - /* "src/main/resources/Java_16_Grammar.y":799 */ + /* "src/main/resources/Java_16_Grammar.y":800 */ { yyval = ((ClassDeclaration)(yystack.valueAt (0))); }; break; case 208: /* InterfaceMemberDeclaration: InterfaceDeclaration */ if (yyn == 208) - /* "src/main/resources/Java_16_Grammar.y":800 */ + /* "src/main/resources/Java_16_Grammar.y":801 */ { yyval = ((InterfaceDeclaration)(yystack.valueAt (0))); }; break; case 209: /* ConstantDeclaration: Type VariableDeclaratorList SEMICOLON */ if (yyn == 209) - /* "src/main/resources/Java_16_Grammar.y":804 */ + /* "src/main/resources/Java_16_Grammar.y":805 */ { yyval = new TypeAndDeclarators(((tree.Type.Type)(yystack.valueAt (2))),((VariableDeclarators)(yystack.valueAt (1)))); }; break; case 210: /* InterfaceMethodDeclaration: MethodHeader MethodBody */ if (yyn == 210) - /* "src/main/resources/Java_16_Grammar.y":808 */ + /* "src/main/resources/Java_16_Grammar.y":809 */ { yyval = null; }; break; case 211: /* AnnotationInterfaceDeclaration: AT INTERFACE IDENTIFIER AnnotationInterfaceBody */ if (yyn == 211) - /* "src/main/resources/Java_16_Grammar.y":812 */ + /* "src/main/resources/Java_16_Grammar.y":813 */ { yyval = null; }; break; case 223: /* Block: LBRACE RBRACE */ if (yyn == 223) - /* "src/main/resources/Java_16_Grammar.y":844 */ + /* "src/main/resources/Java_16_Grammar.y":845 */ { yyval = null; }; break; case 224: /* Block: LBRACE BlockStatementSeq RBRACE */ if (yyn == 224) - /* "src/main/resources/Java_16_Grammar.y":845 */ + /* "src/main/resources/Java_16_Grammar.y":846 */ { yyval = new Block(null,((tree.Statement.BlockStatements)(yystack.valueAt (1)))); }; break; case 225: /* BlockStatementSeq: BlockStatement */ if (yyn == 225) - /* "src/main/resources/Java_16_Grammar.y":849 */ + /* "src/main/resources/Java_16_Grammar.y":850 */ { yyval = new BlockStatements(((tree.Statement.BlockStatement)(yystack.valueAt (0)))); }; break; case 226: /* BlockStatementSeq: BlockStatementSeq BlockStatement */ if (yyn == 226) - /* "src/main/resources/Java_16_Grammar.y":850 */ + /* "src/main/resources/Java_16_Grammar.y":851 */ { yyval = ((tree.Statement.BlockStatements)(yystack.valueAt (1))).add(((tree.Statement.BlockStatement)(yystack.valueAt (0)))); }; break; case 227: /* BlockStatement: ModifierSeqOpt BlockDeclaration */ if (yyn == 227) - /* "src/main/resources/Java_16_Grammar.y":854 */ + /* "src/main/resources/Java_16_Grammar.y":855 */ { yyval = new BlockStatement(((tree.Declaration.Declaration)(yystack.valueAt (0))).addModifiers(((Modifiers)(yystack.valueAt (1))))); }; break; case 228: /* BlockStatement: Statement */ if (yyn == 228) - /* "src/main/resources/Java_16_Grammar.y":855 */ + /* "src/main/resources/Java_16_Grammar.y":856 */ { yyval = new BlockStatement(((tree.Statement.Statement)(yystack.valueAt (0)))); }; break; case 229: /* BlockDeclaration: ClassDeclaration */ if (yyn == 229) - /* "src/main/resources/Java_16_Grammar.y":859 */ + /* "src/main/resources/Java_16_Grammar.y":860 */ { yyval = ((ClassDeclaration)(yystack.valueAt (0))); }; break; case 230: /* BlockDeclaration: NormalInterfaceDeclaration */ if (yyn == 230) - /* "src/main/resources/Java_16_Grammar.y":860 */ + /* "src/main/resources/Java_16_Grammar.y":861 */ { yyval = ((InterfaceDeclaration)(yystack.valueAt (0))); }; break; case 231: /* BlockDeclaration: LocalVariableDeclaration SEMICOLON */ if (yyn == 231) - /* "src/main/resources/Java_16_Grammar.y":861 */ + /* "src/main/resources/Java_16_Grammar.y":862 */ { yyval = ((tree.Declaration.Declaration)(yystack.valueAt (1))); }; break; case 232: /* LocalVariableDeclaration: UnannotatedType VariableDeclaratorList */ if (yyn == 232) - /* "src/main/resources/Java_16_Grammar.y":865 */ + /* "src/main/resources/Java_16_Grammar.y":866 */ { yyval = new TypeAndDeclarators(((tree.Type.UnannotatedType)(yystack.valueAt (1))),((VariableDeclarators)(yystack.valueAt (0)))); }; break; case 233: /* LocalVariableDeclaration: VAR VariableDeclaratorList */ if (yyn == 233) - /* "src/main/resources/Java_16_Grammar.y":866 */ + /* "src/main/resources/Java_16_Grammar.y":867 */ { yyval = new TypeAndDeclarators(null,((VariableDeclarators)(yystack.valueAt (0)))); }; break; case 239: /* SimpleStatement: Block */ if (yyn == 239) - /* "src/main/resources/Java_16_Grammar.y":878 */ + /* "src/main/resources/Java_16_Grammar.y":879 */ { yyval = ((tree.Statement.Block)(yystack.valueAt (0))); }; break; case 240: /* SimpleStatement: SEMICOLON */ if (yyn == 240) - /* "src/main/resources/Java_16_Grammar.y":879 */ + /* "src/main/resources/Java_16_Grammar.y":880 */ { yyval = null; }; break; case 241: /* SimpleStatement: StatementExpression SEMICOLON */ if (yyn == 241) - /* "src/main/resources/Java_16_Grammar.y":880 */ + /* "src/main/resources/Java_16_Grammar.y":881 */ { yyval = ((StatementExpression)(yystack.valueAt (1))); }; break; case 242: /* SimpleStatement: ASSERT Expression SEMICOLON */ if (yyn == 242) - /* "src/main/resources/Java_16_Grammar.y":882 */ + /* "src/main/resources/Java_16_Grammar.y":883 */ { yyval = new Assert(null,((tree.Expression.Expression)(yystack.valueAt (1))),null); }; break; case 243: /* SimpleStatement: ASSERT Expression COLON Expression SEMICOLON */ if (yyn == 243) - /* "src/main/resources/Java_16_Grammar.y":883 */ + /* "src/main/resources/Java_16_Grammar.y":884 */ { yyval = new Assert(null,((tree.Expression.Expression)(yystack.valueAt (3))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 244: /* SimpleStatement: SWITCH LPAREN Expression RPAREN SwitchBlock */ if (yyn == 244) - /* "src/main/resources/Java_16_Grammar.y":885 */ + /* "src/main/resources/Java_16_Grammar.y":886 */ { yyval = null; }; break; case 245: /* SimpleStatement: DO Statement WHILE LPAREN Expression RPAREN SEMICOLON */ if (yyn == 245) - /* "src/main/resources/Java_16_Grammar.y":886 */ + /* "src/main/resources/Java_16_Grammar.y":887 */ { yyval = new Do(null,((tree.Statement.Statement)(yystack.valueAt (5))),((tree.Expression.Expression)(yystack.valueAt (2)))); }; break; case 246: /* SimpleStatement: BREAK SEMICOLON */ if (yyn == 246) - /* "src/main/resources/Java_16_Grammar.y":888 */ + /* "src/main/resources/Java_16_Grammar.y":889 */ { yyval = new Break(null,null); }; break; case 247: /* SimpleStatement: BREAK IDENTIFIER SEMICOLON */ if (yyn == 247) - /* "src/main/resources/Java_16_Grammar.y":889 */ + /* "src/main/resources/Java_16_Grammar.y":890 */ { yyval = new Break(null,((Token)(yystack.valueAt (1)))); }; break; case 248: /* SimpleStatement: CONTINUE SEMICOLON */ if (yyn == 248) - /* "src/main/resources/Java_16_Grammar.y":891 */ + /* "src/main/resources/Java_16_Grammar.y":892 */ { yyval = new Continue(null,null); }; break; case 249: /* SimpleStatement: CONTINUE IDENTIFIER SEMICOLON */ if (yyn == 249) - /* "src/main/resources/Java_16_Grammar.y":892 */ + /* "src/main/resources/Java_16_Grammar.y":893 */ { yyval = new Continue(null,((Token)(yystack.valueAt (1)))); }; break; case 250: /* SimpleStatement: RETURN SEMICOLON */ if (yyn == 250) - /* "src/main/resources/Java_16_Grammar.y":894 */ + /* "src/main/resources/Java_16_Grammar.y":895 */ { yyval = new Return(null,null); }; break; case 251: /* SimpleStatement: RETURN Expression SEMICOLON */ if (yyn == 251) - /* "src/main/resources/Java_16_Grammar.y":895 */ + /* "src/main/resources/Java_16_Grammar.y":896 */ { yyval = new Return(null,((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 252: /* SimpleStatement: SYNCHRONIZED LPAREN Expression RPAREN Block */ if (yyn == 252) - /* "src/main/resources/Java_16_Grammar.y":897 */ + /* "src/main/resources/Java_16_Grammar.y":898 */ { yyval = new Synchronized(null,((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 253: /* SimpleStatement: THROW Expression SEMICOLON */ if (yyn == 253) - /* "src/main/resources/Java_16_Grammar.y":899 */ + /* "src/main/resources/Java_16_Grammar.y":900 */ { yyval = new Throw(null,((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 254: /* SimpleStatement: YIELD Expression SEMICOLON */ if (yyn == 254) - /* "src/main/resources/Java_16_Grammar.y":900 */ + /* "src/main/resources/Java_16_Grammar.y":901 */ { yyval = new Yield(null,((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 255: /* SimpleStatement: TRY Block Catches */ if (yyn == 255) - /* "src/main/resources/Java_16_Grammar.y":903 */ + /* "src/main/resources/Java_16_Grammar.y":904 */ { yyval = null; }; break; case 256: /* SimpleStatement: TRY Block Catches Finally */ if (yyn == 256) - /* "src/main/resources/Java_16_Grammar.y":904 */ + /* "src/main/resources/Java_16_Grammar.y":905 */ { yyval = null; }; break; case 257: /* SimpleStatement: TRY Block Finally */ if (yyn == 257) - /* "src/main/resources/Java_16_Grammar.y":905 */ + /* "src/main/resources/Java_16_Grammar.y":906 */ { yyval = null; }; break; case 258: /* SimpleStatement: TRY ResourceSpecification Block CatchesOpt FinallyOpt */ if (yyn == 258) - /* "src/main/resources/Java_16_Grammar.y":907 */ + /* "src/main/resources/Java_16_Grammar.y":908 */ { yyval = null; }; break; case 259: /* LabeledStatement: IDENTIFIER COLON Statement */ if (yyn == 259) - /* "src/main/resources/Java_16_Grammar.y":911 */ + /* "src/main/resources/Java_16_Grammar.y":912 */ { yyval = ((tree.Statement.Statement)(yystack.valueAt (0))).addLabel(((Token)(yystack.valueAt (2)))); }; break; case 260: /* StatementExpression: Assignment */ if (yyn == 260) - /* "src/main/resources/Java_16_Grammar.y":915 */ + /* "src/main/resources/Java_16_Grammar.y":916 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 261: /* StatementExpression: PreIncrementExpression */ if (yyn == 261) - /* "src/main/resources/Java_16_Grammar.y":916 */ + /* "src/main/resources/Java_16_Grammar.y":917 */ { yyval = ((UnaryPrefix)(yystack.valueAt (0))); }; break; case 262: /* StatementExpression: PreDecrementExpression */ if (yyn == 262) - /* "src/main/resources/Java_16_Grammar.y":917 */ + /* "src/main/resources/Java_16_Grammar.y":918 */ { yyval = ((UnaryPrefix)(yystack.valueAt (0))); }; break; case 263: /* StatementExpression: PostIncrementExpression */ if (yyn == 263) - /* "src/main/resources/Java_16_Grammar.y":918 */ + /* "src/main/resources/Java_16_Grammar.y":919 */ { yyval = ((UnaryPostfix)(yystack.valueAt (0))); }; break; case 264: /* StatementExpression: PostDecrementExpression */ if (yyn == 264) - /* "src/main/resources/Java_16_Grammar.y":919 */ + /* "src/main/resources/Java_16_Grammar.y":920 */ { yyval = ((UnaryPostfix)(yystack.valueAt (0))); }; break; case 265: /* StatementExpression: MethodInvocation */ if (yyn == 265) - /* "src/main/resources/Java_16_Grammar.y":920 */ + /* "src/main/resources/Java_16_Grammar.y":921 */ { yyval = new StatementExpression(null,((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 266: /* StatementExpression: ClassInstanceCreationExpression */ if (yyn == 266) - /* "src/main/resources/Java_16_Grammar.y":921 */ + /* "src/main/resources/Java_16_Grammar.y":922 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 267: /* IfThenElseStatement: IF LPAREN Expression RPAREN Statement ElsePartOpt */ if (yyn == 267) - /* "src/main/resources/Java_16_Grammar.y":925 */ + /* "src/main/resources/Java_16_Grammar.y":926 */ { yyval = null; }; break; case 268: /* ElsePartOpt: %empty */ if (yyn == 268) - /* "src/main/resources/Java_16_Grammar.y":929 */ + /* "src/main/resources/Java_16_Grammar.y":930 */ { yyval = null; }; break; case 269: /* ElsePartOpt: ELSE Statement */ if (yyn == 269) - /* "src/main/resources/Java_16_Grammar.y":930 */ + /* "src/main/resources/Java_16_Grammar.y":931 */ { yyval = ((tree.Statement.Statement)(yystack.valueAt (0))); }; break; case 270: /* SwitchBlock: LBRACE SwitchRuleSeq RBRACE */ if (yyn == 270) - /* "src/main/resources/Java_16_Grammar.y":934 */ + /* "src/main/resources/Java_16_Grammar.y":935 */ { yyval = null; }; break; case 271: /* SwitchBlock: LBRACE SwitchBlockStatementGroupSeqOpt RBRACE */ if (yyn == 271) - /* "src/main/resources/Java_16_Grammar.y":935 */ + /* "src/main/resources/Java_16_Grammar.y":936 */ { yyval = null; }; break; case 272: /* SwitchBlock: LBRACE SwitchBlockStatementGroupSeqOpt SwitchLabelSeq RBRACE */ if (yyn == 272) - /* "src/main/resources/Java_16_Grammar.y":936 */ + /* "src/main/resources/Java_16_Grammar.y":937 */ { yyval = null; }; break; case 273: /* SwitchRuleSeq: SwitchRule */ if (yyn == 273) - /* "src/main/resources/Java_16_Grammar.y":940 */ + /* "src/main/resources/Java_16_Grammar.y":941 */ { yyval = new SwitchRules(((SwitchRule)(yystack.valueAt (0)))); }; break; case 274: /* SwitchRuleSeq: SwitchRuleSeq SwitchRule */ if (yyn == 274) - /* "src/main/resources/Java_16_Grammar.y":941 */ + /* "src/main/resources/Java_16_Grammar.y":942 */ { yyval = ((SwitchRules)(yystack.valueAt (1))).add(((SwitchRule)(yystack.valueAt (0)))); }; break; case 275: /* SwitchRule: SwitchLabel ARROW Expression SEMICOLON */ if (yyn == 275) - /* "src/main/resources/Java_16_Grammar.y":945 */ + /* "src/main/resources/Java_16_Grammar.y":946 */ { yyval = new SwitchRule(((SwitchLabel)(yystack.valueAt (3))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 276: /* SwitchRule: SwitchLabel ARROW Block */ if (yyn == 276) - /* "src/main/resources/Java_16_Grammar.y":946 */ + /* "src/main/resources/Java_16_Grammar.y":947 */ { yyval = new SwitchRule(((SwitchLabel)(yystack.valueAt (2))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 277: /* SwitchRule: SwitchLabel ARROW THROW Expression SEMICOLON */ if (yyn == 277) - /* "src/main/resources/Java_16_Grammar.y":947 */ + /* "src/main/resources/Java_16_Grammar.y":948 */ { yyval = new SwitchRule(((SwitchLabel)(yystack.valueAt (4))),new Throw(null,((tree.Expression.Expression)(yystack.valueAt (1))))); }; break; case 283: /* SwitchLabelSeq: SwitchLabel COLON */ if (yyn == 283) - /* "src/main/resources/Java_16_Grammar.y":962 */ + /* "src/main/resources/Java_16_Grammar.y":963 */ { yyval = new SwitchLabels(((SwitchLabel)(yystack.valueAt (1)))); }; break; case 284: /* SwitchLabelSeq: SwitchLabelSeq SwitchLabel COLON */ if (yyn == 284) - /* "src/main/resources/Java_16_Grammar.y":963 */ + /* "src/main/resources/Java_16_Grammar.y":964 */ { yyval = ((SwitchLabels)(yystack.valueAt (2))).add(((SwitchLabel)(yystack.valueAt (1)))); }; break; case 285: /* SwitchLabel: CASE CaseExpressionList */ if (yyn == 285) - /* "src/main/resources/Java_16_Grammar.y":967 */ + /* "src/main/resources/Java_16_Grammar.y":968 */ { yyval = ((SwitchLabel)(yystack.valueAt (0))); }; break; case 286: /* SwitchLabel: DEFAULT */ if (yyn == 286) - /* "src/main/resources/Java_16_Grammar.y":968 */ + /* "src/main/resources/Java_16_Grammar.y":969 */ { yyval = null; }; break; case 287: /* CaseExpressionList: AssignmentExpression */ if (yyn == 287) - /* "src/main/resources/Java_16_Grammar.y":972 */ + /* "src/main/resources/Java_16_Grammar.y":973 */ { yyval = new SwitchLabel(((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 288: /* CaseExpressionList: CaseExpressionList COMMA AssignmentExpression */ if (yyn == 288) - /* "src/main/resources/Java_16_Grammar.y":973 */ + /* "src/main/resources/Java_16_Grammar.y":974 */ { yyval = ((SwitchLabel)(yystack.valueAt (2))).add(((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 289: /* WhileStatement: WHILE LPAREN Expression RPAREN Statement */ if (yyn == 289) - /* "src/main/resources/Java_16_Grammar.y":980 */ + /* "src/main/resources/Java_16_Grammar.y":981 */ { yyval = new While(null,((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Statement.Statement)(yystack.valueAt (0)))); }; break; case 290: /* ForStatement: BasicForStatement */ if (yyn == 290) - /* "src/main/resources/Java_16_Grammar.y":984 */ + /* "src/main/resources/Java_16_Grammar.y":985 */ { yyval = ((tree.Statement.Statement)(yystack.valueAt (0))); }; break; case 291: /* ForStatement: EnhancedForStatement */ if (yyn == 291) - /* "src/main/resources/Java_16_Grammar.y":985 */ + /* "src/main/resources/Java_16_Grammar.y":986 */ { yyval = ((tree.Statement.Statement)(yystack.valueAt (0))); }; break; case 292: /* BasicForStatement: FOR LPAREN ForInitOpt SEMICOLON ExpressionOpt SEMICOLON StatementExpressionListOpt RPAREN Statement */ if (yyn == 292) - /* "src/main/resources/Java_16_Grammar.y":990 */ + /* "src/main/resources/Java_16_Grammar.y":991 */ { yyval = null; }; break; case 296: /* ExpressionOpt: %empty */ if (yyn == 296) - /* "src/main/resources/Java_16_Grammar.y":1000 */ + /* "src/main/resources/Java_16_Grammar.y":1001 */ { yyval = null; }; break; case 297: /* ExpressionOpt: Expression */ if (yyn == 297) - /* "src/main/resources/Java_16_Grammar.y":1001 */ + /* "src/main/resources/Java_16_Grammar.y":1002 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 298: /* StatementExpressionList: StatementExpression */ if (yyn == 298) - /* "src/main/resources/Java_16_Grammar.y":1008 */ + /* "src/main/resources/Java_16_Grammar.y":1009 */ { yyval = ((StatementExpression)(yystack.valueAt (0))); }; break; case 299: /* StatementExpressionList: StatementExpressionList COMMA StatementExpression */ if (yyn == 299) - /* "src/main/resources/Java_16_Grammar.y":1009 */ + /* "src/main/resources/Java_16_Grammar.y":1010 */ { yyval = ((StatementExpressions)(yystack.valueAt (2))).add(((StatementExpression)(yystack.valueAt (0)))); }; break; case 300: /* StatementExpressionListOpt: %empty */ if (yyn == 300) - /* "src/main/resources/Java_16_Grammar.y":1013 */ + /* "src/main/resources/Java_16_Grammar.y":1014 */ { yyval = null; }; break; case 301: /* StatementExpressionListOpt: StatementExpressionList */ if (yyn == 301) - /* "src/main/resources/Java_16_Grammar.y":1014 */ + /* "src/main/resources/Java_16_Grammar.y":1015 */ { yyval = ((StatementExpressions)(yystack.valueAt (0))); }; break; case 302: /* EnhancedForStatement: FOR LPAREN LocalVariableDeclaration COLON Expression RPAREN Statement */ if (yyn == 302) - /* "src/main/resources/Java_16_Grammar.y":1018 */ + /* "src/main/resources/Java_16_Grammar.y":1019 */ { yyval = null; }; break; case 303: /* CatchesOpt: %empty */ if (yyn == 303) - /* "src/main/resources/Java_16_Grammar.y":1022 */ + /* "src/main/resources/Java_16_Grammar.y":1023 */ { yyval = null; }; break; case 304: /* CatchesOpt: Catches */ if (yyn == 304) - /* "src/main/resources/Java_16_Grammar.y":1023 */ + /* "src/main/resources/Java_16_Grammar.y":1024 */ { yyval = ((CatchClauses)(yystack.valueAt (0))); }; break; case 305: /* Catches: CatchClause */ if (yyn == 305) - /* "src/main/resources/Java_16_Grammar.y":1027 */ + /* "src/main/resources/Java_16_Grammar.y":1028 */ { yyval = new CatchClauses(((CatchClause)(yystack.valueAt (0)))); }; break; case 306: /* Catches: Catches CatchClause */ if (yyn == 306) - /* "src/main/resources/Java_16_Grammar.y":1028 */ + /* "src/main/resources/Java_16_Grammar.y":1029 */ { yyval = ((CatchClauses)(yystack.valueAt (1))).add(((CatchClause)(yystack.valueAt (0)))); }; break; case 307: /* CatchClause: CATCH LPAREN CatchFormalParameter RPAREN Block */ if (yyn == 307) - /* "src/main/resources/Java_16_Grammar.y":1032 */ + /* "src/main/resources/Java_16_Grammar.y":1033 */ { yyval = new CatchClause(((CatchParameter)(yystack.valueAt (2))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 308: /* CatchFormalParameter: ModifierSeqOpt CatchType IDENTIFIER DimsOpt */ if (yyn == 308) - /* "src/main/resources/Java_16_Grammar.y":1036 */ + /* "src/main/resources/Java_16_Grammar.y":1037 */ { yyval = new CatchParameter(((Modifiers)(yystack.valueAt (3))),((tree.Type.TypeList)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))),((Dims)(yystack.valueAt (0)))); }; break; case 309: /* CatchType: Type */ if (yyn == 309) - /* "src/main/resources/Java_16_Grammar.y":1040 */ + /* "src/main/resources/Java_16_Grammar.y":1041 */ { yyval = new TypeList(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 310: /* CatchType: CatchType VERTICAL Type */ if (yyn == 310) - /* "src/main/resources/Java_16_Grammar.y":1041 */ + /* "src/main/resources/Java_16_Grammar.y":1042 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (2))).add(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 321: /* Primary: Literal */ if (yyn == 321) - /* "src/main/resources/Java_16_Grammar.y":1078 */ + /* "src/main/resources/Java_16_Grammar.y":1079 */ { yyval = new Literal(((Token)(yystack.valueAt (0)))); }; break; case 322: /* Primary: Type DimsOpt DOT CLASS */ if (yyn == 322) - /* "src/main/resources/Java_16_Grammar.y":1079 */ + /* "src/main/resources/Java_16_Grammar.y":1080 */ { yyval = new ClassLiteral(((tree.Type.Type)(yystack.valueAt (3))),((Dims)(yystack.valueAt (2)))); }; break; case 323: /* Primary: VOID DimsOpt DOT CLASS */ if (yyn == 323) - /* "src/main/resources/Java_16_Grammar.y":1080 */ + /* "src/main/resources/Java_16_Grammar.y":1081 */ { yyval = new ClassLiteral(null,((Dims)(yystack.valueAt (2)))); }; break; case 324: /* Primary: THIS */ if (yyn == 324) - /* "src/main/resources/Java_16_Grammar.y":1081 */ + /* "src/main/resources/Java_16_Grammar.y":1082 */ { yyval = new This(null); }; break; case 325: /* Primary: Type DOT THIS */ if (yyn == 325) - /* "src/main/resources/Java_16_Grammar.y":1082 */ + /* "src/main/resources/Java_16_Grammar.y":1083 */ { yyval = new This(((tree.Type.Type)(yystack.valueAt (2)))); }; break; case 326: /* Primary: LPAREN Expression RPAREN */ if (yyn == 326) - /* "src/main/resources/Java_16_Grammar.y":1083 */ + /* "src/main/resources/Java_16_Grammar.y":1084 */ { yyval = new Parenthesized(((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 327: /* Primary: ClassInstanceCreationExpression */ if (yyn == 327) - /* "src/main/resources/Java_16_Grammar.y":1084 */ + /* "src/main/resources/Java_16_Grammar.y":1085 */ { yyval = null; }; break; case 328: /* Primary: FieldAccess */ if (yyn == 328) - /* "src/main/resources/Java_16_Grammar.y":1085 */ + /* "src/main/resources/Java_16_Grammar.y":1086 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 329: /* Primary: ArrayAccess */ if (yyn == 329) - /* "src/main/resources/Java_16_Grammar.y":1086 */ + /* "src/main/resources/Java_16_Grammar.y":1087 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 330: /* Primary: MethodInvocation */ if (yyn == 330) - /* "src/main/resources/Java_16_Grammar.y":1087 */ + /* "src/main/resources/Java_16_Grammar.y":1088 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 331: /* Primary: MethodReference */ if (yyn == 331) - /* "src/main/resources/Java_16_Grammar.y":1088 */ + /* "src/main/resources/Java_16_Grammar.y":1089 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 332: /* Primary: ArrayCreationExpression */ if (yyn == 332) - /* "src/main/resources/Java_16_Grammar.y":1089 */ + /* "src/main/resources/Java_16_Grammar.y":1090 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 333: /* ClassInstanceCreationExpression: UnqualifiedClassInstanceCreationExpression */ if (yyn == 333) - /* "src/main/resources/Java_16_Grammar.y":1099 */ + /* "src/main/resources/Java_16_Grammar.y":1100 */ { yyval = null; }; break; case 334: /* ClassInstanceCreationExpression: CompoundName DOT UnqualifiedClassInstanceCreationExpression */ if (yyn == 334) - /* "src/main/resources/Java_16_Grammar.y":1100 */ + /* "src/main/resources/Java_16_Grammar.y":1101 */ { yyval = null; }; break; case 335: /* ClassInstanceCreationExpression: Primary DOT UnqualifiedClassInstanceCreationExpression */ if (yyn == 335) - /* "src/main/resources/Java_16_Grammar.y":1101 */ + /* "src/main/resources/Java_16_Grammar.y":1102 */ { yyval = null; }; break; case 341: /* TypeArgumentsOpt: %empty */ if (yyn == 341) - /* "src/main/resources/Java_16_Grammar.y":1119 */ + /* "src/main/resources/Java_16_Grammar.y":1120 */ { yyval = null; }; break; case 342: /* TypeArgumentsOpt: TypeArguments */ if (yyn == 342) - /* "src/main/resources/Java_16_Grammar.y":1120 */ + /* "src/main/resources/Java_16_Grammar.y":1121 */ { yyval = ((tree.Type.TypeArguments)(yystack.valueAt (0))); }; break; case 343: /* TypeArguments: LESS TypeArgumentList GREATER */ if (yyn == 343) - /* "src/main/resources/Java_16_Grammar.y":1124 */ + /* "src/main/resources/Java_16_Grammar.y":1125 */ { yyval = ((tree.Type.TypeArguments)(yystack.valueAt (1))); }; break; case 344: /* TypeArgumentList: TypeArgument */ if (yyn == 344) - /* "src/main/resources/Java_16_Grammar.y":1128 */ + /* "src/main/resources/Java_16_Grammar.y":1129 */ { yyval = new TypeArguments(((tree.Type.TypeArgument)(yystack.valueAt (0)))); }; break; case 345: /* TypeArgumentList: TypeArgumentList COMMA TypeArgument */ if (yyn == 345) - /* "src/main/resources/Java_16_Grammar.y":1129 */ + /* "src/main/resources/Java_16_Grammar.y":1130 */ { yyval = ((tree.Type.TypeArguments)(yystack.valueAt (2))).add(((tree.Type.TypeArgument)(yystack.valueAt (0)))); }; break; case 346: /* TypeArgument: Type */ if (yyn == 346) - /* "src/main/resources/Java_16_Grammar.y":1133 */ + /* "src/main/resources/Java_16_Grammar.y":1134 */ { yyval = new TypeArgument(((tree.Type.Type)(yystack.valueAt (0))),0,null); }; break; case 347: /* TypeArgument: QUESTION */ if (yyn == 347) - /* "src/main/resources/Java_16_Grammar.y":1134 */ + /* "src/main/resources/Java_16_Grammar.y":1135 */ { yyval = new TypeArgument(null,1,null); }; break; case 348: /* TypeArgument: QUESTION EXTENDS Type */ if (yyn == 348) - /* "src/main/resources/Java_16_Grammar.y":1135 */ + /* "src/main/resources/Java_16_Grammar.y":1136 */ { yyval = new TypeArgument(((tree.Type.Type)(yystack.valueAt (0))),1,null); }; break; case 349: /* TypeArgument: QUESTION SUPER Type */ if (yyn == 349) - /* "src/main/resources/Java_16_Grammar.y":1136 */ + /* "src/main/resources/Java_16_Grammar.y":1137 */ { yyval = new TypeArgument(((tree.Type.Type)(yystack.valueAt (0))),2,null); }; break; case 350: /* TypeArgument: AnnotationSeq QUESTION */ if (yyn == 350) - /* "src/main/resources/Java_16_Grammar.y":1137 */ + /* "src/main/resources/Java_16_Grammar.y":1138 */ { yyval = new TypeArgument(null,1,((Annotations)(yystack.valueAt (1)))); }; break; case 351: /* TypeArgument: AnnotationSeq QUESTION EXTENDS Type */ if (yyn == 351) - /* "src/main/resources/Java_16_Grammar.y":1138 */ + /* "src/main/resources/Java_16_Grammar.y":1139 */ { yyval = new TypeArgument(((tree.Type.Type)(yystack.valueAt (0))),2,((Annotations)(yystack.valueAt (3)))); }; break; case 352: /* TypeArgument: AnnotationSeq QUESTION SUPER Type */ if (yyn == 352) - /* "src/main/resources/Java_16_Grammar.y":1139 */ + /* "src/main/resources/Java_16_Grammar.y":1140 */ { yyval = new TypeArgument(((tree.Type.Type)(yystack.valueAt (0))),3,((Annotations)(yystack.valueAt (3)))); }; break; case 353: /* FieldAccess: Primary DOT IDENTIFIER */ if (yyn == 353) - /* "src/main/resources/Java_16_Grammar.y":1149 */ + /* "src/main/resources/Java_16_Grammar.y":1150 */ { yyval = new FieldAccess(((tree.Expression.Expression)(yystack.valueAt (2))), false,((Token)(yystack.valueAt (0)))); }; break; case 354: /* FieldAccess: SUPER DOT IDENTIFIER */ if (yyn == 354) - /* "src/main/resources/Java_16_Grammar.y":1150 */ + /* "src/main/resources/Java_16_Grammar.y":1151 */ { yyval = new FieldAccess(null,true, ((Token)(yystack.valueAt (0)))); }; break; case 355: /* FieldAccess: CompoundName DOT SUPER DOT IDENTIFIER */ if (yyn == 355) - /* "src/main/resources/Java_16_Grammar.y":1151 */ + /* "src/main/resources/Java_16_Grammar.y":1152 */ { yyval = new FieldAccess(new SimpleReference(((CompoundName)(yystack.valueAt (4)))),true,((Token)(yystack.valueAt (0)))); }; break; case 356: /* ArrayAccess: CompoundName LBRACKET Expression RBRACKET */ if (yyn == 356) - /* "src/main/resources/Java_16_Grammar.y":1155 */ + /* "src/main/resources/Java_16_Grammar.y":1156 */ { yyval = new ArrayAccess(new SimpleReference(((CompoundName)(yystack.valueAt (3)))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 357: /* ArrayAccess: Primary LBRACKET Expression RBRACKET */ if (yyn == 357) - /* "src/main/resources/Java_16_Grammar.y":1156 */ + /* "src/main/resources/Java_16_Grammar.y":1157 */ { yyval = new ArrayAccess(((tree.Expression.Expression)(yystack.valueAt (3))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 358: /* MethodInvocation: IDENTIFIER Arguments */ if (yyn == 358) - /* "src/main/resources/Java_16_Grammar.y":1160 */ + /* "src/main/resources/Java_16_Grammar.y":1161 */ { yyval = new MethodInvocation(null,false,null,((Token)(yystack.valueAt (1))),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; break; - case 359: /* MethodInvocation: CompoundName DOT TypeArgumentsOpt IDENTIFIER Arguments */ + case 359: /* MethodInvocation: IDENTIFIER DOT TypeArgumentsOpt CompoundName Arguments */ if (yyn == 359) - /* "src/main/resources/Java_16_Grammar.y":1161 */ - { var ref = new SimpleReference(((CompoundName)(yystack.valueAt (4)))); - yyval = new MethodInvocation(ref,false,((tree.Type.TypeArguments)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; + /* "src/main/resources/Java_16_Grammar.y":1162 */ + { var ref = new SimpleReference(new CompoundName(((Token)(yystack.valueAt (4))).image)); + for (String s : ((CompoundName)(yystack.valueAt (1))).names) ref.compoundName.add(s); + ref.compoundName.names.remove(ref.compoundName.names.size() - 1); + yyval = new MethodInvocation(ref,false,((tree.Type.TypeArguments)(yystack.valueAt (2))), + new Token(TokenCode.Identifier, ((CompoundName)(yystack.valueAt (1))).names.get(((CompoundName)(yystack.valueAt (1))).names.size() - 1)),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; break; case 360: /* MethodInvocation: Primary DOT TypeArgumentsOpt IDENTIFIER Arguments */ if (yyn == 360) - /* "src/main/resources/Java_16_Grammar.y":1163 */ + /* "src/main/resources/Java_16_Grammar.y":1167 */ { yyval = new MethodInvocation(((tree.Expression.Expression)(yystack.valueAt (4))),false,((tree.Type.TypeArguments)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; break; case 361: /* MethodInvocation: SUPER DOT TypeArgumentsOpt IDENTIFIER Arguments */ if (yyn == 361) - /* "src/main/resources/Java_16_Grammar.y":1164 */ + /* "src/main/resources/Java_16_Grammar.y":1168 */ { yyval = new MethodInvocation(null,true,((tree.Type.TypeArguments)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; break; case 362: /* MethodInvocation: CompoundName DOT SUPER DOT TypeArgumentsOpt IDENTIFIER Arguments */ if (yyn == 362) - /* "src/main/resources/Java_16_Grammar.y":1165 */ + /* "src/main/resources/Java_16_Grammar.y":1169 */ { var ref = new SimpleReference(((CompoundName)(yystack.valueAt (6)))); yyval = new MethodInvocation(ref,true,((tree.Type.TypeArguments)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))),((tree.Expression.ArgumentList)(yystack.valueAt (0)))); }; break; @@ -3281,329 +3267,329 @@ private int yyaction(int yyn, YYStack yystack, int yylen) case 363: /* Arguments: LPAREN RPAREN */ if (yyn == 363) - /* "src/main/resources/Java_16_Grammar.y":1170 */ + /* "src/main/resources/Java_16_Grammar.y":1174 */ { yyval = null; }; break; case 364: /* Arguments: LPAREN ArgumentList RPAREN */ if (yyn == 364) - /* "src/main/resources/Java_16_Grammar.y":1171 */ + /* "src/main/resources/Java_16_Grammar.y":1175 */ { yyval = ((tree.Expression.ArgumentList)(yystack.valueAt (1))); }; break; case 365: /* ArgumentList: Expression */ if (yyn == 365) - /* "src/main/resources/Java_16_Grammar.y":1180 */ + /* "src/main/resources/Java_16_Grammar.y":1184 */ { yyval = new ArgumentList(((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 366: /* ArgumentList: ArgumentList COMMA Expression */ if (yyn == 366) - /* "src/main/resources/Java_16_Grammar.y":1181 */ + /* "src/main/resources/Java_16_Grammar.y":1185 */ { yyval = ((tree.Expression.ArgumentList)(yystack.valueAt (2))).add(((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 367: /* MethodReference: CompoundName DBL_COLON TypeArgumentsOpt IDENTIFIER */ if (yyn == 367) - /* "src/main/resources/Java_16_Grammar.y":1185 */ + /* "src/main/resources/Java_16_Grammar.y":1189 */ { yyval = null; }; break; case 368: /* MethodReference: Primary DBL_COLON TypeArgumentsOpt IDENTIFIER */ if (yyn == 368) - /* "src/main/resources/Java_16_Grammar.y":1186 */ + /* "src/main/resources/Java_16_Grammar.y":1190 */ { yyval = null; }; break; case 369: /* MethodReference: Type DBL_COLON TypeArgumentsOpt IDENTIFIER */ if (yyn == 369) - /* "src/main/resources/Java_16_Grammar.y":1187 */ + /* "src/main/resources/Java_16_Grammar.y":1191 */ { yyval = null; }; break; case 370: /* MethodReference: SUPER DBL_COLON TypeArgumentsOpt IDENTIFIER */ if (yyn == 370) - /* "src/main/resources/Java_16_Grammar.y":1188 */ + /* "src/main/resources/Java_16_Grammar.y":1192 */ { yyval = null; }; break; case 371: /* MethodReference: Type DOT SUPER DBL_COLON TypeArgumentsOpt IDENTIFIER */ if (yyn == 371) - /* "src/main/resources/Java_16_Grammar.y":1189 */ + /* "src/main/resources/Java_16_Grammar.y":1193 */ { yyval = null; }; break; case 372: /* MethodReference: Type DBL_COLON TypeArgumentsOpt NEW */ if (yyn == 372) - /* "src/main/resources/Java_16_Grammar.y":1190 */ + /* "src/main/resources/Java_16_Grammar.y":1194 */ { yyval = null; }; break; case 373: /* ArrayCreationExpression: NEW Type DimExprs DimsOpt */ if (yyn == 373) - /* "src/main/resources/Java_16_Grammar.y":1194 */ + /* "src/main/resources/Java_16_Grammar.y":1198 */ { yyval = null; }; break; case 374: /* ArrayCreationExpression: NEW Type Dims ArrayInitializer */ if (yyn == 374) - /* "src/main/resources/Java_16_Grammar.y":1195 */ + /* "src/main/resources/Java_16_Grammar.y":1199 */ { yyval = null; }; break; case 379: /* Expression: LambdaExpression */ if (yyn == 379) - /* "src/main/resources/Java_16_Grammar.y":1211 */ + /* "src/main/resources/Java_16_Grammar.y":1215 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 380: /* Expression: AssignmentExpression */ if (yyn == 380) - /* "src/main/resources/Java_16_Grammar.y":1212 */ + /* "src/main/resources/Java_16_Grammar.y":1216 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 381: /* LambdaExpression: IDENTIFIER ARROW Expression */ if (yyn == 381) - /* "src/main/resources/Java_16_Grammar.y":1217 */ + /* "src/main/resources/Java_16_Grammar.y":1221 */ { yyval = new Lambda(new ParameterDeclarations(new ParameterDeclaration(((Token)(yystack.valueAt (2))))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 382: /* LambdaExpression: IDENTIFIER ARROW Block */ if (yyn == 382) - /* "src/main/resources/Java_16_Grammar.y":1219 */ + /* "src/main/resources/Java_16_Grammar.y":1223 */ { yyval = new Lambda(new ParameterDeclarations(new ParameterDeclaration(((Token)(yystack.valueAt (2))))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 383: /* LambdaExpression: LambdaParameters ARROW Expression */ if (yyn == 383) - /* "src/main/resources/Java_16_Grammar.y":1220 */ + /* "src/main/resources/Java_16_Grammar.y":1224 */ { yyval = new Lambda(((ParameterDeclarations)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 384: /* LambdaExpression: LambdaParameters ARROW Block */ if (yyn == 384) - /* "src/main/resources/Java_16_Grammar.y":1221 */ + /* "src/main/resources/Java_16_Grammar.y":1225 */ { yyval = new Lambda(((ParameterDeclarations)(yystack.valueAt (2))),((tree.Statement.Block)(yystack.valueAt (0)))); }; break; case 385: /* LambdaParameters: LPAREN RPAREN */ if (yyn == 385) - /* "src/main/resources/Java_16_Grammar.y":1230 */ + /* "src/main/resources/Java_16_Grammar.y":1234 */ { yyval = null; }; break; case 386: /* LambdaParameters: LPAREN LambdaParameterList1 RPAREN */ if (yyn == 386) - /* "src/main/resources/Java_16_Grammar.y":1231 */ + /* "src/main/resources/Java_16_Grammar.y":1235 */ { yyval = ((ParameterDeclarations)(yystack.valueAt (1))); }; break; case 387: /* LambdaParameters: LPAREN LambdaParameterList2 RPAREN */ if (yyn == 387) - /* "src/main/resources/Java_16_Grammar.y":1232 */ + /* "src/main/resources/Java_16_Grammar.y":1236 */ { yyval = ((ParameterDeclarations)(yystack.valueAt (1))); }; break; case 388: /* LambdaParameterList1: IDENTIFIER */ if (yyn == 388) - /* "src/main/resources/Java_16_Grammar.y":1237 */ + /* "src/main/resources/Java_16_Grammar.y":1241 */ { yyval = new ParameterDeclarations(new ParameterDeclaration(((Token)(yystack.valueAt (0))))); }; break; case 389: /* LambdaParameterList1: LambdaParameterList1 COMMA IDENTIFIER */ if (yyn == 389) - /* "src/main/resources/Java_16_Grammar.y":1238 */ + /* "src/main/resources/Java_16_Grammar.y":1242 */ { yyval = ((ParameterDeclarations)(yystack.valueAt (2))).add(new ParameterDeclaration(((Token)(yystack.valueAt (0))))); }; break; case 390: /* LambdaParameterList2: LambdaParameter */ if (yyn == 390) - /* "src/main/resources/Java_16_Grammar.y":1242 */ + /* "src/main/resources/Java_16_Grammar.y":1246 */ { yyval = new ParameterDeclarations(((ParameterDeclaration)(yystack.valueAt (0)))); }; break; case 391: /* LambdaParameterList2: LambdaParameterList2 COMMA LambdaParameter */ if (yyn == 391) - /* "src/main/resources/Java_16_Grammar.y":1243 */ + /* "src/main/resources/Java_16_Grammar.y":1247 */ { yyval = ((ParameterDeclarations)(yystack.valueAt (2))).add(((ParameterDeclaration)(yystack.valueAt (0)))); }; break; case 392: /* LambdaParameter: ModifierSeqOpt UnannotatedType IDENTIFIER DimsOpt */ if (yyn == 392) - /* "src/main/resources/Java_16_Grammar.y":1254 */ + /* "src/main/resources/Java_16_Grammar.y":1258 */ { yyval = new ParameterDeclaration(((Modifiers)(yystack.valueAt (3))),((tree.Type.UnannotatedType)(yystack.valueAt (2))),((Token)(yystack.valueAt (1))).image,null,false,((Dims)(yystack.valueAt (0)))); }; break; case 393: /* LambdaParameter: ModifierSeqOpt VAR IDENTIFIER DimsOpt */ if (yyn == 393) - /* "src/main/resources/Java_16_Grammar.y":1255 */ + /* "src/main/resources/Java_16_Grammar.y":1259 */ { yyval = new ParameterDeclaration(((Modifiers)(yystack.valueAt (3))),null,((Token)(yystack.valueAt (1))).image,null,false,((Dims)(yystack.valueAt (0)))); }; break; case 394: /* LambdaParameter: ModifierSeqOpt UnannotatedType AnnotationSeqOpt ELLIPSIS IDENTIFIER */ if (yyn == 394) - /* "src/main/resources/Java_16_Grammar.y":1257 */ + /* "src/main/resources/Java_16_Grammar.y":1261 */ { yyval = new ParameterDeclaration(((Modifiers)(yystack.valueAt (4))),((tree.Type.UnannotatedType)(yystack.valueAt (3))),((Token)(yystack.valueAt (0))).image,((Annotations)(yystack.valueAt (2))),true,null); }; break; case 395: /* AssignmentExpression: ConditionalExpression */ if (yyn == 395) - /* "src/main/resources/Java_16_Grammar.y":1267 */ + /* "src/main/resources/Java_16_Grammar.y":1271 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 396: /* AssignmentExpression: Assignment */ if (yyn == 396) - /* "src/main/resources/Java_16_Grammar.y":1268 */ + /* "src/main/resources/Java_16_Grammar.y":1272 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 397: /* Assignment: LeftHandSide AssignmentOperator Expression */ if (yyn == 397) - /* "src/main/resources/Java_16_Grammar.y":1272 */ + /* "src/main/resources/Java_16_Grammar.y":1276 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 398: /* LeftHandSide: CompoundName */ if (yyn == 398) - /* "src/main/resources/Java_16_Grammar.y":1276 */ + /* "src/main/resources/Java_16_Grammar.y":1280 */ { yyval = new SimpleReference(((CompoundName)(yystack.valueAt (0)))); }; break; case 399: /* LeftHandSide: FieldAccess */ if (yyn == 399) - /* "src/main/resources/Java_16_Grammar.y":1277 */ + /* "src/main/resources/Java_16_Grammar.y":1281 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 400: /* LeftHandSide: ArrayAccess */ if (yyn == 400) - /* "src/main/resources/Java_16_Grammar.y":1278 */ + /* "src/main/resources/Java_16_Grammar.y":1282 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 401: /* AssignmentOperator: EQUAL */ if (yyn == 401) - /* "src/main/resources/Java_16_Grammar.y":1282 */ + /* "src/main/resources/Java_16_Grammar.y":1286 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 402: /* AssignmentOperator: STAR_EQUAL */ if (yyn == 402) - /* "src/main/resources/Java_16_Grammar.y":1283 */ + /* "src/main/resources/Java_16_Grammar.y":1287 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 403: /* AssignmentOperator: SLASH_EQUAL */ if (yyn == 403) - /* "src/main/resources/Java_16_Grammar.y":1284 */ + /* "src/main/resources/Java_16_Grammar.y":1288 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 404: /* AssignmentOperator: PERCENT_EQUAL */ if (yyn == 404) - /* "src/main/resources/Java_16_Grammar.y":1285 */ + /* "src/main/resources/Java_16_Grammar.y":1289 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 405: /* AssignmentOperator: PLUS_EQUAL */ if (yyn == 405) - /* "src/main/resources/Java_16_Grammar.y":1286 */ + /* "src/main/resources/Java_16_Grammar.y":1290 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 406: /* AssignmentOperator: MINUS_EQUAL */ if (yyn == 406) - /* "src/main/resources/Java_16_Grammar.y":1287 */ + /* "src/main/resources/Java_16_Grammar.y":1291 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 407: /* AssignmentOperator: LESS_LESS_EQUAL */ if (yyn == 407) - /* "src/main/resources/Java_16_Grammar.y":1288 */ + /* "src/main/resources/Java_16_Grammar.y":1292 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 408: /* AssignmentOperator: GR_GR_EQUAL */ if (yyn == 408) - /* "src/main/resources/Java_16_Grammar.y":1289 */ + /* "src/main/resources/Java_16_Grammar.y":1293 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 409: /* AssignmentOperator: GR_GR_GR_EQUAL */ if (yyn == 409) - /* "src/main/resources/Java_16_Grammar.y":1290 */ + /* "src/main/resources/Java_16_Grammar.y":1294 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 410: /* AssignmentOperator: AMP_EQUAL */ if (yyn == 410) - /* "src/main/resources/Java_16_Grammar.y":1291 */ + /* "src/main/resources/Java_16_Grammar.y":1295 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 411: /* AssignmentOperator: CARET_EQUAL */ if (yyn == 411) - /* "src/main/resources/Java_16_Grammar.y":1292 */ + /* "src/main/resources/Java_16_Grammar.y":1296 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 412: /* AssignmentOperator: VERTICAL_EQUAL */ if (yyn == 412) - /* "src/main/resources/Java_16_Grammar.y":1293 */ + /* "src/main/resources/Java_16_Grammar.y":1297 */ { yyval = ((Token)(yystack.valueAt (0))); }; break; case 413: /* ConditionalExpression: ConditionalOrExpression ConditionalOrTail */ if (yyn == 413) - /* "src/main/resources/Java_16_Grammar.y":1297 */ + /* "src/main/resources/Java_16_Grammar.y":1301 */ { if ( ((tree.Expression.Binary)(yystack.valueAt (0))) == null ) yyval = ((tree.Expression.Expression)(yystack.valueAt (1))); else yyval = new Conditional(((tree.Expression.Expression)(yystack.valueAt (1))),((tree.Expression.Binary)(yystack.valueAt (0))).left,((tree.Expression.Binary)(yystack.valueAt (0))).right); }; break; @@ -3611,510 +3597,510 @@ private int yyaction(int yyn, YYStack yystack, int yylen) case 414: /* ConditionalOrTail: %empty */ if (yyn == 414) - /* "src/main/resources/Java_16_Grammar.y":1302 */ + /* "src/main/resources/Java_16_Grammar.y":1306 */ { yyval = null; }; break; case 415: /* ConditionalOrTail: QUESTION Expression COLON ConditionalExpression */ if (yyn == 415) - /* "src/main/resources/Java_16_Grammar.y":1303 */ + /* "src/main/resources/Java_16_Grammar.y":1307 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),null); }; break; case 416: /* ConditionalOrTail: QUESTION Expression COLON LambdaExpression */ if (yyn == 416) - /* "src/main/resources/Java_16_Grammar.y":1304 */ + /* "src/main/resources/Java_16_Grammar.y":1308 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),null); }; break; case 417: /* ConditionalOrExpression: ConditionalAndExpression */ if (yyn == 417) - /* "src/main/resources/Java_16_Grammar.y":1308 */ + /* "src/main/resources/Java_16_Grammar.y":1312 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 418: /* ConditionalOrExpression: ConditionalOrExpression DBL_VERTICAL ConditionalAndExpression */ if (yyn == 418) - /* "src/main/resources/Java_16_Grammar.y":1309 */ + /* "src/main/resources/Java_16_Grammar.y":1313 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 419: /* ConditionalAndExpression: InclusiveOrExpression */ if (yyn == 419) - /* "src/main/resources/Java_16_Grammar.y":1313 */ + /* "src/main/resources/Java_16_Grammar.y":1317 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 420: /* ConditionalAndExpression: ConditionalAndExpression DBL_AMPERSAND InclusiveOrExpression */ if (yyn == 420) - /* "src/main/resources/Java_16_Grammar.y":1314 */ + /* "src/main/resources/Java_16_Grammar.y":1318 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 421: /* InclusiveOrExpression: ExclusiveOrExpression */ if (yyn == 421) - /* "src/main/resources/Java_16_Grammar.y":1318 */ + /* "src/main/resources/Java_16_Grammar.y":1322 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 422: /* InclusiveOrExpression: InclusiveOrExpression VERTICAL ExclusiveOrExpression */ if (yyn == 422) - /* "src/main/resources/Java_16_Grammar.y":1319 */ + /* "src/main/resources/Java_16_Grammar.y":1323 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 423: /* ExclusiveOrExpression: AndExpression */ if (yyn == 423) - /* "src/main/resources/Java_16_Grammar.y":1323 */ + /* "src/main/resources/Java_16_Grammar.y":1327 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 424: /* ExclusiveOrExpression: ExclusiveOrExpression CARET AndExpression */ if (yyn == 424) - /* "src/main/resources/Java_16_Grammar.y":1324 */ + /* "src/main/resources/Java_16_Grammar.y":1328 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 425: /* AndExpression: EqualityExpression */ if (yyn == 425) - /* "src/main/resources/Java_16_Grammar.y":1328 */ + /* "src/main/resources/Java_16_Grammar.y":1332 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 426: /* AndExpression: AndExpression AMPERSAND EqualityExpression */ if (yyn == 426) - /* "src/main/resources/Java_16_Grammar.y":1329 */ + /* "src/main/resources/Java_16_Grammar.y":1333 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 427: /* EqualityExpression: RelationalExpression */ if (yyn == 427) - /* "src/main/resources/Java_16_Grammar.y":1333 */ + /* "src/main/resources/Java_16_Grammar.y":1337 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 428: /* EqualityExpression: EqualityExpression DBL_EQUAL RelationalExpression */ if (yyn == 428) - /* "src/main/resources/Java_16_Grammar.y":1334 */ + /* "src/main/resources/Java_16_Grammar.y":1338 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 429: /* EqualityExpression: EqualityExpression NON_EQUAL RelationalExpression */ if (yyn == 429) - /* "src/main/resources/Java_16_Grammar.y":1335 */ + /* "src/main/resources/Java_16_Grammar.y":1339 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 430: /* RelationalExpression: ShiftExpression */ if (yyn == 430) - /* "src/main/resources/Java_16_Grammar.y":1339 */ + /* "src/main/resources/Java_16_Grammar.y":1343 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 431: /* RelationalExpression: RelationalExpression LESS ShiftExpression */ if (yyn == 431) - /* "src/main/resources/Java_16_Grammar.y":1340 */ + /* "src/main/resources/Java_16_Grammar.y":1344 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 432: /* RelationalExpression: RelationalExpression GREATER ShiftExpression */ if (yyn == 432) - /* "src/main/resources/Java_16_Grammar.y":1341 */ + /* "src/main/resources/Java_16_Grammar.y":1345 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 433: /* RelationalExpression: RelationalExpression LESS_EQUAL ShiftExpression */ if (yyn == 433) - /* "src/main/resources/Java_16_Grammar.y":1342 */ + /* "src/main/resources/Java_16_Grammar.y":1346 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 434: /* RelationalExpression: RelationalExpression GREATER_EQUAL ShiftExpression */ if (yyn == 434) - /* "src/main/resources/Java_16_Grammar.y":1343 */ + /* "src/main/resources/Java_16_Grammar.y":1347 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 435: /* RelationalExpression: InstanceofExpression */ if (yyn == 435) - /* "src/main/resources/Java_16_Grammar.y":1344 */ + /* "src/main/resources/Java_16_Grammar.y":1348 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 436: /* InstanceofExpression: RelationalExpression INSTANCEOF Type */ if (yyn == 436) - /* "src/main/resources/Java_16_Grammar.y":1348 */ + /* "src/main/resources/Java_16_Grammar.y":1352 */ { yyval = new InstanceOf(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 437: /* InstanceofExpression: RelationalExpression INSTANCEOF Pattern */ if (yyn == 437) - /* "src/main/resources/Java_16_Grammar.y":1349 */ + /* "src/main/resources/Java_16_Grammar.y":1353 */ { yyval = new InstanceOf(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Declaration.Declaration)(yystack.valueAt (0)))); }; break; case 438: /* ShiftExpression: AdditiveExpression */ if (yyn == 438) - /* "src/main/resources/Java_16_Grammar.y":1353 */ + /* "src/main/resources/Java_16_Grammar.y":1357 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 439: /* ShiftExpression: ShiftExpression DBL_LESS AdditiveExpression */ if (yyn == 439) - /* "src/main/resources/Java_16_Grammar.y":1354 */ + /* "src/main/resources/Java_16_Grammar.y":1358 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 440: /* ShiftExpression: ShiftExpression DBL_GREATER AdditiveExpression */ if (yyn == 440) - /* "src/main/resources/Java_16_Grammar.y":1355 */ + /* "src/main/resources/Java_16_Grammar.y":1359 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 441: /* ShiftExpression: ShiftExpression TRIPL_GREATER AdditiveExpression */ if (yyn == 441) - /* "src/main/resources/Java_16_Grammar.y":1356 */ + /* "src/main/resources/Java_16_Grammar.y":1360 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 442: /* AdditiveExpression: MultiplicativeExpression */ if (yyn == 442) - /* "src/main/resources/Java_16_Grammar.y":1360 */ + /* "src/main/resources/Java_16_Grammar.y":1364 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 443: /* AdditiveExpression: AdditiveExpression PLUS MultiplicativeExpression */ if (yyn == 443) - /* "src/main/resources/Java_16_Grammar.y":1361 */ + /* "src/main/resources/Java_16_Grammar.y":1365 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 444: /* AdditiveExpression: AdditiveExpression MINUS MultiplicativeExpression */ if (yyn == 444) - /* "src/main/resources/Java_16_Grammar.y":1362 */ + /* "src/main/resources/Java_16_Grammar.y":1366 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 445: /* MultiplicativeExpression: UnaryExpression */ if (yyn == 445) - /* "src/main/resources/Java_16_Grammar.y":1366 */ + /* "src/main/resources/Java_16_Grammar.y":1370 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 446: /* MultiplicativeExpression: MultiplicativeExpression STAR UnaryExpression */ if (yyn == 446) - /* "src/main/resources/Java_16_Grammar.y":1367 */ + /* "src/main/resources/Java_16_Grammar.y":1371 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 447: /* MultiplicativeExpression: MultiplicativeExpression SLASH UnaryExpression */ if (yyn == 447) - /* "src/main/resources/Java_16_Grammar.y":1368 */ + /* "src/main/resources/Java_16_Grammar.y":1372 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 448: /* MultiplicativeExpression: MultiplicativeExpression PERCENT UnaryExpression */ if (yyn == 448) - /* "src/main/resources/Java_16_Grammar.y":1369 */ + /* "src/main/resources/Java_16_Grammar.y":1373 */ { yyval = new Binary(((tree.Expression.Expression)(yystack.valueAt (2))),((tree.Expression.Expression)(yystack.valueAt (0))),((Token)(yystack.valueAt (1)))); }; break; case 449: /* UnaryExpression: PreIncrementExpression */ if (yyn == 449) - /* "src/main/resources/Java_16_Grammar.y":1373 */ + /* "src/main/resources/Java_16_Grammar.y":1377 */ { yyval = ((UnaryPrefix)(yystack.valueAt (0))); }; break; case 450: /* UnaryExpression: PreDecrementExpression */ if (yyn == 450) - /* "src/main/resources/Java_16_Grammar.y":1374 */ + /* "src/main/resources/Java_16_Grammar.y":1378 */ { yyval = ((UnaryPrefix)(yystack.valueAt (0))); }; break; case 451: /* UnaryExpression: PLUS UnaryExpression */ if (yyn == 451) - /* "src/main/resources/Java_16_Grammar.y":1375 */ + /* "src/main/resources/Java_16_Grammar.y":1379 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 452: /* UnaryExpression: MINUS UnaryExpression */ if (yyn == 452) - /* "src/main/resources/Java_16_Grammar.y":1376 */ + /* "src/main/resources/Java_16_Grammar.y":1380 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 453: /* UnaryExpression: UnaryExpressionNotPlusMinus */ if (yyn == 453) - /* "src/main/resources/Java_16_Grammar.y":1377 */ + /* "src/main/resources/Java_16_Grammar.y":1381 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 454: /* PreIncrementExpression: DBL_PLUS UnaryExpression */ if (yyn == 454) - /* "src/main/resources/Java_16_Grammar.y":1381 */ + /* "src/main/resources/Java_16_Grammar.y":1385 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 455: /* PreDecrementExpression: DBL_MINUS UnaryExpression */ if (yyn == 455) - /* "src/main/resources/Java_16_Grammar.y":1385 */ + /* "src/main/resources/Java_16_Grammar.y":1389 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 457: /* UnaryExpressionNotPlusMinus: TILDE UnaryExpression */ if (yyn == 457) - /* "src/main/resources/Java_16_Grammar.y":1390 */ + /* "src/main/resources/Java_16_Grammar.y":1394 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 458: /* UnaryExpressionNotPlusMinus: EXCLAMATION UnaryExpression */ if (yyn == 458) - /* "src/main/resources/Java_16_Grammar.y":1391 */ + /* "src/main/resources/Java_16_Grammar.y":1395 */ { yyval = new UnaryPrefix(((Token)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 459: /* UnaryExpressionNotPlusMinus: CastExpression */ if (yyn == 459) - /* "src/main/resources/Java_16_Grammar.y":1392 */ + /* "src/main/resources/Java_16_Grammar.y":1396 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 460: /* UnaryExpressionNotPlusMinus: SwitchExpression */ if (yyn == 460) - /* "src/main/resources/Java_16_Grammar.y":1393 */ + /* "src/main/resources/Java_16_Grammar.y":1397 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 461: /* PostfixExpression: Primary */ if (yyn == 461) - /* "src/main/resources/Java_16_Grammar.y":1397 */ + /* "src/main/resources/Java_16_Grammar.y":1401 */ { yyval = ((tree.Expression.Expression)(yystack.valueAt (0))); }; break; case 462: /* PostfixExpression: CompoundName */ if (yyn == 462) - /* "src/main/resources/Java_16_Grammar.y":1398 */ + /* "src/main/resources/Java_16_Grammar.y":1402 */ { yyval = new SimpleReference(((CompoundName)(yystack.valueAt (0)))); }; break; case 463: /* PostfixExpression: PostIncrementExpression */ if (yyn == 463) - /* "src/main/resources/Java_16_Grammar.y":1399 */ + /* "src/main/resources/Java_16_Grammar.y":1403 */ { yyval = ((UnaryPostfix)(yystack.valueAt (0))); }; break; case 464: /* PostfixExpression: PostDecrementExpression */ if (yyn == 464) - /* "src/main/resources/Java_16_Grammar.y":1400 */ + /* "src/main/resources/Java_16_Grammar.y":1404 */ { yyval = ((UnaryPostfix)(yystack.valueAt (0))); }; break; case 465: /* PostIncrementExpression: PostfixExpression DBL_PLUS */ if (yyn == 465) - /* "src/main/resources/Java_16_Grammar.y":1404 */ + /* "src/main/resources/Java_16_Grammar.y":1408 */ { yyval = new UnaryPostfix(((Token)(yystack.valueAt (0))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 466: /* PostDecrementExpression: PostfixExpression DBL_MINUS */ if (yyn == 466) - /* "src/main/resources/Java_16_Grammar.y":1408 */ + /* "src/main/resources/Java_16_Grammar.y":1412 */ { yyval = new UnaryPostfix(((Token)(yystack.valueAt (0))),((tree.Expression.Expression)(yystack.valueAt (1)))); }; break; case 467: /* CastExpression: TargetType UnaryExpression */ if (yyn == 467) - /* "src/main/resources/Java_16_Grammar.y":1412 */ + /* "src/main/resources/Java_16_Grammar.y":1416 */ { yyval = new Cast(((tree.Type.TypeList)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 468: /* CastExpression: TargetType LambdaExpression */ if (yyn == 468) - /* "src/main/resources/Java_16_Grammar.y":1413 */ + /* "src/main/resources/Java_16_Grammar.y":1417 */ { yyval = new Cast(((tree.Type.TypeList)(yystack.valueAt (1))),((tree.Expression.Expression)(yystack.valueAt (0)))); }; break; case 469: /* TargetType: LPAREN TypeList RPAREN */ if (yyn == 469) - /* "src/main/resources/Java_16_Grammar.y":1417 */ + /* "src/main/resources/Java_16_Grammar.y":1421 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (1))); }; break; case 470: /* TypeList: Type */ if (yyn == 470) - /* "src/main/resources/Java_16_Grammar.y":1421 */ + /* "src/main/resources/Java_16_Grammar.y":1425 */ { yyval = new TypeList(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 471: /* TypeList: TypeList AMPERSAND Type */ if (yyn == 471) - /* "src/main/resources/Java_16_Grammar.y":1422 */ + /* "src/main/resources/Java_16_Grammar.y":1426 */ { yyval = ((tree.Type.TypeList)(yystack.valueAt (2))).add(((tree.Type.Type)(yystack.valueAt (0)))); }; break; case 472: /* SwitchExpression: SWITCH LPAREN Expression RPAREN SwitchBlock */ if (yyn == 472) - /* "src/main/resources/Java_16_Grammar.y":1426 */ + /* "src/main/resources/Java_16_Grammar.y":1430 */ { yyval = new SwitchExpression(((tree.Expression.Expression)(yystack.valueAt (2))),((SwitchBlock)(yystack.valueAt (0)))); }; break; case 473: /* AnnotationSeqOpt: %empty */ if (yyn == 473) - /* "src/main/resources/Java_16_Grammar.y":1438 */ + /* "src/main/resources/Java_16_Grammar.y":1442 */ { yyval = null; }; break; case 474: /* AnnotationSeqOpt: AnnotationSeq */ if (yyn == 474) - /* "src/main/resources/Java_16_Grammar.y":1439 */ + /* "src/main/resources/Java_16_Grammar.y":1443 */ { yyval = ((Annotations)(yystack.valueAt (0))); }; break; case 475: /* AnnotationSeq: Annotation */ if (yyn == 475) - /* "src/main/resources/Java_16_Grammar.y":1443 */ + /* "src/main/resources/Java_16_Grammar.y":1447 */ { yyval = new Annotations(((Annotation)(yystack.valueAt (0)))); }; break; case 476: /* AnnotationSeq: AnnotationSeq Annotation */ if (yyn == 476) - /* "src/main/resources/Java_16_Grammar.y":1444 */ + /* "src/main/resources/Java_16_Grammar.y":1448 */ { yyval = ((Annotations)(yystack.valueAt (1))).add(((Annotation)(yystack.valueAt (0)))); }; break; case 477: /* Annotation: AT CompoundName */ if (yyn == 477) - /* "src/main/resources/Java_16_Grammar.y":1448 */ + /* "src/main/resources/Java_16_Grammar.y":1452 */ { yyval = new Annotation(((CompoundName)(yystack.valueAt (0))),(AnnoParameterList)null); }; break; case 478: /* Annotation: AT CompoundName LPAREN RPAREN */ if (yyn == 478) - /* "src/main/resources/Java_16_Grammar.y":1449 */ + /* "src/main/resources/Java_16_Grammar.y":1453 */ { yyval = new Annotation(((CompoundName)(yystack.valueAt (2))),(AnnoParameterList)null); }; break; case 479: /* Annotation: AT CompoundName LPAREN AnnoParameterList RPAREN */ if (yyn == 479) - /* "src/main/resources/Java_16_Grammar.y":1450 */ + /* "src/main/resources/Java_16_Grammar.y":1454 */ { yyval = new Annotation(((CompoundName)(yystack.valueAt (3))),/*$4*/ (AnnoParameterList)null); }; break; case 480: /* Annotation: AT CompoundName LPAREN ElementValue RPAREN */ if (yyn == 480) - /* "src/main/resources/Java_16_Grammar.y":1451 */ + /* "src/main/resources/Java_16_Grammar.y":1455 */ { yyval = new Annotation(((CompoundName)(yystack.valueAt (3))),(AnnoElementValue)null); }; break; case 481: /* AnnoParameterList: IDENTIFIER EQUAL ElementValue */ if (yyn == 481) - /* "src/main/resources/Java_16_Grammar.y":1455 */ + /* "src/main/resources/Java_16_Grammar.y":1459 */ { yyval = null; }; break; case 482: /* AnnoParameterList: AnnoParameterList COMMA IDENTIFIER EQUAL ElementValue */ if (yyn == 482) - /* "src/main/resources/Java_16_Grammar.y":1456 */ + /* "src/main/resources/Java_16_Grammar.y":1460 */ { yyval = null; }; break; case 483: /* ElementValue: ConditionalExpression */ if (yyn == 483) - /* "src/main/resources/Java_16_Grammar.y":1460 */ + /* "src/main/resources/Java_16_Grammar.y":1464 */ { yyval = null; }; break; case 484: /* ElementValue: LBRACE ElementValueListOpt RBRACE */ if (yyn == 484) - /* "src/main/resources/Java_16_Grammar.y":1461 */ + /* "src/main/resources/Java_16_Grammar.y":1465 */ { yyval = null; }; break; case 485: /* ElementValue: LBRACE COMMA RBRACE */ if (yyn == 485) - /* "src/main/resources/Java_16_Grammar.y":1462 */ + /* "src/main/resources/Java_16_Grammar.y":1466 */ { yyval = null; }; break; case 486: /* ElementValue: Annotation */ if (yyn == 486) - /* "src/main/resources/Java_16_Grammar.y":1463 */ + /* "src/main/resources/Java_16_Grammar.y":1467 */ { yyval = null; }; break; -/* "src/main/java/parser/JavaParser.java":4118 */ +/* "src/main/java/parser/JavaParser.java":4104 */ default: break; } @@ -4439,6 +4425,45 @@ else if (yycount == yyargn) } + private int yysyntaxErrorArguments (Context yyctx, SymbolKind[] yyarg, int yyargn) + { + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, + then the only way this function was invoked is if the + default action is an error action. In that case, don't + check for expected tokens because there are none. + - The only way there can be no lookahead present (in tok) is + if this state is a consistent state with a default action. + Thus, detecting the absence of a lookahead is sufficient to + determine that there is no unexpected or expected token to + report. In that case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this + state is a consistent state with a default action. There + might have been a previous inconsistent state, consistent + state with a non-default action, or user semantic action + that manipulated yychar. (However, yychar is currently out + of scope during semantic actions.) + - Of course, the expected token list depends on states to + have correct lookahead information, and it depends on the + parser not to perform extra reductions after fetching a + lookahead from the scanner and before detecting a syntax + error. Thus, state merging (from LALR or IELR) and default + reductions corrupt the expected token list. However, the + list is correct for canonical LR with one exception: it + will still contain any token that will not be accepted due + to an error action in a later state. + */ + int yycount = 0; + if (yyctx.getToken() != null) + { + if (yyarg != null) + yyarg[yycount] = yyctx.getToken(); + yycount += 1; + yycount += yyctx.getExpectedTokens(yyarg, 1, yyargn); + } + return yycount; + } + /** * Build and emit a "syntax error" message in a user-defined way. @@ -4446,7 +4471,28 @@ else if (yycount == yyargn) * @param ctx The context of the error. */ private void yyreportSyntaxError(Context yyctx) { - yyerror("syntax error"); + if (yyErrorVerbose) { + final int argmax = 5; + SymbolKind[] yyarg = new SymbolKind[argmax]; + int yycount = yysyntaxErrorArguments(yyctx, yyarg, argmax); + String[] yystr = new String[yycount]; + for (int yyi = 0; yyi < yycount; ++yyi) { + yystr[yyi] = yyarg[yyi].getName(); + } + String yyformat; + switch (yycount) { + default: + case 0: yyformat = "syntax error"; break; + case 1: yyformat = "syntax error, unexpected {0}"; break; + case 2: yyformat = "syntax error, unexpected {0}, expecting {1}"; break; + case 3: yyformat = "syntax error, unexpected {0}, expecting {1} or {2}"; break; + case 4: yyformat = "syntax error, unexpected {0}, expecting {1} or {2} or {3}"; break; + case 5: yyformat = "syntax error, unexpected {0}, expecting {1} or {2} or {3} or {4}"; break; + } + yyerror(new MessageFormat(yyformat).format(yystr)); + } else { + yyerror("syntax error"); + } } /** @@ -4468,7 +4514,7 @@ private static boolean yyTableValueIsError (int yyvalue) return yyvalue == yytable_ninf_; } - private static final short yypact_ninf_ = -631; + private static final short yypact_ninf_ = -680; private static final short yytable_ninf_ = -487; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -4478,94 +4524,94 @@ private static final short[] yypact_init() { return new short[] { - 1540, -8, -631, -631, -631, 8, -631, -8, -631, -631, - -631, -631, -631, -631, -631, -631, 118, -631, 760, -631, - 64, -631, -631, 927, -631, -631, 2871, -631, -631, 318, - -8, 526, 642, -8, -631, -631, 81, -631, 215, 760, - -631, 2932, 22, 674, 169, -631, 76, 303, 20, 180, - 188, 207, 221, -631, -631, -631, -631, -631, -631, -631, - -631, 81, 3592, -631, 2998, 3658, 3658, 3658, 3658, 3658, - 3658, 292, -631, -631, -631, -631, -631, -631, -631, -631, - -631, -631, -631, -631, 1122, -631, -631, 550, 302, -631, - -631, 319, -631, 451, 467, 319, -631, 490, -631, -631, - -631, -631, -631, -631, -631, -631, 130, 288, 350, 426, - 448, 378, 209, -631, 556, 632, 625, -631, -631, -631, - -631, 649, -631, -631, -631, 3592, -631, 1342, 505, 349, - 474, -631, 193, -631, 478, 1061, 452, 416, 477, 424, - 477, 477, -631, 2820, 293, 4516, 467, 1789, 1903, 513, - -631, 500, -631, -631, 2018, -631, 282, 537, 561, -631, - 489, -631, -631, -631, -631, -631, -631, 3130, 3196, -631, - 1031, 77, 394, 535, -631, 47, 563, 3592, 587, 595, - 319, -631, 399, 3592, 46, 563, -631, 491, 563, 612, - -631, 3592, 78, 563, 3592, 3658, -631, 3658, 3658, 3658, - 3658, 3658, 3658, 3658, 3658, 3658, 3658, 420, 3658, 3658, - 3658, 3658, 3658, 3658, 3658, 3658, -631, -631, -631, -631, - 319, -631, 516, -631, 616, -631, -631, 1561, 254, -8, - -8, -8, -8, 641, 452, -631, 627, 21, 574, -631, - 1342, 673, 613, 677, -631, 321, 539, 393, 530, -631, - 4335, 3262, -631, 3262, -631, -631, -631, -631, -631, -631, - -631, -631, -631, -631, -631, -631, 3592, -631, 1342, -631, - -631, 3196, -631, 542, -631, -631, 189, -631, 411, -631, - 2773, 3328, 419, 394, -631, 436, 561, 336, 645, 535, - -631, 647, 653, 706, -631, 652, -631, 719, 720, 563, - 721, -631, 678, 681, 724, -631, 184, 675, 731, -631, - -631, 687, 689, 733, 288, 350, 426, 448, 378, 209, - 209, 556, 556, 556, 556, 692, -631, 30, -631, -631, - 632, 632, 632, 625, 625, -631, -631, -631, 722, -631, - 639, 651, -8, 18, 23, 686, 11, -631, -631, 4212, - -631, 679, 447, -631, -631, 21, 1342, 424, -631, 740, - 105, -631, 1342, 752, 749, 390, 424, 704, 60, -631, - 705, -631, 2871, 2146, -631, -631, -631, -631, -631, -631, - -631, -631, 3592, 1342, 1342, 1031, -631, 202, 753, 3394, - -631, -631, -631, 3460, 758, 535, -631, -631, -631, 561, - -631, 763, -631, -631, -631, 166, 561, -631, 563, -631, - -631, -631, -631, 561, -631, 3592, 227, 761, -631, 761, - 3196, -631, -631, 688, -631, -8, -631, -8, -631, -8, - -631, 1508, 4240, 1342, 21, -631, -631, -631, 758, 1342, - 430, -631, 716, -631, 4251, -631, 1342, 543, -631, 885, - 770, 319, 319, 745, 399, -631, -631, 3592, -631, -631, - 460, 3592, 127, 150, 2716, 774, 784, 3526, 787, 788, - 3592, 444, 789, 3592, 1003, -631, 2260, -631, -631, -631, - -631, 783, -631, -631, -631, -631, -631, 479, 531, -631, - -631, -631, 649, 669, 671, -631, -631, -631, -631, 1342, - 1342, -631, -631, 591, 786, -631, -631, 790, 3981, -631, - -631, 741, -631, 485, -631, -631, 742, -631, 744, -631, - -631, -631, 3592, 375, 692, -631, -631, 794, 446, 605, - 608, 177, 692, 61, -631, -631, -631, -631, -631, -631, - 1508, -631, 792, 750, 1342, -631, -631, -631, 71, 4020, - 800, 561, -631, 1645, 4279, -631, -631, 535, 239, 4073, - -631, -631, -631, 755, 2716, 501, -631, 796, -631, 802, - 788, 701, 3720, 3592, -631, 808, 3592, 3592, 810, 3904, - 234, 817, 3592, 813, 30, -631, -631, -631, 815, -631, - -631, -631, -631, -631, -631, 821, 3394, -631, -631, -631, - 817, 4390, 4112, -631, -631, -631, 3658, -631, 160, -631, - 203, -631, 1690, 320, 561, -631, -631, 826, -631, -8, - -631, -631, -631, 614, 829, -631, 1342, -631, -631, 830, - 4133, -631, 758, 780, 283, -631, 26, 410, -631, -631, - -631, -631, -631, 1645, -631, -631, 811, -631, 4428, -631, - 4179, -631, -631, -631, -631, 3592, -631, -631, 838, 835, - -631, 837, 841, 847, -631, 849, 853, -631, 371, -631, - 165, -631, 490, 475, 855, 817, 234, -631, -631, 793, - 858, -631, -631, -631, -631, -631, 296, -631, 812, 26, - -631, -631, 759, -631, -631, 410, -631, -631, -631, 860, - -631, -631, -631, 848, -631, -631, 1804, 861, 863, 1918, - 865, -631, 3064, -631, -631, 794, -631, 874, -631, -631, - -631, 862, 759, 759, 780, 780, 283, 2098, -631, -631, - -631, -631, 828, 879, -631, -631, 876, 3592, 3592, 3592, - 3782, 2716, 763, 817, -631, 3844, 2871, -631, -631, -631, - 807, 793, 2716, 315, 626, 888, 1342, 879, -631, 3658, - -631, -631, 3592, -631, 882, 319, 3960, -631, -631, 759, - 759, 759, 780, -631, 2032, -631, -631, 892, 893, 887, - -631, -631, 831, -631, -631, -631, -631, 1342, 895, -631, - -631, -631, -631, 4335, 740, -631, -631, 890, -631, 832, - 319, 885, 25, 552, -631, -631, -631, -631, 759, -631, - 400, 2374, 2488, 508, 502, 894, 2716, 3782, 2716, -631, - -631, 141, 817, 570, -631, 3196, 897, -631, 25, 359, - -631, -631, 899, 319, 4335, -631, 46, -631, 2602, -631, - 78, 561, 561, -631, -631, 841, 917, -631, 1342, 319, - -631, -631, -631, -631, -631, 834, -631, 886, -631, -631, - -19, -631, 7, 920, 923, 2716, -631, -631, -631, -631, - 561, 561, -631, -631, -631, 931, 932, -631, -631 + 29, 4, 127, 127, 186, -680, -680, 4451, -680, -680, + -680, 127, 99, 379, 533, -680, 127, -680, -680, -680, + -680, -680, -680, -680, -680, -680, -680, -680, -680, 2843, + -680, 4519, -680, -680, 1109, 4480, -680, 618, 80, -680, + 510, 172, 192, 346, 116, 228, 271, 285, 282, -680, + -680, -680, -680, -680, -680, -680, -680, -680, 2843, 4519, + -680, 134, -680, 370, -680, 101, 127, 127, 127, 127, + 408, 510, -680, 908, 2904, 395, 342, 454, 454, 430, + -680, 519, -680, 469, 507, 127, 27, 46, 660, 7, + -680, -680, -680, 1244, 3564, -680, 2970, 3630, 3630, 3630, + 3630, 3630, 3630, 324, -680, -680, -680, -680, -680, -680, + -680, -680, -680, -680, -680, -680, 4506, -680, -680, 218, + 581, -680, -680, 193, -680, 483, 485, 193, -680, 554, + -680, -680, -680, -680, -680, -680, -680, -680, 34, 551, + 590, 591, 605, 207, 185, -680, 252, 419, 628, -680, + -680, -680, -680, 634, -680, -680, -680, 3564, -680, 1728, + 525, 407, 632, 645, 1728, 661, 61, 582, -680, 651, + 454, -680, -680, -680, 676, -680, 127, -680, 127, -680, + 127, 2792, 329, 4618, 485, 905, 1530, 658, -680, 659, + -680, -680, 1875, -680, 270, 662, 423, -680, 500, -680, + -680, -680, -680, -680, -680, 3102, 656, 3168, -680, 2745, + 369, 433, 679, -680, 22, 656, 3564, 698, 697, 193, + -680, 447, 3564, 223, 656, -680, 493, 656, 700, -680, + 3564, 102, 656, 3564, 3630, -680, 3630, 3630, 3630, 3630, + 3630, 3630, 3630, 3630, 3630, 3630, 965, 3630, 3630, 3630, + 3630, 3630, 3630, 3630, 3630, -680, -680, -680, -680, 193, + -680, 665, -680, 1365, -680, -680, 702, 144, -680, 637, + 449, -680, -680, 61, 1728, 711, 714, 292, 342, 647, + -680, 717, 401, 544, 614, -680, 334, 1445, 550, 553, + -680, 4418, 3234, -680, 3234, -680, -680, -680, -680, -680, + -680, -680, -680, -680, -680, -680, -680, 3564, -680, 1728, + -680, -680, 3168, -680, 564, -680, 127, -680, 112, -680, + 462, -680, 2756, 3300, 463, 433, -680, 503, 721, 437, + 673, 679, -680, 675, 677, 730, -680, 668, -680, 729, + 732, 656, 728, -680, 689, 733, -680, 140, 680, 737, + -680, -680, 692, 694, 739, 551, 590, 591, 605, 207, + 185, 185, 252, 252, 252, 252, 701, -680, 56, -680, + -680, 419, 419, 419, 628, 628, -680, -680, -680, 724, + -680, 4363, 1529, 1728, 644, -680, 712, 1728, 61, -680, + -680, -680, 4144, -680, 1728, 570, -680, 1729, 748, 1728, + 342, 127, -680, -680, -680, 716, 254, -680, 720, -680, + 4480, 2118, -680, -680, -680, -680, -680, -680, -680, -680, + 3564, 484, 1728, 1728, 2745, -680, 113, 747, 3366, -680, + -680, -680, 3432, 752, 679, -680, -680, -680, 721, -680, + 761, -680, -680, -680, 32, -680, 656, -680, -680, -680, + -680, 721, -680, 3564, 387, 759, -680, 759, 3168, 701, + 261, -680, -680, -680, -680, -680, -680, 4363, -680, 296, + 1582, 763, 721, -680, 755, 723, 1728, -680, -680, 4208, + 4165, -680, -680, 679, 263, 3953, -680, -680, 752, 717, + 193, 193, 745, 447, -680, -680, 3564, -680, -680, 52, + 3564, 135, 148, 2688, 776, 777, 3498, 780, 782, 3564, + 609, 784, 3564, 4320, -680, 2232, -680, -680, -680, -680, + 778, -680, -680, -680, -680, -680, 393, 547, -680, -680, + -680, 634, 643, 646, -680, -680, -680, -680, -680, 1728, + 1728, -680, -680, 579, 781, -680, -680, 787, 3992, -680, + -680, 736, -680, 521, -680, -680, 749, 750, -680, -680, + -680, 3564, 425, 701, -680, 649, 789, -680, -680, 794, + -680, 797, 4208, 4045, -680, -680, -680, 752, 1728, -680, + 753, 264, -680, 412, 530, -680, -680, -680, -680, -680, + 4208, -680, -680, 772, -680, 4265, -680, 4084, -680, -680, + -680, -680, 754, 2688, 496, -680, 796, -680, 802, 782, + 703, 3692, 3564, -680, 804, 3564, 3564, 805, 3876, 257, + 797, 3564, 806, 56, -680, -680, -680, 809, -680, -680, + -680, -680, -680, -680, 815, 3366, -680, -680, 4105, -680, + 3630, -680, 20, -680, 128, -680, 1662, 330, 721, -680, + -680, 817, -680, -680, 819, -680, -680, 281, -680, 770, + 412, -680, -680, 719, -680, -680, 530, -680, -680, -680, + -680, 826, 719, 719, 753, 753, 264, 1349, -680, -680, + -680, -680, 779, 827, -680, -680, -680, -680, -680, 3564, + -680, -680, 830, 823, -680, 825, 829, 845, -680, 854, + 855, -680, 470, -680, 522, -680, 554, 541, 857, 797, + 257, -680, -680, 801, 858, -680, -680, -680, -680, -680, + 859, -680, -680, -680, 846, -680, -680, 1776, 863, 864, + 1890, 865, -680, 3036, -680, -680, 193, 431, 652, 868, + 1728, 827, -680, 3932, -680, -680, 719, 719, 719, 753, + -680, 2004, -680, 869, 3564, 3564, 3564, 3754, 2688, 761, + 797, -680, 3816, 4480, -680, -680, -680, 808, 801, 2688, + 3630, -680, -680, 3564, -680, 871, 813, -680, 4418, 702, + -680, 193, 1729, 21, 583, -680, -680, -680, -680, 719, + -680, 418, 2346, 2460, 556, 499, -680, 880, 884, 879, + -680, -680, 818, -680, -680, -680, -680, 1728, 888, -680, + -680, -680, -680, 885, -680, 3168, 886, 593, -680, 21, + 509, -680, -680, 867, 193, 4418, -680, 28, -680, 2574, + -680, 102, 721, 721, 889, 2688, 3754, 2688, -680, -680, + 273, 797, -680, -680, -680, -680, -680, 798, -680, 847, + -680, -680, 799, -680, -22, 893, 896, -680, -680, 829, + 906, -680, 1728, 193, -680, -680, -680, 721, 721, -680, + -680, 2688, -680, -680, 898, 900, -680, -680, -680 }; } @@ -4577,94 +4623,94 @@ private static final short[] yydefact_init() { return new short[] { - 35, 0, 22, 17, 18, 0, 28, 0, 21, 20, - 19, 23, 24, 25, 26, 27, 0, 12, 13, 15, - 0, 30, 31, 11, 36, 37, 0, 475, 9, 477, - 0, 0, 0, 0, 16, 1, 0, 38, 11, 14, - 476, 0, 0, 0, 0, 39, 35, 0, 0, 0, - 0, 0, 0, 45, 47, 81, 82, 83, 48, 194, - 195, 0, 0, 478, 487, 0, 0, 0, 0, 0, - 0, 9, 2, 3, 6, 7, 80, 73, 77, 79, - 5, 78, 75, 76, 0, 8, 74, 0, 0, 324, - 4, 188, 321, 462, 0, 67, 69, 461, 327, 333, - 328, 329, 330, 331, 332, 483, 414, 417, 419, 421, - 423, 425, 427, 435, 430, 438, 442, 445, 449, 450, - 453, 456, 463, 464, 459, 0, 460, 0, 475, 0, - 0, 10, 0, 40, 0, 11, 49, 0, 85, 97, - 85, 85, 46, 11, 9, 462, 470, 328, 329, 0, - 379, 0, 380, 396, 0, 395, 0, 0, 9, 488, - 0, 451, 452, 457, 458, 454, 455, 0, 0, 358, - 0, 70, 0, 473, 342, 0, 341, 0, 0, 0, - 189, 190, 0, 0, 0, 341, 71, 0, 341, 0, - 72, 0, 0, 341, 0, 0, 413, 0, 0, 0, + 35, 0, 0, 0, 0, 30, 31, 11, 36, 37, + 9, 0, 0, 0, 0, 1, 0, 22, 17, 18, + 28, 21, 20, 19, 23, 24, 25, 26, 27, 11, + 12, 13, 15, 38, 11, 0, 475, 0, 0, 39, + 49, 0, 35, 477, 0, 0, 0, 0, 0, 45, + 47, 81, 82, 83, 48, 194, 195, 16, 11, 14, + 476, 0, 40, 0, 10, 62, 0, 0, 0, 0, + 0, 50, 51, 11, 0, 0, 97, 85, 85, 0, + 46, 0, 41, 65, 63, 0, 0, 0, 0, 0, + 34, 52, 33, 11, 0, 478, 487, 0, 0, 0, + 0, 0, 0, 9, 2, 3, 6, 7, 80, 73, + 77, 79, 5, 78, 75, 76, 0, 8, 74, 0, + 0, 324, 4, 188, 321, 462, 0, 67, 69, 461, + 327, 333, 328, 329, 330, 331, 332, 483, 414, 417, + 419, 421, 423, 425, 427, 435, 430, 438, 442, 445, + 449, 450, 453, 456, 463, 464, 459, 0, 460, 0, + 475, 0, 0, 0, 0, 0, 0, 197, 86, 0, + 85, 42, 66, 64, 0, 54, 0, 56, 0, 58, + 0, 11, 9, 462, 470, 328, 329, 0, 379, 0, + 380, 396, 0, 395, 0, 0, 9, 488, 0, 451, + 452, 457, 458, 454, 455, 0, 341, 0, 358, 0, + 70, 0, 473, 342, 0, 341, 0, 0, 0, 189, + 190, 0, 0, 0, 341, 71, 0, 341, 0, 72, + 0, 0, 341, 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 465, 466, 468, 467, - 68, 479, 0, 480, 0, 41, 33, 11, 62, 0, - 0, 0, 0, 0, 50, 51, 0, 0, 95, 86, - 0, 0, 197, 0, 385, 9, 0, 0, 0, 390, - 0, 0, 326, 0, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 0, 469, 0, 485, - 484, 0, 363, 0, 365, 481, 347, 346, 0, 344, - 0, 0, 0, 188, 375, 0, 0, 341, 0, 474, - 354, 0, 0, 0, 193, 0, 191, 0, 0, 341, - 0, 334, 0, 0, 0, 325, 0, 0, 0, 353, - 335, 0, 0, 0, 418, 420, 422, 424, 426, 428, - 429, 431, 432, 433, 434, 0, 436, 67, 320, 437, - 439, 440, 441, 443, 444, 446, 447, 448, 0, 42, - 65, 63, 0, 0, 0, 0, 0, 34, 52, 11, - 211, 92, 0, 88, 91, 0, 0, 97, 99, 98, - 131, 128, 0, 0, 198, 473, 97, 0, 473, 386, - 0, 387, 11, 11, 382, 381, 384, 383, 397, 471, - 489, 364, 0, 0, 0, 0, 343, 350, 0, 161, - 374, 373, 376, 0, 103, 473, 338, 337, 339, 0, - 370, 0, 323, 192, 356, 0, 0, 367, 341, 369, - 372, 322, 357, 0, 368, 0, 155, 233, 153, 232, - 0, 66, 64, 0, 54, 0, 56, 0, 58, 0, - 212, 0, 11, 0, 0, 87, 90, 96, 0, 0, - 136, 132, 0, 199, 11, 196, 0, 0, 142, 0, - 0, 188, 188, 0, 474, 389, 391, 0, 223, 240, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 239, 11, 225, 228, 234, - 235, 0, 236, 237, 238, 290, 291, 327, 330, 260, - 261, 262, 0, 263, 264, 366, 348, 349, 345, 0, + 0, 0, 0, 0, 0, 465, 466, 468, 467, 68, + 479, 0, 480, 11, 211, 99, 98, 131, 128, 92, + 0, 88, 91, 0, 0, 0, 198, 473, 97, 95, + 53, 60, 0, 0, 0, 385, 9, 0, 0, 0, + 390, 0, 0, 326, 0, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 0, 469, 0, + 485, 484, 0, 363, 0, 365, 0, 481, 347, 346, + 0, 344, 0, 0, 0, 188, 375, 0, 0, 341, + 0, 474, 354, 0, 0, 0, 193, 0, 191, 0, + 0, 341, 0, 334, 0, 0, 325, 0, 0, 0, + 353, 335, 0, 0, 0, 418, 420, 422, 424, 426, + 428, 429, 431, 432, 433, 434, 0, 436, 67, 320, + 437, 439, 440, 441, 443, 444, 446, 447, 448, 0, + 212, 11, 11, 0, 136, 132, 0, 0, 0, 87, + 90, 199, 11, 196, 0, 0, 142, 0, 0, 0, + 97, 0, 55, 57, 59, 0, 473, 386, 0, 387, + 11, 11, 382, 381, 384, 383, 397, 471, 489, 364, + 0, 0, 0, 0, 0, 343, 350, 0, 161, 374, + 373, 376, 0, 103, 473, 338, 337, 339, 0, 370, + 0, 323, 192, 356, 0, 367, 341, 369, 372, 322, + 357, 0, 368, 0, 155, 233, 153, 232, 0, 0, + 0, 218, 219, 217, 214, 216, 213, 11, 100, 136, + 11, 0, 0, 101, 94, 0, 0, 89, 201, 11, + 11, 200, 140, 473, 473, 11, 139, 96, 0, 61, + 188, 188, 0, 474, 389, 391, 0, 223, 240, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 11, 239, 11, 225, 228, 234, 235, + 0, 236, 237, 238, 290, 291, 327, 330, 260, 261, + 262, 0, 263, 264, 366, 359, 348, 349, 345, 0, 0, 377, 166, 0, 162, 163, 165, 0, 11, 336, - 104, 0, 361, 278, 472, 355, 0, 359, 0, 360, - 416, 415, 0, 157, 0, 482, 53, 60, 0, 0, - 0, 0, 0, 0, 218, 219, 217, 214, 216, 213, - 0, 101, 94, 0, 0, 89, 84, 100, 136, 11, - 0, 0, 201, 0, 11, 200, 140, 473, 473, 11, - 139, 393, 392, 0, 0, 0, 246, 0, 248, 0, - 0, 0, 293, 0, 250, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 229, 230, 227, 0, 224, - 226, 241, 351, 352, 159, 0, 0, 378, 105, 112, - 23, 0, 11, 107, 110, 340, 0, 286, 0, 273, - 0, 279, 11, 0, 0, 371, 156, 0, 154, 0, - 55, 57, 59, 0, 0, 215, 0, 93, 133, 0, - 11, 129, 134, 0, 0, 207, 0, 0, 208, 203, - 205, 206, 202, 0, 143, 144, 0, 146, 0, 150, - 11, 148, 394, 259, 242, 0, 247, 249, 0, 295, - 298, 0, 294, 0, 251, 0, 0, 253, 70, 318, - 0, 316, 0, 328, 0, 0, 255, 305, 257, 303, - 0, 254, 231, 160, 164, 111, 0, 115, 0, 0, - 109, 117, 184, 113, 114, 0, 116, 106, 108, 285, - 287, 270, 274, 0, 271, 280, 11, 0, 17, 11, - 0, 283, 0, 362, 158, 61, 209, 0, 102, 130, - 135, 0, 184, 184, 0, 0, 0, 0, 187, 210, - 186, 204, 0, 9, 147, 149, 0, 0, 0, 296, - 0, 0, 0, 0, 314, 0, 11, 313, 306, 256, - 311, 304, 0, 155, 0, 0, 0, 0, 167, 0, - 272, 284, 0, 276, 0, 188, 0, 173, 172, 184, - 184, 184, 0, 145, 11, 151, 243, 0, 0, 0, + 104, 0, 361, 278, 472, 355, 0, 0, 360, 416, + 415, 0, 157, 0, 482, 0, 0, 215, 133, 0, + 112, 23, 11, 11, 107, 110, 129, 134, 0, 93, + 0, 0, 207, 0, 0, 208, 203, 205, 206, 202, + 11, 143, 144, 0, 146, 11, 150, 11, 148, 84, + 393, 392, 0, 0, 0, 246, 0, 248, 0, 0, + 0, 293, 0, 250, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 227, 0, 224, 226, + 241, 351, 352, 159, 0, 0, 378, 105, 11, 340, + 0, 286, 0, 273, 0, 279, 11, 0, 0, 371, + 156, 0, 154, 209, 0, 130, 111, 0, 115, 0, + 0, 109, 117, 184, 113, 114, 0, 116, 108, 135, + 102, 0, 184, 184, 0, 0, 0, 0, 187, 210, + 186, 204, 0, 9, 147, 149, 394, 259, 242, 0, + 247, 249, 0, 295, 298, 0, 294, 0, 251, 0, + 0, 253, 70, 318, 0, 316, 0, 328, 0, 0, + 255, 305, 257, 303, 0, 254, 231, 160, 164, 106, + 285, 287, 270, 274, 0, 271, 280, 11, 0, 17, + 11, 0, 283, 0, 362, 158, 188, 155, 0, 0, + 0, 0, 167, 0, 173, 172, 184, 184, 184, 0, + 145, 11, 151, 0, 0, 0, 296, 0, 0, 0, + 0, 314, 0, 11, 313, 306, 256, 311, 304, 0, + 0, 272, 284, 0, 276, 0, 221, 152, 0, 185, + 118, 188, 0, 473, 0, 176, 171, 168, 170, 184, + 120, 398, 11, 11, 461, 0, 243, 0, 0, 0, 297, 299, 268, 244, 252, 315, 317, 0, 0, 258, - 312, 289, 152, 0, 185, 118, 288, 0, 275, 221, - 188, 0, 473, 0, 176, 171, 168, 170, 184, 120, - 398, 11, 11, 461, 0, 0, 0, 300, 0, 267, - 309, 0, 0, 0, 277, 0, 0, 174, 473, 188, - 182, 179, 0, 188, 0, 169, 0, 121, 11, 122, - 341, 0, 0, 245, 302, 301, 0, 269, 0, 188, - 307, 119, 222, 220, 178, 0, 180, 0, 175, 177, - 0, 123, 0, 0, 0, 0, 310, 308, 183, 181, - 0, 0, 125, 124, 292, 0, 0, 126, 127 + 312, 289, 288, 0, 275, 0, 0, 0, 174, 473, + 188, 182, 179, 0, 188, 0, 169, 0, 121, 11, + 122, 341, 0, 0, 0, 0, 300, 0, 267, 309, + 0, 0, 277, 222, 220, 119, 178, 0, 180, 0, + 175, 177, 0, 123, 0, 0, 0, 245, 302, 301, + 0, 269, 0, 188, 307, 183, 181, 0, 0, 125, + 124, 0, 310, 308, 0, 0, 292, 126, 127 }; } @@ -4674,25 +4720,25 @@ private static final short[] yypgoto_init() { return new short[] { - -631, -631, 461, 213, -612, -10, 135, -631, -631, -631, - 898, -631, -4, -631, 816, 889, -631, -631, 728, 219, - -631, 182, 506, -631, -390, -631, 440, -501, -631, 519, - 599, -631, 57, 190, -631, -631, -418, 409, -498, -631, - -631, -631, 210, -631, -631, -631, -631, 418, 423, -631, - -631, -631, 417, -631, -631, 323, -631, -316, 453, -267, - -631, -631, 372, -631, -556, -607, 183, 145, 147, -383, - 286, -60, -166, 154, -389, 509, -631, -631, -631, -631, - 343, -531, -631, -631, -631, -631, 449, -631, -631, -202, - -369, -471, -631, -196, -454, -631, -631, -565, -631, -631, - 246, -631, 382, -631, 381, 384, -488, -631, -631, -631, - -631, -631, -631, 178, -631, -631, -631, 317, -630, -631, - -631, -631, -626, -631, -631, 253, -631, -566, 560, -157, - -631, -631, 96, -85, -631, 615, -11, 714, 575, -272, - -631, -631, -631, -631, 723, 712, -113, -631, -631, -631, - 630, -588, 644, -631, -631, -40, -631, -631, 804, 806, - 809, 814, 818, 517, -631, 386, 434, 512, 4, 659, - 726, -631, 739, 856, 872, -631, -631, -631, -631, -98, - 0, -24, -631, -61, -631 + -680, -680, -1, 35, -665, -27, 23, -680, -680, -680, + 874, -680, 18, -680, 840, 860, -680, -680, 850, 487, + -680, 291, 497, -680, -306, -680, -6, -421, -680, 534, + 654, -680, -255, 184, -680, -680, -448, 377, -453, -680, + -680, -680, 189, -680, -680, -680, -680, 465, 466, -680, + -680, -680, 471, -680, -680, 339, -680, -345, 374, -320, + -680, -680, 317, -680, -502, -569, 175, 132, 139, -623, + 293, -99, -197, 405, -295, 450, -680, -680, -680, -680, + 372, -459, -680, -680, -680, -680, 502, -680, -680, 505, + -405, -496, -680, -228, -349, -680, -680, -581, -680, -680, + 211, -680, 332, -680, 322, 327, -461, -680, -680, -680, + -680, -680, -680, 141, -680, -680, -680, 259, -679, -680, + -680, -680, -664, -680, -680, 217, -680, -584, 390, -218, + -680, -680, -179, -122, -680, 557, 123, 603, 520, -319, + -680, -680, -680, -680, 655, 690, -150, -680, -680, -680, + 577, -628, 539, -680, -680, -52, -680, -680, 758, 760, + 751, 756, 766, 453, -680, 396, 398, 445, 39, 657, + 713, -680, 726, 783, 877, -680, -680, -680, -680, -65, + 136, 117, -680, -80, -680 }; } @@ -4702,25 +4748,25 @@ private static final short[] yydefgoto_init() { return new short[] { - 0, 92, 145, 474, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 226, 38, 53, 233, 234, 235, 528, - 342, 94, 95, 96, 54, 55, 688, 239, 352, 353, - 354, 357, 241, 359, 542, 509, 510, 602, 603, 690, - 691, 692, 775, 811, 56, 361, 440, 441, 550, 57, - 366, 447, 448, 560, 650, 651, 693, 419, 418, 502, - 503, 504, 505, 694, 637, 723, 803, 804, 831, 757, - 729, 189, 180, 181, 58, 59, 363, 364, 445, 554, - 639, 536, 641, 60, 350, 432, 537, 538, 826, 475, - 709, 477, 587, 669, 478, 479, 480, 481, 482, 819, - 514, 608, 609, 610, 611, 612, 710, 699, 483, 484, - 485, 661, 779, 662, 846, 486, 750, 676, 677, 788, - 821, 789, 678, 581, 670, 671, 329, 97, 98, 99, - 286, 287, 173, 174, 278, 279, 147, 148, 102, 169, - 273, 103, 104, 283, 284, 149, 150, 151, 247, 248, - 249, 152, 153, 154, 266, 155, 196, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 156, 126, 442, - 127, 27, 129, 130, 160 + -1, 124, 183, 48, 30, 31, 32, 4, 5, 6, + 7, 8, 9, 92, 34, 49, 70, 71, 72, 282, + 85, 126, 127, 128, 50, 51, 659, 168, 270, 271, + 272, 400, 165, 266, 474, 549, 550, 573, 574, 661, + 662, 663, 752, 792, 52, 268, 384, 385, 471, 53, + 278, 395, 396, 486, 597, 598, 664, 457, 456, 542, + 543, 544, 545, 665, 584, 673, 784, 785, 822, 741, + 679, 228, 219, 220, 54, 55, 275, 276, 393, 480, + 586, 463, 588, 56, 264, 382, 464, 465, 816, 514, + 730, 516, 626, 703, 517, 518, 519, 520, 521, 838, + 554, 642, 643, 644, 645, 646, 731, 720, 522, 523, + 524, 695, 799, 696, 860, 525, 767, 710, 711, 808, + 840, 809, 712, 620, 704, 705, 370, 129, 130, 131, + 328, 329, 212, 213, 320, 321, 185, 186, 134, 208, + 314, 135, 136, 325, 326, 187, 188, 189, 288, 289, + 290, 190, 191, 192, 307, 193, 235, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 194, 158, 386, + 159, 36, 161, 162, 198 }; } @@ -4732,464 +4778,474 @@ private static final short[] yytable_init() { return new short[] { - 26, 105, 40, 159, 476, 590, 282, 660, 186, 417, - 571, 328, 218, 672, 394, 390, 39, 128, 700, 37, - 546, 42, 640, 26, 105, 613, 722, 301, 42, 424, - 100, 179, 178, 42, 426, 310, 406, 178, 26, 1, - 128, 534, 535, 1, 1, 695, 748, 28, 1, 374, - 749, 376, 636, 100, 100, 100, 100, 100, 100, 100, - 186, 649, 413, 28, 35, 170, 170, 178, 178, 161, - 162, 163, 164, 165, 166, 288, 351, 131, 1, 1, - 829, 28, 549, 870, 585, 416, 186, 42, 76, 1, - 77, 182, 695, 78, 182, 182, 170, 170, 79, 48, - 689, 131, 290, 40, 698, 81, 137, 275, 30, 871, - 653, 82, 640, 83, 100, 452, 624, 769, 770, 771, - 703, 748, 707, 1, 790, 86, -473, 512, 105, 219, - 830, 37, 698, 309, 517, 26, 299, 429, 566, 724, - 425, 519, 636, 250, 128, 427, 182, 689, 300, 49, - 534, 535, 649, 34, 801, 50, 194, 100, 40, 5, - -473, 568, 848, 635, 638, 808, 701, 51, 299, 744, - 280, 796, 285, 289, 34, 781, 745, 195, 52, 672, - 182, 801, 567, 134, 100, 170, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 849, 100, 100, 100, - 100, 100, 100, 100, 100, 569, 33, 224, 813, 704, - 380, 687, 696, 16, 720, -32, 623, 335, 336, 337, - 182, 515, 801, 391, 131, 606, 40, 26, 203, 204, - 607, 105, 28, 1, 178, 138, 36, 355, 590, 409, - 39, 205, 206, 139, 146, 1, 178, 128, 131, 190, - 523, 61, 660, 635, 638, 522, 40, 1, 687, 696, - 100, 40, 140, 137, 383, 40, 172, 449, 606, 580, - 453, 291, 292, 607, 410, 2, 141, 499, 588, 632, - 302, 303, 182, 285, 306, 3, 267, 782, 311, 312, - 178, 384, 4, 207, 645, 167, 167, 511, 791, 268, - 674, 1, 520, 178, 500, 177, 604, 6, 136, 8, - 9, 10, 675, 42, 1, 11, 12, 251, 766, 13, - 168, 41, 178, 14, 167, 146, 178, 182, 42, 15, - -388, 40, 711, 1, 296, 543, 197, 1, 721, 767, - 768, 590, 713, 522, 712, 251, 395, 604, 36, 26, - 714, 753, 277, 221, 340, 170, 246, 604, 222, 525, - 289, 396, 844, 341, 847, 289, 178, 590, 454, 855, - 754, 198, 26, 250, 190, 521, 659, 1, 183, 679, - 105, 184, 178, 397, 185, 280, 805, 806, 807, 326, - 170, 561, 562, 1, -141, 289, 128, 369, 685, -141, - 604, 281, 370, 617, 100, 812, 297, 183, 1, 100, - 836, 874, 1, 185, 438, 373, 182, 1, -70, 170, - 385, 728, 358, 450, 389, 835, 178, 201, 604, 202, - 40, 386, 26, 544, 355, 730, 296, 1, 1, 548, - 61, 549, 838, 393, 26, -462, -462, 579, 604, 373, - 379, 182, 182, 199, 1, 619, 434, 620, 183, 449, - 646, 184, 29, 167, 185, 200, 31, 435, 32, -70, - 170, 236, 564, 747, 178, 28, 250, 187, 223, -319, - 188, 190, 76, -266, 77, 1, -319, 78, -266, 225, - -266, 43, 79, 730, 47, 270, 237, 191, 271, 81, - 192, 516, 93, 193, 518, 82, 240, 83, 26, -486, - 763, -486, 654, 655, -486, 191, -486, 252, 840, 86, - 40, 193, 190, 182, 253, 93, 93, 93, 93, 93, - 93, 93, 325, 182, 371, -265, 44, 45, 437, 372, - -265, 784, -265, 269, 443, 171, 381, 556, 289, 26, - 606, 382, 557, 1, 26, 607, 833, 289, 454, 26, - 175, 834, 431, 176, 167, 496, 497, 277, 673, 863, - 864, 338, 228, 229, 851, 230, 231, 232, 238, 834, - 242, 243, 170, 186, 182, 246, 93, 523, 171, 321, - 322, 323, 324, 304, 28, 294, 305, 594, 875, 876, - 595, 76, 26, 77, 841, 295, 78, 842, 208, 209, - 210, 79, 250, 532, 619, 541, 621, 619, 81, 622, - 850, 547, 307, 524, 82, 716, 83, 339, 555, 93, - 26, 171, 349, 220, 182, 524, 727, 792, 86, 213, - 214, 215, 330, 331, 332, 540, 529, 347, 530, 356, - 26, 367, 42, 46, 211, 212, 93, 553, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 171, 93, - 93, 93, 93, 93, 93, 93, 93, 296, 360, 301, - 365, 592, 593, 310, 132, 133, 182, 190, 362, 727, - 343, 344, 345, 346, 216, 217, 42, 428, 42, 526, - 398, 171, 399, 40, 832, 799, 250, 171, 400, 250, - 401, 171, 190, 327, -463, -463, -464, -464, 319, 320, - 402, 601, 532, 333, 334, 186, 182, 403, 404, 171, - 832, 405, 93, 406, 673, 532, 407, 408, 190, 412, - 827, 171, 413, 411, 414, 415, 26, 416, 421, 439, - 420, 422, 368, 182, 433, 101, 220, 444, 446, 451, - 455, 501, 601, 508, 852, 182, 26, 643, 513, 856, - 524, 551, 648, 858, 250, 559, 563, 572, 101, 101, - 101, 101, 101, 101, 101, 105, 220, 573, 190, 867, - 576, 577, 582, 26, 591, 596, 605, 614, 597, 615, - 182, 128, 454, 423, 42, 627, 631, 656, 718, 626, - 652, 250, 250, 657, 100, 601, 658, 171, 725, 664, - 2, 667, 373, 171, 681, 532, 682, 683, 454, 182, - 3, 389, 717, 182, 26, 721, 719, 4, 250, 101, - 190, 737, 732, 601, 171, 171, 171, 738, 739, 182, - 740, 741, 6, 742, 8, 9, 10, 743, 746, 674, - 11, 12, 752, 648, 13, 766, 756, 755, 14, 759, - 814, 725, 712, 711, 15, -286, 93, 761, 765, 274, - 190, 93, 101, 773, 774, 675, 527, 776, 527, 293, - 527, 793, 171, 798, 171, 298, 815, 816, 817, 822, - 171, 824, 825, 308, 818, 843, 313, 171, 853, 101, - 171, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 865, 101, 101, 101, 101, 101, 101, 101, 101, - 857, 872, 860, 487, 873, 171, 862, 533, 358, 868, - 28, 869, 877, 878, 135, 1, 794, 76, 488, 77, - 142, 227, 78, 545, 436, 558, 190, 79, 630, 787, - 171, 171, 348, 375, 81, 377, 628, 795, 684, 820, - 82, 629, 83, 735, 644, 854, 823, 618, 378, 859, - 584, 758, 190, 586, 86, 101, 731, 2, 783, 625, - 702, 705, 29, 388, 706, 845, 751, 3, 786, 314, - 498, 171, 456, 315, 4, 171, 392, 316, 0, 0, - 5, 0, 0, 317, 171, 0, 0, 489, 318, 6, - 0, 8, 9, 10, 487, 0, 0, 11, 12, 0, - 866, 13, 490, 0, 0, 14, 487, 0, 0, 488, - 668, 15, 0, 0, 0, 0, 533, 0, 0, 1, - 220, 488, 0, 0, 0, 0, 0, 276, 28, 634, - 0, -43, 171, 0, 0, 76, 0, 77, 0, 0, - 78, 49, 0, 0, 0, 79, 0, 50, 327, 1, - 715, 0, 81, 0, 0, 327, 28, 171, 82, 51, - 83, 0, 0, 76, 495, 77, 0, 171, 78, 491, - 52, 506, 86, 79, 171, 507, 0, 686, 489, 171, - 81, 0, 492, 0, 0, 325, 82, 0, 83, 0, - 489, 2, 0, 490, 487, 0, 0, 0, 0, 101, - 86, 3, 487, 0, 101, 490, 0, 0, 4, 488, - 1, 170, 726, 0, 5, 0, 0, 488, 0, 634, - 171, 0, 0, 6, 686, 8, 9, 10, 0, 0, - 0, 11, 12, 0, 0, 13, 0, 0, 0, 14, - 0, 0, 487, 565, 0, 15, 0, 28, 0, 575, - 0, 0, 578, 0, 76, 583, 77, 488, 171, 78, - 491, 0, 0, 0, 79, 726, 0, 0, 0, 0, - 0, 81, 491, 492, 0, 0, 668, 82, 489, 83, - 0, 0, 0, 0, 0, 492, 489, 171, 0, 0, - 0, 86, 0, 490, 0, 0, 0, 171, 0, 493, - 0, 490, 0, 220, 616, 810, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 494, 0, 0, 171, 0, - 0, 327, 0, 0, 171, 0, 489, 0, 0, 0, - 0, 0, 171, 0, 0, 0, 487, 0, 0, 487, - 0, 490, 802, 0, 0, 0, 0, 0, 0, 0, - 0, 488, 0, 0, 488, 663, 93, 0, 665, 666, - 491, 0, 0, 101, 680, 171, 0, 0, 491, 802, - 487, 487, 0, 492, 0, 0, 0, 828, 506, 171, - 0, 492, 487, 0, 0, 488, 488, 0, 0, 0, - 493, 0, 0, 0, 0, 0, 0, 488, 0, 0, - 0, 0, 493, 0, 487, 0, 494, 0, 491, 0, - 802, 0, 0, 0, 0, 0, 0, 0, 494, 488, - 489, 492, 0, 489, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 490, 0, 736, 490, 0, - 0, 487, 487, 0, 0, 0, 487, 487, 487, 0, - 0, 0, 0, 0, 489, 489, 488, 488, 0, 0, - 0, 488, 488, 488, 0, 0, 489, 28, 487, 490, - 490, 0, 0, 0, 76, 0, 77, 0, 0, 78, - 0, 490, 0, 488, 79, 0, 0, 0, 489, 0, - 493, 81, 0, 0, 764, 487, 0, 82, 493, 83, - 0, 0, 491, 490, 0, 491, 494, 0, 0, 0, - 488, 86, 0, 0, 494, 492, 0, 0, 492, 777, - 778, 780, 0, 0, 0, 489, 489, 0, 0, 101, - 489, 489, 489, 0, 0, 0, 491, 491, 493, 0, - 490, 490, 0, 0, 797, 490, 490, 490, 491, 492, - 492, 0, 489, 0, 494, 0, 0, 0, 0, 0, - 0, 492, 0, 0, 0, 0, 0, 490, 0, 0, - 491, 0, 0, 0, 0, 0, 0, 0, 0, 489, - 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 490, 0, 531, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 491, 491, 101, - -29, 0, 491, 491, 491, 0, 0, 0, 0, 0, - 492, 492, 0, 0, 0, 492, 492, 492, 1, 0, - 0, -44, 493, 28, 491, 493, 0, 0, 0, 0, - 76, 0, 77, 0, 0, 78, 49, 492, 494, 1, - 79, 494, 50, 0, 0, 0, 0, 81, 0, 0, - 0, 491, 0, 82, 51, 83, 493, 493, 0, 0, - 2, 0, 0, 0, 492, 52, 0, 86, 493, 0, - 3, 0, 494, 494, 0, 0, 0, 4, 0, 0, - 0, 2, 0, 5, 494, 0, 0, 0, -11, 0, - 493, 3, 6, 7, 8, 9, 10, 0, 4, 0, - 11, 12, 0, 0, 13, 0, 494, 0, 14, 0, - 0, 0, 0, 6, 15, 8, 9, 10, 0, 0, - 0, 11, 12, 531, 237, 13, 0, 493, 493, 14, - 0, 0, 493, 493, 493, 15, 0, 0, 0, 0, - 0, 0, 0, 494, 494, 0, 0, 0, 494, 494, - 494, 0, 0, 457, 493, 373, -281, 0, 0, 0, - 28, 459, 0, 0, 0, 0, 0, 76, 1, 77, - 494, 0, 78, 49, 0, 0, 0, 79, 0, 50, - 0, 493, 0, 0, 81, 0, 0, 0, 0, 0, - 82, 51, 83, 0, 0, 69, 70, 494, 0, 0, - 0, 0, 52, 0, 86, 460, 72, 73, 74, 75, - 2, 461, 76, 462, 77, 606, 0, 78, 633, 463, - 708, 464, 79, 0, 0, 0, 80, 4, 0, 81, - 465, 466, 0, 0, 0, 82, 0, 83, 0, 0, - 84, 85, 6, 0, 8, 9, 10, 0, 467, 86, - 11, 12, 87, 468, 469, 89, 470, 0, 14, 0, - 90, 471, 0, 91, 15, 472, 473, 457, 0, 373, - 760, 0, 0, 0, 0, 459, 0, -399, 0, 0, - 0, 0, 1, -399, -399, -399, -399, -399, -399, -399, - -399, -399, -399, -399, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 460, - 72, 73, 74, 75, 2, 461, 76, 462, 77, 606, - 0, 78, 0, 463, 708, 464, 79, 0, 0, 0, - 80, 4, 0, 81, 465, 466, 0, 0, 0, 82, - 0, 83, 0, 0, 84, 85, 6, 0, 8, 9, - 10, 0, 467, 86, 11, 12, 87, 468, 469, 89, - 470, 0, 14, 0, 90, 471, 0, 91, 15, 472, - 473, 457, 0, 373, -282, 0, 0, 0, 0, 459, - 0, -400, 0, 0, 0, 0, 1, -400, -400, -400, - -400, -400, -400, -400, -400, -400, -400, -400, 0, 0, + 12, 13, 14, 225, 429, 343, 515, 257, 59, 433, + 37, 672, 721, 351, 324, 43, 197, 41, 369, 629, + 587, 455, 137, 398, 218, 33, 722, 316, 217, -29, + 694, 765, 596, 451, 706, 333, 334, 41, 175, 16, + 599, 209, 29, 43, 137, 344, 766, 209, 347, 744, + 745, 209, 352, 353, 57, 205, 41, 177, 583, 10, + 233, 225, 206, 217, 603, 86, 87, 88, 89, 58, + 666, 167, 169, 125, 16, 461, 820, 332, 782, 16, + 868, 234, 57, 64, 174, 640, 462, 555, 225, 765, + 641, 33, 647, 666, 63, 125, 125, 125, 125, 125, + 125, 125, 535, 810, 11, 746, 747, 748, 29, 38, + 39, 454, 1, 782, 565, 210, 269, 2, 341, 552, + 668, 209, 3, 786, 787, 788, 821, 317, 58, 669, + 342, 587, 558, 180, 725, 64, 199, 200, 201, 202, + 203, 204, 812, 35, 596, 488, 605, 330, 81, 176, + 436, 660, 60, 577, 610, 137, 125, 350, 210, 607, + 782, 461, 16, 210, 279, 35, 826, 794, 178, 583, + 35, 10, 462, 582, 660, 281, 801, 281, 706, 281, + 789, 724, 10, 728, 585, 668, 15, 422, 539, 64, + 606, 160, 341, 640, 35, 447, 258, 132, 641, -473, + 217, 83, 75, 608, 242, 243, 125, 624, 210, 35, + 84, 16, 397, 160, 423, 540, 287, 244, 245, 132, + 132, 132, 132, 132, 132, 132, 430, 64, 214, 35, + 448, 215, 418, 125, 629, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 210, 125, 125, 125, 125, + 125, 125, 125, 125, 687, 694, 240, 562, 241, 221, + 137, 217, 221, 221, 59, 556, 658, 557, 217, 246, + 217, 217, 16, 210, 308, 1, 60, 667, 64, 16, + 132, 16, 16, 76, 582, 627, 210, 309, 217, 658, + 210, 376, 377, 378, 862, 585, -141, 629, 381, 16, + 667, -141, 273, 559, 247, 248, 249, 470, 210, 491, + 16, 125, 738, 341, 16, 421, 566, 291, 592, 671, + 221, 210, 475, 708, 160, 342, 77, 205, 863, 734, + 132, 735, 205, 629, 206, 709, 737, 205, 60, 206, + 78, 492, 732, -388, 206, 322, 793, 327, 331, 74, + 79, -473, 207, 292, 733, 221, 41, 132, 292, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 551, + 132, 132, 132, 132, 132, 132, 132, 132, 564, 41, + 210, 82, 210, 693, 40, 184, 210, 829, 209, 41, + 60, 600, 601, 210, 217, 221, 210, -266, 210, 35, + 489, 560, -266, 331, -266, 16, 137, 211, 60, 802, + 401, 260, 402, 331, 90, 561, 261, 467, 397, 593, + 811, 210, 210, 210, 164, 222, 205, 479, 827, 160, + 16, 224, 217, 206, 743, 132, -70, 209, 217, 60, + 323, 250, 251, 16, 60, 287, 513, 434, 60, 16, + 163, 16, 125, 651, 339, 265, 209, 125, 388, 561, + 221, 327, 435, -462, -462, 16, 210, 10, 428, 389, + 217, 424, 184, 166, 108, 210, 109, 222, 210, 110, + 223, 16, 425, 224, 111, 170, 858, 205, 861, 209, + 222, 113, 217, 223, 41, 226, 224, 114, 227, 115, + 319, -70, 209, 16, 221, 572, 311, 688, 689, 312, + 432, 118, 210, 855, 856, 590, 217, 291, 35, 847, + 595, 16, 876, 476, 273, 674, 761, 16, 35, -486, + 171, -486, 229, 762, -486, 411, -486, 367, 210, 210, + 562, 678, 493, 41, 42, -319, 35, 291, 874, 875, + 513, -265, -319, 401, 407, 403, -265, 409, -265, 408, + 322, 230, 410, 230, 231, 391, 831, 232, 419, 232, + 331, 210, 795, 420, 482, 160, 132, 210, 172, 483, + 225, 132, 210, 572, 216, 633, 640, 824, 634, 210, + 221, 641, 825, 60, 210, 345, 221, 845, 346, 236, + 417, 832, 825, 291, 833, 331, 35, 173, 572, 343, + 60, 237, 618, 351, 411, 291, 35, 702, 238, 331, + 493, 35, 239, 401, 338, 404, 221, 221, 61, 62, + 65, 66, 595, 67, 68, 69, 262, 776, 362, 363, + 364, 365, 252, 253, 254, 371, 372, 373, 852, 35, + 263, 291, 854, 469, 277, 470, 259, 274, 563, 210, + 653, 563, 293, 777, 229, 283, 267, 284, 310, 225, + 41, 179, 459, 572, 468, 209, 210, 133, 473, 255, + 256, 513, 818, 294, 35, 481, 41, 280, -463, -463, + 487, -464, -464, 360, 361, 374, 375, 16, 221, 133, + 133, 133, 133, 133, 133, 133, 336, 337, 35, 35, + 348, 383, 387, 536, 537, 319, 392, 221, 823, 677, + 379, 848, 399, 394, 205, 850, 291, 41, 437, 338, + 438, 35, 439, 35, 440, 843, 441, 442, 444, 210, + 443, 707, 210, 368, 445, 450, 446, 451, 449, 452, + 791, 453, 458, 485, 823, 541, 454, 548, 459, 221, + 133, 702, 513, 137, 873, 513, 553, 472, 563, 576, + 459, 490, 578, 229, 35, 494, 602, 210, 579, 611, + 612, 210, 291, 615, 406, 616, 513, 621, 259, 630, + 635, 639, 654, 221, 60, 636, 677, 412, 807, 414, + 655, 526, 411, 682, 648, 649, 210, 690, 671, 686, + 133, 229, 221, 691, 125, 698, 701, 715, 692, 259, + 716, 717, 428, 736, 210, 739, 740, 513, 513, 743, + 631, 632, 751, 754, 750, 755, 756, 133, 757, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 758, + 133, 133, 133, 133, 133, 133, 133, 133, 759, 760, + 763, 210, 769, 291, 513, 229, 291, 708, 770, 670, + 733, 778, 221, 221, 675, 732, -286, 772, 460, 35, + 796, 459, 814, 815, 834, 707, 709, 291, 835, 229, + 836, 837, 841, 526, 484, 315, 842, 844, 849, 35, + 857, 867, 866, 865, 869, 526, 335, 870, -43, 877, + 871, 878, 340, 93, 35, 133, 73, 221, 80, 493, + 349, 91, 477, 354, 779, 638, 16, 390, 291, 291, + 780, 527, 160, -399, 568, 569, 685, 652, 132, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + 528, 675, 718, 817, 591, 493, 221, 851, 846, 742, + 221, 35, 681, 625, 460, 291, 726, 338, 17, 567, + 803, 727, 768, 259, 723, 575, 581, 859, 18, 806, + 431, 538, 413, 16, 415, 19, 229, 495, 357, 0, + 575, 1, 355, 526, 358, 0, 356, 416, 0, 221, + 20, 526, 21, 22, 23, 359, 0, 0, 24, 25, + 623, 0, 26, 427, 0, 619, 27, 0, 0, 0, + 10, 0, 28, 527, 0, 0, 0, 108, 229, 109, + 0, 265, 110, 0, 0, 527, 526, 111, 0, 0, + 0, 0, 528, 0, 113, 0, 0, 0, 0, 0, + 114, 0, 115, 575, 528, 0, 133, 0, 0, 0, + 0, 133, 229, 0, 118, 0, 0, 0, 529, 657, + 0, 0, 0, 0, 0, 0, 656, 366, 575, 0, + 676, 229, 0, 0, 0, 0, 0, 581, 0, 680, + 0, 0, 657, 0, 0, 0, 0, 0, 839, 0, + 0, 0, 575, 0, 0, 0, 0, 0, 368, -32, + 534, 0, 0, 0, 0, 368, 0, 526, 546, 0, + 526, 0, 547, 527, 530, 713, 0, 16, 0, 0, + 0, 527, 0, 0, 0, 0, 0, 531, 0, 0, + 0, 526, 528, 575, 0, 0, 0, 526, 526, 0, + 528, 0, 0, 872, 0, 0, 0, 676, 0, 526, + 529, 0, 0, 0, 0, 0, 527, 0, 0, 17, + 0, 680, 529, 0, 259, 0, 0, 0, 0, 18, + 0, 0, 526, 526, 0, 528, 19, 0, 229, 0, + 604, 0, 0, 0, 532, 0, 614, 0, 0, 617, + 0, 20, 622, 21, 22, 23, 0, 0, 0, 24, + 25, 0, 0, 26, 764, 0, 530, 27, 0, 526, + 0, 133, 0, 28, 229, 526, 526, 526, 530, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, + 783, 531, 0, 0, -44, 0, 0, 527, 0, 0, + 527, 650, 0, 0, 0, 0, 0, 0, 0, 368, + 529, 526, 16, 0, 0, 804, 528, 0, 529, 528, + 0, 527, 0, 0, 0, 783, 0, 527, 527, 819, + 0, 0, 0, 0, 0, 0, 532, 0, 533, 527, + 528, 0, 0, 0, 0, 0, 528, 528, 532, 0, + 0, 0, 697, 529, 17, 699, 700, 0, 528, 0, + 0, 714, 527, 527, 18, 0, 530, 0, 0, 0, + 0, 19, 783, 0, 530, 546, 0, 0, 0, 531, + 0, 528, 528, 0, 0, 0, 20, 531, 21, 22, + 23, 0, 0, 0, 24, 25, 864, 0, 26, 527, + 0, 0, 27, 0, 0, 527, 527, 527, 28, 530, + 0, 0, 0, 0, 0, 133, 0, 16, 528, 0, + 0, 380, 531, 0, 528, 528, 528, 0, 0, 753, + 533, 0, 0, 16, 529, 0, 532, 529, 0, 0, + 0, 527, 533, 0, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 529, 0, + 528, 108, 0, 109, 529, 529, 110, 0, 133, 0, + 0, 111, 0, 775, 0, 17, 529, 0, 113, 532, + 0, 0, 0, 0, 114, 18, 115, 0, 0, 0, + 530, 0, 19, 530, 797, 798, 800, 0, 118, 529, + 529, 0, 0, 531, 0, 0, 531, 20, 0, 21, + 22, 23, 749, 813, 530, 24, 25, 0, 0, 26, + 530, 530, 0, 27, 0, 0, 0, 531, 0, 28, + 533, 0, 530, 531, 531, 0, 529, 0, 533, 0, + 0, 0, 529, 529, 529, 531, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 530, 530, 108, 0, 109, + 532, 0, 110, 532, 0, 0, 0, 111, 531, 531, + 0, 0, 0, 533, 113, 0, 0, 0, 529, 0, + 114, 0, 115, 0, 532, 466, 0, 0, 0, 0, + 532, 532, 530, 0, 118, 0, 0, 16, 530, 530, + 530, 0, 532, 0, 0, 531, 0, 405, -400, 0, + 0, 531, 531, 531, -400, -400, -400, -400, -400, -400, + -400, -400, -400, -400, -400, 532, 532, 0, 0, 0, + 0, 0, 0, 0, 530, 0, 0, 411, -137, 17, + 0, 0, 0, 570, 0, 0, 0, 531, 0, 18, + 16, 0, 0, 0, 533, 0, 19, 533, 0, 0, + 0, 0, 532, 0, 0, 0, 0, 0, 532, 532, + 532, 20, 0, 21, 22, 23, 0, 0, 533, 24, + 25, 0, 0, 26, 533, 533, 0, 27, 0, 0, + 0, 0, 17, 28, 0, 0, 533, 0, 0, 0, + 0, 0, 18, 0, 532, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 496, 0, 411, -281, 533, + 533, 0, 0, 498, 20, 0, 21, 22, 23, 0, + 16, 0, 571, 25, 0, 0, 26, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 533, 101, 102, 0, + 0, 0, 533, 533, 533, 0, 0, 499, 104, 105, + 106, 107, 17, 500, 108, 501, 109, 640, 0, 110, + 0, 502, 729, 503, 111, 0, 0, 0, 112, 19, + 0, 113, 504, 505, 0, 0, 16, 114, 533, 115, + 0, 0, 116, 117, 20, 0, 21, 22, 23, 0, + 506, 118, 24, 25, 119, 507, 508, 121, 509, 0, + 27, 0, 122, 510, 0, 123, 28, 511, 512, 496, + 0, 411, 771, 10, 10, 0, 0, 498, 0, 0, + 108, 108, 109, 109, 16, 110, 110, 0, 0, 0, + 111, 111, 0, 0, 0, 0, 0, 113, 113, 0, + 0, 0, 0, 114, 114, 115, 115, 0, 0, 0, + 0, 101, 102, 0, 0, 0, 0, 118, 118, 0, + 0, 499, 104, 105, 106, 107, 17, 500, 108, 501, + 109, 640, 0, 110, 0, 502, 729, 503, 111, 0, + 0, 0, 112, 19, 0, 113, 504, 505, 0, 0, + 0, 114, 0, 115, 0, 0, 116, 117, 20, 0, + 21, 22, 23, 0, 506, 118, 24, 25, 119, 507, + 508, 121, 509, 0, 27, 0, 122, 510, 0, 123, + 28, 511, 512, 496, 0, 411, -282, 0, 0, 0, + 0, 498, 0, 295, 0, 0, 0, 0, 16, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 460, 72, 73, 74, 75, 2, 461, - 76, 462, 77, -282, 0, 78, 0, 463, 3, 464, - 79, 0, 0, 0, 80, 4, 0, 81, 465, 466, - 0, 0, 0, 82, 0, 83, 0, 0, 84, 85, - 6, 0, 8, 9, 10, 0, 467, 86, 11, 12, - 87, 468, 469, 89, 470, 0, 14, 0, 90, 471, - 0, 91, 15, 472, 473, 457, 0, 373, 809, 0, - 0, 0, 0, 459, 0, 0, 254, 0, 0, 0, - 1, 170, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 460, 72, 73, - 74, 75, 2, 461, 76, 462, 77, 0, 0, 78, - 0, 463, 3, 464, 79, 0, 0, 0, 80, 4, - 0, 81, 465, 466, 0, 0, 1, 82, 0, 83, - 0, 0, 84, 85, 6, 0, 8, 9, 10, 0, - 467, 86, 11, 12, 87, 468, 469, 89, 470, 0, - 14, 0, 90, 471, 0, 91, 15, 472, 473, 457, - 0, 373, 458, 28, 0, 0, 0, 459, 0, 0, - 76, 0, 77, 0, 1, 78, 0, 0, 0, 0, - 79, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 0, 0, 0, 82, 0, 83, 0, 0, 0, 0, - 0, 69, 70, 0, 0, 0, 0, 86, 0, 0, - 0, 460, 72, 73, 74, 75, 2, 461, 76, 462, - 77, 772, 0, 78, 0, 463, 3, 464, 79, 0, - 0, 0, 80, 4, 0, 81, 465, 466, 0, 0, - 0, 82, 0, 83, 0, 0, 84, 85, 6, 0, - 8, 9, 10, 0, 467, 86, 11, 12, 87, 468, - 469, 89, 470, 0, 14, 0, 90, 471, 0, 91, - 15, 472, 473, 457, 0, 373, 589, 0, 0, 0, - 0, 459, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, + 0, 0, 0, 0, 0, 499, 104, 105, 106, 107, + 17, 500, 108, 501, 109, -282, 0, 110, 0, 502, + 18, 503, 111, 0, 0, 0, 112, 19, 0, 113, + 504, 505, 0, 0, 0, 114, 0, 115, 0, 0, + 116, 117, 20, 0, 21, 22, 23, 0, 506, 118, + 24, 25, 119, 507, 508, 121, 509, 0, 27, 0, + 122, 510, 0, 123, 28, 511, 512, 496, 0, 411, + 790, 0, 0, 0, 0, 498, 0, 0, 0, 0, + 0, 0, 16, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 0, 0, 0, 0, 0, 0, 0, 0, 499, + 104, 105, 106, 107, 17, 500, 108, 501, 109, 0, + 0, 110, 0, 502, 18, 503, 111, 0, 0, 0, + 112, 19, 0, 113, 504, 505, 0, 0, 0, 114, + 0, 115, 0, 0, 116, 117, 20, 0, 21, 22, + 23, 0, 506, 118, 24, 25, 119, 507, 508, 121, + 509, 0, 27, 0, 122, 510, 0, 123, 28, 511, + 512, 496, 0, 411, 497, 0, 0, 0, 0, 498, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 70, 0, 0, 0, - 0, 0, 0, 0, 0, 460, 72, 73, 74, 75, - 2, 461, 76, 462, 77, 0, 0, 78, 0, 463, - 3, 464, 79, 0, 0, 0, 80, 4, 0, 81, - 465, 466, 0, 0, 0, 82, 0, 83, 0, 0, - 84, 85, 6, 0, 8, 9, 10, 0, 467, 86, - 11, 12, 87, 468, 469, 89, 470, 0, 14, 0, - 90, 471, 0, 91, 15, 472, 473, 457, 0, 373, - 837, 0, 0, 0, 0, 459, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 460, - 72, 73, 74, 75, 2, 461, 76, 462, 77, 0, - 0, 78, 0, 463, 3, 464, 79, 0, 0, 0, - 80, 4, 0, 81, 465, 466, 0, 0, 0, 82, - 0, 83, 0, 0, 84, 85, 6, 0, 8, 9, - 10, 0, 467, 86, 11, 12, 87, 468, 469, 89, - 470, 0, 14, 0, 90, 471, 0, 91, 15, 472, - 473, 457, 0, 373, 839, 0, 0, 0, 0, 459, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 499, 104, 105, 106, 107, 17, 500, + 108, 501, 109, 0, 0, 110, 0, 502, 18, 503, + 111, 0, 0, 0, 112, 19, 0, 113, 504, 505, + 0, 0, 0, 114, 0, 115, 0, 0, 116, 117, + 20, 0, 21, 22, 23, 0, 506, 118, 24, 25, + 119, 507, 508, 121, 509, 0, 27, 0, 122, 510, + 0, 123, 28, 511, 512, 496, 0, 411, 628, 0, + 0, 0, 0, 498, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, + 0, 0, 0, 0, 0, 0, 0, 499, 104, 105, + 106, 107, 17, 500, 108, 501, 109, 0, 0, 110, + 0, 502, 18, 503, 111, 0, 0, 0, 112, 19, + 0, 113, 504, 505, 0, 0, 0, 114, 0, 115, + 0, 0, 116, 117, 20, 0, 21, 22, 23, 0, + 506, 118, 24, 25, 119, 507, 508, 121, 509, 0, + 27, 0, 122, 510, 0, 123, 28, 511, 512, 496, + 0, 411, 828, 0, 0, 0, 0, 498, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 460, 72, 73, 74, 75, 2, 461, - 76, 462, 77, 0, 0, 78, 0, 463, 3, 464, - 79, 0, 0, 0, 80, 4, 0, 81, 465, 466, - 0, 0, 0, 82, 0, 83, 0, 0, 84, 85, - 6, 0, 8, 9, 10, 0, 467, 86, 11, 12, - 87, 468, 469, 89, 470, 0, 14, 0, 90, 471, - 0, 91, 15, 472, 473, 457, 0, 373, 861, 0, - 0, 0, 0, 459, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 460, 72, 73, - 74, 75, 2, 461, 76, 462, 77, 0, 0, 78, - 0, 463, 3, 464, 79, 0, 0, 0, 80, 4, - 0, 81, 465, 466, 0, 0, 0, 82, 0, 83, - 0, 0, 84, 85, 6, 0, 8, 9, 10, 0, - 467, 86, 11, 12, 87, 468, 469, 89, 470, 0, - 14, 0, 90, 471, 0, 91, 15, 472, 473, 457, - 0, 373, 0, 0, 0, 0, 0, 459, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 101, 102, 0, 0, 0, 0, 0, 0, 0, + 0, 499, 104, 105, 106, 107, 17, 500, 108, 501, + 109, 0, 0, 110, 0, 502, 18, 503, 111, 0, + 0, 0, 112, 19, 0, 113, 504, 505, 0, 0, + 0, 114, 0, 115, 0, 0, 116, 117, 20, 0, + 21, 22, 23, 0, 506, 118, 24, 25, 119, 507, + 508, 121, 509, 0, 27, 0, 122, 510, 0, 123, + 28, 511, 512, 496, 0, 411, 830, 0, 0, 0, + 0, 498, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 460, 72, 73, 74, 75, 0, 461, 76, 462, - 77, 0, 0, 78, 0, 463, 0, 464, 79, 0, - 0, 1, 80, 0, 0, 81, 465, 466, 0, 387, - 0, 82, 0, 83, 0, 0, 84, 85, 0, 0, - 0, 0, 0, 0, 467, 86, 0, 0, 87, 468, - 570, 89, 470, 143, 244, 0, 90, 471, 28, 91, - 0, 472, 473, 0, 0, 76, 0, 77, 1, 0, - 78, 0, 65, 66, 0, 79, 0, 0, 0, 67, - 68, 0, 81, 0, 0, 0, 0, 0, 82, 0, - 83, 0, 0, 0, 0, 69, 70, 0, 0, 0, - 0, 0, 86, 0, 0, 245, 72, 73, 74, 75, - 2, 0, 76, 0, 77, 0, 0, 78, 0, 1, - 3, 0, 79, 0, 0, 0, 80, 4, 0, 81, - 0, 0, 0, 0, 0, 82, 0, 83, 0, 0, - 84, 85, 6, 0, 8, 9, 10, 0, 0, 86, - 11, 12, 87, 88, 13, 89, 0, 0, 14, 0, - 90, 2, 0, 91, 15, 62, 63, 64, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 4, 0, - 1, 0, 0, 0, 65, 66, 0, 0, 0, 0, - 0, 67, 68, 6, 0, 8, 9, 10, 0, 0, - 0, 11, 12, 0, 0, 13, 0, 69, 70, 14, - 0, 0, 0, 0, 0, 15, 0, 71, 72, 73, - 74, 75, 0, 0, 76, 0, 77, 0, 0, 78, - 0, 62, 0, 64, 79, 0, 0, 157, 80, 0, - 0, 81, 0, 0, 0, 0, 1, 82, 0, 83, - 65, 66, 84, 85, 0, 0, 0, 67, 68, 0, - 0, 86, 0, 0, 87, 88, 0, 89, 0, 0, - 0, 0, 90, 69, 70, 91, 0, 0, 0, 0, - 0, 0, 0, 158, 72, 73, 74, 75, 0, 0, - 76, 0, 77, 0, 0, 78, 0, 143, 0, 373, - 79, 0, 0, 0, 80, 0, 0, 81, 0, 0, - 0, 0, 1, 82, 0, 83, 65, 66, 84, 85, - 0, 0, 0, 67, 68, 0, 0, 86, 0, 0, - 87, 88, 0, 89, 0, 0, 0, 0, 90, 69, - 70, 91, 0, 0, 0, 0, 0, 0, 0, 144, - 72, 73, 74, 75, 0, 0, 76, 0, 77, 0, - 0, 78, 0, 143, 272, 0, 79, 0, 0, 0, - 80, 0, 0, 81, 0, 0, 0, 0, 1, 82, - 0, 83, 65, 66, 84, 85, 0, 0, 0, 67, - 68, 0, 0, 86, 0, 0, 87, 88, 0, 89, - 762, 0, 0, 0, 90, 69, 70, 91, 0, 0, - 0, 0, 0, 0, 0, 144, 72, 73, 74, 75, - 0, 0, 76, 0, 77, 0, 0, 78, 0, 62, - 0, 64, 79, 0, 0, 0, 80, 0, 0, 81, - 0, 0, 0, 0, 1, 82, 0, 83, 65, 66, - 84, 85, 0, 0, 0, 67, 68, 0, 0, 86, - 0, 0, 87, 88, 0, 89, 0, 0, 0, 0, - 90, 69, 70, 91, 0, 0, 0, 0, 0, 0, - 0, 158, 72, 73, 74, 75, 0, 0, 76, 0, - 77, 0, 0, 78, 0, 143, 0, 373, 79, 0, - 0, 0, 80, 0, 0, 81, 0, 0, 0, 0, - 1, 82, 0, 83, 65, 66, 84, 85, 0, 0, - 0, 67, 68, 0, 0, 86, 0, 0, 87, 88, - 0, 89, 0, 0, 0, 0, 90, 69, 70, 91, - 0, 0, 0, 0, 0, 0, 0, 144, 72, 73, - 74, 75, 0, 0, 76, 0, 77, 0, 0, 78, - 0, 143, 0, 0, 79, 0, 294, 0, 80, 0, - 0, 81, 0, 0, 0, 0, 1, 82, 0, 83, - 65, 66, 84, 85, 0, 0, 0, 67, 68, 0, - 0, 86, 0, 0, 87, 88, 0, 89, 0, 0, - 0, 0, 90, 69, 70, 91, 0, 0, 0, 0, - 0, 0, 0, 144, 72, 73, 74, 75, 0, 0, - 76, 0, 77, 0, 0, 78, 0, 143, 0, 389, - 79, 0, 0, 0, 80, 0, 0, 81, 0, 0, - 0, 0, 1, 82, 0, 83, 65, 66, 84, 85, - 0, 0, 0, 67, 68, 0, 0, 86, 0, 0, - 87, 88, 0, 89, 0, 0, 0, 0, 90, 69, - 70, 91, 0, 0, 0, 0, 0, 0, 0, 144, - 72, 73, 74, 75, 0, 0, 76, 0, 77, 0, - 0, 78, 0, 143, 0, 0, 79, 0, 403, 0, - 80, 0, 0, 81, 0, 0, 0, 0, 1, 82, - 0, 83, 65, 66, 84, 85, 0, 0, 0, 67, - 68, 0, 0, 86, 0, 0, 87, 88, 0, 89, - 0, 0, 0, 0, 90, 69, 70, 91, 0, 0, - 0, 0, 0, 0, 0, 144, 72, 73, 74, 75, - 0, 0, 76, 0, 77, 0, 0, 78, 0, 143, - 0, 0, 79, 0, 0, 0, 80, 574, 0, 81, - 0, 0, 0, 0, 1, 82, 0, 83, 65, 66, - 84, 85, 0, 0, 0, 67, 68, 0, 0, 86, - 0, 0, 87, 88, 0, 89, 0, 0, 0, 0, - 90, 69, 70, 91, 0, 0, 0, 0, 0, 0, - 0, 144, 72, 73, 74, 75, 0, 0, 76, 0, - 77, 0, 0, 78, 0, 143, 0, 0, 79, 0, - 0, 0, 80, 0, 0, 81, 0, 0, 0, 0, - 1, 82, 0, 83, 65, 66, 84, 85, 0, 0, - 0, 67, 68, 0, 0, 86, 0, 0, 87, 88, - 0, 89, 0, 0, 0, 0, 90, 69, 70, 91, - 0, 0, 0, 0, 0, 0, 0, 144, 72, 73, - 74, 75, 0, 0, 76, 0, 77, 0, 0, 78, - 0, 62, 0, 0, 79, 0, 0, 0, 80, 0, - 0, 81, 0, 0, 0, 0, 1, 82, 0, 83, - 65, 66, 84, 85, 0, 0, 0, 67, 68, 0, - 0, 86, 0, 0, 87, 88, 0, 89, 0, 0, - 0, 0, 90, 69, 70, 91, 0, 0, 0, 0, - 0, 0, 0, 158, 72, 73, 74, 75, 0, 0, - 76, 0, 77, 457, 0, 78, 0, 0, 0, 0, - 79, 0, 0, 0, 80, 0, 0, 81, 1, 0, - 0, 0, 0, 82, 0, 83, 0, 0, 84, 85, - 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, - 87, 88, 0, 89, 0, 69, 70, 0, 90, 0, - 0, 91, 0, 0, 0, 158, 72, 73, 74, 75, - 0, 0, 76, 0, 77, 457, 0, 78, 0, 0, - 0, 0, 79, 0, 0, 0, 80, 0, 0, 81, - 1, 0, 0, 0, 0, 82, 0, 83, 0, 0, - 84, 85, 0, 0, 0, 0, 0, 0, 0, 86, - 0, 0, 87, 0, 0, 89, 0, 69, 70, 0, - 90, 0, 325, 91, 0, 0, 0, 158, 72, 73, - 74, 75, 0, 0, 76, 0, 77, 457, 785, 78, - 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, - 0, 81, 1, 0, 0, 0, 0, 82, 0, 83, - 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, - 0, 86, 0, 0, 87, 0, 0, 89, 0, 0, - 0, 0, 90, 0, 0, 91, 0, 0, 0, 158, - 72, 73, 74, 75, 0, 0, 76, 457, 77, 0, - 0, 78, 0, 0, 0, 0, 79, 0, 0, 0, - 80, 0, 1, 81, 0, 0, 0, 0, 0, 82, - 0, 83, 0, 0, 84, 85, 0, 0, 0, 0, - 0, 0, 0, 86, 0, 0, 87, 0, 0, 89, - 0, 0, 0, 0, 90, 0, 325, 91, 0, 158, - 72, 73, 74, 75, 800, 0, 76, 0, 77, 0, - 0, 78, 0, 0, 0, 0, 79, 0, 1, 0, - 80, 0, 0, 81, 0, 0, 373, 598, 0, 82, - 0, 83, 599, 0, 84, 85, 0, 0, 0, 1, - 0, 0, 0, 86, 0, 0, 87, 0, 0, 89, - 0, 0, 0, 0, 90, 28, 325, 91, 0, 0, - 2, 0, 76, 0, 77, 373, -137, 78, 0, 0, - 3, 599, 79, 0, 0, 0, 0, 4, 1, 81, - 0, 2, 0, 0, 0, 82, 0, 83, 0, 0, - 0, 3, 6, 0, 8, 9, 10, 0, 4, 86, - 11, 12, 0, 0, 13, 0, 0, 0, 14, 0, - 0, 0, 0, 6, 15, 8, 9, 10, 373, 647, - 2, 600, 12, 0, 599, 13, 0, 0, 0, 14, - 3, 1, 0, 0, 0, 15, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, + 0, 0, 0, 0, 0, 499, 104, 105, 106, 107, + 17, 500, 108, 501, 109, 0, 0, 110, 0, 502, + 18, 503, 111, 0, 0, 0, 112, 19, 0, 113, + 504, 505, 0, 0, 0, 114, 0, 115, 0, 0, + 116, 117, 20, 0, 21, 22, 23, 0, 506, 118, + 24, 25, 119, 507, 508, 121, 509, 0, 27, 0, + 122, 510, 0, 123, 28, 511, 512, 496, 0, 411, + 853, 0, 0, 0, 0, 498, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 8, 9, 10, 373, 697, 0, - 600, 12, 0, 599, 13, 0, 0, 0, 14, 0, - 1, 0, 0, 2, 15, 0, 0, 0, 373, -138, - 0, 0, 0, 3, 599, 0, 0, 0, 0, 0, - 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 0, 8, 9, 10, - 0, 0, 2, 600, 12, 0, 0, 13, 0, 0, - 0, 14, 3, 0, 373, 734, 0, 15, 0, 4, - 599, 0, 0, 2, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 3, 6, 0, 8, 9, 10, 0, - 4, 0, 600, 12, 0, 0, 13, 0, 430, 0, - 14, 0, 0, 0, 0, 6, 15, 8, 9, 10, - 1, 0, 0, 600, 12, 0, 0, 13, 0, 2, - 0, 14, 0, 0, 0, 0, 539, 15, 0, 3, - 0, 0, 0, 0, 0, 0, 4, 552, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 6, 2, 8, 9, 10, 0, 0, 0, 600, - 12, 0, 3, 13, 0, 642, 0, 14, 0, 4, - 0, 0, 0, 15, 0, 0, 0, 1, 0, 0, - 2, 0, 0, 0, 6, 0, 8, 9, 10, 0, - 3, 2, 11, 12, 0, 0, 13, 4, 0, 0, - 14, 3, 0, 0, 0, 0, 15, 0, 4, 0, - 0, 0, 6, 0, 8, 9, 10, 0, 0, 2, - 11, 12, 0, 6, 13, 8, 9, 10, 14, 3, - 0, 11, 12, 1, 15, 13, 4, 0, 0, 14, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 6, 0, 8, 9, 10, 0, 0, 0, 11, - 12, 0, 0, 13, 0, 0, 0, 14, 0, 0, - 28, 0, 0, 15, 0, 2, 0, 76, 0, 77, - 0, 0, 78, 0, 0, 3, 0, 79, 48, 237, - 0, 0, 4, 0, 81, 0, 0, 0, 0, 0, - 82, 0, 83, 0, 0, 0, 0, 6, 0, 8, - 9, 10, 0, 0, 86, 11, 12, 0, 0, 13, - 0, 0, 0, 14, 0, 28, 48, 237, 0, 15, - 0, 0, 76, 0, 77, 0, 0, 78, 49, 0, - 0, 0, 79, 0, 50, 0, 0, 0, 0, 81, - 0, 0, 0, 0, 0, 82, 51, 83, 0, 0, - 0, 0, 0, 733, 0, 0, 0, 52, 0, 86, - 76, 0, 77, 0, 0, 78, 49, 0, 0, 0, - 79, 0, 50, 633, 0, 0, 0, 81, 0, 0, - 0, 0, 0, 82, 51, 83, 0, 0, 0, 0, - -70, 0, 0, 183, 0, 52, 184, 86, 0, 185, - 0, 0, 0, -70, -70, 170, 0, 0, 0, 0, - 0, 633, 0, 0, -398, 0, 0, 0, 0, 0, - -398, -398, -398, -398, -398, -398, -398, -398, -398, -398, - -398, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -70 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 0, 0, 0, 0, 0, 0, 0, 0, 499, + 104, 105, 106, 107, 17, 500, 108, 501, 109, 0, + 0, 110, 0, 502, 18, 503, 111, 0, 0, 0, + 112, 19, 0, 113, 504, 505, 0, 0, 0, 114, + 0, 115, 0, 0, 116, 117, 20, 0, 21, 22, + 23, 0, 506, 118, 24, 25, 119, 507, 508, 121, + 509, 0, 27, 0, 122, 510, 0, 123, 28, 511, + 512, 496, 0, 411, 0, 0, 0, 0, 0, 498, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 499, 104, 105, 106, 107, 0, 500, + 108, 501, 109, 0, 0, 110, 0, 502, 0, 503, + 111, 0, 0, 16, 112, 0, 0, 113, 504, 505, + 0, 318, 0, 114, 16, 115, 0, 0, 116, 117, + 0, 0, 426, 0, 0, 0, 506, 118, 0, 0, + 119, 507, 609, 121, 509, 181, 285, 0, 122, 510, + 10, 123, 0, 511, 512, 0, 0, 108, 0, 109, + 16, 10, 110, 0, 97, 98, 0, 111, 108, 0, + 109, 99, 100, 110, 113, 0, 0, 0, 111, 0, + 114, 0, 115, 0, 0, 113, 0, 101, 102, 0, + 0, 114, 0, 115, 118, 0, 0, 286, 104, 105, + 106, 107, 17, 0, 108, 118, 109, 0, 0, 110, + 0, 44, 18, 0, 111, 0, 0, 0, 112, 19, + 0, 113, 0, 0, 0, 0, 0, 114, 0, 115, + 0, 0, 116, 117, 20, 0, 21, 22, 23, 0, + 0, 118, 24, 25, 119, 120, 26, 121, 0, 0, + 27, 0, 122, 17, 0, 123, 28, 94, 95, 96, + 0, 0, 0, 18, 0, 0, 0, 45, 0, 0, + 19, 0, 16, 0, 0, 0, 97, 98, 0, 46, + 0, 0, 0, 99, 100, 20, 0, 21, 22, 23, + 47, 0, 0, 24, 25, 0, 0, 26, 0, 101, + 102, 27, 0, 0, 0, 0, 0, 28, 0, 103, + 104, 105, 106, 107, 0, 0, 108, 0, 109, 0, + 0, 110, 0, 94, 0, 96, 111, 0, 0, 195, + 112, 0, 0, 113, 0, 0, 0, 0, 16, 114, + 0, 115, 97, 98, 116, 117, 0, 0, 0, 99, + 100, 0, 0, 118, 0, 0, 119, 120, 0, 121, + 0, 0, 0, 0, 122, 101, 102, 123, 0, 0, + 0, 0, 0, 0, 0, 196, 104, 105, 106, 107, + 0, 0, 108, 0, 109, 0, 0, 110, 0, 181, + 0, 411, 111, 0, 0, 0, 112, 0, 0, 113, + 0, 0, 0, 0, 16, 114, 0, 115, 97, 98, + 116, 117, 0, 0, 0, 99, 100, 0, 0, 118, + 0, 0, 119, 120, 0, 121, 0, 0, 0, 0, + 122, 101, 102, 123, 0, 0, 0, 0, 0, 0, + 0, 182, 104, 105, 106, 107, 0, 0, 108, 0, + 109, 0, 0, 110, 0, 181, 313, 0, 111, 0, + 0, 0, 112, 0, 0, 113, 0, 0, 0, 0, + 16, 114, 0, 115, 97, 98, 116, 117, 0, 0, + 0, 99, 100, 0, 0, 118, 0, 0, 119, 120, + 0, 121, 773, 0, 0, 0, 122, 101, 102, 123, + 0, 0, 0, 0, 0, 0, 0, 182, 104, 105, + 106, 107, 0, 0, 108, 0, 109, 0, 0, 110, + 0, 94, 0, 96, 111, 0, 0, 0, 112, 0, + 0, 113, 0, 0, 0, 0, 16, 114, 0, 115, + 97, 98, 116, 117, 0, 0, 0, 99, 100, 0, + 0, 118, 0, 0, 119, 120, 0, 121, 0, 0, + 0, 0, 122, 101, 102, 123, 0, 0, 0, 0, + 0, 0, 0, 196, 104, 105, 106, 107, 0, 0, + 108, 0, 109, 0, 0, 110, 0, 181, 0, 411, + 111, 0, 0, 0, 112, 0, 0, 113, 0, 0, + 0, 0, 16, 114, 0, 115, 97, 98, 116, 117, + 0, 0, 0, 99, 100, 0, 0, 118, 0, 0, + 119, 120, 0, 121, 0, 0, 0, 0, 122, 101, + 102, 123, 0, 0, 0, 0, 0, 0, 0, 182, + 104, 105, 106, 107, 0, 0, 108, 0, 109, 0, + 0, 110, 0, 181, 0, 0, 111, 0, 336, 0, + 112, 0, 0, 113, 0, 0, 0, 0, 16, 114, + 0, 115, 97, 98, 116, 117, 0, 0, 0, 99, + 100, 0, 0, 118, 0, 0, 119, 120, 0, 121, + 0, 0, 0, 0, 122, 101, 102, 123, 0, 0, + 0, 0, 0, 0, 0, 182, 104, 105, 106, 107, + 0, 0, 108, 0, 109, 0, 0, 110, 0, 181, + 0, 428, 111, 0, 0, 0, 112, 0, 0, 113, + 0, 0, 0, 0, 16, 114, 0, 115, 97, 98, + 116, 117, 0, 0, 0, 99, 100, 0, 0, 118, + 0, 0, 119, 120, 0, 121, 0, 0, 0, 0, + 122, 101, 102, 123, 0, 0, 0, 0, 0, 0, + 0, 182, 104, 105, 106, 107, 0, 0, 108, 0, + 109, 0, 0, 110, 0, 181, 0, 0, 111, 0, + 442, 0, 112, 0, 0, 113, 0, 0, 0, 0, + 16, 114, 0, 115, 97, 98, 116, 117, 0, 0, + 0, 99, 100, 0, 0, 118, 0, 0, 119, 120, + 0, 121, 0, 0, 0, 0, 122, 101, 102, 123, + 0, 0, 0, 0, 0, 0, 0, 182, 104, 105, + 106, 107, 0, 0, 108, 0, 109, 0, 0, 110, + 0, 181, 0, 0, 111, 0, 0, 0, 112, 613, + 0, 113, 0, 0, 0, 0, 16, 114, 0, 115, + 97, 98, 116, 117, 0, 0, 0, 99, 100, 0, + 0, 118, 0, 0, 119, 120, 0, 121, 0, 0, + 0, 0, 122, 101, 102, 123, 0, 0, 0, 0, + 0, 0, 0, 182, 104, 105, 106, 107, 0, 0, + 108, 0, 109, 0, 0, 110, 0, 181, 0, 0, + 111, 0, 0, 0, 112, 0, 0, 113, 0, 0, + 0, 0, 16, 114, 0, 115, 97, 98, 116, 117, + 0, 0, 0, 99, 100, 0, 0, 118, 0, 0, + 119, 120, 0, 121, 0, 0, 0, 0, 122, 101, + 102, 123, 0, 0, 0, 0, 0, 0, 0, 182, + 104, 105, 106, 107, 0, 0, 108, 0, 109, 0, + 0, 110, 0, 94, 0, 0, 111, 0, 0, 0, + 112, 0, 0, 113, 0, 0, 0, 0, 16, 114, + 0, 115, 97, 98, 116, 117, 0, 0, 0, 99, + 100, 0, 0, 118, 0, 0, 119, 120, 0, 121, + 0, 0, 0, 0, 122, 101, 102, 123, 0, 0, + 0, 0, 0, 0, 0, 196, 104, 105, 106, 107, + 0, 0, 108, 0, 109, 496, 0, 110, 0, 0, + 0, 0, 111, 0, 0, 0, 112, 0, 0, 113, + 16, 0, 0, 0, 0, 114, 0, 115, 0, 0, + 116, 117, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 119, 120, 0, 121, 0, 101, 102, 0, + 122, 0, 0, 123, 0, 0, 0, 196, 104, 105, + 106, 107, 0, 0, 108, 0, 109, 496, 0, 110, + 0, 0, 0, 0, 111, 0, 0, 0, 112, 0, + 0, 113, 16, 0, 0, 0, 0, 114, 0, 115, + 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, + 0, 118, 0, 0, 119, 0, 0, 121, 0, 101, + 102, 0, 122, 0, 366, 123, 0, 0, 0, 196, + 104, 105, 106, 107, 0, 0, 108, 0, 109, 496, + 805, 110, 0, 0, 0, 0, 111, 0, 0, 0, + 112, 0, 0, 113, 16, 0, 0, 0, 0, 114, + 0, 115, 0, 0, 116, 117, 0, 0, 0, 0, + 0, 0, 0, 118, 0, 0, 119, 0, 0, 121, + 0, 0, 0, 0, 122, 0, 0, 123, 0, 0, + 0, 196, 104, 105, 106, 107, 0, 0, 108, 496, + 109, 0, 0, 110, 0, 0, 0, 0, 111, 0, + 0, 0, 112, 0, 16, 113, 0, 0, 0, 0, + 0, 114, 0, 115, 0, 0, 116, 117, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 119, 0, + 0, 121, 0, 0, 0, 0, 122, 0, 366, 123, + 0, 196, 104, 105, 106, 107, 781, 0, 108, 0, + 109, 0, 0, 110, 0, 0, 0, 0, 111, 0, + 16, 0, 112, 0, 0, 113, 0, 0, 411, 594, + 0, 114, 0, 115, 570, 0, 116, 117, 0, 0, + 0, 16, 0, 0, 0, 118, 0, 0, 119, 0, + 0, 121, 0, 0, 0, 0, 122, 10, 366, 123, + 0, 0, 17, 0, 108, 0, 109, 411, 637, 110, + 0, 0, 18, 570, 111, 0, 0, 0, 0, 19, + 16, 113, 0, 17, 0, 0, 0, 114, 0, 115, + 0, 0, 0, 18, 20, 0, 21, 22, 23, 0, + 19, 118, 24, 25, 0, 0, 26, 0, 0, 0, + 27, 0, 0, 0, 0, 20, 28, 21, 22, 23, + 411, -138, 17, 571, 25, 0, 570, 26, 0, 0, + 0, 27, 18, 16, 0, 0, 0, 28, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 21, 22, 23, 411, + 684, 0, 571, 25, 0, 570, 26, 0, 0, 0, + 27, 0, 16, 0, 0, 17, 28, 0, 0, 0, + 411, 719, 0, 0, 0, 18, 570, 0, 0, 0, + 0, 0, 19, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, + 22, 23, 0, 0, 17, 571, 25, 0, 0, 26, + 478, 0, 0, 27, 18, 0, 0, 0, 0, 28, + 0, 19, 16, 0, 0, 17, 0, 0, 0, 0, + 0, 589, 0, 0, 0, 18, 20, 0, 21, 22, + 23, 0, 19, 16, 571, 25, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 0, 20, 28, 21, + 22, 23, 0, 0, 17, 571, 25, 0, 0, 26, + 0, 0, 0, 27, 18, 0, 0, 0, 0, 28, + 0, 19, 0, 0, 0, 17, 44, 166, 0, 0, + 0, 0, 0, 0, 0, 18, 20, 0, 21, 22, + 23, 0, 19, 0, 24, 25, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 0, 20, 28, 21, + 22, 23, 0, 10, 0, 24, 25, 0, 17, 26, + 108, 0, 109, 27, 0, 110, 0, 0, 18, 28, + 111, 0, 45, 44, 166, 19, 0, 113, 0, 0, + 0, 0, 0, 114, 46, 115, 0, 0, 0, 0, + 20, 0, 21, 22, 23, 47, 0, 118, 24, 25, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, + 683, 580, 28, 0, 0, 17, 0, 108, 0, 109, + 0, 0, 110, 0, 0, 18, 0, 111, 16, 45, + 0, 0, 19, 0, 113, 0, 0, 0, 0, 0, + 114, 46, 115, 0, 0, 0, 0, 20, 0, 21, + 22, 23, 47, 0, 118, 24, 25, 0, 0, 26, + 0, 0, 0, 27, 0, 10, 0, 0, 580, 28, + 17, 44, 108, 0, 109, 0, 0, 110, 0, 0, + 18, 0, 111, 0, 45, 0, 0, 19, 0, 113, + 0, 0, 0, 0, 0, 114, 46, 115, 0, 0, + 0, 0, 20, 0, 21, 22, 23, 47, 10, 118, + 24, 25, 0, 17, 26, 108, 0, 109, 27, 0, + 110, 0, 366, 18, 28, 111, 16, 45, 0, 0, + 19, 0, 113, 0, 0, 0, 0, 0, 114, 46, + 115, 0, 0, 0, 0, 20, 0, 21, 22, 23, + 47, 0, 118, 24, 25, 0, 0, 26, 0, 16, + 0, 27, 0, 10, 0, 0, 0, 28, 17, 0, + 108, 0, 109, 0, 0, 110, 0, 0, 18, 0, + 111, 0, 0, 0, 0, 19, 0, 113, 16, 0, + 0, 0, 0, 114, 0, 115, 0, 0, 0, 0, + 20, 17, 21, 22, 23, 0, 0, 118, 24, 25, + 0, 18, 26, 0, 16, 209, 27, 0, 19, 0, + 0, 0, 28, 0, 1, 0, 0, 0, 0, 0, + 17, 0, 0, 20, 0, 21, 22, 23, 0, 0, + 18, 24, 25, 0, 0, 26, 0, 19, 0, 27, + 0, 10, 0, 0, 0, 28, 0, 0, 108, 0, + 109, 0, 20, 110, 21, 22, 23, 0, 111, 17, + 24, 25, 0, 0, 26, 113, 0, 0, 27, 18, + 0, 114, 0, 115, 28, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, + 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, + 25, 0, -70, 26, 0, 222, 0, 27, 223, 0, + 0, 224, 0, 28, 0, -70, -70, 209, 0, 0, + 0, 0, 0, 0, 0, 0, -398, 0, 0, 0, + 0, 0, -398, -398, -398, -398, -398, -398, -398, -398, + -398, -398, -398, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -70 }; } @@ -5198,228 +5254,248 @@ private static final short[] yycheck_init() { return new short[] { - 0, 41, 26, 64, 373, 476, 172, 572, 93, 325, - 464, 207, 125, 579, 286, 282, 26, 41, 606, 23, - 438, 10, 553, 23, 64, 513, 633, 184, 10, 11, - 41, 91, 7, 10, 11, 192, 55, 7, 38, 18, - 64, 431, 431, 18, 18, 601, 676, 55, 18, 251, - 676, 253, 553, 64, 65, 66, 67, 68, 69, 70, - 145, 559, 55, 55, 0, 19, 19, 7, 7, 65, - 66, 67, 68, 69, 70, 173, 55, 55, 18, 18, - 55, 55, 11, 102, 474, 55, 171, 10, 62, 18, - 64, 91, 648, 67, 94, 95, 19, 19, 72, 18, - 601, 55, 55, 127, 602, 79, 86, 168, 100, 102, - 564, 85, 643, 87, 125, 55, 55, 724, 725, 726, - 608, 751, 610, 18, 750, 99, 55, 399, 168, 125, - 105, 135, 630, 55, 406, 135, 90, 126, 11, 113, - 122, 413, 643, 143, 168, 122, 146, 648, 102, 68, - 540, 540, 650, 18, 766, 74, 26, 168, 182, 83, - 55, 11, 21, 553, 553, 772, 6, 86, 90, 4, - 170, 759, 172, 173, 39, 740, 11, 47, 97, 745, - 180, 793, 55, 14, 195, 19, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 55, 208, 209, 210, - 211, 212, 213, 214, 215, 55, 88, 14, 774, 6, - 271, 601, 601, 0, 632, 0, 532, 213, 214, 215, - 220, 55, 834, 283, 55, 65, 250, 227, 19, 20, - 70, 271, 55, 18, 7, 55, 23, 237, 709, 55, - 250, 32, 33, 55, 62, 18, 7, 271, 55, 95, - 416, 38, 817, 643, 643, 28, 280, 18, 648, 648, - 271, 285, 55, 86, 75, 289, 84, 365, 65, 471, - 368, 175, 176, 70, 90, 60, 55, 75, 474, 551, - 184, 185, 282, 283, 188, 70, 4, 741, 192, 193, - 7, 102, 77, 84, 55, 3, 3, 395, 752, 17, - 66, 18, 415, 7, 102, 3, 508, 92, 5, 94, - 95, 96, 78, 10, 18, 100, 101, 24, 3, 104, - 28, 3, 7, 108, 3, 143, 7, 327, 10, 114, - 9, 355, 12, 18, 180, 433, 48, 18, 55, 722, - 723, 812, 614, 28, 24, 24, 10, 549, 135, 349, - 617, 55, 170, 4, 100, 19, 143, 559, 9, 420, - 360, 25, 816, 109, 818, 365, 7, 838, 368, 10, - 686, 21, 372, 373, 220, 415, 572, 18, 7, 581, - 420, 10, 7, 287, 13, 385, 769, 770, 771, 207, - 19, 451, 452, 18, 4, 395, 420, 4, 600, 9, - 602, 7, 9, 28, 415, 774, 7, 7, 18, 420, - 10, 865, 18, 13, 357, 5, 416, 18, 18, 19, - 9, 11, 240, 366, 5, 808, 7, 49, 630, 51, - 454, 20, 432, 433, 434, 637, 282, 18, 18, 9, - 227, 11, 811, 7, 444, 45, 46, 3, 650, 5, - 268, 451, 452, 27, 18, 9, 9, 11, 7, 557, - 558, 10, 1, 3, 13, 17, 5, 20, 7, 18, - 19, 55, 12, 675, 7, 55, 476, 10, 4, 4, - 13, 327, 62, 4, 64, 18, 11, 67, 9, 11, - 11, 30, 72, 695, 33, 6, 19, 7, 9, 79, - 10, 405, 41, 13, 408, 85, 82, 87, 508, 4, - 712, 6, 11, 12, 9, 7, 11, 4, 10, 99, - 544, 13, 368, 523, 24, 64, 65, 66, 67, 68, - 69, 70, 112, 533, 4, 4, 10, 11, 356, 9, - 9, 743, 11, 6, 362, 84, 4, 4, 548, 549, - 65, 9, 9, 18, 554, 70, 4, 557, 558, 559, - 10, 9, 349, 13, 3, 383, 384, 385, 579, 841, - 842, 55, 120, 121, 4, 123, 124, 125, 138, 9, - 140, 141, 19, 668, 584, 372, 125, 753, 127, 203, - 204, 205, 206, 102, 55, 8, 105, 6, 870, 871, - 9, 62, 602, 64, 102, 10, 67, 105, 52, 53, - 54, 72, 612, 431, 9, 433, 11, 9, 79, 11, - 822, 439, 10, 9, 85, 11, 87, 11, 446, 168, - 630, 170, 5, 127, 634, 9, 636, 11, 99, 14, - 15, 16, 208, 209, 210, 432, 427, 6, 429, 75, - 650, 112, 10, 11, 22, 23, 195, 444, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 523, 5, 836, - 3, 499, 500, 840, 10, 11, 686, 533, 75, 689, - 229, 230, 231, 232, 45, 46, 10, 11, 10, 11, - 55, 240, 55, 727, 802, 765, 706, 246, 55, 709, - 4, 250, 558, 207, 45, 46, 45, 46, 201, 202, - 68, 508, 540, 211, 212, 810, 726, 8, 8, 268, - 828, 10, 271, 55, 745, 553, 55, 13, 584, 8, - 800, 280, 55, 68, 55, 12, 746, 55, 109, 9, - 28, 100, 246, 753, 75, 41, 250, 5, 9, 55, - 55, 8, 549, 5, 825, 765, 766, 554, 5, 829, - 9, 55, 559, 833, 774, 5, 31, 3, 64, 65, - 66, 67, 68, 69, 70, 825, 280, 3, 634, 849, - 3, 3, 3, 793, 11, 9, 55, 55, 8, 55, - 800, 825, 802, 342, 10, 55, 6, 11, 626, 17, - 55, 811, 812, 11, 825, 602, 115, 356, 636, 11, - 60, 11, 5, 362, 11, 643, 11, 6, 828, 829, - 70, 5, 3, 833, 834, 55, 6, 77, 838, 125, - 686, 3, 31, 630, 383, 384, 385, 12, 11, 849, - 9, 4, 92, 4, 94, 95, 96, 4, 3, 66, - 100, 101, 4, 650, 104, 3, 107, 55, 108, 9, - 774, 689, 24, 12, 114, 12, 415, 12, 4, 167, - 726, 420, 168, 55, 5, 78, 425, 11, 427, 177, - 429, 3, 431, 11, 433, 183, 4, 4, 11, 4, - 439, 11, 70, 191, 73, 11, 194, 446, 11, 195, - 449, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 4, 208, 209, 210, 211, 212, 213, 214, 215, - 31, 11, 836, 373, 11, 474, 840, 431, 756, 105, - 55, 55, 11, 11, 46, 18, 756, 62, 373, 64, - 61, 135, 67, 434, 355, 449, 802, 72, 549, 746, - 499, 500, 234, 251, 79, 253, 548, 757, 596, 787, - 85, 548, 87, 650, 557, 828, 793, 524, 266, 834, - 474, 695, 828, 474, 99, 271, 643, 60, 742, 540, - 608, 610, 531, 281, 610, 817, 679, 70, 745, 195, - 385, 540, 372, 197, 77, 544, 283, 198, -1, -1, - 83, -1, -1, 199, 553, -1, -1, 373, 200, 92, - -1, 94, 95, 96, 464, -1, -1, 100, 101, -1, - 848, 104, 373, -1, -1, 108, 476, -1, -1, 464, - 579, 114, -1, -1, -1, -1, 540, -1, -1, 18, - 544, 476, -1, -1, -1, -1, -1, 26, 55, 553, - -1, 0, 601, -1, -1, 62, -1, 64, -1, -1, - 67, 68, -1, -1, -1, 72, -1, 74, 572, 18, - 619, -1, 79, -1, -1, 579, 55, 626, 85, 86, - 87, -1, -1, 62, 382, 64, -1, 636, 67, 373, - 97, 389, 99, 72, 643, 393, -1, 601, 464, 648, - 79, -1, 373, -1, -1, 112, 85, -1, 87, -1, - 476, 60, -1, 464, 564, -1, -1, -1, -1, 415, - 99, 70, 572, -1, 420, 476, -1, -1, 77, 564, - 18, 19, 636, -1, 83, -1, -1, 572, -1, 643, - 689, -1, -1, 92, 648, 94, 95, 96, -1, -1, - -1, 100, 101, -1, -1, 104, -1, -1, -1, 108, - -1, -1, 612, 461, -1, 114, -1, 55, -1, 467, - -1, -1, 470, -1, 62, 473, 64, 612, 727, 67, - 464, -1, -1, -1, 72, 689, -1, -1, -1, -1, - -1, 79, 476, 464, -1, -1, 745, 85, 564, 87, - -1, -1, -1, -1, -1, 476, 572, 756, -1, -1, - -1, 99, -1, 564, -1, -1, -1, 766, -1, 373, - -1, 572, -1, 727, 522, 774, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, -1, -1, 787, -1, - -1, 745, -1, -1, 793, -1, 612, -1, -1, -1, - -1, -1, 801, -1, -1, -1, 706, -1, -1, 709, - -1, 612, 766, -1, -1, -1, -1, -1, -1, -1, - -1, 706, -1, -1, 709, 573, 825, -1, 576, 577, - 564, -1, -1, 579, 582, 834, -1, -1, 572, 793, - 740, 741, -1, 564, -1, -1, -1, 801, 596, 848, - -1, 572, 752, -1, -1, 740, 741, -1, -1, -1, - 464, -1, -1, -1, -1, -1, -1, 752, -1, -1, - -1, -1, 476, -1, 774, -1, 464, -1, 612, -1, - 834, -1, -1, -1, -1, -1, -1, -1, 476, 774, - 706, 612, -1, 709, -1, -1, -1, -1, -1, -1, - 18, -1, -1, -1, -1, 706, -1, 655, 709, -1, - -1, 811, 812, -1, -1, -1, 816, 817, 818, -1, - -1, -1, -1, -1, 740, 741, 811, 812, -1, -1, - -1, 816, 817, 818, -1, -1, 752, 55, 838, 740, - 741, -1, -1, -1, 62, -1, 64, -1, -1, 67, - -1, 752, -1, 838, 72, -1, -1, -1, 774, -1, - 564, 79, -1, -1, 712, 865, -1, 85, 572, 87, - -1, -1, 706, 774, -1, 709, 564, -1, -1, -1, - 865, 99, -1, -1, 572, 706, -1, -1, 709, 737, - 738, 739, -1, -1, -1, 811, 812, -1, -1, 745, - 816, 817, 818, -1, -1, -1, 740, 741, 612, -1, - 811, 812, -1, -1, 762, 816, 817, 818, 752, 740, - 741, -1, 838, -1, 612, -1, -1, -1, -1, -1, - -1, 752, -1, -1, -1, -1, -1, 838, -1, -1, - 774, -1, -1, -1, -1, -1, -1, -1, -1, 865, - -1, -1, -1, 774, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 865, -1, 18, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 811, 812, 825, - 0, -1, 816, 817, 818, -1, -1, -1, -1, -1, - 811, 812, -1, -1, -1, 816, 817, 818, 18, -1, - -1, 0, 706, 55, 838, 709, -1, -1, -1, -1, - 62, -1, 64, -1, -1, 67, 68, 838, 706, 18, - 72, 709, 74, -1, -1, -1, -1, 79, -1, -1, - -1, 865, -1, 85, 86, 87, 740, 741, -1, -1, - 60, -1, -1, -1, 865, 97, -1, 99, 752, -1, - 70, -1, 740, 741, -1, -1, -1, 77, -1, -1, - -1, 60, -1, 83, 752, -1, -1, -1, 88, -1, - 774, 70, 92, 93, 94, 95, 96, -1, 77, -1, - 100, 101, -1, -1, 104, -1, 774, -1, 108, -1, - -1, -1, -1, 92, 114, 94, 95, 96, -1, -1, - -1, 100, 101, 18, 19, 104, -1, 811, 812, 108, - -1, -1, 816, 817, 818, 114, -1, -1, -1, -1, - -1, -1, -1, 811, 812, -1, -1, -1, 816, 817, - 818, -1, -1, 3, 838, 5, 6, -1, -1, -1, - 55, 11, -1, -1, -1, -1, -1, 62, 18, 64, - 838, -1, 67, 68, -1, -1, -1, 72, -1, 74, - -1, 865, -1, -1, 79, -1, -1, -1, -1, -1, - 85, 86, 87, -1, -1, 45, 46, 865, -1, -1, - -1, -1, 97, -1, 99, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, -1, 67, 113, 69, + 1, 2, 3, 125, 324, 223, 411, 157, 35, 328, + 11, 580, 640, 231, 211, 16, 96, 10, 246, 515, + 479, 366, 74, 278, 123, 7, 6, 206, 7, 0, + 611, 710, 485, 55, 618, 214, 215, 10, 11, 18, + 488, 19, 7, 44, 96, 224, 710, 19, 227, 672, + 673, 19, 231, 232, 31, 3, 10, 11, 479, 55, + 26, 183, 10, 7, 12, 66, 67, 68, 69, 34, + 572, 77, 78, 74, 18, 381, 55, 55, 743, 18, + 102, 47, 59, 55, 85, 65, 381, 55, 210, 768, + 70, 73, 553, 595, 14, 96, 97, 98, 99, 100, + 101, 102, 421, 767, 100, 674, 675, 676, 73, 10, + 11, 55, 83, 778, 459, 116, 55, 88, 90, 438, + 573, 19, 93, 746, 747, 748, 105, 207, 93, 577, + 102, 590, 451, 126, 6, 55, 97, 98, 99, 100, + 101, 102, 770, 7, 597, 400, 11, 212, 14, 122, + 329, 572, 35, 472, 503, 207, 157, 55, 159, 11, + 825, 467, 18, 164, 170, 29, 789, 751, 122, 590, + 34, 55, 467, 479, 595, 176, 757, 178, 762, 180, + 749, 642, 55, 644, 479, 638, 0, 75, 75, 55, + 55, 74, 90, 65, 58, 55, 157, 74, 70, 55, + 7, 100, 86, 55, 19, 20, 207, 513, 209, 73, + 109, 18, 277, 96, 102, 102, 181, 32, 33, 96, + 97, 98, 99, 100, 101, 102, 325, 55, 10, 93, + 90, 13, 312, 234, 730, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 603, 836, 49, 454, 51, 123, + 312, 7, 126, 127, 291, 444, 572, 446, 7, 84, + 7, 7, 18, 274, 4, 83, 159, 572, 55, 18, + 157, 18, 18, 55, 590, 513, 287, 17, 7, 595, + 291, 252, 253, 254, 21, 590, 4, 793, 263, 18, + 595, 9, 166, 453, 52, 53, 54, 11, 309, 55, + 18, 312, 657, 90, 18, 316, 55, 181, 55, 55, + 184, 322, 387, 66, 207, 102, 55, 3, 55, 648, + 207, 651, 3, 829, 10, 78, 55, 3, 221, 10, + 55, 406, 12, 9, 10, 209, 751, 211, 212, 3, + 68, 55, 28, 24, 24, 219, 10, 234, 24, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 434, + 247, 248, 249, 250, 251, 252, 253, 254, 458, 10, + 381, 11, 383, 611, 5, 94, 387, 792, 19, 10, + 273, 490, 491, 394, 7, 259, 397, 4, 399, 263, + 401, 453, 9, 267, 11, 18, 458, 116, 291, 758, + 9, 4, 11, 277, 6, 28, 9, 382, 483, 484, + 769, 422, 423, 424, 82, 7, 3, 392, 10, 312, + 18, 13, 7, 10, 3, 312, 18, 19, 7, 322, + 7, 22, 23, 18, 327, 410, 411, 10, 331, 18, + 55, 18, 453, 28, 7, 164, 19, 458, 9, 28, + 324, 325, 25, 45, 46, 18, 467, 55, 5, 20, + 7, 9, 181, 19, 62, 476, 64, 7, 479, 67, + 10, 18, 20, 13, 72, 55, 835, 3, 837, 19, + 7, 79, 7, 10, 10, 10, 13, 85, 13, 87, + 209, 18, 19, 18, 368, 470, 6, 11, 12, 9, + 7, 99, 513, 832, 833, 480, 7, 381, 382, 10, + 485, 18, 871, 387, 388, 113, 4, 18, 392, 4, + 11, 6, 127, 11, 9, 5, 11, 246, 539, 540, + 737, 11, 406, 10, 11, 4, 410, 411, 867, 868, + 515, 4, 11, 9, 4, 11, 9, 4, 11, 9, + 424, 7, 9, 7, 10, 274, 10, 13, 4, 13, + 434, 572, 751, 9, 4, 458, 453, 578, 109, 9, + 702, 458, 583, 548, 3, 6, 65, 4, 9, 590, + 454, 70, 9, 476, 595, 102, 460, 4, 105, 48, + 309, 102, 9, 467, 105, 469, 470, 100, 573, 827, + 493, 21, 3, 831, 5, 479, 480, 618, 27, 483, + 484, 485, 17, 9, 219, 11, 490, 491, 10, 11, + 120, 121, 597, 123, 124, 125, 4, 736, 242, 243, + 244, 245, 14, 15, 16, 247, 248, 249, 827, 513, + 5, 515, 831, 9, 3, 11, 159, 75, 9, 660, + 11, 9, 4, 11, 259, 178, 5, 180, 6, 791, + 10, 11, 381, 638, 383, 19, 677, 74, 387, 45, + 46, 646, 781, 24, 548, 394, 10, 11, 45, 46, + 399, 45, 46, 240, 241, 250, 251, 18, 562, 96, + 97, 98, 99, 100, 101, 102, 8, 10, 572, 573, + 10, 9, 75, 422, 423, 424, 5, 581, 783, 583, + 55, 820, 75, 9, 3, 824, 590, 10, 55, 324, + 55, 595, 55, 597, 4, 815, 68, 8, 10, 740, + 8, 618, 743, 246, 55, 8, 13, 55, 68, 55, + 751, 12, 28, 5, 819, 8, 55, 5, 467, 623, + 157, 762, 727, 815, 863, 730, 5, 55, 9, 6, + 479, 55, 17, 368, 638, 55, 31, 778, 55, 3, + 3, 782, 646, 3, 287, 3, 751, 3, 291, 11, + 9, 55, 3, 657, 677, 8, 660, 292, 763, 294, + 6, 411, 5, 31, 55, 55, 807, 11, 55, 55, + 207, 406, 676, 11, 815, 11, 11, 11, 115, 322, + 11, 6, 5, 4, 825, 55, 107, 792, 793, 3, + 539, 540, 5, 3, 55, 12, 11, 234, 9, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 4, + 247, 248, 249, 250, 251, 252, 253, 254, 4, 4, + 3, 862, 4, 727, 829, 460, 730, 66, 9, 578, + 24, 3, 736, 737, 583, 12, 12, 12, 381, 743, + 11, 590, 11, 70, 4, 762, 78, 751, 4, 484, + 11, 73, 4, 503, 397, 205, 11, 11, 31, 763, + 11, 102, 55, 105, 11, 515, 216, 11, 0, 11, + 4, 11, 222, 73, 778, 312, 42, 781, 58, 783, + 230, 71, 388, 233, 740, 548, 18, 273, 792, 793, + 741, 411, 815, 28, 469, 469, 597, 563, 815, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 411, 660, 635, 778, 483, 819, 820, 825, 819, 666, + 824, 825, 590, 513, 467, 829, 644, 562, 60, 467, + 759, 644, 713, 476, 642, 470, 479, 836, 70, 762, + 325, 424, 292, 18, 294, 77, 581, 410, 237, -1, + 485, 83, 234, 603, 238, -1, 236, 307, -1, 863, + 92, 611, 94, 95, 96, 239, -1, -1, 100, 101, + 513, -1, 104, 323, -1, 510, 108, -1, -1, -1, + 55, -1, 114, 503, -1, -1, -1, 62, 623, 64, + -1, 740, 67, -1, -1, 515, 646, 72, -1, -1, + -1, -1, 503, -1, 79, -1, -1, -1, -1, -1, + 85, -1, 87, 548, 515, -1, 453, -1, -1, -1, + -1, 458, 657, -1, 99, -1, -1, -1, 411, 572, + -1, -1, -1, -1, -1, -1, 571, 112, 573, -1, + 583, 676, -1, -1, -1, -1, -1, 590, -1, 584, + -1, -1, 595, -1, -1, -1, -1, -1, 807, -1, + -1, -1, 597, -1, -1, -1, -1, -1, 611, 0, + 420, -1, -1, -1, -1, 618, -1, 727, 428, -1, + 730, -1, 432, 603, 411, 620, -1, 18, -1, -1, + -1, 611, -1, -1, -1, -1, -1, 411, -1, -1, + -1, 751, 603, 638, -1, -1, -1, 757, 758, -1, + 611, -1, -1, 862, -1, -1, -1, 660, -1, 769, + 503, -1, -1, -1, -1, -1, 646, -1, -1, 60, + -1, 666, 515, -1, 677, -1, -1, -1, -1, 70, + -1, -1, 792, 793, -1, 646, 77, -1, 783, -1, + 500, -1, -1, -1, 411, -1, 506, -1, -1, 509, + -1, 92, 512, 94, 95, 96, -1, -1, -1, 100, + 101, -1, -1, 104, 709, -1, 503, 108, -1, 829, + -1, 618, -1, 114, 819, 835, 836, 837, 515, 503, + -1, -1, -1, -1, -1, -1, -1, -1, 733, -1, + 743, 515, -1, -1, 0, -1, -1, 727, -1, -1, + 730, 561, -1, -1, -1, -1, -1, -1, -1, 762, + 603, 871, 18, -1, -1, 760, 727, -1, 611, 730, + -1, 751, -1, -1, -1, 778, -1, 757, 758, 782, + -1, -1, -1, -1, -1, -1, 503, -1, 411, 769, + 751, -1, -1, -1, -1, -1, 757, 758, 515, -1, + -1, -1, 612, 646, 60, 615, 616, -1, 769, -1, + -1, 621, 792, 793, 70, -1, 603, -1, -1, -1, + -1, 77, 825, -1, 611, 635, -1, -1, -1, 603, + -1, 792, 793, -1, -1, -1, 92, 611, 94, 95, + 96, -1, -1, -1, 100, 101, 841, -1, 104, 829, + -1, -1, 108, -1, -1, 835, 836, 837, 114, 646, + -1, -1, -1, -1, -1, 762, -1, 18, 829, -1, + -1, 6, 646, -1, 835, 836, 837, -1, -1, 689, + 503, -1, -1, 18, 727, -1, 603, 730, -1, -1, + -1, 871, 515, -1, 611, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 55, -1, -1, -1, 751, -1, + 871, 62, -1, 64, 757, 758, 67, -1, 815, -1, + -1, 72, -1, 733, -1, 60, 769, -1, 79, 646, + -1, -1, -1, -1, 85, 70, 87, -1, -1, -1, + 727, -1, 77, 730, 754, 755, 756, -1, 99, 792, + 793, -1, -1, 727, -1, -1, 730, 92, -1, 94, + 95, 96, 113, 773, 751, 100, 101, -1, -1, 104, + 757, 758, -1, 108, -1, -1, -1, 751, -1, 114, + 603, -1, 769, 757, 758, -1, 829, -1, 611, -1, + -1, -1, 835, 836, 837, 769, -1, -1, -1, -1, + 55, -1, -1, -1, -1, 792, 793, 62, -1, 64, + 727, -1, 67, 730, -1, -1, -1, 72, 792, 793, + -1, -1, -1, 646, 79, -1, -1, -1, 871, -1, + 85, -1, 87, -1, 751, 6, -1, -1, -1, -1, + 757, 758, 829, -1, 99, -1, -1, 18, 835, 836, + 837, -1, 769, -1, -1, 829, -1, 112, 28, -1, + -1, 835, 836, 837, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 792, 793, -1, -1, -1, + -1, -1, -1, -1, 871, -1, -1, 5, 6, 60, + -1, -1, -1, 11, -1, -1, -1, 871, -1, 70, + 18, -1, -1, -1, 727, -1, 77, 730, -1, -1, + -1, -1, 829, -1, -1, -1, -1, -1, 835, 836, + 837, 92, -1, 94, 95, 96, -1, -1, 751, 100, + 101, -1, -1, 104, 757, 758, -1, 108, -1, -1, + -1, -1, 60, 114, -1, -1, 769, -1, -1, -1, + -1, -1, 70, -1, 871, -1, -1, -1, -1, 77, + -1, -1, -1, -1, -1, 3, -1, 5, 6, 792, + 793, -1, -1, 11, 92, -1, 94, 95, 96, -1, + 18, -1, 100, 101, -1, -1, 104, -1, -1, -1, + 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 829, 45, 46, -1, + -1, -1, 835, 836, 837, -1, -1, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, -1, 67, + -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, + -1, 79, 80, 81, -1, -1, 18, 85, 871, 87, + -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, + 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, + 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, + -1, 5, 6, 55, 55, -1, -1, 11, -1, -1, + 62, 62, 64, 64, 18, 67, 67, -1, -1, -1, + 72, 72, -1, -1, -1, -1, -1, 79, 79, -1, + -1, -1, -1, 85, 85, 87, 87, -1, -1, -1, + -1, 45, 46, -1, -1, -1, -1, 99, 99, -1, + -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, -1, 67, -1, 69, 70, 71, 72, -1, + -1, -1, 76, 77, -1, 79, 80, 81, -1, -1, + -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, + 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, + 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, + 114, 115, 116, 3, -1, 5, 6, -1, -1, -1, + -1, 11, -1, 28, -1, -1, -1, -1, 18, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, + -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, -1, 5, - 6, -1, -1, -1, -1, 11, -1, 28, -1, -1, - -1, -1, 18, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, + -1, -1, 18, 19, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, -1, 5, 6, -1, -1, -1, -1, 11, - -1, 28, -1, -1, -1, -1, 18, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, -1, -1, + -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, 67, -1, 69, 70, 71, + 62, 63, 64, -1, -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, -1, 5, 6, -1, - -1, -1, -1, 11, -1, -1, 28, -1, -1, -1, - 18, 19, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, + 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, - -1, 79, 80, 81, -1, -1, 18, 85, -1, 87, + -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, - -1, 5, 6, 55, -1, -1, -1, 11, -1, -1, - 62, -1, 64, -1, 18, 67, -1, -1, -1, -1, - 72, -1, -1, -1, -1, -1, -1, 79, -1, -1, - -1, -1, -1, 85, -1, 87, -1, -1, -1, -1, - -1, 45, 46, -1, -1, -1, -1, 99, -1, -1, + -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 113, -1, 67, -1, 69, 70, 71, 72, -1, + 64, -1, -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, @@ -5447,75 +5523,39 @@ private static final short[] yycheck_init() -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, -1, 113, 114, 115, - 116, 3, -1, 5, 6, -1, -1, -1, -1, 11, + 116, 3, -1, 5, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, - -1, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, 67, -1, 69, 70, 71, - 72, -1, -1, -1, 76, 77, -1, 79, 80, 81, - -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, - 92, -1, 94, 95, 96, -1, 98, 99, 100, 101, - 102, 103, 104, 105, 106, -1, 108, -1, 110, 111, - -1, 113, 114, 115, 116, 3, -1, 5, 6, -1, - -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, - 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, - -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, 67, - -1, 69, 70, 71, 72, -1, -1, -1, 76, 77, - -1, 79, 80, 81, -1, -1, -1, 85, -1, 87, + -1, -1, -1, 55, 56, 57, 58, 59, -1, 61, + 62, 63, 64, -1, -1, 67, -1, 69, -1, 71, + 72, -1, -1, 18, 76, -1, -1, 79, 80, 81, + -1, 26, -1, 85, 18, 87, -1, -1, 90, 91, + -1, -1, 26, -1, -1, -1, 98, 99, -1, -1, + 102, 103, 104, 105, 106, 3, 4, -1, 110, 111, + 55, 113, -1, 115, 116, -1, -1, 62, -1, 64, + 18, 55, 67, -1, 22, 23, -1, 72, 62, -1, + 64, 29, 30, 67, 79, -1, -1, -1, 72, -1, + 85, -1, 87, -1, -1, 79, -1, 45, 46, -1, + -1, 85, -1, 87, 99, -1, -1, 55, 56, 57, + 58, 59, 60, -1, 62, 99, 64, -1, -1, 67, + -1, 18, 70, -1, 72, -1, -1, -1, 76, 77, + -1, 79, -1, -1, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, - 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, - 108, -1, 110, 111, -1, 113, 114, 115, 116, 3, - -1, 5, -1, -1, -1, -1, -1, 11, -1, -1, - -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, - -1, 55, 56, 57, 58, 59, -1, 61, 62, 63, - 64, -1, -1, 67, -1, 69, -1, 71, 72, -1, - -1, 18, 76, -1, -1, 79, 80, 81, -1, 26, - -1, 85, -1, 87, -1, -1, 90, 91, -1, -1, - -1, -1, -1, -1, 98, 99, -1, -1, 102, 103, - 104, 105, 106, 3, 4, -1, 110, 111, 55, 113, - -1, 115, 116, -1, -1, 62, -1, 64, 18, -1, - 67, -1, 22, 23, -1, 72, -1, -1, -1, 29, - 30, -1, 79, -1, -1, -1, -1, -1, 85, -1, - 87, -1, -1, -1, -1, 45, 46, -1, -1, -1, - -1, -1, 99, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, -1, 64, -1, -1, 67, -1, 18, - 70, -1, 72, -1, -1, -1, 76, 77, -1, 79, - -1, -1, -1, -1, -1, 85, -1, 87, -1, -1, - 90, 91, 92, -1, 94, 95, 96, -1, -1, 99, - 100, 101, 102, 103, 104, 105, -1, -1, 108, -1, - 110, 60, -1, 113, 114, 3, 4, 5, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, - 18, -1, -1, -1, 22, 23, -1, -1, -1, -1, - -1, 29, 30, 92, -1, 94, 95, 96, -1, -1, - -1, 100, 101, -1, -1, 104, -1, 45, 46, 108, - -1, -1, -1, -1, -1, 114, -1, 55, 56, 57, - 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, - -1, 3, -1, 5, 72, -1, -1, 9, 76, -1, - -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, - 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, - -1, 99, -1, -1, 102, 103, -1, 105, -1, -1, - -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, - -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, - 62, -1, 64, -1, -1, 67, -1, 3, -1, 5, - 72, -1, -1, -1, 76, -1, -1, 79, -1, -1, - -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, - -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, - 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, - 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, + -1, 99, 100, 101, 102, 103, 104, 105, -1, -1, + 108, -1, 110, 60, -1, 113, 114, 3, 4, 5, + -1, -1, -1, 70, -1, -1, -1, 74, -1, -1, + 77, -1, 18, -1, -1, -1, 22, 23, -1, 86, + -1, -1, -1, 29, 30, 92, -1, 94, 95, 96, + 97, -1, -1, 100, 101, -1, -1, 104, -1, 45, + 46, 108, -1, -1, -1, -1, -1, 114, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, - -1, 67, -1, 3, 4, -1, 72, -1, -1, -1, + -1, 67, -1, 3, -1, 5, 72, -1, -1, 9, 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, - 106, -1, -1, -1, 110, 45, 46, 113, -1, -1, + -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, -1, 3, -1, 5, 72, -1, -1, -1, 76, -1, -1, 79, @@ -5524,14 +5564,14 @@ private static final short[] yycheck_init() -1, -1, 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, - 64, -1, -1, 67, -1, 3, -1, 5, 72, -1, + 64, -1, -1, 67, -1, 3, 4, -1, 72, -1, -1, -1, 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, - -1, 105, -1, -1, -1, -1, 110, 45, 46, 113, + -1, 105, 106, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, - -1, 3, -1, -1, 72, -1, 8, -1, 76, -1, + -1, 3, -1, 5, 72, -1, -1, -1, 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, -1, @@ -5551,111 +5591,137 @@ private static final short[] yycheck_init() -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, -1, 3, - -1, -1, 72, -1, -1, -1, 76, 11, -1, 79, + -1, 5, 72, -1, -1, -1, 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, -1, 3, -1, -1, 72, -1, - -1, -1, 76, -1, -1, 79, -1, -1, -1, -1, + 8, -1, 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, -1, 67, - -1, 3, -1, -1, 72, -1, -1, -1, 76, -1, + -1, 3, -1, -1, 72, -1, -1, -1, 76, 11, -1, 79, -1, -1, -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, - 62, -1, 64, 3, -1, 67, -1, -1, -1, -1, - 72, -1, -1, -1, 76, -1, -1, 79, 18, -1, - -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, - -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, - 102, 103, -1, 105, -1, 45, 46, -1, 110, -1, - -1, 113, -1, -1, -1, 55, 56, 57, 58, 59, + 62, -1, 64, -1, -1, 67, -1, 3, -1, -1, + 72, -1, -1, -1, 76, -1, -1, 79, -1, -1, + -1, -1, 18, 85, -1, 87, 22, 23, 90, 91, + -1, -1, -1, 29, 30, -1, -1, 99, -1, -1, + 102, 103, -1, 105, -1, -1, -1, -1, 110, 45, + 46, 113, -1, -1, -1, -1, -1, -1, -1, 55, + 56, 57, 58, 59, -1, -1, 62, -1, 64, -1, + -1, 67, -1, 3, -1, -1, 72, -1, -1, -1, + 76, -1, -1, 79, -1, -1, -1, -1, 18, 85, + -1, 87, 22, 23, 90, 91, -1, -1, -1, 29, + 30, -1, -1, 99, -1, -1, 102, 103, -1, 105, + -1, -1, -1, -1, 110, 45, 46, 113, -1, -1, + -1, -1, -1, -1, -1, 55, 56, 57, 58, 59, -1, -1, 62, -1, 64, 3, -1, 67, -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 18, -1, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, - -1, -1, 102, -1, -1, 105, -1, 45, 46, -1, - 110, -1, 112, 113, -1, -1, -1, 55, 56, 57, - 58, 59, -1, -1, 62, -1, 64, 3, 4, 67, + -1, -1, 102, 103, -1, 105, -1, 45, 46, -1, + 110, -1, -1, 113, -1, -1, -1, 55, 56, 57, + 58, 59, -1, -1, 62, -1, 64, 3, -1, 67, -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 18, -1, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, - -1, 99, -1, -1, 102, -1, -1, 105, -1, -1, - -1, -1, 110, -1, -1, 113, -1, -1, -1, 55, - 56, 57, 58, 59, -1, -1, 62, 3, 64, -1, - -1, 67, -1, -1, -1, -1, 72, -1, -1, -1, - 76, -1, 18, 79, -1, -1, -1, -1, -1, 85, + -1, 99, -1, -1, 102, -1, -1, 105, -1, 45, + 46, -1, 110, -1, 112, 113, -1, -1, -1, 55, + 56, 57, 58, 59, -1, -1, 62, -1, 64, 3, + 4, 67, -1, -1, -1, -1, 72, -1, -1, -1, + 76, -1, -1, 79, 18, -1, -1, -1, -1, 85, -1, 87, -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, -1, -1, 105, - -1, -1, -1, -1, 110, -1, 112, 113, -1, 55, - 56, 57, 58, 59, 4, -1, 62, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, -1, 18, -1, - 76, -1, -1, 79, -1, -1, 5, 6, -1, 85, - -1, 87, 11, -1, 90, 91, -1, -1, -1, 18, - -1, -1, -1, 99, -1, -1, 102, -1, -1, 105, - -1, -1, -1, -1, 110, 55, 112, 113, -1, -1, - 60, -1, 62, -1, 64, 5, 6, 67, -1, -1, - 70, 11, 72, -1, -1, -1, -1, 77, 18, 79, - -1, 60, -1, -1, -1, 85, -1, 87, -1, -1, - -1, 70, 92, -1, 94, 95, 96, -1, 77, 99, - 100, 101, -1, -1, 104, -1, -1, -1, 108, -1, - -1, -1, -1, 92, 114, 94, 95, 96, 5, 6, - 60, 100, 101, -1, 11, 104, -1, -1, -1, 108, - 70, 18, -1, -1, -1, 114, -1, 77, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 92, -1, 94, 95, 96, 5, 6, -1, - 100, 101, -1, 11, 104, -1, -1, -1, 108, -1, - 18, -1, -1, 60, 114, -1, -1, -1, 5, 6, - -1, -1, -1, 70, 11, -1, -1, -1, -1, -1, - 77, 18, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, -1, 94, 95, 96, - -1, -1, 60, 100, 101, -1, -1, 104, -1, -1, - -1, 108, 70, -1, 5, 6, -1, 114, -1, 77, - 11, -1, -1, 60, -1, -1, -1, 18, -1, -1, + -1, -1, -1, -1, 110, -1, -1, 113, -1, -1, + -1, 55, 56, 57, 58, 59, -1, -1, 62, 3, + 64, -1, -1, 67, -1, -1, -1, -1, 72, -1, + -1, -1, 76, -1, 18, 79, -1, -1, -1, -1, + -1, 85, -1, 87, -1, -1, 90, 91, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, 102, -1, + -1, 105, -1, -1, -1, -1, 110, -1, 112, 113, + -1, 55, 56, 57, 58, 59, 4, -1, 62, -1, + 64, -1, -1, 67, -1, -1, -1, -1, 72, -1, + 18, -1, 76, -1, -1, 79, -1, -1, 5, 6, + -1, 85, -1, 87, 11, -1, 90, 91, -1, -1, + -1, 18, -1, -1, -1, 99, -1, -1, 102, -1, + -1, 105, -1, -1, -1, -1, 110, 55, 112, 113, + -1, -1, 60, -1, 62, -1, 64, 5, 6, 67, + -1, -1, 70, 11, 72, -1, -1, -1, -1, 77, + 18, 79, -1, 60, -1, -1, -1, 85, -1, 87, -1, -1, -1, 70, 92, -1, 94, 95, 96, -1, - 77, -1, 100, 101, -1, -1, 104, -1, 6, -1, + 77, 99, 100, 101, -1, -1, 104, -1, -1, -1, 108, -1, -1, -1, -1, 92, 114, 94, 95, 96, - 18, -1, -1, 100, 101, -1, -1, 104, -1, 60, - -1, 108, -1, -1, -1, -1, 6, 114, -1, 70, - -1, -1, -1, -1, -1, -1, 77, 6, 18, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - -1, 92, 60, 94, 95, 96, -1, -1, -1, 100, - 101, -1, 70, 104, -1, 6, -1, 108, -1, 77, - -1, -1, -1, 114, -1, -1, -1, 18, -1, -1, - 60, -1, -1, -1, 92, -1, 94, 95, 96, -1, - 70, 60, 100, 101, -1, -1, 104, 77, -1, -1, - 108, 70, -1, -1, -1, -1, 114, -1, 77, -1, - -1, -1, 92, -1, 94, 95, 96, -1, -1, 60, - 100, 101, -1, 92, 104, 94, 95, 96, 108, 70, - -1, 100, 101, 18, 114, 104, 77, -1, -1, 108, - -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, - -1, 92, -1, 94, 95, 96, -1, -1, -1, 100, - 101, -1, -1, 104, -1, -1, -1, 108, -1, -1, - 55, -1, -1, 114, -1, 60, -1, 62, -1, 64, - -1, -1, 67, -1, -1, 70, -1, 72, 18, 19, + 5, 6, 60, 100, 101, -1, 11, 104, -1, -1, + -1, 108, 70, 18, -1, -1, -1, 114, -1, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 92, -1, 94, 95, 96, 5, + 6, -1, 100, 101, -1, 11, 104, -1, -1, -1, + 108, -1, 18, -1, -1, 60, 114, -1, -1, -1, + 5, 6, -1, -1, -1, 70, 11, -1, -1, -1, + -1, -1, 77, 18, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 92, -1, 94, + 95, 96, -1, -1, 60, 100, 101, -1, -1, 104, + 6, -1, -1, 108, 70, -1, -1, -1, -1, 114, + -1, 77, 18, -1, -1, 60, -1, -1, -1, -1, + -1, 6, -1, -1, -1, 70, 92, -1, 94, 95, + 96, -1, 77, 18, 100, 101, -1, -1, 104, -1, + -1, -1, 108, -1, -1, -1, -1, 92, 114, 94, + 95, 96, -1, -1, 60, 100, 101, -1, -1, 104, + -1, -1, -1, 108, 70, -1, -1, -1, -1, 114, + -1, 77, -1, -1, -1, 60, 18, 19, -1, -1, + -1, -1, -1, -1, -1, 70, 92, -1, 94, 95, + 96, -1, 77, -1, 100, 101, -1, -1, 104, -1, + -1, -1, 108, -1, -1, -1, -1, 92, 114, 94, + 95, 96, -1, 55, -1, 100, 101, -1, 60, 104, + 62, -1, 64, 108, -1, 67, -1, -1, 70, 114, + 72, -1, 74, 18, 19, 77, -1, 79, -1, -1, + -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, + 92, -1, 94, 95, 96, 97, -1, 99, 100, 101, + -1, -1, 104, -1, -1, -1, 108, -1, -1, -1, + 55, 113, 114, -1, -1, 60, -1, 62, -1, 64, + -1, -1, 67, -1, -1, 70, -1, 72, 18, 74, -1, -1, 77, -1, 79, -1, -1, -1, -1, -1, - 85, -1, 87, -1, -1, -1, -1, 92, -1, 94, - 95, 96, -1, -1, 99, 100, 101, -1, -1, 104, - -1, -1, -1, 108, -1, 55, 18, 19, -1, 114, - -1, -1, 62, -1, 64, -1, -1, 67, 68, -1, - -1, -1, 72, -1, 74, -1, -1, -1, -1, 79, + 85, 86, 87, -1, -1, -1, -1, 92, -1, 94, + 95, 96, 97, -1, 99, 100, 101, -1, -1, 104, + -1, -1, -1, 108, -1, 55, -1, -1, 113, 114, + 60, 18, 62, -1, 64, -1, -1, 67, -1, -1, + 70, -1, 72, -1, 74, -1, -1, 77, -1, 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, - -1, -1, -1, 55, -1, -1, -1, 97, -1, 99, - 62, -1, 64, -1, -1, 67, 68, -1, -1, -1, - 72, -1, 74, 113, -1, -1, -1, 79, -1, -1, - -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, - 4, -1, -1, 7, -1, 97, 10, 99, -1, 13, - -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, - -1, 113, -1, -1, 28, -1, -1, -1, -1, -1, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 55 + -1, -1, 92, -1, 94, 95, 96, 97, 55, 99, + 100, 101, -1, 60, 104, 62, -1, 64, 108, -1, + 67, -1, 112, 70, 114, 72, 18, 74, -1, -1, + 77, -1, 79, -1, -1, -1, -1, -1, 85, 86, + 87, -1, -1, -1, -1, 92, -1, 94, 95, 96, + 97, -1, 99, 100, 101, -1, -1, 104, -1, 18, + -1, 108, -1, 55, -1, -1, -1, 114, 60, -1, + 62, -1, 64, -1, -1, 67, -1, -1, 70, -1, + 72, -1, -1, -1, -1, 77, -1, 79, 18, -1, + -1, -1, -1, 85, -1, 87, -1, -1, -1, -1, + 92, 60, 94, 95, 96, -1, -1, 99, 100, 101, + -1, 70, 104, -1, 18, 19, 108, -1, 77, -1, + -1, -1, 114, -1, 83, -1, -1, -1, -1, -1, + 60, -1, -1, 92, -1, 94, 95, 96, -1, -1, + 70, 100, 101, -1, -1, 104, -1, 77, -1, 108, + -1, 55, -1, -1, -1, 114, -1, -1, 62, -1, + 64, -1, 92, 67, 94, 95, 96, -1, 72, 60, + 100, 101, -1, -1, 104, 79, -1, -1, 108, 70, + -1, 85, -1, 87, 114, -1, 77, -1, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, + -1, 92, -1, 94, 95, 96, -1, -1, -1, 100, + 101, -1, 4, 104, -1, 7, -1, 108, 10, -1, + -1, 13, -1, 114, -1, 17, 18, 19, -1, -1, + -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, + -1, -1, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 55 }; } @@ -5666,94 +5732,94 @@ private static final short[] yystos_init() { return new short[] { - 0, 18, 60, 70, 77, 83, 92, 93, 94, 95, - 96, 100, 101, 104, 108, 114, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 307, 308, 55, 129, - 100, 129, 129, 88, 133, 0, 130, 139, 141, 132, - 308, 3, 10, 129, 10, 11, 11, 129, 18, 68, - 74, 86, 97, 142, 151, 152, 171, 176, 201, 202, - 210, 130, 3, 4, 5, 22, 23, 29, 30, 45, - 46, 55, 56, 57, 58, 59, 62, 64, 67, 72, - 76, 79, 85, 87, 90, 91, 99, 102, 103, 105, - 110, 113, 128, 129, 148, 149, 150, 254, 255, 256, - 263, 264, 265, 268, 269, 282, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 305, 307, 308, 309, - 310, 55, 10, 11, 14, 137, 5, 86, 55, 55, - 55, 55, 142, 3, 55, 129, 148, 263, 264, 272, - 273, 274, 278, 279, 280, 282, 304, 9, 55, 310, - 311, 295, 295, 295, 295, 295, 295, 3, 28, 266, - 19, 129, 148, 259, 260, 10, 13, 3, 7, 198, - 199, 200, 307, 7, 10, 13, 260, 10, 13, 198, - 200, 7, 10, 13, 26, 47, 283, 48, 21, 27, - 17, 49, 51, 19, 20, 32, 33, 84, 52, 53, - 54, 22, 23, 14, 15, 16, 45, 46, 273, 295, - 149, 4, 9, 4, 14, 11, 140, 141, 120, 121, - 123, 124, 125, 143, 144, 145, 55, 19, 153, 154, - 82, 159, 153, 153, 4, 55, 130, 275, 276, 277, - 307, 24, 4, 24, 28, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 281, 4, 17, 6, - 6, 9, 4, 267, 272, 310, 26, 148, 261, 262, - 307, 7, 199, 270, 271, 307, 257, 258, 306, 307, - 55, 259, 259, 272, 8, 10, 200, 7, 272, 90, - 102, 256, 259, 259, 102, 105, 259, 10, 272, 55, - 256, 259, 259, 272, 285, 286, 287, 288, 289, 290, - 290, 292, 292, 292, 292, 112, 148, 149, 220, 253, - 293, 293, 293, 294, 294, 295, 295, 295, 55, 11, - 100, 109, 147, 129, 129, 129, 129, 6, 145, 5, - 211, 55, 155, 156, 157, 307, 75, 158, 148, 160, - 5, 172, 75, 203, 204, 3, 177, 112, 149, 4, - 9, 4, 9, 5, 216, 272, 216, 272, 272, 148, - 310, 4, 9, 75, 102, 9, 20, 26, 272, 5, - 186, 198, 271, 7, 266, 10, 25, 259, 55, 55, - 55, 4, 68, 8, 8, 10, 55, 55, 13, 55, - 90, 68, 8, 55, 55, 12, 55, 184, 185, 184, - 28, 109, 100, 129, 11, 122, 11, 122, 11, 126, - 6, 130, 212, 75, 9, 20, 157, 148, 159, 9, - 173, 174, 306, 148, 5, 205, 9, 178, 179, 306, - 159, 55, 55, 306, 307, 55, 277, 3, 6, 11, - 55, 61, 63, 69, 71, 80, 81, 98, 103, 104, - 106, 111, 115, 116, 130, 216, 217, 218, 221, 222, - 223, 224, 225, 235, 236, 237, 242, 255, 265, 279, - 296, 297, 299, 300, 301, 272, 148, 148, 262, 75, + 0, 83, 88, 93, 134, 135, 136, 137, 138, 139, + 55, 100, 129, 129, 129, 0, 18, 60, 70, 77, + 92, 94, 95, 96, 100, 101, 104, 108, 114, 130, + 131, 132, 133, 139, 141, 307, 308, 129, 10, 11, + 5, 10, 11, 129, 18, 74, 86, 97, 130, 142, + 151, 152, 171, 176, 201, 202, 210, 133, 130, 132, + 308, 10, 11, 14, 55, 120, 121, 123, 124, 125, + 143, 144, 145, 137, 3, 86, 55, 55, 55, 68, + 142, 14, 11, 100, 109, 147, 129, 129, 129, 129, + 6, 145, 140, 141, 3, 4, 5, 22, 23, 29, + 30, 45, 46, 55, 56, 57, 58, 59, 62, 64, + 67, 72, 76, 79, 85, 87, 90, 91, 99, 102, + 103, 105, 110, 113, 128, 129, 148, 149, 150, 254, + 255, 256, 263, 264, 265, 268, 269, 282, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 305, 307, + 308, 309, 310, 55, 82, 159, 19, 153, 154, 153, + 55, 11, 109, 100, 129, 11, 122, 11, 122, 11, + 126, 3, 55, 129, 148, 263, 264, 272, 273, 274, + 278, 279, 280, 282, 304, 9, 55, 310, 311, 295, + 295, 295, 295, 295, 295, 3, 10, 28, 266, 19, + 129, 148, 259, 260, 10, 13, 3, 7, 198, 199, + 200, 307, 7, 10, 13, 260, 10, 13, 198, 200, + 7, 10, 13, 26, 47, 283, 48, 21, 27, 17, + 49, 51, 19, 20, 32, 33, 84, 52, 53, 54, + 22, 23, 14, 15, 16, 45, 46, 273, 295, 149, + 4, 9, 4, 5, 211, 148, 160, 5, 172, 55, + 155, 156, 157, 307, 75, 203, 204, 3, 177, 153, + 11, 129, 146, 146, 146, 4, 55, 130, 275, 276, + 277, 307, 24, 4, 24, 28, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 281, 4, 17, + 6, 6, 9, 4, 267, 272, 259, 310, 26, 148, + 261, 262, 307, 7, 199, 270, 271, 307, 257, 258, + 306, 307, 55, 259, 259, 272, 8, 10, 200, 7, + 272, 90, 102, 256, 259, 102, 105, 259, 10, 272, + 55, 256, 259, 259, 272, 285, 286, 287, 288, 289, + 290, 290, 292, 292, 292, 292, 112, 148, 149, 220, + 253, 293, 293, 293, 294, 294, 295, 295, 295, 55, + 6, 130, 212, 9, 173, 174, 306, 75, 9, 20, + 157, 148, 5, 205, 9, 178, 179, 306, 159, 75, + 158, 9, 11, 11, 11, 112, 149, 4, 9, 4, + 9, 5, 216, 272, 216, 272, 272, 148, 310, 4, + 9, 129, 75, 102, 9, 20, 26, 272, 5, 186, + 198, 271, 7, 266, 10, 25, 259, 55, 55, 55, + 4, 68, 8, 8, 10, 55, 13, 55, 90, 68, + 8, 55, 55, 12, 55, 184, 185, 184, 28, 148, + 149, 151, 201, 208, 213, 214, 6, 130, 148, 9, + 11, 175, 55, 148, 161, 306, 307, 156, 6, 130, + 206, 148, 4, 9, 149, 5, 180, 148, 159, 129, + 55, 55, 306, 307, 55, 277, 3, 6, 11, 55, + 61, 63, 69, 71, 80, 81, 98, 103, 104, 106, + 111, 115, 116, 130, 216, 217, 218, 221, 222, 223, + 224, 225, 235, 236, 237, 242, 255, 265, 279, 296, + 297, 299, 300, 301, 272, 266, 148, 148, 262, 75, 102, 8, 186, 187, 188, 189, 272, 272, 5, 162, - 163, 306, 266, 5, 227, 55, 259, 266, 259, 266, - 273, 282, 28, 199, 9, 310, 11, 129, 146, 146, - 146, 18, 148, 149, 151, 201, 208, 213, 214, 6, - 130, 148, 161, 306, 307, 156, 163, 148, 9, 11, - 175, 55, 6, 130, 206, 148, 4, 9, 149, 5, - 180, 198, 198, 31, 12, 272, 11, 55, 11, 55, - 104, 221, 3, 3, 11, 272, 3, 3, 272, 3, - 216, 250, 3, 272, 149, 151, 202, 219, 220, 6, - 218, 11, 148, 148, 6, 9, 9, 8, 6, 11, - 100, 130, 164, 165, 216, 55, 65, 70, 228, 229, - 230, 231, 232, 233, 55, 55, 272, 28, 185, 9, - 11, 11, 11, 184, 55, 213, 17, 55, 174, 175, - 164, 6, 266, 113, 149, 151, 154, 191, 201, 207, - 208, 209, 6, 130, 179, 55, 306, 6, 130, 165, - 181, 182, 55, 221, 11, 12, 11, 11, 115, 220, - 224, 238, 240, 272, 11, 272, 272, 11, 129, 220, - 251, 252, 254, 263, 66, 78, 244, 245, 249, 216, - 272, 11, 11, 6, 189, 216, 149, 151, 153, 154, - 166, 167, 168, 183, 190, 191, 201, 6, 165, 234, - 278, 6, 229, 233, 6, 231, 232, 233, 70, 217, - 233, 12, 24, 266, 186, 129, 11, 3, 148, 6, - 163, 55, 192, 192, 113, 148, 149, 307, 11, 197, - 216, 207, 31, 55, 6, 182, 272, 3, 12, 11, - 9, 4, 4, 4, 4, 11, 3, 216, 245, 249, - 243, 244, 4, 55, 184, 55, 107, 196, 197, 9, - 6, 12, 106, 216, 272, 4, 3, 196, 196, 192, - 192, 192, 113, 55, 5, 169, 11, 272, 272, 239, + 163, 306, 266, 5, 227, 55, 259, 259, 266, 273, + 282, 28, 199, 9, 310, 184, 55, 213, 174, 175, + 11, 100, 130, 164, 165, 216, 6, 266, 17, 55, + 113, 149, 151, 154, 191, 201, 207, 208, 209, 6, + 130, 179, 55, 306, 6, 130, 165, 181, 182, 163, + 198, 198, 31, 12, 272, 11, 55, 11, 55, 104, + 221, 3, 3, 11, 272, 3, 3, 272, 3, 216, + 250, 3, 272, 149, 151, 202, 219, 220, 6, 218, + 11, 148, 148, 6, 9, 9, 8, 6, 164, 55, + 65, 70, 228, 229, 230, 231, 232, 233, 55, 55, + 272, 28, 185, 11, 3, 6, 216, 149, 151, 153, + 154, 166, 167, 168, 183, 190, 191, 201, 165, 163, + 148, 55, 192, 192, 113, 148, 149, 307, 11, 197, + 216, 207, 31, 55, 6, 182, 55, 221, 11, 12, + 11, 11, 115, 220, 224, 238, 240, 272, 11, 272, + 272, 11, 129, 220, 251, 252, 254, 263, 66, 78, + 244, 245, 249, 216, 272, 11, 11, 6, 189, 6, + 234, 278, 6, 229, 233, 6, 231, 232, 233, 70, + 217, 233, 12, 24, 266, 186, 4, 55, 184, 55, + 107, 196, 197, 3, 196, 196, 192, 192, 192, 113, + 55, 5, 169, 272, 3, 12, 11, 9, 4, 4, + 4, 4, 11, 3, 216, 245, 249, 243, 244, 4, + 9, 6, 12, 106, 216, 272, 198, 11, 3, 160, + 169, 4, 131, 149, 193, 194, 196, 196, 196, 192, + 6, 129, 170, 217, 254, 259, 11, 272, 272, 239, 272, 224, 221, 227, 216, 4, 252, 130, 246, 248, - 249, 221, 11, 3, 160, 169, 278, 272, 11, 198, - 4, 131, 149, 193, 194, 196, 196, 196, 192, 6, - 129, 170, 217, 254, 259, 4, 4, 11, 73, 226, - 148, 247, 4, 193, 11, 70, 215, 198, 149, 55, - 105, 195, 306, 4, 9, 196, 10, 6, 217, 6, - 10, 102, 105, 11, 221, 240, 241, 221, 21, 55, - 216, 4, 310, 11, 195, 10, 198, 31, 198, 194, - 259, 6, 259, 266, 266, 4, 148, 198, 105, 55, - 102, 102, 11, 11, 221, 266, 266, 11, 11 + 249, 221, 278, 272, 11, 70, 215, 193, 198, 149, + 55, 105, 195, 306, 4, 9, 196, 10, 6, 217, + 6, 10, 102, 105, 4, 4, 11, 73, 226, 148, + 247, 4, 11, 310, 11, 4, 195, 10, 198, 31, + 198, 194, 259, 6, 259, 266, 266, 11, 221, 240, + 241, 221, 21, 55, 216, 105, 55, 102, 102, 11, + 11, 4, 148, 198, 266, 266, 221, 11, 11 }; } @@ -5824,12 +5890,12 @@ private static final byte[] yyr2_init() 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 2, 5, 6, 0, 1, 1, 2, 3, + 1, 1, 2, 5, 5, 0, 1, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 1, 1, 0, 1, 1, 2, 4, 3, 5, 3, 5, 3, 5, 1, 3, 0, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 6, 0, 1, 3, 1, 3, + 1, 1, 1, 1, 7, 0, 1, 3, 1, 3, 2, 1, 1, 4, 3, 0, 2, 0, 2, 1, 3, 1, 3, 0, 1, 2, 3, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 3, 5, @@ -5937,19 +6003,19 @@ private static final byte[] yytranslate_table_init() } - private static final int YYLAST_ = 4571; + private static final int YYLAST_ = 4673; private static final int YYEMPTY_ = -2; - private static final int YYFINAL_ = 35; + private static final int YYFINAL_ = 15; private static final int YYNTOKENS_ = 127; /* Unqualified %code blocks. */ -/* "src/main/resources/Java_16_Grammar.y":146 */ +/* "src/main/resources/Java_16_Grammar.y":147 */ public CompilationUnit ast; -/* "src/main/java/parser/JavaParser.java":5951 */ +/* "src/main/java/parser/JavaParser.java":6017 */ } -/* "src/main/resources/Java_16_Grammar.y":1472 */ +/* "src/main/resources/Java_16_Grammar.y":1476 */ diff --git a/src/main/java/translator/Classes.java b/src/main/java/translator/Classes.java index e669db6d..70f781cf 100644 --- a/src/main/java/translator/Classes.java +++ b/src/main/java/translator/Classes.java @@ -3,8 +3,7 @@ import eotree.*; import tree.Declaration.*; -import java.util.ArrayList; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import static util.ListUtils.concat; @@ -42,12 +41,14 @@ public static EOBnd mapClass(ClassDeclaration classDeclaration) { ), - + clsDec.body != null ? clsDec.body.declarations.stream() .map(Declarations::mapDeclaration) - .collect(Collectors.toList())) + .collect(Collectors.toList()) : + new ArrayList<>() + ) ), - new EOBndName(clsDec.name) + new EOBndName("class_" + clsDec.name) ); } diff --git a/src/main/java/translator/MethodInvocations.java b/src/main/java/translator/MethodInvocations.java index 3d161180..fb5a0f0f 100644 --- a/src/main/java/translator/MethodInvocations.java +++ b/src/main/java/translator/MethodInvocations.java @@ -1,15 +1,25 @@ package translator; import eotree.*; +import tree.Expression.Expression; import tree.Expression.Primary.MethodInvocation; +import tree.Expression.SimpleReference; + +import java.util.ArrayList; +import java.util.Collections; import java.util.Optional; import java.util.stream.Collectors; public class MethodInvocations { public static EOCopy mapMethodInvocation(MethodInvocation methodInvocation){ + Optional src = Optional.empty(); if (methodInvocation.qualifier != null){ - throw new IllegalArgumentException("Qualifiers aren't supported yet"); + Expression expr = methodInvocation.qualifier; + if (expr instanceof SimpleReference) { + Collections.reverse(((SimpleReference) expr).compoundName.names); + src = buildEODotObjTree(((SimpleReference) expr).compoundName.names); + } } if (methodInvocation.superSign){ throw new IllegalArgumentException("Super sign isn't supported yet"); @@ -19,11 +29,28 @@ public static EOCopy mapMethodInvocation(MethodInvocation methodInvocation){ } return new EOCopy( - new EODot(Optional.empty(), methodInvocation.name), + new EODot(src, methodInvocation.name), methodInvocation.arguments.arguments.stream() .map(Expressions::mapExpression) .collect(Collectors.toList()) ); // Optional.empty() in EODot will be removed } + + private static Optional buildEODotObjTree(ArrayList names) { + if (names.size() > 0) { + String name = names.remove(0); + if (name.equals("System")) { + name = "class_" + name; + } + return Optional.of( + new EODot( + buildEODotObjTree(names), + name + ) + ); + } else { + return Optional.empty(); + } + } } diff --git a/src/main/java/translator/Methods.java b/src/main/java/translator/Methods.java index 132712a6..e7e29da9 100644 --- a/src/main/java/translator/Methods.java +++ b/src/main/java/translator/Methods.java @@ -4,6 +4,7 @@ import tree.Declaration.MethodDeclaration; import java.util.ArrayList; +import java.util.Collections; import java.util.Optional; import java.util.stream.Collectors; @@ -14,7 +15,7 @@ public static EOBndExpr mapMethodDeclaration(MethodDeclaration dec) { return new EOBndExpr( new EOObject( // Non-vararg parameters - dec.parameters != null ? + dec.parameters != null && !dec.name.equals("main") ? // Exclude 'String[] args' fon now dec.parameters.parameters.stream() .filter(param -> !param.signEllipsis) .map(param -> new EOBndName(param.name)) @@ -32,9 +33,11 @@ public static EOBndExpr mapMethodDeclaration(MethodDeclaration dec) { new EOBndExpr( new EOCopy( new EODot(Optional.empty(), "seq"), + dec.methodBody != null ? dec.methodBody.block.blockStatements.stream() .map(Statements::mapBlockStatement) - .collect(Collectors.toList()) + .collect(Collectors.toList()) : + Collections.emptyList() ), new EOBndName("@") ) diff --git a/src/main/java/translator/Translator.java b/src/main/java/translator/Translator.java index 542ad8a3..21077aef 100644 --- a/src/main/java/translator/Translator.java +++ b/src/main/java/translator/Translator.java @@ -5,12 +5,16 @@ import tree.Compilation.Package; import tree.Compilation.SimpleCompilationUnit; import tree.Compilation.TopLevelComponent; -import tree.Declaration.*; +import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import static util.ListUtils.listOf; + public class Translator { public static EOProgram translate(CompilationUnit unit) { if (unit instanceof SimpleCompilationUnit) @@ -38,16 +42,114 @@ public static EOProgram mapPackage(Package pkg) { } public static EOProgram mapSimpleCompilationUnit(SimpleCompilationUnit unit) { + ArrayList stdBnds = new ArrayList<>(); // Standard top-level bounds + stdBnds.add( + new EOBndExpr( + new EOObject( + new ArrayList<>(), + Optional.empty(), + Collections.emptyList() + ), + new EOBndName("class_Object") + ) + ); + EOObject printlnObj = new EOObject( + listOf( + new EOBndName("text") + ), + Optional.empty(), + listOf( + new EOBndExpr( + new EOCopy( + new EODot(Optional.empty(), "stdout"), + listOf( + new EOAnonExpr( + new EODot(Optional.empty(), "text") + ) + ) + ), + new EOBndName("@") + ) + ) + ); + EOObject outObj = + new EOObject( + listOf(), + Optional.empty(), + listOf( + new EOBndExpr( + printlnObj, + new EOBndName("println") + ) + ) + ); + stdBnds.add( + new EOBndExpr( + new EOObject( + listOf(), + Optional.empty(), + listOf( + new EOBndExpr( + outObj, + new EOBndName("out") + ) + ) + ), + new EOBndName("class_System") + ) + ); + List bndLst = unit.components.components + .stream() + .map(Translator::mapTopLevelComponent) + .map(bnd -> (EOBndExpr)bnd) + .collect(Collectors.toList()); + + // FIXME: assuming there is only one top-level component and it is a class + // Always calling the 'main' method + String mainClassName = bndLst.get(0).bndName.name; + bndLst.add(new EOBndExpr( + new EODot(Optional.empty(), mainClassName), + new EOBndName("mainObj") + )); + bndLst.add( + new EOBndExpr( + new EODot( + Optional.of(new EODot( + Optional.empty(), + "mainObj" + )), + "main" + ), + new EOBndName("@") + ) + ); + + List globalBnd = listOf( + new EOBndExpr( + new EOObject( + listOf(), + Optional.of(new EOBndName("args")), + bndLst + ), + new EOBndName("global") + ) + ); + + globalBnd.addAll(stdBnds); + + return new EOProgram( - new EOLicense(), + new EOLicense( + new EOComment(LocalDateTime.now().toString()), + new EOComment("j2eo team") + ), new EOMetas( Optional.empty(), - new ArrayList<>() + listOf( + new EOMeta("alias", "org.eolang.io.stdout") + ) ), - unit.components.components - .stream() - .map(Translator::mapTopLevelComponent) - .collect(Collectors.toList()) + globalBnd ); } diff --git a/src/main/resources/Java_16_Grammar.y b/src/main/resources/Java_16_Grammar.y index 39450aba..d5471f13 100644 --- a/src/main/resources/Java_16_Grammar.y +++ b/src/main/resources/Java_16_Grammar.y @@ -133,6 +133,7 @@ %define api.parser.public %define api.package {parser} %define api.value.type {Entity} +%define parse.error detailed %code imports { import lexer.*; } %code imports { import tree.*; } @@ -320,7 +321,7 @@ Package /////// Java modules are not supported (yet) /////// Module - : ModifierSeqOpt MODULE CompoundName LBRACE ModuleDirectiveSeqOpt RBRACE { $$ = null; } // not implemented + : /*ModifierSeqOpt*/ MODULE CompoundName LBRACE ModuleDirectiveSeqOpt RBRACE { $$ = null; } // not implemented ; ImportDeclarationSeqOpt @@ -453,8 +454,8 @@ ClassDeclaration ; NormalClassDeclaration - : /*ModifierSeqOpt*/ CLASS IDENTIFIER TypeParametersOpt ClassExtendsOpt ClassImplementsOpt ClassBody - { $$ = new NormalClassDeclaration($2,$3,$4,$5,$6); } + : ModifierSeqOpt CLASS IDENTIFIER TypeParametersOpt ClassExtendsOpt ClassImplementsOpt ClassBody + { $$ = new NormalClassDeclaration($3,$4,$5,$6,$7); } ; TypeParametersOpt @@ -1158,8 +1159,11 @@ ArrayAccess MethodInvocation : IDENTIFIER Arguments { $$ = new MethodInvocation(null,false,null,$1,$2); } - | CompoundName DOT TypeArgumentsOpt IDENTIFIER Arguments { var ref = new SimpleReference($1); - $$ = new MethodInvocation(ref,false,$3,$4,$5); } + | IDENTIFIER DOT TypeArgumentsOpt CompoundName Arguments { var ref = new SimpleReference(new CompoundName($1.image)); + for (String s : $4.names) ref.compoundName.add(s); + ref.compoundName.names.remove(ref.compoundName.names.size() - 1); + $$ = new MethodInvocation(ref,false,$3, + new Token(TokenCode.Identifier, $4.names.get($4.names.size() - 1)),$5); } | Primary DOT TypeArgumentsOpt IDENTIFIER Arguments { $$ = new MethodInvocation($1,false,$3,$4,$5); } | SUPER DOT TypeArgumentsOpt IDENTIFIER Arguments { $$ = new MethodInvocation(null,true,$3,$4,$5); } | CompoundName DOT SUPER DOT TypeArgumentsOpt IDENTIFIER Arguments { var ref = new SimpleReference($1); diff --git a/src/test/java/common/TestJ2EO.java b/src/test/java/common/TestJ2EO.java index 7838c296..b29d87a2 100644 --- a/src/test/java/common/TestJ2EO.java +++ b/src/test/java/common/TestJ2EO.java @@ -149,15 +149,6 @@ private static DynamicTest testFile(Path path) { String eoCode = translateToEO(unit); System.out.println("eoCode = \n" + eoCode); - // FIXME - { - eoCode = "+alias org.eolang.io.stdout" + System.lineSeparator(); - eoCode += System.lineSeparator(); - eoCode += "[args...] > main" + System.lineSeparator(); - eoCode += " stdout > @" + System.lineSeparator(); - eoCode += " \"passed\\n\"" + System.lineSeparator(); - } - // Compile and execute translated to EO Java file String eoExecOutput = compileAndExecuteEO(eoCode, path); System.out.println("eoExecOutput = \n" + eoExecOutput); @@ -246,7 +237,7 @@ private static String compileAndExecuteEO(String eoCode, Path testFilePath) { eoFileName = eoFileName.substring(0, eoFileName.lastIndexOf('.')); Path eoExecDir = Files.createDirectories( Paths.get(Paths.get(testFilePath.getParent().toString(), eoFileName).toString(), "eo")); - Path eoFilePath = Files.createFile(Paths.get(eoExecDir.toString() + sep + "main.eo")); + Path eoFilePath = Files.createFile(Paths.get(eoExecDir.toString() + sep + "class_" + eoFileName + ".eo")); Files.copy( Paths.get(testFolderRoot, "eo_execution_pom", "pom.xml"), Paths.get(eoExecDir.getParent().toString() + sep + "pom.xml")); @@ -281,7 +272,7 @@ private static String compileAndExecuteEO(String eoCode, Path testFilePath) { "\"target/classes;target/eo-runtime.jar\"" : "target/classes:target/eo-runtime.jar"), "org.eolang.Main", - "main", + "global", (isWindows ? "%*" : "\"$@\"") ); execPb.directory(new File(eoExecDir.getParent().toString())); diff --git a/src/test/resources/eo_execution_pom/pom.xml b/src/test/resources/eo_execution_pom/pom.xml index 4f6b34d0..93674c5c 100644 --- a/src/test/resources/eo_execution_pom/pom.xml +++ b/src/test/resources/eo_execution_pom/pom.xml @@ -25,7 +25,7 @@ SOFTWARE. 4.0.0 org.eolang - sandbox-canonical + j2eo-testing 1.0-SNAPSHOT 0.14.0 From abb8d4f98240fab74de9a3f6aece65b4886dc9d4 Mon Sep 17 00:00:00 2001 From: IamMaxim Date: Mon, 25 Oct 2021 14:47:18 +0300 Subject: [PATCH 25/26] Updated README --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 0d479df1..cb116618 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,17 @@ bugs in our code. It is also much easier to work with abstraction layer than wit --- +## Requirements + +In order to compile project from source code, you need to have + +- Bison 3.7+ +- Java 15+ + +installed. Bison is currently bundled with the project for Windows and macOS. On Linux, you may use package manager to easily install Bison (but check the Bison version; some distos, like Ubuntu, like to ship outdated versions of software). + +--- + ## Usage To build, run: From 3fc2695d41a34e0069de401398755d241ef88cfc Mon Sep 17 00:00:00 2001 From: Egor Klementev Date: Mon, 25 Oct 2021 16:03:09 +0300 Subject: [PATCH 26/26] FEATURE: class decl. translation --- src/main/java/translator/Declarations.java | 5 +++++ src/test/java/common/TestJ2EO.java | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/translator/Declarations.java b/src/main/java/translator/Declarations.java index 30cdd9ee..b06913f8 100644 --- a/src/main/java/translator/Declarations.java +++ b/src/main/java/translator/Declarations.java @@ -2,14 +2,19 @@ import eotree.EOBnd; import eotree.EOBndExpr; +import tree.Declaration.ClassDeclaration; import tree.Declaration.Declaration; import tree.Declaration.MethodDeclaration; +import tree.Declaration.NormalClassDeclaration; public class Declarations { public static EOBndExpr mapDeclaration(Declaration dec) { if (dec instanceof MethodDeclaration) { return Methods.mapMethodDeclaration((MethodDeclaration) dec); + } + else if (dec instanceof NormalClassDeclaration) { + return (EOBndExpr) Classes.mapClass((ClassDeclaration) dec); } else throw new IllegalArgumentException("Declaration of type " + dec.getClass().getSimpleName() diff --git a/src/test/java/common/TestJ2EO.java b/src/test/java/common/TestJ2EO.java index b29d87a2..3aa84393 100644 --- a/src/test/java/common/TestJ2EO.java +++ b/src/test/java/common/TestJ2EO.java @@ -138,7 +138,8 @@ private ArrayList testChapter(String chapterPath) { private static DynamicTest testFile(Path path) { return DynamicTest.dynamicTest( - path.getFileName().toString(), () -> { + path.getParent().getFileName().toString() + "/" + + path.getFileName().toString(), () -> { // Compile and execute Java file String javaExecOutput = compileAndExecuteJava(path);