From fb1fc67e57e2f4f59c2e0e553cfab1fe8f7ed0aa Mon Sep 17 00:00:00 2001 From: kechinvv Date: Fri, 28 Jun 2024 15:29:27 +0300 Subject: [PATCH 1/6] grammar generation --- build.gradle.kts | 39 +- .../libslpluginij => }/antlr/LibSLLexer.g4 | 1 - .../libslpluginij => }/antlr/LibSLParser.g4 | 1 - .../libslpluginij/antlr/LibSLLexer.interp | 306 - .../libslpluginij/antlr/LibSLLexer.java | 572 -- .../libslpluginij/antlr/LibSLLexer.tokens | 178 - .../libslpluginij/antlr/LibSLParser.interp | 288 - .../libslpluginij/antlr/LibSLParser.java | 7267 ----------------- .../libslpluginij/antlr/LibSLParser.tokens | 178 - .../language/LibSLFindUsagesProvider.java | 7 - .../highlight/LibSLSyntaxHighlighter.java | 3 - .../language/psi/PsiElementFactory.java | 5 - 12 files changed, 34 insertions(+), 8811 deletions(-) rename src/main/{java/com/github/kechinvv/libslpluginij => }/antlr/LibSLLexer.g4 (98%) rename src/main/{java/com/github/kechinvv/libslpluginij => }/antlr/LibSLParser.g4 (99%) delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.interp delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.java delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.tokens delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.interp delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.java delete mode 100644 src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.tokens diff --git a/build.gradle.kts b/build.gradle.kts index a657d8f..c69414d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,7 @@ import org.jetbrains.changelog.Changelog import org.jetbrains.changelog.date import org.jetbrains.changelog.markdownToHTML +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile fun properties(key: String) = providers.gradleProperty(key) fun environment(key: String) = providers.environmentVariable(key) @@ -95,12 +96,39 @@ val printVersionName: Task = tasks.create("printVersionName") { } tasks { + + generateGrammarSource { + val packageName = "${project.group}.antlr" + println(packageName) + outputDirectory = File(outputDirectory, packageName.replace('.', '/')) + println(outputDirectory) + arguments = arguments + listOf("-package", packageName) + } + test { useJUnitPlatform() } + runIde { + dependsOn(withType()) + } + + buildPlugin { + dependsOn(withType()) + } + + withType().configureEach { + dependsOn(withType()) + } + + withType().configureEach { + dependsOn(withType()) + } + + withType { options.compilerArgs.add("--enable-preview") + dependsOn(withType()) } withType { @@ -134,10 +162,10 @@ tasks { changeNotes = properties("pluginVersion").map { pluginVersion -> with(changelog) { renderItem( - (getOrNull(pluginVersion) ?: getUnreleased()) - .withHeader(false) - .withEmptySections(false), - Changelog.OutputType.HTML, + (getOrNull(pluginVersion) ?: getUnreleased()) + .withHeader(false) + .withEmptySections(false), + Changelog.OutputType.HTML, ) } } @@ -164,6 +192,7 @@ tasks { // The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3 // Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more: // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel - channels = properties("pluginVersion").map { listOf(it.split('-').getOrElse(1) { "default" }.split('.').first()) } + channels = + properties("pluginVersion").map { listOf(it.split('-').getOrElse(1) { "default" }.split('.').first()) } } } diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.g4 b/src/main/antlr/LibSLLexer.g4 similarity index 98% rename from src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.g4 rename to src/main/antlr/LibSLLexer.g4 index 38c07c4..7c6e03c 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.g4 +++ b/src/main/antlr/LibSLLexer.g4 @@ -1,6 +1,5 @@ lexer grammar LibSLLexer; -@header {package org.jetbrains.research.libsl;} SEMICOLON : ';' ; diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.g4 b/src/main/antlr/LibSLParser.g4 similarity index 99% rename from src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.g4 rename to src/main/antlr/LibSLParser.g4 index 5ba44b0..ff4f76b 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.g4 +++ b/src/main/antlr/LibSLParser.g4 @@ -1,6 +1,5 @@ parser grammar LibSLParser; -@header {package org.jetbrains.research.libsl;} options { tokenVocab = LibSLLexer; } diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.interp b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.interp deleted file mode 100644 index 24a3367..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.interp +++ /dev/null @@ -1,306 +0,0 @@ -token literal names: -null -';' -'=' -'==' -'{' -'}' -'(' -')' -'[' -']' -'.' -':' -',' -'->' -'<' -'>' -'*' -'/' -'%' -'+' -'-' -'++' -'--' -'+=' -'-=' -'*=' -'/=' -'%=' -'!' -'!=' -'<=' -'>=' -'&' -'&&' -'|' -'||' -'^' -'~' -'&=' -'|=' -'^=' -'>>=' -'<<=' -'\'' -'`' -null -null -'import' -'include' -'libsl' -'library' -'version' -'language' -'url' -'typealias' -'type' -'types' -'enum' -'annotation' -'automaton' -'concept' -'var' -'val' -'initstate' -'state' -'finishstate' -'shift' -'new' -'fun' -'constructor' -'destructor' -'proc' -'@' -'action' -'requires' -'ensures' -'assigns' -'true' -'false' -'define' -'if' -'else' -'by' -'is' -'as' -'null' -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -SEMICOLON -ASSIGN_OP -EQ -L_BRACE -R_BRACE -L_BRACKET -R_BRACKET -L_SQUARE_BRACKET -R_SQUARE_BRACKET -DOT -COLON -COMMA -MINUS_ARROW -L_ARROW -R_ARROW -ASTERISK -SLASH -PERCENT -PLUS -MINUS -INCREMENT -DECREMENT -PLUS_EQ -MINUS_EQ -ASTERISK_EQ -SLASH_EQ -PERCENT_EQ -EXCLAMATION -EXCLAMATION_EQ -L_ARROW_EQ -R_ARROW_EQ -AMPERSAND -DOUBLE_AMPERSAND -BIT_OR -LOGIC_OR -XOR -TILDE -AMPERSAND_EQ -OR_EQ -XOR_EQ -R_SHIFT_EQ -L_SHIFT_EQ -APOSTROPHE -BACK_QOUTE -ImportStatement -IncludeStatement -IMPORT -INCLUDE -LIBSL -LIBRARY -VERSION -LANGUAGE -URL -TYPEALIAS -TYPE -TYPES -ENUM -ANNOTATION -AUTOMATON -CONCEPT -VAR -VAL -INITSTATE -STATE -FINISHSTATE -SHIFT -NEW -FUN -CONSTRUCTOR -DESTRUCTOR -PROC -AT -ACTION -REQUIRES -ENSURES -ASSIGNS -TRUE -FALSE -DEFINE -IF -ELSE -BY -IS -AS -NULL -Identifier -DoubleQuotedString -CHARACTER -Digit -Hex -WS -BR -COMMENT -LINE_COMMENT -BAD_CHARACTER - -rule names: -SEMICOLON -ASSIGN_OP -EQ -L_BRACE -R_BRACE -L_BRACKET -R_BRACKET -L_SQUARE_BRACKET -R_SQUARE_BRACKET -DOT -COLON -COMMA -MINUS_ARROW -L_ARROW -R_ARROW -ASTERISK -SLASH -PERCENT -PLUS -MINUS -INCREMENT -DECREMENT -PLUS_EQ -MINUS_EQ -ASTERISK_EQ -SLASH_EQ -PERCENT_EQ -EXCLAMATION -EXCLAMATION_EQ -L_ARROW_EQ -R_ARROW_EQ -AMPERSAND -DOUBLE_AMPERSAND -BIT_OR -LOGIC_OR -XOR -TILDE -AMPERSAND_EQ -OR_EQ -XOR_EQ -R_SHIFT_EQ -L_SHIFT_EQ -APOSTROPHE -BACK_QOUTE -ImportStatement -IncludeStatement -IMPORT -INCLUDE -LIBSL -LIBRARY -VERSION -LANGUAGE -URL -TYPEALIAS -TYPE -TYPES -ENUM -ANNOTATION -AUTOMATON -CONCEPT -VAR -VAL -INITSTATE -STATE -FINISHSTATE -SHIFT -NEW -FUN -CONSTRUCTOR -DESTRUCTOR -PROC -AT -ACTION -REQUIRES -ENSURES -ASSIGNS -TRUE -FALSE -DEFINE -IF -ELSE -BY -IS -AS -NULL -Identifier -ESCAPED_QUOTE -DoubleQuotedString -CHARACTER -SingleCharacter -EscapeSequence -Digit -Hex -NEWLINE -WS -BR -COMMENT -LINE_COMMENT -BAD_CHARACTER - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 95, 689, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 5, 44, 311, 8, 44, 10, 44, 12, 44, 314, 9, 44, 1, 44, 1, 44, 1, 45, 1, 45, 5, 45, 320, 8, 45, 10, 45, 12, 45, 323, 9, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 5, 85, 586, 8, 85, 10, 85, 12, 85, 589, 9, 85, 1, 85, 1, 85, 5, 85, 593, 8, 85, 10, 85, 12, 85, 596, 9, 85, 1, 85, 3, 85, 599, 8, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 5, 87, 607, 8, 87, 10, 87, 12, 87, 610, 9, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 622, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 642, 8, 92, 1, 93, 1, 93, 1, 93, 3, 93, 647, 8, 93, 1, 94, 4, 94, 650, 8, 94, 11, 94, 12, 94, 651, 1, 94, 1, 94, 1, 95, 4, 95, 657, 8, 95, 11, 95, 12, 95, 658, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 667, 8, 96, 10, 96, 12, 96, 670, 9, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 681, 8, 97, 10, 97, 12, 97, 684, 9, 97, 1, 97, 1, 97, 1, 98, 1, 98, 5, 312, 321, 594, 608, 668, 0, 99, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 0, 175, 87, 177, 88, 179, 0, 181, 0, 183, 89, 185, 90, 187, 0, 189, 91, 191, 92, 193, 93, 195, 94, 197, 95, 1, 0, 6, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 12, 13, 698, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 1, 199, 1, 0, 0, 0, 3, 201, 1, 0, 0, 0, 5, 203, 1, 0, 0, 0, 7, 206, 1, 0, 0, 0, 9, 208, 1, 0, 0, 0, 11, 210, 1, 0, 0, 0, 13, 212, 1, 0, 0, 0, 15, 214, 1, 0, 0, 0, 17, 216, 1, 0, 0, 0, 19, 218, 1, 0, 0, 0, 21, 220, 1, 0, 0, 0, 23, 222, 1, 0, 0, 0, 25, 224, 1, 0, 0, 0, 27, 227, 1, 0, 0, 0, 29, 229, 1, 0, 0, 0, 31, 231, 1, 0, 0, 0, 33, 233, 1, 0, 0, 0, 35, 235, 1, 0, 0, 0, 37, 237, 1, 0, 0, 0, 39, 239, 1, 0, 0, 0, 41, 241, 1, 0, 0, 0, 43, 244, 1, 0, 0, 0, 45, 247, 1, 0, 0, 0, 47, 250, 1, 0, 0, 0, 49, 253, 1, 0, 0, 0, 51, 256, 1, 0, 0, 0, 53, 259, 1, 0, 0, 0, 55, 262, 1, 0, 0, 0, 57, 264, 1, 0, 0, 0, 59, 267, 1, 0, 0, 0, 61, 270, 1, 0, 0, 0, 63, 273, 1, 0, 0, 0, 65, 275, 1, 0, 0, 0, 67, 278, 1, 0, 0, 0, 69, 280, 1, 0, 0, 0, 71, 283, 1, 0, 0, 0, 73, 285, 1, 0, 0, 0, 75, 287, 1, 0, 0, 0, 77, 290, 1, 0, 0, 0, 79, 293, 1, 0, 0, 0, 81, 296, 1, 0, 0, 0, 83, 300, 1, 0, 0, 0, 85, 304, 1, 0, 0, 0, 87, 306, 1, 0, 0, 0, 89, 308, 1, 0, 0, 0, 91, 317, 1, 0, 0, 0, 93, 326, 1, 0, 0, 0, 95, 333, 1, 0, 0, 0, 97, 341, 1, 0, 0, 0, 99, 347, 1, 0, 0, 0, 101, 355, 1, 0, 0, 0, 103, 363, 1, 0, 0, 0, 105, 372, 1, 0, 0, 0, 107, 376, 1, 0, 0, 0, 109, 386, 1, 0, 0, 0, 111, 391, 1, 0, 0, 0, 113, 397, 1, 0, 0, 0, 115, 402, 1, 0, 0, 0, 117, 413, 1, 0, 0, 0, 119, 423, 1, 0, 0, 0, 121, 431, 1, 0, 0, 0, 123, 435, 1, 0, 0, 0, 125, 439, 1, 0, 0, 0, 127, 449, 1, 0, 0, 0, 129, 455, 1, 0, 0, 0, 131, 467, 1, 0, 0, 0, 133, 473, 1, 0, 0, 0, 135, 477, 1, 0, 0, 0, 137, 481, 1, 0, 0, 0, 139, 493, 1, 0, 0, 0, 141, 504, 1, 0, 0, 0, 143, 509, 1, 0, 0, 0, 145, 511, 1, 0, 0, 0, 147, 518, 1, 0, 0, 0, 149, 527, 1, 0, 0, 0, 151, 535, 1, 0, 0, 0, 153, 543, 1, 0, 0, 0, 155, 548, 1, 0, 0, 0, 157, 554, 1, 0, 0, 0, 159, 561, 1, 0, 0, 0, 161, 564, 1, 0, 0, 0, 163, 569, 1, 0, 0, 0, 165, 572, 1, 0, 0, 0, 167, 575, 1, 0, 0, 0, 169, 578, 1, 0, 0, 0, 171, 598, 1, 0, 0, 0, 173, 600, 1, 0, 0, 0, 175, 603, 1, 0, 0, 0, 177, 621, 1, 0, 0, 0, 179, 623, 1, 0, 0, 0, 181, 625, 1, 0, 0, 0, 183, 637, 1, 0, 0, 0, 185, 641, 1, 0, 0, 0, 187, 646, 1, 0, 0, 0, 189, 649, 1, 0, 0, 0, 191, 656, 1, 0, 0, 0, 193, 662, 1, 0, 0, 0, 195, 676, 1, 0, 0, 0, 197, 687, 1, 0, 0, 0, 199, 200, 5, 59, 0, 0, 200, 2, 1, 0, 0, 0, 201, 202, 5, 61, 0, 0, 202, 4, 1, 0, 0, 0, 203, 204, 5, 61, 0, 0, 204, 205, 5, 61, 0, 0, 205, 6, 1, 0, 0, 0, 206, 207, 5, 123, 0, 0, 207, 8, 1, 0, 0, 0, 208, 209, 5, 125, 0, 0, 209, 10, 1, 0, 0, 0, 210, 211, 5, 40, 0, 0, 211, 12, 1, 0, 0, 0, 212, 213, 5, 41, 0, 0, 213, 14, 1, 0, 0, 0, 214, 215, 5, 91, 0, 0, 215, 16, 1, 0, 0, 0, 216, 217, 5, 93, 0, 0, 217, 18, 1, 0, 0, 0, 218, 219, 5, 46, 0, 0, 219, 20, 1, 0, 0, 0, 220, 221, 5, 58, 0, 0, 221, 22, 1, 0, 0, 0, 222, 223, 5, 44, 0, 0, 223, 24, 1, 0, 0, 0, 224, 225, 5, 45, 0, 0, 225, 226, 5, 62, 0, 0, 226, 26, 1, 0, 0, 0, 227, 228, 5, 60, 0, 0, 228, 28, 1, 0, 0, 0, 229, 230, 5, 62, 0, 0, 230, 30, 1, 0, 0, 0, 231, 232, 5, 42, 0, 0, 232, 32, 1, 0, 0, 0, 233, 234, 5, 47, 0, 0, 234, 34, 1, 0, 0, 0, 235, 236, 5, 37, 0, 0, 236, 36, 1, 0, 0, 0, 237, 238, 5, 43, 0, 0, 238, 38, 1, 0, 0, 0, 239, 240, 5, 45, 0, 0, 240, 40, 1, 0, 0, 0, 241, 242, 5, 43, 0, 0, 242, 243, 5, 43, 0, 0, 243, 42, 1, 0, 0, 0, 244, 245, 5, 45, 0, 0, 245, 246, 5, 45, 0, 0, 246, 44, 1, 0, 0, 0, 247, 248, 5, 43, 0, 0, 248, 249, 5, 61, 0, 0, 249, 46, 1, 0, 0, 0, 250, 251, 5, 45, 0, 0, 251, 252, 5, 61, 0, 0, 252, 48, 1, 0, 0, 0, 253, 254, 5, 42, 0, 0, 254, 255, 5, 61, 0, 0, 255, 50, 1, 0, 0, 0, 256, 257, 5, 47, 0, 0, 257, 258, 5, 61, 0, 0, 258, 52, 1, 0, 0, 0, 259, 260, 5, 37, 0, 0, 260, 261, 5, 61, 0, 0, 261, 54, 1, 0, 0, 0, 262, 263, 5, 33, 0, 0, 263, 56, 1, 0, 0, 0, 264, 265, 5, 33, 0, 0, 265, 266, 5, 61, 0, 0, 266, 58, 1, 0, 0, 0, 267, 268, 5, 60, 0, 0, 268, 269, 5, 61, 0, 0, 269, 60, 1, 0, 0, 0, 270, 271, 5, 62, 0, 0, 271, 272, 5, 61, 0, 0, 272, 62, 1, 0, 0, 0, 273, 274, 5, 38, 0, 0, 274, 64, 1, 0, 0, 0, 275, 276, 5, 38, 0, 0, 276, 277, 5, 38, 0, 0, 277, 66, 1, 0, 0, 0, 278, 279, 5, 124, 0, 0, 279, 68, 1, 0, 0, 0, 280, 281, 5, 124, 0, 0, 281, 282, 5, 124, 0, 0, 282, 70, 1, 0, 0, 0, 283, 284, 5, 94, 0, 0, 284, 72, 1, 0, 0, 0, 285, 286, 5, 126, 0, 0, 286, 74, 1, 0, 0, 0, 287, 288, 5, 38, 0, 0, 288, 289, 5, 61, 0, 0, 289, 76, 1, 0, 0, 0, 290, 291, 5, 124, 0, 0, 291, 292, 5, 61, 0, 0, 292, 78, 1, 0, 0, 0, 293, 294, 5, 94, 0, 0, 294, 295, 5, 61, 0, 0, 295, 80, 1, 0, 0, 0, 296, 297, 5, 62, 0, 0, 297, 298, 5, 62, 0, 0, 298, 299, 5, 61, 0, 0, 299, 82, 1, 0, 0, 0, 300, 301, 5, 60, 0, 0, 301, 302, 5, 60, 0, 0, 302, 303, 5, 61, 0, 0, 303, 84, 1, 0, 0, 0, 304, 305, 5, 39, 0, 0, 305, 86, 1, 0, 0, 0, 306, 307, 5, 96, 0, 0, 307, 88, 1, 0, 0, 0, 308, 312, 3, 93, 46, 0, 309, 311, 9, 0, 0, 0, 310, 309, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 315, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 315, 316, 5, 59, 0, 0, 316, 90, 1, 0, 0, 0, 317, 321, 3, 95, 47, 0, 318, 320, 9, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 59, 0, 0, 325, 92, 1, 0, 0, 0, 326, 327, 5, 105, 0, 0, 327, 328, 5, 109, 0, 0, 328, 329, 5, 112, 0, 0, 329, 330, 5, 111, 0, 0, 330, 331, 5, 114, 0, 0, 331, 332, 5, 116, 0, 0, 332, 94, 1, 0, 0, 0, 333, 334, 5, 105, 0, 0, 334, 335, 5, 110, 0, 0, 335, 336, 5, 99, 0, 0, 336, 337, 5, 108, 0, 0, 337, 338, 5, 117, 0, 0, 338, 339, 5, 100, 0, 0, 339, 340, 5, 101, 0, 0, 340, 96, 1, 0, 0, 0, 341, 342, 5, 108, 0, 0, 342, 343, 5, 105, 0, 0, 343, 344, 5, 98, 0, 0, 344, 345, 5, 115, 0, 0, 345, 346, 5, 108, 0, 0, 346, 98, 1, 0, 0, 0, 347, 348, 5, 108, 0, 0, 348, 349, 5, 105, 0, 0, 349, 350, 5, 98, 0, 0, 350, 351, 5, 114, 0, 0, 351, 352, 5, 97, 0, 0, 352, 353, 5, 114, 0, 0, 353, 354, 5, 121, 0, 0, 354, 100, 1, 0, 0, 0, 355, 356, 5, 118, 0, 0, 356, 357, 5, 101, 0, 0, 357, 358, 5, 114, 0, 0, 358, 359, 5, 115, 0, 0, 359, 360, 5, 105, 0, 0, 360, 361, 5, 111, 0, 0, 361, 362, 5, 110, 0, 0, 362, 102, 1, 0, 0, 0, 363, 364, 5, 108, 0, 0, 364, 365, 5, 97, 0, 0, 365, 366, 5, 110, 0, 0, 366, 367, 5, 103, 0, 0, 367, 368, 5, 117, 0, 0, 368, 369, 5, 97, 0, 0, 369, 370, 5, 103, 0, 0, 370, 371, 5, 101, 0, 0, 371, 104, 1, 0, 0, 0, 372, 373, 5, 117, 0, 0, 373, 374, 5, 114, 0, 0, 374, 375, 5, 108, 0, 0, 375, 106, 1, 0, 0, 0, 376, 377, 5, 116, 0, 0, 377, 378, 5, 121, 0, 0, 378, 379, 5, 112, 0, 0, 379, 380, 5, 101, 0, 0, 380, 381, 5, 97, 0, 0, 381, 382, 5, 108, 0, 0, 382, 383, 5, 105, 0, 0, 383, 384, 5, 97, 0, 0, 384, 385, 5, 115, 0, 0, 385, 108, 1, 0, 0, 0, 386, 387, 5, 116, 0, 0, 387, 388, 5, 121, 0, 0, 388, 389, 5, 112, 0, 0, 389, 390, 5, 101, 0, 0, 390, 110, 1, 0, 0, 0, 391, 392, 5, 116, 0, 0, 392, 393, 5, 121, 0, 0, 393, 394, 5, 112, 0, 0, 394, 395, 5, 101, 0, 0, 395, 396, 5, 115, 0, 0, 396, 112, 1, 0, 0, 0, 397, 398, 5, 101, 0, 0, 398, 399, 5, 110, 0, 0, 399, 400, 5, 117, 0, 0, 400, 401, 5, 109, 0, 0, 401, 114, 1, 0, 0, 0, 402, 403, 5, 97, 0, 0, 403, 404, 5, 110, 0, 0, 404, 405, 5, 110, 0, 0, 405, 406, 5, 111, 0, 0, 406, 407, 5, 116, 0, 0, 407, 408, 5, 97, 0, 0, 408, 409, 5, 116, 0, 0, 409, 410, 5, 105, 0, 0, 410, 411, 5, 111, 0, 0, 411, 412, 5, 110, 0, 0, 412, 116, 1, 0, 0, 0, 413, 414, 5, 97, 0, 0, 414, 415, 5, 117, 0, 0, 415, 416, 5, 116, 0, 0, 416, 417, 5, 111, 0, 0, 417, 418, 5, 109, 0, 0, 418, 419, 5, 97, 0, 0, 419, 420, 5, 116, 0, 0, 420, 421, 5, 111, 0, 0, 421, 422, 5, 110, 0, 0, 422, 118, 1, 0, 0, 0, 423, 424, 5, 99, 0, 0, 424, 425, 5, 111, 0, 0, 425, 426, 5, 110, 0, 0, 426, 427, 5, 99, 0, 0, 427, 428, 5, 101, 0, 0, 428, 429, 5, 112, 0, 0, 429, 430, 5, 116, 0, 0, 430, 120, 1, 0, 0, 0, 431, 432, 5, 118, 0, 0, 432, 433, 5, 97, 0, 0, 433, 434, 5, 114, 0, 0, 434, 122, 1, 0, 0, 0, 435, 436, 5, 118, 0, 0, 436, 437, 5, 97, 0, 0, 437, 438, 5, 108, 0, 0, 438, 124, 1, 0, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 110, 0, 0, 441, 442, 5, 105, 0, 0, 442, 443, 5, 116, 0, 0, 443, 444, 5, 115, 0, 0, 444, 445, 5, 116, 0, 0, 445, 446, 5, 97, 0, 0, 446, 447, 5, 116, 0, 0, 447, 448, 5, 101, 0, 0, 448, 126, 1, 0, 0, 0, 449, 450, 5, 115, 0, 0, 450, 451, 5, 116, 0, 0, 451, 452, 5, 97, 0, 0, 452, 453, 5, 116, 0, 0, 453, 454, 5, 101, 0, 0, 454, 128, 1, 0, 0, 0, 455, 456, 5, 102, 0, 0, 456, 457, 5, 105, 0, 0, 457, 458, 5, 110, 0, 0, 458, 459, 5, 105, 0, 0, 459, 460, 5, 115, 0, 0, 460, 461, 5, 104, 0, 0, 461, 462, 5, 115, 0, 0, 462, 463, 5, 116, 0, 0, 463, 464, 5, 97, 0, 0, 464, 465, 5, 116, 0, 0, 465, 466, 5, 101, 0, 0, 466, 130, 1, 0, 0, 0, 467, 468, 5, 115, 0, 0, 468, 469, 5, 104, 0, 0, 469, 470, 5, 105, 0, 0, 470, 471, 5, 102, 0, 0, 471, 472, 5, 116, 0, 0, 472, 132, 1, 0, 0, 0, 473, 474, 5, 110, 0, 0, 474, 475, 5, 101, 0, 0, 475, 476, 5, 119, 0, 0, 476, 134, 1, 0, 0, 0, 477, 478, 5, 102, 0, 0, 478, 479, 5, 117, 0, 0, 479, 480, 5, 110, 0, 0, 480, 136, 1, 0, 0, 0, 481, 482, 5, 99, 0, 0, 482, 483, 5, 111, 0, 0, 483, 484, 5, 110, 0, 0, 484, 485, 5, 115, 0, 0, 485, 486, 5, 116, 0, 0, 486, 487, 5, 114, 0, 0, 487, 488, 5, 117, 0, 0, 488, 489, 5, 99, 0, 0, 489, 490, 5, 116, 0, 0, 490, 491, 5, 111, 0, 0, 491, 492, 5, 114, 0, 0, 492, 138, 1, 0, 0, 0, 493, 494, 5, 100, 0, 0, 494, 495, 5, 101, 0, 0, 495, 496, 5, 115, 0, 0, 496, 497, 5, 116, 0, 0, 497, 498, 5, 114, 0, 0, 498, 499, 5, 117, 0, 0, 499, 500, 5, 99, 0, 0, 500, 501, 5, 116, 0, 0, 501, 502, 5, 111, 0, 0, 502, 503, 5, 114, 0, 0, 503, 140, 1, 0, 0, 0, 504, 505, 5, 112, 0, 0, 505, 506, 5, 114, 0, 0, 506, 507, 5, 111, 0, 0, 507, 508, 5, 99, 0, 0, 508, 142, 1, 0, 0, 0, 509, 510, 5, 64, 0, 0, 510, 144, 1, 0, 0, 0, 511, 512, 5, 97, 0, 0, 512, 513, 5, 99, 0, 0, 513, 514, 5, 116, 0, 0, 514, 515, 5, 105, 0, 0, 515, 516, 5, 111, 0, 0, 516, 517, 5, 110, 0, 0, 517, 146, 1, 0, 0, 0, 518, 519, 5, 114, 0, 0, 519, 520, 5, 101, 0, 0, 520, 521, 5, 113, 0, 0, 521, 522, 5, 117, 0, 0, 522, 523, 5, 105, 0, 0, 523, 524, 5, 114, 0, 0, 524, 525, 5, 101, 0, 0, 525, 526, 5, 115, 0, 0, 526, 148, 1, 0, 0, 0, 527, 528, 5, 101, 0, 0, 528, 529, 5, 110, 0, 0, 529, 530, 5, 115, 0, 0, 530, 531, 5, 117, 0, 0, 531, 532, 5, 114, 0, 0, 532, 533, 5, 101, 0, 0, 533, 534, 5, 115, 0, 0, 534, 150, 1, 0, 0, 0, 535, 536, 5, 97, 0, 0, 536, 537, 5, 115, 0, 0, 537, 538, 5, 115, 0, 0, 538, 539, 5, 105, 0, 0, 539, 540, 5, 103, 0, 0, 540, 541, 5, 110, 0, 0, 541, 542, 5, 115, 0, 0, 542, 152, 1, 0, 0, 0, 543, 544, 5, 116, 0, 0, 544, 545, 5, 114, 0, 0, 545, 546, 5, 117, 0, 0, 546, 547, 5, 101, 0, 0, 547, 154, 1, 0, 0, 0, 548, 549, 5, 102, 0, 0, 549, 550, 5, 97, 0, 0, 550, 551, 5, 108, 0, 0, 551, 552, 5, 115, 0, 0, 552, 553, 5, 101, 0, 0, 553, 156, 1, 0, 0, 0, 554, 555, 5, 100, 0, 0, 555, 556, 5, 101, 0, 0, 556, 557, 5, 102, 0, 0, 557, 558, 5, 105, 0, 0, 558, 559, 5, 110, 0, 0, 559, 560, 5, 101, 0, 0, 560, 158, 1, 0, 0, 0, 561, 562, 5, 105, 0, 0, 562, 563, 5, 102, 0, 0, 563, 160, 1, 0, 0, 0, 564, 565, 5, 101, 0, 0, 565, 566, 5, 108, 0, 0, 566, 567, 5, 115, 0, 0, 567, 568, 5, 101, 0, 0, 568, 162, 1, 0, 0, 0, 569, 570, 5, 98, 0, 0, 570, 571, 5, 121, 0, 0, 571, 164, 1, 0, 0, 0, 572, 573, 5, 105, 0, 0, 573, 574, 5, 115, 0, 0, 574, 166, 1, 0, 0, 0, 575, 576, 5, 97, 0, 0, 576, 577, 5, 115, 0, 0, 577, 168, 1, 0, 0, 0, 578, 579, 5, 110, 0, 0, 579, 580, 5, 117, 0, 0, 580, 581, 5, 108, 0, 0, 581, 582, 5, 108, 0, 0, 582, 170, 1, 0, 0, 0, 583, 587, 7, 0, 0, 0, 584, 586, 7, 1, 0, 0, 585, 584, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 599, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 594, 5, 96, 0, 0, 591, 593, 9, 0, 0, 0, 592, 591, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 595, 597, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 599, 5, 96, 0, 0, 598, 583, 1, 0, 0, 0, 598, 590, 1, 0, 0, 0, 599, 172, 1, 0, 0, 0, 600, 601, 5, 92, 0, 0, 601, 602, 5, 34, 0, 0, 602, 174, 1, 0, 0, 0, 603, 608, 5, 34, 0, 0, 604, 607, 3, 173, 86, 0, 605, 607, 8, 2, 0, 0, 606, 604, 1, 0, 0, 0, 606, 605, 1, 0, 0, 0, 607, 610, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 609, 611, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 611, 612, 5, 34, 0, 0, 612, 176, 1, 0, 0, 0, 613, 614, 5, 39, 0, 0, 614, 615, 3, 179, 89, 0, 615, 616, 5, 39, 0, 0, 616, 622, 1, 0, 0, 0, 617, 618, 5, 39, 0, 0, 618, 619, 3, 181, 90, 0, 619, 620, 5, 39, 0, 0, 620, 622, 1, 0, 0, 0, 621, 613, 1, 0, 0, 0, 621, 617, 1, 0, 0, 0, 622, 178, 1, 0, 0, 0, 623, 624, 8, 3, 0, 0, 624, 180, 1, 0, 0, 0, 625, 626, 5, 92, 0, 0, 626, 627, 5, 117, 0, 0, 627, 628, 1, 0, 0, 0, 628, 629, 3, 185, 92, 0, 629, 630, 3, 185, 92, 0, 630, 631, 3, 185, 92, 0, 631, 632, 3, 185, 92, 0, 632, 633, 3, 185, 92, 0, 633, 634, 3, 185, 92, 0, 634, 635, 3, 185, 92, 0, 635, 636, 3, 185, 92, 0, 636, 182, 1, 0, 0, 0, 637, 638, 2, 48, 57, 0, 638, 184, 1, 0, 0, 0, 639, 642, 3, 183, 91, 0, 640, 642, 2, 65, 70, 0, 641, 639, 1, 0, 0, 0, 641, 640, 1, 0, 0, 0, 642, 186, 1, 0, 0, 0, 643, 644, 5, 13, 0, 0, 644, 647, 5, 10, 0, 0, 645, 647, 7, 2, 0, 0, 646, 643, 1, 0, 0, 0, 646, 645, 1, 0, 0, 0, 647, 188, 1, 0, 0, 0, 648, 650, 7, 4, 0, 0, 649, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 654, 6, 94, 0, 0, 654, 190, 1, 0, 0, 0, 655, 657, 7, 5, 0, 0, 656, 655, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 656, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 6, 95, 0, 0, 661, 192, 1, 0, 0, 0, 662, 663, 5, 47, 0, 0, 663, 664, 5, 42, 0, 0, 664, 668, 1, 0, 0, 0, 665, 667, 9, 0, 0, 0, 666, 665, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 671, 672, 5, 42, 0, 0, 672, 673, 5, 47, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 6, 96, 0, 0, 675, 194, 1, 0, 0, 0, 676, 677, 5, 47, 0, 0, 677, 678, 5, 47, 0, 0, 678, 682, 1, 0, 0, 0, 679, 681, 8, 2, 0, 0, 680, 679, 1, 0, 0, 0, 681, 684, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 685, 1, 0, 0, 0, 684, 682, 1, 0, 0, 0, 685, 686, 6, 97, 0, 0, 686, 196, 1, 0, 0, 0, 687, 688, 9, 0, 0, 0, 688, 198, 1, 0, 0, 0, 15, 0, 312, 321, 587, 594, 598, 606, 608, 621, 641, 646, 651, 658, 668, 682, 1, 0, 1, 0] \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.java b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.java deleted file mode 100644 index e07ff57..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.java +++ /dev/null @@ -1,572 +0,0 @@ -// Generated from /home/valera/IdeaProjects/LibSLPluginIJ/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.g4 by ANTLR 4.13.1 -package com.github.kechinvv.libslpluginij.antlr; -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class LibSLLexer extends Lexer { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - SEMICOLON=1, ASSIGN_OP=2, EQ=3, L_BRACE=4, R_BRACE=5, L_BRACKET=6, R_BRACKET=7, - L_SQUARE_BRACKET=8, R_SQUARE_BRACKET=9, DOT=10, COLON=11, COMMA=12, MINUS_ARROW=13, - L_ARROW=14, R_ARROW=15, ASTERISK=16, SLASH=17, PERCENT=18, PLUS=19, MINUS=20, - INCREMENT=21, DECREMENT=22, PLUS_EQ=23, MINUS_EQ=24, ASTERISK_EQ=25, SLASH_EQ=26, - PERCENT_EQ=27, EXCLAMATION=28, EXCLAMATION_EQ=29, L_ARROW_EQ=30, R_ARROW_EQ=31, - AMPERSAND=32, DOUBLE_AMPERSAND=33, BIT_OR=34, LOGIC_OR=35, XOR=36, TILDE=37, - AMPERSAND_EQ=38, OR_EQ=39, XOR_EQ=40, R_SHIFT_EQ=41, L_SHIFT_EQ=42, APOSTROPHE=43, - BACK_QOUTE=44, ImportStatement=45, IncludeStatement=46, IMPORT=47, INCLUDE=48, - LIBSL=49, LIBRARY=50, VERSION=51, LANGUAGE=52, URL=53, TYPEALIAS=54, TYPE=55, - TYPES=56, ENUM=57, ANNOTATION=58, AUTOMATON=59, CONCEPT=60, VAR=61, VAL=62, - INITSTATE=63, STATE=64, FINISHSTATE=65, SHIFT=66, NEW=67, FUN=68, CONSTRUCTOR=69, - DESTRUCTOR=70, PROC=71, AT=72, ACTION=73, REQUIRES=74, ENSURES=75, ASSIGNS=76, - TRUE=77, FALSE=78, DEFINE=79, IF=80, ELSE=81, BY=82, IS=83, AS=84, NULL=85, - Identifier=86, DoubleQuotedString=87, CHARACTER=88, Digit=89, Hex=90, - WS=91, BR=92, COMMENT=93, LINE_COMMENT=94, BAD_CHARACTER=95; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE" - }; - - private static String[] makeRuleNames() { - return new String[] { - "SEMICOLON", "ASSIGN_OP", "EQ", "L_BRACE", "R_BRACE", "L_BRACKET", "R_BRACKET", - "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "DOT", "COLON", "COMMA", "MINUS_ARROW", - "L_ARROW", "R_ARROW", "ASTERISK", "SLASH", "PERCENT", "PLUS", "MINUS", - "INCREMENT", "DECREMENT", "PLUS_EQ", "MINUS_EQ", "ASTERISK_EQ", "SLASH_EQ", - "PERCENT_EQ", "EXCLAMATION", "EXCLAMATION_EQ", "L_ARROW_EQ", "R_ARROW_EQ", - "AMPERSAND", "DOUBLE_AMPERSAND", "BIT_OR", "LOGIC_OR", "XOR", "TILDE", - "AMPERSAND_EQ", "OR_EQ", "XOR_EQ", "R_SHIFT_EQ", "L_SHIFT_EQ", "APOSTROPHE", - "BACK_QOUTE", "ImportStatement", "IncludeStatement", "IMPORT", "INCLUDE", - "LIBSL", "LIBRARY", "VERSION", "LANGUAGE", "URL", "TYPEALIAS", "TYPE", - "TYPES", "ENUM", "ANNOTATION", "AUTOMATON", "CONCEPT", "VAR", "VAL", - "INITSTATE", "STATE", "FINISHSTATE", "SHIFT", "NEW", "FUN", "CONSTRUCTOR", - "DESTRUCTOR", "PROC", "AT", "ACTION", "REQUIRES", "ENSURES", "ASSIGNS", - "TRUE", "FALSE", "DEFINE", "IF", "ELSE", "BY", "IS", "AS", "NULL", "Identifier", - "ESCAPED_QUOTE", "DoubleQuotedString", "CHARACTER", "SingleCharacter", - "EscapeSequence", "Digit", "Hex", "NEWLINE", "WS", "BR", "COMMENT", "LINE_COMMENT", - "BAD_CHARACTER" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "';'", "'='", "'=='", "'{'", "'}'", "'('", "')'", "'['", "']'", - "'.'", "':'", "','", "'->'", "'<'", "'>'", "'*'", "'/'", "'%'", "'+'", - "'-'", "'++'", "'--'", "'+='", "'-='", "'*='", "'/='", "'%='", "'!'", - "'!='", "'<='", "'>='", "'&'", "'&&'", "'|'", "'||'", "'^'", "'~'", "'&='", - "'|='", "'^='", "'>>='", "'<<='", "'''", "'`'", null, null, "'import'", - "'include'", "'libsl'", "'library'", "'version'", "'language'", "'url'", - "'typealias'", "'type'", "'types'", "'enum'", "'annotation'", "'automaton'", - "'concept'", "'var'", "'val'", "'initstate'", "'state'", "'finishstate'", - "'shift'", "'new'", "'fun'", "'constructor'", "'destructor'", "'proc'", - "'@'", "'action'", "'requires'", "'ensures'", "'assigns'", "'true'", - "'false'", "'define'", "'if'", "'else'", "'by'", "'is'", "'as'", "'null'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "SEMICOLON", "ASSIGN_OP", "EQ", "L_BRACE", "R_BRACE", "L_BRACKET", - "R_BRACKET", "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "DOT", "COLON", - "COMMA", "MINUS_ARROW", "L_ARROW", "R_ARROW", "ASTERISK", "SLASH", "PERCENT", - "PLUS", "MINUS", "INCREMENT", "DECREMENT", "PLUS_EQ", "MINUS_EQ", "ASTERISK_EQ", - "SLASH_EQ", "PERCENT_EQ", "EXCLAMATION", "EXCLAMATION_EQ", "L_ARROW_EQ", - "R_ARROW_EQ", "AMPERSAND", "DOUBLE_AMPERSAND", "BIT_OR", "LOGIC_OR", - "XOR", "TILDE", "AMPERSAND_EQ", "OR_EQ", "XOR_EQ", "R_SHIFT_EQ", "L_SHIFT_EQ", - "APOSTROPHE", "BACK_QOUTE", "ImportStatement", "IncludeStatement", "IMPORT", - "INCLUDE", "LIBSL", "LIBRARY", "VERSION", "LANGUAGE", "URL", "TYPEALIAS", - "TYPE", "TYPES", "ENUM", "ANNOTATION", "AUTOMATON", "CONCEPT", "VAR", - "VAL", "INITSTATE", "STATE", "FINISHSTATE", "SHIFT", "NEW", "FUN", "CONSTRUCTOR", - "DESTRUCTOR", "PROC", "AT", "ACTION", "REQUIRES", "ENSURES", "ASSIGNS", - "TRUE", "FALSE", "DEFINE", "IF", "ELSE", "BY", "IS", "AS", "NULL", "Identifier", - "DoubleQuotedString", "CHARACTER", "Digit", "Hex", "WS", "BR", "COMMENT", - "LINE_COMMENT", "BAD_CHARACTER" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - public LibSLLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "LibSLLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - public static final String _serializedATN = - "\u0004\u0000_\u02b1\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ - "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ - "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ - "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ - "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+ - "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+ - "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+ - "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+ - "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+ - "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ - "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ - "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ - "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+ - "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+ - "0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+ - "5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+ - ":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+ - "?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+ - "D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+ - "I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+ - "N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+ - "S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+ - "X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+ - "]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+ - "b\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005"+ - "\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001"+ - "\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+ - "\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+ - "\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ - "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017"+ - "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+ - "\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d"+ - "\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f"+ - "\u0001 \u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001#\u0001"+ - "#\u0001$\u0001$\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001\'\u0001"+ - "\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001"+ - "*\u0001*\u0001+\u0001+\u0001,\u0001,\u0005,\u0137\b,\n,\f,\u013a\t,\u0001"+ - ",\u0001,\u0001-\u0001-\u0005-\u0140\b-\n-\f-\u0143\t-\u0001-\u0001-\u0001"+ - ".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001"+ - "/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u00010\u0001"+ - "0\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u0001"+ - "2\u00012\u00012\u00012\u00012\u00012\u00012\u00013\u00013\u00013\u0001"+ - "3\u00013\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u00014\u0001"+ - "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+ - "6\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u0001:\u0001:\u0001:\u0001"+ - ":\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001"+ - ";\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0001=\u0001"+ - "=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ - ">\u0001>\u0001>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001"+ - "@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ - "@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001"+ - "B\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+ - "D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+ - "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+ - "H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+ - "I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001"+ - "K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001"+ - "L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001"+ - "N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001P\u0001P\u0001"+ - "P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001S\u0001"+ - "S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0005U\u024a"+ - "\bU\nU\fU\u024d\tU\u0001U\u0001U\u0005U\u0251\bU\nU\fU\u0254\tU\u0001"+ - "U\u0003U\u0257\bU\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0005W\u025f"+ - "\bW\nW\fW\u0262\tW\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+ - "X\u0001X\u0001X\u0003X\u026e\bX\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001"+ - "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001"+ - "[\u0001\\\u0001\\\u0003\\\u0282\b\\\u0001]\u0001]\u0001]\u0003]\u0287"+ - "\b]\u0001^\u0004^\u028a\b^\u000b^\f^\u028b\u0001^\u0001^\u0001_\u0004"+ - "_\u0291\b_\u000b_\f_\u0292\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0005"+ - "`\u029b\b`\n`\f`\u029e\t`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001"+ - "a\u0001a\u0001a\u0005a\u02a9\ba\na\fa\u02ac\ta\u0001a\u0001a\u0001b\u0001"+ - "b\u0005\u0138\u0141\u0252\u0260\u029c\u0000c\u0001\u0001\u0003\u0002\u0005"+ - "\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n"+ - "\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011"+ - "#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b"+ - "7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e"+ - "3g4i5k6m7o8q9s:u;w}?\u007f@\u0081A\u0083B\u0085C\u0087D\u0089E\u008b"+ - "F\u008dG\u008fH\u0091I\u0093J\u0095K\u0097L\u0099M\u009bN\u009dO\u009f"+ - "P\u00a1Q\u00a3R\u00a5S\u00a7T\u00a9U\u00abV\u00ad\u0000\u00afW\u00b1X"+ - "\u00b3\u0000\u00b5\u0000\u00b7Y\u00b9Z\u00bb\u0000\u00bd[\u00bf\\\u00c1"+ - "]\u00c3^\u00c5_\u0001\u0000\u0006\u0004\u0000$$AZ__az\u0005\u0000$$09"+ - "AZ__az\u0002\u0000\n\n\r\r\u0004\u0000\n\n\r\r\'\'\\\\\u0002\u0000\t\t"+ - " \u0002\u0000\n\n\f\r\u02ba\u0000\u0001\u0001\u0000\u0000\u0000\u0000"+ - "\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000"+ - "\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b"+ - "\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001"+ - "\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001"+ - "\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001"+ - "\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001"+ - "\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001"+ - "\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000"+ - "\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000"+ - "\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-"+ - "\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000"+ - "\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000"+ - "\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;"+ - "\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000"+ - "\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000\u0000"+ - "\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I"+ - "\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000"+ - "\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000"+ - "\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W"+ - "\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000"+ - "\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000"+ - "\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e"+ - "\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000"+ - "\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000"+ - "\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s"+ - "\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000"+ - "\u0000\u0000\u0000y\u0001\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000"+ - "\u0000}\u0001\u0000\u0000\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000"+ - "\u0081\u0001\u0000\u0000\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000"+ - "\u0085\u0001\u0000\u0000\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000"+ - "\u0089\u0001\u0000\u0000\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000"+ - "\u008d\u0001\u0000\u0000\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000"+ - "\u0091\u0001\u0000\u0000\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000"+ - "\u0095\u0001\u0000\u0000\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000"+ - "\u0099\u0001\u0000\u0000\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000"+ - "\u009d\u0001\u0000\u0000\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000"+ - "\u00a1\u0001\u0000\u0000\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000"+ - "\u00a5\u0001\u0000\u0000\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000"+ - "\u00a9\u0001\u0000\u0000\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000"+ - "\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000\u0000\u0000"+ - "\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000"+ - "\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000"+ - "\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000"+ - "\u00c5\u0001\u0000\u0000\u0000\u0001\u00c7\u0001\u0000\u0000\u0000\u0003"+ - "\u00c9\u0001\u0000\u0000\u0000\u0005\u00cb\u0001\u0000\u0000\u0000\u0007"+ - "\u00ce\u0001\u0000\u0000\u0000\t\u00d0\u0001\u0000\u0000\u0000\u000b\u00d2"+ - "\u0001\u0000\u0000\u0000\r\u00d4\u0001\u0000\u0000\u0000\u000f\u00d6\u0001"+ - "\u0000\u0000\u0000\u0011\u00d8\u0001\u0000\u0000\u0000\u0013\u00da\u0001"+ - "\u0000\u0000\u0000\u0015\u00dc\u0001\u0000\u0000\u0000\u0017\u00de\u0001"+ - "\u0000\u0000\u0000\u0019\u00e0\u0001\u0000\u0000\u0000\u001b\u00e3\u0001"+ - "\u0000\u0000\u0000\u001d\u00e5\u0001\u0000\u0000\u0000\u001f\u00e7\u0001"+ - "\u0000\u0000\u0000!\u00e9\u0001\u0000\u0000\u0000#\u00eb\u0001\u0000\u0000"+ - "\u0000%\u00ed\u0001\u0000\u0000\u0000\'\u00ef\u0001\u0000\u0000\u0000"+ - ")\u00f1\u0001\u0000\u0000\u0000+\u00f4\u0001\u0000\u0000\u0000-\u00f7"+ - "\u0001\u0000\u0000\u0000/\u00fa\u0001\u0000\u0000\u00001\u00fd\u0001\u0000"+ - "\u0000\u00003\u0100\u0001\u0000\u0000\u00005\u0103\u0001\u0000\u0000\u0000"+ - "7\u0106\u0001\u0000\u0000\u00009\u0108\u0001\u0000\u0000\u0000;\u010b"+ - "\u0001\u0000\u0000\u0000=\u010e\u0001\u0000\u0000\u0000?\u0111\u0001\u0000"+ - "\u0000\u0000A\u0113\u0001\u0000\u0000\u0000C\u0116\u0001\u0000\u0000\u0000"+ - "E\u0118\u0001\u0000\u0000\u0000G\u011b\u0001\u0000\u0000\u0000I\u011d"+ - "\u0001\u0000\u0000\u0000K\u011f\u0001\u0000\u0000\u0000M\u0122\u0001\u0000"+ - "\u0000\u0000O\u0125\u0001\u0000\u0000\u0000Q\u0128\u0001\u0000\u0000\u0000"+ - "S\u012c\u0001\u0000\u0000\u0000U\u0130\u0001\u0000\u0000\u0000W\u0132"+ - "\u0001\u0000\u0000\u0000Y\u0134\u0001\u0000\u0000\u0000[\u013d\u0001\u0000"+ - "\u0000\u0000]\u0146\u0001\u0000\u0000\u0000_\u014d\u0001\u0000\u0000\u0000"+ - "a\u0155\u0001\u0000\u0000\u0000c\u015b\u0001\u0000\u0000\u0000e\u0163"+ - "\u0001\u0000\u0000\u0000g\u016b\u0001\u0000\u0000\u0000i\u0174\u0001\u0000"+ - "\u0000\u0000k\u0178\u0001\u0000\u0000\u0000m\u0182\u0001\u0000\u0000\u0000"+ - "o\u0187\u0001\u0000\u0000\u0000q\u018d\u0001\u0000\u0000\u0000s\u0192"+ - "\u0001\u0000\u0000\u0000u\u019d\u0001\u0000\u0000\u0000w\u01a7\u0001\u0000"+ - "\u0000\u0000y\u01af\u0001\u0000\u0000\u0000{\u01b3\u0001\u0000\u0000\u0000"+ - "}\u01b7\u0001\u0000\u0000\u0000\u007f\u01c1\u0001\u0000\u0000\u0000\u0081"+ - "\u01c7\u0001\u0000\u0000\u0000\u0083\u01d3\u0001\u0000\u0000\u0000\u0085"+ - "\u01d9\u0001\u0000\u0000\u0000\u0087\u01dd\u0001\u0000\u0000\u0000\u0089"+ - "\u01e1\u0001\u0000\u0000\u0000\u008b\u01ed\u0001\u0000\u0000\u0000\u008d"+ - "\u01f8\u0001\u0000\u0000\u0000\u008f\u01fd\u0001\u0000\u0000\u0000\u0091"+ - "\u01ff\u0001\u0000\u0000\u0000\u0093\u0206\u0001\u0000\u0000\u0000\u0095"+ - "\u020f\u0001\u0000\u0000\u0000\u0097\u0217\u0001\u0000\u0000\u0000\u0099"+ - "\u021f\u0001\u0000\u0000\u0000\u009b\u0224\u0001\u0000\u0000\u0000\u009d"+ - "\u022a\u0001\u0000\u0000\u0000\u009f\u0231\u0001\u0000\u0000\u0000\u00a1"+ - "\u0234\u0001\u0000\u0000\u0000\u00a3\u0239\u0001\u0000\u0000\u0000\u00a5"+ - "\u023c\u0001\u0000\u0000\u0000\u00a7\u023f\u0001\u0000\u0000\u0000\u00a9"+ - "\u0242\u0001\u0000\u0000\u0000\u00ab\u0256\u0001\u0000\u0000\u0000\u00ad"+ - "\u0258\u0001\u0000\u0000\u0000\u00af\u025b\u0001\u0000\u0000\u0000\u00b1"+ - "\u026d\u0001\u0000\u0000\u0000\u00b3\u026f\u0001\u0000\u0000\u0000\u00b5"+ - "\u0271\u0001\u0000\u0000\u0000\u00b7\u027d\u0001\u0000\u0000\u0000\u00b9"+ - "\u0281\u0001\u0000\u0000\u0000\u00bb\u0286\u0001\u0000\u0000\u0000\u00bd"+ - "\u0289\u0001\u0000\u0000\u0000\u00bf\u0290\u0001\u0000\u0000\u0000\u00c1"+ - "\u0296\u0001\u0000\u0000\u0000\u00c3\u02a4\u0001\u0000\u0000\u0000\u00c5"+ - "\u02af\u0001\u0000\u0000\u0000\u00c7\u00c8\u0005;\u0000\u0000\u00c8\u0002"+ - "\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005=\u0000\u0000\u00ca\u0004\u0001"+ - "\u0000\u0000\u0000\u00cb\u00cc\u0005=\u0000\u0000\u00cc\u00cd\u0005=\u0000"+ - "\u0000\u00cd\u0006\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005{\u0000\u0000"+ - "\u00cf\b\u0001\u0000\u0000\u0000\u00d0\u00d1\u0005}\u0000\u0000\u00d1"+ - "\n\u0001\u0000\u0000\u0000\u00d2\u00d3\u0005(\u0000\u0000\u00d3\f\u0001"+ - "\u0000\u0000\u0000\u00d4\u00d5\u0005)\u0000\u0000\u00d5\u000e\u0001\u0000"+ - "\u0000\u0000\u00d6\u00d7\u0005[\u0000\u0000\u00d7\u0010\u0001\u0000\u0000"+ - "\u0000\u00d8\u00d9\u0005]\u0000\u0000\u00d9\u0012\u0001\u0000\u0000\u0000"+ - "\u00da\u00db\u0005.\u0000\u0000\u00db\u0014\u0001\u0000\u0000\u0000\u00dc"+ - "\u00dd\u0005:\u0000\u0000\u00dd\u0016\u0001\u0000\u0000\u0000\u00de\u00df"+ - "\u0005,\u0000\u0000\u00df\u0018\u0001\u0000\u0000\u0000\u00e0\u00e1\u0005"+ - "-\u0000\u0000\u00e1\u00e2\u0005>\u0000\u0000\u00e2\u001a\u0001\u0000\u0000"+ - "\u0000\u00e3\u00e4\u0005<\u0000\u0000\u00e4\u001c\u0001\u0000\u0000\u0000"+ - "\u00e5\u00e6\u0005>\u0000\u0000\u00e6\u001e\u0001\u0000\u0000\u0000\u00e7"+ - "\u00e8\u0005*\u0000\u0000\u00e8 \u0001\u0000\u0000\u0000\u00e9\u00ea\u0005"+ - "/\u0000\u0000\u00ea\"\u0001\u0000\u0000\u0000\u00eb\u00ec\u0005%\u0000"+ - "\u0000\u00ec$\u0001\u0000\u0000\u0000\u00ed\u00ee\u0005+\u0000\u0000\u00ee"+ - "&\u0001\u0000\u0000\u0000\u00ef\u00f0\u0005-\u0000\u0000\u00f0(\u0001"+ - "\u0000\u0000\u0000\u00f1\u00f2\u0005+\u0000\u0000\u00f2\u00f3\u0005+\u0000"+ - "\u0000\u00f3*\u0001\u0000\u0000\u0000\u00f4\u00f5\u0005-\u0000\u0000\u00f5"+ - "\u00f6\u0005-\u0000\u0000\u00f6,\u0001\u0000\u0000\u0000\u00f7\u00f8\u0005"+ - "+\u0000\u0000\u00f8\u00f9\u0005=\u0000\u0000\u00f9.\u0001\u0000\u0000"+ - "\u0000\u00fa\u00fb\u0005-\u0000\u0000\u00fb\u00fc\u0005=\u0000\u0000\u00fc"+ - "0\u0001\u0000\u0000\u0000\u00fd\u00fe\u0005*\u0000\u0000\u00fe\u00ff\u0005"+ - "=\u0000\u0000\u00ff2\u0001\u0000\u0000\u0000\u0100\u0101\u0005/\u0000"+ - "\u0000\u0101\u0102\u0005=\u0000\u0000\u01024\u0001\u0000\u0000\u0000\u0103"+ - "\u0104\u0005%\u0000\u0000\u0104\u0105\u0005=\u0000\u0000\u01056\u0001"+ - "\u0000\u0000\u0000\u0106\u0107\u0005!\u0000\u0000\u01078\u0001\u0000\u0000"+ - "\u0000\u0108\u0109\u0005!\u0000\u0000\u0109\u010a\u0005=\u0000\u0000\u010a"+ - ":\u0001\u0000\u0000\u0000\u010b\u010c\u0005<\u0000\u0000\u010c\u010d\u0005"+ - "=\u0000\u0000\u010d<\u0001\u0000\u0000\u0000\u010e\u010f\u0005>\u0000"+ - "\u0000\u010f\u0110\u0005=\u0000\u0000\u0110>\u0001\u0000\u0000\u0000\u0111"+ - "\u0112\u0005&\u0000\u0000\u0112@\u0001\u0000\u0000\u0000\u0113\u0114\u0005"+ - "&\u0000\u0000\u0114\u0115\u0005&\u0000\u0000\u0115B\u0001\u0000\u0000"+ - "\u0000\u0116\u0117\u0005|\u0000\u0000\u0117D\u0001\u0000\u0000\u0000\u0118"+ - "\u0119\u0005|\u0000\u0000\u0119\u011a\u0005|\u0000\u0000\u011aF\u0001"+ - "\u0000\u0000\u0000\u011b\u011c\u0005^\u0000\u0000\u011cH\u0001\u0000\u0000"+ - "\u0000\u011d\u011e\u0005~\u0000\u0000\u011eJ\u0001\u0000\u0000\u0000\u011f"+ - "\u0120\u0005&\u0000\u0000\u0120\u0121\u0005=\u0000\u0000\u0121L\u0001"+ - "\u0000\u0000\u0000\u0122\u0123\u0005|\u0000\u0000\u0123\u0124\u0005=\u0000"+ - "\u0000\u0124N\u0001\u0000\u0000\u0000\u0125\u0126\u0005^\u0000\u0000\u0126"+ - "\u0127\u0005=\u0000\u0000\u0127P\u0001\u0000\u0000\u0000\u0128\u0129\u0005"+ - ">\u0000\u0000\u0129\u012a\u0005>\u0000\u0000\u012a\u012b\u0005=\u0000"+ - "\u0000\u012bR\u0001\u0000\u0000\u0000\u012c\u012d\u0005<\u0000\u0000\u012d"+ - "\u012e\u0005<\u0000\u0000\u012e\u012f\u0005=\u0000\u0000\u012fT\u0001"+ - "\u0000\u0000\u0000\u0130\u0131\u0005\'\u0000\u0000\u0131V\u0001\u0000"+ - "\u0000\u0000\u0132\u0133\u0005`\u0000\u0000\u0133X\u0001\u0000\u0000\u0000"+ - "\u0134\u0138\u0003].\u0000\u0135\u0137\t\u0000\u0000\u0000\u0136\u0135"+ - "\u0001\u0000\u0000\u0000\u0137\u013a\u0001\u0000\u0000\u0000\u0138\u0139"+ - "\u0001\u0000\u0000\u0000\u0138\u0136\u0001\u0000\u0000\u0000\u0139\u013b"+ - "\u0001\u0000\u0000\u0000\u013a\u0138\u0001\u0000\u0000\u0000\u013b\u013c"+ - "\u0005;\u0000\u0000\u013cZ\u0001\u0000\u0000\u0000\u013d\u0141\u0003_"+ - "/\u0000\u013e\u0140\t\u0000\u0000\u0000\u013f\u013e\u0001\u0000\u0000"+ - "\u0000\u0140\u0143\u0001\u0000\u0000\u0000\u0141\u0142\u0001\u0000\u0000"+ - "\u0000\u0141\u013f\u0001\u0000\u0000\u0000\u0142\u0144\u0001\u0000\u0000"+ - "\u0000\u0143\u0141\u0001\u0000\u0000\u0000\u0144\u0145\u0005;\u0000\u0000"+ - "\u0145\\\u0001\u0000\u0000\u0000\u0146\u0147\u0005i\u0000\u0000\u0147"+ - "\u0148\u0005m\u0000\u0000\u0148\u0149\u0005p\u0000\u0000\u0149\u014a\u0005"+ - "o\u0000\u0000\u014a\u014b\u0005r\u0000\u0000\u014b\u014c\u0005t\u0000"+ - "\u0000\u014c^\u0001\u0000\u0000\u0000\u014d\u014e\u0005i\u0000\u0000\u014e"+ - "\u014f\u0005n\u0000\u0000\u014f\u0150\u0005c\u0000\u0000\u0150\u0151\u0005"+ - "l\u0000\u0000\u0151\u0152\u0005u\u0000\u0000\u0152\u0153\u0005d\u0000"+ - "\u0000\u0153\u0154\u0005e\u0000\u0000\u0154`\u0001\u0000\u0000\u0000\u0155"+ - "\u0156\u0005l\u0000\u0000\u0156\u0157\u0005i\u0000\u0000\u0157\u0158\u0005"+ - "b\u0000\u0000\u0158\u0159\u0005s\u0000\u0000\u0159\u015a\u0005l\u0000"+ - "\u0000\u015ab\u0001\u0000\u0000\u0000\u015b\u015c\u0005l\u0000\u0000\u015c"+ - "\u015d\u0005i\u0000\u0000\u015d\u015e\u0005b\u0000\u0000\u015e\u015f\u0005"+ - "r\u0000\u0000\u015f\u0160\u0005a\u0000\u0000\u0160\u0161\u0005r\u0000"+ - "\u0000\u0161\u0162\u0005y\u0000\u0000\u0162d\u0001\u0000\u0000\u0000\u0163"+ - "\u0164\u0005v\u0000\u0000\u0164\u0165\u0005e\u0000\u0000\u0165\u0166\u0005"+ - "r\u0000\u0000\u0166\u0167\u0005s\u0000\u0000\u0167\u0168\u0005i\u0000"+ - "\u0000\u0168\u0169\u0005o\u0000\u0000\u0169\u016a\u0005n\u0000\u0000\u016a"+ - "f\u0001\u0000\u0000\u0000\u016b\u016c\u0005l\u0000\u0000\u016c\u016d\u0005"+ - "a\u0000\u0000\u016d\u016e\u0005n\u0000\u0000\u016e\u016f\u0005g\u0000"+ - "\u0000\u016f\u0170\u0005u\u0000\u0000\u0170\u0171\u0005a\u0000\u0000\u0171"+ - "\u0172\u0005g\u0000\u0000\u0172\u0173\u0005e\u0000\u0000\u0173h\u0001"+ - "\u0000\u0000\u0000\u0174\u0175\u0005u\u0000\u0000\u0175\u0176\u0005r\u0000"+ - "\u0000\u0176\u0177\u0005l\u0000\u0000\u0177j\u0001\u0000\u0000\u0000\u0178"+ - "\u0179\u0005t\u0000\u0000\u0179\u017a\u0005y\u0000\u0000\u017a\u017b\u0005"+ - "p\u0000\u0000\u017b\u017c\u0005e\u0000\u0000\u017c\u017d\u0005a\u0000"+ - "\u0000\u017d\u017e\u0005l\u0000\u0000\u017e\u017f\u0005i\u0000\u0000\u017f"+ - "\u0180\u0005a\u0000\u0000\u0180\u0181\u0005s\u0000\u0000\u0181l\u0001"+ - "\u0000\u0000\u0000\u0182\u0183\u0005t\u0000\u0000\u0183\u0184\u0005y\u0000"+ - "\u0000\u0184\u0185\u0005p\u0000\u0000\u0185\u0186\u0005e\u0000\u0000\u0186"+ - "n\u0001\u0000\u0000\u0000\u0187\u0188\u0005t\u0000\u0000\u0188\u0189\u0005"+ - "y\u0000\u0000\u0189\u018a\u0005p\u0000\u0000\u018a\u018b\u0005e\u0000"+ - "\u0000\u018b\u018c\u0005s\u0000\u0000\u018cp\u0001\u0000\u0000\u0000\u018d"+ - "\u018e\u0005e\u0000\u0000\u018e\u018f\u0005n\u0000\u0000\u018f\u0190\u0005"+ - "u\u0000\u0000\u0190\u0191\u0005m\u0000\u0000\u0191r\u0001\u0000\u0000"+ - "\u0000\u0192\u0193\u0005a\u0000\u0000\u0193\u0194\u0005n\u0000\u0000\u0194"+ - "\u0195\u0005n\u0000\u0000\u0195\u0196\u0005o\u0000\u0000\u0196\u0197\u0005"+ - "t\u0000\u0000\u0197\u0198\u0005a\u0000\u0000\u0198\u0199\u0005t\u0000"+ - "\u0000\u0199\u019a\u0005i\u0000\u0000\u019a\u019b\u0005o\u0000\u0000\u019b"+ - "\u019c\u0005n\u0000\u0000\u019ct\u0001\u0000\u0000\u0000\u019d\u019e\u0005"+ - "a\u0000\u0000\u019e\u019f\u0005u\u0000\u0000\u019f\u01a0\u0005t\u0000"+ - "\u0000\u01a0\u01a1\u0005o\u0000\u0000\u01a1\u01a2\u0005m\u0000\u0000\u01a2"+ - "\u01a3\u0005a\u0000\u0000\u01a3\u01a4\u0005t\u0000\u0000\u01a4\u01a5\u0005"+ - "o\u0000\u0000\u01a5\u01a6\u0005n\u0000\u0000\u01a6v\u0001\u0000\u0000"+ - "\u0000\u01a7\u01a8\u0005c\u0000\u0000\u01a8\u01a9\u0005o\u0000\u0000\u01a9"+ - "\u01aa\u0005n\u0000\u0000\u01aa\u01ab\u0005c\u0000\u0000\u01ab\u01ac\u0005"+ - "e\u0000\u0000\u01ac\u01ad\u0005p\u0000\u0000\u01ad\u01ae\u0005t\u0000"+ - "\u0000\u01aex\u0001\u0000\u0000\u0000\u01af\u01b0\u0005v\u0000\u0000\u01b0"+ - "\u01b1\u0005a\u0000\u0000\u01b1\u01b2\u0005r\u0000\u0000\u01b2z\u0001"+ - "\u0000\u0000\u0000\u01b3\u01b4\u0005v\u0000\u0000\u01b4\u01b5\u0005a\u0000"+ - "\u0000\u01b5\u01b6\u0005l\u0000\u0000\u01b6|\u0001\u0000\u0000\u0000\u01b7"+ - "\u01b8\u0005i\u0000\u0000\u01b8\u01b9\u0005n\u0000\u0000\u01b9\u01ba\u0005"+ - "i\u0000\u0000\u01ba\u01bb\u0005t\u0000\u0000\u01bb\u01bc\u0005s\u0000"+ - "\u0000\u01bc\u01bd\u0005t\u0000\u0000\u01bd\u01be\u0005a\u0000\u0000\u01be"+ - "\u01bf\u0005t\u0000\u0000\u01bf\u01c0\u0005e\u0000\u0000\u01c0~\u0001"+ - "\u0000\u0000\u0000\u01c1\u01c2\u0005s\u0000\u0000\u01c2\u01c3\u0005t\u0000"+ - "\u0000\u01c3\u01c4\u0005a\u0000\u0000\u01c4\u01c5\u0005t\u0000\u0000\u01c5"+ - "\u01c6\u0005e\u0000\u0000\u01c6\u0080\u0001\u0000\u0000\u0000\u01c7\u01c8"+ - "\u0005f\u0000\u0000\u01c8\u01c9\u0005i\u0000\u0000\u01c9\u01ca\u0005n"+ - "\u0000\u0000\u01ca\u01cb\u0005i\u0000\u0000\u01cb\u01cc\u0005s\u0000\u0000"+ - "\u01cc\u01cd\u0005h\u0000\u0000\u01cd\u01ce\u0005s\u0000\u0000\u01ce\u01cf"+ - "\u0005t\u0000\u0000\u01cf\u01d0\u0005a\u0000\u0000\u01d0\u01d1\u0005t"+ - "\u0000\u0000\u01d1\u01d2\u0005e\u0000\u0000\u01d2\u0082\u0001\u0000\u0000"+ - "\u0000\u01d3\u01d4\u0005s\u0000\u0000\u01d4\u01d5\u0005h\u0000\u0000\u01d5"+ - "\u01d6\u0005i\u0000\u0000\u01d6\u01d7\u0005f\u0000\u0000\u01d7\u01d8\u0005"+ - "t\u0000\u0000\u01d8\u0084\u0001\u0000\u0000\u0000\u01d9\u01da\u0005n\u0000"+ - "\u0000\u01da\u01db\u0005e\u0000\u0000\u01db\u01dc\u0005w\u0000\u0000\u01dc"+ - "\u0086\u0001\u0000\u0000\u0000\u01dd\u01de\u0005f\u0000\u0000\u01de\u01df"+ - "\u0005u\u0000\u0000\u01df\u01e0\u0005n\u0000\u0000\u01e0\u0088\u0001\u0000"+ - "\u0000\u0000\u01e1\u01e2\u0005c\u0000\u0000\u01e2\u01e3\u0005o\u0000\u0000"+ - "\u01e3\u01e4\u0005n\u0000\u0000\u01e4\u01e5\u0005s\u0000\u0000\u01e5\u01e6"+ - "\u0005t\u0000\u0000\u01e6\u01e7\u0005r\u0000\u0000\u01e7\u01e8\u0005u"+ - "\u0000\u0000\u01e8\u01e9\u0005c\u0000\u0000\u01e9\u01ea\u0005t\u0000\u0000"+ - "\u01ea\u01eb\u0005o\u0000\u0000\u01eb\u01ec\u0005r\u0000\u0000\u01ec\u008a"+ - "\u0001\u0000\u0000\u0000\u01ed\u01ee\u0005d\u0000\u0000\u01ee\u01ef\u0005"+ - "e\u0000\u0000\u01ef\u01f0\u0005s\u0000\u0000\u01f0\u01f1\u0005t\u0000"+ - "\u0000\u01f1\u01f2\u0005r\u0000\u0000\u01f2\u01f3\u0005u\u0000\u0000\u01f3"+ - "\u01f4\u0005c\u0000\u0000\u01f4\u01f5\u0005t\u0000\u0000\u01f5\u01f6\u0005"+ - "o\u0000\u0000\u01f6\u01f7\u0005r\u0000\u0000\u01f7\u008c\u0001\u0000\u0000"+ - "\u0000\u01f8\u01f9\u0005p\u0000\u0000\u01f9\u01fa\u0005r\u0000\u0000\u01fa"+ - "\u01fb\u0005o\u0000\u0000\u01fb\u01fc\u0005c\u0000\u0000\u01fc\u008e\u0001"+ - "\u0000\u0000\u0000\u01fd\u01fe\u0005@\u0000\u0000\u01fe\u0090\u0001\u0000"+ - "\u0000\u0000\u01ff\u0200\u0005a\u0000\u0000\u0200\u0201\u0005c\u0000\u0000"+ - "\u0201\u0202\u0005t\u0000\u0000\u0202\u0203\u0005i\u0000\u0000\u0203\u0204"+ - "\u0005o\u0000\u0000\u0204\u0205\u0005n\u0000\u0000\u0205\u0092\u0001\u0000"+ - "\u0000\u0000\u0206\u0207\u0005r\u0000\u0000\u0207\u0208\u0005e\u0000\u0000"+ - "\u0208\u0209\u0005q\u0000\u0000\u0209\u020a\u0005u\u0000\u0000\u020a\u020b"+ - "\u0005i\u0000\u0000\u020b\u020c\u0005r\u0000\u0000\u020c\u020d\u0005e"+ - "\u0000\u0000\u020d\u020e\u0005s\u0000\u0000\u020e\u0094\u0001\u0000\u0000"+ - "\u0000\u020f\u0210\u0005e\u0000\u0000\u0210\u0211\u0005n\u0000\u0000\u0211"+ - "\u0212\u0005s\u0000\u0000\u0212\u0213\u0005u\u0000\u0000\u0213\u0214\u0005"+ - "r\u0000\u0000\u0214\u0215\u0005e\u0000\u0000\u0215\u0216\u0005s\u0000"+ - "\u0000\u0216\u0096\u0001\u0000\u0000\u0000\u0217\u0218\u0005a\u0000\u0000"+ - "\u0218\u0219\u0005s\u0000\u0000\u0219\u021a\u0005s\u0000\u0000\u021a\u021b"+ - "\u0005i\u0000\u0000\u021b\u021c\u0005g\u0000\u0000\u021c\u021d\u0005n"+ - "\u0000\u0000\u021d\u021e\u0005s\u0000\u0000\u021e\u0098\u0001\u0000\u0000"+ - "\u0000\u021f\u0220\u0005t\u0000\u0000\u0220\u0221\u0005r\u0000\u0000\u0221"+ - "\u0222\u0005u\u0000\u0000\u0222\u0223\u0005e\u0000\u0000\u0223\u009a\u0001"+ - "\u0000\u0000\u0000\u0224\u0225\u0005f\u0000\u0000\u0225\u0226\u0005a\u0000"+ - "\u0000\u0226\u0227\u0005l\u0000\u0000\u0227\u0228\u0005s\u0000\u0000\u0228"+ - "\u0229\u0005e\u0000\u0000\u0229\u009c\u0001\u0000\u0000\u0000\u022a\u022b"+ - "\u0005d\u0000\u0000\u022b\u022c\u0005e\u0000\u0000\u022c\u022d\u0005f"+ - "\u0000\u0000\u022d\u022e\u0005i\u0000\u0000\u022e\u022f\u0005n\u0000\u0000"+ - "\u022f\u0230\u0005e\u0000\u0000\u0230\u009e\u0001\u0000\u0000\u0000\u0231"+ - "\u0232\u0005i\u0000\u0000\u0232\u0233\u0005f\u0000\u0000\u0233\u00a0\u0001"+ - "\u0000\u0000\u0000\u0234\u0235\u0005e\u0000\u0000\u0235\u0236\u0005l\u0000"+ - "\u0000\u0236\u0237\u0005s\u0000\u0000\u0237\u0238\u0005e\u0000\u0000\u0238"+ - "\u00a2\u0001\u0000\u0000\u0000\u0239\u023a\u0005b\u0000\u0000\u023a\u023b"+ - "\u0005y\u0000\u0000\u023b\u00a4\u0001\u0000\u0000\u0000\u023c\u023d\u0005"+ - "i\u0000\u0000\u023d\u023e\u0005s\u0000\u0000\u023e\u00a6\u0001\u0000\u0000"+ - "\u0000\u023f\u0240\u0005a\u0000\u0000\u0240\u0241\u0005s\u0000\u0000\u0241"+ - "\u00a8\u0001\u0000\u0000\u0000\u0242\u0243\u0005n\u0000\u0000\u0243\u0244"+ - "\u0005u\u0000\u0000\u0244\u0245\u0005l\u0000\u0000\u0245\u0246\u0005l"+ - "\u0000\u0000\u0246\u00aa\u0001\u0000\u0000\u0000\u0247\u024b\u0007\u0000"+ - "\u0000\u0000\u0248\u024a\u0007\u0001\u0000\u0000\u0249\u0248\u0001\u0000"+ - "\u0000\u0000\u024a\u024d\u0001\u0000\u0000\u0000\u024b\u0249\u0001\u0000"+ - "\u0000\u0000\u024b\u024c\u0001\u0000\u0000\u0000\u024c\u0257\u0001\u0000"+ - "\u0000\u0000\u024d\u024b\u0001\u0000\u0000\u0000\u024e\u0252\u0005`\u0000"+ - "\u0000\u024f\u0251\t\u0000\u0000\u0000\u0250\u024f\u0001\u0000\u0000\u0000"+ - "\u0251\u0254\u0001\u0000\u0000\u0000\u0252\u0253\u0001\u0000\u0000\u0000"+ - "\u0252\u0250\u0001\u0000\u0000\u0000\u0253\u0255\u0001\u0000\u0000\u0000"+ - "\u0254\u0252\u0001\u0000\u0000\u0000\u0255\u0257\u0005`\u0000\u0000\u0256"+ - "\u0247\u0001\u0000\u0000\u0000\u0256\u024e\u0001\u0000\u0000\u0000\u0257"+ - "\u00ac\u0001\u0000\u0000\u0000\u0258\u0259\u0005\\\u0000\u0000\u0259\u025a"+ - "\u0005\"\u0000\u0000\u025a\u00ae\u0001\u0000\u0000\u0000\u025b\u0260\u0005"+ - "\"\u0000\u0000\u025c\u025f\u0003\u00adV\u0000\u025d\u025f\b\u0002\u0000"+ - "\u0000\u025e\u025c\u0001\u0000\u0000\u0000\u025e\u025d\u0001\u0000\u0000"+ - "\u0000\u025f\u0262\u0001\u0000\u0000\u0000\u0260\u0261\u0001\u0000\u0000"+ - "\u0000\u0260\u025e\u0001\u0000\u0000\u0000\u0261\u0263\u0001\u0000\u0000"+ - "\u0000\u0262\u0260\u0001\u0000\u0000\u0000\u0263\u0264\u0005\"\u0000\u0000"+ - "\u0264\u00b0\u0001\u0000\u0000\u0000\u0265\u0266\u0005\'\u0000\u0000\u0266"+ - "\u0267\u0003\u00b3Y\u0000\u0267\u0268\u0005\'\u0000\u0000\u0268\u026e"+ - "\u0001\u0000\u0000\u0000\u0269\u026a\u0005\'\u0000\u0000\u026a\u026b\u0003"+ - "\u00b5Z\u0000\u026b\u026c\u0005\'\u0000\u0000\u026c\u026e\u0001\u0000"+ - "\u0000\u0000\u026d\u0265\u0001\u0000\u0000\u0000\u026d\u0269\u0001\u0000"+ - "\u0000\u0000\u026e\u00b2\u0001\u0000\u0000\u0000\u026f\u0270\b\u0003\u0000"+ - "\u0000\u0270\u00b4\u0001\u0000\u0000\u0000\u0271\u0272\u0005\\\u0000\u0000"+ - "\u0272\u0273\u0005u\u0000\u0000\u0273\u0274\u0001\u0000\u0000\u0000\u0274"+ - "\u0275\u0003\u00b9\\\u0000\u0275\u0276\u0003\u00b9\\\u0000\u0276\u0277"+ - "\u0003\u00b9\\\u0000\u0277\u0278\u0003\u00b9\\\u0000\u0278\u0279\u0003"+ - "\u00b9\\\u0000\u0279\u027a\u0003\u00b9\\\u0000\u027a\u027b\u0003\u00b9"+ - "\\\u0000\u027b\u027c\u0003\u00b9\\\u0000\u027c\u00b6\u0001\u0000\u0000"+ - "\u0000\u027d\u027e\u000209\u0000\u027e\u00b8\u0001\u0000\u0000\u0000\u027f"+ - "\u0282\u0003\u00b7[\u0000\u0280\u0282\u0002AF\u0000\u0281\u027f\u0001"+ - "\u0000\u0000\u0000\u0281\u0280\u0001\u0000\u0000\u0000\u0282\u00ba\u0001"+ - "\u0000\u0000\u0000\u0283\u0284\u0005\r\u0000\u0000\u0284\u0287\u0005\n"+ - "\u0000\u0000\u0285\u0287\u0007\u0002\u0000\u0000\u0286\u0283\u0001\u0000"+ - "\u0000\u0000\u0286\u0285\u0001\u0000\u0000\u0000\u0287\u00bc\u0001\u0000"+ - "\u0000\u0000\u0288\u028a\u0007\u0004\u0000\u0000\u0289\u0288\u0001\u0000"+ - "\u0000\u0000\u028a\u028b\u0001\u0000\u0000\u0000\u028b\u0289\u0001\u0000"+ - "\u0000\u0000\u028b\u028c\u0001\u0000\u0000\u0000\u028c\u028d\u0001\u0000"+ - "\u0000\u0000\u028d\u028e\u0006^\u0000\u0000\u028e\u00be\u0001\u0000\u0000"+ - "\u0000\u028f\u0291\u0007\u0005\u0000\u0000\u0290\u028f\u0001\u0000\u0000"+ - "\u0000\u0291\u0292\u0001\u0000\u0000\u0000\u0292\u0290\u0001\u0000\u0000"+ - "\u0000\u0292\u0293\u0001\u0000\u0000\u0000\u0293\u0294\u0001\u0000\u0000"+ - "\u0000\u0294\u0295\u0006_\u0000\u0000\u0295\u00c0\u0001\u0000\u0000\u0000"+ - "\u0296\u0297\u0005/\u0000\u0000\u0297\u0298\u0005*\u0000\u0000\u0298\u029c"+ - "\u0001\u0000\u0000\u0000\u0299\u029b\t\u0000\u0000\u0000\u029a\u0299\u0001"+ - "\u0000\u0000\u0000\u029b\u029e\u0001\u0000\u0000\u0000\u029c\u029d\u0001"+ - "\u0000\u0000\u0000\u029c\u029a\u0001\u0000\u0000\u0000\u029d\u029f\u0001"+ - "\u0000\u0000\u0000\u029e\u029c\u0001\u0000\u0000\u0000\u029f\u02a0\u0005"+ - "*\u0000\u0000\u02a0\u02a1\u0005/\u0000\u0000\u02a1\u02a2\u0001\u0000\u0000"+ - "\u0000\u02a2\u02a3\u0006`\u0000\u0000\u02a3\u00c2\u0001\u0000\u0000\u0000"+ - "\u02a4\u02a5\u0005/\u0000\u0000\u02a5\u02a6\u0005/\u0000\u0000\u02a6\u02aa"+ - "\u0001\u0000\u0000\u0000\u02a7\u02a9\b\u0002\u0000\u0000\u02a8\u02a7\u0001"+ - "\u0000\u0000\u0000\u02a9\u02ac\u0001\u0000\u0000\u0000\u02aa\u02a8\u0001"+ - "\u0000\u0000\u0000\u02aa\u02ab\u0001\u0000\u0000\u0000\u02ab\u02ad\u0001"+ - "\u0000\u0000\u0000\u02ac\u02aa\u0001\u0000\u0000\u0000\u02ad\u02ae\u0006"+ - "a\u0000\u0000\u02ae\u00c4\u0001\u0000\u0000\u0000\u02af\u02b0\t\u0000"+ - "\u0000\u0000\u02b0\u00c6\u0001\u0000\u0000\u0000\u000f\u0000\u0138\u0141"+ - "\u024b\u0252\u0256\u025e\u0260\u026d\u0281\u0286\u028b\u0292\u029c\u02aa"+ - "\u0001\u0000\u0001\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.tokens b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.tokens deleted file mode 100644 index fdb52e6..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLLexer.tokens +++ /dev/null @@ -1,178 +0,0 @@ -SEMICOLON=1 -ASSIGN_OP=2 -EQ=3 -L_BRACE=4 -R_BRACE=5 -L_BRACKET=6 -R_BRACKET=7 -L_SQUARE_BRACKET=8 -R_SQUARE_BRACKET=9 -DOT=10 -COLON=11 -COMMA=12 -MINUS_ARROW=13 -L_ARROW=14 -R_ARROW=15 -ASTERISK=16 -SLASH=17 -PERCENT=18 -PLUS=19 -MINUS=20 -INCREMENT=21 -DECREMENT=22 -PLUS_EQ=23 -MINUS_EQ=24 -ASTERISK_EQ=25 -SLASH_EQ=26 -PERCENT_EQ=27 -EXCLAMATION=28 -EXCLAMATION_EQ=29 -L_ARROW_EQ=30 -R_ARROW_EQ=31 -AMPERSAND=32 -DOUBLE_AMPERSAND=33 -BIT_OR=34 -LOGIC_OR=35 -XOR=36 -TILDE=37 -AMPERSAND_EQ=38 -OR_EQ=39 -XOR_EQ=40 -R_SHIFT_EQ=41 -L_SHIFT_EQ=42 -APOSTROPHE=43 -BACK_QOUTE=44 -ImportStatement=45 -IncludeStatement=46 -IMPORT=47 -INCLUDE=48 -LIBSL=49 -LIBRARY=50 -VERSION=51 -LANGUAGE=52 -URL=53 -TYPEALIAS=54 -TYPE=55 -TYPES=56 -ENUM=57 -ANNOTATION=58 -AUTOMATON=59 -CONCEPT=60 -VAR=61 -VAL=62 -INITSTATE=63 -STATE=64 -FINISHSTATE=65 -SHIFT=66 -NEW=67 -FUN=68 -CONSTRUCTOR=69 -DESTRUCTOR=70 -PROC=71 -AT=72 -ACTION=73 -REQUIRES=74 -ENSURES=75 -ASSIGNS=76 -TRUE=77 -FALSE=78 -DEFINE=79 -IF=80 -ELSE=81 -BY=82 -IS=83 -AS=84 -NULL=85 -Identifier=86 -DoubleQuotedString=87 -CHARACTER=88 -Digit=89 -Hex=90 -WS=91 -BR=92 -COMMENT=93 -LINE_COMMENT=94 -BAD_CHARACTER=95 -';'=1 -'='=2 -'=='=3 -'{'=4 -'}'=5 -'('=6 -')'=7 -'['=8 -']'=9 -'.'=10 -':'=11 -','=12 -'->'=13 -'<'=14 -'>'=15 -'*'=16 -'/'=17 -'%'=18 -'+'=19 -'-'=20 -'++'=21 -'--'=22 -'+='=23 -'-='=24 -'*='=25 -'/='=26 -'%='=27 -'!'=28 -'!='=29 -'<='=30 -'>='=31 -'&'=32 -'&&'=33 -'|'=34 -'||'=35 -'^'=36 -'~'=37 -'&='=38 -'|='=39 -'^='=40 -'>>='=41 -'<<='=42 -'\''=43 -'`'=44 -'import'=47 -'include'=48 -'libsl'=49 -'library'=50 -'version'=51 -'language'=52 -'url'=53 -'typealias'=54 -'type'=55 -'types'=56 -'enum'=57 -'annotation'=58 -'automaton'=59 -'concept'=60 -'var'=61 -'val'=62 -'initstate'=63 -'state'=64 -'finishstate'=65 -'shift'=66 -'new'=67 -'fun'=68 -'constructor'=69 -'destructor'=70 -'proc'=71 -'@'=72 -'action'=73 -'requires'=74 -'ensures'=75 -'assigns'=76 -'true'=77 -'false'=78 -'define'=79 -'if'=80 -'else'=81 -'by'=82 -'is'=83 -'as'=84 -'null'=85 diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.interp b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.interp deleted file mode 100644 index 9a51b73..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.interp +++ /dev/null @@ -1,288 +0,0 @@ -token literal names: -null -';' -'=' -'==' -'{' -'}' -'(' -')' -'[' -']' -'.' -':' -',' -'->' -'<' -'>' -'*' -'/' -'%' -'+' -'-' -'++' -'--' -'+=' -'-=' -'*=' -'/=' -'%=' -'!' -'!=' -'<=' -'>=' -'&' -'&&' -'|' -'||' -'^' -'~' -'&=' -'|=' -'^=' -'>>=' -'<<=' -'\'' -'`' -null -null -'import' -'include' -'libsl' -'library' -'version' -'language' -'url' -'typealias' -'type' -'types' -'enum' -'annotation' -'automaton' -'concept' -'var' -'val' -'initstate' -'state' -'finishstate' -'shift' -'new' -'fun' -'constructor' -'destructor' -'proc' -'@' -'action' -'requires' -'ensures' -'assigns' -'true' -'false' -'define' -'if' -'else' -'by' -'is' -'as' -'null' -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -SEMICOLON -ASSIGN_OP -EQ -L_BRACE -R_BRACE -L_BRACKET -R_BRACKET -L_SQUARE_BRACKET -R_SQUARE_BRACKET -DOT -COLON -COMMA -MINUS_ARROW -L_ARROW -R_ARROW -ASTERISK -SLASH -PERCENT -PLUS -MINUS -INCREMENT -DECREMENT -PLUS_EQ -MINUS_EQ -ASTERISK_EQ -SLASH_EQ -PERCENT_EQ -EXCLAMATION -EXCLAMATION_EQ -L_ARROW_EQ -R_ARROW_EQ -AMPERSAND -DOUBLE_AMPERSAND -BIT_OR -LOGIC_OR -XOR -TILDE -AMPERSAND_EQ -OR_EQ -XOR_EQ -R_SHIFT_EQ -L_SHIFT_EQ -APOSTROPHE -BACK_QOUTE -ImportStatement -IncludeStatement -IMPORT -INCLUDE -LIBSL -LIBRARY -VERSION -LANGUAGE -URL -TYPEALIAS -TYPE -TYPES -ENUM -ANNOTATION -AUTOMATON -CONCEPT -VAR -VAL -INITSTATE -STATE -FINISHSTATE -SHIFT -NEW -FUN -CONSTRUCTOR -DESTRUCTOR -PROC -AT -ACTION -REQUIRES -ENSURES -ASSIGNS -TRUE -FALSE -DEFINE -IF -ELSE -BY -IS -AS -NULL -Identifier -DoubleQuotedString -CHARACTER -Digit -Hex -WS -BR -COMMENT -LINE_COMMENT -BAD_CHARACTER - -rule names: -file -globalStatement -topLevelDecl -header -typealiasStatement -typeDefBlock -targetType -typeList -typeDefBlockStatement -typeDefBlockBody -enumBlock -enumBlockStatement -typesSection -semanticTypeDecl -simpleSemanticType -enumSemanticType -enumSemanticTypeEntry -annotationDecl -annotationDeclParams -annotationDeclParamsPart -actionDecl -actionDeclParamList -actionParameter -automatonDecl -automatonBody -constructorVariables -automatonStatement -implementedConcepts -concept -automatonStateDecl -automatonShiftDecl -shiftByList -shiftFromList -functionsList -functionsListPart -variableDecl -nameWithType -typeIdentifier -generic -variableAssignment -assignmentRight -callAutomatonConstructorWithNamedArgs -namedArgs -argPair -headerWithAsterisk -constructorDecl -constructorHeader -destructorDecl -destructorHeader -procDecl -procHeader -functionDecl -functionHeader -functionDeclArgList -parameter -annotationUsage -functionContract -functionBody -functionBodyStatement -conditionBody -ifStatement -elseStatement -actionUsage -procUsage -expressionsList -annotationArgs -argName -requiresContract -ensuresContract -assignsContract -expression -hasAutomatonConcept -bitShiftOp -lShift -rShift -uRShift -uLShift -expressionAtomic -primitiveLiteral -qualifiedAccess -simpleCall -identifierList -arrayLiteral -periodSeparatedFullName -integerNumber -floatNumber -identifier - - -atn: -[4, 1, 95, 1142, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 1, 0, 3, 0, 176, 8, 0, 1, 0, 5, 0, 179, 8, 0, 10, 0, 12, 0, 182, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 195, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 200, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 211, 8, 3, 1, 3, 1, 3, 3, 3, 215, 8, 3, 1, 3, 1, 3, 3, 3, 219, 8, 3, 1, 3, 1, 3, 1, 4, 5, 4, 224, 8, 4, 10, 4, 12, 4, 227, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 5, 5, 236, 8, 5, 10, 5, 12, 5, 239, 9, 5, 1, 5, 1, 5, 1, 5, 3, 5, 244, 8, 5, 1, 5, 3, 5, 247, 8, 5, 1, 5, 3, 5, 250, 8, 5, 1, 6, 1, 6, 3, 6, 254, 8, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 262, 8, 7, 10, 7, 12, 7, 265, 9, 7, 1, 8, 1, 8, 3, 8, 269, 8, 8, 1, 9, 1, 9, 5, 9, 273, 8, 9, 10, 9, 12, 9, 276, 9, 9, 1, 9, 1, 9, 1, 10, 5, 10, 281, 8, 10, 10, 10, 12, 10, 284, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 290, 8, 10, 10, 10, 12, 10, 293, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 305, 8, 12, 10, 12, 12, 12, 308, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 314, 8, 13, 1, 14, 5, 14, 317, 8, 14, 10, 14, 12, 14, 320, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 5, 15, 329, 8, 15, 10, 15, 12, 15, 332, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 340, 8, 15, 11, 15, 12, 15, 341, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 355, 8, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 5, 18, 363, 8, 18, 10, 18, 12, 18, 366, 9, 18, 1, 18, 3, 18, 369, 8, 18, 1, 19, 1, 19, 1, 19, 3, 19, 374, 8, 19, 1, 20, 5, 20, 377, 8, 20, 10, 20, 12, 20, 380, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 387, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 392, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 399, 8, 21, 10, 21, 12, 21, 402, 9, 21, 1, 21, 3, 21, 405, 8, 21, 1, 22, 5, 22, 408, 8, 22, 10, 22, 12, 22, 411, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 5, 23, 418, 8, 23, 10, 23, 12, 23, 421, 9, 23, 1, 23, 1, 23, 3, 23, 425, 8, 23, 1, 23, 1, 23, 1, 23, 5, 23, 430, 8, 23, 10, 23, 12, 23, 433, 9, 23, 1, 23, 3, 23, 436, 8, 23, 1, 23, 1, 23, 1, 23, 5, 23, 441, 8, 23, 10, 23, 12, 23, 444, 9, 23, 1, 23, 1, 23, 1, 24, 1, 24, 5, 24, 450, 8, 24, 10, 24, 12, 24, 453, 9, 24, 1, 24, 1, 24, 1, 25, 5, 25, 458, 8, 25, 10, 25, 12, 25, 461, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 466, 8, 25, 1, 25, 5, 25, 469, 8, 25, 10, 25, 12, 25, 472, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 479, 8, 25, 3, 25, 481, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 490, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 496, 8, 27, 10, 27, 12, 27, 499, 9, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 539, 8, 30, 1, 31, 1, 31, 3, 31, 543, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 5, 33, 554, 8, 33, 10, 33, 12, 33, 557, 9, 33, 1, 33, 3, 33, 560, 8, 33, 1, 34, 1, 34, 1, 34, 3, 34, 565, 8, 34, 1, 34, 1, 34, 5, 34, 569, 8, 34, 10, 34, 12, 34, 572, 9, 34, 1, 34, 3, 34, 575, 8, 34, 1, 35, 5, 35, 578, 8, 35, 10, 35, 12, 35, 581, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 588, 8, 35, 10, 35, 12, 35, 591, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 599, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 3, 37, 606, 8, 37, 1, 37, 1, 37, 3, 37, 610, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 616, 8, 38, 10, 38, 12, 38, 619, 9, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 643, 8, 39, 1, 40, 1, 40, 3, 40, 647, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 653, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 5, 42, 660, 8, 42, 10, 42, 12, 42, 663, 9, 42, 1, 42, 3, 42, 666, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 674, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 682, 8, 45, 1, 46, 5, 46, 685, 8, 46, 10, 46, 12, 46, 688, 9, 46, 1, 46, 1, 46, 3, 46, 692, 8, 46, 1, 46, 3, 46, 695, 8, 46, 1, 46, 1, 46, 3, 46, 699, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 704, 8, 46, 1, 47, 1, 47, 1, 47, 3, 47, 709, 8, 47, 1, 48, 5, 48, 712, 8, 48, 10, 48, 12, 48, 715, 9, 48, 1, 48, 1, 48, 3, 48, 719, 8, 48, 1, 48, 3, 48, 722, 8, 48, 1, 48, 1, 48, 3, 48, 726, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 731, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 736, 8, 49, 1, 50, 5, 50, 739, 8, 50, 10, 50, 12, 50, 742, 9, 50, 1, 50, 1, 50, 3, 50, 746, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 751, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 756, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 761, 8, 51, 3, 51, 763, 8, 51, 1, 52, 5, 52, 766, 8, 52, 10, 52, 12, 52, 769, 9, 52, 1, 52, 3, 52, 772, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 778, 8, 52, 1, 52, 3, 52, 781, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 786, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 791, 8, 52, 1, 53, 1, 53, 1, 53, 5, 53, 796, 8, 53, 10, 53, 12, 53, 799, 9, 53, 1, 54, 5, 54, 802, 8, 54, 10, 54, 12, 54, 805, 9, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 815, 8, 55, 10, 55, 12, 55, 818, 9, 55, 1, 55, 3, 55, 821, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 826, 8, 56, 1, 57, 1, 57, 5, 57, 830, 8, 57, 10, 57, 12, 57, 833, 9, 57, 1, 57, 5, 57, 836, 8, 57, 10, 57, 12, 57, 839, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 849, 8, 58, 1, 59, 1, 59, 5, 59, 853, 8, 59, 10, 59, 12, 59, 856, 9, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 864, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 870, 8, 60, 3, 60, 872, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 878, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 884, 8, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 3, 63, 891, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 898, 8, 64, 10, 64, 12, 64, 901, 9, 64, 1, 64, 3, 64, 904, 8, 64, 1, 65, 3, 65, 907, 8, 65, 1, 65, 1, 65, 3, 65, 911, 8, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 920, 8, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 929, 8, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 938, 8, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 959, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 998, 8, 70, 10, 70, 12, 70, 1001, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1011, 8, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 1030, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1038, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1050, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1058, 8, 79, 5, 79, 1060, 8, 79, 10, 79, 12, 79, 1063, 9, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 5, 81, 1073, 8, 81, 10, 81, 12, 81, 1076, 9, 81, 1, 82, 1, 82, 3, 82, 1080, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 1088, 8, 83, 10, 83, 12, 83, 1091, 9, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 1097, 8, 83, 10, 83, 12, 83, 1100, 9, 83, 1, 83, 1, 83, 3, 83, 1104, 8, 83, 1, 84, 3, 84, 1107, 8, 84, 1, 84, 4, 84, 1110, 8, 84, 11, 84, 12, 84, 1111, 1, 84, 3, 84, 1115, 8, 84, 1, 84, 1, 84, 3, 84, 1119, 8, 84, 3, 84, 1121, 8, 84, 1, 85, 3, 85, 1124, 8, 85, 1, 85, 4, 85, 1127, 8, 85, 11, 85, 12, 85, 1128, 1, 85, 1, 85, 4, 85, 1133, 8, 85, 11, 85, 12, 85, 1134, 1, 85, 3, 85, 1138, 8, 85, 1, 86, 1, 86, 1, 86, 0, 2, 140, 158, 87, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 0, 11, 1, 0, 61, 62, 1, 0, 63, 65, 1, 0, 23, 27, 1, 0, 38, 40, 1, 0, 41, 42, 3, 0, 19, 20, 28, 28, 37, 37, 1, 0, 16, 18, 1, 0, 19, 20, 2, 0, 14, 15, 30, 31, 2, 0, 3, 3, 29, 29, 1, 0, 77, 78, 1236, 0, 175, 1, 0, 0, 0, 2, 194, 1, 0, 0, 0, 4, 199, 1, 0, 0, 0, 6, 201, 1, 0, 0, 0, 8, 225, 1, 0, 0, 0, 10, 237, 1, 0, 0, 0, 12, 253, 1, 0, 0, 0, 14, 258, 1, 0, 0, 0, 16, 268, 1, 0, 0, 0, 18, 270, 1, 0, 0, 0, 20, 282, 1, 0, 0, 0, 22, 296, 1, 0, 0, 0, 24, 301, 1, 0, 0, 0, 26, 313, 1, 0, 0, 0, 28, 318, 1, 0, 0, 0, 30, 330, 1, 0, 0, 0, 32, 345, 1, 0, 0, 0, 34, 350, 1, 0, 0, 0, 36, 359, 1, 0, 0, 0, 38, 370, 1, 0, 0, 0, 40, 378, 1, 0, 0, 0, 42, 395, 1, 0, 0, 0, 44, 409, 1, 0, 0, 0, 46, 419, 1, 0, 0, 0, 48, 447, 1, 0, 0, 0, 50, 480, 1, 0, 0, 0, 52, 489, 1, 0, 0, 0, 54, 491, 1, 0, 0, 0, 56, 500, 1, 0, 0, 0, 58, 502, 1, 0, 0, 0, 60, 538, 1, 0, 0, 0, 62, 540, 1, 0, 0, 0, 64, 546, 1, 0, 0, 0, 66, 550, 1, 0, 0, 0, 68, 561, 1, 0, 0, 0, 70, 598, 1, 0, 0, 0, 72, 600, 1, 0, 0, 0, 74, 605, 1, 0, 0, 0, 76, 611, 1, 0, 0, 0, 78, 642, 1, 0, 0, 0, 80, 646, 1, 0, 0, 0, 82, 648, 1, 0, 0, 0, 84, 656, 1, 0, 0, 0, 86, 673, 1, 0, 0, 0, 88, 675, 1, 0, 0, 0, 90, 678, 1, 0, 0, 0, 92, 686, 1, 0, 0, 0, 94, 705, 1, 0, 0, 0, 96, 713, 1, 0, 0, 0, 98, 732, 1, 0, 0, 0, 100, 740, 1, 0, 0, 0, 102, 757, 1, 0, 0, 0, 104, 767, 1, 0, 0, 0, 106, 792, 1, 0, 0, 0, 108, 803, 1, 0, 0, 0, 110, 810, 1, 0, 0, 0, 112, 825, 1, 0, 0, 0, 114, 827, 1, 0, 0, 0, 116, 848, 1, 0, 0, 0, 118, 850, 1, 0, 0, 0, 120, 871, 1, 0, 0, 0, 122, 877, 1, 0, 0, 0, 124, 879, 1, 0, 0, 0, 126, 887, 1, 0, 0, 0, 128, 894, 1, 0, 0, 0, 130, 906, 1, 0, 0, 0, 132, 912, 1, 0, 0, 0, 134, 915, 1, 0, 0, 0, 136, 924, 1, 0, 0, 0, 138, 933, 1, 0, 0, 0, 140, 958, 1, 0, 0, 0, 142, 1002, 1, 0, 0, 0, 144, 1010, 1, 0, 0, 0, 146, 1012, 1, 0, 0, 0, 148, 1015, 1, 0, 0, 0, 150, 1018, 1, 0, 0, 0, 152, 1022, 1, 0, 0, 0, 154, 1029, 1, 0, 0, 0, 156, 1037, 1, 0, 0, 0, 158, 1049, 1, 0, 0, 0, 160, 1064, 1, 0, 0, 0, 162, 1069, 1, 0, 0, 0, 164, 1077, 1, 0, 0, 0, 166, 1103, 1, 0, 0, 0, 168, 1120, 1, 0, 0, 0, 170, 1123, 1, 0, 0, 0, 172, 1139, 1, 0, 0, 0, 174, 176, 3, 6, 3, 0, 175, 174, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 180, 1, 0, 0, 0, 177, 179, 3, 2, 1, 0, 178, 177, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 183, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 184, 5, 0, 0, 1, 184, 1, 1, 0, 0, 0, 185, 195, 5, 45, 0, 0, 186, 195, 5, 46, 0, 0, 187, 195, 3, 24, 12, 0, 188, 195, 3, 8, 4, 0, 189, 195, 3, 10, 5, 0, 190, 195, 3, 20, 10, 0, 191, 195, 3, 34, 17, 0, 192, 195, 3, 40, 20, 0, 193, 195, 3, 4, 2, 0, 194, 185, 1, 0, 0, 0, 194, 186, 1, 0, 0, 0, 194, 187, 1, 0, 0, 0, 194, 188, 1, 0, 0, 0, 194, 189, 1, 0, 0, 0, 194, 190, 1, 0, 0, 0, 194, 191, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 3, 1, 0, 0, 0, 196, 200, 3, 46, 23, 0, 197, 200, 3, 102, 51, 0, 198, 200, 3, 70, 35, 0, 199, 196, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 198, 1, 0, 0, 0, 200, 5, 1, 0, 0, 0, 201, 202, 5, 49, 0, 0, 202, 203, 5, 87, 0, 0, 203, 204, 5, 1, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 5, 50, 0, 0, 206, 207, 3, 172, 86, 0, 207, 210, 1, 0, 0, 0, 208, 209, 5, 51, 0, 0, 209, 211, 5, 87, 0, 0, 210, 208, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 214, 1, 0, 0, 0, 212, 213, 5, 52, 0, 0, 213, 215, 5, 87, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 217, 5, 53, 0, 0, 217, 219, 5, 87, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 221, 5, 1, 0, 0, 221, 7, 1, 0, 0, 0, 222, 224, 3, 110, 55, 0, 223, 222, 1, 0, 0, 0, 224, 227, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 228, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 228, 229, 5, 54, 0, 0, 229, 230, 3, 74, 37, 0, 230, 231, 5, 2, 0, 0, 231, 232, 3, 74, 37, 0, 232, 233, 5, 1, 0, 0, 233, 9, 1, 0, 0, 0, 234, 236, 3, 110, 55, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 55, 0, 0, 241, 243, 3, 166, 83, 0, 242, 244, 3, 76, 38, 0, 243, 242, 1, 0, 0, 0, 243, 244, 1, 0, 0, 0, 244, 246, 1, 0, 0, 0, 245, 247, 3, 12, 6, 0, 246, 245, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 249, 1, 0, 0, 0, 248, 250, 3, 18, 9, 0, 249, 248, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 11, 1, 0, 0, 0, 251, 252, 5, 83, 0, 0, 252, 254, 3, 74, 37, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 256, 3, 172, 86, 0, 256, 257, 3, 14, 7, 0, 257, 13, 1, 0, 0, 0, 258, 263, 3, 74, 37, 0, 259, 260, 5, 12, 0, 0, 260, 262, 3, 74, 37, 0, 261, 259, 1, 0, 0, 0, 262, 265, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 15, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 266, 269, 3, 70, 35, 0, 267, 269, 3, 102, 51, 0, 268, 266, 1, 0, 0, 0, 268, 267, 1, 0, 0, 0, 269, 17, 1, 0, 0, 0, 270, 274, 5, 4, 0, 0, 271, 273, 3, 16, 8, 0, 272, 271, 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, 5, 5, 0, 0, 278, 19, 1, 0, 0, 0, 279, 281, 3, 110, 55, 0, 280, 279, 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 285, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 5, 57, 0, 0, 286, 287, 3, 74, 37, 0, 287, 291, 5, 4, 0, 0, 288, 290, 3, 22, 11, 0, 289, 288, 1, 0, 0, 0, 290, 293, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 294, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 295, 5, 5, 0, 0, 295, 21, 1, 0, 0, 0, 296, 297, 3, 172, 86, 0, 297, 298, 5, 2, 0, 0, 298, 299, 3, 168, 84, 0, 299, 300, 5, 1, 0, 0, 300, 23, 1, 0, 0, 0, 301, 302, 5, 56, 0, 0, 302, 306, 5, 4, 0, 0, 303, 305, 3, 26, 13, 0, 304, 303, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 309, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 309, 310, 5, 5, 0, 0, 310, 25, 1, 0, 0, 0, 311, 314, 3, 28, 14, 0, 312, 314, 3, 30, 15, 0, 313, 311, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 27, 1, 0, 0, 0, 315, 317, 3, 110, 55, 0, 316, 315, 1, 0, 0, 0, 317, 320, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 321, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 321, 322, 3, 74, 37, 0, 322, 323, 5, 6, 0, 0, 323, 324, 3, 74, 37, 0, 324, 325, 5, 7, 0, 0, 325, 326, 5, 1, 0, 0, 326, 29, 1, 0, 0, 0, 327, 329, 3, 110, 55, 0, 328, 327, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 334, 3, 172, 86, 0, 334, 335, 5, 6, 0, 0, 335, 336, 3, 74, 37, 0, 336, 337, 5, 7, 0, 0, 337, 339, 5, 4, 0, 0, 338, 340, 3, 32, 16, 0, 339, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 344, 5, 5, 0, 0, 344, 31, 1, 0, 0, 0, 345, 346, 3, 172, 86, 0, 346, 347, 5, 11, 0, 0, 347, 348, 3, 154, 77, 0, 348, 349, 5, 1, 0, 0, 349, 33, 1, 0, 0, 0, 350, 351, 5, 58, 0, 0, 351, 352, 3, 172, 86, 0, 352, 354, 5, 6, 0, 0, 353, 355, 3, 36, 18, 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 357, 5, 7, 0, 0, 357, 358, 5, 1, 0, 0, 358, 35, 1, 0, 0, 0, 359, 364, 3, 38, 19, 0, 360, 361, 5, 12, 0, 0, 361, 363, 3, 38, 19, 0, 362, 360, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367, 369, 5, 12, 0, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 37, 1, 0, 0, 0, 370, 373, 3, 72, 36, 0, 371, 372, 5, 2, 0, 0, 372, 374, 3, 140, 70, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 39, 1, 0, 0, 0, 375, 377, 3, 110, 55, 0, 376, 375, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 381, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, 382, 5, 79, 0, 0, 382, 383, 5, 73, 0, 0, 383, 384, 3, 172, 86, 0, 384, 386, 5, 6, 0, 0, 385, 387, 3, 42, 21, 0, 386, 385, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 391, 5, 7, 0, 0, 389, 390, 5, 11, 0, 0, 390, 392, 3, 74, 37, 0, 391, 389, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 5, 1, 0, 0, 394, 41, 1, 0, 0, 0, 395, 400, 3, 44, 22, 0, 396, 397, 5, 12, 0, 0, 397, 399, 3, 44, 22, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 404, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 405, 5, 12, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 43, 1, 0, 0, 0, 406, 408, 3, 110, 55, 0, 407, 406, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 412, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 412, 413, 3, 172, 86, 0, 413, 414, 5, 11, 0, 0, 414, 415, 3, 74, 37, 0, 415, 45, 1, 0, 0, 0, 416, 418, 3, 110, 55, 0, 417, 416, 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 422, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 422, 424, 5, 59, 0, 0, 423, 425, 5, 60, 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 435, 3, 166, 83, 0, 427, 431, 5, 6, 0, 0, 428, 430, 3, 50, 25, 0, 429, 428, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 436, 5, 7, 0, 0, 435, 427, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 438, 5, 11, 0, 0, 438, 442, 3, 74, 37, 0, 439, 441, 3, 54, 27, 0, 440, 439, 1, 0, 0, 0, 441, 444, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 445, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 446, 3, 48, 24, 0, 446, 47, 1, 0, 0, 0, 447, 451, 5, 4, 0, 0, 448, 450, 3, 52, 26, 0, 449, 448, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 455, 5, 5, 0, 0, 455, 49, 1, 0, 0, 0, 456, 458, 3, 110, 55, 0, 457, 456, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 462, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 463, 7, 0, 0, 0, 463, 465, 3, 72, 36, 0, 464, 466, 5, 12, 0, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 481, 1, 0, 0, 0, 467, 469, 3, 110, 55, 0, 468, 467, 1, 0, 0, 0, 469, 472, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 473, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 474, 7, 0, 0, 0, 474, 475, 3, 72, 36, 0, 475, 476, 5, 2, 0, 0, 476, 478, 3, 80, 40, 0, 477, 479, 5, 12, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 481, 1, 0, 0, 0, 480, 459, 1, 0, 0, 0, 480, 470, 1, 0, 0, 0, 481, 51, 1, 0, 0, 0, 482, 490, 3, 58, 29, 0, 483, 490, 3, 60, 30, 0, 484, 490, 3, 90, 45, 0, 485, 490, 3, 94, 47, 0, 486, 490, 3, 98, 49, 0, 487, 490, 3, 102, 51, 0, 488, 490, 3, 70, 35, 0, 489, 482, 1, 0, 0, 0, 489, 483, 1, 0, 0, 0, 489, 484, 1, 0, 0, 0, 489, 485, 1, 0, 0, 0, 489, 486, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 53, 1, 0, 0, 0, 491, 492, 3, 172, 86, 0, 492, 497, 3, 56, 28, 0, 493, 494, 5, 12, 0, 0, 494, 496, 3, 56, 28, 0, 495, 493, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 55, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 501, 3, 172, 86, 0, 501, 57, 1, 0, 0, 0, 502, 503, 7, 1, 0, 0, 503, 504, 3, 162, 81, 0, 504, 505, 5, 1, 0, 0, 505, 59, 1, 0, 0, 0, 506, 507, 5, 66, 0, 0, 507, 508, 5, 86, 0, 0, 508, 509, 5, 13, 0, 0, 509, 510, 5, 86, 0, 0, 510, 511, 5, 82, 0, 0, 511, 512, 3, 68, 34, 0, 512, 513, 5, 1, 0, 0, 513, 539, 1, 0, 0, 0, 514, 515, 5, 66, 0, 0, 515, 516, 5, 86, 0, 0, 516, 517, 5, 13, 0, 0, 517, 518, 5, 86, 0, 0, 518, 519, 5, 82, 0, 0, 519, 520, 3, 62, 31, 0, 520, 521, 5, 1, 0, 0, 521, 539, 1, 0, 0, 0, 522, 523, 5, 66, 0, 0, 523, 524, 3, 64, 32, 0, 524, 525, 5, 13, 0, 0, 525, 526, 5, 86, 0, 0, 526, 527, 5, 82, 0, 0, 527, 528, 3, 68, 34, 0, 528, 529, 5, 1, 0, 0, 529, 539, 1, 0, 0, 0, 530, 531, 5, 66, 0, 0, 531, 532, 3, 64, 32, 0, 532, 533, 5, 13, 0, 0, 533, 534, 5, 86, 0, 0, 534, 535, 5, 82, 0, 0, 535, 536, 3, 62, 31, 0, 536, 537, 5, 1, 0, 0, 537, 539, 1, 0, 0, 0, 538, 506, 1, 0, 0, 0, 538, 514, 1, 0, 0, 0, 538, 522, 1, 0, 0, 0, 538, 530, 1, 0, 0, 0, 539, 61, 1, 0, 0, 0, 540, 542, 5, 8, 0, 0, 541, 543, 3, 66, 33, 0, 542, 541, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 9, 0, 0, 545, 63, 1, 0, 0, 0, 546, 547, 5, 6, 0, 0, 547, 548, 3, 162, 81, 0, 548, 549, 5, 7, 0, 0, 549, 65, 1, 0, 0, 0, 550, 555, 3, 68, 34, 0, 551, 552, 5, 12, 0, 0, 552, 554, 3, 68, 34, 0, 553, 551, 1, 0, 0, 0, 554, 557, 1, 0, 0, 0, 555, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 558, 560, 5, 12, 0, 0, 559, 558, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 67, 1, 0, 0, 0, 561, 574, 3, 172, 86, 0, 562, 564, 5, 6, 0, 0, 563, 565, 3, 74, 37, 0, 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 570, 1, 0, 0, 0, 566, 567, 5, 12, 0, 0, 567, 569, 3, 74, 37, 0, 568, 566, 1, 0, 0, 0, 569, 572, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 573, 1, 0, 0, 0, 572, 570, 1, 0, 0, 0, 573, 575, 5, 7, 0, 0, 574, 562, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 69, 1, 0, 0, 0, 576, 578, 3, 110, 55, 0, 577, 576, 1, 0, 0, 0, 578, 581, 1, 0, 0, 0, 579, 577, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 582, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 582, 583, 7, 0, 0, 0, 583, 584, 3, 72, 36, 0, 584, 585, 5, 1, 0, 0, 585, 599, 1, 0, 0, 0, 586, 588, 3, 110, 55, 0, 587, 586, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 593, 7, 0, 0, 0, 593, 594, 3, 72, 36, 0, 594, 595, 5, 2, 0, 0, 595, 596, 3, 80, 40, 0, 596, 597, 5, 1, 0, 0, 597, 599, 1, 0, 0, 0, 598, 579, 1, 0, 0, 0, 598, 589, 1, 0, 0, 0, 599, 71, 1, 0, 0, 0, 600, 601, 3, 172, 86, 0, 601, 602, 5, 11, 0, 0, 602, 603, 3, 74, 37, 0, 603, 73, 1, 0, 0, 0, 604, 606, 5, 16, 0, 0, 605, 604, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 609, 3, 166, 83, 0, 608, 610, 3, 76, 38, 0, 609, 608, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 75, 1, 0, 0, 0, 611, 612, 5, 14, 0, 0, 612, 617, 3, 74, 37, 0, 613, 614, 5, 12, 0, 0, 614, 616, 3, 74, 37, 0, 615, 613, 1, 0, 0, 0, 616, 619, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 620, 621, 5, 15, 0, 0, 621, 77, 1, 0, 0, 0, 622, 623, 3, 158, 79, 0, 623, 624, 5, 2, 0, 0, 624, 625, 3, 80, 40, 0, 625, 626, 5, 1, 0, 0, 626, 643, 1, 0, 0, 0, 627, 628, 3, 158, 79, 0, 628, 629, 7, 2, 0, 0, 629, 630, 3, 80, 40, 0, 630, 631, 5, 1, 0, 0, 631, 643, 1, 0, 0, 0, 632, 633, 3, 158, 79, 0, 633, 634, 7, 3, 0, 0, 634, 635, 3, 80, 40, 0, 635, 636, 5, 1, 0, 0, 636, 643, 1, 0, 0, 0, 637, 638, 3, 158, 79, 0, 638, 639, 7, 4, 0, 0, 639, 640, 3, 80, 40, 0, 640, 641, 5, 1, 0, 0, 641, 643, 1, 0, 0, 0, 642, 622, 1, 0, 0, 0, 642, 627, 1, 0, 0, 0, 642, 632, 1, 0, 0, 0, 642, 637, 1, 0, 0, 0, 643, 79, 1, 0, 0, 0, 644, 647, 3, 140, 70, 0, 645, 647, 3, 82, 41, 0, 646, 644, 1, 0, 0, 0, 646, 645, 1, 0, 0, 0, 647, 81, 1, 0, 0, 0, 648, 649, 5, 67, 0, 0, 649, 650, 3, 166, 83, 0, 650, 652, 5, 6, 0, 0, 651, 653, 3, 84, 42, 0, 652, 651, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 5, 7, 0, 0, 655, 83, 1, 0, 0, 0, 656, 661, 3, 86, 43, 0, 657, 658, 5, 12, 0, 0, 658, 660, 3, 86, 43, 0, 659, 657, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 665, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 666, 5, 12, 0, 0, 665, 664, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 85, 1, 0, 0, 0, 667, 668, 5, 64, 0, 0, 668, 669, 5, 2, 0, 0, 669, 674, 3, 154, 77, 0, 670, 671, 5, 86, 0, 0, 671, 672, 5, 2, 0, 0, 672, 674, 3, 140, 70, 0, 673, 667, 1, 0, 0, 0, 673, 670, 1, 0, 0, 0, 674, 87, 1, 0, 0, 0, 675, 676, 5, 16, 0, 0, 676, 677, 5, 10, 0, 0, 677, 89, 1, 0, 0, 0, 678, 681, 3, 92, 46, 0, 679, 682, 5, 1, 0, 0, 680, 682, 3, 114, 57, 0, 681, 679, 1, 0, 0, 0, 681, 680, 1, 0, 0, 0, 682, 91, 1, 0, 0, 0, 683, 685, 3, 110, 55, 0, 684, 683, 1, 0, 0, 0, 685, 688, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 689, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 691, 5, 69, 0, 0, 690, 692, 3, 88, 44, 0, 691, 690, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 694, 1, 0, 0, 0, 693, 695, 3, 172, 86, 0, 694, 693, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 698, 5, 6, 0, 0, 697, 699, 3, 106, 53, 0, 698, 697, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 703, 5, 7, 0, 0, 701, 702, 5, 11, 0, 0, 702, 704, 3, 74, 37, 0, 703, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 93, 1, 0, 0, 0, 705, 708, 3, 96, 48, 0, 706, 709, 5, 1, 0, 0, 707, 709, 3, 114, 57, 0, 708, 706, 1, 0, 0, 0, 708, 707, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 95, 1, 0, 0, 0, 710, 712, 3, 110, 55, 0, 711, 710, 1, 0, 0, 0, 712, 715, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 716, 1, 0, 0, 0, 715, 713, 1, 0, 0, 0, 716, 718, 5, 70, 0, 0, 717, 719, 3, 88, 44, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 721, 1, 0, 0, 0, 720, 722, 3, 172, 86, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 725, 5, 6, 0, 0, 724, 726, 3, 106, 53, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 730, 5, 7, 0, 0, 728, 729, 5, 11, 0, 0, 729, 731, 3, 74, 37, 0, 730, 728, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 97, 1, 0, 0, 0, 732, 735, 3, 100, 50, 0, 733, 736, 5, 1, 0, 0, 734, 736, 3, 114, 57, 0, 735, 733, 1, 0, 0, 0, 735, 734, 1, 0, 0, 0, 736, 99, 1, 0, 0, 0, 737, 739, 3, 110, 55, 0, 738, 737, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740, 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 745, 5, 71, 0, 0, 744, 746, 3, 88, 44, 0, 745, 744, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 748, 3, 172, 86, 0, 748, 750, 5, 6, 0, 0, 749, 751, 3, 106, 53, 0, 750, 749, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 755, 5, 7, 0, 0, 753, 754, 5, 11, 0, 0, 754, 756, 3, 74, 37, 0, 755, 753, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 101, 1, 0, 0, 0, 757, 762, 3, 104, 52, 0, 758, 763, 5, 1, 0, 0, 759, 761, 3, 114, 57, 0, 760, 759, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763, 1, 0, 0, 0, 762, 758, 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 103, 1, 0, 0, 0, 764, 766, 3, 110, 55, 0, 765, 764, 1, 0, 0, 0, 766, 769, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 771, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 770, 772, 3, 172, 86, 0, 771, 770, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 777, 5, 68, 0, 0, 774, 775, 3, 166, 83, 0, 775, 776, 5, 10, 0, 0, 776, 778, 1, 0, 0, 0, 777, 774, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 780, 1, 0, 0, 0, 779, 781, 3, 88, 44, 0, 780, 779, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 3, 172, 86, 0, 783, 785, 5, 6, 0, 0, 784, 786, 3, 106, 53, 0, 785, 784, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 790, 5, 7, 0, 0, 788, 789, 5, 11, 0, 0, 789, 791, 3, 74, 37, 0, 790, 788, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 105, 1, 0, 0, 0, 792, 797, 3, 108, 54, 0, 793, 794, 5, 12, 0, 0, 794, 796, 3, 108, 54, 0, 795, 793, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 107, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 802, 3, 110, 55, 0, 801, 800, 1, 0, 0, 0, 802, 805, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 803, 1, 0, 0, 0, 806, 807, 3, 172, 86, 0, 807, 808, 5, 11, 0, 0, 808, 809, 3, 74, 37, 0, 809, 109, 1, 0, 0, 0, 810, 811, 5, 72, 0, 0, 811, 820, 3, 172, 86, 0, 812, 816, 5, 6, 0, 0, 813, 815, 3, 130, 65, 0, 814, 813, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 819, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 819, 821, 5, 7, 0, 0, 820, 812, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 111, 1, 0, 0, 0, 822, 826, 3, 134, 67, 0, 823, 826, 3, 136, 68, 0, 824, 826, 3, 138, 69, 0, 825, 822, 1, 0, 0, 0, 825, 823, 1, 0, 0, 0, 825, 824, 1, 0, 0, 0, 826, 113, 1, 0, 0, 0, 827, 831, 5, 4, 0, 0, 828, 830, 3, 112, 56, 0, 829, 828, 1, 0, 0, 0, 830, 833, 1, 0, 0, 0, 831, 829, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 837, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 834, 836, 3, 116, 58, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 840, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 5, 0, 0, 841, 115, 1, 0, 0, 0, 842, 849, 3, 78, 39, 0, 843, 849, 3, 70, 35, 0, 844, 849, 3, 120, 60, 0, 845, 846, 3, 140, 70, 0, 846, 847, 5, 1, 0, 0, 847, 849, 1, 0, 0, 0, 848, 842, 1, 0, 0, 0, 848, 843, 1, 0, 0, 0, 848, 844, 1, 0, 0, 0, 848, 845, 1, 0, 0, 0, 849, 117, 1, 0, 0, 0, 850, 854, 5, 4, 0, 0, 851, 853, 3, 116, 58, 0, 852, 851, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 857, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 858, 5, 5, 0, 0, 858, 119, 1, 0, 0, 0, 859, 860, 5, 80, 0, 0, 860, 861, 3, 140, 70, 0, 861, 863, 3, 118, 59, 0, 862, 864, 3, 122, 61, 0, 863, 862, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 872, 1, 0, 0, 0, 865, 866, 5, 80, 0, 0, 866, 867, 3, 140, 70, 0, 867, 869, 3, 116, 58, 0, 868, 870, 3, 122, 61, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 872, 1, 0, 0, 0, 871, 859, 1, 0, 0, 0, 871, 865, 1, 0, 0, 0, 872, 121, 1, 0, 0, 0, 873, 874, 5, 81, 0, 0, 874, 878, 3, 118, 59, 0, 875, 876, 5, 81, 0, 0, 876, 878, 3, 116, 58, 0, 877, 873, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 878, 123, 1, 0, 0, 0, 879, 880, 5, 73, 0, 0, 880, 881, 3, 172, 86, 0, 881, 883, 5, 6, 0, 0, 882, 884, 3, 128, 64, 0, 883, 882, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 886, 5, 7, 0, 0, 886, 125, 1, 0, 0, 0, 887, 888, 3, 158, 79, 0, 888, 890, 5, 6, 0, 0, 889, 891, 3, 128, 64, 0, 890, 889, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 5, 7, 0, 0, 893, 127, 1, 0, 0, 0, 894, 899, 3, 140, 70, 0, 895, 896, 5, 12, 0, 0, 896, 898, 3, 140, 70, 0, 897, 895, 1, 0, 0, 0, 898, 901, 1, 0, 0, 0, 899, 897, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 903, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 902, 904, 5, 12, 0, 0, 903, 902, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 129, 1, 0, 0, 0, 905, 907, 3, 132, 66, 0, 906, 905, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 3, 140, 70, 0, 909, 911, 5, 12, 0, 0, 910, 909, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 131, 1, 0, 0, 0, 912, 913, 3, 172, 86, 0, 913, 914, 5, 2, 0, 0, 914, 133, 1, 0, 0, 0, 915, 919, 5, 74, 0, 0, 916, 917, 3, 172, 86, 0, 917, 918, 5, 11, 0, 0, 918, 920, 1, 0, 0, 0, 919, 916, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 3, 140, 70, 0, 922, 923, 5, 1, 0, 0, 923, 135, 1, 0, 0, 0, 924, 928, 5, 75, 0, 0, 925, 926, 3, 172, 86, 0, 926, 927, 5, 11, 0, 0, 927, 929, 1, 0, 0, 0, 928, 925, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 931, 3, 140, 70, 0, 931, 932, 5, 1, 0, 0, 932, 137, 1, 0, 0, 0, 933, 937, 5, 76, 0, 0, 934, 935, 3, 172, 86, 0, 935, 936, 5, 11, 0, 0, 936, 938, 1, 0, 0, 0, 937, 934, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 940, 3, 140, 70, 0, 940, 941, 5, 1, 0, 0, 941, 139, 1, 0, 0, 0, 942, 943, 6, 70, -1, 0, 943, 959, 3, 154, 77, 0, 944, 945, 3, 158, 79, 0, 945, 946, 5, 43, 0, 0, 946, 959, 1, 0, 0, 0, 947, 959, 3, 158, 79, 0, 948, 959, 3, 126, 63, 0, 949, 959, 3, 124, 62, 0, 950, 959, 3, 82, 41, 0, 951, 952, 5, 6, 0, 0, 952, 953, 3, 140, 70, 0, 953, 954, 5, 7, 0, 0, 954, 959, 1, 0, 0, 0, 955, 959, 3, 142, 71, 0, 956, 957, 7, 5, 0, 0, 957, 959, 3, 140, 70, 13, 958, 942, 1, 0, 0, 0, 958, 944, 1, 0, 0, 0, 958, 947, 1, 0, 0, 0, 958, 948, 1, 0, 0, 0, 958, 949, 1, 0, 0, 0, 958, 950, 1, 0, 0, 0, 958, 951, 1, 0, 0, 0, 958, 955, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 959, 999, 1, 0, 0, 0, 960, 961, 10, 11, 0, 0, 961, 962, 7, 6, 0, 0, 962, 998, 3, 140, 70, 12, 963, 964, 10, 10, 0, 0, 964, 965, 7, 7, 0, 0, 965, 998, 3, 140, 70, 11, 966, 967, 10, 9, 0, 0, 967, 968, 3, 144, 72, 0, 968, 969, 3, 140, 70, 10, 969, 998, 1, 0, 0, 0, 970, 971, 10, 8, 0, 0, 971, 972, 7, 8, 0, 0, 972, 998, 3, 140, 70, 9, 973, 974, 10, 6, 0, 0, 974, 975, 7, 9, 0, 0, 975, 998, 3, 140, 70, 7, 976, 977, 10, 5, 0, 0, 977, 978, 5, 34, 0, 0, 978, 998, 3, 140, 70, 6, 979, 980, 10, 4, 0, 0, 980, 981, 5, 36, 0, 0, 981, 998, 3, 140, 70, 5, 982, 983, 10, 3, 0, 0, 983, 984, 5, 32, 0, 0, 984, 998, 3, 140, 70, 4, 985, 986, 10, 2, 0, 0, 986, 987, 5, 35, 0, 0, 987, 998, 3, 140, 70, 3, 988, 989, 10, 1, 0, 0, 989, 990, 5, 33, 0, 0, 990, 998, 3, 140, 70, 2, 991, 992, 10, 12, 0, 0, 992, 993, 5, 84, 0, 0, 993, 998, 3, 74, 37, 0, 994, 995, 10, 7, 0, 0, 995, 996, 5, 83, 0, 0, 996, 998, 3, 74, 37, 0, 997, 960, 1, 0, 0, 0, 997, 963, 1, 0, 0, 0, 997, 966, 1, 0, 0, 0, 997, 970, 1, 0, 0, 0, 997, 973, 1, 0, 0, 0, 997, 976, 1, 0, 0, 0, 997, 979, 1, 0, 0, 0, 997, 982, 1, 0, 0, 0, 997, 985, 1, 0, 0, 0, 997, 988, 1, 0, 0, 0, 997, 991, 1, 0, 0, 0, 997, 994, 1, 0, 0, 0, 998, 1001, 1, 0, 0, 0, 999, 997, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 141, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1002, 1003, 3, 158, 79, 0, 1003, 1004, 3, 172, 86, 0, 1004, 1005, 3, 172, 86, 0, 1005, 143, 1, 0, 0, 0, 1006, 1011, 3, 146, 73, 0, 1007, 1011, 3, 148, 74, 0, 1008, 1011, 3, 150, 75, 0, 1009, 1011, 3, 152, 76, 0, 1010, 1006, 1, 0, 0, 0, 1010, 1007, 1, 0, 0, 0, 1010, 1008, 1, 0, 0, 0, 1010, 1009, 1, 0, 0, 0, 1011, 145, 1, 0, 0, 0, 1012, 1013, 5, 14, 0, 0, 1013, 1014, 5, 14, 0, 0, 1014, 147, 1, 0, 0, 0, 1015, 1016, 5, 15, 0, 0, 1016, 1017, 5, 15, 0, 0, 1017, 149, 1, 0, 0, 0, 1018, 1019, 5, 15, 0, 0, 1019, 1020, 5, 15, 0, 0, 1020, 1021, 5, 15, 0, 0, 1021, 151, 1, 0, 0, 0, 1022, 1023, 5, 14, 0, 0, 1023, 1024, 5, 14, 0, 0, 1024, 1025, 5, 14, 0, 0, 1025, 153, 1, 0, 0, 0, 1026, 1030, 3, 156, 78, 0, 1027, 1030, 3, 164, 82, 0, 1028, 1030, 3, 158, 79, 0, 1029, 1026, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1029, 1028, 1, 0, 0, 0, 1030, 155, 1, 0, 0, 0, 1031, 1038, 3, 168, 84, 0, 1032, 1038, 3, 170, 85, 0, 1033, 1038, 5, 87, 0, 0, 1034, 1038, 5, 88, 0, 0, 1035, 1038, 7, 10, 0, 0, 1036, 1038, 5, 85, 0, 0, 1037, 1031, 1, 0, 0, 0, 1037, 1032, 1, 0, 0, 0, 1037, 1033, 1, 0, 0, 0, 1037, 1034, 1, 0, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1036, 1, 0, 0, 0, 1038, 157, 1, 0, 0, 0, 1039, 1040, 6, 79, -1, 0, 1040, 1050, 3, 166, 83, 0, 1041, 1042, 3, 160, 80, 0, 1042, 1043, 5, 10, 0, 0, 1043, 1044, 3, 158, 79, 2, 1044, 1050, 1, 0, 0, 0, 1045, 1046, 3, 160, 80, 0, 1046, 1047, 5, 10, 0, 0, 1047, 1048, 3, 126, 63, 0, 1048, 1050, 1, 0, 0, 0, 1049, 1039, 1, 0, 0, 0, 1049, 1041, 1, 0, 0, 0, 1049, 1045, 1, 0, 0, 0, 1050, 1061, 1, 0, 0, 0, 1051, 1052, 10, 3, 0, 0, 1052, 1053, 5, 8, 0, 0, 1053, 1054, 3, 140, 70, 0, 1054, 1057, 5, 9, 0, 0, 1055, 1056, 5, 10, 0, 0, 1056, 1058, 3, 158, 79, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1051, 1, 0, 0, 0, 1060, 1063, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 159, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1064, 1065, 3, 172, 86, 0, 1065, 1066, 5, 6, 0, 0, 1066, 1067, 3, 158, 79, 0, 1067, 1068, 5, 7, 0, 0, 1068, 161, 1, 0, 0, 0, 1069, 1074, 3, 172, 86, 0, 1070, 1071, 5, 12, 0, 0, 1071, 1073, 3, 172, 86, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 163, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1079, 5, 8, 0, 0, 1078, 1080, 3, 128, 64, 0, 1079, 1078, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 5, 9, 0, 0, 1082, 165, 1, 0, 0, 0, 1083, 1104, 3, 172, 86, 0, 1084, 1089, 3, 172, 86, 0, 1085, 1086, 5, 10, 0, 0, 1086, 1088, 3, 172, 86, 0, 1087, 1085, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1104, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 5, 44, 0, 0, 1093, 1098, 3, 172, 86, 0, 1094, 1095, 5, 10, 0, 0, 1095, 1097, 3, 172, 86, 0, 1096, 1094, 1, 0, 0, 0, 1097, 1100, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1101, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1102, 5, 44, 0, 0, 1102, 1104, 1, 0, 0, 0, 1103, 1083, 1, 0, 0, 0, 1103, 1084, 1, 0, 0, 0, 1103, 1092, 1, 0, 0, 0, 1104, 167, 1, 0, 0, 0, 1105, 1107, 5, 20, 0, 0, 1106, 1105, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1109, 1, 0, 0, 0, 1108, 1110, 5, 89, 0, 0, 1109, 1108, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1114, 1, 0, 0, 0, 1113, 1115, 5, 86, 0, 0, 1114, 1113, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1121, 1, 0, 0, 0, 1116, 1118, 5, 89, 0, 0, 1117, 1119, 5, 86, 0, 0, 1118, 1117, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1121, 1, 0, 0, 0, 1120, 1106, 1, 0, 0, 0, 1120, 1116, 1, 0, 0, 0, 1121, 169, 1, 0, 0, 0, 1122, 1124, 5, 20, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 1, 0, 0, 0, 1125, 1127, 5, 89, 0, 0, 1126, 1125, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 1126, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1132, 5, 10, 0, 0, 1131, 1133, 5, 89, 0, 0, 1132, 1131, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1137, 1, 0, 0, 0, 1136, 1138, 5, 86, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 171, 1, 0, 0, 0, 1139, 1140, 5, 86, 0, 0, 1140, 173, 1, 0, 0, 0, 135, 175, 180, 194, 199, 210, 214, 218, 225, 237, 243, 246, 249, 253, 263, 268, 274, 282, 291, 306, 313, 318, 330, 341, 354, 364, 368, 373, 378, 386, 391, 400, 404, 409, 419, 424, 431, 435, 442, 451, 459, 465, 470, 478, 480, 489, 497, 538, 542, 555, 559, 564, 570, 574, 579, 589, 598, 605, 609, 617, 642, 646, 652, 661, 665, 673, 681, 686, 691, 694, 698, 703, 708, 713, 718, 721, 725, 730, 735, 740, 745, 750, 755, 760, 762, 767, 771, 777, 780, 785, 790, 797, 803, 816, 820, 825, 831, 837, 848, 854, 863, 869, 871, 877, 883, 890, 899, 903, 906, 910, 919, 928, 937, 958, 997, 999, 1010, 1029, 1037, 1049, 1057, 1061, 1074, 1079, 1089, 1098, 1103, 1106, 1111, 1114, 1118, 1120, 1123, 1128, 1134, 1137] \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.java b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.java deleted file mode 100644 index b59a8a4..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.java +++ /dev/null @@ -1,7267 +0,0 @@ -// Generated from /home/valera/IdeaProjects/LibSLPluginIJ/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.g4 by ANTLR 4.13.1 -package com.github.kechinvv.libslpluginij.antlr; - -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.ATN; -import org.antlr.v4.runtime.atn.ATNDeserializer; -import org.antlr.v4.runtime.atn.ParserATNSimulator; -import org.antlr.v4.runtime.atn.PredictionContextCache; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.tree.TerminalNode; - -import java.util.List; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public class LibSLParser extends Parser { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - SEMICOLON=1, ASSIGN_OP=2, EQ=3, L_BRACE=4, R_BRACE=5, L_BRACKET=6, R_BRACKET=7, - L_SQUARE_BRACKET=8, R_SQUARE_BRACKET=9, DOT=10, COLON=11, COMMA=12, MINUS_ARROW=13, - L_ARROW=14, R_ARROW=15, ASTERISK=16, SLASH=17, PERCENT=18, PLUS=19, MINUS=20, - INCREMENT=21, DECREMENT=22, PLUS_EQ=23, MINUS_EQ=24, ASTERISK_EQ=25, SLASH_EQ=26, - PERCENT_EQ=27, EXCLAMATION=28, EXCLAMATION_EQ=29, L_ARROW_EQ=30, R_ARROW_EQ=31, - AMPERSAND=32, DOUBLE_AMPERSAND=33, BIT_OR=34, LOGIC_OR=35, XOR=36, TILDE=37, - AMPERSAND_EQ=38, OR_EQ=39, XOR_EQ=40, R_SHIFT_EQ=41, L_SHIFT_EQ=42, APOSTROPHE=43, - BACK_QOUTE=44, ImportStatement=45, IncludeStatement=46, IMPORT=47, INCLUDE=48, - LIBSL=49, LIBRARY=50, VERSION=51, LANGUAGE=52, URL=53, TYPEALIAS=54, TYPE=55, - TYPES=56, ENUM=57, ANNOTATION=58, AUTOMATON=59, CONCEPT=60, VAR=61, VAL=62, - INITSTATE=63, STATE=64, FINISHSTATE=65, SHIFT=66, NEW=67, FUN=68, CONSTRUCTOR=69, - DESTRUCTOR=70, PROC=71, AT=72, ACTION=73, REQUIRES=74, ENSURES=75, ASSIGNS=76, - TRUE=77, FALSE=78, DEFINE=79, IF=80, ELSE=81, BY=82, IS=83, AS=84, NULL=85, - Identifier=86, DoubleQuotedString=87, CHARACTER=88, Digit=89, Hex=90, - WS=91, BR=92, COMMENT=93, LINE_COMMENT=94, BAD_CHARACTER=95; - public static final int - RULE_file = 0, RULE_globalStatement = 1, RULE_topLevelDecl = 2, RULE_header = 3, - RULE_typealiasStatement = 4, RULE_typeDefBlock = 5, RULE_targetType = 6, - RULE_typeList = 7, RULE_typeDefBlockStatement = 8, RULE_typeDefBlockBody = 9, - RULE_enumBlock = 10, RULE_enumBlockStatement = 11, RULE_typesSection = 12, - RULE_semanticTypeDecl = 13, RULE_simpleSemanticType = 14, RULE_enumSemanticType = 15, - RULE_enumSemanticTypeEntry = 16, RULE_annotationDecl = 17, RULE_annotationDeclParams = 18, - RULE_annotationDeclParamsPart = 19, RULE_actionDecl = 20, RULE_actionDeclParamList = 21, - RULE_actionParameter = 22, RULE_automatonDecl = 23, RULE_automatonBody = 24, - RULE_constructorVariables = 25, RULE_automatonStatement = 26, RULE_implementedConcepts = 27, - RULE_concept = 28, RULE_automatonStateDecl = 29, RULE_automatonShiftDecl = 30, - RULE_shiftByList = 31, RULE_shiftFromList = 32, RULE_functionsList = 33, - RULE_functionsListPart = 34, RULE_variableDecl = 35, RULE_nameWithType = 36, - RULE_typeIdentifier = 37, RULE_generic = 38, RULE_variableAssignment = 39, - RULE_assignmentRight = 40, RULE_callAutomatonConstructorWithNamedArgs = 41, - RULE_namedArgs = 42, RULE_argPair = 43, RULE_headerWithAsterisk = 44, - RULE_constructorDecl = 45, RULE_constructorHeader = 46, RULE_destructorDecl = 47, - RULE_destructorHeader = 48, RULE_procDecl = 49, RULE_procHeader = 50, - RULE_functionDecl = 51, RULE_functionHeader = 52, RULE_functionDeclArgList = 53, - RULE_parameter = 54, RULE_annotationUsage = 55, RULE_functionContract = 56, - RULE_functionBody = 57, RULE_functionBodyStatement = 58, RULE_conditionBody = 59, - RULE_ifStatement = 60, RULE_elseStatement = 61, RULE_actionUsage = 62, - RULE_procUsage = 63, RULE_expressionsList = 64, RULE_annotationArgs = 65, - RULE_argName = 66, RULE_requiresContract = 67, RULE_ensuresContract = 68, - RULE_assignsContract = 69, RULE_expression = 70, RULE_hasAutomatonConcept = 71, - RULE_bitShiftOp = 72, RULE_lShift = 73, RULE_rShift = 74, RULE_uRShift = 75, - RULE_uLShift = 76, RULE_expressionAtomic = 77, RULE_primitiveLiteral = 78, - RULE_qualifiedAccess = 79, RULE_simpleCall = 80, RULE_identifierList = 81, - RULE_arrayLiteral = 82, RULE_periodSeparatedFullName = 83, RULE_integerNumber = 84, - RULE_floatNumber = 85, RULE_identifier = 86; - private static String[] makeRuleNames() { - return new String[] { - "file", "globalStatement", "topLevelDecl", "header", "typealiasStatement", - "typeDefBlock", "targetType", "typeList", "typeDefBlockStatement", "typeDefBlockBody", - "enumBlock", "enumBlockStatement", "typesSection", "semanticTypeDecl", - "simpleSemanticType", "enumSemanticType", "enumSemanticTypeEntry", "annotationDecl", - "annotationDeclParams", "annotationDeclParamsPart", "actionDecl", "actionDeclParamList", - "actionParameter", "automatonDecl", "automatonBody", "constructorVariables", - "automatonStatement", "implementedConcepts", "concept", "automatonStateDecl", - "automatonShiftDecl", "shiftByList", "shiftFromList", "functionsList", - "functionsListPart", "variableDecl", "nameWithType", "typeIdentifier", - "generic", "variableAssignment", "assignmentRight", "callAutomatonConstructorWithNamedArgs", - "namedArgs", "argPair", "headerWithAsterisk", "constructorDecl", "constructorHeader", - "destructorDecl", "destructorHeader", "procDecl", "procHeader", "functionDecl", - "functionHeader", "functionDeclArgList", "parameter", "annotationUsage", - "functionContract", "functionBody", "functionBodyStatement", "conditionBody", - "ifStatement", "elseStatement", "actionUsage", "procUsage", "expressionsList", - "annotationArgs", "argName", "requiresContract", "ensuresContract", "assignsContract", - "expression", "hasAutomatonConcept", "bitShiftOp", "lShift", "rShift", - "uRShift", "uLShift", "expressionAtomic", "primitiveLiteral", "qualifiedAccess", - "simpleCall", "identifierList", "arrayLiteral", "periodSeparatedFullName", - "integerNumber", "floatNumber", "identifier" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "';'", "'='", "'=='", "'{'", "'}'", "'('", "')'", "'['", "']'", - "'.'", "':'", "','", "'->'", "'<'", "'>'", "'*'", "'/'", "'%'", "'+'", - "'-'", "'++'", "'--'", "'+='", "'-='", "'*='", "'/='", "'%='", "'!'", - "'!='", "'<='", "'>='", "'&'", "'&&'", "'|'", "'||'", "'^'", "'~'", "'&='", - "'|='", "'^='", "'>>='", "'<<='", "'''", "'`'", null, null, "'import'", - "'include'", "'libsl'", "'library'", "'version'", "'language'", "'url'", - "'typealias'", "'type'", "'types'", "'enum'", "'annotation'", "'automaton'", - "'concept'", "'var'", "'val'", "'initstate'", "'state'", "'finishstate'", - "'shift'", "'new'", "'fun'", "'constructor'", "'destructor'", "'proc'", - "'@'", "'action'", "'requires'", "'ensures'", "'assigns'", "'true'", - "'false'", "'define'", "'if'", "'else'", "'by'", "'is'", "'as'", "'null'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "SEMICOLON", "ASSIGN_OP", "EQ", "L_BRACE", "R_BRACE", "L_BRACKET", - "R_BRACKET", "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "DOT", "COLON", - "COMMA", "MINUS_ARROW", "L_ARROW", "R_ARROW", "ASTERISK", "SLASH", "PERCENT", - "PLUS", "MINUS", "INCREMENT", "DECREMENT", "PLUS_EQ", "MINUS_EQ", "ASTERISK_EQ", - "SLASH_EQ", "PERCENT_EQ", "EXCLAMATION", "EXCLAMATION_EQ", "L_ARROW_EQ", - "R_ARROW_EQ", "AMPERSAND", "DOUBLE_AMPERSAND", "BIT_OR", "LOGIC_OR", - "XOR", "TILDE", "AMPERSAND_EQ", "OR_EQ", "XOR_EQ", "R_SHIFT_EQ", "L_SHIFT_EQ", - "APOSTROPHE", "BACK_QOUTE", "ImportStatement", "IncludeStatement", "IMPORT", - "INCLUDE", "LIBSL", "LIBRARY", "VERSION", "LANGUAGE", "URL", "TYPEALIAS", - "TYPE", "TYPES", "ENUM", "ANNOTATION", "AUTOMATON", "CONCEPT", "VAR", - "VAL", "INITSTATE", "STATE", "FINISHSTATE", "SHIFT", "NEW", "FUN", "CONSTRUCTOR", - "DESTRUCTOR", "PROC", "AT", "ACTION", "REQUIRES", "ENSURES", "ASSIGNS", - "TRUE", "FALSE", "DEFINE", "IF", "ELSE", "BY", "IS", "AS", "NULL", "Identifier", - "DoubleQuotedString", "CHARACTER", "Digit", "Hex", "WS", "BR", "COMMENT", - "LINE_COMMENT", "BAD_CHARACTER" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - @Override - public String getGrammarFileName() { return "LibSLParser.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - public LibSLParser(TokenStream input) { - super(input); - _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @SuppressWarnings("CheckReturnValue") - public static class FileContext extends ParserRuleContext { - public TerminalNode EOF() { return getToken(LibSLParser.EOF, 0); } - public HeaderContext header() { - return getRuleContext(HeaderContext.class,0); - } - public List globalStatement() { - return getRuleContexts(GlobalStatementContext.class); - } - public GlobalStatementContext globalStatement(int i) { - return getRuleContext(GlobalStatementContext.class,i); - } - public FileContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_file; } - } - - public final FileContext file() throws RecognitionException { - FileContext _localctx = new FileContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_file); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(175); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIBSL) { - { - setState(174); - header(); - } - } - - setState(180); - _errHandler.sync(this); - _la = _input.LA(1); - while (((((_la - 45)) & ~0x3f) == 0 && ((1L << (_la - 45)) & 2216345959939L) != 0)) { - { - { - setState(177); - globalStatement(); - } - } - setState(182); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(183); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GlobalStatementContext extends ParserRuleContext { - public TerminalNode ImportStatement() { return getToken(LibSLParser.ImportStatement, 0); } - public TerminalNode IncludeStatement() { return getToken(LibSLParser.IncludeStatement, 0); } - public TypesSectionContext typesSection() { - return getRuleContext(TypesSectionContext.class,0); - } - public TypealiasStatementContext typealiasStatement() { - return getRuleContext(TypealiasStatementContext.class,0); - } - public TypeDefBlockContext typeDefBlock() { - return getRuleContext(TypeDefBlockContext.class,0); - } - public EnumBlockContext enumBlock() { - return getRuleContext(EnumBlockContext.class,0); - } - public AnnotationDeclContext annotationDecl() { - return getRuleContext(AnnotationDeclContext.class,0); - } - public ActionDeclContext actionDecl() { - return getRuleContext(ActionDeclContext.class,0); - } - public TopLevelDeclContext topLevelDecl() { - return getRuleContext(TopLevelDeclContext.class,0); - } - public GlobalStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_globalStatement; } - } - - public final GlobalStatementContext globalStatement() throws RecognitionException { - GlobalStatementContext _localctx = new GlobalStatementContext(_ctx, getState()); - enterRule(_localctx, 2, RULE_globalStatement); - try { - setState(194); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(185); - match(ImportStatement); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(186); - match(IncludeStatement); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(187); - typesSection(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(188); - typealiasStatement(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(189); - typeDefBlock(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(190); - enumBlock(); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(191); - annotationDecl(); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(192); - actionDecl(); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(193); - topLevelDecl(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TopLevelDeclContext extends ParserRuleContext { - public AutomatonDeclContext automatonDecl() { - return getRuleContext(AutomatonDeclContext.class,0); - } - public FunctionDeclContext functionDecl() { - return getRuleContext(FunctionDeclContext.class,0); - } - public VariableDeclContext variableDecl() { - return getRuleContext(VariableDeclContext.class,0); - } - public TopLevelDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_topLevelDecl; } - } - - public final TopLevelDeclContext topLevelDecl() throws RecognitionException { - TopLevelDeclContext _localctx = new TopLevelDeclContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_topLevelDecl); - try { - setState(199); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(196); - automatonDecl(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(197); - functionDecl(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(198); - variableDecl(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HeaderContext extends ParserRuleContext { - public Token lslver; - public IdentifierContext libraryName; - public Token ver; - public Token lang; - public Token link; - public List SEMICOLON() { return getTokens(LibSLParser.SEMICOLON); } - public TerminalNode SEMICOLON(int i) { - return getToken(LibSLParser.SEMICOLON, i); - } - public TerminalNode LIBSL() { return getToken(LibSLParser.LIBSL, 0); } - public TerminalNode LIBRARY() { return getToken(LibSLParser.LIBRARY, 0); } - public List DoubleQuotedString() { return getTokens(LibSLParser.DoubleQuotedString); } - public TerminalNode DoubleQuotedString(int i) { - return getToken(LibSLParser.DoubleQuotedString, i); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode VERSION() { return getToken(LibSLParser.VERSION, 0); } - public TerminalNode LANGUAGE() { return getToken(LibSLParser.LANGUAGE, 0); } - public TerminalNode URL() { return getToken(LibSLParser.URL, 0); } - public HeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_header; } - } - - public final HeaderContext header() throws RecognitionException { - HeaderContext _localctx = new HeaderContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_header); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - { - setState(201); - match(LIBSL); - setState(202); - ((HeaderContext)_localctx).lslver = match(DoubleQuotedString); - setState(203); - match(SEMICOLON); - } - { - setState(205); - match(LIBRARY); - setState(206); - ((HeaderContext)_localctx).libraryName = identifier(); - } - setState(210); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==VERSION) { - { - setState(208); - match(VERSION); - setState(209); - ((HeaderContext)_localctx).ver = match(DoubleQuotedString); - } - } - - setState(214); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LANGUAGE) { - { - setState(212); - match(LANGUAGE); - setState(213); - ((HeaderContext)_localctx).lang = match(DoubleQuotedString); - } - } - - setState(218); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==URL) { - { - setState(216); - match(URL); - setState(217); - ((HeaderContext)_localctx).link = match(DoubleQuotedString); - } - } - - setState(220); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypealiasStatementContext extends ParserRuleContext { - public TypeIdentifierContext left; - public TypeIdentifierContext right; - public TerminalNode TYPEALIAS() { return getToken(LibSLParser.TYPEALIAS, 0); } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public List typeIdentifier() { - return getRuleContexts(TypeIdentifierContext.class); - } - public TypeIdentifierContext typeIdentifier(int i) { - return getRuleContext(TypeIdentifierContext.class,i); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public TypealiasStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typealiasStatement; } - } - - public final TypealiasStatementContext typealiasStatement() throws RecognitionException { - TypealiasStatementContext _localctx = new TypealiasStatementContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_typealiasStatement); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(225); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(222); - annotationUsage(); - } - } - setState(227); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(228); - match(TYPEALIAS); - setState(229); - ((TypealiasStatementContext)_localctx).left = typeIdentifier(); - setState(230); - match(ASSIGN_OP); - setState(231); - ((TypealiasStatementContext)_localctx).right = typeIdentifier(); - setState(232); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypeDefBlockContext extends ParserRuleContext { - public PeriodSeparatedFullNameContext name; - public TerminalNode TYPE() { return getToken(LibSLParser.TYPE, 0); } - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public GenericContext generic() { - return getRuleContext(GenericContext.class,0); - } - public TargetTypeContext targetType() { - return getRuleContext(TargetTypeContext.class,0); - } - public TypeDefBlockBodyContext typeDefBlockBody() { - return getRuleContext(TypeDefBlockBodyContext.class,0); - } - public TypeDefBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeDefBlock; } - } - - public final TypeDefBlockContext typeDefBlock() throws RecognitionException { - TypeDefBlockContext _localctx = new TypeDefBlockContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_typeDefBlock); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(237); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(234); - annotationUsage(); - } - } - setState(239); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(240); - match(TYPE); - setState(241); - ((TypeDefBlockContext)_localctx).name = periodSeparatedFullName(); - setState(243); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_ARROW) { - { - setState(242); - generic(); - } - } - - setState(246); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { - case 1: - { - setState(245); - targetType(); - } - break; - } - setState(249); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_BRACE) { - { - setState(248); - typeDefBlockBody(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TargetTypeContext extends ParserRuleContext { - public IdentifierContext for_; - public TypeListContext typeList() { - return getRuleContext(TypeListContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IS() { return getToken(LibSLParser.IS, 0); } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public TargetTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_targetType; } - } - - public final TargetTypeContext targetType() throws RecognitionException { - TargetTypeContext _localctx = new TargetTypeContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_targetType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(253); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IS) { - { - setState(251); - match(IS); - setState(252); - typeIdentifier(); - } - } - - setState(255); - ((TargetTypeContext)_localctx).for_ = identifier(); - setState(256); - typeList(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypeListContext extends ParserRuleContext { - public List typeIdentifier() { - return getRuleContexts(TypeIdentifierContext.class); - } - public TypeIdentifierContext typeIdentifier(int i) { - return getRuleContext(TypeIdentifierContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public TypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeList; } - } - - public final TypeListContext typeList() throws RecognitionException { - TypeListContext _localctx = new TypeListContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_typeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(258); - typeIdentifier(); - setState(263); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(259); - match(COMMA); - setState(260); - typeIdentifier(); - } - } - setState(265); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypeDefBlockStatementContext extends ParserRuleContext { - public VariableDeclContext variableDecl() { - return getRuleContext(VariableDeclContext.class,0); - } - public FunctionDeclContext functionDecl() { - return getRuleContext(FunctionDeclContext.class,0); - } - public TypeDefBlockStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeDefBlockStatement; } - } - - public final TypeDefBlockStatementContext typeDefBlockStatement() throws RecognitionException { - TypeDefBlockStatementContext _localctx = new TypeDefBlockStatementContext(_ctx, getState()); - enterRule(_localctx, 16, RULE_typeDefBlockStatement); - try { - setState(268); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(266); - variableDecl(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(267); - functionDecl(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypeDefBlockBodyContext extends ParserRuleContext { - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List typeDefBlockStatement() { - return getRuleContexts(TypeDefBlockStatementContext.class); - } - public TypeDefBlockStatementContext typeDefBlockStatement(int i) { - return getRuleContext(TypeDefBlockStatementContext.class,i); - } - public TypeDefBlockBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeDefBlockBody; } - } - - public final TypeDefBlockBodyContext typeDefBlockBody() throws RecognitionException { - TypeDefBlockBodyContext _localctx = new TypeDefBlockBodyContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_typeDefBlockBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(270); - match(L_BRACE); - setState(274); - _errHandler.sync(this); - _la = _input.LA(1); - while (((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & 33556611L) != 0)) { - { - { - setState(271); - typeDefBlockStatement(); - } - } - setState(276); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(277); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnumBlockContext extends ParserRuleContext { - public TerminalNode ENUM() { return getToken(LibSLParser.ENUM, 0); } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public List enumBlockStatement() { - return getRuleContexts(EnumBlockStatementContext.class); - } - public EnumBlockStatementContext enumBlockStatement(int i) { - return getRuleContext(EnumBlockStatementContext.class,i); - } - public EnumBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enumBlock; } - } - - public final EnumBlockContext enumBlock() throws RecognitionException { - EnumBlockContext _localctx = new EnumBlockContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_enumBlock); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(282); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(279); - annotationUsage(); - } - } - setState(284); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(285); - match(ENUM); - setState(286); - typeIdentifier(); - setState(287); - match(L_BRACE); - setState(291); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==Identifier) { - { - { - setState(288); - enumBlockStatement(); - } - } - setState(293); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(294); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnumBlockStatementContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public IntegerNumberContext integerNumber() { - return getRuleContext(IntegerNumberContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public EnumBlockStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enumBlockStatement; } - } - - public final EnumBlockStatementContext enumBlockStatement() throws RecognitionException { - EnumBlockStatementContext _localctx = new EnumBlockStatementContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_enumBlockStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(296); - identifier(); - setState(297); - match(ASSIGN_OP); - setState(298); - integerNumber(); - setState(299); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypesSectionContext extends ParserRuleContext { - public TerminalNode TYPES() { return getToken(LibSLParser.TYPES, 0); } - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List semanticTypeDecl() { - return getRuleContexts(SemanticTypeDeclContext.class); - } - public SemanticTypeDeclContext semanticTypeDecl(int i) { - return getRuleContext(SemanticTypeDeclContext.class,i); - } - public TypesSectionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typesSection; } - } - - public final TypesSectionContext typesSection() throws RecognitionException { - TypesSectionContext _localctx = new TypesSectionContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_typesSection); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(301); - match(TYPES); - setState(302); - match(L_BRACE); - setState(306); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==ASTERISK || _la==BACK_QOUTE || _la==AT || _la==Identifier) { - { - { - setState(303); - semanticTypeDecl(); - } - } - setState(308); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(309); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SemanticTypeDeclContext extends ParserRuleContext { - public SimpleSemanticTypeContext simpleSemanticType() { - return getRuleContext(SimpleSemanticTypeContext.class,0); - } - public EnumSemanticTypeContext enumSemanticType() { - return getRuleContext(EnumSemanticTypeContext.class,0); - } - public SemanticTypeDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_semanticTypeDecl; } - } - - public final SemanticTypeDeclContext semanticTypeDecl() throws RecognitionException { - SemanticTypeDeclContext _localctx = new SemanticTypeDeclContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_semanticTypeDecl); - try { - setState(313); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(311); - simpleSemanticType(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(312); - enumSemanticType(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SimpleSemanticTypeContext extends ParserRuleContext { - public TypeIdentifierContext semanticName; - public TypeIdentifierContext realName; - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public List typeIdentifier() { - return getRuleContexts(TypeIdentifierContext.class); - } - public TypeIdentifierContext typeIdentifier(int i) { - return getRuleContext(TypeIdentifierContext.class,i); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public SimpleSemanticTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_simpleSemanticType; } - } - - public final SimpleSemanticTypeContext simpleSemanticType() throws RecognitionException { - SimpleSemanticTypeContext _localctx = new SimpleSemanticTypeContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_simpleSemanticType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(318); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(315); - annotationUsage(); - } - } - setState(320); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(321); - ((SimpleSemanticTypeContext)_localctx).semanticName = typeIdentifier(); - setState(322); - match(L_BRACKET); - setState(323); - ((SimpleSemanticTypeContext)_localctx).realName = typeIdentifier(); - setState(324); - match(R_BRACKET); - setState(325); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnumSemanticTypeContext extends ParserRuleContext { - public IdentifierContext semanticName; - public TypeIdentifierContext realName; - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public List enumSemanticTypeEntry() { - return getRuleContexts(EnumSemanticTypeEntryContext.class); - } - public EnumSemanticTypeEntryContext enumSemanticTypeEntry(int i) { - return getRuleContext(EnumSemanticTypeEntryContext.class,i); - } - public EnumSemanticTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enumSemanticType; } - } - - public final EnumSemanticTypeContext enumSemanticType() throws RecognitionException { - EnumSemanticTypeContext _localctx = new EnumSemanticTypeContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_enumSemanticType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(330); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(327); - annotationUsage(); - } - } - setState(332); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(333); - ((EnumSemanticTypeContext)_localctx).semanticName = identifier(); - setState(334); - match(L_BRACKET); - setState(335); - ((EnumSemanticTypeContext)_localctx).realName = typeIdentifier(); - setState(336); - match(R_BRACKET); - setState(337); - match(L_BRACE); - setState(339); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(338); - enumSemanticTypeEntry(); - } - } - setState(341); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==Identifier ); - setState(343); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnumSemanticTypeEntryContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public ExpressionAtomicContext expressionAtomic() { - return getRuleContext(ExpressionAtomicContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public EnumSemanticTypeEntryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enumSemanticTypeEntry; } - } - - public final EnumSemanticTypeEntryContext enumSemanticTypeEntry() throws RecognitionException { - EnumSemanticTypeEntryContext _localctx = new EnumSemanticTypeEntryContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_enumSemanticTypeEntry); - try { - enterOuterAlt(_localctx, 1); - { - setState(345); - identifier(); - setState(346); - match(COLON); - setState(347); - expressionAtomic(); - setState(348); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnnotationDeclContext extends ParserRuleContext { - public IdentifierContext name; - public TerminalNode ANNOTATION() { return getToken(LibSLParser.ANNOTATION, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AnnotationDeclParamsContext annotationDeclParams() { - return getRuleContext(AnnotationDeclParamsContext.class,0); - } - public AnnotationDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationDecl; } - } - - public final AnnotationDeclContext annotationDecl() throws RecognitionException { - AnnotationDeclContext _localctx = new AnnotationDeclContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_annotationDecl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(350); - match(ANNOTATION); - setState(351); - ((AnnotationDeclContext)_localctx).name = identifier(); - setState(352); - match(L_BRACKET); - setState(354); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(353); - annotationDeclParams(); - } - } - - setState(356); - match(R_BRACKET); - setState(357); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnnotationDeclParamsContext extends ParserRuleContext { - public List annotationDeclParamsPart() { - return getRuleContexts(AnnotationDeclParamsPartContext.class); - } - public AnnotationDeclParamsPartContext annotationDeclParamsPart(int i) { - return getRuleContext(AnnotationDeclParamsPartContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public AnnotationDeclParamsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationDeclParams; } - } - - public final AnnotationDeclParamsContext annotationDeclParams() throws RecognitionException { - AnnotationDeclParamsContext _localctx = new AnnotationDeclParamsContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_annotationDeclParams); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(359); - annotationDeclParamsPart(); - setState(364); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,24,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(360); - match(COMMA); - setState(361); - annotationDeclParamsPart(); - } - } - } - setState(366); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,24,_ctx); - } - setState(368); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(367); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnnotationDeclParamsPartContext extends ParserRuleContext { - public NameWithTypeContext nameWithType() { - return getRuleContext(NameWithTypeContext.class,0); - } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public AnnotationDeclParamsPartContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationDeclParamsPart; } - } - - public final AnnotationDeclParamsPartContext annotationDeclParamsPart() throws RecognitionException { - AnnotationDeclParamsPartContext _localctx = new AnnotationDeclParamsPartContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_annotationDeclParamsPart); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(370); - nameWithType(); - setState(373); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASSIGN_OP) { - { - setState(371); - match(ASSIGN_OP); - setState(372); - expression(0); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ActionDeclContext extends ParserRuleContext { - public IdentifierContext actionName; - public TypeIdentifierContext actionType; - public TerminalNode DEFINE() { return getToken(LibSLParser.DEFINE, 0); } - public TerminalNode ACTION() { return getToken(LibSLParser.ACTION, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public ActionDeclParamListContext actionDeclParamList() { - return getRuleContext(ActionDeclParamListContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public ActionDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_actionDecl; } - } - - public final ActionDeclContext actionDecl() throws RecognitionException { - ActionDeclContext _localctx = new ActionDeclContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_actionDecl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(378); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(375); - annotationUsage(); - } - } - setState(380); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(381); - match(DEFINE); - setState(382); - match(ACTION); - setState(383); - ((ActionDeclContext)_localctx).actionName = identifier(); - setState(384); - match(L_BRACKET); - setState(386); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AT || _la==Identifier) { - { - setState(385); - actionDeclParamList(); - } - } - - setState(388); - match(R_BRACKET); - setState(391); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(389); - match(COLON); - setState(390); - ((ActionDeclContext)_localctx).actionType = typeIdentifier(); - } - } - - setState(393); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ActionDeclParamListContext extends ParserRuleContext { - public List actionParameter() { - return getRuleContexts(ActionParameterContext.class); - } - public ActionParameterContext actionParameter(int i) { - return getRuleContext(ActionParameterContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public ActionDeclParamListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_actionDeclParamList; } - } - - public final ActionDeclParamListContext actionDeclParamList() throws RecognitionException { - ActionDeclParamListContext _localctx = new ActionDeclParamListContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_actionDeclParamList); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(395); - actionParameter(); - setState(400); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,30,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(396); - match(COMMA); - setState(397); - actionParameter(); - } - } - } - setState(402); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,30,_ctx); - } - setState(404); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(403); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ActionParameterContext extends ParserRuleContext { - public IdentifierContext name; - public TypeIdentifierContext type; - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public ActionParameterContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_actionParameter; } - } - - public final ActionParameterContext actionParameter() throws RecognitionException { - ActionParameterContext _localctx = new ActionParameterContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_actionParameter); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(409); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(406); - annotationUsage(); - } - } - setState(411); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(412); - ((ActionParameterContext)_localctx).name = identifier(); - setState(413); - match(COLON); - setState(414); - ((ActionParameterContext)_localctx).type = typeIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AutomatonDeclContext extends ParserRuleContext { - public PeriodSeparatedFullNameContext name; - public TypeIdentifierContext type; - public TerminalNode AUTOMATON() { return getToken(LibSLParser.AUTOMATON, 0); } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public AutomatonBodyContext automatonBody() { - return getRuleContext(AutomatonBodyContext.class,0); - } - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public TerminalNode CONCEPT() { return getToken(LibSLParser.CONCEPT, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List implementedConcepts() { - return getRuleContexts(ImplementedConceptsContext.class); - } - public ImplementedConceptsContext implementedConcepts(int i) { - return getRuleContext(ImplementedConceptsContext.class,i); - } - public List constructorVariables() { - return getRuleContexts(ConstructorVariablesContext.class); - } - public ConstructorVariablesContext constructorVariables(int i) { - return getRuleContext(ConstructorVariablesContext.class,i); - } - public AutomatonDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_automatonDecl; } - } - - public final AutomatonDeclContext automatonDecl() throws RecognitionException { - AutomatonDeclContext _localctx = new AutomatonDeclContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_automatonDecl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(419); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(416); - annotationUsage(); - } - } - setState(421); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(422); - match(AUTOMATON); - setState(424); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CONCEPT) { - { - setState(423); - match(CONCEPT); - } - } - - setState(426); - ((AutomatonDeclContext)_localctx).name = periodSeparatedFullName(); - setState(435); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_BRACKET) { - { - setState(427); - match(L_BRACKET); - setState(431); - _errHandler.sync(this); - _la = _input.LA(1); - while (((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & 2051L) != 0)) { - { - { - setState(428); - constructorVariables(); - } - } - setState(433); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(434); - match(R_BRACKET); - } - } - - setState(437); - match(COLON); - setState(438); - ((AutomatonDeclContext)_localctx).type = typeIdentifier(); - setState(442); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==Identifier) { - { - { - setState(439); - implementedConcepts(); - } - } - setState(444); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(445); - automatonBody(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AutomatonBodyContext extends ParserRuleContext { - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List automatonStatement() { - return getRuleContexts(AutomatonStatementContext.class); - } - public AutomatonStatementContext automatonStatement(int i) { - return getRuleContext(AutomatonStatementContext.class,i); - } - public AutomatonBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_automatonBody; } - } - - public final AutomatonBodyContext automatonBody() throws RecognitionException { - AutomatonBodyContext _localctx = new AutomatonBodyContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_automatonBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(447); - match(L_BRACE); - setState(451); - _errHandler.sync(this); - _la = _input.LA(1); - while (((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & 33558463L) != 0)) { - { - { - setState(448); - automatonStatement(); - } - } - setState(453); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(454); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstructorVariablesContext extends ParserRuleContext { - public Token keyword; - public NameWithTypeContext nameWithType() { - return getRuleContext(NameWithTypeContext.class,0); - } - public TerminalNode VAR() { return getToken(LibSLParser.VAR, 0); } - public TerminalNode VAL() { return getToken(LibSLParser.VAL, 0); } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public TerminalNode COMMA() { return getToken(LibSLParser.COMMA, 0); } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public AssignmentRightContext assignmentRight() { - return getRuleContext(AssignmentRightContext.class,0); - } - public ConstructorVariablesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constructorVariables; } - } - - public final ConstructorVariablesContext constructorVariables() throws RecognitionException { - ConstructorVariablesContext _localctx = new ConstructorVariablesContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_constructorVariables); - int _la; - try { - setState(480); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(459); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(456); - annotationUsage(); - } - } - setState(461); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(462); - ((ConstructorVariablesContext)_localctx).keyword = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==VAR || _la==VAL) ) { - ((ConstructorVariablesContext)_localctx).keyword = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(463); - nameWithType(); - setState(465); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(464); - match(COMMA); - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(470); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(467); - annotationUsage(); - } - } - setState(472); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(473); - ((ConstructorVariablesContext)_localctx).keyword = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==VAR || _la==VAL) ) { - ((ConstructorVariablesContext)_localctx).keyword = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(474); - nameWithType(); - setState(475); - match(ASSIGN_OP); - setState(476); - assignmentRight(); - setState(478); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(477); - match(COMMA); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AutomatonStatementContext extends ParserRuleContext { - public AutomatonStateDeclContext automatonStateDecl() { - return getRuleContext(AutomatonStateDeclContext.class,0); - } - public AutomatonShiftDeclContext automatonShiftDecl() { - return getRuleContext(AutomatonShiftDeclContext.class,0); - } - public ConstructorDeclContext constructorDecl() { - return getRuleContext(ConstructorDeclContext.class,0); - } - public DestructorDeclContext destructorDecl() { - return getRuleContext(DestructorDeclContext.class,0); - } - public ProcDeclContext procDecl() { - return getRuleContext(ProcDeclContext.class,0); - } - public FunctionDeclContext functionDecl() { - return getRuleContext(FunctionDeclContext.class,0); - } - public VariableDeclContext variableDecl() { - return getRuleContext(VariableDeclContext.class,0); - } - public AutomatonStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_automatonStatement; } - } - - public final AutomatonStatementContext automatonStatement() throws RecognitionException { - AutomatonStatementContext _localctx = new AutomatonStatementContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_automatonStatement); - try { - setState(489); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(482); - automatonStateDecl(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(483); - automatonShiftDecl(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(484); - constructorDecl(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(485); - destructorDecl(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(486); - procDecl(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(487); - functionDecl(); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(488); - variableDecl(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImplementedConceptsContext extends ParserRuleContext { - public IdentifierContext implements_; - public List concept() { - return getRuleContexts(ConceptContext.class); - } - public ConceptContext concept(int i) { - return getRuleContext(ConceptContext.class,i); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public ImplementedConceptsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_implementedConcepts; } - } - - public final ImplementedConceptsContext implementedConcepts() throws RecognitionException { - ImplementedConceptsContext _localctx = new ImplementedConceptsContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_implementedConcepts); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(491); - ((ImplementedConceptsContext)_localctx).implements_ = identifier(); - setState(492); - concept(); - setState(497); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(493); - match(COMMA); - setState(494); - concept(); - } - } - setState(499); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConceptContext extends ParserRuleContext { - public IdentifierContext name; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ConceptContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_concept; } - } - - public final ConceptContext concept() throws RecognitionException { - ConceptContext _localctx = new ConceptContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_concept); - try { - enterOuterAlt(_localctx, 1); - { - setState(500); - ((ConceptContext)_localctx).name = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AutomatonStateDeclContext extends ParserRuleContext { - public Token keyword; - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode INITSTATE() { return getToken(LibSLParser.INITSTATE, 0); } - public TerminalNode STATE() { return getToken(LibSLParser.STATE, 0); } - public TerminalNode FINISHSTATE() { return getToken(LibSLParser.FINISHSTATE, 0); } - public AutomatonStateDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_automatonStateDecl; } - } - - public final AutomatonStateDeclContext automatonStateDecl() throws RecognitionException { - AutomatonStateDeclContext _localctx = new AutomatonStateDeclContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_automatonStateDecl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(502); - ((AutomatonStateDeclContext)_localctx).keyword = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 63)) & ~0x3f) == 0 && ((1L << (_la - 63)) & 7L) != 0)) ) { - ((AutomatonStateDeclContext)_localctx).keyword = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(503); - identifierList(); - setState(504); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AutomatonShiftDeclContext extends ParserRuleContext { - public Token from; - public Token to; - public TerminalNode SHIFT() { return getToken(LibSLParser.SHIFT, 0); } - public TerminalNode MINUS_ARROW() { return getToken(LibSLParser.MINUS_ARROW, 0); } - public TerminalNode BY() { return getToken(LibSLParser.BY, 0); } - public FunctionsListPartContext functionsListPart() { - return getRuleContext(FunctionsListPartContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public List Identifier() { return getTokens(LibSLParser.Identifier); } - public TerminalNode Identifier(int i) { - return getToken(LibSLParser.Identifier, i); - } - public ShiftByListContext shiftByList() { - return getRuleContext(ShiftByListContext.class,0); - } - public ShiftFromListContext shiftFromList() { - return getRuleContext(ShiftFromListContext.class,0); - } - public AutomatonShiftDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_automatonShiftDecl; } - } - - public final AutomatonShiftDeclContext automatonShiftDecl() throws RecognitionException { - AutomatonShiftDeclContext _localctx = new AutomatonShiftDeclContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_automatonShiftDecl); - try { - setState(538); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(506); - match(SHIFT); - setState(507); - ((AutomatonShiftDeclContext)_localctx).from = match(Identifier); - setState(508); - match(MINUS_ARROW); - setState(509); - ((AutomatonShiftDeclContext)_localctx).to = match(Identifier); - setState(510); - match(BY); - setState(511); - functionsListPart(); - setState(512); - match(SEMICOLON); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(514); - match(SHIFT); - setState(515); - ((AutomatonShiftDeclContext)_localctx).from = match(Identifier); - setState(516); - match(MINUS_ARROW); - setState(517); - ((AutomatonShiftDeclContext)_localctx).to = match(Identifier); - setState(518); - match(BY); - setState(519); - shiftByList(); - setState(520); - match(SEMICOLON); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(522); - match(SHIFT); - setState(523); - shiftFromList(); - setState(524); - match(MINUS_ARROW); - setState(525); - ((AutomatonShiftDeclContext)_localctx).to = match(Identifier); - setState(526); - match(BY); - setState(527); - functionsListPart(); - setState(528); - match(SEMICOLON); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(530); - match(SHIFT); - setState(531); - shiftFromList(); - setState(532); - match(MINUS_ARROW); - setState(533); - ((AutomatonShiftDeclContext)_localctx).to = match(Identifier); - setState(534); - match(BY); - setState(535); - shiftByList(); - setState(536); - match(SEMICOLON); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ShiftByListContext extends ParserRuleContext { - public TerminalNode L_SQUARE_BRACKET() { return getToken(LibSLParser.L_SQUARE_BRACKET, 0); } - public TerminalNode R_SQUARE_BRACKET() { return getToken(LibSLParser.R_SQUARE_BRACKET, 0); } - public FunctionsListContext functionsList() { - return getRuleContext(FunctionsListContext.class,0); - } - public ShiftByListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_shiftByList; } - } - - public final ShiftByListContext shiftByList() throws RecognitionException { - ShiftByListContext _localctx = new ShiftByListContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_shiftByList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(540); - match(L_SQUARE_BRACKET); - setState(542); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(541); - functionsList(); - } - } - - setState(544); - match(R_SQUARE_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ShiftFromListContext extends ParserRuleContext { - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public ShiftFromListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_shiftFromList; } - } - - public final ShiftFromListContext shiftFromList() throws RecognitionException { - ShiftFromListContext _localctx = new ShiftFromListContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_shiftFromList); - try { - enterOuterAlt(_localctx, 1); - { - setState(546); - match(L_BRACKET); - setState(547); - identifierList(); - setState(548); - match(R_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionsListContext extends ParserRuleContext { - public List functionsListPart() { - return getRuleContexts(FunctionsListPartContext.class); - } - public FunctionsListPartContext functionsListPart(int i) { - return getRuleContext(FunctionsListPartContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public FunctionsListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionsList; } - } - - public final FunctionsListContext functionsList() throws RecognitionException { - FunctionsListContext _localctx = new FunctionsListContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_functionsList); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(550); - functionsListPart(); - setState(555); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,48,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(551); - match(COMMA); - setState(552); - functionsListPart(); - } - } - } - setState(557); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,48,_ctx); - } - setState(559); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(558); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionsListPartContext extends ParserRuleContext { - public IdentifierContext name; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List typeIdentifier() { - return getRuleContexts(TypeIdentifierContext.class); - } - public TypeIdentifierContext typeIdentifier(int i) { - return getRuleContext(TypeIdentifierContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public FunctionsListPartContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionsListPart; } - } - - public final FunctionsListPartContext functionsListPart() throws RecognitionException { - FunctionsListPartContext _localctx = new FunctionsListPartContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_functionsListPart); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(561); - ((FunctionsListPartContext)_localctx).name = identifier(); - setState(574); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_BRACKET) { - { - setState(562); - match(L_BRACKET); - setState(564); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK || _la==BACK_QOUTE || _la==Identifier) { - { - setState(563); - typeIdentifier(); - } - } - - setState(570); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(566); - match(COMMA); - setState(567); - typeIdentifier(); - } - } - setState(572); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(573); - match(R_BRACKET); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableDeclContext extends ParserRuleContext { - public Token keyword; - public NameWithTypeContext nameWithType() { - return getRuleContext(NameWithTypeContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode VAR() { return getToken(LibSLParser.VAR, 0); } - public TerminalNode VAL() { return getToken(LibSLParser.VAL, 0); } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public AssignmentRightContext assignmentRight() { - return getRuleContext(AssignmentRightContext.class,0); - } - public VariableDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableDecl; } - } - - public final VariableDeclContext variableDecl() throws RecognitionException { - VariableDeclContext _localctx = new VariableDeclContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_variableDecl); - int _la; - try { - setState(598); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(579); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(576); - annotationUsage(); - } - } - setState(581); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(582); - ((VariableDeclContext)_localctx).keyword = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==VAR || _la==VAL) ) { - ((VariableDeclContext)_localctx).keyword = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(583); - nameWithType(); - setState(584); - match(SEMICOLON); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(589); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(586); - annotationUsage(); - } - } - setState(591); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(592); - ((VariableDeclContext)_localctx).keyword = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==VAR || _la==VAL) ) { - ((VariableDeclContext)_localctx).keyword = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(593); - nameWithType(); - setState(594); - match(ASSIGN_OP); - setState(595); - assignmentRight(); - setState(596); - match(SEMICOLON); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NameWithTypeContext extends ParserRuleContext { - public IdentifierContext name; - public TypeIdentifierContext type; - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public NameWithTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_nameWithType; } - } - - public final NameWithTypeContext nameWithType() throws RecognitionException { - NameWithTypeContext _localctx = new NameWithTypeContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_nameWithType); - try { - enterOuterAlt(_localctx, 1); - { - setState(600); - ((NameWithTypeContext)_localctx).name = identifier(); - setState(601); - match(COLON); - setState(602); - ((NameWithTypeContext)_localctx).type = typeIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TypeIdentifierContext extends ParserRuleContext { - public Token asterisk; - public PeriodSeparatedFullNameContext name; - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public GenericContext generic() { - return getRuleContext(GenericContext.class,0); - } - public TerminalNode ASTERISK() { return getToken(LibSLParser.ASTERISK, 0); } - public TypeIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_typeIdentifier; } - } - - public final TypeIdentifierContext typeIdentifier() throws RecognitionException { - TypeIdentifierContext _localctx = new TypeIdentifierContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_typeIdentifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(605); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK) { - { - setState(604); - ((TypeIdentifierContext)_localctx).asterisk = match(ASTERISK); - } - } - - setState(607); - ((TypeIdentifierContext)_localctx).name = periodSeparatedFullName(); - setState(609); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) { - case 1: - { - setState(608); - generic(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GenericContext extends ParserRuleContext { - public TerminalNode L_ARROW() { return getToken(LibSLParser.L_ARROW, 0); } - public List typeIdentifier() { - return getRuleContexts(TypeIdentifierContext.class); - } - public TypeIdentifierContext typeIdentifier(int i) { - return getRuleContext(TypeIdentifierContext.class,i); - } - public TerminalNode R_ARROW() { return getToken(LibSLParser.R_ARROW, 0); } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public GenericContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_generic; } - } - - public final GenericContext generic() throws RecognitionException { - GenericContext _localctx = new GenericContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_generic); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - { - setState(611); - match(L_ARROW); - setState(612); - typeIdentifier(); - setState(617); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(613); - match(COMMA); - setState(614); - typeIdentifier(); - } - } - setState(619); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(620); - match(R_ARROW); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableAssignmentContext extends ParserRuleContext { - public Token op; - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public AssignmentRightContext assignmentRight() { - return getRuleContext(AssignmentRightContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public TerminalNode PLUS_EQ() { return getToken(LibSLParser.PLUS_EQ, 0); } - public TerminalNode MINUS_EQ() { return getToken(LibSLParser.MINUS_EQ, 0); } - public TerminalNode ASTERISK_EQ() { return getToken(LibSLParser.ASTERISK_EQ, 0); } - public TerminalNode SLASH_EQ() { return getToken(LibSLParser.SLASH_EQ, 0); } - public TerminalNode PERCENT_EQ() { return getToken(LibSLParser.PERCENT_EQ, 0); } - public TerminalNode AMPERSAND_EQ() { return getToken(LibSLParser.AMPERSAND_EQ, 0); } - public TerminalNode OR_EQ() { return getToken(LibSLParser.OR_EQ, 0); } - public TerminalNode XOR_EQ() { return getToken(LibSLParser.XOR_EQ, 0); } - public TerminalNode R_SHIFT_EQ() { return getToken(LibSLParser.R_SHIFT_EQ, 0); } - public TerminalNode L_SHIFT_EQ() { return getToken(LibSLParser.L_SHIFT_EQ, 0); } - public VariableAssignmentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableAssignment; } - } - - public final VariableAssignmentContext variableAssignment() throws RecognitionException { - VariableAssignmentContext _localctx = new VariableAssignmentContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_variableAssignment); - int _la; - try { - setState(642); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(622); - qualifiedAccess(0); - setState(623); - ((VariableAssignmentContext)_localctx).op = match(ASSIGN_OP); - setState(624); - assignmentRight(); - setState(625); - match(SEMICOLON); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(627); - qualifiedAccess(0); - setState(628); - ((VariableAssignmentContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 260046848L) != 0)) ) { - ((VariableAssignmentContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(629); - assignmentRight(); - setState(630); - match(SEMICOLON); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(632); - qualifiedAccess(0); - setState(633); - ((VariableAssignmentContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1924145348608L) != 0)) ) { - ((VariableAssignmentContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(634); - assignmentRight(); - setState(635); - match(SEMICOLON); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(637); - qualifiedAccess(0); - setState(638); - ((VariableAssignmentContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==R_SHIFT_EQ || _la==L_SHIFT_EQ) ) { - ((VariableAssignmentContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(639); - assignmentRight(); - setState(640); - match(SEMICOLON); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AssignmentRightContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public CallAutomatonConstructorWithNamedArgsContext callAutomatonConstructorWithNamedArgs() { - return getRuleContext(CallAutomatonConstructorWithNamedArgsContext.class,0); - } - public AssignmentRightContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignmentRight; } - } - - public final AssignmentRightContext assignmentRight() throws RecognitionException { - AssignmentRightContext _localctx = new AssignmentRightContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_assignmentRight); - try { - setState(646); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(644); - expression(0); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(645); - callAutomatonConstructorWithNamedArgs(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CallAutomatonConstructorWithNamedArgsContext extends ParserRuleContext { - public PeriodSeparatedFullNameContext name; - public TerminalNode NEW() { return getToken(LibSLParser.NEW, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public NamedArgsContext namedArgs() { - return getRuleContext(NamedArgsContext.class,0); - } - public CallAutomatonConstructorWithNamedArgsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_callAutomatonConstructorWithNamedArgs; } - } - - public final CallAutomatonConstructorWithNamedArgsContext callAutomatonConstructorWithNamedArgs() throws RecognitionException { - CallAutomatonConstructorWithNamedArgsContext _localctx = new CallAutomatonConstructorWithNamedArgsContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_callAutomatonConstructorWithNamedArgs); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(648); - match(NEW); - setState(649); - ((CallAutomatonConstructorWithNamedArgsContext)_localctx).name = periodSeparatedFullName(); - setState(650); - match(L_BRACKET); - setState(652); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STATE || _la==Identifier) { - { - setState(651); - namedArgs(); - } - } - - setState(654); - match(R_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NamedArgsContext extends ParserRuleContext { - public List argPair() { - return getRuleContexts(ArgPairContext.class); - } - public ArgPairContext argPair(int i) { - return getRuleContext(ArgPairContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public NamedArgsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedArgs; } - } - - public final NamedArgsContext namedArgs() throws RecognitionException { - NamedArgsContext _localctx = new NamedArgsContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_namedArgs); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(656); - argPair(); - setState(661); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,62,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(657); - match(COMMA); - setState(658); - argPair(); - } - } - } - setState(663); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,62,_ctx); - } - setState(665); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(664); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArgPairContext extends ParserRuleContext { - public Token name; - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public ExpressionAtomicContext expressionAtomic() { - return getRuleContext(ExpressionAtomicContext.class,0); - } - public TerminalNode STATE() { return getToken(LibSLParser.STATE, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode Identifier() { return getToken(LibSLParser.Identifier, 0); } - public ArgPairContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_argPair; } - } - - public final ArgPairContext argPair() throws RecognitionException { - ArgPairContext _localctx = new ArgPairContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_argPair); - try { - setState(673); - _errHandler.sync(this); - switch (_input.LA(1)) { - case STATE: - enterOuterAlt(_localctx, 1); - { - setState(667); - ((ArgPairContext)_localctx).name = match(STATE); - setState(668); - match(ASSIGN_OP); - setState(669); - expressionAtomic(); - } - break; - case Identifier: - enterOuterAlt(_localctx, 2); - { - setState(670); - ((ArgPairContext)_localctx).name = match(Identifier); - setState(671); - match(ASSIGN_OP); - setState(672); - expression(0); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HeaderWithAsteriskContext extends ParserRuleContext { - public TerminalNode ASTERISK() { return getToken(LibSLParser.ASTERISK, 0); } - public TerminalNode DOT() { return getToken(LibSLParser.DOT, 0); } - public HeaderWithAsteriskContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_headerWithAsterisk; } - } - - public final HeaderWithAsteriskContext headerWithAsterisk() throws RecognitionException { - HeaderWithAsteriskContext _localctx = new HeaderWithAsteriskContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_headerWithAsterisk); - try { - enterOuterAlt(_localctx, 1); - { - setState(675); - match(ASTERISK); - setState(676); - match(DOT); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstructorDeclContext extends ParserRuleContext { - public ConstructorHeaderContext constructorHeader() { - return getRuleContext(ConstructorHeaderContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public ConstructorDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constructorDecl; } - } - - public final ConstructorDeclContext constructorDecl() throws RecognitionException { - ConstructorDeclContext _localctx = new ConstructorDeclContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_constructorDecl); - try { - enterOuterAlt(_localctx, 1); - { - setState(678); - constructorHeader(); - setState(681); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SEMICOLON: - { - setState(679); - match(SEMICOLON); - } - break; - case L_BRACE: - { - setState(680); - functionBody(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstructorHeaderContext extends ParserRuleContext { - public IdentifierContext functionName; - public TypeIdentifierContext functionType; - public TerminalNode CONSTRUCTOR() { return getToken(LibSLParser.CONSTRUCTOR, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public HeaderWithAsteriskContext headerWithAsterisk() { - return getRuleContext(HeaderWithAsteriskContext.class,0); - } - public FunctionDeclArgListContext functionDeclArgList() { - return getRuleContext(FunctionDeclArgListContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public ConstructorHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constructorHeader; } - } - - public final ConstructorHeaderContext constructorHeader() throws RecognitionException { - ConstructorHeaderContext _localctx = new ConstructorHeaderContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_constructorHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(686); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(683); - annotationUsage(); - } - } - setState(688); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(689); - match(CONSTRUCTOR); - setState(691); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK) { - { - setState(690); - headerWithAsterisk(); - } - } - - setState(694); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(693); - ((ConstructorHeaderContext)_localctx).functionName = identifier(); - } - } - - setState(696); - match(L_BRACKET); - setState(698); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AT || _la==Identifier) { - { - setState(697); - functionDeclArgList(); - } - } - - setState(700); - match(R_BRACKET); - setState(703); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(701); - match(COLON); - setState(702); - ((ConstructorHeaderContext)_localctx).functionType = typeIdentifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DestructorDeclContext extends ParserRuleContext { - public DestructorHeaderContext destructorHeader() { - return getRuleContext(DestructorHeaderContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public DestructorDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_destructorDecl; } - } - - public final DestructorDeclContext destructorDecl() throws RecognitionException { - DestructorDeclContext _localctx = new DestructorDeclContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_destructorDecl); - try { - enterOuterAlt(_localctx, 1); - { - setState(705); - destructorHeader(); - setState(708); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SEMICOLON: - { - setState(706); - match(SEMICOLON); - } - break; - case L_BRACE: - { - setState(707); - functionBody(); - } - break; - case R_BRACE: - case VAR: - case VAL: - case INITSTATE: - case STATE: - case FINISHSTATE: - case SHIFT: - case FUN: - case CONSTRUCTOR: - case DESTRUCTOR: - case PROC: - case AT: - case Identifier: - break; - default: - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DestructorHeaderContext extends ParserRuleContext { - public IdentifierContext functionName; - public TypeIdentifierContext functionType; - public TerminalNode DESTRUCTOR() { return getToken(LibSLParser.DESTRUCTOR, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public HeaderWithAsteriskContext headerWithAsterisk() { - return getRuleContext(HeaderWithAsteriskContext.class,0); - } - public FunctionDeclArgListContext functionDeclArgList() { - return getRuleContext(FunctionDeclArgListContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public DestructorHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_destructorHeader; } - } - - public final DestructorHeaderContext destructorHeader() throws RecognitionException { - DestructorHeaderContext _localctx = new DestructorHeaderContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_destructorHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(713); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(710); - annotationUsage(); - } - } - setState(715); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(716); - match(DESTRUCTOR); - setState(718); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK) { - { - setState(717); - headerWithAsterisk(); - } - } - - setState(721); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(720); - ((DestructorHeaderContext)_localctx).functionName = identifier(); - } - } - - setState(723); - match(L_BRACKET); - setState(725); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AT || _la==Identifier) { - { - setState(724); - functionDeclArgList(); - } - } - - setState(727); - match(R_BRACKET); - setState(730); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(728); - match(COLON); - setState(729); - ((DestructorHeaderContext)_localctx).functionType = typeIdentifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ProcDeclContext extends ParserRuleContext { - public ProcHeaderContext procHeader() { - return getRuleContext(ProcHeaderContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public ProcDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_procDecl; } - } - - public final ProcDeclContext procDecl() throws RecognitionException { - ProcDeclContext _localctx = new ProcDeclContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_procDecl); - try { - enterOuterAlt(_localctx, 1); - { - setState(732); - procHeader(); - setState(735); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SEMICOLON: - { - setState(733); - match(SEMICOLON); - } - break; - case L_BRACE: - { - setState(734); - functionBody(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ProcHeaderContext extends ParserRuleContext { - public IdentifierContext functionName; - public TypeIdentifierContext functionType; - public TerminalNode PROC() { return getToken(LibSLParser.PROC, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public HeaderWithAsteriskContext headerWithAsterisk() { - return getRuleContext(HeaderWithAsteriskContext.class,0); - } - public FunctionDeclArgListContext functionDeclArgList() { - return getRuleContext(FunctionDeclArgListContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public ProcHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_procHeader; } - } - - public final ProcHeaderContext procHeader() throws RecognitionException { - ProcHeaderContext _localctx = new ProcHeaderContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_procHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(740); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(737); - annotationUsage(); - } - } - setState(742); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(743); - match(PROC); - setState(745); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK) { - { - setState(744); - headerWithAsterisk(); - } - } - - setState(747); - ((ProcHeaderContext)_localctx).functionName = identifier(); - setState(748); - match(L_BRACKET); - setState(750); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AT || _la==Identifier) { - { - setState(749); - functionDeclArgList(); - } - } - - setState(752); - match(R_BRACKET); - setState(755); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(753); - match(COLON); - setState(754); - ((ProcHeaderContext)_localctx).functionType = typeIdentifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionDeclContext extends ParserRuleContext { - public FunctionHeaderContext functionHeader() { - return getRuleContext(FunctionHeaderContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public FunctionDeclContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionDecl; } - } - - public final FunctionDeclContext functionDecl() throws RecognitionException { - FunctionDeclContext _localctx = new FunctionDeclContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_functionDecl); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(757); - functionHeader(); - setState(762); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SEMICOLON: - { - setState(758); - match(SEMICOLON); - } - break; - case EOF: - case L_BRACE: - case R_BRACE: - case ImportStatement: - case IncludeStatement: - case TYPEALIAS: - case TYPE: - case TYPES: - case ENUM: - case ANNOTATION: - case AUTOMATON: - case VAR: - case VAL: - case INITSTATE: - case STATE: - case FINISHSTATE: - case SHIFT: - case FUN: - case CONSTRUCTOR: - case DESTRUCTOR: - case PROC: - case AT: - case DEFINE: - case Identifier: - { - setState(760); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_BRACE) { - { - setState(759); - functionBody(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionHeaderContext extends ParserRuleContext { - public IdentifierContext modifier; - public PeriodSeparatedFullNameContext automatonName; - public IdentifierContext functionName; - public TypeIdentifierContext functionType; - public TerminalNode FUN() { return getToken(LibSLParser.FUN, 0); } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public TerminalNode DOT() { return getToken(LibSLParser.DOT, 0); } - public HeaderWithAsteriskContext headerWithAsterisk() { - return getRuleContext(HeaderWithAsteriskContext.class,0); - } - public FunctionDeclArgListContext functionDeclArgList() { - return getRuleContext(FunctionDeclArgListContext.class,0); - } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public FunctionHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionHeader; } - } - - public final FunctionHeaderContext functionHeader() throws RecognitionException { - FunctionHeaderContext _localctx = new FunctionHeaderContext(_ctx, getState()); - enterRule(_localctx, 104, RULE_functionHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(767); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(764); - annotationUsage(); - } - } - setState(769); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(771); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Identifier) { - { - setState(770); - ((FunctionHeaderContext)_localctx).modifier = identifier(); - } - } - - setState(773); - match(FUN); - setState(777); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) { - case 1: - { - setState(774); - ((FunctionHeaderContext)_localctx).automatonName = periodSeparatedFullName(); - setState(775); - match(DOT); - } - break; - } - setState(780); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASTERISK) { - { - setState(779); - headerWithAsterisk(); - } - } - - setState(782); - ((FunctionHeaderContext)_localctx).functionName = identifier(); - setState(783); - match(L_BRACKET); - setState(785); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AT || _la==Identifier) { - { - setState(784); - functionDeclArgList(); - } - } - - setState(787); - match(R_BRACKET); - setState(790); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLON) { - { - setState(788); - match(COLON); - setState(789); - ((FunctionHeaderContext)_localctx).functionType = typeIdentifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionDeclArgListContext extends ParserRuleContext { - public List parameter() { - return getRuleContexts(ParameterContext.class); - } - public ParameterContext parameter(int i) { - return getRuleContext(ParameterContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public FunctionDeclArgListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionDeclArgList; } - } - - public final FunctionDeclArgListContext functionDeclArgList() throws RecognitionException { - FunctionDeclArgListContext _localctx = new FunctionDeclArgListContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_functionDeclArgList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(792); - parameter(); - setState(797); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(793); - match(COMMA); - setState(794); - parameter(); - } - } - setState(799); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ParameterContext extends ParserRuleContext { - public IdentifierContext name; - public TypeIdentifierContext type; - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public List annotationUsage() { - return getRuleContexts(AnnotationUsageContext.class); - } - public AnnotationUsageContext annotationUsage(int i) { - return getRuleContext(AnnotationUsageContext.class,i); - } - public ParameterContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_parameter; } - } - - public final ParameterContext parameter() throws RecognitionException { - ParameterContext _localctx = new ParameterContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_parameter); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(803); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AT) { - { - { - setState(800); - annotationUsage(); - } - } - setState(805); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(806); - ((ParameterContext)_localctx).name = identifier(); - setState(807); - match(COLON); - setState(808); - ((ParameterContext)_localctx).type = typeIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnnotationUsageContext extends ParserRuleContext { - public TerminalNode AT() { return getToken(LibSLParser.AT, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public List annotationArgs() { - return getRuleContexts(AnnotationArgsContext.class); - } - public AnnotationArgsContext annotationArgs(int i) { - return getRuleContext(AnnotationArgsContext.class,i); - } - public AnnotationUsageContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationUsage; } - } - - public final AnnotationUsageContext annotationUsage() throws RecognitionException { - AnnotationUsageContext _localctx = new AnnotationUsageContext(_ctx, getState()); - enterRule(_localctx, 110, RULE_annotationUsage); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(810); - match(AT); - setState(811); - identifier(); - setState(820); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==L_BRACKET) { - { - setState(812); - match(L_BRACKET); - setState(816); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17729895006528L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8129601L) != 0)) { - { - { - setState(813); - annotationArgs(); - } - } - setState(818); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(819); - match(R_BRACKET); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionContractContext extends ParserRuleContext { - public RequiresContractContext requiresContract() { - return getRuleContext(RequiresContractContext.class,0); - } - public EnsuresContractContext ensuresContract() { - return getRuleContext(EnsuresContractContext.class,0); - } - public AssignsContractContext assignsContract() { - return getRuleContext(AssignsContractContext.class,0); - } - public FunctionContractContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionContract; } - } - - public final FunctionContractContext functionContract() throws RecognitionException { - FunctionContractContext _localctx = new FunctionContractContext(_ctx, getState()); - enterRule(_localctx, 112, RULE_functionContract); - try { - setState(825); - _errHandler.sync(this); - switch (_input.LA(1)) { - case REQUIRES: - enterOuterAlt(_localctx, 1); - { - setState(822); - requiresContract(); - } - break; - case ENSURES: - enterOuterAlt(_localctx, 2); - { - setState(823); - ensuresContract(); - } - break; - case ASSIGNS: - enterOuterAlt(_localctx, 3); - { - setState(824); - assignsContract(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionBodyContext extends ParserRuleContext { - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List functionContract() { - return getRuleContexts(FunctionContractContext.class); - } - public FunctionContractContext functionContract(int i) { - return getRuleContext(FunctionContractContext.class,i); - } - public List functionBodyStatement() { - return getRuleContexts(FunctionBodyStatementContext.class); - } - public FunctionBodyStatementContext functionBodyStatement(int i) { - return getRuleContext(FunctionBodyStatementContext.class,i); - } - public FunctionBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionBody; } - } - - public final FunctionBodyContext functionBody() throws RecognitionException { - FunctionBodyContext _localctx = new FunctionBodyContext(_ctx, getState()); - enterRule(_localctx, 114, RULE_functionBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(827); - match(L_BRACE); - setState(831); - _errHandler.sync(this); - _la = _input.LA(1); - while (((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & 7L) != 0)) { - { - { - setState(828); - functionContract(); - } - } - setState(833); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(837); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 6917546757536088384L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8137825L) != 0)) { - { - { - setState(834); - functionBodyStatement(); - } - } - setState(839); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(840); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionBodyStatementContext extends ParserRuleContext { - public VariableAssignmentContext variableAssignment() { - return getRuleContext(VariableAssignmentContext.class,0); - } - public VariableDeclContext variableDecl() { - return getRuleContext(VariableDeclContext.class,0); - } - public IfStatementContext ifStatement() { - return getRuleContext(IfStatementContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public FunctionBodyStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionBodyStatement; } - } - - public final FunctionBodyStatementContext functionBodyStatement() throws RecognitionException { - FunctionBodyStatementContext _localctx = new FunctionBodyStatementContext(_ctx, getState()); - enterRule(_localctx, 116, RULE_functionBodyStatement); - try { - setState(848); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(842); - variableAssignment(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(843); - variableDecl(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(844); - ifStatement(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(845); - expression(0); - setState(846); - match(SEMICOLON); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConditionBodyContext extends ParserRuleContext { - public TerminalNode L_BRACE() { return getToken(LibSLParser.L_BRACE, 0); } - public TerminalNode R_BRACE() { return getToken(LibSLParser.R_BRACE, 0); } - public List functionBodyStatement() { - return getRuleContexts(FunctionBodyStatementContext.class); - } - public FunctionBodyStatementContext functionBodyStatement(int i) { - return getRuleContext(FunctionBodyStatementContext.class,i); - } - public ConditionBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_conditionBody; } - } - - public final ConditionBodyContext conditionBody() throws RecognitionException { - ConditionBodyContext _localctx = new ConditionBodyContext(_ctx, getState()); - enterRule(_localctx, 118, RULE_conditionBody); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(850); - match(L_BRACE); - setState(854); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 6917546757536088384L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8137825L) != 0)) { - { - { - setState(851); - functionBodyStatement(); - } - } - setState(856); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(857); - match(R_BRACE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IfStatementContext extends ParserRuleContext { - public TerminalNode IF() { return getToken(LibSLParser.IF, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public ConditionBodyContext conditionBody() { - return getRuleContext(ConditionBodyContext.class,0); - } - public ElseStatementContext elseStatement() { - return getRuleContext(ElseStatementContext.class,0); - } - public FunctionBodyStatementContext functionBodyStatement() { - return getRuleContext(FunctionBodyStatementContext.class,0); - } - public IfStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_ifStatement; } - } - - public final IfStatementContext ifStatement() throws RecognitionException { - IfStatementContext _localctx = new IfStatementContext(_ctx, getState()); - enterRule(_localctx, 120, RULE_ifStatement); - try { - setState(871); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(859); - match(IF); - setState(860); - expression(0); - setState(861); - conditionBody(); - setState(863); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) { - case 1: - { - setState(862); - elseStatement(); - } - break; - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(865); - match(IF); - setState(866); - expression(0); - setState(867); - functionBodyStatement(); - setState(869); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) { - case 1: - { - setState(868); - elseStatement(); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ElseStatementContext extends ParserRuleContext { - public TerminalNode ELSE() { return getToken(LibSLParser.ELSE, 0); } - public ConditionBodyContext conditionBody() { - return getRuleContext(ConditionBodyContext.class,0); - } - public FunctionBodyStatementContext functionBodyStatement() { - return getRuleContext(FunctionBodyStatementContext.class,0); - } - public ElseStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_elseStatement; } - } - - public final ElseStatementContext elseStatement() throws RecognitionException { - ElseStatementContext _localctx = new ElseStatementContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_elseStatement); - try { - setState(877); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,102,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(873); - match(ELSE); - setState(874); - conditionBody(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(875); - match(ELSE); - setState(876); - functionBodyStatement(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ActionUsageContext extends ParserRuleContext { - public TerminalNode ACTION() { return getToken(LibSLParser.ACTION, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public ExpressionsListContext expressionsList() { - return getRuleContext(ExpressionsListContext.class,0); - } - public ActionUsageContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_actionUsage; } - } - - public final ActionUsageContext actionUsage() throws RecognitionException { - ActionUsageContext _localctx = new ActionUsageContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_actionUsage); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(879); - match(ACTION); - setState(880); - identifier(); - setState(881); - match(L_BRACKET); - setState(883); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17729895006528L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8129601L) != 0)) { - { - setState(882); - expressionsList(); - } - } - - setState(885); - match(R_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ProcUsageContext extends ParserRuleContext { - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public ExpressionsListContext expressionsList() { - return getRuleContext(ExpressionsListContext.class,0); - } - public ProcUsageContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_procUsage; } - } - - public final ProcUsageContext procUsage() throws RecognitionException { - ProcUsageContext _localctx = new ProcUsageContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_procUsage); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(887); - qualifiedAccess(0); - setState(888); - match(L_BRACKET); - setState(890); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17729895006528L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8129601L) != 0)) { - { - setState(889); - expressionsList(); - } - } - - setState(892); - match(R_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionsListContext extends ParserRuleContext { - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public ExpressionsListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expressionsList; } - } - - public final ExpressionsListContext expressionsList() throws RecognitionException { - ExpressionsListContext _localctx = new ExpressionsListContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_expressionsList); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(894); - expression(0); - setState(899); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,105,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(895); - match(COMMA); - setState(896); - expression(0); - } - } - } - setState(901); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,105,_ctx); - } - setState(903); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(902); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnnotationArgsContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public ArgNameContext argName() { - return getRuleContext(ArgNameContext.class,0); - } - public TerminalNode COMMA() { return getToken(LibSLParser.COMMA, 0); } - public AnnotationArgsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_annotationArgs; } - } - - public final AnnotationArgsContext annotationArgs() throws RecognitionException { - AnnotationArgsContext _localctx = new AnnotationArgsContext(_ctx, getState()); - enterRule(_localctx, 130, RULE_annotationArgs); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(906); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) { - case 1: - { - setState(905); - argName(); - } - break; - } - setState(908); - expression(0); - setState(910); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(909); - match(COMMA); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArgNameContext extends ParserRuleContext { - public IdentifierContext name; - public TerminalNode ASSIGN_OP() { return getToken(LibSLParser.ASSIGN_OP, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ArgNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_argName; } - } - - public final ArgNameContext argName() throws RecognitionException { - ArgNameContext _localctx = new ArgNameContext(_ctx, getState()); - enterRule(_localctx, 132, RULE_argName); - try { - enterOuterAlt(_localctx, 1); - { - setState(912); - ((ArgNameContext)_localctx).name = identifier(); - setState(913); - match(ASSIGN_OP); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RequiresContractContext extends ParserRuleContext { - public IdentifierContext name; - public TerminalNode REQUIRES() { return getToken(LibSLParser.REQUIRES, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public RequiresContractContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_requiresContract; } - } - - public final RequiresContractContext requiresContract() throws RecognitionException { - RequiresContractContext _localctx = new RequiresContractContext(_ctx, getState()); - enterRule(_localctx, 134, RULE_requiresContract); - try { - enterOuterAlt(_localctx, 1); - { - setState(915); - match(REQUIRES); - setState(919); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) { - case 1: - { - setState(916); - ((RequiresContractContext)_localctx).name = identifier(); - setState(917); - match(COLON); - } - break; - } - setState(921); - expression(0); - setState(922); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnsuresContractContext extends ParserRuleContext { - public IdentifierContext name; - public TerminalNode ENSURES() { return getToken(LibSLParser.ENSURES, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public EnsuresContractContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_ensuresContract; } - } - - public final EnsuresContractContext ensuresContract() throws RecognitionException { - EnsuresContractContext _localctx = new EnsuresContractContext(_ctx, getState()); - enterRule(_localctx, 136, RULE_ensuresContract); - try { - enterOuterAlt(_localctx, 1); - { - setState(924); - match(ENSURES); - setState(928); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) { - case 1: - { - setState(925); - ((EnsuresContractContext)_localctx).name = identifier(); - setState(926); - match(COLON); - } - break; - } - setState(930); - expression(0); - setState(931); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AssignsContractContext extends ParserRuleContext { - public IdentifierContext name; - public TerminalNode ASSIGNS() { return getToken(LibSLParser.ASSIGNS, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode SEMICOLON() { return getToken(LibSLParser.SEMICOLON, 0); } - public TerminalNode COLON() { return getToken(LibSLParser.COLON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AssignsContractContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignsContract; } - } - - public final AssignsContractContext assignsContract() throws RecognitionException { - AssignsContractContext _localctx = new AssignsContractContext(_ctx, getState()); - enterRule(_localctx, 138, RULE_assignsContract); - try { - enterOuterAlt(_localctx, 1); - { - setState(933); - match(ASSIGNS); - setState(937); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) { - case 1: - { - setState(934); - ((AssignsContractContext)_localctx).name = identifier(); - setState(935); - match(COLON); - } - break; - } - setState(939); - expression(0); - setState(940); - match(SEMICOLON); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionContext extends ParserRuleContext { - public Token apostrophe; - public Token lbracket; - public Token rbracket; - public Token unaryOp; - public Token op; - public Token typeOp; - public ExpressionAtomicContext expressionAtomic() { - return getRuleContext(ExpressionAtomicContext.class,0); - } - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public TerminalNode APOSTROPHE() { return getToken(LibSLParser.APOSTROPHE, 0); } - public ProcUsageContext procUsage() { - return getRuleContext(ProcUsageContext.class,0); - } - public ActionUsageContext actionUsage() { - return getRuleContext(ActionUsageContext.class,0); - } - public CallAutomatonConstructorWithNamedArgsContext callAutomatonConstructorWithNamedArgs() { - return getRuleContext(CallAutomatonConstructorWithNamedArgsContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public HasAutomatonConceptContext hasAutomatonConcept() { - return getRuleContext(HasAutomatonConceptContext.class,0); - } - public TerminalNode PLUS() { return getToken(LibSLParser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(LibSLParser.MINUS, 0); } - public TerminalNode TILDE() { return getToken(LibSLParser.TILDE, 0); } - public TerminalNode EXCLAMATION() { return getToken(LibSLParser.EXCLAMATION, 0); } - public TerminalNode ASTERISK() { return getToken(LibSLParser.ASTERISK, 0); } - public TerminalNode SLASH() { return getToken(LibSLParser.SLASH, 0); } - public TerminalNode PERCENT() { return getToken(LibSLParser.PERCENT, 0); } - public BitShiftOpContext bitShiftOp() { - return getRuleContext(BitShiftOpContext.class,0); - } - public TerminalNode L_ARROW() { return getToken(LibSLParser.L_ARROW, 0); } - public TerminalNode R_ARROW() { return getToken(LibSLParser.R_ARROW, 0); } - public TerminalNode L_ARROW_EQ() { return getToken(LibSLParser.L_ARROW_EQ, 0); } - public TerminalNode R_ARROW_EQ() { return getToken(LibSLParser.R_ARROW_EQ, 0); } - public TerminalNode EQ() { return getToken(LibSLParser.EQ, 0); } - public TerminalNode EXCLAMATION_EQ() { return getToken(LibSLParser.EXCLAMATION_EQ, 0); } - public TerminalNode BIT_OR() { return getToken(LibSLParser.BIT_OR, 0); } - public TerminalNode XOR() { return getToken(LibSLParser.XOR, 0); } - public TerminalNode AMPERSAND() { return getToken(LibSLParser.AMPERSAND, 0); } - public TerminalNode LOGIC_OR() { return getToken(LibSLParser.LOGIC_OR, 0); } - public TerminalNode DOUBLE_AMPERSAND() { return getToken(LibSLParser.DOUBLE_AMPERSAND, 0); } - public TypeIdentifierContext typeIdentifier() { - return getRuleContext(TypeIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(LibSLParser.AS, 0); } - public TerminalNode IS() { return getToken(LibSLParser.IS, 0); } - public ExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expression; } - } - - public final ExpressionContext expression() throws RecognitionException { - return expression(0); - } - - private ExpressionContext expression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); - ExpressionContext _prevctx = _localctx; - int _startState = 140; - enterRecursionRule(_localctx, 140, RULE_expression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(958); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { - case 1: - { - setState(943); - expressionAtomic(); - } - break; - case 2: - { - setState(944); - qualifiedAccess(0); - setState(945); - ((ExpressionContext)_localctx).apostrophe = match(APOSTROPHE); - } - break; - case 3: - { - setState(947); - qualifiedAccess(0); - } - break; - case 4: - { - setState(948); - procUsage(); - } - break; - case 5: - { - setState(949); - actionUsage(); - } - break; - case 6: - { - setState(950); - callAutomatonConstructorWithNamedArgs(); - } - break; - case 7: - { - setState(951); - ((ExpressionContext)_localctx).lbracket = match(L_BRACKET); - setState(952); - expression(0); - setState(953); - ((ExpressionContext)_localctx).rbracket = match(R_BRACKET); - } - break; - case 8: - { - setState(955); - hasAutomatonConcept(); - } - break; - case 9: - { - setState(956); - ((ExpressionContext)_localctx).unaryOp = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 137708961792L) != 0)) ) { - ((ExpressionContext)_localctx).unaryOp = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(957); - expression(13); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(999); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,114,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(997); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { - case 1: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(960); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); - setState(961); - ((ExpressionContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 458752L) != 0)) ) { - ((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(962); - expression(12); - } - break; - case 2: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(963); - if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); - setState(964); - ((ExpressionContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - ((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(965); - expression(11); - } - break; - case 3: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(966); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(967); - bitShiftOp(); - setState(968); - expression(10); - } - break; - case 4: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(970); - if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(971); - ((ExpressionContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 3221274624L) != 0)) ) { - ((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(972); - expression(9); - } - break; - case 5: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(973); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(974); - ((ExpressionContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==EQ || _la==EXCLAMATION_EQ) ) { - ((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(975); - expression(7); - } - break; - case 6: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(976); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(977); - ((ExpressionContext)_localctx).op = match(BIT_OR); - setState(978); - expression(6); - } - break; - case 7: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(979); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(980); - ((ExpressionContext)_localctx).op = match(XOR); - setState(981); - expression(5); - } - break; - case 8: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(982); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(983); - ((ExpressionContext)_localctx).op = match(AMPERSAND); - setState(984); - expression(4); - } - break; - case 9: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(985); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(986); - ((ExpressionContext)_localctx).op = match(LOGIC_OR); - setState(987); - expression(3); - } - break; - case 10: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(988); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(989); - ((ExpressionContext)_localctx).op = match(DOUBLE_AMPERSAND); - setState(990); - expression(2); - } - break; - case 11: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(991); - if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); - setState(992); - ((ExpressionContext)_localctx).typeOp = match(AS); - setState(993); - typeIdentifier(); - } - break; - case 12: - { - _localctx = new ExpressionContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(994); - if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(995); - ((ExpressionContext)_localctx).typeOp = match(IS); - setState(996); - typeIdentifier(); - } - break; - } - } - } - setState(1001); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,114,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HasAutomatonConceptContext extends ParserRuleContext { - public IdentifierContext has; - public IdentifierContext name; - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public HasAutomatonConceptContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_hasAutomatonConcept; } - } - - public final HasAutomatonConceptContext hasAutomatonConcept() throws RecognitionException { - HasAutomatonConceptContext _localctx = new HasAutomatonConceptContext(_ctx, getState()); - enterRule(_localctx, 142, RULE_hasAutomatonConcept); - try { - enterOuterAlt(_localctx, 1); - { - setState(1002); - qualifiedAccess(0); - setState(1003); - ((HasAutomatonConceptContext)_localctx).has = identifier(); - setState(1004); - ((HasAutomatonConceptContext)_localctx).name = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BitShiftOpContext extends ParserRuleContext { - public LShiftContext lShift() { - return getRuleContext(LShiftContext.class,0); - } - public RShiftContext rShift() { - return getRuleContext(RShiftContext.class,0); - } - public URShiftContext uRShift() { - return getRuleContext(URShiftContext.class,0); - } - public ULShiftContext uLShift() { - return getRuleContext(ULShiftContext.class,0); - } - public BitShiftOpContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_bitShiftOp; } - } - - public final BitShiftOpContext bitShiftOp() throws RecognitionException { - BitShiftOpContext _localctx = new BitShiftOpContext(_ctx, getState()); - enterRule(_localctx, 144, RULE_bitShiftOp); - try { - setState(1010); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1006); - lShift(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1007); - rShift(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1008); - uRShift(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1009); - uLShift(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LShiftContext extends ParserRuleContext { - public List L_ARROW() { return getTokens(LibSLParser.L_ARROW); } - public TerminalNode L_ARROW(int i) { - return getToken(LibSLParser.L_ARROW, i); - } - public LShiftContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lShift; } - } - - public final LShiftContext lShift() throws RecognitionException { - LShiftContext _localctx = new LShiftContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_lShift); - try { - enterOuterAlt(_localctx, 1); - { - setState(1012); - match(L_ARROW); - setState(1013); - match(L_ARROW); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RShiftContext extends ParserRuleContext { - public List R_ARROW() { return getTokens(LibSLParser.R_ARROW); } - public TerminalNode R_ARROW(int i) { - return getToken(LibSLParser.R_ARROW, i); - } - public RShiftContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rShift; } - } - - public final RShiftContext rShift() throws RecognitionException { - RShiftContext _localctx = new RShiftContext(_ctx, getState()); - enterRule(_localctx, 148, RULE_rShift); - try { - enterOuterAlt(_localctx, 1); - { - setState(1015); - match(R_ARROW); - setState(1016); - match(R_ARROW); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class URShiftContext extends ParserRuleContext { - public List R_ARROW() { return getTokens(LibSLParser.R_ARROW); } - public TerminalNode R_ARROW(int i) { - return getToken(LibSLParser.R_ARROW, i); - } - public URShiftContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_uRShift; } - } - - public final URShiftContext uRShift() throws RecognitionException { - URShiftContext _localctx = new URShiftContext(_ctx, getState()); - enterRule(_localctx, 150, RULE_uRShift); - try { - enterOuterAlt(_localctx, 1); - { - setState(1018); - match(R_ARROW); - setState(1019); - match(R_ARROW); - setState(1020); - match(R_ARROW); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ULShiftContext extends ParserRuleContext { - public List L_ARROW() { return getTokens(LibSLParser.L_ARROW); } - public TerminalNode L_ARROW(int i) { - return getToken(LibSLParser.L_ARROW, i); - } - public ULShiftContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_uLShift; } - } - - public final ULShiftContext uLShift() throws RecognitionException { - ULShiftContext _localctx = new ULShiftContext(_ctx, getState()); - enterRule(_localctx, 152, RULE_uLShift); - try { - enterOuterAlt(_localctx, 1); - { - setState(1022); - match(L_ARROW); - setState(1023); - match(L_ARROW); - setState(1024); - match(L_ARROW); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionAtomicContext extends ParserRuleContext { - public PrimitiveLiteralContext primitiveLiteral() { - return getRuleContext(PrimitiveLiteralContext.class,0); - } - public ArrayLiteralContext arrayLiteral() { - return getRuleContext(ArrayLiteralContext.class,0); - } - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public ExpressionAtomicContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expressionAtomic; } - } - - public final ExpressionAtomicContext expressionAtomic() throws RecognitionException { - ExpressionAtomicContext _localctx = new ExpressionAtomicContext(_ctx, getState()); - enterRule(_localctx, 154, RULE_expressionAtomic); - try { - setState(1029); - _errHandler.sync(this); - switch (_input.LA(1)) { - case MINUS: - case TRUE: - case FALSE: - case NULL: - case DoubleQuotedString: - case CHARACTER: - case Digit: - enterOuterAlt(_localctx, 1); - { - setState(1026); - primitiveLiteral(); - } - break; - case L_SQUARE_BRACKET: - enterOuterAlt(_localctx, 2); - { - setState(1027); - arrayLiteral(); - } - break; - case BACK_QOUTE: - case Identifier: - enterOuterAlt(_localctx, 3); - { - setState(1028); - qualifiedAccess(0); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrimitiveLiteralContext extends ParserRuleContext { - public Token bool; - public Token nullLiteral; - public IntegerNumberContext integerNumber() { - return getRuleContext(IntegerNumberContext.class,0); - } - public FloatNumberContext floatNumber() { - return getRuleContext(FloatNumberContext.class,0); - } - public TerminalNode DoubleQuotedString() { return getToken(LibSLParser.DoubleQuotedString, 0); } - public TerminalNode CHARACTER() { return getToken(LibSLParser.CHARACTER, 0); } - public TerminalNode TRUE() { return getToken(LibSLParser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(LibSLParser.FALSE, 0); } - public TerminalNode NULL() { return getToken(LibSLParser.NULL, 0); } - public PrimitiveLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_primitiveLiteral; } - } - - public final PrimitiveLiteralContext primitiveLiteral() throws RecognitionException { - PrimitiveLiteralContext _localctx = new PrimitiveLiteralContext(_ctx, getState()); - enterRule(_localctx, 156, RULE_primitiveLiteral); - int _la; - try { - setState(1037); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1031); - integerNumber(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1032); - floatNumber(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1033); - match(DoubleQuotedString); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1034); - match(CHARACTER); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(1035); - ((PrimitiveLiteralContext)_localctx).bool = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==TRUE || _la==FALSE) ) { - ((PrimitiveLiteralContext)_localctx).bool = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(1036); - ((PrimitiveLiteralContext)_localctx).nullLiteral = match(NULL); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QualifiedAccessContext extends ParserRuleContext { - public PeriodSeparatedFullNameContext periodSeparatedFullName() { - return getRuleContext(PeriodSeparatedFullNameContext.class,0); - } - public SimpleCallContext simpleCall() { - return getRuleContext(SimpleCallContext.class,0); - } - public TerminalNode DOT() { return getToken(LibSLParser.DOT, 0); } - public List qualifiedAccess() { - return getRuleContexts(QualifiedAccessContext.class); - } - public QualifiedAccessContext qualifiedAccess(int i) { - return getRuleContext(QualifiedAccessContext.class,i); - } - public ProcUsageContext procUsage() { - return getRuleContext(ProcUsageContext.class,0); - } - public TerminalNode L_SQUARE_BRACKET() { return getToken(LibSLParser.L_SQUARE_BRACKET, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode R_SQUARE_BRACKET() { return getToken(LibSLParser.R_SQUARE_BRACKET, 0); } - public QualifiedAccessContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedAccess; } - } - - public final QualifiedAccessContext qualifiedAccess() throws RecognitionException { - return qualifiedAccess(0); - } - - private QualifiedAccessContext qualifiedAccess(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - QualifiedAccessContext _localctx = new QualifiedAccessContext(_ctx, _parentState); - QualifiedAccessContext _prevctx = _localctx; - int _startState = 158; - enterRecursionRule(_localctx, 158, RULE_qualifiedAccess, _p); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1049); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) { - case 1: - { - setState(1040); - periodSeparatedFullName(); - } - break; - case 2: - { - setState(1041); - simpleCall(); - setState(1042); - match(DOT); - setState(1043); - qualifiedAccess(2); - } - break; - case 3: - { - setState(1045); - simpleCall(); - setState(1046); - match(DOT); - setState(1047); - procUsage(); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(1061); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,120,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - { - _localctx = new QualifiedAccessContext(_parentctx, _parentState); - pushNewRecursionContext(_localctx, _startState, RULE_qualifiedAccess); - setState(1051); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1052); - match(L_SQUARE_BRACKET); - setState(1053); - expression(0); - setState(1054); - match(R_SQUARE_BRACKET); - setState(1057); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) { - case 1: - { - setState(1055); - match(DOT); - setState(1056); - qualifiedAccess(0); - } - break; - } - } - } - } - setState(1063); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,120,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SimpleCallContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode L_BRACKET() { return getToken(LibSLParser.L_BRACKET, 0); } - public QualifiedAccessContext qualifiedAccess() { - return getRuleContext(QualifiedAccessContext.class,0); - } - public TerminalNode R_BRACKET() { return getToken(LibSLParser.R_BRACKET, 0); } - public SimpleCallContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_simpleCall; } - } - - public final SimpleCallContext simpleCall() throws RecognitionException { - SimpleCallContext _localctx = new SimpleCallContext(_ctx, getState()); - enterRule(_localctx, 160, RULE_simpleCall); - try { - enterOuterAlt(_localctx, 1); - { - setState(1064); - identifier(); - setState(1065); - match(L_BRACKET); - setState(1066); - qualifiedAccess(0); - setState(1067); - match(R_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierListContext extends ParserRuleContext { - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List COMMA() { return getTokens(LibSLParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(LibSLParser.COMMA, i); - } - public IdentifierListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierList; } - } - - public final IdentifierListContext identifierList() throws RecognitionException { - IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); - enterRule(_localctx, 162, RULE_identifierList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1069); - identifier(); - setState(1074); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1070); - match(COMMA); - setState(1071); - identifier(); - } - } - setState(1076); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArrayLiteralContext extends ParserRuleContext { - public TerminalNode L_SQUARE_BRACKET() { return getToken(LibSLParser.L_SQUARE_BRACKET, 0); } - public TerminalNode R_SQUARE_BRACKET() { return getToken(LibSLParser.R_SQUARE_BRACKET, 0); } - public ExpressionsListContext expressionsList() { - return getRuleContext(ExpressionsListContext.class,0); - } - public ArrayLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrayLiteral; } - } - - public final ArrayLiteralContext arrayLiteral() throws RecognitionException { - ArrayLiteralContext _localctx = new ArrayLiteralContext(_ctx, getState()); - enterRule(_localctx, 164, RULE_arrayLiteral); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1077); - match(L_SQUARE_BRACKET); - setState(1079); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17729895006528L) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & 8129601L) != 0)) { - { - setState(1078); - expressionsList(); - } - } - - setState(1081); - match(R_SQUARE_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PeriodSeparatedFullNameContext extends ParserRuleContext { - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List DOT() { return getTokens(LibSLParser.DOT); } - public TerminalNode DOT(int i) { - return getToken(LibSLParser.DOT, i); - } - public List BACK_QOUTE() { return getTokens(LibSLParser.BACK_QOUTE); } - public TerminalNode BACK_QOUTE(int i) { - return getToken(LibSLParser.BACK_QOUTE, i); - } - public PeriodSeparatedFullNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_periodSeparatedFullName; } - } - - public final PeriodSeparatedFullNameContext periodSeparatedFullName() throws RecognitionException { - PeriodSeparatedFullNameContext _localctx = new PeriodSeparatedFullNameContext(_ctx, getState()); - enterRule(_localctx, 166, RULE_periodSeparatedFullName); - int _la; - try { - int _alt; - setState(1103); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1083); - identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1084); - identifier(); - setState(1089); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,123,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1085); - match(DOT); - setState(1086); - identifier(); - } - } - } - setState(1091); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,123,_ctx); - } - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1092); - match(BACK_QOUTE); - setState(1093); - identifier(); - setState(1098); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==DOT) { - { - { - setState(1094); - match(DOT); - setState(1095); - identifier(); - } - } - setState(1100); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1101); - match(BACK_QOUTE); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IntegerNumberContext extends ParserRuleContext { - public TerminalNode MINUS() { return getToken(LibSLParser.MINUS, 0); } - public List Digit() { return getTokens(LibSLParser.Digit); } - public TerminalNode Digit(int i) { - return getToken(LibSLParser.Digit, i); - } - public TerminalNode Identifier() { return getToken(LibSLParser.Identifier, 0); } - public IntegerNumberContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_integerNumber; } - } - - public final IntegerNumberContext integerNumber() throws RecognitionException { - IntegerNumberContext _localctx = new IntegerNumberContext(_ctx, getState()); - enterRule(_localctx, 168, RULE_integerNumber); - int _la; - try { - int _alt; - setState(1120); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1106); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(1105); - match(MINUS); - } - } - - setState(1109); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(1108); - match(Digit); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1111); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,127,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - setState(1114); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,128,_ctx) ) { - case 1: - { - setState(1113); - match(Identifier); - } - break; - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1116); - match(Digit); - setState(1118); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) { - case 1: - { - setState(1117); - match(Identifier); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FloatNumberContext extends ParserRuleContext { - public TerminalNode DOT() { return getToken(LibSLParser.DOT, 0); } - public TerminalNode MINUS() { return getToken(LibSLParser.MINUS, 0); } - public List Digit() { return getTokens(LibSLParser.Digit); } - public TerminalNode Digit(int i) { - return getToken(LibSLParser.Digit, i); - } - public TerminalNode Identifier() { return getToken(LibSLParser.Identifier, 0); } - public FloatNumberContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_floatNumber; } - } - - public final FloatNumberContext floatNumber() throws RecognitionException { - FloatNumberContext _localctx = new FloatNumberContext(_ctx, getState()); - enterRule(_localctx, 170, RULE_floatNumber); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1123); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(1122); - match(MINUS); - } - } - - setState(1126); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(1125); - match(Digit); - } - } - setState(1128); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==Digit ); - setState(1130); - match(DOT); - setState(1132); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(1131); - match(Digit); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1134); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,133,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - setState(1137); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) { - case 1: - { - setState(1136); - match(Identifier); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(LibSLParser.Identifier, 0); } - public IdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifier; } - } - - public final IdentifierContext identifier() throws RecognitionException { - IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); - enterRule(_localctx, 172, RULE_identifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(1139); - match(Identifier); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 70: - return expression_sempred((ExpressionContext)_localctx, predIndex); - case 79: - return qualifiedAccess_sempred((QualifiedAccessContext)_localctx, predIndex); - } - return true; - } - private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return precpred(_ctx, 11); - case 1: - return precpred(_ctx, 10); - case 2: - return precpred(_ctx, 9); - case 3: - return precpred(_ctx, 8); - case 4: - return precpred(_ctx, 6); - case 5: - return precpred(_ctx, 5); - case 6: - return precpred(_ctx, 4); - case 7: - return precpred(_ctx, 3); - case 8: - return precpred(_ctx, 2); - case 9: - return precpred(_ctx, 1); - case 10: - return precpred(_ctx, 12); - case 11: - return precpred(_ctx, 7); - } - return true; - } - private boolean qualifiedAccess_sempred(QualifiedAccessContext _localctx, int predIndex) { - switch (predIndex) { - case 12: - return precpred(_ctx, 3); - } - return true; - } - - public static final String _serializedATN = - "\u0004\u0001_\u0476\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ - "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ - "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ - "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ - "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ - "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+ - "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+ - "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+ - "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+ - "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+ - "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+ - "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+ - "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+ - "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+ - "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+ - "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+ - "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+ - "A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+ - "F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+ - "K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+ - "P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002"+ - "U\u0007U\u0002V\u0007V\u0001\u0000\u0003\u0000\u00b0\b\u0000\u0001\u0000"+ - "\u0005\u0000\u00b3\b\u0000\n\u0000\f\u0000\u00b6\t\u0000\u0001\u0000\u0001"+ - "\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ - "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001\u00c3\b\u0001\u0001"+ - "\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u00c8\b\u0002\u0001\u0003\u0001"+ - "\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+ - "\u0003\u0001\u0003\u0003\u0003\u00d3\b\u0003\u0001\u0003\u0001\u0003\u0003"+ - "\u0003\u00d7\b\u0003\u0001\u0003\u0001\u0003\u0003\u0003\u00db\b\u0003"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0005\u0004\u00e0\b\u0004\n\u0004"+ - "\f\u0004\u00e3\t\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0001\u0004\u0001\u0005\u0005\u0005\u00ec\b\u0005\n\u0005"+ - "\f\u0005\u00ef\t\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ - "\u00f4\b\u0005\u0001\u0005\u0003\u0005\u00f7\b\u0005\u0001\u0005\u0003"+ - "\u0005\u00fa\b\u0005\u0001\u0006\u0001\u0006\u0003\u0006\u00fe\b\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0005\u0007\u0106\b\u0007\n\u0007\f\u0007\u0109\t\u0007\u0001\b\u0001"+ - "\b\u0003\b\u010d\b\b\u0001\t\u0001\t\u0005\t\u0111\b\t\n\t\f\t\u0114\t"+ - "\t\u0001\t\u0001\t\u0001\n\u0005\n\u0119\b\n\n\n\f\n\u011c\t\n\u0001\n"+ - "\u0001\n\u0001\n\u0001\n\u0005\n\u0122\b\n\n\n\f\n\u0125\t\n\u0001\n\u0001"+ - "\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f"+ - "\u0001\f\u0001\f\u0005\f\u0131\b\f\n\f\f\f\u0134\t\f\u0001\f\u0001\f\u0001"+ - "\r\u0001\r\u0003\r\u013a\b\r\u0001\u000e\u0005\u000e\u013d\b\u000e\n\u000e"+ - "\f\u000e\u0140\t\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+ - "\u0001\u000e\u0001\u000e\u0001\u000f\u0005\u000f\u0149\b\u000f\n\u000f"+ - "\f\u000f\u014c\t\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0004\u000f\u0154\b\u000f\u000b\u000f\f\u000f"+ - "\u0155\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+ - "\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0003"+ - "\u0011\u0163\b\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0005\u0012\u016b\b\u0012\n\u0012\f\u0012\u016e\t\u0012"+ - "\u0001\u0012\u0003\u0012\u0171\b\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+ - "\u0003\u0013\u0176\b\u0013\u0001\u0014\u0005\u0014\u0179\b\u0014\n\u0014"+ - "\f\u0014\u017c\t\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0003\u0014\u0183\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0003\u0014\u0188\b\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0005\u0015\u018f\b\u0015\n\u0015\f\u0015\u0192\t\u0015\u0001"+ - "\u0015\u0003\u0015\u0195\b\u0015\u0001\u0016\u0005\u0016\u0198\b\u0016"+ - "\n\u0016\f\u0016\u019b\t\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ - "\u0016\u0001\u0017\u0005\u0017\u01a2\b\u0017\n\u0017\f\u0017\u01a5\t\u0017"+ - "\u0001\u0017\u0001\u0017\u0003\u0017\u01a9\b\u0017\u0001\u0017\u0001\u0017"+ - "\u0001\u0017\u0005\u0017\u01ae\b\u0017\n\u0017\f\u0017\u01b1\t\u0017\u0001"+ - "\u0017\u0003\u0017\u01b4\b\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0005"+ - "\u0017\u01b9\b\u0017\n\u0017\f\u0017\u01bc\t\u0017\u0001\u0017\u0001\u0017"+ - "\u0001\u0018\u0001\u0018\u0005\u0018\u01c2\b\u0018\n\u0018\f\u0018\u01c5"+ - "\t\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0005\u0019\u01ca\b\u0019"+ - "\n\u0019\f\u0019\u01cd\t\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003"+ - "\u0019\u01d2\b\u0019\u0001\u0019\u0005\u0019\u01d5\b\u0019\n\u0019\f\u0019"+ - "\u01d8\t\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ - "\u0003\u0019\u01df\b\u0019\u0003\u0019\u01e1\b\u0019\u0001\u001a\u0001"+ - "\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0003"+ - "\u001a\u01ea\b\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0005"+ - "\u001b\u01f0\b\u001b\n\u001b\f\u001b\u01f3\t\u001b\u0001\u001c\u0001\u001c"+ - "\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0003\u001e\u021b\b\u001e\u0001\u001f\u0001\u001f\u0003\u001f\u021f\b"+ - "\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001!\u0001"+ - "!\u0001!\u0005!\u022a\b!\n!\f!\u022d\t!\u0001!\u0003!\u0230\b!\u0001\""+ - "\u0001\"\u0001\"\u0003\"\u0235\b\"\u0001\"\u0001\"\u0005\"\u0239\b\"\n"+ - "\"\f\"\u023c\t\"\u0001\"\u0003\"\u023f\b\"\u0001#\u0005#\u0242\b#\n#\f"+ - "#\u0245\t#\u0001#\u0001#\u0001#\u0001#\u0001#\u0005#\u024c\b#\n#\f#\u024f"+ - "\t#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0003#\u0257\b#\u0001$\u0001"+ - "$\u0001$\u0001$\u0001%\u0003%\u025e\b%\u0001%\u0001%\u0003%\u0262\b%\u0001"+ - "&\u0001&\u0001&\u0001&\u0005&\u0268\b&\n&\f&\u026b\t&\u0001&\u0001&\u0001"+ - "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+ - "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+ - "\'\u0001\'\u0003\'\u0283\b\'\u0001(\u0001(\u0003(\u0287\b(\u0001)\u0001"+ - ")\u0001)\u0001)\u0003)\u028d\b)\u0001)\u0001)\u0001*\u0001*\u0001*\u0005"+ - "*\u0294\b*\n*\f*\u0297\t*\u0001*\u0003*\u029a\b*\u0001+\u0001+\u0001+"+ - "\u0001+\u0001+\u0001+\u0003+\u02a2\b+\u0001,\u0001,\u0001,\u0001-\u0001"+ - "-\u0001-\u0003-\u02aa\b-\u0001.\u0005.\u02ad\b.\n.\f.\u02b0\t.\u0001."+ - "\u0001.\u0003.\u02b4\b.\u0001.\u0003.\u02b7\b.\u0001.\u0001.\u0003.\u02bb"+ - "\b.\u0001.\u0001.\u0001.\u0003.\u02c0\b.\u0001/\u0001/\u0001/\u0003/\u02c5"+ - "\b/\u00010\u00050\u02c8\b0\n0\f0\u02cb\t0\u00010\u00010\u00030\u02cf\b"+ - "0\u00010\u00030\u02d2\b0\u00010\u00010\u00030\u02d6\b0\u00010\u00010\u0001"+ - "0\u00030\u02db\b0\u00011\u00011\u00011\u00031\u02e0\b1\u00012\u00052\u02e3"+ - "\b2\n2\f2\u02e6\t2\u00012\u00012\u00032\u02ea\b2\u00012\u00012\u00012"+ - "\u00032\u02ef\b2\u00012\u00012\u00012\u00032\u02f4\b2\u00013\u00013\u0001"+ - "3\u00033\u02f9\b3\u00033\u02fb\b3\u00014\u00054\u02fe\b4\n4\f4\u0301\t"+ - "4\u00014\u00034\u0304\b4\u00014\u00014\u00014\u00014\u00034\u030a\b4\u0001"+ - "4\u00034\u030d\b4\u00014\u00014\u00014\u00034\u0312\b4\u00014\u00014\u0001"+ - "4\u00034\u0317\b4\u00015\u00015\u00015\u00055\u031c\b5\n5\f5\u031f\t5"+ - "\u00016\u00056\u0322\b6\n6\f6\u0325\t6\u00016\u00016\u00016\u00016\u0001"+ - "7\u00017\u00017\u00017\u00057\u032f\b7\n7\f7\u0332\t7\u00017\u00037\u0335"+ - "\b7\u00018\u00018\u00018\u00038\u033a\b8\u00019\u00019\u00059\u033e\b"+ - "9\n9\f9\u0341\t9\u00019\u00059\u0344\b9\n9\f9\u0347\t9\u00019\u00019\u0001"+ - ":\u0001:\u0001:\u0001:\u0001:\u0001:\u0003:\u0351\b:\u0001;\u0001;\u0005"+ - ";\u0355\b;\n;\f;\u0358\t;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0003"+ - "<\u0360\b<\u0001<\u0001<\u0001<\u0001<\u0003<\u0366\b<\u0003<\u0368\b"+ - "<\u0001=\u0001=\u0001=\u0001=\u0003=\u036e\b=\u0001>\u0001>\u0001>\u0001"+ - ">\u0003>\u0374\b>\u0001>\u0001>\u0001?\u0001?\u0001?\u0003?\u037b\b?\u0001"+ - "?\u0001?\u0001@\u0001@\u0001@\u0005@\u0382\b@\n@\f@\u0385\t@\u0001@\u0003"+ - "@\u0388\b@\u0001A\u0003A\u038b\bA\u0001A\u0001A\u0003A\u038f\bA\u0001"+ - "B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001C\u0003C\u0398\bC\u0001C\u0001"+ - "C\u0001C\u0001D\u0001D\u0001D\u0001D\u0003D\u03a1\bD\u0001D\u0001D\u0001"+ - "D\u0001E\u0001E\u0001E\u0001E\u0003E\u03aa\bE\u0001E\u0001E\u0001E\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0003F\u03bf\bF\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0005F\u03e6\bF\nF\fF\u03e9\tF\u0001G\u0001"+ - "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0003H\u03f3\bH\u0001I\u0001"+ - "I\u0001I\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001L\u0001"+ - "L\u0001L\u0001L\u0001M\u0001M\u0001M\u0003M\u0406\bM\u0001N\u0001N\u0001"+ - "N\u0001N\u0001N\u0001N\u0003N\u040e\bN\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0003O\u041a\bO\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0003O\u0422\bO\u0005O\u0424\bO\nO\fO\u0427\tO"+ - "\u0001P\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0005Q\u0431"+ - "\bQ\nQ\fQ\u0434\tQ\u0001R\u0001R\u0003R\u0438\bR\u0001R\u0001R\u0001S"+ - "\u0001S\u0001S\u0001S\u0005S\u0440\bS\nS\fS\u0443\tS\u0001S\u0001S\u0001"+ - "S\u0001S\u0005S\u0449\bS\nS\fS\u044c\tS\u0001S\u0001S\u0003S\u0450\bS"+ - "\u0001T\u0003T\u0453\bT\u0001T\u0004T\u0456\bT\u000bT\fT\u0457\u0001T"+ - "\u0003T\u045b\bT\u0001T\u0001T\u0003T\u045f\bT\u0003T\u0461\bT\u0001U"+ - "\u0003U\u0464\bU\u0001U\u0004U\u0467\bU\u000bU\fU\u0468\u0001U\u0001U"+ - "\u0004U\u046d\bU\u000bU\fU\u046e\u0001U\u0003U\u0472\bU\u0001V\u0001V"+ - "\u0001V\u0000\u0002\u008c\u009eW\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010"+ - "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPR"+ - "TVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e"+ - "\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6"+ - "\u00a8\u00aa\u00ac\u0000\u000b\u0001\u0000=>\u0001\u0000?A\u0001\u0000"+ - "\u0017\u001b\u0001\u0000&(\u0001\u0000)*\u0003\u0000\u0013\u0014\u001c"+ - "\u001c%%\u0001\u0000\u0010\u0012\u0001\u0000\u0013\u0014\u0002\u0000\u000e"+ - "\u000f\u001e\u001f\u0002\u0000\u0003\u0003\u001d\u001d\u0001\u0000MN\u04d4"+ - "\u0000\u00af\u0001\u0000\u0000\u0000\u0002\u00c2\u0001\u0000\u0000\u0000"+ - "\u0004\u00c7\u0001\u0000\u0000\u0000\u0006\u00c9\u0001\u0000\u0000\u0000"+ - "\b\u00e1\u0001\u0000\u0000\u0000\n\u00ed\u0001\u0000\u0000\u0000\f\u00fd"+ - "\u0001\u0000\u0000\u0000\u000e\u0102\u0001\u0000\u0000\u0000\u0010\u010c"+ - "\u0001\u0000\u0000\u0000\u0012\u010e\u0001\u0000\u0000\u0000\u0014\u011a"+ - "\u0001\u0000\u0000\u0000\u0016\u0128\u0001\u0000\u0000\u0000\u0018\u012d"+ - "\u0001\u0000\u0000\u0000\u001a\u0139\u0001\u0000\u0000\u0000\u001c\u013e"+ - "\u0001\u0000\u0000\u0000\u001e\u014a\u0001\u0000\u0000\u0000 \u0159\u0001"+ - "\u0000\u0000\u0000\"\u015e\u0001\u0000\u0000\u0000$\u0167\u0001\u0000"+ - "\u0000\u0000&\u0172\u0001\u0000\u0000\u0000(\u017a\u0001\u0000\u0000\u0000"+ - "*\u018b\u0001\u0000\u0000\u0000,\u0199\u0001\u0000\u0000\u0000.\u01a3"+ - "\u0001\u0000\u0000\u00000\u01bf\u0001\u0000\u0000\u00002\u01e0\u0001\u0000"+ - "\u0000\u00004\u01e9\u0001\u0000\u0000\u00006\u01eb\u0001\u0000\u0000\u0000"+ - "8\u01f4\u0001\u0000\u0000\u0000:\u01f6\u0001\u0000\u0000\u0000<\u021a"+ - "\u0001\u0000\u0000\u0000>\u021c\u0001\u0000\u0000\u0000@\u0222\u0001\u0000"+ - "\u0000\u0000B\u0226\u0001\u0000\u0000\u0000D\u0231\u0001\u0000\u0000\u0000"+ - "F\u0256\u0001\u0000\u0000\u0000H\u0258\u0001\u0000\u0000\u0000J\u025d"+ - "\u0001\u0000\u0000\u0000L\u0263\u0001\u0000\u0000\u0000N\u0282\u0001\u0000"+ - "\u0000\u0000P\u0286\u0001\u0000\u0000\u0000R\u0288\u0001\u0000\u0000\u0000"+ - "T\u0290\u0001\u0000\u0000\u0000V\u02a1\u0001\u0000\u0000\u0000X\u02a3"+ - "\u0001\u0000\u0000\u0000Z\u02a6\u0001\u0000\u0000\u0000\\\u02ae\u0001"+ - "\u0000\u0000\u0000^\u02c1\u0001\u0000\u0000\u0000`\u02c9\u0001\u0000\u0000"+ - "\u0000b\u02dc\u0001\u0000\u0000\u0000d\u02e4\u0001\u0000\u0000\u0000f"+ - "\u02f5\u0001\u0000\u0000\u0000h\u02ff\u0001\u0000\u0000\u0000j\u0318\u0001"+ - "\u0000\u0000\u0000l\u0323\u0001\u0000\u0000\u0000n\u032a\u0001\u0000\u0000"+ - "\u0000p\u0339\u0001\u0000\u0000\u0000r\u033b\u0001\u0000\u0000\u0000t"+ - "\u0350\u0001\u0000\u0000\u0000v\u0352\u0001\u0000\u0000\u0000x\u0367\u0001"+ - "\u0000\u0000\u0000z\u036d\u0001\u0000\u0000\u0000|\u036f\u0001\u0000\u0000"+ - "\u0000~\u0377\u0001\u0000\u0000\u0000\u0080\u037e\u0001\u0000\u0000\u0000"+ - "\u0082\u038a\u0001\u0000\u0000\u0000\u0084\u0390\u0001\u0000\u0000\u0000"+ - "\u0086\u0393\u0001\u0000\u0000\u0000\u0088\u039c\u0001\u0000\u0000\u0000"+ - "\u008a\u03a5\u0001\u0000\u0000\u0000\u008c\u03be\u0001\u0000\u0000\u0000"+ - "\u008e\u03ea\u0001\u0000\u0000\u0000\u0090\u03f2\u0001\u0000\u0000\u0000"+ - "\u0092\u03f4\u0001\u0000\u0000\u0000\u0094\u03f7\u0001\u0000\u0000\u0000"+ - "\u0096\u03fa\u0001\u0000\u0000\u0000\u0098\u03fe\u0001\u0000\u0000\u0000"+ - "\u009a\u0405\u0001\u0000\u0000\u0000\u009c\u040d\u0001\u0000\u0000\u0000"+ - "\u009e\u0419\u0001\u0000\u0000\u0000\u00a0\u0428\u0001\u0000\u0000\u0000"+ - "\u00a2\u042d\u0001\u0000\u0000\u0000\u00a4\u0435\u0001\u0000\u0000\u0000"+ - "\u00a6\u044f\u0001\u0000\u0000\u0000\u00a8\u0460\u0001\u0000\u0000\u0000"+ - "\u00aa\u0463\u0001\u0000\u0000\u0000\u00ac\u0473\u0001\u0000\u0000\u0000"+ - "\u00ae\u00b0\u0003\u0006\u0003\u0000\u00af\u00ae\u0001\u0000\u0000\u0000"+ - "\u00af\u00b0\u0001\u0000\u0000\u0000\u00b0\u00b4\u0001\u0000\u0000\u0000"+ - "\u00b1\u00b3\u0003\u0002\u0001\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000"+ - "\u00b3\u00b6\u0001\u0000\u0000\u0000\u00b4\u00b2\u0001\u0000\u0000\u0000"+ - "\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5\u00b7\u0001\u0000\u0000\u0000"+ - "\u00b6\u00b4\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005\u0000\u0000\u0001"+ - "\u00b8\u0001\u0001\u0000\u0000\u0000\u00b9\u00c3\u0005-\u0000\u0000\u00ba"+ - "\u00c3\u0005.\u0000\u0000\u00bb\u00c3\u0003\u0018\f\u0000\u00bc\u00c3"+ - "\u0003\b\u0004\u0000\u00bd\u00c3\u0003\n\u0005\u0000\u00be\u00c3\u0003"+ - "\u0014\n\u0000\u00bf\u00c3\u0003\"\u0011\u0000\u00c0\u00c3\u0003(\u0014"+ - "\u0000\u00c1\u00c3\u0003\u0004\u0002\u0000\u00c2\u00b9\u0001\u0000\u0000"+ - "\u0000\u00c2\u00ba\u0001\u0000\u0000\u0000\u00c2\u00bb\u0001\u0000\u0000"+ - "\u0000\u00c2\u00bc\u0001\u0000\u0000\u0000\u00c2\u00bd\u0001\u0000\u0000"+ - "\u0000\u00c2\u00be\u0001\u0000\u0000\u0000\u00c2\u00bf\u0001\u0000\u0000"+ - "\u0000\u00c2\u00c0\u0001\u0000\u0000\u0000\u00c2\u00c1\u0001\u0000\u0000"+ - "\u0000\u00c3\u0003\u0001\u0000\u0000\u0000\u00c4\u00c8\u0003.\u0017\u0000"+ - "\u00c5\u00c8\u0003f3\u0000\u00c6\u00c8\u0003F#\u0000\u00c7\u00c4\u0001"+ - "\u0000\u0000\u0000\u00c7\u00c5\u0001\u0000\u0000\u0000\u00c7\u00c6\u0001"+ - "\u0000\u0000\u0000\u00c8\u0005\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005"+ - "1\u0000\u0000\u00ca\u00cb\u0005W\u0000\u0000\u00cb\u00cc\u0005\u0001\u0000"+ - "\u0000\u00cc\u00cd\u0001\u0000\u0000\u0000\u00cd\u00ce\u00052\u0000\u0000"+ - "\u00ce\u00cf\u0003\u00acV\u0000\u00cf\u00d2\u0001\u0000\u0000\u0000\u00d0"+ - "\u00d1\u00053\u0000\u0000\u00d1\u00d3\u0005W\u0000\u0000\u00d2\u00d0\u0001"+ - "\u0000\u0000\u0000\u00d2\u00d3\u0001\u0000\u0000\u0000\u00d3\u00d6\u0001"+ - "\u0000\u0000\u0000\u00d4\u00d5\u00054\u0000\u0000\u00d5\u00d7\u0005W\u0000"+ - "\u0000\u00d6\u00d4\u0001\u0000\u0000\u0000\u00d6\u00d7\u0001\u0000\u0000"+ - "\u0000\u00d7\u00da\u0001\u0000\u0000\u0000\u00d8\u00d9\u00055\u0000\u0000"+ - "\u00d9\u00db\u0005W\u0000\u0000\u00da\u00d8\u0001\u0000\u0000\u0000\u00da"+ - "\u00db\u0001\u0000\u0000\u0000\u00db\u00dc\u0001\u0000\u0000\u0000\u00dc"+ - "\u00dd\u0005\u0001\u0000\u0000\u00dd\u0007\u0001\u0000\u0000\u0000\u00de"+ - "\u00e0\u0003n7\u0000\u00df\u00de\u0001\u0000\u0000\u0000\u00e0\u00e3\u0001"+ - "\u0000\u0000\u0000\u00e1\u00df\u0001\u0000\u0000\u0000\u00e1\u00e2\u0001"+ - "\u0000\u0000\u0000\u00e2\u00e4\u0001\u0000\u0000\u0000\u00e3\u00e1\u0001"+ - "\u0000\u0000\u0000\u00e4\u00e5\u00056\u0000\u0000\u00e5\u00e6\u0003J%"+ - "\u0000\u00e6\u00e7\u0005\u0002\u0000\u0000\u00e7\u00e8\u0003J%\u0000\u00e8"+ - "\u00e9\u0005\u0001\u0000\u0000\u00e9\t\u0001\u0000\u0000\u0000\u00ea\u00ec"+ - "\u0003n7\u0000\u00eb\u00ea\u0001\u0000\u0000\u0000\u00ec\u00ef\u0001\u0000"+ - "\u0000\u0000\u00ed\u00eb\u0001\u0000\u0000\u0000\u00ed\u00ee\u0001\u0000"+ - "\u0000\u0000\u00ee\u00f0\u0001\u0000\u0000\u0000\u00ef\u00ed\u0001\u0000"+ - "\u0000\u0000\u00f0\u00f1\u00057\u0000\u0000\u00f1\u00f3\u0003\u00a6S\u0000"+ - "\u00f2\u00f4\u0003L&\u0000\u00f3\u00f2\u0001\u0000\u0000\u0000\u00f3\u00f4"+ - "\u0001\u0000\u0000\u0000\u00f4\u00f6\u0001\u0000\u0000\u0000\u00f5\u00f7"+ - "\u0003\f\u0006\u0000\u00f6\u00f5\u0001\u0000\u0000\u0000\u00f6\u00f7\u0001"+ - "\u0000\u0000\u0000\u00f7\u00f9\u0001\u0000\u0000\u0000\u00f8\u00fa\u0003"+ - "\u0012\t\u0000\u00f9\u00f8\u0001\u0000\u0000\u0000\u00f9\u00fa\u0001\u0000"+ - "\u0000\u0000\u00fa\u000b\u0001\u0000\u0000\u0000\u00fb\u00fc\u0005S\u0000"+ - "\u0000\u00fc\u00fe\u0003J%\u0000\u00fd\u00fb\u0001\u0000\u0000\u0000\u00fd"+ - "\u00fe\u0001\u0000\u0000\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff"+ - "\u0100\u0003\u00acV\u0000\u0100\u0101\u0003\u000e\u0007\u0000\u0101\r"+ - "\u0001\u0000\u0000\u0000\u0102\u0107\u0003J%\u0000\u0103\u0104\u0005\f"+ - "\u0000\u0000\u0104\u0106\u0003J%\u0000\u0105\u0103\u0001\u0000\u0000\u0000"+ - "\u0106\u0109\u0001\u0000\u0000\u0000\u0107\u0105\u0001\u0000\u0000\u0000"+ - "\u0107\u0108\u0001\u0000\u0000\u0000\u0108\u000f\u0001\u0000\u0000\u0000"+ - "\u0109\u0107\u0001\u0000\u0000\u0000\u010a\u010d\u0003F#\u0000\u010b\u010d"+ - "\u0003f3\u0000\u010c\u010a\u0001\u0000\u0000\u0000\u010c\u010b\u0001\u0000"+ - "\u0000\u0000\u010d\u0011\u0001\u0000\u0000\u0000\u010e\u0112\u0005\u0004"+ - "\u0000\u0000\u010f\u0111\u0003\u0010\b\u0000\u0110\u010f\u0001\u0000\u0000"+ - "\u0000\u0111\u0114\u0001\u0000\u0000\u0000\u0112\u0110\u0001\u0000\u0000"+ - "\u0000\u0112\u0113\u0001\u0000\u0000\u0000\u0113\u0115\u0001\u0000\u0000"+ - "\u0000\u0114\u0112\u0001\u0000\u0000\u0000\u0115\u0116\u0005\u0005\u0000"+ - "\u0000\u0116\u0013\u0001\u0000\u0000\u0000\u0117\u0119\u0003n7\u0000\u0118"+ - "\u0117\u0001\u0000\u0000\u0000\u0119\u011c\u0001\u0000\u0000\u0000\u011a"+ - "\u0118\u0001\u0000\u0000\u0000\u011a\u011b\u0001\u0000\u0000\u0000\u011b"+ - "\u011d\u0001\u0000\u0000\u0000\u011c\u011a\u0001\u0000\u0000\u0000\u011d"+ - "\u011e\u00059\u0000\u0000\u011e\u011f\u0003J%\u0000\u011f\u0123\u0005"+ - "\u0004\u0000\u0000\u0120\u0122\u0003\u0016\u000b\u0000\u0121\u0120\u0001"+ - "\u0000\u0000\u0000\u0122\u0125\u0001\u0000\u0000\u0000\u0123\u0121\u0001"+ - "\u0000\u0000\u0000\u0123\u0124\u0001\u0000\u0000\u0000\u0124\u0126\u0001"+ - "\u0000\u0000\u0000\u0125\u0123\u0001\u0000\u0000\u0000\u0126\u0127\u0005"+ - "\u0005\u0000\u0000\u0127\u0015\u0001\u0000\u0000\u0000\u0128\u0129\u0003"+ - "\u00acV\u0000\u0129\u012a\u0005\u0002\u0000\u0000\u012a\u012b\u0003\u00a8"+ - "T\u0000\u012b\u012c\u0005\u0001\u0000\u0000\u012c\u0017\u0001\u0000\u0000"+ - "\u0000\u012d\u012e\u00058\u0000\u0000\u012e\u0132\u0005\u0004\u0000\u0000"+ - "\u012f\u0131\u0003\u001a\r\u0000\u0130\u012f\u0001\u0000\u0000\u0000\u0131"+ - "\u0134\u0001\u0000\u0000\u0000\u0132\u0130\u0001\u0000\u0000\u0000\u0132"+ - "\u0133\u0001\u0000\u0000\u0000\u0133\u0135\u0001\u0000\u0000\u0000\u0134"+ - "\u0132\u0001\u0000\u0000\u0000\u0135\u0136\u0005\u0005\u0000\u0000\u0136"+ - "\u0019\u0001\u0000\u0000\u0000\u0137\u013a\u0003\u001c\u000e\u0000\u0138"+ - "\u013a\u0003\u001e\u000f\u0000\u0139\u0137\u0001\u0000\u0000\u0000\u0139"+ - "\u0138\u0001\u0000\u0000\u0000\u013a\u001b\u0001\u0000\u0000\u0000\u013b"+ - "\u013d\u0003n7\u0000\u013c\u013b\u0001\u0000\u0000\u0000\u013d\u0140\u0001"+ - "\u0000\u0000\u0000\u013e\u013c\u0001\u0000\u0000\u0000\u013e\u013f\u0001"+ - "\u0000\u0000\u0000\u013f\u0141\u0001\u0000\u0000\u0000\u0140\u013e\u0001"+ - "\u0000\u0000\u0000\u0141\u0142\u0003J%\u0000\u0142\u0143\u0005\u0006\u0000"+ - "\u0000\u0143\u0144\u0003J%\u0000\u0144\u0145\u0005\u0007\u0000\u0000\u0145"+ - "\u0146\u0005\u0001\u0000\u0000\u0146\u001d\u0001\u0000\u0000\u0000\u0147"+ - "\u0149\u0003n7\u0000\u0148\u0147\u0001\u0000\u0000\u0000\u0149\u014c\u0001"+ - "\u0000\u0000\u0000\u014a\u0148\u0001\u0000\u0000\u0000\u014a\u014b\u0001"+ - "\u0000\u0000\u0000\u014b\u014d\u0001\u0000\u0000\u0000\u014c\u014a\u0001"+ - "\u0000\u0000\u0000\u014d\u014e\u0003\u00acV\u0000\u014e\u014f\u0005\u0006"+ - "\u0000\u0000\u014f\u0150\u0003J%\u0000\u0150\u0151\u0005\u0007\u0000\u0000"+ - "\u0151\u0153\u0005\u0004\u0000\u0000\u0152\u0154\u0003 \u0010\u0000\u0153"+ - "\u0152\u0001\u0000\u0000\u0000\u0154\u0155\u0001\u0000\u0000\u0000\u0155"+ - "\u0153\u0001\u0000\u0000\u0000\u0155\u0156\u0001\u0000\u0000\u0000\u0156"+ - "\u0157\u0001\u0000\u0000\u0000\u0157\u0158\u0005\u0005\u0000\u0000\u0158"+ - "\u001f\u0001\u0000\u0000\u0000\u0159\u015a\u0003\u00acV\u0000\u015a\u015b"+ - "\u0005\u000b\u0000\u0000\u015b\u015c\u0003\u009aM\u0000\u015c\u015d\u0005"+ - "\u0001\u0000\u0000\u015d!\u0001\u0000\u0000\u0000\u015e\u015f\u0005:\u0000"+ - "\u0000\u015f\u0160\u0003\u00acV\u0000\u0160\u0162\u0005\u0006\u0000\u0000"+ - "\u0161\u0163\u0003$\u0012\u0000\u0162\u0161\u0001\u0000\u0000\u0000\u0162"+ - "\u0163\u0001\u0000\u0000\u0000\u0163\u0164\u0001\u0000\u0000\u0000\u0164"+ - "\u0165\u0005\u0007\u0000\u0000\u0165\u0166\u0005\u0001\u0000\u0000\u0166"+ - "#\u0001\u0000\u0000\u0000\u0167\u016c\u0003&\u0013\u0000\u0168\u0169\u0005"+ - "\f\u0000\u0000\u0169\u016b\u0003&\u0013\u0000\u016a\u0168\u0001\u0000"+ - "\u0000\u0000\u016b\u016e\u0001\u0000\u0000\u0000\u016c\u016a\u0001\u0000"+ - "\u0000\u0000\u016c\u016d\u0001\u0000\u0000\u0000\u016d\u0170\u0001\u0000"+ - "\u0000\u0000\u016e\u016c\u0001\u0000\u0000\u0000\u016f\u0171\u0005\f\u0000"+ - "\u0000\u0170\u016f\u0001\u0000\u0000\u0000\u0170\u0171\u0001\u0000\u0000"+ - "\u0000\u0171%\u0001\u0000\u0000\u0000\u0172\u0175\u0003H$\u0000\u0173"+ - "\u0174\u0005\u0002\u0000\u0000\u0174\u0176\u0003\u008cF\u0000\u0175\u0173"+ - "\u0001\u0000\u0000\u0000\u0175\u0176\u0001\u0000\u0000\u0000\u0176\'\u0001"+ - "\u0000\u0000\u0000\u0177\u0179\u0003n7\u0000\u0178\u0177\u0001\u0000\u0000"+ - "\u0000\u0179\u017c\u0001\u0000\u0000\u0000\u017a\u0178\u0001\u0000\u0000"+ - "\u0000\u017a\u017b\u0001\u0000\u0000\u0000\u017b\u017d\u0001\u0000\u0000"+ - "\u0000\u017c\u017a\u0001\u0000\u0000\u0000\u017d\u017e\u0005O\u0000\u0000"+ - "\u017e\u017f\u0005I\u0000\u0000\u017f\u0180\u0003\u00acV\u0000\u0180\u0182"+ - "\u0005\u0006\u0000\u0000\u0181\u0183\u0003*\u0015\u0000\u0182\u0181\u0001"+ - "\u0000\u0000\u0000\u0182\u0183\u0001\u0000\u0000\u0000\u0183\u0184\u0001"+ - "\u0000\u0000\u0000\u0184\u0187\u0005\u0007\u0000\u0000\u0185\u0186\u0005"+ - "\u000b\u0000\u0000\u0186\u0188\u0003J%\u0000\u0187\u0185\u0001\u0000\u0000"+ - "\u0000\u0187\u0188\u0001\u0000\u0000\u0000\u0188\u0189\u0001\u0000\u0000"+ - "\u0000\u0189\u018a\u0005\u0001\u0000\u0000\u018a)\u0001\u0000\u0000\u0000"+ - "\u018b\u0190\u0003,\u0016\u0000\u018c\u018d\u0005\f\u0000\u0000\u018d"+ - "\u018f\u0003,\u0016\u0000\u018e\u018c\u0001\u0000\u0000\u0000\u018f\u0192"+ - "\u0001\u0000\u0000\u0000\u0190\u018e\u0001\u0000\u0000\u0000\u0190\u0191"+ - "\u0001\u0000\u0000\u0000\u0191\u0194\u0001\u0000\u0000\u0000\u0192\u0190"+ - "\u0001\u0000\u0000\u0000\u0193\u0195\u0005\f\u0000\u0000\u0194\u0193\u0001"+ - "\u0000\u0000\u0000\u0194\u0195\u0001\u0000\u0000\u0000\u0195+\u0001\u0000"+ - "\u0000\u0000\u0196\u0198\u0003n7\u0000\u0197\u0196\u0001\u0000\u0000\u0000"+ - "\u0198\u019b\u0001\u0000\u0000\u0000\u0199\u0197\u0001\u0000\u0000\u0000"+ - "\u0199\u019a\u0001\u0000\u0000\u0000\u019a\u019c\u0001\u0000\u0000\u0000"+ - "\u019b\u0199\u0001\u0000\u0000\u0000\u019c\u019d\u0003\u00acV\u0000\u019d"+ - "\u019e\u0005\u000b\u0000\u0000\u019e\u019f\u0003J%\u0000\u019f-\u0001"+ - "\u0000\u0000\u0000\u01a0\u01a2\u0003n7\u0000\u01a1\u01a0\u0001\u0000\u0000"+ - "\u0000\u01a2\u01a5\u0001\u0000\u0000\u0000\u01a3\u01a1\u0001\u0000\u0000"+ - "\u0000\u01a3\u01a4\u0001\u0000\u0000\u0000\u01a4\u01a6\u0001\u0000\u0000"+ - "\u0000\u01a5\u01a3\u0001\u0000\u0000\u0000\u01a6\u01a8\u0005;\u0000\u0000"+ - "\u01a7\u01a9\u0005<\u0000\u0000\u01a8\u01a7\u0001\u0000\u0000\u0000\u01a8"+ - "\u01a9\u0001\u0000\u0000\u0000\u01a9\u01aa\u0001\u0000\u0000\u0000\u01aa"+ - "\u01b3\u0003\u00a6S\u0000\u01ab\u01af\u0005\u0006\u0000\u0000\u01ac\u01ae"+ - "\u00032\u0019\u0000\u01ad\u01ac\u0001\u0000\u0000\u0000\u01ae\u01b1\u0001"+ - "\u0000\u0000\u0000\u01af\u01ad\u0001\u0000\u0000\u0000\u01af\u01b0\u0001"+ - "\u0000\u0000\u0000\u01b0\u01b2\u0001\u0000\u0000\u0000\u01b1\u01af\u0001"+ - "\u0000\u0000\u0000\u01b2\u01b4\u0005\u0007\u0000\u0000\u01b3\u01ab\u0001"+ - "\u0000\u0000\u0000\u01b3\u01b4\u0001\u0000\u0000\u0000\u01b4\u01b5\u0001"+ - "\u0000\u0000\u0000\u01b5\u01b6\u0005\u000b\u0000\u0000\u01b6\u01ba\u0003"+ - "J%\u0000\u01b7\u01b9\u00036\u001b\u0000\u01b8\u01b7\u0001\u0000\u0000"+ - "\u0000\u01b9\u01bc\u0001\u0000\u0000\u0000\u01ba\u01b8\u0001\u0000\u0000"+ - "\u0000\u01ba\u01bb\u0001\u0000\u0000\u0000\u01bb\u01bd\u0001\u0000\u0000"+ - "\u0000\u01bc\u01ba\u0001\u0000\u0000\u0000\u01bd\u01be\u00030\u0018\u0000"+ - "\u01be/\u0001\u0000\u0000\u0000\u01bf\u01c3\u0005\u0004\u0000\u0000\u01c0"+ - "\u01c2\u00034\u001a\u0000\u01c1\u01c0\u0001\u0000\u0000\u0000\u01c2\u01c5"+ - "\u0001\u0000\u0000\u0000\u01c3\u01c1\u0001\u0000\u0000\u0000\u01c3\u01c4"+ - "\u0001\u0000\u0000\u0000\u01c4\u01c6\u0001\u0000\u0000\u0000\u01c5\u01c3"+ - "\u0001\u0000\u0000\u0000\u01c6\u01c7\u0005\u0005\u0000\u0000\u01c71\u0001"+ - "\u0000\u0000\u0000\u01c8\u01ca\u0003n7\u0000\u01c9\u01c8\u0001\u0000\u0000"+ - "\u0000\u01ca\u01cd\u0001\u0000\u0000\u0000\u01cb\u01c9\u0001\u0000\u0000"+ - "\u0000\u01cb\u01cc\u0001\u0000\u0000\u0000\u01cc\u01ce\u0001\u0000\u0000"+ - "\u0000\u01cd\u01cb\u0001\u0000\u0000\u0000\u01ce\u01cf\u0007\u0000\u0000"+ - "\u0000\u01cf\u01d1\u0003H$\u0000\u01d0\u01d2\u0005\f\u0000\u0000\u01d1"+ - "\u01d0\u0001\u0000\u0000\u0000\u01d1\u01d2\u0001\u0000\u0000\u0000\u01d2"+ - "\u01e1\u0001\u0000\u0000\u0000\u01d3\u01d5\u0003n7\u0000\u01d4\u01d3\u0001"+ - "\u0000\u0000\u0000\u01d5\u01d8\u0001\u0000\u0000\u0000\u01d6\u01d4\u0001"+ - "\u0000\u0000\u0000\u01d6\u01d7\u0001\u0000\u0000\u0000\u01d7\u01d9\u0001"+ - "\u0000\u0000\u0000\u01d8\u01d6\u0001\u0000\u0000\u0000\u01d9\u01da\u0007"+ - "\u0000\u0000\u0000\u01da\u01db\u0003H$\u0000\u01db\u01dc\u0005\u0002\u0000"+ - "\u0000\u01dc\u01de\u0003P(\u0000\u01dd\u01df\u0005\f\u0000\u0000\u01de"+ - "\u01dd\u0001\u0000\u0000\u0000\u01de\u01df\u0001\u0000\u0000\u0000\u01df"+ - "\u01e1\u0001\u0000\u0000\u0000\u01e0\u01cb\u0001\u0000\u0000\u0000\u01e0"+ - "\u01d6\u0001\u0000\u0000\u0000\u01e13\u0001\u0000\u0000\u0000\u01e2\u01ea"+ - "\u0003:\u001d\u0000\u01e3\u01ea\u0003<\u001e\u0000\u01e4\u01ea\u0003Z"+ - "-\u0000\u01e5\u01ea\u0003^/\u0000\u01e6\u01ea\u0003b1\u0000\u01e7\u01ea"+ - "\u0003f3\u0000\u01e8\u01ea\u0003F#\u0000\u01e9\u01e2\u0001\u0000\u0000"+ - "\u0000\u01e9\u01e3\u0001\u0000\u0000\u0000\u01e9\u01e4\u0001\u0000\u0000"+ - "\u0000\u01e9\u01e5\u0001\u0000\u0000\u0000\u01e9\u01e6\u0001\u0000\u0000"+ - "\u0000\u01e9\u01e7\u0001\u0000\u0000\u0000\u01e9\u01e8\u0001\u0000\u0000"+ - "\u0000\u01ea5\u0001\u0000\u0000\u0000\u01eb\u01ec\u0003\u00acV\u0000\u01ec"+ - "\u01f1\u00038\u001c\u0000\u01ed\u01ee\u0005\f\u0000\u0000\u01ee\u01f0"+ - "\u00038\u001c\u0000\u01ef\u01ed\u0001\u0000\u0000\u0000\u01f0\u01f3\u0001"+ - "\u0000\u0000\u0000\u01f1\u01ef\u0001\u0000\u0000\u0000\u01f1\u01f2\u0001"+ - "\u0000\u0000\u0000\u01f27\u0001\u0000\u0000\u0000\u01f3\u01f1\u0001\u0000"+ - "\u0000\u0000\u01f4\u01f5\u0003\u00acV\u0000\u01f59\u0001\u0000\u0000\u0000"+ - "\u01f6\u01f7\u0007\u0001\u0000\u0000\u01f7\u01f8\u0003\u00a2Q\u0000\u01f8"+ - "\u01f9\u0005\u0001\u0000\u0000\u01f9;\u0001\u0000\u0000\u0000\u01fa\u01fb"+ - "\u0005B\u0000\u0000\u01fb\u01fc\u0005V\u0000\u0000\u01fc\u01fd\u0005\r"+ - "\u0000\u0000\u01fd\u01fe\u0005V\u0000\u0000\u01fe\u01ff\u0005R\u0000\u0000"+ - "\u01ff\u0200\u0003D\"\u0000\u0200\u0201\u0005\u0001\u0000\u0000\u0201"+ - "\u021b\u0001\u0000\u0000\u0000\u0202\u0203\u0005B\u0000\u0000\u0203\u0204"+ - "\u0005V\u0000\u0000\u0204\u0205\u0005\r\u0000\u0000\u0205\u0206\u0005"+ - "V\u0000\u0000\u0206\u0207\u0005R\u0000\u0000\u0207\u0208\u0003>\u001f"+ - "\u0000\u0208\u0209\u0005\u0001\u0000\u0000\u0209\u021b\u0001\u0000\u0000"+ - "\u0000\u020a\u020b\u0005B\u0000\u0000\u020b\u020c\u0003@ \u0000\u020c"+ - "\u020d\u0005\r\u0000\u0000\u020d\u020e\u0005V\u0000\u0000\u020e\u020f"+ - "\u0005R\u0000\u0000\u020f\u0210\u0003D\"\u0000\u0210\u0211\u0005\u0001"+ - "\u0000\u0000\u0211\u021b\u0001\u0000\u0000\u0000\u0212\u0213\u0005B\u0000"+ - "\u0000\u0213\u0214\u0003@ \u0000\u0214\u0215\u0005\r\u0000\u0000\u0215"+ - "\u0216\u0005V\u0000\u0000\u0216\u0217\u0005R\u0000\u0000\u0217\u0218\u0003"+ - ">\u001f\u0000\u0218\u0219\u0005\u0001\u0000\u0000\u0219\u021b\u0001\u0000"+ - "\u0000\u0000\u021a\u01fa\u0001\u0000\u0000\u0000\u021a\u0202\u0001\u0000"+ - "\u0000\u0000\u021a\u020a\u0001\u0000\u0000\u0000\u021a\u0212\u0001\u0000"+ - "\u0000\u0000\u021b=\u0001\u0000\u0000\u0000\u021c\u021e\u0005\b\u0000"+ - "\u0000\u021d\u021f\u0003B!\u0000\u021e\u021d\u0001\u0000\u0000\u0000\u021e"+ - "\u021f\u0001\u0000\u0000\u0000\u021f\u0220\u0001\u0000\u0000\u0000\u0220"+ - "\u0221\u0005\t\u0000\u0000\u0221?\u0001\u0000\u0000\u0000\u0222\u0223"+ - "\u0005\u0006\u0000\u0000\u0223\u0224\u0003\u00a2Q\u0000\u0224\u0225\u0005"+ - "\u0007\u0000\u0000\u0225A\u0001\u0000\u0000\u0000\u0226\u022b\u0003D\""+ - "\u0000\u0227\u0228\u0005\f\u0000\u0000\u0228\u022a\u0003D\"\u0000\u0229"+ - "\u0227\u0001\u0000\u0000\u0000\u022a\u022d\u0001\u0000\u0000\u0000\u022b"+ - "\u0229\u0001\u0000\u0000\u0000\u022b\u022c\u0001\u0000\u0000\u0000\u022c"+ - "\u022f\u0001\u0000\u0000\u0000\u022d\u022b\u0001\u0000\u0000\u0000\u022e"+ - "\u0230\u0005\f\u0000\u0000\u022f\u022e\u0001\u0000\u0000\u0000\u022f\u0230"+ - "\u0001\u0000\u0000\u0000\u0230C\u0001\u0000\u0000\u0000\u0231\u023e\u0003"+ - "\u00acV\u0000\u0232\u0234\u0005\u0006\u0000\u0000\u0233\u0235\u0003J%"+ - "\u0000\u0234\u0233\u0001\u0000\u0000\u0000\u0234\u0235\u0001\u0000\u0000"+ - "\u0000\u0235\u023a\u0001\u0000\u0000\u0000\u0236\u0237\u0005\f\u0000\u0000"+ - "\u0237\u0239\u0003J%\u0000\u0238\u0236\u0001\u0000\u0000\u0000\u0239\u023c"+ - "\u0001\u0000\u0000\u0000\u023a\u0238\u0001\u0000\u0000\u0000\u023a\u023b"+ - "\u0001\u0000\u0000\u0000\u023b\u023d\u0001\u0000\u0000\u0000\u023c\u023a"+ - "\u0001\u0000\u0000\u0000\u023d\u023f\u0005\u0007\u0000\u0000\u023e\u0232"+ - "\u0001\u0000\u0000\u0000\u023e\u023f\u0001\u0000\u0000\u0000\u023fE\u0001"+ - "\u0000\u0000\u0000\u0240\u0242\u0003n7\u0000\u0241\u0240\u0001\u0000\u0000"+ - "\u0000\u0242\u0245\u0001\u0000\u0000\u0000\u0243\u0241\u0001\u0000\u0000"+ - "\u0000\u0243\u0244\u0001\u0000\u0000\u0000\u0244\u0246\u0001\u0000\u0000"+ - "\u0000\u0245\u0243\u0001\u0000\u0000\u0000\u0246\u0247\u0007\u0000\u0000"+ - "\u0000\u0247\u0248\u0003H$\u0000\u0248\u0249\u0005\u0001\u0000\u0000\u0249"+ - "\u0257\u0001\u0000\u0000\u0000\u024a\u024c\u0003n7\u0000\u024b\u024a\u0001"+ - "\u0000\u0000\u0000\u024c\u024f\u0001\u0000\u0000\u0000\u024d\u024b\u0001"+ - "\u0000\u0000\u0000\u024d\u024e\u0001\u0000\u0000\u0000\u024e\u0250\u0001"+ - "\u0000\u0000\u0000\u024f\u024d\u0001\u0000\u0000\u0000\u0250\u0251\u0007"+ - "\u0000\u0000\u0000\u0251\u0252\u0003H$\u0000\u0252\u0253\u0005\u0002\u0000"+ - "\u0000\u0253\u0254\u0003P(\u0000\u0254\u0255\u0005\u0001\u0000\u0000\u0255"+ - "\u0257\u0001\u0000\u0000\u0000\u0256\u0243\u0001\u0000\u0000\u0000\u0256"+ - "\u024d\u0001\u0000\u0000\u0000\u0257G\u0001\u0000\u0000\u0000\u0258\u0259"+ - "\u0003\u00acV\u0000\u0259\u025a\u0005\u000b\u0000\u0000\u025a\u025b\u0003"+ - "J%\u0000\u025bI\u0001\u0000\u0000\u0000\u025c\u025e\u0005\u0010\u0000"+ - "\u0000\u025d\u025c\u0001\u0000\u0000\u0000\u025d\u025e\u0001\u0000\u0000"+ - "\u0000\u025e\u025f\u0001\u0000\u0000\u0000\u025f\u0261\u0003\u00a6S\u0000"+ - "\u0260\u0262\u0003L&\u0000\u0261\u0260\u0001\u0000\u0000\u0000\u0261\u0262"+ - "\u0001\u0000\u0000\u0000\u0262K\u0001\u0000\u0000\u0000\u0263\u0264\u0005"+ - "\u000e\u0000\u0000\u0264\u0269\u0003J%\u0000\u0265\u0266\u0005\f\u0000"+ - "\u0000\u0266\u0268\u0003J%\u0000\u0267\u0265\u0001\u0000\u0000\u0000\u0268"+ - "\u026b\u0001\u0000\u0000\u0000\u0269\u0267\u0001\u0000\u0000\u0000\u0269"+ - "\u026a\u0001\u0000\u0000\u0000\u026a\u026c\u0001\u0000\u0000\u0000\u026b"+ - "\u0269\u0001\u0000\u0000\u0000\u026c\u026d\u0005\u000f\u0000\u0000\u026d"+ - "M\u0001\u0000\u0000\u0000\u026e\u026f\u0003\u009eO\u0000\u026f\u0270\u0005"+ - "\u0002\u0000\u0000\u0270\u0271\u0003P(\u0000\u0271\u0272\u0005\u0001\u0000"+ - "\u0000\u0272\u0283\u0001\u0000\u0000\u0000\u0273\u0274\u0003\u009eO\u0000"+ - "\u0274\u0275\u0007\u0002\u0000\u0000\u0275\u0276\u0003P(\u0000\u0276\u0277"+ - "\u0005\u0001\u0000\u0000\u0277\u0283\u0001\u0000\u0000\u0000\u0278\u0279"+ - "\u0003\u009eO\u0000\u0279\u027a\u0007\u0003\u0000\u0000\u027a\u027b\u0003"+ - "P(\u0000\u027b\u027c\u0005\u0001\u0000\u0000\u027c\u0283\u0001\u0000\u0000"+ - "\u0000\u027d\u027e\u0003\u009eO\u0000\u027e\u027f\u0007\u0004\u0000\u0000"+ - "\u027f\u0280\u0003P(\u0000\u0280\u0281\u0005\u0001\u0000\u0000\u0281\u0283"+ - "\u0001\u0000\u0000\u0000\u0282\u026e\u0001\u0000\u0000\u0000\u0282\u0273"+ - "\u0001\u0000\u0000\u0000\u0282\u0278\u0001\u0000\u0000\u0000\u0282\u027d"+ - "\u0001\u0000\u0000\u0000\u0283O\u0001\u0000\u0000\u0000\u0284\u0287\u0003"+ - "\u008cF\u0000\u0285\u0287\u0003R)\u0000\u0286\u0284\u0001\u0000\u0000"+ - "\u0000\u0286\u0285\u0001\u0000\u0000\u0000\u0287Q\u0001\u0000\u0000\u0000"+ - "\u0288\u0289\u0005C\u0000\u0000\u0289\u028a\u0003\u00a6S\u0000\u028a\u028c"+ - "\u0005\u0006\u0000\u0000\u028b\u028d\u0003T*\u0000\u028c\u028b\u0001\u0000"+ - "\u0000\u0000\u028c\u028d\u0001\u0000\u0000\u0000\u028d\u028e\u0001\u0000"+ - "\u0000\u0000\u028e\u028f\u0005\u0007\u0000\u0000\u028fS\u0001\u0000\u0000"+ - "\u0000\u0290\u0295\u0003V+\u0000\u0291\u0292\u0005\f\u0000\u0000\u0292"+ - "\u0294\u0003V+\u0000\u0293\u0291\u0001\u0000\u0000\u0000\u0294\u0297\u0001"+ - "\u0000\u0000\u0000\u0295\u0293\u0001\u0000\u0000\u0000\u0295\u0296\u0001"+ - "\u0000\u0000\u0000\u0296\u0299\u0001\u0000\u0000\u0000\u0297\u0295\u0001"+ - "\u0000\u0000\u0000\u0298\u029a\u0005\f\u0000\u0000\u0299\u0298\u0001\u0000"+ - "\u0000\u0000\u0299\u029a\u0001\u0000\u0000\u0000\u029aU\u0001\u0000\u0000"+ - "\u0000\u029b\u029c\u0005@\u0000\u0000\u029c\u029d\u0005\u0002\u0000\u0000"+ - "\u029d\u02a2\u0003\u009aM\u0000\u029e\u029f\u0005V\u0000\u0000\u029f\u02a0"+ - "\u0005\u0002\u0000\u0000\u02a0\u02a2\u0003\u008cF\u0000\u02a1\u029b\u0001"+ - "\u0000\u0000\u0000\u02a1\u029e\u0001\u0000\u0000\u0000\u02a2W\u0001\u0000"+ - "\u0000\u0000\u02a3\u02a4\u0005\u0010\u0000\u0000\u02a4\u02a5\u0005\n\u0000"+ - "\u0000\u02a5Y\u0001\u0000\u0000\u0000\u02a6\u02a9\u0003\\.\u0000\u02a7"+ - "\u02aa\u0005\u0001\u0000\u0000\u02a8\u02aa\u0003r9\u0000\u02a9\u02a7\u0001"+ - "\u0000\u0000\u0000\u02a9\u02a8\u0001\u0000\u0000\u0000\u02aa[\u0001\u0000"+ - "\u0000\u0000\u02ab\u02ad\u0003n7\u0000\u02ac\u02ab\u0001\u0000\u0000\u0000"+ - "\u02ad\u02b0\u0001\u0000\u0000\u0000\u02ae\u02ac\u0001\u0000\u0000\u0000"+ - "\u02ae\u02af\u0001\u0000\u0000\u0000\u02af\u02b1\u0001\u0000\u0000\u0000"+ - "\u02b0\u02ae\u0001\u0000\u0000\u0000\u02b1\u02b3\u0005E\u0000\u0000\u02b2"+ - "\u02b4\u0003X,\u0000\u02b3\u02b2\u0001\u0000\u0000\u0000\u02b3\u02b4\u0001"+ - "\u0000\u0000\u0000\u02b4\u02b6\u0001\u0000\u0000\u0000\u02b5\u02b7\u0003"+ - "\u00acV\u0000\u02b6\u02b5\u0001\u0000\u0000\u0000\u02b6\u02b7\u0001\u0000"+ - "\u0000\u0000\u02b7\u02b8\u0001\u0000\u0000\u0000\u02b8\u02ba\u0005\u0006"+ - "\u0000\u0000\u02b9\u02bb\u0003j5\u0000\u02ba\u02b9\u0001\u0000\u0000\u0000"+ - "\u02ba\u02bb\u0001\u0000\u0000\u0000\u02bb\u02bc\u0001\u0000\u0000\u0000"+ - "\u02bc\u02bf\u0005\u0007\u0000\u0000\u02bd\u02be\u0005\u000b\u0000\u0000"+ - "\u02be\u02c0\u0003J%\u0000\u02bf\u02bd\u0001\u0000\u0000\u0000\u02bf\u02c0"+ - "\u0001\u0000\u0000\u0000\u02c0]\u0001\u0000\u0000\u0000\u02c1\u02c4\u0003"+ - "`0\u0000\u02c2\u02c5\u0005\u0001\u0000\u0000\u02c3\u02c5\u0003r9\u0000"+ - "\u02c4\u02c2\u0001\u0000\u0000\u0000\u02c4\u02c3\u0001\u0000\u0000\u0000"+ - "\u02c4\u02c5\u0001\u0000\u0000\u0000\u02c5_\u0001\u0000\u0000\u0000\u02c6"+ - "\u02c8\u0003n7\u0000\u02c7\u02c6\u0001\u0000\u0000\u0000\u02c8\u02cb\u0001"+ - "\u0000\u0000\u0000\u02c9\u02c7\u0001\u0000\u0000\u0000\u02c9\u02ca\u0001"+ - "\u0000\u0000\u0000\u02ca\u02cc\u0001\u0000\u0000\u0000\u02cb\u02c9\u0001"+ - "\u0000\u0000\u0000\u02cc\u02ce\u0005F\u0000\u0000\u02cd\u02cf\u0003X,"+ - "\u0000\u02ce\u02cd\u0001\u0000\u0000\u0000\u02ce\u02cf\u0001\u0000\u0000"+ - "\u0000\u02cf\u02d1\u0001\u0000\u0000\u0000\u02d0\u02d2\u0003\u00acV\u0000"+ - "\u02d1\u02d0\u0001\u0000\u0000\u0000\u02d1\u02d2\u0001\u0000\u0000\u0000"+ - "\u02d2\u02d3\u0001\u0000\u0000\u0000\u02d3\u02d5\u0005\u0006\u0000\u0000"+ - "\u02d4\u02d6\u0003j5\u0000\u02d5\u02d4\u0001\u0000\u0000\u0000\u02d5\u02d6"+ - "\u0001\u0000\u0000\u0000\u02d6\u02d7\u0001\u0000\u0000\u0000\u02d7\u02da"+ - "\u0005\u0007\u0000\u0000\u02d8\u02d9\u0005\u000b\u0000\u0000\u02d9\u02db"+ - "\u0003J%\u0000\u02da\u02d8\u0001\u0000\u0000\u0000\u02da\u02db\u0001\u0000"+ - "\u0000\u0000\u02dba\u0001\u0000\u0000\u0000\u02dc\u02df\u0003d2\u0000"+ - "\u02dd\u02e0\u0005\u0001\u0000\u0000\u02de\u02e0\u0003r9\u0000\u02df\u02dd"+ - "\u0001\u0000\u0000\u0000\u02df\u02de\u0001\u0000\u0000\u0000\u02e0c\u0001"+ - "\u0000\u0000\u0000\u02e1\u02e3\u0003n7\u0000\u02e2\u02e1\u0001\u0000\u0000"+ - "\u0000\u02e3\u02e6\u0001\u0000\u0000\u0000\u02e4\u02e2\u0001\u0000\u0000"+ - "\u0000\u02e4\u02e5\u0001\u0000\u0000\u0000\u02e5\u02e7\u0001\u0000\u0000"+ - "\u0000\u02e6\u02e4\u0001\u0000\u0000\u0000\u02e7\u02e9\u0005G\u0000\u0000"+ - "\u02e8\u02ea\u0003X,\u0000\u02e9\u02e8\u0001\u0000\u0000\u0000\u02e9\u02ea"+ - "\u0001\u0000\u0000\u0000\u02ea\u02eb\u0001\u0000\u0000\u0000\u02eb\u02ec"+ - "\u0003\u00acV\u0000\u02ec\u02ee\u0005\u0006\u0000\u0000\u02ed\u02ef\u0003"+ - "j5\u0000\u02ee\u02ed\u0001\u0000\u0000\u0000\u02ee\u02ef\u0001\u0000\u0000"+ - "\u0000\u02ef\u02f0\u0001\u0000\u0000\u0000\u02f0\u02f3\u0005\u0007\u0000"+ - "\u0000\u02f1\u02f2\u0005\u000b\u0000\u0000\u02f2\u02f4\u0003J%\u0000\u02f3"+ - "\u02f1\u0001\u0000\u0000\u0000\u02f3\u02f4\u0001\u0000\u0000\u0000\u02f4"+ - "e\u0001\u0000\u0000\u0000\u02f5\u02fa\u0003h4\u0000\u02f6\u02fb\u0005"+ - "\u0001\u0000\u0000\u02f7\u02f9\u0003r9\u0000\u02f8\u02f7\u0001\u0000\u0000"+ - "\u0000\u02f8\u02f9\u0001\u0000\u0000\u0000\u02f9\u02fb\u0001\u0000\u0000"+ - "\u0000\u02fa\u02f6\u0001\u0000\u0000\u0000\u02fa\u02f8\u0001\u0000\u0000"+ - "\u0000\u02fbg\u0001\u0000\u0000\u0000\u02fc\u02fe\u0003n7\u0000\u02fd"+ - "\u02fc\u0001\u0000\u0000\u0000\u02fe\u0301\u0001\u0000\u0000\u0000\u02ff"+ - "\u02fd\u0001\u0000\u0000\u0000\u02ff\u0300\u0001\u0000\u0000\u0000\u0300"+ - "\u0303\u0001\u0000\u0000\u0000\u0301\u02ff\u0001\u0000\u0000\u0000\u0302"+ - "\u0304\u0003\u00acV\u0000\u0303\u0302\u0001\u0000\u0000\u0000\u0303\u0304"+ - "\u0001\u0000\u0000\u0000\u0304\u0305\u0001\u0000\u0000\u0000\u0305\u0309"+ - "\u0005D\u0000\u0000\u0306\u0307\u0003\u00a6S\u0000\u0307\u0308\u0005\n"+ - "\u0000\u0000\u0308\u030a\u0001\u0000\u0000\u0000\u0309\u0306\u0001\u0000"+ - "\u0000\u0000\u0309\u030a\u0001\u0000\u0000\u0000\u030a\u030c\u0001\u0000"+ - "\u0000\u0000\u030b\u030d\u0003X,\u0000\u030c\u030b\u0001\u0000\u0000\u0000"+ - "\u030c\u030d\u0001\u0000\u0000\u0000\u030d\u030e\u0001\u0000\u0000\u0000"+ - "\u030e\u030f\u0003\u00acV\u0000\u030f\u0311\u0005\u0006\u0000\u0000\u0310"+ - "\u0312\u0003j5\u0000\u0311\u0310\u0001\u0000\u0000\u0000\u0311\u0312\u0001"+ - "\u0000\u0000\u0000\u0312\u0313\u0001\u0000\u0000\u0000\u0313\u0316\u0005"+ - "\u0007\u0000\u0000\u0314\u0315\u0005\u000b\u0000\u0000\u0315\u0317\u0003"+ - "J%\u0000\u0316\u0314\u0001\u0000\u0000\u0000\u0316\u0317\u0001\u0000\u0000"+ - "\u0000\u0317i\u0001\u0000\u0000\u0000\u0318\u031d\u0003l6\u0000\u0319"+ - "\u031a\u0005\f\u0000\u0000\u031a\u031c\u0003l6\u0000\u031b\u0319\u0001"+ - "\u0000\u0000\u0000\u031c\u031f\u0001\u0000\u0000\u0000\u031d\u031b\u0001"+ - "\u0000\u0000\u0000\u031d\u031e\u0001\u0000\u0000\u0000\u031ek\u0001\u0000"+ - "\u0000\u0000\u031f\u031d\u0001\u0000\u0000\u0000\u0320\u0322\u0003n7\u0000"+ - "\u0321\u0320\u0001\u0000\u0000\u0000\u0322\u0325\u0001\u0000\u0000\u0000"+ - "\u0323\u0321\u0001\u0000\u0000\u0000\u0323\u0324\u0001\u0000\u0000\u0000"+ - "\u0324\u0326\u0001\u0000\u0000\u0000\u0325\u0323\u0001\u0000\u0000\u0000"+ - "\u0326\u0327\u0003\u00acV\u0000\u0327\u0328\u0005\u000b\u0000\u0000\u0328"+ - "\u0329\u0003J%\u0000\u0329m\u0001\u0000\u0000\u0000\u032a\u032b\u0005"+ - "H\u0000\u0000\u032b\u0334\u0003\u00acV\u0000\u032c\u0330\u0005\u0006\u0000"+ - "\u0000\u032d\u032f\u0003\u0082A\u0000\u032e\u032d\u0001\u0000\u0000\u0000"+ - "\u032f\u0332\u0001\u0000\u0000\u0000\u0330\u032e\u0001\u0000\u0000\u0000"+ - "\u0330\u0331\u0001\u0000\u0000\u0000\u0331\u0333\u0001\u0000\u0000\u0000"+ - "\u0332\u0330\u0001\u0000\u0000\u0000\u0333\u0335\u0005\u0007\u0000\u0000"+ - "\u0334\u032c\u0001\u0000\u0000\u0000\u0334\u0335\u0001\u0000\u0000\u0000"+ - "\u0335o\u0001\u0000\u0000\u0000\u0336\u033a\u0003\u0086C\u0000\u0337\u033a"+ - "\u0003\u0088D\u0000\u0338\u033a\u0003\u008aE\u0000\u0339\u0336\u0001\u0000"+ - "\u0000\u0000\u0339\u0337\u0001\u0000\u0000\u0000\u0339\u0338\u0001\u0000"+ - "\u0000\u0000\u033aq\u0001\u0000\u0000\u0000\u033b\u033f\u0005\u0004\u0000"+ - "\u0000\u033c\u033e\u0003p8\u0000\u033d\u033c\u0001\u0000\u0000\u0000\u033e"+ - "\u0341\u0001\u0000\u0000\u0000\u033f\u033d\u0001\u0000\u0000\u0000\u033f"+ - "\u0340\u0001\u0000\u0000\u0000\u0340\u0345\u0001\u0000\u0000\u0000\u0341"+ - "\u033f\u0001\u0000\u0000\u0000\u0342\u0344\u0003t:\u0000\u0343\u0342\u0001"+ - "\u0000\u0000\u0000\u0344\u0347\u0001\u0000\u0000\u0000\u0345\u0343\u0001"+ - "\u0000\u0000\u0000\u0345\u0346\u0001\u0000\u0000\u0000\u0346\u0348\u0001"+ - "\u0000\u0000\u0000\u0347\u0345\u0001\u0000\u0000\u0000\u0348\u0349\u0005"+ - "\u0005\u0000\u0000\u0349s\u0001\u0000\u0000\u0000\u034a\u0351\u0003N\'"+ - "\u0000\u034b\u0351\u0003F#\u0000\u034c\u0351\u0003x<\u0000\u034d\u034e"+ - "\u0003\u008cF\u0000\u034e\u034f\u0005\u0001\u0000\u0000\u034f\u0351\u0001"+ - "\u0000\u0000\u0000\u0350\u034a\u0001\u0000\u0000\u0000\u0350\u034b\u0001"+ - "\u0000\u0000\u0000\u0350\u034c\u0001\u0000\u0000\u0000\u0350\u034d\u0001"+ - "\u0000\u0000\u0000\u0351u\u0001\u0000\u0000\u0000\u0352\u0356\u0005\u0004"+ - "\u0000\u0000\u0353\u0355\u0003t:\u0000\u0354\u0353\u0001\u0000\u0000\u0000"+ - "\u0355\u0358\u0001\u0000\u0000\u0000\u0356\u0354\u0001\u0000\u0000\u0000"+ - "\u0356\u0357\u0001\u0000\u0000\u0000\u0357\u0359\u0001\u0000\u0000\u0000"+ - "\u0358\u0356\u0001\u0000\u0000\u0000\u0359\u035a\u0005\u0005\u0000\u0000"+ - "\u035aw\u0001\u0000\u0000\u0000\u035b\u035c\u0005P\u0000\u0000\u035c\u035d"+ - "\u0003\u008cF\u0000\u035d\u035f\u0003v;\u0000\u035e\u0360\u0003z=\u0000"+ - "\u035f\u035e\u0001\u0000\u0000\u0000\u035f\u0360\u0001\u0000\u0000\u0000"+ - "\u0360\u0368\u0001\u0000\u0000\u0000\u0361\u0362\u0005P\u0000\u0000\u0362"+ - "\u0363\u0003\u008cF\u0000\u0363\u0365\u0003t:\u0000\u0364\u0366\u0003"+ - "z=\u0000\u0365\u0364\u0001\u0000\u0000\u0000\u0365\u0366\u0001\u0000\u0000"+ - "\u0000\u0366\u0368\u0001\u0000\u0000\u0000\u0367\u035b\u0001\u0000\u0000"+ - "\u0000\u0367\u0361\u0001\u0000\u0000\u0000\u0368y\u0001\u0000\u0000\u0000"+ - "\u0369\u036a\u0005Q\u0000\u0000\u036a\u036e\u0003v;\u0000\u036b\u036c"+ - "\u0005Q\u0000\u0000\u036c\u036e\u0003t:\u0000\u036d\u0369\u0001\u0000"+ - "\u0000\u0000\u036d\u036b\u0001\u0000\u0000\u0000\u036e{\u0001\u0000\u0000"+ - "\u0000\u036f\u0370\u0005I\u0000\u0000\u0370\u0371\u0003\u00acV\u0000\u0371"+ - "\u0373\u0005\u0006\u0000\u0000\u0372\u0374\u0003\u0080@\u0000\u0373\u0372"+ - "\u0001\u0000\u0000\u0000\u0373\u0374\u0001\u0000\u0000\u0000\u0374\u0375"+ - "\u0001\u0000\u0000\u0000\u0375\u0376\u0005\u0007\u0000\u0000\u0376}\u0001"+ - "\u0000\u0000\u0000\u0377\u0378\u0003\u009eO\u0000\u0378\u037a\u0005\u0006"+ - "\u0000\u0000\u0379\u037b\u0003\u0080@\u0000\u037a\u0379\u0001\u0000\u0000"+ - "\u0000\u037a\u037b\u0001\u0000\u0000\u0000\u037b\u037c\u0001\u0000\u0000"+ - "\u0000\u037c\u037d\u0005\u0007\u0000\u0000\u037d\u007f\u0001\u0000\u0000"+ - "\u0000\u037e\u0383\u0003\u008cF\u0000\u037f\u0380\u0005\f\u0000\u0000"+ - "\u0380\u0382\u0003\u008cF\u0000\u0381\u037f\u0001\u0000\u0000\u0000\u0382"+ - "\u0385\u0001\u0000\u0000\u0000\u0383\u0381\u0001\u0000\u0000\u0000\u0383"+ - "\u0384\u0001\u0000\u0000\u0000\u0384\u0387\u0001\u0000\u0000\u0000\u0385"+ - "\u0383\u0001\u0000\u0000\u0000\u0386\u0388\u0005\f\u0000\u0000\u0387\u0386"+ - "\u0001\u0000\u0000\u0000\u0387\u0388\u0001\u0000\u0000\u0000\u0388\u0081"+ - "\u0001\u0000\u0000\u0000\u0389\u038b\u0003\u0084B\u0000\u038a\u0389\u0001"+ - "\u0000\u0000\u0000\u038a\u038b\u0001\u0000\u0000\u0000\u038b\u038c\u0001"+ - "\u0000\u0000\u0000\u038c\u038e\u0003\u008cF\u0000\u038d\u038f\u0005\f"+ - "\u0000\u0000\u038e\u038d\u0001\u0000\u0000\u0000\u038e\u038f\u0001\u0000"+ - "\u0000\u0000\u038f\u0083\u0001\u0000\u0000\u0000\u0390\u0391\u0003\u00ac"+ - "V\u0000\u0391\u0392\u0005\u0002\u0000\u0000\u0392\u0085\u0001\u0000\u0000"+ - "\u0000\u0393\u0397\u0005J\u0000\u0000\u0394\u0395\u0003\u00acV\u0000\u0395"+ - "\u0396\u0005\u000b\u0000\u0000\u0396\u0398\u0001\u0000\u0000\u0000\u0397"+ - "\u0394\u0001\u0000\u0000\u0000\u0397\u0398\u0001\u0000\u0000\u0000\u0398"+ - "\u0399\u0001\u0000\u0000\u0000\u0399\u039a\u0003\u008cF\u0000\u039a\u039b"+ - "\u0005\u0001\u0000\u0000\u039b\u0087\u0001\u0000\u0000\u0000\u039c\u03a0"+ - "\u0005K\u0000\u0000\u039d\u039e\u0003\u00acV\u0000\u039e\u039f\u0005\u000b"+ - "\u0000\u0000\u039f\u03a1\u0001\u0000\u0000\u0000\u03a0\u039d\u0001\u0000"+ - "\u0000\u0000\u03a0\u03a1\u0001\u0000\u0000\u0000\u03a1\u03a2\u0001\u0000"+ - "\u0000\u0000\u03a2\u03a3\u0003\u008cF\u0000\u03a3\u03a4\u0005\u0001\u0000"+ - "\u0000\u03a4\u0089\u0001\u0000\u0000\u0000\u03a5\u03a9\u0005L\u0000\u0000"+ - "\u03a6\u03a7\u0003\u00acV\u0000\u03a7\u03a8\u0005\u000b\u0000\u0000\u03a8"+ - "\u03aa\u0001\u0000\u0000\u0000\u03a9\u03a6\u0001\u0000\u0000\u0000\u03a9"+ - "\u03aa\u0001\u0000\u0000\u0000\u03aa\u03ab\u0001\u0000\u0000\u0000\u03ab"+ - "\u03ac\u0003\u008cF\u0000\u03ac\u03ad\u0005\u0001\u0000\u0000\u03ad\u008b"+ - "\u0001\u0000\u0000\u0000\u03ae\u03af\u0006F\uffff\uffff\u0000\u03af\u03bf"+ - "\u0003\u009aM\u0000\u03b0\u03b1\u0003\u009eO\u0000\u03b1\u03b2\u0005+"+ - "\u0000\u0000\u03b2\u03bf\u0001\u0000\u0000\u0000\u03b3\u03bf\u0003\u009e"+ - "O\u0000\u03b4\u03bf\u0003~?\u0000\u03b5\u03bf\u0003|>\u0000\u03b6\u03bf"+ - "\u0003R)\u0000\u03b7\u03b8\u0005\u0006\u0000\u0000\u03b8\u03b9\u0003\u008c"+ - "F\u0000\u03b9\u03ba\u0005\u0007\u0000\u0000\u03ba\u03bf\u0001\u0000\u0000"+ - "\u0000\u03bb\u03bf\u0003\u008eG\u0000\u03bc\u03bd\u0007\u0005\u0000\u0000"+ - "\u03bd\u03bf\u0003\u008cF\r\u03be\u03ae\u0001\u0000\u0000\u0000\u03be"+ - "\u03b0\u0001\u0000\u0000\u0000\u03be\u03b3\u0001\u0000\u0000\u0000\u03be"+ - "\u03b4\u0001\u0000\u0000\u0000\u03be\u03b5\u0001\u0000\u0000\u0000\u03be"+ - "\u03b6\u0001\u0000\u0000\u0000\u03be\u03b7\u0001\u0000\u0000\u0000\u03be"+ - "\u03bb\u0001\u0000\u0000\u0000\u03be\u03bc\u0001\u0000\u0000\u0000\u03bf"+ - "\u03e7\u0001\u0000\u0000\u0000\u03c0\u03c1\n\u000b\u0000\u0000\u03c1\u03c2"+ - "\u0007\u0006\u0000\u0000\u03c2\u03e6\u0003\u008cF\f\u03c3\u03c4\n\n\u0000"+ - "\u0000\u03c4\u03c5\u0007\u0007\u0000\u0000\u03c5\u03e6\u0003\u008cF\u000b"+ - "\u03c6\u03c7\n\t\u0000\u0000\u03c7\u03c8\u0003\u0090H\u0000\u03c8\u03c9"+ - "\u0003\u008cF\n\u03c9\u03e6\u0001\u0000\u0000\u0000\u03ca\u03cb\n\b\u0000"+ - "\u0000\u03cb\u03cc\u0007\b\u0000\u0000\u03cc\u03e6\u0003\u008cF\t\u03cd"+ - "\u03ce\n\u0006\u0000\u0000\u03ce\u03cf\u0007\t\u0000\u0000\u03cf\u03e6"+ - "\u0003\u008cF\u0007\u03d0\u03d1\n\u0005\u0000\u0000\u03d1\u03d2\u0005"+ - "\"\u0000\u0000\u03d2\u03e6\u0003\u008cF\u0006\u03d3\u03d4\n\u0004\u0000"+ - "\u0000\u03d4\u03d5\u0005$\u0000\u0000\u03d5\u03e6\u0003\u008cF\u0005\u03d6"+ - "\u03d7\n\u0003\u0000\u0000\u03d7\u03d8\u0005 \u0000\u0000\u03d8\u03e6"+ - "\u0003\u008cF\u0004\u03d9\u03da\n\u0002\u0000\u0000\u03da\u03db\u0005"+ - "#\u0000\u0000\u03db\u03e6\u0003\u008cF\u0003\u03dc\u03dd\n\u0001\u0000"+ - "\u0000\u03dd\u03de\u0005!\u0000\u0000\u03de\u03e6\u0003\u008cF\u0002\u03df"+ - "\u03e0\n\f\u0000\u0000\u03e0\u03e1\u0005T\u0000\u0000\u03e1\u03e6\u0003"+ - "J%\u0000\u03e2\u03e3\n\u0007\u0000\u0000\u03e3\u03e4\u0005S\u0000\u0000"+ - "\u03e4\u03e6\u0003J%\u0000\u03e5\u03c0\u0001\u0000\u0000\u0000\u03e5\u03c3"+ - "\u0001\u0000\u0000\u0000\u03e5\u03c6\u0001\u0000\u0000\u0000\u03e5\u03ca"+ - "\u0001\u0000\u0000\u0000\u03e5\u03cd\u0001\u0000\u0000\u0000\u03e5\u03d0"+ - "\u0001\u0000\u0000\u0000\u03e5\u03d3\u0001\u0000\u0000\u0000\u03e5\u03d6"+ - "\u0001\u0000\u0000\u0000\u03e5\u03d9\u0001\u0000\u0000\u0000\u03e5\u03dc"+ - "\u0001\u0000\u0000\u0000\u03e5\u03df\u0001\u0000\u0000\u0000\u03e5\u03e2"+ - "\u0001\u0000\u0000\u0000\u03e6\u03e9\u0001\u0000\u0000\u0000\u03e7\u03e5"+ - "\u0001\u0000\u0000\u0000\u03e7\u03e8\u0001\u0000\u0000\u0000\u03e8\u008d"+ - "\u0001\u0000\u0000\u0000\u03e9\u03e7\u0001\u0000\u0000\u0000\u03ea\u03eb"+ - "\u0003\u009eO\u0000\u03eb\u03ec\u0003\u00acV\u0000\u03ec\u03ed\u0003\u00ac"+ - "V\u0000\u03ed\u008f\u0001\u0000\u0000\u0000\u03ee\u03f3\u0003\u0092I\u0000"+ - "\u03ef\u03f3\u0003\u0094J\u0000\u03f0\u03f3\u0003\u0096K\u0000\u03f1\u03f3"+ - "\u0003\u0098L\u0000\u03f2\u03ee\u0001\u0000\u0000\u0000\u03f2\u03ef\u0001"+ - "\u0000\u0000\u0000\u03f2\u03f0\u0001\u0000\u0000\u0000\u03f2\u03f1\u0001"+ - "\u0000\u0000\u0000\u03f3\u0091\u0001\u0000\u0000\u0000\u03f4\u03f5\u0005"+ - "\u000e\u0000\u0000\u03f5\u03f6\u0005\u000e\u0000\u0000\u03f6\u0093\u0001"+ - "\u0000\u0000\u0000\u03f7\u03f8\u0005\u000f\u0000\u0000\u03f8\u03f9\u0005"+ - "\u000f\u0000\u0000\u03f9\u0095\u0001\u0000\u0000\u0000\u03fa\u03fb\u0005"+ - "\u000f\u0000\u0000\u03fb\u03fc\u0005\u000f\u0000\u0000\u03fc\u03fd\u0005"+ - "\u000f\u0000\u0000\u03fd\u0097\u0001\u0000\u0000\u0000\u03fe\u03ff\u0005"+ - "\u000e\u0000\u0000\u03ff\u0400\u0005\u000e\u0000\u0000\u0400\u0401\u0005"+ - "\u000e\u0000\u0000\u0401\u0099\u0001\u0000\u0000\u0000\u0402\u0406\u0003"+ - "\u009cN\u0000\u0403\u0406\u0003\u00a4R\u0000\u0404\u0406\u0003\u009eO"+ - "\u0000\u0405\u0402\u0001\u0000\u0000\u0000\u0405\u0403\u0001\u0000\u0000"+ - "\u0000\u0405\u0404\u0001\u0000\u0000\u0000\u0406\u009b\u0001\u0000\u0000"+ - "\u0000\u0407\u040e\u0003\u00a8T\u0000\u0408\u040e\u0003\u00aaU\u0000\u0409"+ - "\u040e\u0005W\u0000\u0000\u040a\u040e\u0005X\u0000\u0000\u040b\u040e\u0007"+ - "\n\u0000\u0000\u040c\u040e\u0005U\u0000\u0000\u040d\u0407\u0001\u0000"+ - "\u0000\u0000\u040d\u0408\u0001\u0000\u0000\u0000\u040d\u0409\u0001\u0000"+ - "\u0000\u0000\u040d\u040a\u0001\u0000\u0000\u0000\u040d\u040b\u0001\u0000"+ - "\u0000\u0000\u040d\u040c\u0001\u0000\u0000\u0000\u040e\u009d\u0001\u0000"+ - "\u0000\u0000\u040f\u0410\u0006O\uffff\uffff\u0000\u0410\u041a\u0003\u00a6"+ - "S\u0000\u0411\u0412\u0003\u00a0P\u0000\u0412\u0413\u0005\n\u0000\u0000"+ - "\u0413\u0414\u0003\u009eO\u0002\u0414\u041a\u0001\u0000\u0000\u0000\u0415"+ - "\u0416\u0003\u00a0P\u0000\u0416\u0417\u0005\n\u0000\u0000\u0417\u0418"+ - "\u0003~?\u0000\u0418\u041a\u0001\u0000\u0000\u0000\u0419\u040f\u0001\u0000"+ - "\u0000\u0000\u0419\u0411\u0001\u0000\u0000\u0000\u0419\u0415\u0001\u0000"+ - "\u0000\u0000\u041a\u0425\u0001\u0000\u0000\u0000\u041b\u041c\n\u0003\u0000"+ - "\u0000\u041c\u041d\u0005\b\u0000\u0000\u041d\u041e\u0003\u008cF\u0000"+ - "\u041e\u0421\u0005\t\u0000\u0000\u041f\u0420\u0005\n\u0000\u0000\u0420"+ - "\u0422\u0003\u009eO\u0000\u0421\u041f\u0001\u0000\u0000\u0000\u0421\u0422"+ - "\u0001\u0000\u0000\u0000\u0422\u0424\u0001\u0000\u0000\u0000\u0423\u041b"+ - "\u0001\u0000\u0000\u0000\u0424\u0427\u0001\u0000\u0000\u0000\u0425\u0423"+ - "\u0001\u0000\u0000\u0000\u0425\u0426\u0001\u0000\u0000\u0000\u0426\u009f"+ - "\u0001\u0000\u0000\u0000\u0427\u0425\u0001\u0000\u0000\u0000\u0428\u0429"+ - "\u0003\u00acV\u0000\u0429\u042a\u0005\u0006\u0000\u0000\u042a\u042b\u0003"+ - "\u009eO\u0000\u042b\u042c\u0005\u0007\u0000\u0000\u042c\u00a1\u0001\u0000"+ - "\u0000\u0000\u042d\u0432\u0003\u00acV\u0000\u042e\u042f\u0005\f\u0000"+ - "\u0000\u042f\u0431\u0003\u00acV\u0000\u0430\u042e\u0001\u0000\u0000\u0000"+ - "\u0431\u0434\u0001\u0000\u0000\u0000\u0432\u0430\u0001\u0000\u0000\u0000"+ - "\u0432\u0433\u0001\u0000\u0000\u0000\u0433\u00a3\u0001\u0000\u0000\u0000"+ - "\u0434\u0432\u0001\u0000\u0000\u0000\u0435\u0437\u0005\b\u0000\u0000\u0436"+ - "\u0438\u0003\u0080@\u0000\u0437\u0436\u0001\u0000\u0000\u0000\u0437\u0438"+ - "\u0001\u0000\u0000\u0000\u0438\u0439\u0001\u0000\u0000\u0000\u0439\u043a"+ - "\u0005\t\u0000\u0000\u043a\u00a5\u0001\u0000\u0000\u0000\u043b\u0450\u0003"+ - "\u00acV\u0000\u043c\u0441\u0003\u00acV\u0000\u043d\u043e\u0005\n\u0000"+ - "\u0000\u043e\u0440\u0003\u00acV\u0000\u043f\u043d\u0001\u0000\u0000\u0000"+ - "\u0440\u0443\u0001\u0000\u0000\u0000\u0441\u043f\u0001\u0000\u0000\u0000"+ - "\u0441\u0442\u0001\u0000\u0000\u0000\u0442\u0450\u0001\u0000\u0000\u0000"+ - "\u0443\u0441\u0001\u0000\u0000\u0000\u0444\u0445\u0005,\u0000\u0000\u0445"+ - "\u044a\u0003\u00acV\u0000\u0446\u0447\u0005\n\u0000\u0000\u0447\u0449"+ - "\u0003\u00acV\u0000\u0448\u0446\u0001\u0000\u0000\u0000\u0449\u044c\u0001"+ - "\u0000\u0000\u0000\u044a\u0448\u0001\u0000\u0000\u0000\u044a\u044b\u0001"+ - "\u0000\u0000\u0000\u044b\u044d\u0001\u0000\u0000\u0000\u044c\u044a\u0001"+ - "\u0000\u0000\u0000\u044d\u044e\u0005,\u0000\u0000\u044e\u0450\u0001\u0000"+ - "\u0000\u0000\u044f\u043b\u0001\u0000\u0000\u0000\u044f\u043c\u0001\u0000"+ - "\u0000\u0000\u044f\u0444\u0001\u0000\u0000\u0000\u0450\u00a7\u0001\u0000"+ - "\u0000\u0000\u0451\u0453\u0005\u0014\u0000\u0000\u0452\u0451\u0001\u0000"+ - "\u0000\u0000\u0452\u0453\u0001\u0000\u0000\u0000\u0453\u0455\u0001\u0000"+ - "\u0000\u0000\u0454\u0456\u0005Y\u0000\u0000\u0455\u0454\u0001\u0000\u0000"+ - "\u0000\u0456\u0457\u0001\u0000\u0000\u0000\u0457\u0455\u0001\u0000\u0000"+ - "\u0000\u0457\u0458\u0001\u0000\u0000\u0000\u0458\u045a\u0001\u0000\u0000"+ - "\u0000\u0459\u045b\u0005V\u0000\u0000\u045a\u0459\u0001\u0000\u0000\u0000"+ - "\u045a\u045b\u0001\u0000\u0000\u0000\u045b\u0461\u0001\u0000\u0000\u0000"+ - "\u045c\u045e\u0005Y\u0000\u0000\u045d\u045f\u0005V\u0000\u0000\u045e\u045d"+ - "\u0001\u0000\u0000\u0000\u045e\u045f\u0001\u0000\u0000\u0000\u045f\u0461"+ - "\u0001\u0000\u0000\u0000\u0460\u0452\u0001\u0000\u0000\u0000\u0460\u045c"+ - "\u0001\u0000\u0000\u0000\u0461\u00a9\u0001\u0000\u0000\u0000\u0462\u0464"+ - "\u0005\u0014\u0000\u0000\u0463\u0462\u0001\u0000\u0000\u0000\u0463\u0464"+ - "\u0001\u0000\u0000\u0000\u0464\u0466\u0001\u0000\u0000\u0000\u0465\u0467"+ - "\u0005Y\u0000\u0000\u0466\u0465\u0001\u0000\u0000\u0000\u0467\u0468\u0001"+ - "\u0000\u0000\u0000\u0468\u0466\u0001\u0000\u0000\u0000\u0468\u0469\u0001"+ - "\u0000\u0000\u0000\u0469\u046a\u0001\u0000\u0000\u0000\u046a\u046c\u0005"+ - "\n\u0000\u0000\u046b\u046d\u0005Y\u0000\u0000\u046c\u046b\u0001\u0000"+ - "\u0000\u0000\u046d\u046e\u0001\u0000\u0000\u0000\u046e\u046c\u0001\u0000"+ - "\u0000\u0000\u046e\u046f\u0001\u0000\u0000\u0000\u046f\u0471\u0001\u0000"+ - "\u0000\u0000\u0470\u0472\u0005V\u0000\u0000\u0471\u0470\u0001\u0000\u0000"+ - "\u0000\u0471\u0472\u0001\u0000\u0000\u0000\u0472\u00ab\u0001\u0000\u0000"+ - "\u0000\u0473\u0474\u0005V\u0000\u0000\u0474\u00ad\u0001\u0000\u0000\u0000"+ - "\u0087\u00af\u00b4\u00c2\u00c7\u00d2\u00d6\u00da\u00e1\u00ed\u00f3\u00f6"+ - "\u00f9\u00fd\u0107\u010c\u0112\u011a\u0123\u0132\u0139\u013e\u014a\u0155"+ - "\u0162\u016c\u0170\u0175\u017a\u0182\u0187\u0190\u0194\u0199\u01a3\u01a8"+ - "\u01af\u01b3\u01ba\u01c3\u01cb\u01d1\u01d6\u01de\u01e0\u01e9\u01f1\u021a"+ - "\u021e\u022b\u022f\u0234\u023a\u023e\u0243\u024d\u0256\u025d\u0261\u0269"+ - "\u0282\u0286\u028c\u0295\u0299\u02a1\u02a9\u02ae\u02b3\u02b6\u02ba\u02bf"+ - "\u02c4\u02c9\u02ce\u02d1\u02d5\u02da\u02df\u02e4\u02e9\u02ee\u02f3\u02f8"+ - "\u02fa\u02ff\u0303\u0309\u030c\u0311\u0316\u031d\u0323\u0330\u0334\u0339"+ - "\u033f\u0345\u0350\u0356\u035f\u0365\u0367\u036d\u0373\u037a\u0383\u0387"+ - "\u038a\u038e\u0397\u03a0\u03a9\u03be\u03e5\u03e7\u03f2\u0405\u040d\u0419"+ - "\u0421\u0425\u0432\u0437\u0441\u044a\u044f\u0452\u0457\u045a\u045e\u0460"+ - "\u0463\u0468\u046e\u0471"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.tokens b/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.tokens deleted file mode 100644 index fdb52e6..0000000 --- a/src/main/java/com/github/kechinvv/libslpluginij/antlr/LibSLParser.tokens +++ /dev/null @@ -1,178 +0,0 @@ -SEMICOLON=1 -ASSIGN_OP=2 -EQ=3 -L_BRACE=4 -R_BRACE=5 -L_BRACKET=6 -R_BRACKET=7 -L_SQUARE_BRACKET=8 -R_SQUARE_BRACKET=9 -DOT=10 -COLON=11 -COMMA=12 -MINUS_ARROW=13 -L_ARROW=14 -R_ARROW=15 -ASTERISK=16 -SLASH=17 -PERCENT=18 -PLUS=19 -MINUS=20 -INCREMENT=21 -DECREMENT=22 -PLUS_EQ=23 -MINUS_EQ=24 -ASTERISK_EQ=25 -SLASH_EQ=26 -PERCENT_EQ=27 -EXCLAMATION=28 -EXCLAMATION_EQ=29 -L_ARROW_EQ=30 -R_ARROW_EQ=31 -AMPERSAND=32 -DOUBLE_AMPERSAND=33 -BIT_OR=34 -LOGIC_OR=35 -XOR=36 -TILDE=37 -AMPERSAND_EQ=38 -OR_EQ=39 -XOR_EQ=40 -R_SHIFT_EQ=41 -L_SHIFT_EQ=42 -APOSTROPHE=43 -BACK_QOUTE=44 -ImportStatement=45 -IncludeStatement=46 -IMPORT=47 -INCLUDE=48 -LIBSL=49 -LIBRARY=50 -VERSION=51 -LANGUAGE=52 -URL=53 -TYPEALIAS=54 -TYPE=55 -TYPES=56 -ENUM=57 -ANNOTATION=58 -AUTOMATON=59 -CONCEPT=60 -VAR=61 -VAL=62 -INITSTATE=63 -STATE=64 -FINISHSTATE=65 -SHIFT=66 -NEW=67 -FUN=68 -CONSTRUCTOR=69 -DESTRUCTOR=70 -PROC=71 -AT=72 -ACTION=73 -REQUIRES=74 -ENSURES=75 -ASSIGNS=76 -TRUE=77 -FALSE=78 -DEFINE=79 -IF=80 -ELSE=81 -BY=82 -IS=83 -AS=84 -NULL=85 -Identifier=86 -DoubleQuotedString=87 -CHARACTER=88 -Digit=89 -Hex=90 -WS=91 -BR=92 -COMMENT=93 -LINE_COMMENT=94 -BAD_CHARACTER=95 -';'=1 -'='=2 -'=='=3 -'{'=4 -'}'=5 -'('=6 -')'=7 -'['=8 -']'=9 -'.'=10 -':'=11 -','=12 -'->'=13 -'<'=14 -'>'=15 -'*'=16 -'/'=17 -'%'=18 -'+'=19 -'-'=20 -'++'=21 -'--'=22 -'+='=23 -'-='=24 -'*='=25 -'/='=26 -'%='=27 -'!'=28 -'!='=29 -'<='=30 -'>='=31 -'&'=32 -'&&'=33 -'|'=34 -'||'=35 -'^'=36 -'~'=37 -'&='=38 -'|='=39 -'^='=40 -'>>='=41 -'<<='=42 -'\''=43 -'`'=44 -'import'=47 -'include'=48 -'libsl'=49 -'library'=50 -'version'=51 -'language'=52 -'url'=53 -'typealias'=54 -'type'=55 -'types'=56 -'enum'=57 -'annotation'=58 -'automaton'=59 -'concept'=60 -'var'=61 -'val'=62 -'initstate'=63 -'state'=64 -'finishstate'=65 -'shift'=66 -'new'=67 -'fun'=68 -'constructor'=69 -'destructor'=70 -'proc'=71 -'@'=72 -'action'=73 -'requires'=74 -'ensures'=75 -'assigns'=76 -'true'=77 -'false'=78 -'define'=79 -'if'=80 -'else'=81 -'by'=82 -'is'=83 -'as'=84 -'null'=85 diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFindUsagesProvider.java b/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFindUsagesProvider.java index e8b7f88..e24e006 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFindUsagesProvider.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFindUsagesProvider.java @@ -1,19 +1,12 @@ package com.github.kechinvv.libslpluginij.language; -import com.github.kechinvv.libslpluginij.antlr.LibSLLexer; import com.github.kechinvv.libslpluginij.language.psi.rules.LslIdentifier; -import com.intellij.lang.cacheBuilder.DefaultWordsScanner; import com.intellij.lang.cacheBuilder.WordsScanner; import com.intellij.lang.findUsages.EmptyFindUsagesProvider; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiElement; -import com.intellij.psi.tree.TokenSet; -import org.antlr.intellij.adaptor.lexer.ANTLRLexerAdaptor; -import org.intellij.lang.annotations.Identifier; import org.jetbrains.annotations.NotNull; -import static com.github.kechinvv.libslpluginij.language.LibSLParserDefinition.tokens; - public class LibSLFindUsagesProvider extends EmptyFindUsagesProvider { public static final Logger LOG = Logger.getInstance("FindUsage"); diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLSyntaxHighlighter.java b/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLSyntaxHighlighter.java index 9828313..6f79792 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLSyntaxHighlighter.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLSyntaxHighlighter.java @@ -1,7 +1,6 @@ package com.github.kechinvv.libslpluginij.language.highlight; import com.github.kechinvv.libslpluginij.antlr.LibSLLexer; -import com.github.kechinvv.libslpluginij.antlr.LibSLParser; import com.github.kechinvv.libslpluginij.language.LibSL; import com.github.kechinvv.libslpluginij.language.psi.LibSLTokenSets; import com.intellij.lexer.Lexer; @@ -11,8 +10,6 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighterBase; import com.intellij.psi.tree.IElementType; import org.antlr.intellij.adaptor.lexer.ANTLRLexerAdaptor; -import org.antlr.intellij.adaptor.lexer.PSIElementTypeFactory; -import org.antlr.intellij.adaptor.lexer.TokenIElementType; import org.jetbrains.annotations.NotNull; import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey; diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java index 20634bc..c5b14e4 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java @@ -15,11 +15,6 @@ import org.antlr.intellij.adaptor.lexer.RuleIElementType; import org.antlr.intellij.adaptor.lexer.TokenIElementType; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.function.Predicate; - import static com.github.kechinvv.libslpluginij.language.LibSLParserDefinition.tokens; public class PsiElementFactory { From 124a531a027578d93a3ee198d5d88a426ccdc02a Mon Sep 17 00:00:00 2001 From: kechinvv Date: Thu, 20 Feb 2025 17:06:55 +0300 Subject: [PATCH 2/6] upd grammar, support new IJ versions --- CHANGELOG.md | 8 +- gradle.properties | 8 +- src/main/antlr/LibSLLexer.g4 | 94 +++++++++++++++++-- src/main/antlr/LibSLParser.g4 | 77 ++++++++++----- .../dialogs/DynamicToolsPanel.java | 19 ++-- .../language/interaction/LibSLBlock.java | 3 +- .../language/psi/LibSLTokenSets.java | 5 +- .../language/psi/PsiElementFactory.java | 16 +++- .../language/psi/rules/LslGenericBound.java | 12 +++ .../language/psi/rules/LslTypeArgument.java | 11 +++ .../language/psi/rules/LslTypeConstraint.java | 12 +++ .../language/psi/rules/LslTypeExpression.java | 12 +++ .../psi/rules/LslTypeIdentifierBounded.java | 12 +++ .../psi/rules/LslTypeIdentifierName.java | 12 +++ .../psi/rules/LslWhereConstraint.java | 12 +++ .../libslpluginij/project/LslPanel.kt | 9 +- 16 files changed, 270 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslGenericBound.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeArgument.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeConstraint.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeExpression.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierBounded.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierName.java create mode 100644 src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslWhereConstraint.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d7592d..b3c6e53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,11 @@ ### Added -- LibSL project generation and detection -- LibSL Tools dynamic actions -- File templates -- Folding +- LibSL grammar upd +- support new versions of IJ ### Changed ### Fixed -- Intents for params - [Unreleased]: https://github.com/kechinvv/LibSLPluginIJ/commits diff --git a/gradle.properties b/gradle.properties index 33be1b6..9a7c77a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,19 +4,19 @@ pluginGroup = com.github.kechinvv.libslpluginij pluginName = LibSL Support pluginRepositoryUrl = https://github.com/kechinvv/LibSLPluginIJ # SemVer format -> https://semver.org -pluginVersion = 0.1.0 +pluginVersion = 0.1.1 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 223 -pluginUntilBuild = 241.* +pluginUntilBuild = 251.* # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension platformType = IC -platformVersion = 2023.3 +platformVersion = 2024.3.3 # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 -platformPlugins = com.intellij.java +platformPlugins = com.intellij.java, PsiViewer:243.7768 # Gradle Releases -> https://github.com/gradle/gradle/releases gradleVersion = 8.5 diff --git a/src/main/antlr/LibSLLexer.g4 b/src/main/antlr/LibSLLexer.g4 index 7c6e03c..d825698 100644 --- a/src/main/antlr/LibSLLexer.g4 +++ b/src/main/antlr/LibSLLexer.g4 @@ -1,6 +1,5 @@ lexer grammar LibSLLexer; - SEMICOLON : ';' ; ASSIGN_OP : '=' ; @@ -253,6 +252,55 @@ NULL : 'null' ; +IN + : 'in' + ; + +OUT + : 'out' + ; + +WHERE + : 'where' + ; + +IntegerLiteral: + DecimalIntegerLiteral + | HexIntegerLiteral + | OctalIntegerLiteral + | BinaryIntegerLiteral +; + +fragment DecimalIntegerLiteral: DecimalNumeral IntegerTypeSuffix?; + +fragment HexIntegerLiteral: HexNumeral IntegerTypeSuffix?; + +fragment OctalIntegerLiteral: OctalNumeral IntegerTypeSuffix?; + +fragment BinaryIntegerLiteral: BinaryNumeral IntegerTypeSuffix?; + +fragment DecimalNumeral: '0' | NonZeroDigit (Digits?); + +fragment IntegerTypeSuffix: [lLxsu] | 'ux' | 'us' | 'uL'; + +FloatingPointLiteral: DecimalFloatingPointLiteral; + +fragment DecimalFloatingPointLiteral: + Digits '.' Digits? ExponentPart? FloatTypeSuffix? + | Digits ExponentPart FloatTypeSuffix? + | Digits FloatTypeSuffix +; + +fragment ExponentPart: ExponentIndicator SignedInteger; + +fragment ExponentIndicator: [eE]; + +fragment SignedInteger: Sign? Digits; + +fragment Sign: [+-]; + +fragment FloatTypeSuffix: [fFdD]; + Identifier : [a-zA-Z_$][a-zA-Z0-9_$]* | '`' .*? '`' @@ -271,19 +319,43 @@ CHARACTER | '\'' EscapeSequence '\'' ; -fragment -SingleCharacter +fragment SingleCharacter : ~['\\\r\n] ; -fragment -EscapeSequence - : '\\u' Hex Hex Hex Hex Hex Hex Hex Hex +fragment EscapeSequence + : '\\' [btnfr"'\\] + | UnicodeEscape + | OctalEscape ; +fragment UnicodeEscape: '\\' 'u'+ Hex Hex Hex Hex; + +fragment OctalEscape: + '\\' OctalDigit + | '\\' OctalDigit OctalDigit + | '\\' ZeroToThree OctalDigit OctalDigit +; + +fragment ZeroToThree: [0-3]; + +fragment Digits: Digit+; + Digit: ('0'..'9'); -Hex: Digit | ('A'..'F'); +fragment NonZeroDigit: [1-9]; + +fragment Hex: Digit | [a-fA-F]; + +fragment HexNumeral: '0' [xX] Hex+; + +fragment OctalNumeral: '0' OctalDigit+; + +fragment OctalDigit: [0-7]; + +fragment BinaryNumeral: '0' [bB] BinaryDigit+; + +fragment BinaryDigit: [01]; fragment NEWLINE @@ -309,6 +381,10 @@ LINE_COMMENT : ('//' ~[\r\n]*) -> channel(HIDDEN) ; +UNBOUNDED + : '?' + ; + BAD_CHARACTER - : . - ; \ No newline at end of file + : . + ; \ No newline at end of file diff --git a/src/main/antlr/LibSLParser.g4 b/src/main/antlr/LibSLParser.g4 index ff4f76b..099e678 100644 --- a/src/main/antlr/LibSLParser.g4 +++ b/src/main/antlr/LibSLParser.g4 @@ -56,10 +56,9 @@ typealiasStatement * syntax: type full.name { field1: Type; field2: Type; ... } */ typeDefBlock - : annotationUsage* TYPE name=periodSeparatedFullName generic? targetType? typeDefBlockBody? + : annotationUsage* TYPE type=typeIdentifier targetType? whereConstraints? typeDefBlockBody? ; - targetType : (IS typeIdentifier)? for=identifier typeList ; @@ -140,7 +139,7 @@ annotationDeclParamsPart actionDecl : annotationUsage* - DEFINE ACTION actionName=identifier L_BRACKET actionDeclParamList? R_BRACKET (COLON actionType=typeIdentifier)? SEMICOLON + DEFINE ACTION generic? actionName=identifier L_BRACKET actionDeclParamList? R_BRACKET (COLON actionType=typeIdentifier)? whereConstraints? SEMICOLON ; actionDeclParamList @@ -158,7 +157,7 @@ actionParameter */ automatonDecl : annotationUsage* AUTOMATON CONCEPT? name=periodSeparatedFullName (L_BRACKET constructorVariables* R_BRACKET)? - COLON type=typeIdentifier implementedConcepts* automatonBody + COLON type=typeExpression implementedConcepts* automatonBody ; automatonBody @@ -231,20 +230,36 @@ variableDecl ; nameWithType - : name=identifier COLON type=typeIdentifier + : name=identifier COLON type=typeExpression ; /* * syntax: one.two.three */ + +typeExpression + : typeIdentifier + | typeExpression AMPERSAND typeExpression + | typeExpression BIT_OR typeExpression + ; + typeIdentifier - : (asterisk=ASTERISK)? name=periodSeparatedFullName generic? + : (asterisk=ASTERISK)? name=typeIdentifierName generic? ; generic - : (L_ARROW typeIdentifier (COMMA typeIdentifier)* R_ARROW) + : (L_ARROW typeArgument (COMMA typeArgument)* R_ARROW) ; +typeArgument + : typeIdentifier + | typeIdentifierBounded + ; + +typeIdentifierBounded + : genericBound typeIdentifier + ; + variableAssignment : qualifiedAccess op=ASSIGN_OP assignmentRight SEMICOLON | qualifiedAccess op=(PLUS_EQ | MINUS_EQ | ASTERISK_EQ | SLASH_EQ | PERCENT_EQ) assignmentRight SEMICOLON @@ -254,11 +269,10 @@ variableAssignment assignmentRight : expression - | callAutomatonConstructorWithNamedArgs ; callAutomatonConstructorWithNamedArgs - : NEW name=periodSeparatedFullName L_BRACKET (namedArgs)? R_BRACKET + : NEW name=periodSeparatedFullName generic? L_BRACKET (namedArgs)? R_BRACKET ; namedArgs @@ -297,8 +311,8 @@ procDecl ; procHeader - : annotationUsage* PROC headerWithAsterisk? functionName=identifier L_BRACKET functionDeclArgList? R_BRACKET - (COLON functionType=typeIdentifier)? + : annotationUsage* PROC headerWithAsterisk? functionName=identifier generic? L_BRACKET functionDeclArgList? R_BRACKET + (COLON functionType=typeExpression)? whereConstraints? ; /* * syntax: @Annotation @@ -310,8 +324,8 @@ functionDecl ; functionHeader - : annotationUsage* modifier=identifier? FUN (automatonName=periodSeparatedFullName DOT)? headerWithAsterisk? functionName=identifier - L_BRACKET functionDeclArgList? R_BRACKET (COLON functionType=typeIdentifier)? + : annotationUsage* modifier=identifier? FUN (automatonName=periodSeparatedFullName DOT)? headerWithAsterisk? functionName=identifier generic? + L_BRACKET functionDeclArgList? R_BRACKET (COLON functionType=typeExpression)? whereConstraints? ; functionDeclArgList @@ -319,7 +333,7 @@ functionDeclArgList ; parameter - : annotationUsage* name=identifier COLON type=typeIdentifier + : annotationUsage* name=identifier COLON type=typeExpression ; /* annotation @@ -364,11 +378,11 @@ elseStatement * syntax: action ActionName(args) */ actionUsage - : ACTION identifier L_BRACKET expressionsList? R_BRACKET + : ACTION identifier generic? L_BRACKET expressionsList? R_BRACKET ; procUsage - : qualifiedAccess L_BRACKET expressionsList? R_BRACKET + : qualifiedAccess generic? L_BRACKET expressionsList? R_BRACKET ; expressionsList @@ -503,7 +517,7 @@ qualifiedAccess ; simpleCall - : identifier L_BRACKET qualifiedAccess R_BRACKET + : identifier generic? L_BRACKET qualifiedAccess R_BRACKET ; identifierList @@ -518,17 +532,38 @@ periodSeparatedFullName : identifier | identifier (DOT identifier)* | BACK_QOUTE identifier (DOT identifier)* BACK_QOUTE + | UNBOUNDED ; integerNumber - : MINUS? Digit+ Identifier? - | Digit Identifier? + : (MINUS | PLUS)? IntegerLiteral ; floatNumber - : MINUS? Digit+ DOT Digit+ Identifier? + : (MINUS | PLUS)? FloatingPointLiteral + ; + +suffix + : identifier + ; + +typeConstraint + : paramName=identifier COLON paramConstraint=typeArgument + ; + +whereConstraints + : WHERE typeConstraint (COMMA typeConstraint)* + ; + +genericBound + : bound=(IN | OUT) + ; + +typeIdentifierName + : periodSeparatedFullName + | primitiveLiteral ; identifier : Identifier - ; + ; \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/DynamicToolsPanel.java b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/DynamicToolsPanel.java index 0fd5aab..1090683 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/DynamicToolsPanel.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/DynamicToolsPanel.java @@ -8,9 +8,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.ui.JBColor; import com.intellij.ui.components.JBScrollPane; -import com.intellij.util.ui.InlineIconButton; import com.intellij.util.ui.JBUI; -import kotlinx.html.B; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -147,9 +145,18 @@ private void addActionToPanel(LslToolAction action) { labelName.setBorder(JBUI.Borders.empty(4)); firstLine.add(labelName, BorderLayout.LINE_START); - var deleteActionButton = new InlineIconButton(LibSLIcon.DELETE, LibSLIcon.DELETE_HOVERED); + var deleteActionButton = new JButton(LibSLIcon.DELETE); + deleteActionButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + deleteActionButton.setIcon(LibSLIcon.DELETE_HOVERED); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + deleteActionButton.setIcon(LibSLIcon.DELETE); + } + }); deleteActionButton.setBorder(JBUI.Borders.empty(4)); - deleteActionButton.setActionListener(e -> { + deleteActionButton.addActionListener(e -> { var deleteApprove = new DeleteApprovePanel(project, labelName.getText()); deleteApprove.show(); if (deleteApprove.getExitCode() == OK_EXIT_CODE) { @@ -166,10 +173,10 @@ private void addActionToPanel(LslToolAction action) { labelCmd.setBorder(JBUI.Borders.empty(4)); secondLine.add(labelCmd); - var copyButton = new InlineIconButton(LibSLIcon.COPY); + var copyButton = new JButton(LibSLIcon.COPY); copyButton.setBorder(JBUI.Borders.empty(4)); copyButton.setToolTipText("Copy cmd value"); - copyButton.setActionListener(e -> { + copyButton.addActionListener(e -> { var stringSelection = new StringSelection(labelCmd.getText()); var clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLBlock.java b/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLBlock.java index c40f3c7..7e3f48a 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLBlock.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLBlock.java @@ -5,6 +5,7 @@ import com.github.kechinvv.libslpluginij.language.psi.rules.LslElseStatement; import com.github.kechinvv.libslpluginij.language.psi.rules.LslTargetType; import com.github.kechinvv.libslpluginij.language.psi.rules.LslTopLevelDecl; +import com.github.kechinvv.libslpluginij.language.psi.rules.LslWhereConstraint; import com.github.kechinvv.libslpluginij.language.psi.rules.interfaces.LslParametersOwner; import com.github.kechinvv.libslpluginij.language.psi.rules.interfaces.LslStatement; import com.github.kechinvv.libslpluginij.language.psi.rules.interfaces.LslStatementsOwner; @@ -87,7 +88,7 @@ public Indent getIndent() { //Tabulation for libsl version declaration, links e.t.c. if (LibSLTokenSets.INSTANCE.TAB_HEADER.contains(elementType) || - element instanceof LslTargetType) + element instanceof LslTargetType || element instanceof LslWhereConstraint) return Indent.getNormalIndent(); return Indent.getNoneIndent(); diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/LibSLTokenSets.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/LibSLTokenSets.java index 55b7800..de2c6fd 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/LibSLTokenSets.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/LibSLTokenSets.java @@ -67,7 +67,10 @@ public class LibSLTokenSets { tokens.get(LibSLLexer.BY), tokens.get(LibSLLexer.IS), tokens.get(LibSLLexer.AS), - tokens.get(LibSLLexer.NULL) + tokens.get(LibSLLexer.NULL), + tokens.get(LibSLLexer.IN), + tokens.get(LibSLLexer.OUT), + tokens.get(LibSLLexer.WHERE) ); public TokenSet OPERATIONS = TokenSet.create( diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java index c5b14e4..d19032e 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/PsiElementFactory.java @@ -63,14 +63,21 @@ public PsiElement createElement(ASTNode node) { case LibSLParser.RULE_concept -> new LslConcept(node); case LibSLParser.RULE_automatonStateDecl -> new LslAutomatonStateDecl(node); case LibSLParser.RULE_automatonShiftDecl -> new LslAutomatonShiftDecl(node); - case LibSLParser.RULE_functionsList -> new LslFunctionsList(node); case LibSLParser.RULE_shiftByList -> new LslShiftByList(node); case LibSLParser.RULE_shiftFromList -> new LslShiftFromList(node); + case LibSLParser.RULE_functionsList -> new LslFunctionsList(node); case LibSLParser.RULE_functionsListPart -> new LslFunctionsListPart(node); case LibSLParser.RULE_variableDecl -> new LslVariableDecl(node); case LibSLParser.RULE_nameWithType -> new LslNameWithType(node); + + case LibSLParser.RULE_typeExpression -> new LslTypeExpression(node); + case LibSLParser.RULE_typeIdentifier -> new LslTypeIdentifier(node); case LibSLParser.RULE_generic -> new LslGeneric(node); + + case LibSLParser.RULE_typeArgument -> new LslTypeArgument(node); + case LibSLParser.RULE_typeIdentifierBounded -> new LslTypeIdentifierBounded(node); + case LibSLParser.RULE_variableAssignment -> new VariableAssignment(node); case LibSLParser.RULE_assignmentRight -> new LslAssignmentRight(node); case LibSLParser.RULE_callAutomatonConstructorWithNamedArgs -> @@ -119,6 +126,13 @@ public PsiElement createElement(ASTNode node) { case LibSLParser.RULE_periodSeparatedFullName -> new LslPeriodSeparatedFullName(node); case LibSLParser.RULE_integerNumber -> new LslIntegerNumber(node); case LibSLParser.RULE_floatNumber -> new LslFloatNumber(node); + + case LibSLParser.RULE_suffix -> new LslSuffix(node); + case LibSLParser.RULE_typeConstraint -> new LslTypeConstraint(node); + case LibSLParser.RULE_whereConstraints -> new LslWhereConstraint(node); + case LibSLParser.RULE_genericBound -> new LslGenericBound(node); + case LibSLParser.RULE_typeIdentifierName -> new LslTypeIdentifierName(node); + case LibSLParser.RULE_identifier -> new LslIdentifier(node); default -> new ASTWrapperPsiElement(node); }; diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslGenericBound.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslGenericBound.java new file mode 100644 index 0000000..2aee76a --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslGenericBound.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslGenericBound extends ASTWrapperPsiElement { + public LslGenericBound(@NotNull ASTNode node) { + super(node); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeArgument.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeArgument.java new file mode 100644 index 0000000..66e37ec --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeArgument.java @@ -0,0 +1,11 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +public class LslTypeArgument extends ASTWrapperPsiElement { + public LslTypeArgument(@NotNull ASTNode node) { + super(node); + } +} diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeConstraint.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeConstraint.java new file mode 100644 index 0000000..328777d --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeConstraint.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslTypeConstraint extends ASTWrapperPsiElement { + public LslTypeConstraint(@NotNull ASTNode node) { + super(node); + } +} diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeExpression.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeExpression.java new file mode 100644 index 0000000..24133e8 --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeExpression.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslTypeExpression extends ASTWrapperPsiElement { + public LslTypeExpression(@NotNull ASTNode node) { + super(node); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierBounded.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierBounded.java new file mode 100644 index 0000000..8038d65 --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierBounded.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslTypeIdentifierBounded extends ASTWrapperPsiElement { + public LslTypeIdentifierBounded(@NotNull ASTNode node) { + super(node); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierName.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierName.java new file mode 100644 index 0000000..ad3da91 --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslTypeIdentifierName.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslTypeIdentifierName extends ASTWrapperPsiElement { + public LslTypeIdentifierName(@NotNull ASTNode node) { + super(node); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslWhereConstraint.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslWhereConstraint.java new file mode 100644 index 0000000..7d907fa --- /dev/null +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/LslWhereConstraint.java @@ -0,0 +1,12 @@ +package com.github.kechinvv.libslpluginij.language.psi.rules; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + + +public class LslWhereConstraint extends ASTWrapperPsiElement { + public LslWhereConstraint(@NotNull ASTNode node) { + super(node); + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/kechinvv/libslpluginij/project/LslPanel.kt b/src/main/kotlin/com/github/kechinvv/libslpluginij/project/LslPanel.kt index 03d97ec..cf8d8e1 100644 --- a/src/main/kotlin/com/github/kechinvv/libslpluginij/project/LslPanel.kt +++ b/src/main/kotlin/com/github/kechinvv/libslpluginij/project/LslPanel.kt @@ -11,6 +11,7 @@ import com.intellij.ide.util.projectWizard.ModuleWizardStep import com.intellij.ide.util.projectWizard.WizardContext import com.intellij.ide.wizard.withVisualPadding import com.intellij.openapi.Disposable +import com.intellij.openapi.fileChooser.FileChooserDescriptor import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory import com.intellij.openapi.observable.properties.GraphProperty import com.intellij.openapi.observable.properties.PropertyGraph @@ -164,13 +165,15 @@ class LslPanel(val context: LslContext) : ModuleWizardStep() { locationProperty: GraphProperty, wizardContext: WizardContext ): Cell { - val fileChooserDescriptor = - FileChooserDescriptorFactory.createSingleLocalFileDescriptor().withFileFilter { it.isDirectory } + //TODO: what happened with file choose descriptor? +// val fileChooserDescriptor = +// FileChooserDescriptorFactory.createSingleLocalFileDescriptor().withFileFilter { it.isDirectory } val fileChosen = { file: VirtualFile -> getPresentablePath(file.path) } val title = IdeBundle.message("title.select.project.file.directory", wizardContext.presentationName) val property = locationProperty.transform(::getPresentablePath, ::getCanonicalPath) - return this.textFieldWithBrowseButton(title, wizardContext.project, fileChooserDescriptor, fileChosen) + return this.textFieldWithBrowseButton(title, wizardContext.project, fileChosen) .bindText(property) + } private fun getLocationComment(): @Nls String { From 87f340be7b09f5bbd0ed2ccb4d8f726b17f93e43 Mon Sep 17 00:00:00 2001 From: kechinvv Date: Thu, 20 Feb 2025 17:09:55 +0300 Subject: [PATCH 3/6] upd actions --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b009097..5f0c6a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: # Store already-built plugin as an artifact for downloading - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ steps.artifact.outputs.filename }} path: ./build/distributions/content/*/* @@ -107,7 +107,7 @@ jobs: # Set up Java environment for the next steps - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: zulu java-version: 17 From 0da2f642834666575963e54cedad00adedeb9b9e Mon Sep 17 00:00:00 2001 From: kechinvv Date: Thu, 20 Feb 2025 17:15:57 +0300 Subject: [PATCH 4/6] upd actions --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f0c6a6..8259c24 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: # Set up Java environment for the next steps - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: zulu java-version: 17 @@ -125,14 +125,14 @@ jobs: # Collect Tests Result of failed tests - name: Collect Tests Result if: ${{ failure() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: tests-result path: ${{ github.workspace }}/build/reports/tests # Upload the Kover report to CodeCov - name: Upload Code Coverage Report - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v5 with: files: ${{ github.workspace }}/build/reports/kover/report.xml @@ -160,7 +160,7 @@ jobs: # Set up Java environment for the next steps - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: zulu java-version: 17 @@ -191,7 +191,7 @@ jobs: # Set up Java environment for the next steps - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: zulu java-version: 17 @@ -216,7 +216,7 @@ jobs: # Collect Plugin Verifier Result - name: Collect Plugin Verifier Result if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pluginVerifier-result path: ${{ github.workspace }}/build/reports/pluginVerifier @@ -238,7 +238,7 @@ jobs: # Set up Java environment for the next steps - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: zulu java-version: 17 From b675a34cdd1283fba0cd1f75542384e9f59bf3c2 Mon Sep 17 00:00:00 2001 From: kechinvv Date: Thu, 20 Feb 2025 17:31:52 +0300 Subject: [PATCH 5/6] format --- .../kechinvv/libslpluginij/actions/ConfigurationAction.java | 2 -- .../kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java | 2 +- .../github/kechinvv/libslpluginij/language/LibSLFileType.java | 2 ++ .../language/highlight/LibSLColorSettingsPage.java | 4 ---- .../language/interaction/LibSLCodeStyleSettingsProvider.java | 2 ++ .../language/psi/rules/interfaces/LslCallable.java | 1 - .../kechinvv/libslpluginij/storage/ActionHolderConverter.kt | 3 +-- .../libslpluginij/toolWindow/LibSLToolOutputWindowFactory.kt | 2 -- .../github/kechinvv/libslpluginij/toolWindow/ToolStartUp.kt | 2 -- 9 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/github/kechinvv/libslpluginij/actions/ConfigurationAction.java b/src/main/java/com/github/kechinvv/libslpluginij/actions/ConfigurationAction.java index d90ea7f..ffea4eb 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/actions/ConfigurationAction.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/actions/ConfigurationAction.java @@ -7,8 +7,6 @@ import com.intellij.openapi.ui.DialogWrapper; import org.jetbrains.annotations.NotNull; -import static com.github.kechinvv.libslpluginij.actions.utils.ActionUtils.visibleForDir; -import static com.github.kechinvv.libslpluginij.actions.utils.ActionUtils.visibleForFile; public class ConfigurationAction extends AnAction { diff --git a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java index 59e9510..52f889e 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java @@ -8,7 +8,7 @@ @Service @State(name = "LibSLGenSettings") -public class LibSLToolsComponent implements PersistentStateComponent { +public final class LibSLToolsComponent implements PersistentStateComponent { private LibSLToolsStore mySettings = new LibSLToolsStore(); diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFileType.java b/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFileType.java index c96cf60..403dcc9 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFileType.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/LibSLFileType.java @@ -4,7 +4,9 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; + import static com.github.kechinvv.libslpluginij.LslNames.message; + public final class LibSLFileType extends LanguageFileType { public static final LibSLFileType INSTANCE = new LibSLFileType(); diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLColorSettingsPage.java b/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLColorSettingsPage.java index f3f9af3..f8f250f 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLColorSettingsPage.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/highlight/LibSLColorSettingsPage.java @@ -11,11 +11,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.io.File; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Paths; import java.util.Map; import static com.github.kechinvv.libslpluginij.LslNames.message; diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLCodeStyleSettingsProvider.java b/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLCodeStyleSettingsProvider.java index 27ea22c..8cd74db 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLCodeStyleSettingsProvider.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/interaction/LibSLCodeStyleSettingsProvider.java @@ -9,7 +9,9 @@ import com.intellij.psi.codeStyle.CodeStyleSettingsProvider; import com.intellij.psi.codeStyle.CustomCodeStyleSettings; import org.jetbrains.annotations.NotNull; + import static com.github.kechinvv.libslpluginij.LslNames.message; + final class LibSLCodeStyleSettingsProvider extends CodeStyleSettingsProvider { @Override diff --git a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/interfaces/LslCallable.java b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/interfaces/LslCallable.java index c025502..a45bf99 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/interfaces/LslCallable.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/language/psi/rules/interfaces/LslCallable.java @@ -1,7 +1,6 @@ package com.github.kechinvv.libslpluginij.language.psi.rules.interfaces; import com.github.kechinvv.libslpluginij.language.psi.rules.LslFunctionBody; -import com.github.kechinvv.libslpluginij.language.psi.rules.LslFunctionHeader; public interface LslCallable { diff --git a/src/main/kotlin/com/github/kechinvv/libslpluginij/storage/ActionHolderConverter.kt b/src/main/kotlin/com/github/kechinvv/libslpluginij/storage/ActionHolderConverter.kt index f120f7e..9d6e928 100644 --- a/src/main/kotlin/com/github/kechinvv/libslpluginij/storage/ActionHolderConverter.kt +++ b/src/main/kotlin/com/github/kechinvv/libslpluginij/storage/ActionHolderConverter.kt @@ -1,9 +1,8 @@ package com.github.kechinvv.libslpluginij.storage import com.intellij.util.xmlb.Converter -import kotlinx.serialization.json.Json import kotlinx.serialization.encodeToString -import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json class ActionHolderConverter : Converter>() { override fun toString(actions: Map): String { diff --git a/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/LibSLToolOutputWindowFactory.kt b/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/LibSLToolOutputWindowFactory.kt index 9cbb59e..9a155f2 100644 --- a/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/LibSLToolOutputWindowFactory.kt +++ b/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/LibSLToolOutputWindowFactory.kt @@ -1,10 +1,8 @@ package com.github.kechinvv.libslpluginij.toolWindow -import com.github.kechinvv.libslpluginij.actions.utils.ActionUtils.isLibSLModule import com.intellij.execution.filters.TextConsoleBuilderFactory import com.intellij.execution.ui.ConsoleView import com.intellij.execution.ui.ConsoleViewContentType -import com.intellij.openapi.application.runReadAction import com.intellij.openapi.project.Project import com.intellij.openapi.wm.ToolWindow import com.intellij.openapi.wm.ToolWindowFactory diff --git a/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/ToolStartUp.kt b/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/ToolStartUp.kt index e7f921a..a5a4688 100644 --- a/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/ToolStartUp.kt +++ b/src/main/kotlin/com/github/kechinvv/libslpluginij/toolWindow/ToolStartUp.kt @@ -4,10 +4,8 @@ import com.github.kechinvv.libslpluginij.LslNames.message import com.github.kechinvv.libslpluginij.actions.utils.ActionUtils.createAction import com.github.kechinvv.libslpluginij.dialogs.LibSLToolsStore import com.intellij.openapi.project.Project -import com.intellij.openapi.startup.ProjectActivity import com.intellij.openapi.startup.StartupActivity import com.intellij.openapi.wm.ToolWindowManager -import javax.swing.SwingUtilities class ToolStartUp : StartupActivity { From 28826331ca30cb0e0475089e01a95a806ca6fac3 Mon Sep 17 00:00:00 2001 From: kechinvv Date: Thu, 20 Feb 2025 18:15:02 +0300 Subject: [PATCH 6/6] temporally remove test, set service level for lsl tools --- build.gradle.kts | 4 +- .../dialogs/LibSLToolsComponent.java | 2 +- .../libslpluginij/LibSLPSIFileRootTests.kt | 61 +++++++++---------- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index c69414d..337f419 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,8 +31,8 @@ dependencies { antlr("org.antlr:antlr4:4.13.1") implementation("org.antlr:antlr4-intellij-adaptor:0.1") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") - testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.4") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.4") } diff --git a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java index 52f889e..2d1c379 100644 --- a/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java +++ b/src/main/java/com/github/kechinvv/libslpluginij/dialogs/LibSLToolsComponent.java @@ -6,7 +6,7 @@ import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; -@Service +@Service(Service.Level.PROJECT) @State(name = "LibSLGenSettings") public final class LibSLToolsComponent implements PersistentStateComponent { diff --git a/src/test/kotlin/com/github/kechinvv/libslpluginij/LibSLPSIFileRootTests.kt b/src/test/kotlin/com/github/kechinvv/libslpluginij/LibSLPSIFileRootTests.kt index fac7ac4..5d63aec 100644 --- a/src/test/kotlin/com/github/kechinvv/libslpluginij/LibSLPSIFileRootTests.kt +++ b/src/test/kotlin/com/github/kechinvv/libslpluginij/LibSLPSIFileRootTests.kt @@ -1,31 +1,30 @@ -package com.github.kechinvv.libslpluginij - -import com.github.kechinvv.libslpluginij.language.LibSL -import com.github.kechinvv.libslpluginij.language.psi.PsiElementFactory -import com.intellij.psi.impl.source.tree.LeafPsiElement -import com.intellij.psi.tree.IElementType -import com.intellij.testFramework.fixtures.BasePlatformTestCase -import org.junit.jupiter.api.Test - -class LibSLPSIFileRootTests : BasePlatformTestCase() { - - init { - setUp() - } - - @Test - fun testRootT() { - myFixture.configureByFiles("CRC32.automaton.lsl") - println(myFixture.file.language) - } - - @Test - fun testCreate() { - PsiElementFactory.INSTANCE.createElement(LeafPsiElement(IElementType("s", LibSL.INSTANCE),"sdfdsf")) - } - - override fun getTestDataPath(): String { - return "src/test/testData" - } - -} \ No newline at end of file +//package com.github.kechinvv.libslpluginij +// +//import com.github.kechinvv.libslpluginij.language.LibSL +//import com.github.kechinvv.libslpluginij.language.psi.PsiElementFactory +//import com.intellij.psi.impl.source.tree.LeafPsiElement +//import com.intellij.psi.tree.IElementType +//import com.intellij.testFramework.fixtures.BasePlatformTestCase +// +//class LibSLPSIFileRootTests : BasePlatformTestCase() { +// +// init { +// setUp() +// } +// +// @Test +// fun testRootT() { +// myFixture.configureByFiles("CRC32.automaton.lsl") +// println(myFixture.file.language) +// } +// +// @Test +// fun testCreate() { +// PsiElementFactory.INSTANCE.createElement(LeafPsiElement(IElementType("s", LibSL.INSTANCE), "sdfdsf")) +// } +// +// override fun getTestDataPath(): String { +// return "src/test/testData" +// } +// +//} \ No newline at end of file