diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 659dbc7..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -qt_ui/ filter=lfs diff=lfs merge=lfs -text diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cc6247..1f98903 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,6 @@ enable_testing() # library in subdirectory add_subdirectory(3rd) add_subdirectory(src) -# add_subdirectory(test) # excutable diff --git a/README.md b/README.md index 0199d24..4f0c20a 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,22 @@ -# 所以你★star★了吗!!! -# millet porridge III --stage3 +# 环境 +- x86 Debian GNU/Linux 12 +- Python 3.11.2 +- gcc version 12.2.2 +- openJDK version "17.0.12" +- NASM version 2.16.01 +- antlr complete & runtime Version: 4.9.3 -``` -package main - -var a int=1; - -func add1(x,y int) (int, int) { - x = x + 1 - y = y + 1 - return x,y -} - -func main() { - var a int; - var b int = 4-(2+4-4)+3; - a=0; - if a < 20 { - a = 2; - } else { - if a < 10 { - a = 1; - } else { - a = 3; - } - } - for i := 0; i <= 10; i++ { - a = i; - } - a,b=add1(a,b) - a,b=add1(1,2) - // var -} -``` - -``` - 9 Operater: ADD src1: IMM: 2 src2: IMM: 4 dst: VAR: T8 - 10 Operater: SUB src1: VAR: T8 src2: IMM: 4 dst: VAR: T10 - 11 Operater: SUB src1: IMM: 4 src2: VAR: T10 dst: VAR: T11 - 12 Operater: ADD src1: VAR: T11 src2: IMM: 3 dst: VAR: T13 - 13 Operater: ASSIGN src1: VAR: T13 src2: NULL_: dst: VAR: b - 14 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: a - 15 Operater: IFGE src1: VAR: a src2: IMM: 20 dst: VAR: ELSE0 - 16 Operater: ASSIGN src1: IMM: 2 src2: NULL_: dst: VAR: a - 17 Operater: GOTO src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_: - 18 Operater: LABEL src1: NULL_: ELSE0 src2: NULL_: dst: NULL_: - 19 Operater: IFGE src1: VAR: a src2: IMM: 10 dst: VAR: ELSE1 - 20 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a - 21 Operater: GOTO src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_: - 22 Operater: LABEL src1: NULL_: ELSE1 src2: NULL_: dst: NULL_: - 23 Operater: ASSIGN src1: IMM: 3 src2: NULL_: dst: VAR: a - 24 Operater: LABEL src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_: - 25 Operater: LABEL src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_: - 26 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: i - 27 Operater: IFGT src1: VAR: i src2: IMM: 10 dst: VAR:ENDFOR0 - 28 Operater: LABEL src1: NULL_:FORLOOP0 src2: NULL_: dst: NULL_: - 29 Operater: ASSIGN src1: VAR: i src2: NULL_: dst: VAR: a - 30 Operater: ADD src1: VAR: i src2: IMM: 1 dst: VAR: i - 31 Operater: IFLE src1: VAR: i src2: IMM: 10 dst: VAR:FORLOOP0 - 32 Operater: LABEL src1: NULL_:ENDFOR0 src2: NULL_: dst: NULL_: - 33 Operater: RET src1: VAR: T22 src2: NULL_: dst: NULL_: - 34 Operater: RET src1: VAR: T23 src2: NULL_: dst: NULL_: - 35 Operater: PARA src1: VAR: a src2: NULL_: dst: NULL_: - 36 Operater: PARA src1: VAR: b src2: NULL_: dst: NULL_: - 37 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_: - 38 Operater: ASSIGN src1: VAR: T22 src2: NULL_: dst: VAR: a - 39 Operater: ASSIGN src1: VAR: T23 src2: NULL_: dst: VAR: b - 40 Operater: RET src1: VAR: T26 src2: NULL_: dst: NULL_: - 41 Operater: RET src1: VAR: T27 src2: NULL_: dst: NULL_: - 42 Operater: PARA src1: IMM: 1 src2: NULL_: dst: NULL_: - 43 Operater: PARA src1: IMM: 2 src2: NULL_: dst: NULL_: - 44 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_: - 45 Operater: ASSIGN src1: VAR: T26 src2: NULL_: dst: VAR: a - 46 Operater: ASSIGN src1: VAR: T27 src2: NULL_: dst: VAR: b ----------------------- - 1 Operater: FUN_PARA src1: VAR: x src2: NULL_: dst: NULL_: - 2 Operater: FUN_PARA src1: VAR: y src2: NULL_: dst: NULL_: - 3 Operater: ADD src1: VAR: x src2: IMM: 1 dst: VAR: T2 - 4 Operater: ASSIGN src1: VAR: T2 src2: NULL_: dst: VAR: x - 5 Operater: ADD src1: VAR: y src2: IMM: 1 dst: VAR: T4 - 6 Operater: ASSIGN src1: VAR: T4 src2: NULL_: dst: VAR: y - 7 Operater: FUN_RET src1: VAR: x src2: NULL_: dst: NULL_: - 8 Operater: FUN_RET src1: VAR: y src2: NULL_: dst: NULL_: ----------------------- - 0 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a ----------------------- -``` - -生成汇编: +# 执行 ```shell -./tjugo ../example/.go +bash runme.sh ``` -运行汇编: +参数说明: +1. -d (--dir): [default: ./ ] 输出文件路径 +2. -3 (--3code): [default: 3code.txt] 输出 3code 文件名 +3. -a (--asm): [default: out] 输出 asm 文件名 +4. -b (--bin): [default: bin] 输出 bin 文件名 -```shell -. ../scripts/run_asm.sh -``` +# 文件结构 diff --git a/demo/assign1.go b/demo/error01.go similarity index 100% rename from demo/assign1.go rename to demo/error01.go diff --git a/grammar/simple.go b/demo/simple.go similarity index 100% rename from grammar/simple.go rename to demo/simple.go diff --git a/grammar/test.go b/demo/test.go similarity index 100% rename from grammar/test.go rename to demo/test.go diff --git a/grammar/test2.go b/demo/test2.go similarity index 100% rename from grammar/test2.go rename to demo/test2.go diff --git a/grammar/test3.go b/demo/test3.go similarity index 100% rename from grammar/test3.go rename to demo/test3.go diff --git a/grammar/test4.go b/demo/test4.go similarity index 100% rename from grammar/test4.go rename to demo/test4.go diff --git a/grammar/calculate.go b/grammar/calculate.go deleted file mode 100644 index 10fec7f..0000000 --- a/grammar/calculate.go +++ /dev/null @@ -1,34 +0,0 @@ -package main - -var a int=1; - -func add1(x,y int) (int, int) { - x = x + 1 - y = y + 1 - return x,y -} - -func main() { - var a int; - var b int = 4-(2+4-4)+3; - a=0; - a++; - if a < 20 { - a = 2; - } else { - a = 3; - } - - for i := 0; i <= 10; i++ { - a = i; - } - a,b=add1(a,b) - a,b=add1(1,2) - - var array [5]int - - for i := 0; i <= 4; i++ { - array[i] = i; - a= i; - } -} diff --git a/grammar/cpp/GoLexer.cpp b/grammar/cpp/GoLexer.cpp new file mode 100644 index 0000000..db87b5e --- /dev/null +++ b/grammar/cpp/GoLexer.cpp @@ -0,0 +1,1014 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoLexer.g4 by ANTLR 4.9.3 + + +#include "GoLexer.h" + + +using namespace antlr4; + + +GoLexer::GoLexer(CharStream *input) : Lexer(input) { + _interpreter = new atn::LexerATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); +} + +GoLexer::~GoLexer() { + delete _interpreter; +} + +std::string GoLexer::getGrammarFileName() const { + return "GoLexer.g4"; +} + +const std::vector& GoLexer::getRuleNames() const { + return _ruleNames; +} + +const std::vector& GoLexer::getChannelNames() const { + return _channelNames; +} + +const std::vector& GoLexer::getModeNames() const { + return _modeNames; +} + +const std::vector& GoLexer::getTokenNames() const { + return _tokenNames; +} + +dfa::Vocabulary& GoLexer::getVocabulary() const { + return _vocabulary; +} + +const std::vector GoLexer::getSerializedATN() const { + return _serializedATN; +} + +const atn::ATN& GoLexer::getATN() const { + return _atn; +} + + + + +// Static vars and initialization. +std::vector GoLexer::_decisionToDFA; +atn::PredictionContextCache GoLexer::_sharedContextCache; + +// We own the ATN which in turn owns the ATN states. +atn::ATN GoLexer::_atn; +std::vector GoLexer::_serializedATN; + +std::vector GoLexer::_ruleNames = { + "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO", + "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG", + "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", + "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", + "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD", + "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET", + "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", + "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "HEX_MANTISSA", + "HEX_EXPONENT", "IMAGINARY_LIT", "RUNE", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", + "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", + "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", "UNICODE_VALUE", "ESCAPED_VALUE", + "DECIMALS", "OCTAL_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "EXPONENT", "LETTER", + "UNICODE_DIGIT", "UNICODE_LETTER", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI" +}; + +std::vector GoLexer::_channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" +}; + +std::vector GoLexer::_modeNames = { + "DEFAULT_MODE", "NLSEMI" +}; + +std::vector GoLexer::_literalNames = { + "", "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", + "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", + "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", + "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", + "", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "'\n'", + "'\r\n'", "':'", "'.'", "'++'", "'--'", "':='", "'...'", "", "'||'", "'&&'", + "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", + "'>>'", "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'" +}; + +std::vector GoLexer::_symbolicNames = { + "", "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", + "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG", + "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", + "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", + "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD", + "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET", + "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", + "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "IMAGINARY_LIT", + "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE", + "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT", + "TERMINATOR", "LINE_COMMENT", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI" +}; + +dfa::Vocabulary GoLexer::_vocabulary(_literalNames, _symbolicNames); + +std::vector GoLexer::_tokenNames; + +GoLexer::Initializer::Initializer() { + // This code could be in a static initializer lambda, but VS doesn't allow access to private class members from there. + for (size_t i = 0; i < _symbolicNames.size(); ++i) { + std::string name = _vocabulary.getLiteralName(i); + if (name.empty()) { + name = _vocabulary.getSymbolicName(i); + } + + if (name.empty()) { + _tokenNames.push_back(""); + } else { + _tokenNames.push_back(name); + } + } + + static const uint16_t serializedATNSegment0[] = { + 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, + 0x2, 0x5b, 0x326, 0x8, 0x1, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, + 0x9, 0x3, 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, + 0x6, 0x4, 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, + 0x4, 0xa, 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, + 0xd, 0x9, 0xd, 0x4, 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, + 0x9, 0x10, 0x4, 0x11, 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, + 0x9, 0x13, 0x4, 0x14, 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, + 0x9, 0x16, 0x4, 0x17, 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, + 0x9, 0x19, 0x4, 0x1a, 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, + 0x9, 0x1c, 0x4, 0x1d, 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, + 0x9, 0x1f, 0x4, 0x20, 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, + 0x9, 0x22, 0x4, 0x23, 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, + 0x9, 0x25, 0x4, 0x26, 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, + 0x9, 0x28, 0x4, 0x29, 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, + 0x9, 0x2b, 0x4, 0x2c, 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, + 0x9, 0x2e, 0x4, 0x2f, 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, + 0x9, 0x31, 0x4, 0x32, 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, + 0x9, 0x34, 0x4, 0x35, 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, + 0x9, 0x37, 0x4, 0x38, 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, + 0x9, 0x3a, 0x4, 0x3b, 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, + 0x9, 0x3d, 0x4, 0x3e, 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, + 0x9, 0x40, 0x4, 0x41, 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, + 0x9, 0x43, 0x4, 0x44, 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, + 0x9, 0x46, 0x4, 0x47, 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, + 0x9, 0x49, 0x4, 0x4a, 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, + 0x9, 0x4c, 0x4, 0x4d, 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, + 0x9, 0x4f, 0x4, 0x50, 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, + 0x9, 0x52, 0x4, 0x53, 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, + 0x9, 0x55, 0x4, 0x56, 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, + 0x9, 0x58, 0x4, 0x59, 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, + 0x9, 0x5b, 0x4, 0x5c, 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, + 0x9, 0x5e, 0x4, 0x5f, 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, + 0x9, 0x61, 0x4, 0x62, 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, + 0x9, 0x64, 0x4, 0x65, 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, + 0x9, 0x67, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, + 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, + 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, + 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, + 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, + 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, + 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa, + 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, + 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, + 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, + 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xf, + 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, + 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, + 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, + 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, + 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, + 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, + 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x15, 0x3, + 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, + 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, + 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x7, + 0x1c, 0x172, 0xa, 0x1c, 0xc, 0x1c, 0xe, 0x1c, 0x175, 0xb, 0x1c, 0x3, + 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, + 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, + 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x26, 0x3, 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, + 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x6, + 0x2e, 0x1a1, 0xa, 0x2e, 0xd, 0x2e, 0xe, 0x2e, 0x1a2, 0x3, 0x2e, 0x6, + 0x2e, 0x1a6, 0xa, 0x2e, 0xd, 0x2e, 0xe, 0x2e, 0x1a7, 0x3, 0x2e, 0x3, + 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x7, 0x2e, 0x1ae, 0xa, 0x2e, 0xc, 0x2e, + 0xe, 0x2e, 0x1b1, 0xb, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x5, + 0x2e, 0x1b6, 0xa, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, + 0x3, 0x30, 0x3, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, + 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, + 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, + 0x3, 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, + 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, + 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e, + 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, + 0x3, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, + 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x5, 0x44, 0x1ef, 0xa, 0x44, 0x3, + 0x44, 0x7, 0x44, 0x1f2, 0xa, 0x44, 0xc, 0x44, 0xe, 0x44, 0x1f5, 0xb, + 0x44, 0x5, 0x44, 0x1f7, 0xa, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, + 0x5, 0x45, 0x1fc, 0xa, 0x45, 0x3, 0x45, 0x6, 0x45, 0x1ff, 0xa, 0x45, + 0xd, 0x45, 0xe, 0x45, 0x200, 0x3, 0x46, 0x3, 0x46, 0x5, 0x46, 0x205, + 0xa, 0x46, 0x3, 0x46, 0x5, 0x46, 0x208, 0xa, 0x46, 0x3, 0x46, 0x6, + 0x46, 0x20b, 0xa, 0x46, 0xd, 0x46, 0xe, 0x46, 0x20c, 0x3, 0x47, 0x3, + 0x47, 0x3, 0x47, 0x5, 0x47, 0x212, 0xa, 0x47, 0x3, 0x47, 0x6, 0x47, + 0x215, 0xa, 0x47, 0xd, 0x47, 0xe, 0x47, 0x216, 0x3, 0x48, 0x3, 0x48, + 0x5, 0x48, 0x21b, 0xa, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, + 0x49, 0x220, 0xa, 0x49, 0x3, 0x49, 0x5, 0x49, 0x223, 0xa, 0x49, 0x3, + 0x49, 0x5, 0x49, 0x226, 0xa, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, + 0x5, 0x49, 0x22b, 0xa, 0x49, 0x5, 0x49, 0x22d, 0xa, 0x49, 0x3, 0x4a, + 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x5, 0x4b, + 0x235, 0xa, 0x4b, 0x3, 0x4b, 0x6, 0x4b, 0x238, 0xa, 0x4b, 0xd, 0x4b, + 0xe, 0x4b, 0x239, 0x3, 0x4b, 0x3, 0x4b, 0x5, 0x4b, 0x23e, 0xa, 0x4b, + 0x3, 0x4b, 0x7, 0x4b, 0x241, 0xa, 0x4b, 0xc, 0x4b, 0xe, 0x4b, 0x244, + 0xb, 0x4b, 0x5, 0x4b, 0x246, 0xa, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, + 0x4b, 0x5, 0x4b, 0x24b, 0xa, 0x4b, 0x3, 0x4b, 0x7, 0x4b, 0x24e, 0xa, + 0x4b, 0xc, 0x4b, 0xe, 0x4b, 0x251, 0xb, 0x4b, 0x5, 0x4b, 0x253, 0xa, + 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x5, 0x4c, 0x257, 0xa, 0x4c, 0x3, 0x4c, + 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, + 0x5, 0x4d, 0x260, 0xa, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, + 0x4e, 0x3, 0x4e, 0x5, 0x4e, 0x267, 0xa, 0x4e, 0x3, 0x4e, 0x3, 0x4e, + 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x5, 0x50, 0x26f, 0xa, + 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, + 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, + 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, + 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x55, 0x3, + 0x55, 0x7, 0x55, 0x28f, 0xa, 0x55, 0xc, 0x55, 0xe, 0x55, 0x292, 0xb, + 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x7, + 0x56, 0x299, 0xa, 0x56, 0xc, 0x56, 0xe, 0x56, 0x29c, 0xb, 0x56, 0x3, + 0x56, 0x3, 0x56, 0x3, 0x57, 0x6, 0x57, 0x2a1, 0xa, 0x57, 0xd, 0x57, + 0xe, 0x57, 0x2a2, 0x3, 0x57, 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3, + 0x58, 0x3, 0x58, 0x7, 0x58, 0x2ab, 0xa, 0x58, 0xc, 0x58, 0xe, 0x58, + 0x2ae, 0xb, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, + 0x58, 0x3, 0x59, 0x6, 0x59, 0x2b6, 0xa, 0x59, 0xd, 0x59, 0xe, 0x59, + 0x2b7, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, + 0x5a, 0x7, 0x5a, 0x2c0, 0xa, 0x5a, 0xc, 0x5a, 0xe, 0x5a, 0x2c3, 0xb, + 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, + 0x5b, 0x5, 0x5b, 0x2cb, 0xa, 0x5b, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x5, 0x5c, + 0x2e7, 0xa, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x5, 0x5d, 0x2eb, 0xa, 0x5d, + 0x3, 0x5d, 0x7, 0x5d, 0x2ee, 0xa, 0x5d, 0xc, 0x5d, 0xe, 0x5d, 0x2f1, + 0xb, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, + 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, 0x2fb, 0xa, 0x61, 0x3, + 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x5, 0x62, 0x301, 0xa, 0x62, + 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x6, 0x65, + 0x308, 0xa, 0x65, 0xd, 0x65, 0xe, 0x65, 0x309, 0x3, 0x65, 0x3, 0x65, + 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x7, 0x66, 0x312, 0xa, + 0x66, 0xc, 0x66, 0xe, 0x66, 0x315, 0xb, 0x66, 0x3, 0x66, 0x3, 0x66, + 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, + 0x3, 0x67, 0x7, 0x67, 0x320, 0xa, 0x67, 0xc, 0x67, 0xe, 0x67, 0x323, + 0xb, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, 0x1af, 0x2ac, 0x313, 0x2, 0x68, + 0x4, 0x3, 0x6, 0x4, 0x8, 0x5, 0xa, 0x6, 0xc, 0x7, 0xe, 0x8, 0x10, + 0x9, 0x12, 0xa, 0x14, 0xb, 0x16, 0xc, 0x18, 0xd, 0x1a, 0xe, 0x1c, + 0xf, 0x1e, 0x10, 0x20, 0x11, 0x22, 0x12, 0x24, 0x13, 0x26, 0x14, + 0x28, 0x15, 0x2a, 0x16, 0x2c, 0x17, 0x2e, 0x18, 0x30, 0x19, 0x32, + 0x1a, 0x34, 0x1b, 0x36, 0x1c, 0x38, 0x1d, 0x3a, 0x1e, 0x3c, 0x1f, + 0x3e, 0x20, 0x40, 0x21, 0x42, 0x22, 0x44, 0x23, 0x46, 0x24, 0x48, + 0x25, 0x4a, 0x26, 0x4c, 0x27, 0x4e, 0x28, 0x50, 0x29, 0x52, 0x2a, + 0x54, 0x2b, 0x56, 0x2c, 0x58, 0x2d, 0x5a, 0x2e, 0x5c, 0x2f, 0x5e, + 0x30, 0x60, 0x31, 0x62, 0x32, 0x64, 0x33, 0x66, 0x34, 0x68, 0x35, + 0x6a, 0x36, 0x6c, 0x37, 0x6e, 0x38, 0x70, 0x39, 0x72, 0x3a, 0x74, + 0x3b, 0x76, 0x3c, 0x78, 0x3d, 0x7a, 0x3e, 0x7c, 0x3f, 0x7e, 0x40, + 0x80, 0x41, 0x82, 0x42, 0x84, 0x43, 0x86, 0x44, 0x88, 0x45, 0x8a, + 0x46, 0x8c, 0x47, 0x8e, 0x48, 0x90, 0x49, 0x92, 0x4a, 0x94, 0x4b, + 0x96, 0x2, 0x98, 0x2, 0x9a, 0x4c, 0x9c, 0x2, 0x9e, 0x4d, 0xa0, 0x4e, + 0xa2, 0x4f, 0xa4, 0x50, 0xa6, 0x51, 0xa8, 0x52, 0xaa, 0x53, 0xac, + 0x54, 0xae, 0x55, 0xb0, 0x56, 0xb2, 0x57, 0xb4, 0x58, 0xb6, 0x2, + 0xb8, 0x2, 0xba, 0x2, 0xbc, 0x2, 0xbe, 0x2, 0xc0, 0x2, 0xc2, 0x2, + 0xc4, 0x2, 0xc6, 0x2, 0xc8, 0x2, 0xca, 0x59, 0xcc, 0x5a, 0xce, 0x5b, + 0x4, 0x2, 0x3, 0x13, 0x3, 0x2, 0x33, 0x3b, 0x3, 0x2, 0x32, 0x3b, + 0x4, 0x2, 0x44, 0x44, 0x64, 0x64, 0x4, 0x2, 0x51, 0x51, 0x71, 0x71, + 0x4, 0x2, 0x5a, 0x5a, 0x7a, 0x7a, 0x4, 0x2, 0x52, 0x52, 0x72, 0x72, + 0x4, 0x2, 0x2d, 0x2d, 0x2f, 0x2f, 0x3, 0x2, 0x62, 0x62, 0x4, 0x2, + 0x24, 0x24, 0x5e, 0x5e, 0x4, 0x2, 0xb, 0xb, 0x22, 0x22, 0x4, 0x2, + 0xc, 0xc, 0xf, 0xf, 0x5, 0x2, 0xc, 0xc, 0xf, 0xf, 0x29, 0x29, 0xb, + 0x2, 0x24, 0x24, 0x29, 0x29, 0x5e, 0x5e, 0x63, 0x64, 0x68, 0x68, + 0x70, 0x70, 0x74, 0x74, 0x76, 0x76, 0x78, 0x78, 0x3, 0x2, 0x32, 0x39, + 0x5, 0x2, 0x32, 0x3b, 0x43, 0x48, 0x63, 0x68, 0x3, 0x2, 0x32, 0x33, + 0x4, 0x2, 0x47, 0x47, 0x67, 0x67, 0x4, 0x3f, 0x2, 0x32, 0x2, 0x3b, + 0x2, 0x662, 0x2, 0x66b, 0x2, 0x6f2, 0x2, 0x6fb, 0x2, 0x7c2, 0x2, + 0x7cb, 0x2, 0x968, 0x2, 0x971, 0x2, 0x9e8, 0x2, 0x9f1, 0x2, 0xa68, + 0x2, 0xa71, 0x2, 0xae8, 0x2, 0xaf1, 0x2, 0xb68, 0x2, 0xb71, 0x2, + 0xbe8, 0x2, 0xbf1, 0x2, 0xc68, 0x2, 0xc71, 0x2, 0xce8, 0x2, 0xcf1, + 0x2, 0xd68, 0x2, 0xd71, 0x2, 0xde8, 0x2, 0xdf1, 0x2, 0xe52, 0x2, + 0xe5b, 0x2, 0xed2, 0x2, 0xedb, 0x2, 0xf22, 0x2, 0xf2b, 0x2, 0x1042, + 0x2, 0x104b, 0x2, 0x1092, 0x2, 0x109b, 0x2, 0x17e2, 0x2, 0x17eb, + 0x2, 0x1812, 0x2, 0x181b, 0x2, 0x1948, 0x2, 0x1951, 0x2, 0x19d2, + 0x2, 0x19db, 0x2, 0x1a82, 0x2, 0x1a8b, 0x2, 0x1a92, 0x2, 0x1a9b, + 0x2, 0x1b52, 0x2, 0x1b5b, 0x2, 0x1bb2, 0x2, 0x1bbb, 0x2, 0x1c42, + 0x2, 0x1c4b, 0x2, 0x1c52, 0x2, 0x1c5b, 0x2, 0xa622, 0x2, 0xa62b, + 0x2, 0xa8d2, 0x2, 0xa8db, 0x2, 0xa902, 0x2, 0xa90b, 0x2, 0xa9d2, + 0x2, 0xa9db, 0x2, 0xa9f2, 0x2, 0xa9fb, 0x2, 0xaa52, 0x2, 0xaa5b, + 0x2, 0xabf2, 0x2, 0xabfb, 0x2, 0xff12, 0x2, 0xff1b, 0x2, 0x4a2, 0x3, + 0x4ab, 0x3, 0xd32, 0x3, 0xd3b, 0x3, 0x1068, 0x3, 0x1071, 0x3, 0x10f2, + 0x3, 0x10fb, 0x3, 0x1138, 0x3, 0x1141, 0x3, 0x11d2, 0x3, 0x11db, + 0x3, 0x12f2, 0x3, 0x12fb, 0x3, 0x1452, 0x3, 0x145b, 0x3, 0x14d2, + 0x3, 0x14db, 0x3, 0x1652, 0x3, 0x165b, 0x3, 0x16c2, 0x3, 0x16cb, + 0x3, 0x1732, 0x3, 0x173b, 0x3, 0x18e2, 0x3, 0x18eb, 0x3, 0x1952, + 0x3, 0x195b, 0x3, 0x1c52, 0x3, 0x1c5b, 0x3, 0x1d52, 0x3, 0x1d5b, + 0x3, 0x1da2, 0x3, 0x1dab, 0x3, 0x6a62, 0x3, 0x6a6b, 0x3, 0x6b52, + 0x3, 0x6b5b, 0x3, 0xd7d0, 0x3, 0xd801, 0x3, 0xe142, 0x3, 0xe14b, + 0x3, 0xe2f2, 0x3, 0xe2fb, 0x3, 0xe952, 0x3, 0xe95b, 0x3, 0xfbf2, + 0x3, 0xfbfb, 0x3, 0x270, 0x2, 0x43, 0x2, 0x5c, 0x2, 0x63, 0x2, 0x7c, + 0x2, 0xac, 0x2, 0xac, 0x2, 0xb7, 0x2, 0xb7, 0x2, 0xbc, 0x2, 0xbc, + 0x2, 0xc2, 0x2, 0xd8, 0x2, 0xda, 0x2, 0xf8, 0x2, 0xfa, 0x2, 0x2c3, + 0x2, 0x2c8, 0x2, 0x2d3, 0x2, 0x2e2, 0x2, 0x2e6, 0x2, 0x2ee, 0x2, + 0x2ee, 0x2, 0x2f0, 0x2, 0x2f0, 0x2, 0x372, 0x2, 0x376, 0x2, 0x378, + 0x2, 0x379, 0x2, 0x37c, 0x2, 0x37f, 0x2, 0x381, 0x2, 0x381, 0x2, + 0x388, 0x2, 0x388, 0x2, 0x38a, 0x2, 0x38c, 0x2, 0x38e, 0x2, 0x38e, + 0x2, 0x390, 0x2, 0x3a3, 0x2, 0x3a5, 0x2, 0x3f7, 0x2, 0x3f9, 0x2, + 0x483, 0x2, 0x48c, 0x2, 0x531, 0x2, 0x533, 0x2, 0x558, 0x2, 0x55b, + 0x2, 0x55b, 0x2, 0x562, 0x2, 0x58a, 0x2, 0x5d2, 0x2, 0x5ec, 0x2, + 0x5f1, 0x2, 0x5f4, 0x2, 0x622, 0x2, 0x64c, 0x2, 0x670, 0x2, 0x671, + 0x2, 0x673, 0x2, 0x6d5, 0x2, 0x6d7, 0x2, 0x6d7, 0x2, 0x6e7, 0x2, + 0x6e8, 0x2, 0x6f0, 0x2, 0x6f1, 0x2, 0x6fc, 0x2, 0x6fe, 0x2, 0x701, + 0x2, 0x701, 0x2, 0x712, 0x2, 0x712, 0x2, 0x714, 0x2, 0x731, 0x2, + 0x74f, 0x2, 0x7a7, 0x2, 0x7b3, 0x2, 0x7b3, 0x2, 0x7cc, 0x2, 0x7ec, + 0x2, 0x7f6, 0x2, 0x7f7, 0x2, 0x7fc, 0x2, 0x7fc, 0x2, 0x802, 0x2, + 0x817, 0x2, 0x81c, 0x2, 0x81c, 0x2, 0x826, 0x2, 0x826, 0x2, 0x82a, + 0x2, 0x82a, 0x2, 0x842, 0x2, 0x85a, 0x2, 0x862, 0x2, 0x86c, 0x2, + 0x8a2, 0x2, 0x8b6, 0x2, 0x8b8, 0x2, 0x8c9, 0x2, 0x906, 0x2, 0x93b, + 0x2, 0x93f, 0x2, 0x93f, 0x2, 0x952, 0x2, 0x952, 0x2, 0x95a, 0x2, + 0x963, 0x2, 0x973, 0x2, 0x982, 0x2, 0x987, 0x2, 0x98e, 0x2, 0x991, + 0x2, 0x992, 0x2, 0x995, 0x2, 0x9aa, 0x2, 0x9ac, 0x2, 0x9b2, 0x2, + 0x9b4, 0x2, 0x9b4, 0x2, 0x9b8, 0x2, 0x9bb, 0x2, 0x9bf, 0x2, 0x9bf, + 0x2, 0x9d0, 0x2, 0x9d0, 0x2, 0x9de, 0x2, 0x9df, 0x2, 0x9e1, 0x2, + 0x9e3, 0x2, 0x9f2, 0x2, 0x9f3, 0x2, 0x9fe, 0x2, 0x9fe, 0x2, 0xa07, + 0x2, 0xa0c, 0x2, 0xa11, 0x2, 0xa12, 0x2, 0xa15, 0x2, 0xa2a, 0x2, + 0xa2c, 0x2, 0xa32, 0x2, 0xa34, 0x2, 0xa35, 0x2, 0xa37, 0x2, 0xa38, + 0x2, 0xa3a, 0x2, 0xa3b, 0x2, 0xa5b, 0x2, 0xa5e, 0x2, 0xa60, 0x2, + 0xa60, 0x2, 0xa74, 0x2, 0xa76, 0x2, 0xa87, 0x2, 0xa8f, 0x2, 0xa91, + 0x2, 0xa93, 0x2, 0xa95, 0x2, 0xaaa, 0x2, 0xaac, 0x2, 0xab2, 0x2, + 0xab4, 0x2, 0xab5, 0x2, 0xab7, 0x2, 0xabb, 0x2, 0xabf, 0x2, 0xabf, + 0x2, 0xad2, 0x2, 0xad2, 0x2, 0xae2, 0x2, 0xae3, 0x2, 0xafb, 0x2, + 0xafb, 0x2, 0xb07, 0x2, 0xb0e, 0x2, 0xb11, 0x2, 0xb12, 0x2, 0xb15, + 0x2, 0xb2a, 0x2, 0xb2c, 0x2, 0xb32, 0x2, 0xb34, 0x2, 0xb35, 0x2, + 0xb37, 0x2, 0xb3b, 0x2, 0xb3f, 0x2, 0xb3f, 0x2, 0xb5e, 0x2, 0xb5f, + 0x2, 0xb61, 0x2, 0xb63, 0x2, 0xb73, 0x2, 0xb73, 0x2, 0xb85, 0x2, + 0xb85, 0x2, 0xb87, 0x2, 0xb8c, 0x2, 0xb90, 0x2, 0xb92, 0x2, 0xb94, + 0x2, 0xb97, 0x2, 0xb9b, 0x2, 0xb9c, 0x2, 0xb9e, 0x2, 0xb9e, 0x2, + 0xba0, 0x2, 0xba1, 0x2, 0xba5, 0x2, 0xba6, 0x2, 0xbaa, 0x2, 0xbac, + 0x2, 0xbb0, 0x2, 0xbbb, 0x2, 0xbd2, 0x2, 0xbd2, 0x2, 0xc07, 0x2, + 0xc0e, 0x2, 0xc10, 0x2, 0xc12, 0x2, 0xc14, 0x2, 0xc2a, 0x2, 0xc2c, + 0x2, 0xc3b, 0x2, 0xc3f, 0x2, 0xc3f, 0x2, 0xc5a, 0x2, 0xc5c, 0x2, + 0xc62, 0x2, 0xc63, 0x2, 0xc82, 0x2, 0xc82, 0x2, 0xc87, 0x2, 0xc8e, + 0x2, 0xc90, 0x2, 0xc92, 0x2, 0xc94, 0x2, 0xcaa, 0x2, 0xcac, 0x2, + 0xcb5, 0x2, 0xcb7, 0x2, 0xcbb, 0x2, 0xcbf, 0x2, 0xcbf, 0x2, 0xce0, + 0x2, 0xce0, 0x2, 0xce2, 0x2, 0xce3, 0x2, 0xcf3, 0x2, 0xcf4, 0x2, + 0xd06, 0x2, 0xd0e, 0x2, 0xd10, 0x2, 0xd12, 0x2, 0xd14, 0x2, 0xd3c, + 0x2, 0xd3f, 0x2, 0xd3f, 0x2, 0xd50, 0x2, 0xd50, 0x2, 0xd56, 0x2, + 0xd58, 0x2, 0xd61, 0x2, 0xd63, 0x2, 0xd7c, 0x2, 0xd81, 0x2, 0xd87, + 0x2, 0xd98, 0x2, 0xd9c, 0x2, 0xdb3, 0x2, 0xdb5, 0x2, 0xdbd, 0x2, + 0xdbf, 0x2, 0xdbf, 0x2, 0xdc2, 0x2, 0xdc8, 0x2, 0xe03, 0x2, 0xe32, + 0x2, 0xe34, 0x2, 0xe35, 0x2, 0xe42, 0x2, 0xe48, 0x2, 0xe83, 0x2, + 0xe84, 0x2, 0xe86, 0x2, 0xe86, 0x2, 0xe88, 0x2, 0xe8c, 0x2, 0xe8e, + 0x2, 0xea5, 0x2, 0xea7, 0x2, 0xea7, 0x2, 0xea9, 0x2, 0xeb2, 0x2, + 0xeb4, 0x2, 0xeb5, 0x2, 0xebf, 0x2, 0xebf, 0x2, 0xec2, 0x2, 0xec6, + 0x2, 0xec8, 0x2, 0xec8, 0x2, 0xede, 0x2, 0xee1, 0x2, 0xf02, 0x2, + 0xf02, 0x2, 0xf42, 0x2, 0xf49, 0x2, 0xf4b, 0x2, 0xf6e, 0x2, 0xf8a, + 0x2, 0xf8e, 0x2, 0x1002, 0x2, 0x102c, 0x2, 0x1041, 0x2, 0x1041, 0x2, + 0x1052, 0x2, 0x1057, 0x2, 0x105c, 0x2, 0x105f, 0x2, 0x1063, 0x2, + 0x1063, 0x2, 0x1067, 0x2, 0x1068, 0x2, 0x1070, 0x2, 0x1072, 0x2, + 0x1077, 0x2, 0x1083, 0x2, 0x1090, 0x2, 0x1090, 0x2, 0x10a2, 0x2, + 0x10c7, 0x2, 0x10c9, 0x2, 0x10c9, 0x2, 0x10cf, 0x2, 0x10cf, 0x2, + 0x10d2, 0x2, 0x10fc, 0x2, 0x10fe, 0x2, 0x124a, 0x2, 0x124c, 0x2, + 0x124f, 0x2, 0x1252, 0x2, 0x1258, 0x2, 0x125a, 0x2, 0x125a, 0x2, + 0x125c, 0x2, 0x125f, 0x2, 0x1262, 0x2, 0x128a, 0x2, 0x128c, 0x2, + 0x128f, 0x2, 0x1292, 0x2, 0x12b2, 0x2, 0x12b4, 0x2, 0x12b7, 0x2, + 0x12ba, 0x2, 0x12c0, 0x2, 0x12c2, 0x2, 0x12c2, 0x2, 0x12c4, 0x2, + 0x12c7, 0x2, 0x12ca, 0x2, 0x12d8, 0x2, 0x12da, 0x2, 0x1312, 0x2, + 0x1314, 0x2, 0x1317, 0x2, 0x131a, 0x2, 0x135c, 0x2, 0x1382, 0x2, + 0x1391, 0x2, 0x13a2, 0x2, 0x13f7, 0x2, 0x13fa, 0x2, 0x13ff, 0x2, + 0x1403, 0x2, 0x166e, 0x2, 0x1671, 0x2, 0x1681, 0x2, 0x1683, 0x2, + 0x169c, 0x2, 0x16a2, 0x2, 0x16ec, 0x2, 0x16f3, 0x2, 0x16fa, 0x2, + 0x1702, 0x2, 0x170e, 0x2, 0x1710, 0x2, 0x1713, 0x2, 0x1722, 0x2, + 0x1733, 0x2, 0x1742, 0x2, 0x1753, 0x2, 0x1762, 0x2, 0x176e, 0x2, + 0x1770, 0x2, 0x1772, 0x2, 0x1782, 0x2, 0x17b5, 0x2, 0x17d9, 0x2, + 0x17d9, 0x2, 0x17de, 0x2, 0x17de, 0x2, 0x1822, 0x2, 0x187a, 0x2, + 0x1882, 0x2, 0x1886, 0x2, 0x1889, 0x2, 0x18aa, 0x2, 0x18ac, 0x2, + 0x18ac, 0x2, 0x18b2, 0x2, 0x18f7, 0x2, 0x1902, 0x2, 0x1920, 0x2, + 0x1952, 0x2, 0x196f, 0x2, 0x1972, 0x2, 0x1976, 0x2, 0x1982, 0x2, + 0x19ad, 0x2, 0x19b2, 0x2, 0x19cb, 0x2, 0x1a02, 0x2, 0x1a18, 0x2, + 0x1a22, 0x2, 0x1a56, 0x2, 0x1aa9, 0x2, 0x1aa9, 0x2, 0x1b07, 0x2, + 0x1b35, 0x2, 0x1b47, 0x2, 0x1b4d, 0x2, 0x1b85, 0x2, 0x1ba2, 0x2, + 0x1bb0, 0x2, 0x1bb1, 0x2, 0x1bbc, 0x2, 0x1be7, 0x2, 0x1c02, 0x2, + 0x1c25, 0x2, 0x1c4f, 0x2, 0x1c51, 0x2, 0x1c5c, 0x2, 0x1c7f, 0x2, + 0x1c82, 0x2, 0x1c8a, 0x2, 0x1c92, 0x2, 0x1cbc, 0x2, 0x1cbf, 0x2, + 0x1cc1, 0x2, 0x1ceb, 0x2, 0x1cee, 0x2, 0x1cf0, 0x2, 0x1cf5, 0x2, + 0x1cf7, 0x2, 0x1cf8, 0x2, 0x1cfc, 0x2, 0x1cfc, 0x2, 0x1d02, 0x2, + 0x1dc1, 0x2, 0x1e02, 0x2, 0x1f17, 0x2, 0x1f1a, 0x2, 0x1f1f, 0x2, + 0x1f22, 0x2, 0x1f47, 0x2, 0x1f4a, 0x2, 0x1f4f, 0x2, 0x1f52, 0x2, + 0x1f59, 0x2, 0x1f5b, 0x2, 0x1f5b, 0x2, 0x1f5d, 0x2, 0x1f5d, 0x2, + 0x1f5f, 0x2, 0x1f5f, 0x2, 0x1f61, 0x2, 0x1f7f, 0x2, 0x1f82, 0x2, + 0x1fb6, 0x2, 0x1fb8, 0x2, 0x1fbe, 0x2, 0x1fc0, 0x2, 0x1fc0, 0x2, + 0x1fc4, 0x2, 0x1fc6, 0x2, 0x1fc8, 0x2, 0x1fce, 0x2, 0x1fd2, 0x2, + 0x1fd5, 0x2, 0x1fd8, 0x2, 0x1fdd, 0x2, 0x1fe2, 0x2, 0x1fee, 0x2, + 0x1ff4, 0x2, 0x1ff6, 0x2, 0x1ff8, 0x2, 0x1ffe, 0x2, 0x2073, 0x2, + 0x2073, 0x2, 0x2081, 0x2, 0x2081, 0x2, 0x2092, 0x2, 0x209e, 0x2, + 0x2104, 0x2, 0x2104, 0x2, 0x2109, 0x2, 0x2109, 0x2, 0x210c, 0x2, + 0x2115, 0x2, 0x2117, 0x2, 0x2117, 0x2, 0x211b, 0x2, 0x211f, 0x2, + 0x2126, 0x2, 0x2126, 0x2, 0x2128, 0x2, 0x2128, 0x2, 0x212a, 0x2, + 0x212a, 0x2, 0x212c, 0x2, 0x212f, 0x2, 0x2131, 0x2, 0x213b, 0x2, + 0x213e, 0x2, 0x2141, 0x2, 0x2147, 0x2, 0x214b, 0x2, 0x2150, 0x2, + 0x2150, 0x2, 0x2185, 0x2, 0x2186, 0x2, 0x2c02, 0x2, 0x2c30, 0x2, + 0x2c32, 0x2, 0x2c60, 0x2, 0x2c62, 0x2, 0x2ce6, 0x2, 0x2ced, 0x2, + 0x2cf0, 0x2, 0x2cf4, 0x2, 0x2cf5, 0x2, 0x2d02, 0x2, 0x2d27, 0x2, + 0x2d29, 0x2, 0x2d29, 0x2, 0x2d2f, 0x2, 0x2d2f, 0x2, 0x2d32, 0x2, + 0x2d69, 0x2, 0x2d71, 0x2, 0x2d71, 0x2, 0x2d82, 0x2, 0x2d98, 0x2, + 0x2da2, 0x2, 0x2da8, 0x2, 0x2daa, 0x2, 0x2db0, 0x2, 0x2db2, 0x2, + 0x2db8, 0x2, 0x2dba, 0x2, 0x2dc0, 0x2, 0x2dc2, 0x2, 0x2dc8, 0x2, + 0x2dca, 0x2, 0x2dd0, 0x2, 0x2dd2, 0x2, 0x2dd8, 0x2, 0x2dda, 0x2, + 0x2de0, 0x2, 0x2e31, 0x2, 0x2e31, 0x2, 0x3007, 0x2, 0x3008, 0x2, + 0x3033, 0x2, 0x3037, 0x2, 0x303d, 0x2, 0x303e, 0x2, 0x3043, 0x2, + 0x3098, 0x2, 0x309f, 0x2, 0x30a1, 0x2, 0x30a3, 0x2, 0x30fc, 0x2, + 0x30fe, 0x2, 0x3101, 0x2, 0x3107, 0x2, 0x3131, 0x2, 0x3133, 0x2, + 0x3190, 0x2, 0x31a2, 0x2, 0x31c1, 0x2, 0x31f2, 0x2, 0x3201, 0x2, + 0x3402, 0x2, 0x4dc1, 0x2, 0x4e02, 0x2, 0x9ffe, 0x2, 0xa002, 0x2, + 0xa48e, 0x2, 0xa4d2, 0x2, 0xa4ff, 0x2, 0xa502, 0x2, 0xa60e, 0x2, + 0xa612, 0x2, 0xa621, 0x2, 0xa62c, 0x2, 0xa62d, 0x2, 0xa642, 0x2, + 0xa670, 0x2, 0xa681, 0x2, 0xa69f, 0x2, 0xa6a2, 0x2, 0xa6e7, 0x2, + 0xa719, 0x2, 0xa721, 0x2, 0xa724, 0x2, 0xa78a, 0x2, 0xa78d, 0x2, + 0xa7c1, 0x2, 0xa7c4, 0x2, 0xa7cc, 0x2, 0xa7f7, 0x2, 0xa803, 0x2, + 0xa805, 0x2, 0xa807, 0x2, 0xa809, 0x2, 0xa80c, 0x2, 0xa80e, 0x2, + 0xa824, 0x2, 0xa842, 0x2, 0xa875, 0x2, 0xa884, 0x2, 0xa8b5, 0x2, + 0xa8f4, 0x2, 0xa8f9, 0x2, 0xa8fd, 0x2, 0xa8fd, 0x2, 0xa8ff, 0x2, + 0xa900, 0x2, 0xa90c, 0x2, 0xa927, 0x2, 0xa932, 0x2, 0xa948, 0x2, + 0xa962, 0x2, 0xa97e, 0x2, 0xa986, 0x2, 0xa9b4, 0x2, 0xa9d1, 0x2, + 0xa9d1, 0x2, 0xa9e2, 0x2, 0xa9e6, 0x2, 0xa9e8, 0x2, 0xa9f1, 0x2, + 0xa9fc, 0x2, 0xaa00, 0x2, 0xaa02, 0x2, 0xaa2a, 0x2, 0xaa42, 0x2, + 0xaa44, 0x2, 0xaa46, 0x2, 0xaa4d, 0x2, 0xaa62, 0x2, 0xaa78, 0x2, + 0xaa7c, 0x2, 0xaa7c, 0x2, 0xaa80, 0x2, 0xaab1, 0x2, 0xaab3, 0x2, + 0xaab3, 0x2, 0xaab7, 0x2, 0xaab8, 0x2, 0xaabb, 0x2, 0xaabf, 0x2, + 0xaac2, 0x2, 0xaac2, 0x2, 0xaac4, 0x2, 0xaac4, 0x2, 0xaadd, 0x2, + 0xaadf, 0x2, 0xaae2, 0x2, 0xaaec, 0x2, 0xaaf4, 0x2, 0xaaf6, 0x2, + 0xab03, 0x2, 0xab08, 0x2, 0xab0b, 0x2, 0xab10, 0x2, 0xab13, 0x2, + 0xab18, 0x2, 0xab22, 0x2, 0xab28, 0x2, 0xab2a, 0x2, 0xab30, 0x2, + 0xab32, 0x2, 0xab5c, 0x2, 0xab5e, 0x2, 0xab6b, 0x2, 0xab72, 0x2, + 0xabe4, 0x2, 0xac02, 0x2, 0xd7a5, 0x2, 0xd7b2, 0x2, 0xd7c8, 0x2, + 0xd7cd, 0x2, 0xd7fd, 0x2, 0xf902, 0x2, 0xfa6f, 0x2, 0xfa72, 0x2, + 0xfadb, 0x2, 0xfb02, 0x2, 0xfb08, 0x2, 0xfb15, 0x2, 0xfb19, 0x2, + 0xfb1f, 0x2, 0xfb1f, 0x2, 0xfb21, 0x2, 0xfb2a, 0x2, 0xfb2c, 0x2, + 0xfb38, 0x2, 0xfb3a, 0x2, 0xfb3e, 0x2, 0xfb40, 0x2, 0xfb40, 0x2, + 0xfb42, 0x2, 0xfb43, 0x2, 0xfb45, 0x2, 0xfb46, 0x2, 0xfb48, 0x2, + 0xfbb3, 0x2, 0xfbd5, 0x2, 0xfd3f, 0x2, 0xfd52, 0x2, 0xfd91, 0x2, + 0xfd94, 0x2, 0xfdc9, 0x2, 0xfdf2, 0x2, 0xfdfd, 0x2, 0xfe72, 0x2, + 0xfe76, 0x2, 0xfe78, 0x2, 0xfefe, 0x2, 0xff23, 0x2, 0xff3c, 0x2, + 0xff43, 0x2, 0xff5c, 0x2, 0xff68, 0x2, 0xffc0, 0x2, 0xffc4, 0x2, + 0xffc9, 0x2, 0xffcc, 0x2, 0xffd1, 0x2, 0xffd4, 0x2, 0xffd9, 0x2, + 0xffdc, 0x2, 0xffde, 0x2, 0x2, 0x3, 0xd, 0x3, 0xf, 0x3, 0x28, 0x3, + 0x2a, 0x3, 0x3c, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x41, 0x3, 0x4f, 0x3, + 0x52, 0x3, 0x5f, 0x3, 0x82, 0x3, 0xfc, 0x3, 0x282, 0x3, 0x29e, 0x3, + 0x2a2, 0x3, 0x2d2, 0x3, 0x302, 0x3, 0x321, 0x3, 0x32f, 0x3, 0x342, + 0x3, 0x344, 0x3, 0x34b, 0x3, 0x352, 0x3, 0x377, 0x3, 0x382, 0x3, + 0x39f, 0x3, 0x3a2, 0x3, 0x3c5, 0x3, 0x3ca, 0x3, 0x3d1, 0x3, 0x402, + 0x3, 0x49f, 0x3, 0x4b2, 0x3, 0x4d5, 0x3, 0x4da, 0x3, 0x4fd, 0x3, + 0x502, 0x3, 0x529, 0x3, 0x532, 0x3, 0x565, 0x3, 0x602, 0x3, 0x738, + 0x3, 0x742, 0x3, 0x757, 0x3, 0x762, 0x3, 0x769, 0x3, 0x802, 0x3, + 0x807, 0x3, 0x80a, 0x3, 0x80a, 0x3, 0x80c, 0x3, 0x837, 0x3, 0x839, + 0x3, 0x83a, 0x3, 0x83e, 0x3, 0x83e, 0x3, 0x841, 0x3, 0x857, 0x3, + 0x862, 0x3, 0x878, 0x3, 0x882, 0x3, 0x8a0, 0x3, 0x8e2, 0x3, 0x8f4, + 0x3, 0x8f6, 0x3, 0x8f7, 0x3, 0x902, 0x3, 0x917, 0x3, 0x922, 0x3, + 0x93b, 0x3, 0x982, 0x3, 0x9b9, 0x3, 0x9c0, 0x3, 0x9c1, 0x3, 0xa02, + 0x3, 0xa02, 0x3, 0xa12, 0x3, 0xa15, 0x3, 0xa17, 0x3, 0xa19, 0x3, + 0xa1b, 0x3, 0xa37, 0x3, 0xa62, 0x3, 0xa7e, 0x3, 0xa82, 0x3, 0xa9e, + 0x3, 0xac2, 0x3, 0xac9, 0x3, 0xacb, 0x3, 0xae6, 0x3, 0xb02, 0x3, + 0xb37, 0x3, 0xb42, 0x3, 0xb57, 0x3, 0xb62, 0x3, 0xb74, 0x3, 0xb82, + 0x3, 0xb93, 0x3, 0xc02, 0x3, 0xc4a, 0x3, 0xc82, 0x3, 0xcb4, 0x3, + 0xcc2, 0x3, 0xcf4, 0x3, 0xd02, 0x3, 0xd25, 0x3, 0xe82, 0x3, 0xeab, + 0x3, 0xeb2, 0x3, 0xeb3, 0x3, 0xf02, 0x3, 0xf1e, 0x3, 0xf29, 0x3, + 0xf29, 0x3, 0xf32, 0x3, 0xf47, 0x3, 0xfb2, 0x3, 0xfc6, 0x3, 0xfe2, + 0x3, 0xff8, 0x3, 0x1005, 0x3, 0x1039, 0x3, 0x1085, 0x3, 0x10b1, 0x3, + 0x10d2, 0x3, 0x10ea, 0x3, 0x1105, 0x3, 0x1128, 0x3, 0x1146, 0x3, + 0x1146, 0x3, 0x1149, 0x3, 0x1149, 0x3, 0x1152, 0x3, 0x1174, 0x3, + 0x1178, 0x3, 0x1178, 0x3, 0x1185, 0x3, 0x11b4, 0x3, 0x11c3, 0x3, + 0x11c6, 0x3, 0x11dc, 0x3, 0x11dc, 0x3, 0x11de, 0x3, 0x11de, 0x3, + 0x1202, 0x3, 0x1213, 0x3, 0x1215, 0x3, 0x122d, 0x3, 0x1282, 0x3, + 0x1288, 0x3, 0x128a, 0x3, 0x128a, 0x3, 0x128c, 0x3, 0x128f, 0x3, + 0x1291, 0x3, 0x129f, 0x3, 0x12a1, 0x3, 0x12aa, 0x3, 0x12b2, 0x3, + 0x12e0, 0x3, 0x1307, 0x3, 0x130e, 0x3, 0x1311, 0x3, 0x1312, 0x3, + 0x1315, 0x3, 0x132a, 0x3, 0x132c, 0x3, 0x1332, 0x3, 0x1334, 0x3, + 0x1335, 0x3, 0x1337, 0x3, 0x133b, 0x3, 0x133f, 0x3, 0x133f, 0x3, + 0x1352, 0x3, 0x1352, 0x3, 0x135f, 0x3, 0x1363, 0x3, 0x1402, 0x3, + 0x1436, 0x3, 0x1449, 0x3, 0x144c, 0x3, 0x1461, 0x3, 0x1463, 0x3, + 0x1482, 0x3, 0x14b1, 0x3, 0x14c6, 0x3, 0x14c7, 0x3, 0x14c9, 0x3, + 0x14c9, 0x3, 0x1582, 0x3, 0x15b0, 0x3, 0x15da, 0x3, 0x15dd, 0x3, + 0x1602, 0x3, 0x1631, 0x3, 0x1646, 0x3, 0x1646, 0x3, 0x1682, 0x3, + 0x16ac, 0x3, 0x16ba, 0x3, 0x16ba, 0x3, 0x1702, 0x3, 0x171c, 0x3, + 0x1802, 0x3, 0x182d, 0x3, 0x18a2, 0x3, 0x18e1, 0x3, 0x1901, 0x3, + 0x1908, 0x3, 0x190b, 0x3, 0x190b, 0x3, 0x190e, 0x3, 0x1915, 0x3, + 0x1917, 0x3, 0x1918, 0x3, 0x191a, 0x3, 0x1931, 0x3, 0x1941, 0x3, + 0x1941, 0x3, 0x1943, 0x3, 0x1943, 0x3, 0x19a2, 0x3, 0x19a9, 0x3, + 0x19ac, 0x3, 0x19d2, 0x3, 0x19e3, 0x3, 0x19e3, 0x3, 0x19e5, 0x3, + 0x19e5, 0x3, 0x1a02, 0x3, 0x1a02, 0x3, 0x1a0d, 0x3, 0x1a34, 0x3, + 0x1a3c, 0x3, 0x1a3c, 0x3, 0x1a52, 0x3, 0x1a52, 0x3, 0x1a5e, 0x3, + 0x1a8b, 0x3, 0x1a9f, 0x3, 0x1a9f, 0x3, 0x1ac2, 0x3, 0x1afa, 0x3, + 0x1c02, 0x3, 0x1c0a, 0x3, 0x1c0c, 0x3, 0x1c30, 0x3, 0x1c42, 0x3, + 0x1c42, 0x3, 0x1c74, 0x3, 0x1c91, 0x3, 0x1d02, 0x3, 0x1d08, 0x3, + 0x1d0a, 0x3, 0x1d0b, 0x3, 0x1d0d, 0x3, 0x1d32, 0x3, 0x1d48, 0x3, + 0x1d48, 0x3, 0x1d62, 0x3, 0x1d67, 0x3, 0x1d69, 0x3, 0x1d6a, 0x3, + 0x1d6c, 0x3, 0x1d8b, 0x3, 0x1d9a, 0x3, 0x1d9a, 0x3, 0x1ee2, 0x3, + 0x1ef4, 0x3, 0x1fb2, 0x3, 0x1fb2, 0x3, 0x2002, 0x3, 0x239b, 0x3, + 0x2482, 0x3, 0x2545, 0x3, 0x3002, 0x3, 0x3430, 0x3, 0x4402, 0x3, + 0x4648, 0x3, 0x6802, 0x3, 0x6a3a, 0x3, 0x6a42, 0x3, 0x6a60, 0x3, + 0x6ad2, 0x3, 0x6aef, 0x3, 0x6b02, 0x3, 0x6b31, 0x3, 0x6b42, 0x3, + 0x6b45, 0x3, 0x6b65, 0x3, 0x6b79, 0x3, 0x6b7f, 0x3, 0x6b91, 0x3, + 0x6e42, 0x3, 0x6e81, 0x3, 0x6f02, 0x3, 0x6f4c, 0x3, 0x6f52, 0x3, + 0x6f52, 0x3, 0x6f95, 0x3, 0x6fa1, 0x3, 0x6fe2, 0x3, 0x6fe3, 0x3, + 0x6fe5, 0x3, 0x6fe5, 0x3, 0x7002, 0x3, 0x87f9, 0x3, 0x8802, 0x3, + 0x8cd7, 0x3, 0x8d02, 0x3, 0x8d0a, 0x3, 0xb002, 0x3, 0xb120, 0x3, + 0xb152, 0x3, 0xb154, 0x3, 0xb166, 0x3, 0xb169, 0x3, 0xb172, 0x3, + 0xb2fd, 0x3, 0xbc02, 0x3, 0xbc6c, 0x3, 0xbc72, 0x3, 0xbc7e, 0x3, + 0xbc82, 0x3, 0xbc8a, 0x3, 0xbc92, 0x3, 0xbc9b, 0x3, 0xd402, 0x3, + 0xd456, 0x3, 0xd458, 0x3, 0xd49e, 0x3, 0xd4a0, 0x3, 0xd4a1, 0x3, + 0xd4a4, 0x3, 0xd4a4, 0x3, 0xd4a7, 0x3, 0xd4a8, 0x3, 0xd4ab, 0x3, + 0xd4ae, 0x3, 0xd4b0, 0x3, 0xd4bb, 0x3, 0xd4bd, 0x3, 0xd4bd, 0x3, + 0xd4bf, 0x3, 0xd4c5, 0x3, 0xd4c7, 0x3, 0xd507, 0x3, 0xd509, 0x3, + 0xd50c, 0x3, 0xd50f, 0x3, 0xd516, 0x3, 0xd518, 0x3, 0xd51e, 0x3, + 0xd520, 0x3, 0xd53b, 0x3, 0xd53d, 0x3, 0xd540, 0x3, 0xd542, 0x3, + 0xd546, 0x3, 0xd548, 0x3, 0xd548, 0x3, 0xd54c, 0x3, 0xd552, 0x3, + 0xd554, 0x3, 0xd6a7, 0x3, 0xd6aa, 0x3, 0xd6c2, 0x3, 0xd6c4, 0x3, + 0xd6dc, 0x3, 0xd6de, 0x3, 0xd6fc, 0x3, 0xd6fe, 0x3, 0xd716, 0x3, + 0xd718, 0x3, 0xd736, 0x3, 0xd738, 0x3, 0xd750, 0x3, 0xd752, 0x3, + 0xd770, 0x3, 0xd772, 0x3, 0xd78a, 0x3, 0xd78c, 0x3, 0xd7aa, 0x3, + 0xd7ac, 0x3, 0xd7c4, 0x3, 0xd7c6, 0x3, 0xd7cd, 0x3, 0xe102, 0x3, + 0xe12e, 0x3, 0xe139, 0x3, 0xe13f, 0x3, 0xe150, 0x3, 0xe150, 0x3, + 0xe2c2, 0x3, 0xe2ed, 0x3, 0xe802, 0x3, 0xe8c6, 0x3, 0xe902, 0x3, + 0xe945, 0x3, 0xe94d, 0x3, 0xe94d, 0x3, 0xee02, 0x3, 0xee05, 0x3, + 0xee07, 0x3, 0xee21, 0x3, 0xee23, 0x3, 0xee24, 0x3, 0xee26, 0x3, + 0xee26, 0x3, 0xee29, 0x3, 0xee29, 0x3, 0xee2b, 0x3, 0xee34, 0x3, + 0xee36, 0x3, 0xee39, 0x3, 0xee3b, 0x3, 0xee3b, 0x3, 0xee3d, 0x3, + 0xee3d, 0x3, 0xee44, 0x3, 0xee44, 0x3, 0xee49, 0x3, 0xee49, 0x3, + 0xee4b, 0x3, 0xee4b, 0x3, 0xee4d, 0x3, 0xee4d, 0x3, 0xee4f, 0x3, + 0xee51, 0x3, 0xee53, 0x3, 0xee54, 0x3, 0xee56, 0x3, 0xee56, 0x3, + 0xee59, 0x3, 0xee59, 0x3, 0xee5b, 0x3, 0xee5b, 0x3, 0xee5d, 0x3, + 0xee5d, 0x3, 0xee5f, 0x3, 0xee5f, 0x3, 0xee61, 0x3, 0xee61, 0x3, + 0xee63, 0x3, 0xee64, 0x3, 0xee66, 0x3, 0xee66, 0x3, 0xee69, 0x3, + 0xee6c, 0x3, 0xee6e, 0x3, 0xee74, 0x3, 0xee76, 0x3, 0xee79, 0x3, + 0xee7b, 0x3, 0xee7e, 0x3, 0xee80, 0x3, 0xee80, 0x3, 0xee82, 0x3, + 0xee8b, 0x3, 0xee8d, 0x3, 0xee9d, 0x3, 0xeea3, 0x3, 0xeea5, 0x3, + 0xeea7, 0x3, 0xeeab, 0x3, 0xeead, 0x3, 0xeebd, 0x3, 0x2, 0x4, 0xa6df, + 0x4, 0xa702, 0x4, 0xb736, 0x4, 0xb742, 0x4, 0xb81f, 0x4, 0xb822, + 0x4, 0xcea3, 0x4, 0xceb2, 0x4, 0xebe2, 0x4, 0xf802, 0x4, 0xfa1f, + 0x4, 0x2, 0x5, 0x134c, 0x5, 0x354, 0x2, 0x4, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x6, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xa, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x10, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x14, 0x3, 0x2, 0x2, 0x2, 0x2, 0x16, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x18, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x20, 0x3, 0x2, 0x2, 0x2, 0x2, 0x22, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x24, 0x3, 0x2, 0x2, 0x2, 0x2, 0x26, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x2e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x30, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x32, 0x3, 0x2, 0x2, 0x2, 0x2, 0x34, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x36, 0x3, 0x2, 0x2, 0x2, 0x2, 0x38, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x3a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x3e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x40, 0x3, 0x2, 0x2, 0x2, 0x2, 0x42, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x44, 0x3, 0x2, 0x2, 0x2, 0x2, 0x46, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x48, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4a, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4e, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x50, 0x3, 0x2, 0x2, 0x2, 0x2, 0x52, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x54, 0x3, 0x2, 0x2, 0x2, 0x2, 0x56, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x58, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5c, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x5e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x60, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x62, 0x3, 0x2, 0x2, 0x2, 0x2, 0x64, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x66, 0x3, 0x2, 0x2, 0x2, 0x2, 0x68, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x6a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6c, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x6e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x70, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x72, 0x3, 0x2, 0x2, 0x2, 0x2, 0x74, 0x3, 0x2, 0x2, 0x2, 0x2, 0x76, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x78, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7a, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x7c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7e, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x80, 0x3, 0x2, 0x2, 0x2, 0x2, 0x82, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x84, 0x3, 0x2, 0x2, 0x2, 0x2, 0x86, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x88, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x8c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x90, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x92, 0x3, 0x2, 0x2, 0x2, 0x2, 0x94, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9e, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xa0, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa2, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xa4, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa6, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xa8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xaa, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xac, 0x3, 0x2, 0x2, 0x2, 0x2, 0xae, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb0, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xb2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb4, 0x3, + 0x2, 0x2, 0x2, 0x3, 0xca, 0x3, 0x2, 0x2, 0x2, 0x3, 0xcc, 0x3, 0x2, + 0x2, 0x2, 0x3, 0xce, 0x3, 0x2, 0x2, 0x2, 0x4, 0xd0, 0x3, 0x2, 0x2, + 0x2, 0x6, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x8, 0xde, 0x3, 0x2, 0x2, 0x2, + 0xa, 0xe3, 0x3, 0x2, 0x2, 0x2, 0xc, 0xed, 0x3, 0x2, 0x2, 0x2, 0xe, + 0xf4, 0x3, 0x2, 0x2, 0x2, 0x10, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x12, 0xff, + 0x3, 0x2, 0x2, 0x2, 0x14, 0x102, 0x3, 0x2, 0x2, 0x2, 0x16, 0x106, + 0x3, 0x2, 0x2, 0x2, 0x18, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x112, + 0x3, 0x2, 0x2, 0x2, 0x1c, 0x117, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x11c, + 0x3, 0x2, 0x2, 0x2, 0x20, 0x124, 0x3, 0x2, 0x2, 0x2, 0x22, 0x12b, + 0x3, 0x2, 0x2, 0x2, 0x24, 0x131, 0x3, 0x2, 0x2, 0x2, 0x26, 0x13d, + 0x3, 0x2, 0x2, 0x2, 0x28, 0x140, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x146, + 0x3, 0x2, 0x2, 0x2, 0x2c, 0x14b, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x154, + 0x3, 0x2, 0x2, 0x2, 0x30, 0x158, 0x3, 0x2, 0x2, 0x2, 0x32, 0x15f, + 0x3, 0x2, 0x2, 0x2, 0x34, 0x166, 0x3, 0x2, 0x2, 0x2, 0x36, 0x16a, + 0x3, 0x2, 0x2, 0x2, 0x38, 0x16e, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x176, + 0x3, 0x2, 0x2, 0x2, 0x3c, 0x178, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x17a, + 0x3, 0x2, 0x2, 0x2, 0x40, 0x17c, 0x3, 0x2, 0x2, 0x2, 0x42, 0x17e, + 0x3, 0x2, 0x2, 0x2, 0x44, 0x180, 0x3, 0x2, 0x2, 0x2, 0x46, 0x182, + 0x3, 0x2, 0x2, 0x2, 0x48, 0x184, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x186, + 0x3, 0x2, 0x2, 0x2, 0x4c, 0x188, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x18a, + 0x3, 0x2, 0x2, 0x2, 0x50, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x52, 0x18f, + 0x3, 0x2, 0x2, 0x2, 0x54, 0x191, 0x3, 0x2, 0x2, 0x2, 0x56, 0x194, + 0x3, 0x2, 0x2, 0x2, 0x58, 0x197, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x19a, + 0x3, 0x2, 0x2, 0x2, 0x5c, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x1b7, + 0x3, 0x2, 0x2, 0x2, 0x60, 0x1ba, 0x3, 0x2, 0x2, 0x2, 0x62, 0x1bd, + 0x3, 0x2, 0x2, 0x2, 0x64, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x66, 0x1c3, + 0x3, 0x2, 0x2, 0x2, 0x68, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x1c8, + 0x3, 0x2, 0x2, 0x2, 0x6c, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x1cd, + 0x3, 0x2, 0x2, 0x2, 0x70, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x72, 0x1d1, + 0x3, 0x2, 0x2, 0x2, 0x74, 0x1d3, 0x3, 0x2, 0x2, 0x2, 0x76, 0x1d6, + 0x3, 0x2, 0x2, 0x2, 0x78, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x1dc, + 0x3, 0x2, 0x2, 0x2, 0x7c, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x1e0, + 0x3, 0x2, 0x2, 0x2, 0x80, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x82, 0x1e4, + 0x3, 0x2, 0x2, 0x2, 0x84, 0x1e6, 0x3, 0x2, 0x2, 0x2, 0x86, 0x1e8, + 0x3, 0x2, 0x2, 0x2, 0x88, 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x1f8, + 0x3, 0x2, 0x2, 0x2, 0x8c, 0x202, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x20e, + 0x3, 0x2, 0x2, 0x2, 0x90, 0x21a, 0x3, 0x2, 0x2, 0x2, 0x92, 0x22c, + 0x3, 0x2, 0x2, 0x2, 0x94, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x96, 0x252, + 0x3, 0x2, 0x2, 0x2, 0x98, 0x254, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x25f, + 0x3, 0x2, 0x2, 0x2, 0x9c, 0x263, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x26a, + 0x3, 0x2, 0x2, 0x2, 0xa0, 0x26e, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x270, + 0x3, 0x2, 0x2, 0x2, 0xa4, 0x275, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x27a, + 0x3, 0x2, 0x2, 0x2, 0xa8, 0x281, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x28c, + 0x3, 0x2, 0x2, 0x2, 0xac, 0x295, 0x3, 0x2, 0x2, 0x2, 0xae, 0x2a0, + 0x3, 0x2, 0x2, 0x2, 0xb0, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x2b5, + 0x3, 0x2, 0x2, 0x2, 0xb4, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x2ca, + 0x3, 0x2, 0x2, 0x2, 0xb8, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0xba, 0x2e8, + 0x3, 0x2, 0x2, 0x2, 0xbc, 0x2f2, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x2f4, + 0x3, 0x2, 0x2, 0x2, 0xc0, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x2f8, + 0x3, 0x2, 0x2, 0x2, 0xc4, 0x300, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x302, + 0x3, 0x2, 0x2, 0x2, 0xc8, 0x304, 0x3, 0x2, 0x2, 0x2, 0xca, 0x307, + 0x3, 0x2, 0x2, 0x2, 0xcc, 0x30d, 0x3, 0x2, 0x2, 0x2, 0xce, 0x31b, + 0x3, 0x2, 0x2, 0x2, 0xd0, 0xd1, 0x7, 0x64, 0x2, 0x2, 0xd1, 0xd2, + 0x7, 0x74, 0x2, 0x2, 0xd2, 0xd3, 0x7, 0x67, 0x2, 0x2, 0xd3, 0xd4, + 0x7, 0x63, 0x2, 0x2, 0xd4, 0xd5, 0x7, 0x6d, 0x2, 0x2, 0xd5, 0x5, + 0x3, 0x2, 0x2, 0x2, 0xd6, 0xd7, 0x7, 0x66, 0x2, 0x2, 0xd7, 0xd8, + 0x7, 0x67, 0x2, 0x2, 0xd8, 0xd9, 0x7, 0x68, 0x2, 0x2, 0xd9, 0xda, + 0x7, 0x63, 0x2, 0x2, 0xda, 0xdb, 0x7, 0x77, 0x2, 0x2, 0xdb, 0xdc, + 0x7, 0x6e, 0x2, 0x2, 0xdc, 0xdd, 0x7, 0x76, 0x2, 0x2, 0xdd, 0x7, + 0x3, 0x2, 0x2, 0x2, 0xde, 0xdf, 0x7, 0x68, 0x2, 0x2, 0xdf, 0xe0, + 0x7, 0x77, 0x2, 0x2, 0xe0, 0xe1, 0x7, 0x70, 0x2, 0x2, 0xe1, 0xe2, + 0x7, 0x65, 0x2, 0x2, 0xe2, 0x9, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x7, + 0x6b, 0x2, 0x2, 0xe4, 0xe5, 0x7, 0x70, 0x2, 0x2, 0xe5, 0xe6, 0x7, + 0x76, 0x2, 0x2, 0xe6, 0xe7, 0x7, 0x67, 0x2, 0x2, 0xe7, 0xe8, 0x7, + 0x74, 0x2, 0x2, 0xe8, 0xe9, 0x7, 0x68, 0x2, 0x2, 0xe9, 0xea, 0x7, + 0x63, 0x2, 0x2, 0xea, 0xeb, 0x7, 0x65, 0x2, 0x2, 0xeb, 0xec, 0x7, + 0x67, 0x2, 0x2, 0xec, 0xb, 0x3, 0x2, 0x2, 0x2, 0xed, 0xee, 0x7, 0x75, + 0x2, 0x2, 0xee, 0xef, 0x7, 0x67, 0x2, 0x2, 0xef, 0xf0, 0x7, 0x6e, + 0x2, 0x2, 0xf0, 0xf1, 0x7, 0x67, 0x2, 0x2, 0xf1, 0xf2, 0x7, 0x65, + 0x2, 0x2, 0xf2, 0xf3, 0x7, 0x76, 0x2, 0x2, 0xf3, 0xd, 0x3, 0x2, 0x2, + 0x2, 0xf4, 0xf5, 0x7, 0x65, 0x2, 0x2, 0xf5, 0xf6, 0x7, 0x63, 0x2, + 0x2, 0xf6, 0xf7, 0x7, 0x75, 0x2, 0x2, 0xf7, 0xf8, 0x7, 0x67, 0x2, + 0x2, 0xf8, 0xf, 0x3, 0x2, 0x2, 0x2, 0xf9, 0xfa, 0x7, 0x66, 0x2, 0x2, + 0xfa, 0xfb, 0x7, 0x67, 0x2, 0x2, 0xfb, 0xfc, 0x7, 0x68, 0x2, 0x2, + 0xfc, 0xfd, 0x7, 0x67, 0x2, 0x2, 0xfd, 0xfe, 0x7, 0x74, 0x2, 0x2, + 0xfe, 0x11, 0x3, 0x2, 0x2, 0x2, 0xff, 0x100, 0x7, 0x69, 0x2, 0x2, + 0x100, 0x101, 0x7, 0x71, 0x2, 0x2, 0x101, 0x13, 0x3, 0x2, 0x2, 0x2, + 0x102, 0x103, 0x7, 0x6f, 0x2, 0x2, 0x103, 0x104, 0x7, 0x63, 0x2, + 0x2, 0x104, 0x105, 0x7, 0x72, 0x2, 0x2, 0x105, 0x15, 0x3, 0x2, 0x2, + 0x2, 0x106, 0x107, 0x7, 0x75, 0x2, 0x2, 0x107, 0x108, 0x7, 0x76, + 0x2, 0x2, 0x108, 0x109, 0x7, 0x74, 0x2, 0x2, 0x109, 0x10a, 0x7, 0x77, + 0x2, 0x2, 0x10a, 0x10b, 0x7, 0x65, 0x2, 0x2, 0x10b, 0x10c, 0x7, 0x76, + 0x2, 0x2, 0x10c, 0x17, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x10e, 0x7, 0x65, + 0x2, 0x2, 0x10e, 0x10f, 0x7, 0x6a, 0x2, 0x2, 0x10f, 0x110, 0x7, 0x63, + 0x2, 0x2, 0x110, 0x111, 0x7, 0x70, 0x2, 0x2, 0x111, 0x19, 0x3, 0x2, + 0x2, 0x2, 0x112, 0x113, 0x7, 0x67, 0x2, 0x2, 0x113, 0x114, 0x7, 0x6e, + 0x2, 0x2, 0x114, 0x115, 0x7, 0x75, 0x2, 0x2, 0x115, 0x116, 0x7, 0x67, + 0x2, 0x2, 0x116, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x117, 0x118, 0x7, 0x69, + 0x2, 0x2, 0x118, 0x119, 0x7, 0x71, 0x2, 0x2, 0x119, 0x11a, 0x7, 0x76, + 0x2, 0x2, 0x11a, 0x11b, 0x7, 0x71, 0x2, 0x2, 0x11b, 0x1d, 0x3, 0x2, + 0x2, 0x2, 0x11c, 0x11d, 0x7, 0x72, 0x2, 0x2, 0x11d, 0x11e, 0x7, 0x63, + 0x2, 0x2, 0x11e, 0x11f, 0x7, 0x65, 0x2, 0x2, 0x11f, 0x120, 0x7, 0x6d, + 0x2, 0x2, 0x120, 0x121, 0x7, 0x63, 0x2, 0x2, 0x121, 0x122, 0x7, 0x69, + 0x2, 0x2, 0x122, 0x123, 0x7, 0x67, 0x2, 0x2, 0x123, 0x1f, 0x3, 0x2, + 0x2, 0x2, 0x124, 0x125, 0x7, 0x75, 0x2, 0x2, 0x125, 0x126, 0x7, 0x79, + 0x2, 0x2, 0x126, 0x127, 0x7, 0x6b, 0x2, 0x2, 0x127, 0x128, 0x7, 0x76, + 0x2, 0x2, 0x128, 0x129, 0x7, 0x65, 0x2, 0x2, 0x129, 0x12a, 0x7, 0x6a, + 0x2, 0x2, 0x12a, 0x21, 0x3, 0x2, 0x2, 0x2, 0x12b, 0x12c, 0x7, 0x65, + 0x2, 0x2, 0x12c, 0x12d, 0x7, 0x71, 0x2, 0x2, 0x12d, 0x12e, 0x7, 0x70, + 0x2, 0x2, 0x12e, 0x12f, 0x7, 0x75, 0x2, 0x2, 0x12f, 0x130, 0x7, 0x76, + 0x2, 0x2, 0x130, 0x23, 0x3, 0x2, 0x2, 0x2, 0x131, 0x132, 0x7, 0x68, + 0x2, 0x2, 0x132, 0x133, 0x7, 0x63, 0x2, 0x2, 0x133, 0x134, 0x7, 0x6e, + 0x2, 0x2, 0x134, 0x135, 0x7, 0x6e, 0x2, 0x2, 0x135, 0x136, 0x7, 0x76, + 0x2, 0x2, 0x136, 0x137, 0x7, 0x6a, 0x2, 0x2, 0x137, 0x138, 0x7, 0x74, + 0x2, 0x2, 0x138, 0x139, 0x7, 0x71, 0x2, 0x2, 0x139, 0x13a, 0x7, 0x77, + 0x2, 0x2, 0x13a, 0x13b, 0x7, 0x69, 0x2, 0x2, 0x13b, 0x13c, 0x7, 0x6a, + 0x2, 0x2, 0x13c, 0x25, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x13e, 0x7, 0x6b, + 0x2, 0x2, 0x13e, 0x13f, 0x7, 0x68, 0x2, 0x2, 0x13f, 0x27, 0x3, 0x2, + 0x2, 0x2, 0x140, 0x141, 0x7, 0x74, 0x2, 0x2, 0x141, 0x142, 0x7, 0x63, + 0x2, 0x2, 0x142, 0x143, 0x7, 0x70, 0x2, 0x2, 0x143, 0x144, 0x7, 0x69, + 0x2, 0x2, 0x144, 0x145, 0x7, 0x67, 0x2, 0x2, 0x145, 0x29, 0x3, 0x2, + 0x2, 0x2, 0x146, 0x147, 0x7, 0x76, 0x2, 0x2, 0x147, 0x148, 0x7, 0x7b, + 0x2, 0x2, 0x148, 0x149, 0x7, 0x72, 0x2, 0x2, 0x149, 0x14a, 0x7, 0x67, + 0x2, 0x2, 0x14a, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x14b, 0x14c, 0x7, 0x65, + 0x2, 0x2, 0x14c, 0x14d, 0x7, 0x71, 0x2, 0x2, 0x14d, 0x14e, 0x7, 0x70, + 0x2, 0x2, 0x14e, 0x14f, 0x7, 0x76, 0x2, 0x2, 0x14f, 0x150, 0x7, 0x6b, + 0x2, 0x2, 0x150, 0x151, 0x7, 0x70, 0x2, 0x2, 0x151, 0x152, 0x7, 0x77, + 0x2, 0x2, 0x152, 0x153, 0x7, 0x67, 0x2, 0x2, 0x153, 0x2d, 0x3, 0x2, + 0x2, 0x2, 0x154, 0x155, 0x7, 0x68, 0x2, 0x2, 0x155, 0x156, 0x7, 0x71, + 0x2, 0x2, 0x156, 0x157, 0x7, 0x74, 0x2, 0x2, 0x157, 0x2f, 0x3, 0x2, + 0x2, 0x2, 0x158, 0x159, 0x7, 0x6b, 0x2, 0x2, 0x159, 0x15a, 0x7, 0x6f, + 0x2, 0x2, 0x15a, 0x15b, 0x7, 0x72, 0x2, 0x2, 0x15b, 0x15c, 0x7, 0x71, + 0x2, 0x2, 0x15c, 0x15d, 0x7, 0x74, 0x2, 0x2, 0x15d, 0x15e, 0x7, 0x76, + 0x2, 0x2, 0x15e, 0x31, 0x3, 0x2, 0x2, 0x2, 0x15f, 0x160, 0x7, 0x74, + 0x2, 0x2, 0x160, 0x161, 0x7, 0x67, 0x2, 0x2, 0x161, 0x162, 0x7, 0x76, + 0x2, 0x2, 0x162, 0x163, 0x7, 0x77, 0x2, 0x2, 0x163, 0x164, 0x7, 0x74, + 0x2, 0x2, 0x164, 0x165, 0x7, 0x70, 0x2, 0x2, 0x165, 0x33, 0x3, 0x2, + 0x2, 0x2, 0x166, 0x167, 0x7, 0x78, 0x2, 0x2, 0x167, 0x168, 0x7, 0x63, + 0x2, 0x2, 0x168, 0x169, 0x7, 0x74, 0x2, 0x2, 0x169, 0x35, 0x3, 0x2, + 0x2, 0x2, 0x16a, 0x16b, 0x7, 0x70, 0x2, 0x2, 0x16b, 0x16c, 0x7, 0x6b, + 0x2, 0x2, 0x16c, 0x16d, 0x7, 0x6e, 0x2, 0x2, 0x16d, 0x37, 0x3, 0x2, + 0x2, 0x2, 0x16e, 0x173, 0x5, 0xc4, 0x62, 0x2, 0x16f, 0x172, 0x5, + 0xc4, 0x62, 0x2, 0x170, 0x172, 0x5, 0xc6, 0x63, 0x2, 0x171, 0x16f, + 0x3, 0x2, 0x2, 0x2, 0x171, 0x170, 0x3, 0x2, 0x2, 0x2, 0x172, 0x175, + 0x3, 0x2, 0x2, 0x2, 0x173, 0x171, 0x3, 0x2, 0x2, 0x2, 0x173, 0x174, + 0x3, 0x2, 0x2, 0x2, 0x174, 0x39, 0x3, 0x2, 0x2, 0x2, 0x175, 0x173, + 0x3, 0x2, 0x2, 0x2, 0x176, 0x177, 0x7, 0x2a, 0x2, 0x2, 0x177, 0x3b, + 0x3, 0x2, 0x2, 0x2, 0x178, 0x179, 0x7, 0x2b, 0x2, 0x2, 0x179, 0x3d, + 0x3, 0x2, 0x2, 0x2, 0x17a, 0x17b, 0x7, 0x7d, 0x2, 0x2, 0x17b, 0x3f, + 0x3, 0x2, 0x2, 0x2, 0x17c, 0x17d, 0x7, 0x7f, 0x2, 0x2, 0x17d, 0x41, + 0x3, 0x2, 0x2, 0x2, 0x17e, 0x17f, 0x7, 0x5d, 0x2, 0x2, 0x17f, 0x43, + 0x3, 0x2, 0x2, 0x2, 0x180, 0x181, 0x7, 0x5f, 0x2, 0x2, 0x181, 0x45, + 0x3, 0x2, 0x2, 0x2, 0x182, 0x183, 0x7, 0x3f, 0x2, 0x2, 0x183, 0x47, + 0x3, 0x2, 0x2, 0x2, 0x184, 0x185, 0x7, 0x2e, 0x2, 0x2, 0x185, 0x49, + 0x3, 0x2, 0x2, 0x2, 0x186, 0x187, 0x7, 0x3d, 0x2, 0x2, 0x187, 0x4b, + 0x3, 0x2, 0x2, 0x2, 0x188, 0x189, 0x7, 0xc, 0x2, 0x2, 0x189, 0x4d, + 0x3, 0x2, 0x2, 0x2, 0x18a, 0x18b, 0x7, 0xf, 0x2, 0x2, 0x18b, 0x18c, + 0x7, 0xc, 0x2, 0x2, 0x18c, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x18d, 0x18e, + 0x7, 0x3c, 0x2, 0x2, 0x18e, 0x51, 0x3, 0x2, 0x2, 0x2, 0x18f, 0x190, + 0x7, 0x30, 0x2, 0x2, 0x190, 0x53, 0x3, 0x2, 0x2, 0x2, 0x191, 0x192, + 0x7, 0x2d, 0x2, 0x2, 0x192, 0x193, 0x7, 0x2d, 0x2, 0x2, 0x193, 0x55, + 0x3, 0x2, 0x2, 0x2, 0x194, 0x195, 0x7, 0x2f, 0x2, 0x2, 0x195, 0x196, + 0x7, 0x2f, 0x2, 0x2, 0x196, 0x57, 0x3, 0x2, 0x2, 0x2, 0x197, 0x198, + 0x7, 0x3c, 0x2, 0x2, 0x198, 0x199, 0x7, 0x3f, 0x2, 0x2, 0x199, 0x59, + 0x3, 0x2, 0x2, 0x2, 0x19a, 0x19b, 0x7, 0x30, 0x2, 0x2, 0x19b, 0x19c, + 0x7, 0x30, 0x2, 0x2, 0x19c, 0x19d, 0x7, 0x30, 0x2, 0x2, 0x19d, 0x5b, + 0x3, 0x2, 0x2, 0x2, 0x19e, 0x1b6, 0x7, 0x3d, 0x2, 0x2, 0x19f, 0x1a1, + 0x5, 0x4c, 0x26, 0x2, 0x1a0, 0x19f, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0x1a2, + 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a0, 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a3, + 0x3, 0x2, 0x2, 0x2, 0x1a3, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x1a4, 0x1a6, + 0x5, 0x4e, 0x27, 0x2, 0x1a5, 0x1a4, 0x3, 0x2, 0x2, 0x2, 0x1a6, 0x1a7, + 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a8, + 0x3, 0x2, 0x2, 0x2, 0x1a8, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0x1aa, + 0x7, 0x31, 0x2, 0x2, 0x1aa, 0x1ab, 0x7, 0x2c, 0x2, 0x2, 0x1ab, 0x1af, + 0x3, 0x2, 0x2, 0x2, 0x1ac, 0x1ae, 0xb, 0x2, 0x2, 0x2, 0x1ad, 0x1ac, + 0x3, 0x2, 0x2, 0x2, 0x1ae, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1b0, + 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1b2, + 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x1b2, 0x1b3, + 0x7, 0x2c, 0x2, 0x2, 0x1b3, 0x1b6, 0x7, 0x31, 0x2, 0x2, 0x1b4, 0x1b6, + 0x7, 0x2, 0x2, 0x3, 0x1b5, 0x19e, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a0, + 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a9, + 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1b4, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x5d, + 0x3, 0x2, 0x2, 0x2, 0x1b7, 0x1b8, 0x7, 0x7e, 0x2, 0x2, 0x1b8, 0x1b9, + 0x7, 0x7e, 0x2, 0x2, 0x1b9, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bb, + 0x7, 0x28, 0x2, 0x2, 0x1bb, 0x1bc, 0x7, 0x28, 0x2, 0x2, 0x1bc, 0x61, + 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x1be, 0x7, 0x3f, 0x2, 0x2, 0x1be, 0x1bf, + 0x7, 0x3f, 0x2, 0x2, 0x1bf, 0x63, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1, + 0x7, 0x23, 0x2, 0x2, 0x1c1, 0x1c2, 0x7, 0x3f, 0x2, 0x2, 0x1c2, 0x65, + 0x3, 0x2, 0x2, 0x2, 0x1c3, 0x1c4, 0x7, 0x3e, 0x2, 0x2, 0x1c4, 0x67, + 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c6, 0x7, 0x3e, 0x2, 0x2, 0x1c6, 0x1c7, + 0x7, 0x3f, 0x2, 0x2, 0x1c7, 0x69, 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1c9, + 0x7, 0x40, 0x2, 0x2, 0x1c9, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1cb, + 0x7, 0x40, 0x2, 0x2, 0x1cb, 0x1cc, 0x7, 0x3f, 0x2, 0x2, 0x1cc, 0x6d, + 0x3, 0x2, 0x2, 0x2, 0x1cd, 0x1ce, 0x7, 0x7e, 0x2, 0x2, 0x1ce, 0x6f, + 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d0, 0x7, 0x31, 0x2, 0x2, 0x1d0, 0x71, + 0x3, 0x2, 0x2, 0x2, 0x1d1, 0x1d2, 0x7, 0x27, 0x2, 0x2, 0x1d2, 0x73, + 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1d4, 0x7, 0x3e, 0x2, 0x2, 0x1d4, 0x1d5, + 0x7, 0x3e, 0x2, 0x2, 0x1d5, 0x75, 0x3, 0x2, 0x2, 0x2, 0x1d6, 0x1d7, + 0x7, 0x40, 0x2, 0x2, 0x1d7, 0x1d8, 0x7, 0x40, 0x2, 0x2, 0x1d8, 0x77, + 0x3, 0x2, 0x2, 0x2, 0x1d9, 0x1da, 0x7, 0x28, 0x2, 0x2, 0x1da, 0x1db, + 0x7, 0x60, 0x2, 0x2, 0x1db, 0x79, 0x3, 0x2, 0x2, 0x2, 0x1dc, 0x1dd, + 0x7, 0x23, 0x2, 0x2, 0x1dd, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x1df, + 0x7, 0x2d, 0x2, 0x2, 0x1df, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x1e1, + 0x7, 0x2f, 0x2, 0x2, 0x1e1, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x1e2, 0x1e3, + 0x7, 0x60, 0x2, 0x2, 0x1e3, 0x81, 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1e5, + 0x7, 0x2c, 0x2, 0x2, 0x1e5, 0x83, 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e7, + 0x7, 0x28, 0x2, 0x2, 0x1e7, 0x85, 0x3, 0x2, 0x2, 0x2, 0x1e8, 0x1e9, + 0x7, 0x3e, 0x2, 0x2, 0x1e9, 0x1ea, 0x7, 0x2f, 0x2, 0x2, 0x1ea, 0x87, + 0x3, 0x2, 0x2, 0x2, 0x1eb, 0x1f7, 0x7, 0x32, 0x2, 0x2, 0x1ec, 0x1f3, + 0x9, 0x2, 0x2, 0x2, 0x1ed, 0x1ef, 0x7, 0x61, 0x2, 0x2, 0x1ee, 0x1ed, + 0x3, 0x2, 0x2, 0x2, 0x1ee, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1f0, + 0x3, 0x2, 0x2, 0x2, 0x1f0, 0x1f2, 0x9, 0x3, 0x2, 0x2, 0x1f1, 0x1ee, + 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f1, + 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1f7, + 0x3, 0x2, 0x2, 0x2, 0x1f5, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1eb, + 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x89, + 0x3, 0x2, 0x2, 0x2, 0x1f8, 0x1f9, 0x7, 0x32, 0x2, 0x2, 0x1f9, 0x1fe, + 0x9, 0x4, 0x2, 0x2, 0x1fa, 0x1fc, 0x7, 0x61, 0x2, 0x2, 0x1fb, 0x1fa, + 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1fc, 0x1fd, + 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x1ff, 0x5, 0xc0, 0x60, 0x2, 0x1fe, 0x1fb, + 0x3, 0x2, 0x2, 0x2, 0x1ff, 0x200, 0x3, 0x2, 0x2, 0x2, 0x200, 0x1fe, + 0x3, 0x2, 0x2, 0x2, 0x200, 0x201, 0x3, 0x2, 0x2, 0x2, 0x201, 0x8b, + 0x3, 0x2, 0x2, 0x2, 0x202, 0x204, 0x7, 0x32, 0x2, 0x2, 0x203, 0x205, + 0x9, 0x5, 0x2, 0x2, 0x204, 0x203, 0x3, 0x2, 0x2, 0x2, 0x204, 0x205, + 0x3, 0x2, 0x2, 0x2, 0x205, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x206, 0x208, + 0x7, 0x61, 0x2, 0x2, 0x207, 0x206, 0x3, 0x2, 0x2, 0x2, 0x207, 0x208, + 0x3, 0x2, 0x2, 0x2, 0x208, 0x209, 0x3, 0x2, 0x2, 0x2, 0x209, 0x20b, + 0x5, 0xbc, 0x5e, 0x2, 0x20a, 0x207, 0x3, 0x2, 0x2, 0x2, 0x20b, 0x20c, + 0x3, 0x2, 0x2, 0x2, 0x20c, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x20c, 0x20d, + 0x3, 0x2, 0x2, 0x2, 0x20d, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x20f, + 0x7, 0x32, 0x2, 0x2, 0x20f, 0x214, 0x9, 0x6, 0x2, 0x2, 0x210, 0x212, + 0x7, 0x61, 0x2, 0x2, 0x211, 0x210, 0x3, 0x2, 0x2, 0x2, 0x211, 0x212, + 0x3, 0x2, 0x2, 0x2, 0x212, 0x213, 0x3, 0x2, 0x2, 0x2, 0x213, 0x215, + 0x5, 0xbe, 0x5f, 0x2, 0x214, 0x211, 0x3, 0x2, 0x2, 0x2, 0x215, 0x216, + 0x3, 0x2, 0x2, 0x2, 0x216, 0x214, 0x3, 0x2, 0x2, 0x2, 0x216, 0x217, + 0x3, 0x2, 0x2, 0x2, 0x217, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x218, 0x21b, + 0x5, 0x92, 0x49, 0x2, 0x219, 0x21b, 0x5, 0x94, 0x4a, 0x2, 0x21a, + 0x218, 0x3, 0x2, 0x2, 0x2, 0x21a, 0x219, 0x3, 0x2, 0x2, 0x2, 0x21b, + 0x91, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x225, 0x5, 0xba, 0x5d, 0x2, 0x21d, + 0x21f, 0x7, 0x30, 0x2, 0x2, 0x21e, 0x220, 0x5, 0xba, 0x5d, 0x2, 0x21f, + 0x21e, 0x3, 0x2, 0x2, 0x2, 0x21f, 0x220, 0x3, 0x2, 0x2, 0x2, 0x220, + 0x222, 0x3, 0x2, 0x2, 0x2, 0x221, 0x223, 0x5, 0xc2, 0x61, 0x2, 0x222, + 0x221, 0x3, 0x2, 0x2, 0x2, 0x222, 0x223, 0x3, 0x2, 0x2, 0x2, 0x223, + 0x226, 0x3, 0x2, 0x2, 0x2, 0x224, 0x226, 0x5, 0xc2, 0x61, 0x2, 0x225, + 0x21d, 0x3, 0x2, 0x2, 0x2, 0x225, 0x224, 0x3, 0x2, 0x2, 0x2, 0x226, + 0x22d, 0x3, 0x2, 0x2, 0x2, 0x227, 0x228, 0x7, 0x30, 0x2, 0x2, 0x228, + 0x22a, 0x5, 0xba, 0x5d, 0x2, 0x229, 0x22b, 0x5, 0xc2, 0x61, 0x2, + 0x22a, 0x229, 0x3, 0x2, 0x2, 0x2, 0x22a, 0x22b, 0x3, 0x2, 0x2, 0x2, + 0x22b, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x22c, 0x21c, 0x3, 0x2, 0x2, 0x2, + 0x22c, 0x227, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x93, 0x3, 0x2, 0x2, 0x2, + 0x22e, 0x22f, 0x7, 0x32, 0x2, 0x2, 0x22f, 0x230, 0x9, 0x6, 0x2, 0x2, + 0x230, 0x231, 0x5, 0x96, 0x4b, 0x2, 0x231, 0x232, 0x5, 0x98, 0x4c, + 0x2, 0x232, 0x95, 0x3, 0x2, 0x2, 0x2, 0x233, 0x235, 0x7, 0x61, 0x2, + 0x2, 0x234, 0x233, 0x3, 0x2, 0x2, 0x2, 0x234, 0x235, 0x3, 0x2, 0x2, + 0x2, 0x235, 0x236, 0x3, 0x2, 0x2, 0x2, 0x236, 0x238, 0x5, 0xbe, 0x5f, + 0x2, 0x237, 0x234, 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, 0x3, 0x2, 0x2, + 0x2, 0x239, 0x237, 0x3, 0x2, 0x2, 0x2, 0x239, 0x23a, 0x3, 0x2, 0x2, + 0x2, 0x23a, 0x245, 0x3, 0x2, 0x2, 0x2, 0x23b, 0x242, 0x7, 0x30, 0x2, + 0x2, 0x23c, 0x23e, 0x7, 0x61, 0x2, 0x2, 0x23d, 0x23c, 0x3, 0x2, 0x2, + 0x2, 0x23d, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23f, 0x3, 0x2, 0x2, + 0x2, 0x23f, 0x241, 0x5, 0xbe, 0x5f, 0x2, 0x240, 0x23d, 0x3, 0x2, + 0x2, 0x2, 0x241, 0x244, 0x3, 0x2, 0x2, 0x2, 0x242, 0x240, 0x3, 0x2, + 0x2, 0x2, 0x242, 0x243, 0x3, 0x2, 0x2, 0x2, 0x243, 0x246, 0x3, 0x2, + 0x2, 0x2, 0x244, 0x242, 0x3, 0x2, 0x2, 0x2, 0x245, 0x23b, 0x3, 0x2, + 0x2, 0x2, 0x245, 0x246, 0x3, 0x2, 0x2, 0x2, 0x246, 0x253, 0x3, 0x2, + 0x2, 0x2, 0x247, 0x248, 0x7, 0x30, 0x2, 0x2, 0x248, 0x24f, 0x5, 0xbe, + 0x5f, 0x2, 0x249, 0x24b, 0x7, 0x61, 0x2, 0x2, 0x24a, 0x249, 0x3, + 0x2, 0x2, 0x2, 0x24a, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24c, 0x3, + 0x2, 0x2, 0x2, 0x24c, 0x24e, 0x5, 0xbe, 0x5f, 0x2, 0x24d, 0x24a, + 0x3, 0x2, 0x2, 0x2, 0x24e, 0x251, 0x3, 0x2, 0x2, 0x2, 0x24f, 0x24d, + 0x3, 0x2, 0x2, 0x2, 0x24f, 0x250, 0x3, 0x2, 0x2, 0x2, 0x250, 0x253, + 0x3, 0x2, 0x2, 0x2, 0x251, 0x24f, 0x3, 0x2, 0x2, 0x2, 0x252, 0x237, + 0x3, 0x2, 0x2, 0x2, 0x252, 0x247, 0x3, 0x2, 0x2, 0x2, 0x253, 0x97, + 0x3, 0x2, 0x2, 0x2, 0x254, 0x256, 0x9, 0x7, 0x2, 0x2, 0x255, 0x257, + 0x9, 0x8, 0x2, 0x2, 0x256, 0x255, 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, + 0x3, 0x2, 0x2, 0x2, 0x257, 0x258, 0x3, 0x2, 0x2, 0x2, 0x258, 0x259, + 0x5, 0xba, 0x5d, 0x2, 0x259, 0x99, 0x3, 0x2, 0x2, 0x2, 0x25a, 0x260, + 0x5, 0x88, 0x44, 0x2, 0x25b, 0x260, 0x5, 0x8a, 0x45, 0x2, 0x25c, + 0x260, 0x5, 0x8c, 0x46, 0x2, 0x25d, 0x260, 0x5, 0x8e, 0x47, 0x2, + 0x25e, 0x260, 0x5, 0x90, 0x48, 0x2, 0x25f, 0x25a, 0x3, 0x2, 0x2, + 0x2, 0x25f, 0x25b, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25c, 0x3, 0x2, 0x2, + 0x2, 0x25f, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25e, 0x3, 0x2, 0x2, + 0x2, 0x260, 0x261, 0x3, 0x2, 0x2, 0x2, 0x261, 0x262, 0x7, 0x6b, 0x2, + 0x2, 0x262, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x263, 0x266, 0x7, 0x29, 0x2, + 0x2, 0x264, 0x267, 0x5, 0xb6, 0x5b, 0x2, 0x265, 0x267, 0x5, 0xa0, + 0x50, 0x2, 0x266, 0x264, 0x3, 0x2, 0x2, 0x2, 0x266, 0x265, 0x3, 0x2, + 0x2, 0x2, 0x267, 0x268, 0x3, 0x2, 0x2, 0x2, 0x268, 0x269, 0x7, 0x29, + 0x2, 0x2, 0x269, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x26a, 0x26b, 0x5, 0x9c, + 0x4e, 0x2, 0x26b, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x26c, 0x26f, 0x5, 0xa2, + 0x51, 0x2, 0x26d, 0x26f, 0x5, 0xa4, 0x52, 0x2, 0x26e, 0x26c, 0x3, + 0x2, 0x2, 0x2, 0x26e, 0x26d, 0x3, 0x2, 0x2, 0x2, 0x26f, 0xa1, 0x3, + 0x2, 0x2, 0x2, 0x270, 0x271, 0x7, 0x5e, 0x2, 0x2, 0x271, 0x272, 0x5, + 0xbc, 0x5e, 0x2, 0x272, 0x273, 0x5, 0xbc, 0x5e, 0x2, 0x273, 0x274, + 0x5, 0xbc, 0x5e, 0x2, 0x274, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x275, 0x276, + 0x7, 0x5e, 0x2, 0x2, 0x276, 0x277, 0x7, 0x7a, 0x2, 0x2, 0x277, 0x278, + 0x5, 0xbe, 0x5f, 0x2, 0x278, 0x279, 0x5, 0xbe, 0x5f, 0x2, 0x279, + 0xa5, 0x3, 0x2, 0x2, 0x2, 0x27a, 0x27b, 0x7, 0x5e, 0x2, 0x2, 0x27b, + 0x27c, 0x7, 0x77, 0x2, 0x2, 0x27c, 0x27d, 0x5, 0xbe, 0x5f, 0x2, 0x27d, + 0x27e, 0x5, 0xbe, 0x5f, 0x2, 0x27e, 0x27f, 0x5, 0xbe, 0x5f, 0x2, + 0x27f, 0x280, 0x5, 0xbe, 0x5f, 0x2, 0x280, 0xa7, 0x3, 0x2, 0x2, 0x2, + 0x281, 0x282, 0x7, 0x5e, 0x2, 0x2, 0x282, 0x283, 0x7, 0x57, 0x2, + 0x2, 0x283, 0x284, 0x5, 0xbe, 0x5f, 0x2, 0x284, 0x285, 0x5, 0xbe, + 0x5f, 0x2, 0x285, 0x286, 0x5, 0xbe, 0x5f, 0x2, 0x286, 0x287, 0x5, + 0xbe, 0x5f, 0x2, 0x287, 0x288, 0x5, 0xbe, 0x5f, 0x2, 0x288, 0x289, + 0x5, 0xbe, 0x5f, 0x2, 0x289, 0x28a, 0x5, 0xbe, 0x5f, 0x2, 0x28a, + 0x28b, 0x5, 0xbe, 0x5f, 0x2, 0x28b, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x28c, + 0x290, 0x7, 0x62, 0x2, 0x2, 0x28d, 0x28f, 0xa, 0x9, 0x2, 0x2, 0x28e, + 0x28d, 0x3, 0x2, 0x2, 0x2, 0x28f, 0x292, 0x3, 0x2, 0x2, 0x2, 0x290, + 0x28e, 0x3, 0x2, 0x2, 0x2, 0x290, 0x291, 0x3, 0x2, 0x2, 0x2, 0x291, + 0x293, 0x3, 0x2, 0x2, 0x2, 0x292, 0x290, 0x3, 0x2, 0x2, 0x2, 0x293, + 0x294, 0x7, 0x62, 0x2, 0x2, 0x294, 0xab, 0x3, 0x2, 0x2, 0x2, 0x295, + 0x29a, 0x7, 0x24, 0x2, 0x2, 0x296, 0x299, 0xa, 0xa, 0x2, 0x2, 0x297, + 0x299, 0x5, 0xb8, 0x5c, 0x2, 0x298, 0x296, 0x3, 0x2, 0x2, 0x2, 0x298, + 0x297, 0x3, 0x2, 0x2, 0x2, 0x299, 0x29c, 0x3, 0x2, 0x2, 0x2, 0x29a, + 0x298, 0x3, 0x2, 0x2, 0x2, 0x29a, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x29b, + 0x29d, 0x3, 0x2, 0x2, 0x2, 0x29c, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x29d, + 0x29e, 0x7, 0x24, 0x2, 0x2, 0x29e, 0xad, 0x3, 0x2, 0x2, 0x2, 0x29f, + 0x2a1, 0x9, 0xb, 0x2, 0x2, 0x2a0, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2a1, + 0x2a2, 0x3, 0x2, 0x2, 0x2, 0x2a2, 0x2a0, 0x3, 0x2, 0x2, 0x2, 0x2a2, + 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2a3, 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2a4, + 0x2a5, 0x8, 0x57, 0x2, 0x2, 0x2a5, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x2a6, + 0x2a7, 0x7, 0x31, 0x2, 0x2, 0x2a7, 0x2a8, 0x7, 0x2c, 0x2, 0x2, 0x2a8, + 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2a9, 0x2ab, 0xb, 0x2, 0x2, 0x2, 0x2aa, + 0x2a9, 0x3, 0x2, 0x2, 0x2, 0x2ab, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0x2ac, + 0x2ad, 0x3, 0x2, 0x2, 0x2, 0x2ac, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x2ad, + 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2af, + 0x2b0, 0x7, 0x2c, 0x2, 0x2, 0x2b0, 0x2b1, 0x7, 0x31, 0x2, 0x2, 0x2b1, + 0x2b2, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x2b3, 0x8, 0x58, 0x2, 0x2, 0x2b3, + 0xb1, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2b6, 0x9, 0xc, 0x2, 0x2, 0x2b5, + 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b6, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2b7, + 0x2b5, 0x3, 0x2, 0x2, 0x2, 0x2b7, 0x2b8, 0x3, 0x2, 0x2, 0x2, 0x2b8, + 0x2b9, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0x2ba, 0x8, 0x59, 0x2, 0x2, 0x2ba, + 0xb3, 0x3, 0x2, 0x2, 0x2, 0x2bb, 0x2bc, 0x7, 0x31, 0x2, 0x2, 0x2bc, + 0x2bd, 0x7, 0x31, 0x2, 0x2, 0x2bd, 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2be, + 0x2c0, 0xa, 0xc, 0x2, 0x2, 0x2bf, 0x2be, 0x3, 0x2, 0x2, 0x2, 0x2c0, + 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x2c1, 0x2bf, 0x3, 0x2, 0x2, 0x2, 0x2c1, + 0x2c2, 0x3, 0x2, 0x2, 0x2, 0x2c2, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2c3, + 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2c4, 0x2c5, 0x8, 0x5a, 0x2, 0x2, 0x2c5, + 0xb5, 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2cb, 0xa, 0xd, 0x2, 0x2, 0x2c7, + 0x2cb, 0x5, 0xa6, 0x53, 0x2, 0x2c8, 0x2cb, 0x5, 0xa8, 0x54, 0x2, + 0x2c9, 0x2cb, 0x5, 0xb8, 0x5c, 0x2, 0x2ca, 0x2c6, 0x3, 0x2, 0x2, + 0x2, 0x2ca, 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2ca, 0x2c8, 0x3, 0x2, 0x2, + 0x2, 0x2ca, 0x2c9, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0xb7, 0x3, 0x2, 0x2, + 0x2, 0x2cc, 0x2e6, 0x7, 0x5e, 0x2, 0x2, 0x2cd, 0x2ce, 0x7, 0x77, + 0x2, 0x2, 0x2ce, 0x2cf, 0x5, 0xbe, 0x5f, 0x2, 0x2cf, 0x2d0, 0x5, + 0xbe, 0x5f, 0x2, 0x2d0, 0x2d1, 0x5, 0xbe, 0x5f, 0x2, 0x2d1, 0x2d2, + 0x5, 0xbe, 0x5f, 0x2, 0x2d2, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d4, + 0x7, 0x57, 0x2, 0x2, 0x2d4, 0x2d5, 0x5, 0xbe, 0x5f, 0x2, 0x2d5, 0x2d6, + 0x5, 0xbe, 0x5f, 0x2, 0x2d6, 0x2d7, 0x5, 0xbe, 0x5f, 0x2, 0x2d7, + 0x2d8, 0x5, 0xbe, 0x5f, 0x2, 0x2d8, 0x2d9, 0x5, 0xbe, 0x5f, 0x2, + 0x2d9, 0x2da, 0x5, 0xbe, 0x5f, 0x2, 0x2da, 0x2db, 0x5, 0xbe, 0x5f, + 0x2, 0x2db, 0x2dc, 0x5, 0xbe, 0x5f, 0x2, 0x2dc, 0x2e7, 0x3, 0x2, + 0x2, 0x2, 0x2dd, 0x2e7, 0x9, 0xe, 0x2, 0x2, 0x2de, 0x2df, 0x5, 0xbc, + 0x5e, 0x2, 0x2df, 0x2e0, 0x5, 0xbc, 0x5e, 0x2, 0x2e0, 0x2e1, 0x5, + 0xbc, 0x5e, 0x2, 0x2e1, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2e3, + 0x7, 0x7a, 0x2, 0x2, 0x2e3, 0x2e4, 0x5, 0xbe, 0x5f, 0x2, 0x2e4, 0x2e5, + 0x5, 0xbe, 0x5f, 0x2, 0x2e5, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2cd, + 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2dd, + 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2e2, + 0x3, 0x2, 0x2, 0x2, 0x2e7, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2ef, + 0x9, 0x3, 0x2, 0x2, 0x2e9, 0x2eb, 0x7, 0x61, 0x2, 0x2, 0x2ea, 0x2e9, + 0x3, 0x2, 0x2, 0x2, 0x2ea, 0x2eb, 0x3, 0x2, 0x2, 0x2, 0x2eb, 0x2ec, + 0x3, 0x2, 0x2, 0x2, 0x2ec, 0x2ee, 0x9, 0x3, 0x2, 0x2, 0x2ed, 0x2ea, + 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2f1, 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x2ed, + 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x2f0, 0x3, 0x2, 0x2, 0x2, 0x2f0, 0xbb, + 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x2ef, 0x3, 0x2, 0x2, 0x2, 0x2f2, 0x2f3, + 0x9, 0xf, 0x2, 0x2, 0x2f3, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f5, + 0x9, 0x10, 0x2, 0x2, 0x2f5, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f7, + 0x9, 0x11, 0x2, 0x2, 0x2f7, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x2f8, 0x2fa, + 0x9, 0x12, 0x2, 0x2, 0x2f9, 0x2fb, 0x9, 0x8, 0x2, 0x2, 0x2fa, 0x2f9, + 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fb, 0x3, 0x2, 0x2, 0x2, 0x2fb, 0x2fc, + 0x3, 0x2, 0x2, 0x2, 0x2fc, 0x2fd, 0x5, 0xba, 0x5d, 0x2, 0x2fd, 0xc3, + 0x3, 0x2, 0x2, 0x2, 0x2fe, 0x301, 0x5, 0xc8, 0x64, 0x2, 0x2ff, 0x301, + 0x7, 0x61, 0x2, 0x2, 0x300, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0x300, 0x2ff, + 0x3, 0x2, 0x2, 0x2, 0x301, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x302, 0x303, + 0x9, 0x13, 0x2, 0x2, 0x303, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305, + 0x9, 0x14, 0x2, 0x2, 0x305, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x306, 0x308, + 0x9, 0xb, 0x2, 0x2, 0x307, 0x306, 0x3, 0x2, 0x2, 0x2, 0x308, 0x309, + 0x3, 0x2, 0x2, 0x2, 0x309, 0x307, 0x3, 0x2, 0x2, 0x2, 0x309, 0x30a, + 0x3, 0x2, 0x2, 0x2, 0x30a, 0x30b, 0x3, 0x2, 0x2, 0x2, 0x30b, 0x30c, + 0x8, 0x65, 0x2, 0x2, 0x30c, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x30d, 0x30e, + 0x7, 0x31, 0x2, 0x2, 0x30e, 0x30f, 0x7, 0x2c, 0x2, 0x2, 0x30f, 0x313, + 0x3, 0x2, 0x2, 0x2, 0x310, 0x312, 0xa, 0xc, 0x2, 0x2, 0x311, 0x310, + 0x3, 0x2, 0x2, 0x2, 0x312, 0x315, 0x3, 0x2, 0x2, 0x2, 0x313, 0x314, + 0x3, 0x2, 0x2, 0x2, 0x313, 0x311, 0x3, 0x2, 0x2, 0x2, 0x314, 0x316, + 0x3, 0x2, 0x2, 0x2, 0x315, 0x313, 0x3, 0x2, 0x2, 0x2, 0x316, 0x317, + 0x7, 0x2c, 0x2, 0x2, 0x317, 0x318, 0x7, 0x31, 0x2, 0x2, 0x318, 0x319, + 0x3, 0x2, 0x2, 0x2, 0x319, 0x31a, 0x8, 0x66, 0x2, 0x2, 0x31a, 0xcd, + 0x3, 0x2, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x31, 0x2, 0x2, 0x31c, 0x31d, + 0x7, 0x31, 0x2, 0x2, 0x31d, 0x321, 0x3, 0x2, 0x2, 0x2, 0x31e, 0x320, + 0xa, 0xc, 0x2, 0x2, 0x31f, 0x31e, 0x3, 0x2, 0x2, 0x2, 0x320, 0x323, + 0x3, 0x2, 0x2, 0x2, 0x321, 0x31f, 0x3, 0x2, 0x2, 0x2, 0x321, 0x322, + 0x3, 0x2, 0x2, 0x2, 0x322, 0x324, 0x3, 0x2, 0x2, 0x2, 0x323, 0x321, + 0x3, 0x2, 0x2, 0x2, 0x324, 0x325, 0x8, 0x67, 0x2, 0x2, 0x325, 0xcf, + 0x3, 0x2, 0x2, 0x2, 0x36, 0x2, 0x3, 0x171, 0x173, 0x1a2, 0x1a7, 0x1af, + 0x1b5, 0x1ee, 0x1f3, 0x1f6, 0x1fb, 0x200, 0x204, 0x207, 0x20c, 0x211, + 0x216, 0x21a, 0x21f, 0x222, 0x225, 0x22a, 0x22c, 0x234, 0x239, 0x23d, + 0x242, 0x245, 0x24a, 0x24f, 0x252, 0x256, 0x25f, 0x266, 0x26e, 0x290, + 0x298, 0x29a, 0x2a2, 0x2ac, 0x2b7, 0x2c1, 0x2ca, 0x2e6, 0x2ea, 0x2ef, + 0x2fa, 0x300, 0x309, 0x313, 0x321, 0x3, 0x2, 0x3, 0x2, + }; + + _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, + serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); + + + atn::ATNDeserializer deserializer; + _atn = deserializer.deserialize(_serializedATN); + + size_t count = _atn.getNumberOfDecisions(); + _decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); + } +} + +GoLexer::Initializer GoLexer::_init; diff --git a/grammar/cpp/GoLexer.h b/grammar/cpp/GoLexer.h new file mode 100644 index 0000000..470060b --- /dev/null +++ b/grammar/cpp/GoLexer.h @@ -0,0 +1,77 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoLexer.g4 by ANTLR 4.9.3 + +#pragma once + + +#include "antlr4-runtime.h" + + + + +class GoLexer : public antlr4::Lexer { +public: + enum { + BREAK = 1, DEFAULT = 2, FUNC = 3, INTERFACE = 4, SELECT = 5, CASE = 6, + DEFER = 7, GO = 8, MAP = 9, STRUCT = 10, CHAN = 11, ELSE = 12, GOTO = 13, + PACKAGE = 14, SWITCH = 15, CONST = 16, FALLTHROUGH = 17, IF = 18, RANGE = 19, + TYPE = 20, CONTINUE = 21, FOR = 22, IMPORT = 23, RETURN = 24, VAR = 25, + NIL_LIT = 26, IDENTIFIER = 27, L_PAREN = 28, R_PAREN = 29, L_CURLY = 30, + R_CURLY = 31, L_BRACKET = 32, R_BRACKET = 33, ASSIGN = 34, COMMA = 35, + SEMI = 36, HUANHANG = 37, HUANHANGG = 38, COLON = 39, DOT = 40, PLUS_PLUS = 41, + MINUS_MINUS = 42, DECLARE_ASSIGN = 43, ELLIPSIS = 44, EOSSS = 45, LOGICAL_OR = 46, + LOGICAL_AND = 47, EQUALS = 48, NOT_EQUALS = 49, LESS = 50, LESS_OR_EQUALS = 51, + GREATER = 52, GREATER_OR_EQUALS = 53, OR = 54, DIV = 55, MOD = 56, LSHIFT = 57, + RSHIFT = 58, BIT_CLEAR = 59, EXCLAMATION = 60, PLUS = 61, MINUS = 62, + CARET = 63, STAR = 64, AMPERSAND = 65, RECEIVE = 66, DECIMAL_LIT = 67, + BINARY_LIT = 68, OCTAL_LIT = 69, HEX_LIT = 70, FLOAT_LIT = 71, DECIMAL_FLOAT_LIT = 72, + HEX_FLOAT_LIT = 73, IMAGINARY_LIT = 74, RUNE_LIT = 75, BYTE_VALUE = 76, + OCTAL_BYTE_VALUE = 77, HEX_BYTE_VALUE = 78, LITTLE_U_VALUE = 79, BIG_U_VALUE = 80, + RAW_STRING_LIT = 81, INTERPRETED_STRING_LIT = 82, WS = 83, COMMENT = 84, + TERMINATOR = 85, LINE_COMMENT = 86, WS_NLSEMI = 87, COMMENT_NLSEMI = 88, + LINE_COMMENT_NLSEMI = 89 + }; + + enum { + NLSEMI = 1 + }; + + explicit GoLexer(antlr4::CharStream *input); + ~GoLexer(); + + virtual std::string getGrammarFileName() const override; + virtual const std::vector& getRuleNames() const override; + + virtual const std::vector& getChannelNames() const override; + virtual const std::vector& getModeNames() const override; + virtual const std::vector& getTokenNames() const override; // deprecated, use vocabulary instead + virtual antlr4::dfa::Vocabulary& getVocabulary() const override; + + virtual const std::vector getSerializedATN() const override; + virtual const antlr4::atn::ATN& getATN() const override; + +private: + static std::vector _decisionToDFA; + static antlr4::atn::PredictionContextCache _sharedContextCache; + static std::vector _ruleNames; + static std::vector _tokenNames; + static std::vector _channelNames; + static std::vector _modeNames; + + static std::vector _literalNames; + static std::vector _symbolicNames; + static antlr4::dfa::Vocabulary _vocabulary; + static antlr4::atn::ATN _atn; + static std::vector _serializedATN; + + + // Individual action functions triggered by action() above. + + // Individual semantic predicate functions triggered by sempred() above. + + struct Initializer { + Initializer(); + }; + static Initializer _init; +}; + diff --git a/grammar/cpp/GoLexer.interp b/grammar/cpp/GoLexer.interp new file mode 100644 index 0000000..1e2c2c5 --- /dev/null +++ b/grammar/cpp/GoLexer.interp @@ -0,0 +1,298 @@ +token literal names: +null +'break' +'default' +'func' +'interface' +'select' +'case' +'defer' +'go' +'map' +'struct' +'chan' +'else' +'goto' +'package' +'switch' +'const' +'fallthrough' +'if' +'range' +'type' +'continue' +'for' +'import' +'return' +'var' +'nil' +null +'(' +')' +'{' +'}' +'[' +']' +'=' +',' +';' +'\n' +'\r\n' +':' +'.' +'++' +'--' +':=' +'...' +null +'||' +'&&' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'|' +'/' +'%' +'<<' +'>>' +'&^' +'!' +'+' +'-' +'^' +'*' +'&' +'<-' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +HUANHANG +HUANHANGG +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +EOSSS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +IMAGINARY_LIT +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI + +rule names: +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +HUANHANG +HUANHANGG +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +EOSSS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +HEX_MANTISSA +HEX_EXPONENT +IMAGINARY_LIT +RUNE +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +UNICODE_VALUE +ESCAPED_VALUE +DECIMALS +OCTAL_DIGIT +HEX_DIGIT +BIN_DIGIT +EXPONENT +LETTER +UNICODE_DIGIT +UNICODE_LETTER +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +NLSEMI + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 91, 806, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 370, 10, 28, 12, 28, 14, 28, 373, 11, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 6, 46, 417, 10, 46, 13, 46, 14, 46, 418, 3, 46, 6, 46, 422, 10, 46, 13, 46, 14, 46, 423, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 430, 10, 46, 12, 46, 14, 46, 433, 11, 46, 3, 46, 3, 46, 3, 46, 5, 46, 438, 10, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 5, 68, 495, 10, 68, 3, 68, 7, 68, 498, 10, 68, 12, 68, 14, 68, 501, 11, 68, 5, 68, 503, 10, 68, 3, 69, 3, 69, 3, 69, 5, 69, 508, 10, 69, 3, 69, 6, 69, 511, 10, 69, 13, 69, 14, 69, 512, 3, 70, 3, 70, 5, 70, 517, 10, 70, 3, 70, 5, 70, 520, 10, 70, 3, 70, 6, 70, 523, 10, 70, 13, 70, 14, 70, 524, 3, 71, 3, 71, 3, 71, 5, 71, 530, 10, 71, 3, 71, 6, 71, 533, 10, 71, 13, 71, 14, 71, 534, 3, 72, 3, 72, 5, 72, 539, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 544, 10, 73, 3, 73, 5, 73, 547, 10, 73, 3, 73, 5, 73, 550, 10, 73, 3, 73, 3, 73, 3, 73, 5, 73, 555, 10, 73, 5, 73, 557, 10, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 5, 75, 565, 10, 75, 3, 75, 6, 75, 568, 10, 75, 13, 75, 14, 75, 569, 3, 75, 3, 75, 5, 75, 574, 10, 75, 3, 75, 7, 75, 577, 10, 75, 12, 75, 14, 75, 580, 11, 75, 5, 75, 582, 10, 75, 3, 75, 3, 75, 3, 75, 5, 75, 587, 10, 75, 3, 75, 7, 75, 590, 10, 75, 12, 75, 14, 75, 593, 11, 75, 5, 75, 595, 10, 75, 3, 76, 3, 76, 5, 76, 599, 10, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 608, 10, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 5, 78, 615, 10, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 5, 80, 623, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 7, 85, 655, 10, 85, 12, 85, 14, 85, 658, 11, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 7, 86, 665, 10, 86, 12, 86, 14, 86, 668, 11, 86, 3, 86, 3, 86, 3, 87, 6, 87, 673, 10, 87, 13, 87, 14, 87, 674, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 7, 88, 683, 10, 88, 12, 88, 14, 88, 686, 11, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 6, 89, 694, 10, 89, 13, 89, 14, 89, 695, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 7, 90, 704, 10, 90, 12, 90, 14, 90, 707, 11, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 715, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 743, 10, 92, 3, 93, 3, 93, 5, 93, 747, 10, 93, 3, 93, 7, 93, 750, 10, 93, 12, 93, 14, 93, 753, 11, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 5, 97, 763, 10, 97, 3, 97, 3, 97, 3, 98, 3, 98, 5, 98, 769, 10, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 6, 101, 776, 10, 101, 13, 101, 14, 101, 777, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 7, 102, 786, 10, 102, 12, 102, 14, 102, 789, 11, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 800, 10, 103, 12, 103, 14, 103, 803, 11, 103, 3, 103, 3, 103, 5, 431, 684, 787, 2, 104, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18, 10, 20, 11, 22, 12, 24, 13, 26, 14, 28, 15, 30, 16, 32, 17, 34, 18, 36, 19, 38, 20, 40, 21, 42, 22, 44, 23, 46, 24, 48, 25, 50, 26, 52, 27, 54, 28, 56, 29, 58, 30, 60, 31, 62, 32, 64, 33, 66, 34, 68, 35, 70, 36, 72, 37, 74, 38, 76, 39, 78, 40, 80, 41, 82, 42, 84, 43, 86, 44, 88, 45, 90, 46, 92, 47, 94, 48, 96, 49, 98, 50, 100, 51, 102, 52, 104, 53, 106, 54, 108, 55, 110, 56, 112, 57, 114, 58, 116, 59, 118, 60, 120, 61, 122, 62, 124, 63, 126, 64, 128, 65, 130, 66, 132, 67, 134, 68, 136, 69, 138, 70, 140, 71, 142, 72, 144, 73, 146, 74, 148, 75, 150, 2, 152, 2, 154, 76, 156, 2, 158, 77, 160, 78, 162, 79, 164, 80, 166, 81, 168, 82, 170, 83, 172, 84, 174, 85, 176, 86, 178, 87, 180, 88, 182, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 198, 2, 200, 2, 202, 89, 204, 90, 206, 91, 4, 2, 3, 19, 3, 2, 51, 59, 3, 2, 50, 59, 4, 2, 68, 68, 100, 100, 4, 2, 81, 81, 113, 113, 4, 2, 90, 90, 122, 122, 4, 2, 82, 82, 114, 114, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 4, 2, 36, 36, 94, 94, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 41, 41, 11, 2, 36, 36, 41, 41, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 3, 2, 50, 57, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 63, 2, 50, 2, 59, 2, 1634, 2, 1643, 2, 1778, 2, 1787, 2, 1986, 2, 1995, 2, 2408, 2, 2417, 2, 2536, 2, 2545, 2, 2664, 2, 2673, 2, 2792, 2, 2801, 2, 2920, 2, 2929, 2, 3048, 2, 3057, 2, 3176, 2, 3185, 2, 3304, 2, 3313, 2, 3432, 2, 3441, 2, 3560, 2, 3569, 2, 3666, 2, 3675, 2, 3794, 2, 3803, 2, 3874, 2, 3883, 2, 4162, 2, 4171, 2, 4242, 2, 4251, 2, 6114, 2, 6123, 2, 6162, 2, 6171, 2, 6472, 2, 6481, 2, 6610, 2, 6619, 2, 6786, 2, 6795, 2, 6802, 2, 6811, 2, 6994, 2, 7003, 2, 7090, 2, 7099, 2, 7234, 2, 7243, 2, 7250, 2, 7259, 2, 42530, 2, 42539, 2, 43218, 2, 43227, 2, 43266, 2, 43275, 2, 43474, 2, 43483, 2, 43506, 2, 43515, 2, 43602, 2, 43611, 2, 44018, 2, 44027, 2, 65298, 2, 65307, 2, 1186, 3, 1195, 3, 3378, 3, 3387, 3, 4200, 3, 4209, 3, 4338, 3, 4347, 3, 4408, 3, 4417, 3, 4562, 3, 4571, 3, 4850, 3, 4859, 3, 5202, 3, 5211, 3, 5330, 3, 5339, 3, 5714, 3, 5723, 3, 5826, 3, 5835, 3, 5938, 3, 5947, 3, 6370, 3, 6379, 3, 6482, 3, 6491, 3, 7250, 3, 7259, 3, 7506, 3, 7515, 3, 7586, 3, 7595, 3, 27234, 3, 27243, 3, 27474, 3, 27483, 3, 55248, 3, 55297, 3, 57666, 3, 57675, 3, 58098, 3, 58107, 3, 59730, 3, 59739, 3, 64498, 3, 64507, 3, 624, 2, 67, 2, 92, 2, 99, 2, 124, 2, 172, 2, 172, 2, 183, 2, 183, 2, 188, 2, 188, 2, 194, 2, 216, 2, 218, 2, 248, 2, 250, 2, 707, 2, 712, 2, 723, 2, 738, 2, 742, 2, 750, 2, 750, 2, 752, 2, 752, 2, 882, 2, 886, 2, 888, 2, 889, 2, 892, 2, 895, 2, 897, 2, 897, 2, 904, 2, 904, 2, 906, 2, 908, 2, 910, 2, 910, 2, 912, 2, 931, 2, 933, 2, 1015, 2, 1017, 2, 1155, 2, 1164, 2, 1329, 2, 1331, 2, 1368, 2, 1371, 2, 1371, 2, 1378, 2, 1418, 2, 1490, 2, 1516, 2, 1521, 2, 1524, 2, 1570, 2, 1612, 2, 1648, 2, 1649, 2, 1651, 2, 1749, 2, 1751, 2, 1751, 2, 1767, 2, 1768, 2, 1776, 2, 1777, 2, 1788, 2, 1790, 2, 1793, 2, 1793, 2, 1810, 2, 1810, 2, 1812, 2, 1841, 2, 1871, 2, 1959, 2, 1971, 2, 1971, 2, 1996, 2, 2028, 2, 2038, 2, 2039, 2, 2044, 2, 2044, 2, 2050, 2, 2071, 2, 2076, 2, 2076, 2, 2086, 2, 2086, 2, 2090, 2, 2090, 2, 2114, 2, 2138, 2, 2146, 2, 2156, 2, 2210, 2, 2230, 2, 2232, 2, 2249, 2, 2310, 2, 2363, 2, 2367, 2, 2367, 2, 2386, 2, 2386, 2, 2394, 2, 2403, 2, 2419, 2, 2434, 2, 2439, 2, 2446, 2, 2449, 2, 2450, 2, 2453, 2, 2474, 2, 2476, 2, 2482, 2, 2484, 2, 2484, 2, 2488, 2, 2491, 2, 2495, 2, 2495, 2, 2512, 2, 2512, 2, 2526, 2, 2527, 2, 2529, 2, 2531, 2, 2546, 2, 2547, 2, 2558, 2, 2558, 2, 2567, 2, 2572, 2, 2577, 2, 2578, 2, 2581, 2, 2602, 2, 2604, 2, 2610, 2, 2612, 2, 2613, 2, 2615, 2, 2616, 2, 2618, 2, 2619, 2, 2651, 2, 2654, 2, 2656, 2, 2656, 2, 2676, 2, 2678, 2, 2695, 2, 2703, 2, 2705, 2, 2707, 2, 2709, 2, 2730, 2, 2732, 2, 2738, 2, 2740, 2, 2741, 2, 2743, 2, 2747, 2, 2751, 2, 2751, 2, 2770, 2, 2770, 2, 2786, 2, 2787, 2, 2811, 2, 2811, 2, 2823, 2, 2830, 2, 2833, 2, 2834, 2, 2837, 2, 2858, 2, 2860, 2, 2866, 2, 2868, 2, 2869, 2, 2871, 2, 2875, 2, 2879, 2, 2879, 2, 2910, 2, 2911, 2, 2913, 2, 2915, 2, 2931, 2, 2931, 2, 2949, 2, 2949, 2, 2951, 2, 2956, 2, 2960, 2, 2962, 2, 2964, 2, 2967, 2, 2971, 2, 2972, 2, 2974, 2, 2974, 2, 2976, 2, 2977, 2, 2981, 2, 2982, 2, 2986, 2, 2988, 2, 2992, 2, 3003, 2, 3026, 2, 3026, 2, 3079, 2, 3086, 2, 3088, 2, 3090, 2, 3092, 2, 3114, 2, 3116, 2, 3131, 2, 3135, 2, 3135, 2, 3162, 2, 3164, 2, 3170, 2, 3171, 2, 3202, 2, 3202, 2, 3207, 2, 3214, 2, 3216, 2, 3218, 2, 3220, 2, 3242, 2, 3244, 2, 3253, 2, 3255, 2, 3259, 2, 3263, 2, 3263, 2, 3296, 2, 3296, 2, 3298, 2, 3299, 2, 3315, 2, 3316, 2, 3334, 2, 3342, 2, 3344, 2, 3346, 2, 3348, 2, 3388, 2, 3391, 2, 3391, 2, 3408, 2, 3408, 2, 3414, 2, 3416, 2, 3425, 2, 3427, 2, 3452, 2, 3457, 2, 3463, 2, 3480, 2, 3484, 2, 3507, 2, 3509, 2, 3517, 2, 3519, 2, 3519, 2, 3522, 2, 3528, 2, 3587, 2, 3634, 2, 3636, 2, 3637, 2, 3650, 2, 3656, 2, 3715, 2, 3716, 2, 3718, 2, 3718, 2, 3720, 2, 3724, 2, 3726, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3762, 2, 3764, 2, 3765, 2, 3775, 2, 3775, 2, 3778, 2, 3782, 2, 3784, 2, 3784, 2, 3806, 2, 3809, 2, 3842, 2, 3842, 2, 3906, 2, 3913, 2, 3915, 2, 3950, 2, 3978, 2, 3982, 2, 4098, 2, 4140, 2, 4161, 2, 4161, 2, 4178, 2, 4183, 2, 4188, 2, 4191, 2, 4195, 2, 4195, 2, 4199, 2, 4200, 2, 4208, 2, 4210, 2, 4215, 2, 4227, 2, 4240, 2, 4240, 2, 4258, 2, 4295, 2, 4297, 2, 4297, 2, 4303, 2, 4303, 2, 4306, 2, 4348, 2, 4350, 2, 4682, 2, 4684, 2, 4687, 2, 4690, 2, 4696, 2, 4698, 2, 4698, 2, 4700, 2, 4703, 2, 4706, 2, 4746, 2, 4748, 2, 4751, 2, 4754, 2, 4786, 2, 4788, 2, 4791, 2, 4794, 2, 4800, 2, 4802, 2, 4802, 2, 4804, 2, 4807, 2, 4810, 2, 4824, 2, 4826, 2, 4882, 2, 4884, 2, 4887, 2, 4890, 2, 4956, 2, 4994, 2, 5009, 2, 5026, 2, 5111, 2, 5114, 2, 5119, 2, 5123, 2, 5742, 2, 5745, 2, 5761, 2, 5763, 2, 5788, 2, 5794, 2, 5868, 2, 5875, 2, 5882, 2, 5890, 2, 5902, 2, 5904, 2, 5907, 2, 5922, 2, 5939, 2, 5954, 2, 5971, 2, 5986, 2, 5998, 2, 6000, 2, 6002, 2, 6018, 2, 6069, 2, 6105, 2, 6105, 2, 6110, 2, 6110, 2, 6178, 2, 6266, 2, 6274, 2, 6278, 2, 6281, 2, 6314, 2, 6316, 2, 6316, 2, 6322, 2, 6391, 2, 6402, 2, 6432, 2, 6482, 2, 6511, 2, 6514, 2, 6518, 2, 6530, 2, 6573, 2, 6578, 2, 6603, 2, 6658, 2, 6680, 2, 6690, 2, 6742, 2, 6825, 2, 6825, 2, 6919, 2, 6965, 2, 6983, 2, 6989, 2, 7045, 2, 7074, 2, 7088, 2, 7089, 2, 7100, 2, 7143, 2, 7170, 2, 7205, 2, 7247, 2, 7249, 2, 7260, 2, 7295, 2, 7298, 2, 7306, 2, 7314, 2, 7356, 2, 7359, 2, 7361, 2, 7403, 2, 7406, 2, 7408, 2, 7413, 2, 7415, 2, 7416, 2, 7420, 2, 7420, 2, 7426, 2, 7617, 2, 7682, 2, 7959, 2, 7962, 2, 7967, 2, 7970, 2, 8007, 2, 8010, 2, 8015, 2, 8018, 2, 8025, 2, 8027, 2, 8027, 2, 8029, 2, 8029, 2, 8031, 2, 8031, 2, 8033, 2, 8063, 2, 8066, 2, 8118, 2, 8120, 2, 8126, 2, 8128, 2, 8128, 2, 8132, 2, 8134, 2, 8136, 2, 8142, 2, 8146, 2, 8149, 2, 8152, 2, 8157, 2, 8162, 2, 8174, 2, 8180, 2, 8182, 2, 8184, 2, 8190, 2, 8307, 2, 8307, 2, 8321, 2, 8321, 2, 8338, 2, 8350, 2, 8452, 2, 8452, 2, 8457, 2, 8457, 2, 8460, 2, 8469, 2, 8471, 2, 8471, 2, 8475, 2, 8479, 2, 8486, 2, 8486, 2, 8488, 2, 8488, 2, 8490, 2, 8490, 2, 8492, 2, 8495, 2, 8497, 2, 8507, 2, 8510, 2, 8513, 2, 8519, 2, 8523, 2, 8528, 2, 8528, 2, 8581, 2, 8582, 2, 11266, 2, 11312, 2, 11314, 2, 11360, 2, 11362, 2, 11494, 2, 11501, 2, 11504, 2, 11508, 2, 11509, 2, 11522, 2, 11559, 2, 11561, 2, 11561, 2, 11567, 2, 11567, 2, 11570, 2, 11625, 2, 11633, 2, 11633, 2, 11650, 2, 11672, 2, 11682, 2, 11688, 2, 11690, 2, 11696, 2, 11698, 2, 11704, 2, 11706, 2, 11712, 2, 11714, 2, 11720, 2, 11722, 2, 11728, 2, 11730, 2, 11736, 2, 11738, 2, 11744, 2, 11825, 2, 11825, 2, 12295, 2, 12296, 2, 12339, 2, 12343, 2, 12349, 2, 12350, 2, 12355, 2, 12440, 2, 12447, 2, 12449, 2, 12451, 2, 12540, 2, 12542, 2, 12545, 2, 12551, 2, 12593, 2, 12595, 2, 12688, 2, 12706, 2, 12737, 2, 12786, 2, 12801, 2, 13314, 2, 19905, 2, 19970, 2, 40958, 2, 40962, 2, 42126, 2, 42194, 2, 42239, 2, 42242, 2, 42510, 2, 42514, 2, 42529, 2, 42540, 2, 42541, 2, 42562, 2, 42608, 2, 42625, 2, 42655, 2, 42658, 2, 42727, 2, 42777, 2, 42785, 2, 42788, 2, 42890, 2, 42893, 2, 42945, 2, 42948, 2, 42956, 2, 42999, 2, 43011, 2, 43013, 2, 43015, 2, 43017, 2, 43020, 2, 43022, 2, 43044, 2, 43074, 2, 43125, 2, 43140, 2, 43189, 2, 43252, 2, 43257, 2, 43261, 2, 43261, 2, 43263, 2, 43264, 2, 43276, 2, 43303, 2, 43314, 2, 43336, 2, 43362, 2, 43390, 2, 43398, 2, 43444, 2, 43473, 2, 43473, 2, 43490, 2, 43494, 2, 43496, 2, 43505, 2, 43516, 2, 43520, 2, 43522, 2, 43562, 2, 43586, 2, 43588, 2, 43590, 2, 43597, 2, 43618, 2, 43640, 2, 43644, 2, 43644, 2, 43648, 2, 43697, 2, 43699, 2, 43699, 2, 43703, 2, 43704, 2, 43707, 2, 43711, 2, 43714, 2, 43714, 2, 43716, 2, 43716, 2, 43741, 2, 43743, 2, 43746, 2, 43756, 2, 43764, 2, 43766, 2, 43779, 2, 43784, 2, 43787, 2, 43792, 2, 43795, 2, 43800, 2, 43810, 2, 43816, 2, 43818, 2, 43824, 2, 43826, 2, 43868, 2, 43870, 2, 43883, 2, 43890, 2, 44004, 2, 44034, 2, 55205, 2, 55218, 2, 55240, 2, 55245, 2, 55293, 2, 63746, 2, 64111, 2, 64114, 2, 64219, 2, 64258, 2, 64264, 2, 64277, 2, 64281, 2, 64287, 2, 64287, 2, 64289, 2, 64298, 2, 64300, 2, 64312, 2, 64314, 2, 64318, 2, 64320, 2, 64320, 2, 64322, 2, 64323, 2, 64325, 2, 64326, 2, 64328, 2, 64435, 2, 64469, 2, 64831, 2, 64850, 2, 64913, 2, 64916, 2, 64969, 2, 65010, 2, 65021, 2, 65138, 2, 65142, 2, 65144, 2, 65278, 2, 65315, 2, 65340, 2, 65347, 2, 65372, 2, 65384, 2, 65472, 2, 65476, 2, 65481, 2, 65484, 2, 65489, 2, 65492, 2, 65497, 2, 65500, 2, 65502, 2, 2, 3, 13, 3, 15, 3, 40, 3, 42, 3, 60, 3, 62, 3, 63, 3, 65, 3, 79, 3, 82, 3, 95, 3, 130, 3, 252, 3, 642, 3, 670, 3, 674, 3, 722, 3, 770, 3, 801, 3, 815, 3, 834, 3, 836, 3, 843, 3, 850, 3, 887, 3, 898, 3, 927, 3, 930, 3, 965, 3, 970, 3, 977, 3, 1026, 3, 1183, 3, 1202, 3, 1237, 3, 1242, 3, 1277, 3, 1282, 3, 1321, 3, 1330, 3, 1381, 3, 1538, 3, 1848, 3, 1858, 3, 1879, 3, 1890, 3, 1897, 3, 2050, 3, 2055, 3, 2058, 3, 2058, 3, 2060, 3, 2103, 3, 2105, 3, 2106, 3, 2110, 3, 2110, 3, 2113, 3, 2135, 3, 2146, 3, 2168, 3, 2178, 3, 2208, 3, 2274, 3, 2292, 3, 2294, 3, 2295, 3, 2306, 3, 2327, 3, 2338, 3, 2363, 3, 2434, 3, 2489, 3, 2496, 3, 2497, 3, 2562, 3, 2562, 3, 2578, 3, 2581, 3, 2583, 3, 2585, 3, 2587, 3, 2615, 3, 2658, 3, 2686, 3, 2690, 3, 2718, 3, 2754, 3, 2761, 3, 2763, 3, 2790, 3, 2818, 3, 2871, 3, 2882, 3, 2903, 3, 2914, 3, 2932, 3, 2946, 3, 2963, 3, 3074, 3, 3146, 3, 3202, 3, 3252, 3, 3266, 3, 3316, 3, 3330, 3, 3365, 3, 3714, 3, 3755, 3, 3762, 3, 3763, 3, 3842, 3, 3870, 3, 3881, 3, 3881, 3, 3890, 3, 3911, 3, 4018, 3, 4038, 3, 4066, 3, 4088, 3, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 3, 4422, 3, 4422, 3, 4425, 3, 4425, 3, 4434, 3, 4468, 3, 4472, 3, 4472, 3, 4485, 3, 4532, 3, 4547, 3, 4550, 3, 4572, 3, 4572, 3, 4574, 3, 4574, 3, 4610, 3, 4627, 3, 4629, 3, 4653, 3, 4738, 3, 4744, 3, 4746, 3, 4746, 3, 4748, 3, 4751, 3, 4753, 3, 4767, 3, 4769, 3, 4778, 3, 4786, 3, 4832, 3, 4871, 3, 4878, 3, 4881, 3, 4882, 3, 4885, 3, 4906, 3, 4908, 3, 4914, 3, 4916, 3, 4917, 3, 4919, 3, 4923, 3, 4927, 3, 4927, 3, 4946, 3, 4946, 3, 4959, 3, 4963, 3, 5122, 3, 5174, 3, 5193, 3, 5196, 3, 5217, 3, 5219, 3, 5250, 3, 5297, 3, 5318, 3, 5319, 3, 5321, 3, 5321, 3, 5506, 3, 5552, 3, 5594, 3, 5597, 3, 5634, 3, 5681, 3, 5702, 3, 5702, 3, 5762, 3, 5804, 3, 5818, 3, 5818, 3, 5890, 3, 5916, 3, 6146, 3, 6189, 3, 6306, 3, 6369, 3, 6401, 3, 6408, 3, 6411, 3, 6411, 3, 6414, 3, 6421, 3, 6423, 3, 6424, 3, 6426, 3, 6449, 3, 6465, 3, 6465, 3, 6467, 3, 6467, 3, 6562, 3, 6569, 3, 6572, 3, 6610, 3, 6627, 3, 6627, 3, 6629, 3, 6629, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6795, 3, 6815, 3, 6815, 3, 6850, 3, 6906, 3, 7170, 3, 7178, 3, 7180, 3, 7216, 3, 7234, 3, 7234, 3, 7284, 3, 7313, 3, 7426, 3, 7432, 3, 7434, 3, 7435, 3, 7437, 3, 7474, 3, 7496, 3, 7496, 3, 7522, 3, 7527, 3, 7529, 3, 7530, 3, 7532, 3, 7563, 3, 7578, 3, 7578, 3, 7906, 3, 7924, 3, 8114, 3, 8114, 3, 8194, 3, 9115, 3, 9346, 3, 9541, 3, 12290, 3, 13360, 3, 17410, 3, 17992, 3, 26626, 3, 27194, 3, 27202, 3, 27232, 3, 27346, 3, 27375, 3, 27394, 3, 27441, 3, 27458, 3, 27461, 3, 27493, 3, 27513, 3, 27519, 3, 27537, 3, 28226, 3, 28289, 3, 28418, 3, 28492, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28645, 3, 28645, 3, 28674, 3, 34809, 3, 34818, 3, 36055, 3, 36098, 3, 36106, 3, 45058, 3, 45344, 3, 45394, 3, 45396, 3, 45414, 3, 45417, 3, 45426, 3, 45821, 3, 48130, 3, 48236, 3, 48242, 3, 48254, 3, 48258, 3, 48266, 3, 48274, 3, 48283, 3, 54274, 3, 54358, 3, 54360, 3, 54430, 3, 54432, 3, 54433, 3, 54436, 3, 54436, 3, 54439, 3, 54440, 3, 54443, 3, 54446, 3, 54448, 3, 54459, 3, 54461, 3, 54461, 3, 54463, 3, 54469, 3, 54471, 3, 54535, 3, 54537, 3, 54540, 3, 54543, 3, 54550, 3, 54552, 3, 54558, 3, 54560, 3, 54587, 3, 54589, 3, 54592, 3, 54594, 3, 54598, 3, 54600, 3, 54600, 3, 54604, 3, 54610, 3, 54612, 3, 54951, 3, 54954, 3, 54978, 3, 54980, 3, 55004, 3, 55006, 3, 55036, 3, 55038, 3, 55062, 3, 55064, 3, 55094, 3, 55096, 3, 55120, 3, 55122, 3, 55152, 3, 55154, 3, 55178, 3, 55180, 3, 55210, 3, 55212, 3, 55236, 3, 55238, 3, 55245, 3, 57602, 3, 57646, 3, 57657, 3, 57663, 3, 57680, 3, 57680, 3, 58050, 3, 58093, 3, 59394, 3, 59590, 3, 59650, 3, 59717, 3, 59725, 3, 59725, 3, 60930, 3, 60933, 3, 60935, 3, 60961, 3, 60963, 3, 60964, 3, 60966, 3, 60966, 3, 60969, 3, 60969, 3, 60971, 3, 60980, 3, 60982, 3, 60985, 3, 60987, 3, 60987, 3, 60989, 3, 60989, 3, 60996, 3, 60996, 3, 61001, 3, 61001, 3, 61003, 3, 61003, 3, 61005, 3, 61005, 3, 61007, 3, 61009, 3, 61011, 3, 61012, 3, 61014, 3, 61014, 3, 61017, 3, 61017, 3, 61019, 3, 61019, 3, 61021, 3, 61021, 3, 61023, 3, 61023, 3, 61025, 3, 61025, 3, 61027, 3, 61028, 3, 61030, 3, 61030, 3, 61033, 3, 61036, 3, 61038, 3, 61044, 3, 61046, 3, 61049, 3, 61051, 3, 61054, 3, 61056, 3, 61056, 3, 61058, 3, 61067, 3, 61069, 3, 61085, 3, 61091, 3, 61093, 3, 61095, 3, 61099, 3, 61101, 3, 61117, 3, 2, 4, 42719, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 2, 5, 4940, 5, 852, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 146, 3, 2, 2, 2, 2, 148, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 2, 170, 3, 2, 2, 2, 2, 172, 3, 2, 2, 2, 2, 174, 3, 2, 2, 2, 2, 176, 3, 2, 2, 2, 2, 178, 3, 2, 2, 2, 2, 180, 3, 2, 2, 2, 3, 202, 3, 2, 2, 2, 3, 204, 3, 2, 2, 2, 3, 206, 3, 2, 2, 2, 4, 208, 3, 2, 2, 2, 6, 214, 3, 2, 2, 2, 8, 222, 3, 2, 2, 2, 10, 227, 3, 2, 2, 2, 12, 237, 3, 2, 2, 2, 14, 244, 3, 2, 2, 2, 16, 249, 3, 2, 2, 2, 18, 255, 3, 2, 2, 2, 20, 258, 3, 2, 2, 2, 22, 262, 3, 2, 2, 2, 24, 269, 3, 2, 2, 2, 26, 274, 3, 2, 2, 2, 28, 279, 3, 2, 2, 2, 30, 284, 3, 2, 2, 2, 32, 292, 3, 2, 2, 2, 34, 299, 3, 2, 2, 2, 36, 305, 3, 2, 2, 2, 38, 317, 3, 2, 2, 2, 40, 320, 3, 2, 2, 2, 42, 326, 3, 2, 2, 2, 44, 331, 3, 2, 2, 2, 46, 340, 3, 2, 2, 2, 48, 344, 3, 2, 2, 2, 50, 351, 3, 2, 2, 2, 52, 358, 3, 2, 2, 2, 54, 362, 3, 2, 2, 2, 56, 366, 3, 2, 2, 2, 58, 374, 3, 2, 2, 2, 60, 376, 3, 2, 2, 2, 62, 378, 3, 2, 2, 2, 64, 380, 3, 2, 2, 2, 66, 382, 3, 2, 2, 2, 68, 384, 3, 2, 2, 2, 70, 386, 3, 2, 2, 2, 72, 388, 3, 2, 2, 2, 74, 390, 3, 2, 2, 2, 76, 392, 3, 2, 2, 2, 78, 394, 3, 2, 2, 2, 80, 397, 3, 2, 2, 2, 82, 399, 3, 2, 2, 2, 84, 401, 3, 2, 2, 2, 86, 404, 3, 2, 2, 2, 88, 407, 3, 2, 2, 2, 90, 410, 3, 2, 2, 2, 92, 437, 3, 2, 2, 2, 94, 439, 3, 2, 2, 2, 96, 442, 3, 2, 2, 2, 98, 445, 3, 2, 2, 2, 100, 448, 3, 2, 2, 2, 102, 451, 3, 2, 2, 2, 104, 453, 3, 2, 2, 2, 106, 456, 3, 2, 2, 2, 108, 458, 3, 2, 2, 2, 110, 461, 3, 2, 2, 2, 112, 463, 3, 2, 2, 2, 114, 465, 3, 2, 2, 2, 116, 467, 3, 2, 2, 2, 118, 470, 3, 2, 2, 2, 120, 473, 3, 2, 2, 2, 122, 476, 3, 2, 2, 2, 124, 478, 3, 2, 2, 2, 126, 480, 3, 2, 2, 2, 128, 482, 3, 2, 2, 2, 130, 484, 3, 2, 2, 2, 132, 486, 3, 2, 2, 2, 134, 488, 3, 2, 2, 2, 136, 502, 3, 2, 2, 2, 138, 504, 3, 2, 2, 2, 140, 514, 3, 2, 2, 2, 142, 526, 3, 2, 2, 2, 144, 538, 3, 2, 2, 2, 146, 556, 3, 2, 2, 2, 148, 558, 3, 2, 2, 2, 150, 594, 3, 2, 2, 2, 152, 596, 3, 2, 2, 2, 154, 607, 3, 2, 2, 2, 156, 611, 3, 2, 2, 2, 158, 618, 3, 2, 2, 2, 160, 622, 3, 2, 2, 2, 162, 624, 3, 2, 2, 2, 164, 629, 3, 2, 2, 2, 166, 634, 3, 2, 2, 2, 168, 641, 3, 2, 2, 2, 170, 652, 3, 2, 2, 2, 172, 661, 3, 2, 2, 2, 174, 672, 3, 2, 2, 2, 176, 678, 3, 2, 2, 2, 178, 693, 3, 2, 2, 2, 180, 699, 3, 2, 2, 2, 182, 714, 3, 2, 2, 2, 184, 716, 3, 2, 2, 2, 186, 744, 3, 2, 2, 2, 188, 754, 3, 2, 2, 2, 190, 756, 3, 2, 2, 2, 192, 758, 3, 2, 2, 2, 194, 760, 3, 2, 2, 2, 196, 768, 3, 2, 2, 2, 198, 770, 3, 2, 2, 2, 200, 772, 3, 2, 2, 2, 202, 775, 3, 2, 2, 2, 204, 781, 3, 2, 2, 2, 206, 795, 3, 2, 2, 2, 208, 209, 7, 100, 2, 2, 209, 210, 7, 116, 2, 2, 210, 211, 7, 103, 2, 2, 211, 212, 7, 99, 2, 2, 212, 213, 7, 109, 2, 2, 213, 5, 3, 2, 2, 2, 214, 215, 7, 102, 2, 2, 215, 216, 7, 103, 2, 2, 216, 217, 7, 104, 2, 2, 217, 218, 7, 99, 2, 2, 218, 219, 7, 119, 2, 2, 219, 220, 7, 110, 2, 2, 220, 221, 7, 118, 2, 2, 221, 7, 3, 2, 2, 2, 222, 223, 7, 104, 2, 2, 223, 224, 7, 119, 2, 2, 224, 225, 7, 112, 2, 2, 225, 226, 7, 101, 2, 2, 226, 9, 3, 2, 2, 2, 227, 228, 7, 107, 2, 2, 228, 229, 7, 112, 2, 2, 229, 230, 7, 118, 2, 2, 230, 231, 7, 103, 2, 2, 231, 232, 7, 116, 2, 2, 232, 233, 7, 104, 2, 2, 233, 234, 7, 99, 2, 2, 234, 235, 7, 101, 2, 2, 235, 236, 7, 103, 2, 2, 236, 11, 3, 2, 2, 2, 237, 238, 7, 117, 2, 2, 238, 239, 7, 103, 2, 2, 239, 240, 7, 110, 2, 2, 240, 241, 7, 103, 2, 2, 241, 242, 7, 101, 2, 2, 242, 243, 7, 118, 2, 2, 243, 13, 3, 2, 2, 2, 244, 245, 7, 101, 2, 2, 245, 246, 7, 99, 2, 2, 246, 247, 7, 117, 2, 2, 247, 248, 7, 103, 2, 2, 248, 15, 3, 2, 2, 2, 249, 250, 7, 102, 2, 2, 250, 251, 7, 103, 2, 2, 251, 252, 7, 104, 2, 2, 252, 253, 7, 103, 2, 2, 253, 254, 7, 116, 2, 2, 254, 17, 3, 2, 2, 2, 255, 256, 7, 105, 2, 2, 256, 257, 7, 113, 2, 2, 257, 19, 3, 2, 2, 2, 258, 259, 7, 111, 2, 2, 259, 260, 7, 99, 2, 2, 260, 261, 7, 114, 2, 2, 261, 21, 3, 2, 2, 2, 262, 263, 7, 117, 2, 2, 263, 264, 7, 118, 2, 2, 264, 265, 7, 116, 2, 2, 265, 266, 7, 119, 2, 2, 266, 267, 7, 101, 2, 2, 267, 268, 7, 118, 2, 2, 268, 23, 3, 2, 2, 2, 269, 270, 7, 101, 2, 2, 270, 271, 7, 106, 2, 2, 271, 272, 7, 99, 2, 2, 272, 273, 7, 112, 2, 2, 273, 25, 3, 2, 2, 2, 274, 275, 7, 103, 2, 2, 275, 276, 7, 110, 2, 2, 276, 277, 7, 117, 2, 2, 277, 278, 7, 103, 2, 2, 278, 27, 3, 2, 2, 2, 279, 280, 7, 105, 2, 2, 280, 281, 7, 113, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 113, 2, 2, 283, 29, 3, 2, 2, 2, 284, 285, 7, 114, 2, 2, 285, 286, 7, 99, 2, 2, 286, 287, 7, 101, 2, 2, 287, 288, 7, 109, 2, 2, 288, 289, 7, 99, 2, 2, 289, 290, 7, 105, 2, 2, 290, 291, 7, 103, 2, 2, 291, 31, 3, 2, 2, 2, 292, 293, 7, 117, 2, 2, 293, 294, 7, 121, 2, 2, 294, 295, 7, 107, 2, 2, 295, 296, 7, 118, 2, 2, 296, 297, 7, 101, 2, 2, 297, 298, 7, 106, 2, 2, 298, 33, 3, 2, 2, 2, 299, 300, 7, 101, 2, 2, 300, 301, 7, 113, 2, 2, 301, 302, 7, 112, 2, 2, 302, 303, 7, 117, 2, 2, 303, 304, 7, 118, 2, 2, 304, 35, 3, 2, 2, 2, 305, 306, 7, 104, 2, 2, 306, 307, 7, 99, 2, 2, 307, 308, 7, 110, 2, 2, 308, 309, 7, 110, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, 7, 106, 2, 2, 311, 312, 7, 116, 2, 2, 312, 313, 7, 113, 2, 2, 313, 314, 7, 119, 2, 2, 314, 315, 7, 105, 2, 2, 315, 316, 7, 106, 2, 2, 316, 37, 3, 2, 2, 2, 317, 318, 7, 107, 2, 2, 318, 319, 7, 104, 2, 2, 319, 39, 3, 2, 2, 2, 320, 321, 7, 116, 2, 2, 321, 322, 7, 99, 2, 2, 322, 323, 7, 112, 2, 2, 323, 324, 7, 105, 2, 2, 324, 325, 7, 103, 2, 2, 325, 41, 3, 2, 2, 2, 326, 327, 7, 118, 2, 2, 327, 328, 7, 123, 2, 2, 328, 329, 7, 114, 2, 2, 329, 330, 7, 103, 2, 2, 330, 43, 3, 2, 2, 2, 331, 332, 7, 101, 2, 2, 332, 333, 7, 113, 2, 2, 333, 334, 7, 112, 2, 2, 334, 335, 7, 118, 2, 2, 335, 336, 7, 107, 2, 2, 336, 337, 7, 112, 2, 2, 337, 338, 7, 119, 2, 2, 338, 339, 7, 103, 2, 2, 339, 45, 3, 2, 2, 2, 340, 341, 7, 104, 2, 2, 341, 342, 7, 113, 2, 2, 342, 343, 7, 116, 2, 2, 343, 47, 3, 2, 2, 2, 344, 345, 7, 107, 2, 2, 345, 346, 7, 111, 2, 2, 346, 347, 7, 114, 2, 2, 347, 348, 7, 113, 2, 2, 348, 349, 7, 116, 2, 2, 349, 350, 7, 118, 2, 2, 350, 49, 3, 2, 2, 2, 351, 352, 7, 116, 2, 2, 352, 353, 7, 103, 2, 2, 353, 354, 7, 118, 2, 2, 354, 355, 7, 119, 2, 2, 355, 356, 7, 116, 2, 2, 356, 357, 7, 112, 2, 2, 357, 51, 3, 2, 2, 2, 358, 359, 7, 120, 2, 2, 359, 360, 7, 99, 2, 2, 360, 361, 7, 116, 2, 2, 361, 53, 3, 2, 2, 2, 362, 363, 7, 112, 2, 2, 363, 364, 7, 107, 2, 2, 364, 365, 7, 110, 2, 2, 365, 55, 3, 2, 2, 2, 366, 371, 5, 196, 98, 2, 367, 370, 5, 196, 98, 2, 368, 370, 5, 198, 99, 2, 369, 367, 3, 2, 2, 2, 369, 368, 3, 2, 2, 2, 370, 373, 3, 2, 2, 2, 371, 369, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 57, 3, 2, 2, 2, 373, 371, 3, 2, 2, 2, 374, 375, 7, 42, 2, 2, 375, 59, 3, 2, 2, 2, 376, 377, 7, 43, 2, 2, 377, 61, 3, 2, 2, 2, 378, 379, 7, 125, 2, 2, 379, 63, 3, 2, 2, 2, 380, 381, 7, 127, 2, 2, 381, 65, 3, 2, 2, 2, 382, 383, 7, 93, 2, 2, 383, 67, 3, 2, 2, 2, 384, 385, 7, 95, 2, 2, 385, 69, 3, 2, 2, 2, 386, 387, 7, 63, 2, 2, 387, 71, 3, 2, 2, 2, 388, 389, 7, 46, 2, 2, 389, 73, 3, 2, 2, 2, 390, 391, 7, 61, 2, 2, 391, 75, 3, 2, 2, 2, 392, 393, 7, 12, 2, 2, 393, 77, 3, 2, 2, 2, 394, 395, 7, 15, 2, 2, 395, 396, 7, 12, 2, 2, 396, 79, 3, 2, 2, 2, 397, 398, 7, 60, 2, 2, 398, 81, 3, 2, 2, 2, 399, 400, 7, 48, 2, 2, 400, 83, 3, 2, 2, 2, 401, 402, 7, 45, 2, 2, 402, 403, 7, 45, 2, 2, 403, 85, 3, 2, 2, 2, 404, 405, 7, 47, 2, 2, 405, 406, 7, 47, 2, 2, 406, 87, 3, 2, 2, 2, 407, 408, 7, 60, 2, 2, 408, 409, 7, 63, 2, 2, 409, 89, 3, 2, 2, 2, 410, 411, 7, 48, 2, 2, 411, 412, 7, 48, 2, 2, 412, 413, 7, 48, 2, 2, 413, 91, 3, 2, 2, 2, 414, 438, 7, 61, 2, 2, 415, 417, 5, 76, 38, 2, 416, 415, 3, 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 416, 3, 2, 2, 2, 418, 419, 3, 2, 2, 2, 419, 438, 3, 2, 2, 2, 420, 422, 5, 78, 39, 2, 421, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 438, 3, 2, 2, 2, 425, 426, 7, 49, 2, 2, 426, 427, 7, 44, 2, 2, 427, 431, 3, 2, 2, 2, 428, 430, 11, 2, 2, 2, 429, 428, 3, 2, 2, 2, 430, 433, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 431, 429, 3, 2, 2, 2, 432, 434, 3, 2, 2, 2, 433, 431, 3, 2, 2, 2, 434, 435, 7, 44, 2, 2, 435, 438, 7, 49, 2, 2, 436, 438, 7, 2, 2, 3, 437, 414, 3, 2, 2, 2, 437, 416, 3, 2, 2, 2, 437, 421, 3, 2, 2, 2, 437, 425, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 93, 3, 2, 2, 2, 439, 440, 7, 126, 2, 2, 440, 441, 7, 126, 2, 2, 441, 95, 3, 2, 2, 2, 442, 443, 7, 40, 2, 2, 443, 444, 7, 40, 2, 2, 444, 97, 3, 2, 2, 2, 445, 446, 7, 63, 2, 2, 446, 447, 7, 63, 2, 2, 447, 99, 3, 2, 2, 2, 448, 449, 7, 35, 2, 2, 449, 450, 7, 63, 2, 2, 450, 101, 3, 2, 2, 2, 451, 452, 7, 62, 2, 2, 452, 103, 3, 2, 2, 2, 453, 454, 7, 62, 2, 2, 454, 455, 7, 63, 2, 2, 455, 105, 3, 2, 2, 2, 456, 457, 7, 64, 2, 2, 457, 107, 3, 2, 2, 2, 458, 459, 7, 64, 2, 2, 459, 460, 7, 63, 2, 2, 460, 109, 3, 2, 2, 2, 461, 462, 7, 126, 2, 2, 462, 111, 3, 2, 2, 2, 463, 464, 7, 49, 2, 2, 464, 113, 3, 2, 2, 2, 465, 466, 7, 39, 2, 2, 466, 115, 3, 2, 2, 2, 467, 468, 7, 62, 2, 2, 468, 469, 7, 62, 2, 2, 469, 117, 3, 2, 2, 2, 470, 471, 7, 64, 2, 2, 471, 472, 7, 64, 2, 2, 472, 119, 3, 2, 2, 2, 473, 474, 7, 40, 2, 2, 474, 475, 7, 96, 2, 2, 475, 121, 3, 2, 2, 2, 476, 477, 7, 35, 2, 2, 477, 123, 3, 2, 2, 2, 478, 479, 7, 45, 2, 2, 479, 125, 3, 2, 2, 2, 480, 481, 7, 47, 2, 2, 481, 127, 3, 2, 2, 2, 482, 483, 7, 96, 2, 2, 483, 129, 3, 2, 2, 2, 484, 485, 7, 44, 2, 2, 485, 131, 3, 2, 2, 2, 486, 487, 7, 40, 2, 2, 487, 133, 3, 2, 2, 2, 488, 489, 7, 62, 2, 2, 489, 490, 7, 47, 2, 2, 490, 135, 3, 2, 2, 2, 491, 503, 7, 50, 2, 2, 492, 499, 9, 2, 2, 2, 493, 495, 7, 97, 2, 2, 494, 493, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 498, 9, 3, 2, 2, 497, 494, 3, 2, 2, 2, 498, 501, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, 3, 2, 2, 2, 502, 491, 3, 2, 2, 2, 502, 492, 3, 2, 2, 2, 503, 137, 3, 2, 2, 2, 504, 505, 7, 50, 2, 2, 505, 510, 9, 4, 2, 2, 506, 508, 7, 97, 2, 2, 507, 506, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 511, 5, 192, 96, 2, 510, 507, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 510, 3, 2, 2, 2, 512, 513, 3, 2, 2, 2, 513, 139, 3, 2, 2, 2, 514, 516, 7, 50, 2, 2, 515, 517, 9, 5, 2, 2, 516, 515, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 522, 3, 2, 2, 2, 518, 520, 7, 97, 2, 2, 519, 518, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 523, 5, 188, 94, 2, 522, 519, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 141, 3, 2, 2, 2, 526, 527, 7, 50, 2, 2, 527, 532, 9, 6, 2, 2, 528, 530, 7, 97, 2, 2, 529, 528, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 533, 5, 190, 95, 2, 532, 529, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 532, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 143, 3, 2, 2, 2, 536, 539, 5, 146, 73, 2, 537, 539, 5, 148, 74, 2, 538, 536, 3, 2, 2, 2, 538, 537, 3, 2, 2, 2, 539, 145, 3, 2, 2, 2, 540, 549, 5, 186, 93, 2, 541, 543, 7, 48, 2, 2, 542, 544, 5, 186, 93, 2, 543, 542, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 546, 3, 2, 2, 2, 545, 547, 5, 194, 97, 2, 546, 545, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 550, 3, 2, 2, 2, 548, 550, 5, 194, 97, 2, 549, 541, 3, 2, 2, 2, 549, 548, 3, 2, 2, 2, 550, 557, 3, 2, 2, 2, 551, 552, 7, 48, 2, 2, 552, 554, 5, 186, 93, 2, 553, 555, 5, 194, 97, 2, 554, 553, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 557, 3, 2, 2, 2, 556, 540, 3, 2, 2, 2, 556, 551, 3, 2, 2, 2, 557, 147, 3, 2, 2, 2, 558, 559, 7, 50, 2, 2, 559, 560, 9, 6, 2, 2, 560, 561, 5, 150, 75, 2, 561, 562, 5, 152, 76, 2, 562, 149, 3, 2, 2, 2, 563, 565, 7, 97, 2, 2, 564, 563, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 568, 5, 190, 95, 2, 567, 564, 3, 2, 2, 2, 568, 569, 3, 2, 2, 2, 569, 567, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 581, 3, 2, 2, 2, 571, 578, 7, 48, 2, 2, 572, 574, 7, 97, 2, 2, 573, 572, 3, 2, 2, 2, 573, 574, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 577, 5, 190, 95, 2, 576, 573, 3, 2, 2, 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 582, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 581, 571, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 595, 3, 2, 2, 2, 583, 584, 7, 48, 2, 2, 584, 591, 5, 190, 95, 2, 585, 587, 7, 97, 2, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 590, 5, 190, 95, 2, 589, 586, 3, 2, 2, 2, 590, 593, 3, 2, 2, 2, 591, 589, 3, 2, 2, 2, 591, 592, 3, 2, 2, 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 594, 567, 3, 2, 2, 2, 594, 583, 3, 2, 2, 2, 595, 151, 3, 2, 2, 2, 596, 598, 9, 7, 2, 2, 597, 599, 9, 8, 2, 2, 598, 597, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 601, 5, 186, 93, 2, 601, 153, 3, 2, 2, 2, 602, 608, 5, 136, 68, 2, 603, 608, 5, 138, 69, 2, 604, 608, 5, 140, 70, 2, 605, 608, 5, 142, 71, 2, 606, 608, 5, 144, 72, 2, 607, 602, 3, 2, 2, 2, 607, 603, 3, 2, 2, 2, 607, 604, 3, 2, 2, 2, 607, 605, 3, 2, 2, 2, 607, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 610, 7, 107, 2, 2, 610, 155, 3, 2, 2, 2, 611, 614, 7, 41, 2, 2, 612, 615, 5, 182, 91, 2, 613, 615, 5, 160, 80, 2, 614, 612, 3, 2, 2, 2, 614, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 617, 7, 41, 2, 2, 617, 157, 3, 2, 2, 2, 618, 619, 5, 156, 78, 2, 619, 159, 3, 2, 2, 2, 620, 623, 5, 162, 81, 2, 621, 623, 5, 164, 82, 2, 622, 620, 3, 2, 2, 2, 622, 621, 3, 2, 2, 2, 623, 161, 3, 2, 2, 2, 624, 625, 7, 94, 2, 2, 625, 626, 5, 188, 94, 2, 626, 627, 5, 188, 94, 2, 627, 628, 5, 188, 94, 2, 628, 163, 3, 2, 2, 2, 629, 630, 7, 94, 2, 2, 630, 631, 7, 122, 2, 2, 631, 632, 5, 190, 95, 2, 632, 633, 5, 190, 95, 2, 633, 165, 3, 2, 2, 2, 634, 635, 7, 94, 2, 2, 635, 636, 7, 119, 2, 2, 636, 637, 5, 190, 95, 2, 637, 638, 5, 190, 95, 2, 638, 639, 5, 190, 95, 2, 639, 640, 5, 190, 95, 2, 640, 167, 3, 2, 2, 2, 641, 642, 7, 94, 2, 2, 642, 643, 7, 87, 2, 2, 643, 644, 5, 190, 95, 2, 644, 645, 5, 190, 95, 2, 645, 646, 5, 190, 95, 2, 646, 647, 5, 190, 95, 2, 647, 648, 5, 190, 95, 2, 648, 649, 5, 190, 95, 2, 649, 650, 5, 190, 95, 2, 650, 651, 5, 190, 95, 2, 651, 169, 3, 2, 2, 2, 652, 656, 7, 98, 2, 2, 653, 655, 10, 9, 2, 2, 654, 653, 3, 2, 2, 2, 655, 658, 3, 2, 2, 2, 656, 654, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 659, 3, 2, 2, 2, 658, 656, 3, 2, 2, 2, 659, 660, 7, 98, 2, 2, 660, 171, 3, 2, 2, 2, 661, 666, 7, 36, 2, 2, 662, 665, 10, 10, 2, 2, 663, 665, 5, 184, 92, 2, 664, 662, 3, 2, 2, 2, 664, 663, 3, 2, 2, 2, 665, 668, 3, 2, 2, 2, 666, 664, 3, 2, 2, 2, 666, 667, 3, 2, 2, 2, 667, 669, 3, 2, 2, 2, 668, 666, 3, 2, 2, 2, 669, 670, 7, 36, 2, 2, 670, 173, 3, 2, 2, 2, 671, 673, 9, 11, 2, 2, 672, 671, 3, 2, 2, 2, 673, 674, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 677, 8, 87, 2, 2, 677, 175, 3, 2, 2, 2, 678, 679, 7, 49, 2, 2, 679, 680, 7, 44, 2, 2, 680, 684, 3, 2, 2, 2, 681, 683, 11, 2, 2, 2, 682, 681, 3, 2, 2, 2, 683, 686, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 684, 682, 3, 2, 2, 2, 685, 687, 3, 2, 2, 2, 686, 684, 3, 2, 2, 2, 687, 688, 7, 44, 2, 2, 688, 689, 7, 49, 2, 2, 689, 690, 3, 2, 2, 2, 690, 691, 8, 88, 2, 2, 691, 177, 3, 2, 2, 2, 692, 694, 9, 12, 2, 2, 693, 692, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 693, 3, 2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 698, 8, 89, 2, 2, 698, 179, 3, 2, 2, 2, 699, 700, 7, 49, 2, 2, 700, 701, 7, 49, 2, 2, 701, 705, 3, 2, 2, 2, 702, 704, 10, 12, 2, 2, 703, 702, 3, 2, 2, 2, 704, 707, 3, 2, 2, 2, 705, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 708, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 709, 8, 90, 2, 2, 709, 181, 3, 2, 2, 2, 710, 715, 10, 13, 2, 2, 711, 715, 5, 166, 83, 2, 712, 715, 5, 168, 84, 2, 713, 715, 5, 184, 92, 2, 714, 710, 3, 2, 2, 2, 714, 711, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 713, 3, 2, 2, 2, 715, 183, 3, 2, 2, 2, 716, 742, 7, 94, 2, 2, 717, 718, 7, 119, 2, 2, 718, 719, 5, 190, 95, 2, 719, 720, 5, 190, 95, 2, 720, 721, 5, 190, 95, 2, 721, 722, 5, 190, 95, 2, 722, 743, 3, 2, 2, 2, 723, 724, 7, 87, 2, 2, 724, 725, 5, 190, 95, 2, 725, 726, 5, 190, 95, 2, 726, 727, 5, 190, 95, 2, 727, 728, 5, 190, 95, 2, 728, 729, 5, 190, 95, 2, 729, 730, 5, 190, 95, 2, 730, 731, 5, 190, 95, 2, 731, 732, 5, 190, 95, 2, 732, 743, 3, 2, 2, 2, 733, 743, 9, 14, 2, 2, 734, 735, 5, 188, 94, 2, 735, 736, 5, 188, 94, 2, 736, 737, 5, 188, 94, 2, 737, 743, 3, 2, 2, 2, 738, 739, 7, 122, 2, 2, 739, 740, 5, 190, 95, 2, 740, 741, 5, 190, 95, 2, 741, 743, 3, 2, 2, 2, 742, 717, 3, 2, 2, 2, 742, 723, 3, 2, 2, 2, 742, 733, 3, 2, 2, 2, 742, 734, 3, 2, 2, 2, 742, 738, 3, 2, 2, 2, 743, 185, 3, 2, 2, 2, 744, 751, 9, 3, 2, 2, 745, 747, 7, 97, 2, 2, 746, 745, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 748, 3, 2, 2, 2, 748, 750, 9, 3, 2, 2, 749, 746, 3, 2, 2, 2, 750, 753, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 187, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 754, 755, 9, 15, 2, 2, 755, 189, 3, 2, 2, 2, 756, 757, 9, 16, 2, 2, 757, 191, 3, 2, 2, 2, 758, 759, 9, 17, 2, 2, 759, 193, 3, 2, 2, 2, 760, 762, 9, 18, 2, 2, 761, 763, 9, 8, 2, 2, 762, 761, 3, 2, 2, 2, 762, 763, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 5, 186, 93, 2, 765, 195, 3, 2, 2, 2, 766, 769, 5, 200, 100, 2, 767, 769, 7, 97, 2, 2, 768, 766, 3, 2, 2, 2, 768, 767, 3, 2, 2, 2, 769, 197, 3, 2, 2, 2, 770, 771, 9, 19, 2, 2, 771, 199, 3, 2, 2, 2, 772, 773, 9, 20, 2, 2, 773, 201, 3, 2, 2, 2, 774, 776, 9, 11, 2, 2, 775, 774, 3, 2, 2, 2, 776, 777, 3, 2, 2, 2, 777, 775, 3, 2, 2, 2, 777, 778, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 780, 8, 101, 2, 2, 780, 203, 3, 2, 2, 2, 781, 782, 7, 49, 2, 2, 782, 783, 7, 44, 2, 2, 783, 787, 3, 2, 2, 2, 784, 786, 10, 12, 2, 2, 785, 784, 3, 2, 2, 2, 786, 789, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 787, 785, 3, 2, 2, 2, 788, 790, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 790, 791, 7, 44, 2, 2, 791, 792, 7, 49, 2, 2, 792, 793, 3, 2, 2, 2, 793, 794, 8, 102, 2, 2, 794, 205, 3, 2, 2, 2, 795, 796, 7, 49, 2, 2, 796, 797, 7, 49, 2, 2, 797, 801, 3, 2, 2, 2, 798, 800, 10, 12, 2, 2, 799, 798, 3, 2, 2, 2, 800, 803, 3, 2, 2, 2, 801, 799, 3, 2, 2, 2, 801, 802, 3, 2, 2, 2, 802, 804, 3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 804, 805, 8, 103, 2, 2, 805, 207, 3, 2, 2, 2, 54, 2, 3, 369, 371, 418, 423, 431, 437, 494, 499, 502, 507, 512, 516, 519, 524, 529, 534, 538, 543, 546, 549, 554, 556, 564, 569, 573, 578, 581, 586, 591, 594, 598, 607, 614, 622, 656, 664, 666, 674, 684, 695, 705, 714, 742, 746, 751, 762, 768, 777, 787, 801, 3, 2, 3, 2] \ No newline at end of file diff --git a/grammar/cpp/GoLexer.tokens b/grammar/cpp/GoLexer.tokens new file mode 100644 index 0000000..07df51d --- /dev/null +++ b/grammar/cpp/GoLexer.tokens @@ -0,0 +1,153 @@ +BREAK=1 +DEFAULT=2 +FUNC=3 +INTERFACE=4 +SELECT=5 +CASE=6 +DEFER=7 +GO=8 +MAP=9 +STRUCT=10 +CHAN=11 +ELSE=12 +GOTO=13 +PACKAGE=14 +SWITCH=15 +CONST=16 +FALLTHROUGH=17 +IF=18 +RANGE=19 +TYPE=20 +CONTINUE=21 +FOR=22 +IMPORT=23 +RETURN=24 +VAR=25 +NIL_LIT=26 +IDENTIFIER=27 +L_PAREN=28 +R_PAREN=29 +L_CURLY=30 +R_CURLY=31 +L_BRACKET=32 +R_BRACKET=33 +ASSIGN=34 +COMMA=35 +SEMI=36 +HUANHANG=37 +HUANHANGG=38 +COLON=39 +DOT=40 +PLUS_PLUS=41 +MINUS_MINUS=42 +DECLARE_ASSIGN=43 +ELLIPSIS=44 +EOSSS=45 +LOGICAL_OR=46 +LOGICAL_AND=47 +EQUALS=48 +NOT_EQUALS=49 +LESS=50 +LESS_OR_EQUALS=51 +GREATER=52 +GREATER_OR_EQUALS=53 +OR=54 +DIV=55 +MOD=56 +LSHIFT=57 +RSHIFT=58 +BIT_CLEAR=59 +EXCLAMATION=60 +PLUS=61 +MINUS=62 +CARET=63 +STAR=64 +AMPERSAND=65 +RECEIVE=66 +DECIMAL_LIT=67 +BINARY_LIT=68 +OCTAL_LIT=69 +HEX_LIT=70 +FLOAT_LIT=71 +DECIMAL_FLOAT_LIT=72 +HEX_FLOAT_LIT=73 +IMAGINARY_LIT=74 +RUNE_LIT=75 +BYTE_VALUE=76 +OCTAL_BYTE_VALUE=77 +HEX_BYTE_VALUE=78 +LITTLE_U_VALUE=79 +BIG_U_VALUE=80 +RAW_STRING_LIT=81 +INTERPRETED_STRING_LIT=82 +WS=83 +COMMENT=84 +TERMINATOR=85 +LINE_COMMENT=86 +WS_NLSEMI=87 +COMMENT_NLSEMI=88 +LINE_COMMENT_NLSEMI=89 +'break'=1 +'default'=2 +'func'=3 +'interface'=4 +'select'=5 +'case'=6 +'defer'=7 +'go'=8 +'map'=9 +'struct'=10 +'chan'=11 +'else'=12 +'goto'=13 +'package'=14 +'switch'=15 +'const'=16 +'fallthrough'=17 +'if'=18 +'range'=19 +'type'=20 +'continue'=21 +'for'=22 +'import'=23 +'return'=24 +'var'=25 +'nil'=26 +'('=28 +')'=29 +'{'=30 +'}'=31 +'['=32 +']'=33 +'='=34 +','=35 +';'=36 +'\n'=37 +'\r\n'=38 +':'=39 +'.'=40 +'++'=41 +'--'=42 +':='=43 +'...'=44 +'||'=46 +'&&'=47 +'=='=48 +'!='=49 +'<'=50 +'<='=51 +'>'=52 +'>='=53 +'|'=54 +'/'=55 +'%'=56 +'<<'=57 +'>>'=58 +'&^'=59 +'!'=60 +'+'=61 +'-'=62 +'^'=63 +'*'=64 +'&'=65 +'<-'=66 diff --git a/grammar/cpp/GoParser.cpp b/grammar/cpp/GoParser.cpp new file mode 100644 index 0000000..805ad03 --- /dev/null +++ b/grammar/cpp/GoParser.cpp @@ -0,0 +1,10506 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + + +#include "GoParserListener.h" + +#include "GoParser.h" + + +using namespace antlrcpp; +using namespace antlr4; + +GoParser::GoParser(TokenStream *input) : Parser(input) { + _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); +} + +GoParser::~GoParser() { + delete _interpreter; +} + +std::string GoParser::getGrammarFileName() const { + return "GoParser.g4"; +} + +const std::vector& GoParser::getRuleNames() const { + return _ruleNames; +} + +dfa::Vocabulary& GoParser::getVocabulary() const { + return _vocabulary; +} + + +//----------------- SourceFileContext ------------------------------------------------------------------ + +GoParser::SourceFileContext::SourceFileContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::PackageClauseContext* GoParser::SourceFileContext::packageClause() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::SourceFileContext::EOF() { + return getToken(GoParser::EOF, 0); +} + +std::vector GoParser::SourceFileContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::SourceFileContext::eoss(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::SourceFileContext::importDecl() { + return getRuleContexts(); +} + +GoParser::ImportDeclContext* GoParser::SourceFileContext::importDecl(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::SourceFileContext::functionDecl() { + return getRuleContexts(); +} + +GoParser::FunctionDeclContext* GoParser::SourceFileContext::functionDecl(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::SourceFileContext::methodDecl() { + return getRuleContexts(); +} + +GoParser::MethodDeclContext* GoParser::SourceFileContext::methodDecl(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::SourceFileContext::declaration() { + return getRuleContexts(); +} + +GoParser::DeclarationContext* GoParser::SourceFileContext::declaration(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::SourceFileContext::getRuleIndex() const { + return GoParser::RuleSourceFile; +} + +void GoParser::SourceFileContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSourceFile(this); +} + +void GoParser::SourceFileContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSourceFile(this); +} + +GoParser::SourceFileContext* GoParser::sourceFile() { + SourceFileContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 0, GoParser::RuleSourceFile); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(198); + packageClause(); + setState(202); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0)) { + setState(199); + eoss(); + setState(204); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(214); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IMPORT) { + setState(205); + importDecl(); + setState(209); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0)) { + setState(206); + eoss(); + setState(211); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(216); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(230); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::VAR))) != 0)) { + setState(220); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 3, _ctx)) { + case 1: { + setState(217); + functionDecl(); + break; + } + + case 2: { + setState(218); + methodDecl(); + break; + } + + case 3: { + setState(219); + declaration(); + break; + } + + default: + break; + } + setState(225); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0)) { + setState(222); + eoss(); + setState(227); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(232); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(233); + match(GoParser::EOF); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- PackageClauseContext ------------------------------------------------------------------ + +GoParser::PackageClauseContext::PackageClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::PackageClauseContext::PACKAGE() { + return getToken(GoParser::PACKAGE, 0); +} + +tree::TerminalNode* GoParser::PackageClauseContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::PackageClauseContext::getRuleIndex() const { + return GoParser::RulePackageClause; +} + +void GoParser::PackageClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPackageClause(this); +} + +void GoParser::PackageClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPackageClause(this); +} + +GoParser::PackageClauseContext* GoParser::packageClause() { + PackageClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 2, GoParser::RulePackageClause); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(235); + match(GoParser::PACKAGE); + setState(236); + antlrcpp::downCast(_localctx)->packageName = match(GoParser::IDENTIFIER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ImportDeclContext ------------------------------------------------------------------ + +GoParser::ImportDeclContext::ImportDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ImportDeclContext::IMPORT() { + return getToken(GoParser::IMPORT, 0); +} + +std::vector GoParser::ImportDeclContext::importSpec() { + return getRuleContexts(); +} + +GoParser::ImportSpecContext* GoParser::ImportDeclContext::importSpec(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::ImportDeclContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::ImportDeclContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +std::vector GoParser::ImportDeclContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::ImportDeclContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::ImportDeclContext::getRuleIndex() const { + return GoParser::RuleImportDecl; +} + +void GoParser::ImportDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterImportDecl(this); +} + +void GoParser::ImportDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitImportDecl(this); +} + +GoParser::ImportDeclContext* GoParser::importDecl() { + ImportDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 4, GoParser::RuleImportDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(238); + match(GoParser::IMPORT); + setState(250); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IDENTIFIER: + case GoParser::DOT: + case GoParser::RAW_STRING_LIT: + case GoParser::INTERPRETED_STRING_LIT: { + setState(239); + importSpec(); + break; + } + + case GoParser::L_PAREN: { + setState(240); + match(GoParser::L_PAREN); + setState(246); + _errHandler->sync(this); + _la = _input->LA(1); + while (((((_la - 27) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 27)) & ((1ULL << (GoParser::IDENTIFIER - 27)) + | (1ULL << (GoParser::DOT - 27)) + | (1ULL << (GoParser::RAW_STRING_LIT - 27)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 27)))) != 0)) { + setState(241); + importSpec(); + setState(242); + eoss(); + setState(248); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(249); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ImportSpecContext ------------------------------------------------------------------ + +GoParser::ImportSpecContext::ImportSpecContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ImportPathContext* GoParser::ImportSpecContext::importPath() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ImportSpecContext::DOT() { + return getToken(GoParser::DOT, 0); +} + +tree::TerminalNode* GoParser::ImportSpecContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::ImportSpecContext::getRuleIndex() const { + return GoParser::RuleImportSpec; +} + +void GoParser::ImportSpecContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterImportSpec(this); +} + +void GoParser::ImportSpecContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitImportSpec(this); +} + +GoParser::ImportSpecContext* GoParser::importSpec() { + ImportSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 6, GoParser::RuleImportSpec); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(253); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::IDENTIFIER + + || _la == GoParser::DOT) { + setState(252); + antlrcpp::downCast(_localctx)->alias = _input->LT(1); + _la = _input->LA(1); + if (!(_la == GoParser::IDENTIFIER + + || _la == GoParser::DOT)) { + antlrcpp::downCast(_localctx)->alias = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + } + setState(255); + importPath(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ImportPathContext ------------------------------------------------------------------ + +GoParser::ImportPathContext::ImportPathContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::String_Context* GoParser::ImportPathContext::string_() { + return getRuleContext(0); +} + + +size_t GoParser::ImportPathContext::getRuleIndex() const { + return GoParser::RuleImportPath; +} + +void GoParser::ImportPathContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterImportPath(this); +} + +void GoParser::ImportPathContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitImportPath(this); +} + +GoParser::ImportPathContext* GoParser::importPath() { + ImportPathContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 8, GoParser::RuleImportPath); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(257); + string_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DeclarationContext ------------------------------------------------------------------ + +GoParser::DeclarationContext::DeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ConstDeclContext* GoParser::DeclarationContext::constDecl() { + return getRuleContext(0); +} + +GoParser::TypeDeclContext* GoParser::DeclarationContext::typeDecl() { + return getRuleContext(0); +} + +GoParser::VarDeclContext* GoParser::DeclarationContext::varDecl() { + return getRuleContext(0); +} + + +size_t GoParser::DeclarationContext::getRuleIndex() const { + return GoParser::RuleDeclaration; +} + +void GoParser::DeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDeclaration(this); +} + +void GoParser::DeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDeclaration(this); +} + +GoParser::DeclarationContext* GoParser::declaration() { + DeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 10, GoParser::RuleDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(262); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::CONST: { + enterOuterAlt(_localctx, 1); + setState(259); + constDecl(); + break; + } + + case GoParser::TYPE: { + enterOuterAlt(_localctx, 2); + setState(260); + typeDecl(); + break; + } + + case GoParser::VAR: { + enterOuterAlt(_localctx, 3); + setState(261); + varDecl(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ConstDeclContext ------------------------------------------------------------------ + +GoParser::ConstDeclContext::ConstDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ConstDeclContext::CONST() { + return getToken(GoParser::CONST, 0); +} + +std::vector GoParser::ConstDeclContext::constSpec() { + return getRuleContexts(); +} + +GoParser::ConstSpecContext* GoParser::ConstDeclContext::constSpec(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::ConstDeclContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::ConstDeclContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +std::vector GoParser::ConstDeclContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::ConstDeclContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::ConstDeclContext::getRuleIndex() const { + return GoParser::RuleConstDecl; +} + +void GoParser::ConstDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterConstDecl(this); +} + +void GoParser::ConstDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitConstDecl(this); +} + +GoParser::ConstDeclContext* GoParser::constDecl() { + ConstDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 12, GoParser::RuleConstDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(264); + match(GoParser::CONST); + setState(276); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IDENTIFIER: { + setState(265); + constSpec(); + break; + } + + case GoParser::L_PAREN: { + setState(266); + match(GoParser::L_PAREN); + setState(272); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IDENTIFIER) { + setState(267); + constSpec(); + setState(268); + eoss(); + setState(274); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(275); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ConstSpecContext ------------------------------------------------------------------ + +GoParser::ConstSpecContext::ConstSpecContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::IdentifierListContext* GoParser::ConstSpecContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ConstSpecContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + +GoParser::ExpressionListContext* GoParser::ConstSpecContext::expressionList() { + return getRuleContext(0); +} + +GoParser::Type_Context* GoParser::ConstSpecContext::type_() { + return getRuleContext(0); +} + + +size_t GoParser::ConstSpecContext::getRuleIndex() const { + return GoParser::RuleConstSpec; +} + +void GoParser::ConstSpecContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterConstSpec(this); +} + +void GoParser::ConstSpecContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitConstSpec(this); +} + +GoParser::ConstSpecContext* GoParser::constSpec() { + ConstSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 14, GoParser::RuleConstSpec); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(278); + identifierList(); + setState(284); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { + case 1: { + setState(280); + _errHandler->sync(this); + + _la = _input->LA(1); + if (((((_la - 3) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 3)) & ((1ULL << (GoParser::FUNC - 3)) + | (1ULL << (GoParser::INTERFACE - 3)) + | (1ULL << (GoParser::MAP - 3)) + | (1ULL << (GoParser::STRUCT - 3)) + | (1ULL << (GoParser::CHAN - 3)) + | (1ULL << (GoParser::IDENTIFIER - 3)) + | (1ULL << (GoParser::L_PAREN - 3)) + | (1ULL << (GoParser::L_BRACKET - 3)) + | (1ULL << (GoParser::STAR - 3)) + | (1ULL << (GoParser::RECEIVE - 3)))) != 0)) { + setState(279); + type_(); + } + setState(282); + match(GoParser::ASSIGN); + setState(283); + expressionList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IdentifierListContext ------------------------------------------------------------------ + +GoParser::IdentifierListContext::IdentifierListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::IdentifierListContext::IDENTIFIER() { + return getTokens(GoParser::IDENTIFIER); +} + +tree::TerminalNode* GoParser::IdentifierListContext::IDENTIFIER(size_t i) { + return getToken(GoParser::IDENTIFIER, i); +} + +std::vector GoParser::IdentifierListContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::IdentifierListContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::IdentifierListContext::getRuleIndex() const { + return GoParser::RuleIdentifierList; +} + +void GoParser::IdentifierListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIdentifierList(this); +} + +void GoParser::IdentifierListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIdentifierList(this); +} + +GoParser::IdentifierListContext* GoParser::identifierList() { + IdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 16, GoParser::RuleIdentifierList); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(286); + match(GoParser::IDENTIFIER); + setState(291); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::COMMA) { + setState(287); + match(GoParser::COMMA); + setState(288); + match(GoParser::IDENTIFIER); + setState(293); + _errHandler->sync(this); + _la = _input->LA(1); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionListContext ------------------------------------------------------------------ + +GoParser::ExpressionListContext::ExpressionListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::ExpressionListContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::ExpressionListContext::expression(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::ExpressionListContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::ExpressionListContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::ExpressionListContext::getRuleIndex() const { + return GoParser::RuleExpressionList; +} + +void GoParser::ExpressionListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpressionList(this); +} + +void GoParser::ExpressionListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpressionList(this); +} + +GoParser::ExpressionListContext* GoParser::expressionList() { + ExpressionListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 18, GoParser::RuleExpressionList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(294); + expression(0); + setState(299); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(295); + match(GoParser::COMMA); + setState(296); + expression(0); + } + setState(301); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeDeclContext ------------------------------------------------------------------ + +GoParser::TypeDeclContext::TypeDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::TypeDeclContext::TYPE() { + return getToken(GoParser::TYPE, 0); +} + +std::vector GoParser::TypeDeclContext::typeSpec() { + return getRuleContexts(); +} + +GoParser::TypeSpecContext* GoParser::TypeDeclContext::typeSpec(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::TypeDeclContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::TypeDeclContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +std::vector GoParser::TypeDeclContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::TypeDeclContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::TypeDeclContext::getRuleIndex() const { + return GoParser::RuleTypeDecl; +} + +void GoParser::TypeDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeDecl(this); +} + +void GoParser::TypeDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeDecl(this); +} + +GoParser::TypeDeclContext* GoParser::typeDecl() { + TypeDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 20, GoParser::RuleTypeDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(302); + match(GoParser::TYPE); + setState(314); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IDENTIFIER: { + setState(303); + typeSpec(); + break; + } + + case GoParser::L_PAREN: { + setState(304); + match(GoParser::L_PAREN); + setState(310); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IDENTIFIER) { + setState(305); + typeSpec(); + setState(306); + eoss(); + setState(312); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(313); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeSpecContext ------------------------------------------------------------------ + +GoParser::TypeSpecContext::TypeSpecContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::TypeSpecContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +GoParser::Type_Context* GoParser::TypeSpecContext::type_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeSpecContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + + +size_t GoParser::TypeSpecContext::getRuleIndex() const { + return GoParser::RuleTypeSpec; +} + +void GoParser::TypeSpecContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeSpec(this); +} + +void GoParser::TypeSpecContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeSpec(this); +} + +GoParser::TypeSpecContext* GoParser::typeSpec() { + TypeSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 22, GoParser::RuleTypeSpec); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(316); + match(GoParser::IDENTIFIER); + setState(318); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::ASSIGN) { + setState(317); + match(GoParser::ASSIGN); + } + setState(320); + type_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- FunctionDeclContext ------------------------------------------------------------------ + +GoParser::FunctionDeclContext::FunctionDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::FunctionDeclContext::FUNC() { + return getToken(GoParser::FUNC, 0); +} + +tree::TerminalNode* GoParser::FunctionDeclContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +GoParser::SignatureContext* GoParser::FunctionDeclContext::signature() { + return getRuleContext(0); +} + +GoParser::BlockContext* GoParser::FunctionDeclContext::block() { + return getRuleContext(0); +} + + +size_t GoParser::FunctionDeclContext::getRuleIndex() const { + return GoParser::RuleFunctionDecl; +} + +void GoParser::FunctionDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFunctionDecl(this); +} + +void GoParser::FunctionDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFunctionDecl(this); +} + +GoParser::FunctionDeclContext* GoParser::functionDecl() { + FunctionDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 24, GoParser::RuleFunctionDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(322); + match(GoParser::FUNC); + setState(323); + match(GoParser::IDENTIFIER); + + setState(324); + signature(); + setState(326); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::L_CURLY) { + setState(325); + block(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- MethodDeclContext ------------------------------------------------------------------ + +GoParser::MethodDeclContext::MethodDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::MethodDeclContext::FUNC() { + return getToken(GoParser::FUNC, 0); +} + +GoParser::ReceiverContext* GoParser::MethodDeclContext::receiver() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::MethodDeclContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +GoParser::SignatureContext* GoParser::MethodDeclContext::signature() { + return getRuleContext(0); +} + +GoParser::BlockContext* GoParser::MethodDeclContext::block() { + return getRuleContext(0); +} + + +size_t GoParser::MethodDeclContext::getRuleIndex() const { + return GoParser::RuleMethodDecl; +} + +void GoParser::MethodDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMethodDecl(this); +} + +void GoParser::MethodDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMethodDecl(this); +} + +GoParser::MethodDeclContext* GoParser::methodDecl() { + MethodDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 26, GoParser::RuleMethodDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(328); + match(GoParser::FUNC); + setState(329); + receiver(); + setState(330); + match(GoParser::IDENTIFIER); + + setState(331); + signature(); + setState(333); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::L_CURLY) { + setState(332); + block(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ReceiverContext ------------------------------------------------------------------ + +GoParser::ReceiverContext::ReceiverContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ParametersContext* GoParser::ReceiverContext::parameters() { + return getRuleContext(0); +} + + +size_t GoParser::ReceiverContext::getRuleIndex() const { + return GoParser::RuleReceiver; +} + +void GoParser::ReceiverContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterReceiver(this); +} + +void GoParser::ReceiverContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitReceiver(this); +} + +GoParser::ReceiverContext* GoParser::receiver() { + ReceiverContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 28, GoParser::RuleReceiver); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(335); + parameters(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- VarDeclContext ------------------------------------------------------------------ + +GoParser::VarDeclContext::VarDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::VarDeclContext::VAR() { + return getToken(GoParser::VAR, 0); +} + +std::vector GoParser::VarDeclContext::varSpec() { + return getRuleContexts(); +} + +GoParser::VarSpecContext* GoParser::VarDeclContext::varSpec(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::VarDeclContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::VarDeclContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +std::vector GoParser::VarDeclContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::VarDeclContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::VarDeclContext::getRuleIndex() const { + return GoParser::RuleVarDecl; +} + +void GoParser::VarDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterVarDecl(this); +} + +void GoParser::VarDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitVarDecl(this); +} + +GoParser::VarDeclContext* GoParser::varDecl() { + VarDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 30, GoParser::RuleVarDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(337); + match(GoParser::VAR); + setState(349); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IDENTIFIER: { + setState(338); + varSpec(); + break; + } + + case GoParser::L_PAREN: { + setState(339); + match(GoParser::L_PAREN); + setState(345); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IDENTIFIER) { + setState(340); + varSpec(); + setState(341); + eoss(); + setState(347); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(348); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- VarSpecContext ------------------------------------------------------------------ + +GoParser::VarSpecContext::VarSpecContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::IdentifierListContext* GoParser::VarSpecContext::identifierList() { + return getRuleContext(0); +} + +GoParser::Type_Context* GoParser::VarSpecContext::type_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::VarSpecContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + +GoParser::ExpressionListContext* GoParser::VarSpecContext::expressionList() { + return getRuleContext(0); +} + + +size_t GoParser::VarSpecContext::getRuleIndex() const { + return GoParser::RuleVarSpec; +} + +void GoParser::VarSpecContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterVarSpec(this); +} + +void GoParser::VarSpecContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitVarSpec(this); +} + +GoParser::VarSpecContext* GoParser::varSpec() { + VarSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 32, GoParser::RuleVarSpec); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(351); + identifierList(); + setState(359); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::IDENTIFIER: + case GoParser::L_PAREN: + case GoParser::L_BRACKET: + case GoParser::STAR: + case GoParser::RECEIVE: { + setState(352); + type_(); + setState(355); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::ASSIGN) { + setState(353); + match(GoParser::ASSIGN); + setState(354); + expressionList(); + } + break; + } + + case GoParser::ASSIGN: { + setState(357); + match(GoParser::ASSIGN); + setState(358); + expressionList(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BlockContext ------------------------------------------------------------------ + +GoParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::BlockContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::BlockContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +std::vector GoParser::BlockContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::BlockContext::eoss(size_t i) { + return getRuleContext(i); +} + +GoParser::StatementListContext* GoParser::BlockContext::statementList() { + return getRuleContext(0); +} + + +size_t GoParser::BlockContext::getRuleIndex() const { + return GoParser::RuleBlock; +} + +void GoParser::BlockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBlock(this); +} + +void GoParser::BlockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBlock(this); +} + +GoParser::BlockContext* GoParser::block() { + BlockContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 34, GoParser::RuleBlock); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(361); + match(GoParser::L_CURLY); + setState(365); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0)) { + setState(362); + eoss(); + setState(367); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(369); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(368); + statementList(); + } + setState(371); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- StatementListContext ------------------------------------------------------------------ + +GoParser::StatementListContext::StatementListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::StatementListContext::statement() { + return getRuleContexts(); +} + +GoParser::StatementContext* GoParser::StatementListContext::statement(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::StatementListContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::StatementListContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::StatementListContext::getRuleIndex() const { + return GoParser::RuleStatementList; +} + +void GoParser::StatementListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterStatementList(this); +} + +void GoParser::StatementListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitStatementList(this); +} + +GoParser::StatementListContext* GoParser::statementList() { + StatementListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 36, GoParser::RuleStatementList); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(379); + _errHandler->sync(this); + _la = _input->LA(1); + do { + setState(373); + statement(); + setState(375); + _errHandler->sync(this); + _la = _input->LA(1); + do { + setState(374); + eoss(); + setState(377); + _errHandler->sync(this); + _la = _input->LA(1); + } while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0)); + setState(381); + _errHandler->sync(this); + _la = _input->LA(1); + } while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- StatementContext ------------------------------------------------------------------ + +GoParser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::DeclarationContext* GoParser::StatementContext::declaration() { + return getRuleContext(0); +} + +GoParser::LabeledStmtContext* GoParser::StatementContext::labeledStmt() { + return getRuleContext(0); +} + +GoParser::SimpleStmtContext* GoParser::StatementContext::simpleStmt() { + return getRuleContext(0); +} + +GoParser::GoStmtContext* GoParser::StatementContext::goStmt() { + return getRuleContext(0); +} + +GoParser::ReturnStmtContext* GoParser::StatementContext::returnStmt() { + return getRuleContext(0); +} + +GoParser::BreakStmtContext* GoParser::StatementContext::breakStmt() { + return getRuleContext(0); +} + +GoParser::ContinueStmtContext* GoParser::StatementContext::continueStmt() { + return getRuleContext(0); +} + +GoParser::GotoStmtContext* GoParser::StatementContext::gotoStmt() { + return getRuleContext(0); +} + +GoParser::FallthroughStmtContext* GoParser::StatementContext::fallthroughStmt() { + return getRuleContext(0); +} + +GoParser::BlockContext* GoParser::StatementContext::block() { + return getRuleContext(0); +} + +GoParser::IfStmtContext* GoParser::StatementContext::ifStmt() { + return getRuleContext(0); +} + +GoParser::SwitchStmtContext* GoParser::StatementContext::switchStmt() { + return getRuleContext(0); +} + +GoParser::SelectStmtContext* GoParser::StatementContext::selectStmt() { + return getRuleContext(0); +} + +GoParser::ForStmtContext* GoParser::StatementContext::forStmt() { + return getRuleContext(0); +} + +GoParser::DeferStmtContext* GoParser::StatementContext::deferStmt() { + return getRuleContext(0); +} + + +size_t GoParser::StatementContext::getRuleIndex() const { + return GoParser::RuleStatement; +} + +void GoParser::StatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterStatement(this); +} + +void GoParser::StatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitStatement(this); +} + +GoParser::StatementContext* GoParser::statement() { + StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 38, GoParser::RuleStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(398); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(383); + declaration(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(384); + labeledStmt(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(385); + simpleStmt(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(386); + goStmt(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(387); + returnStmt(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(388); + breakStmt(); + break; + } + + case 7: { + enterOuterAlt(_localctx, 7); + setState(389); + continueStmt(); + break; + } + + case 8: { + enterOuterAlt(_localctx, 8); + setState(390); + gotoStmt(); + break; + } + + case 9: { + enterOuterAlt(_localctx, 9); + setState(391); + fallthroughStmt(); + break; + } + + case 10: { + enterOuterAlt(_localctx, 10); + setState(392); + block(); + break; + } + + case 11: { + enterOuterAlt(_localctx, 11); + setState(393); + ifStmt(); + break; + } + + case 12: { + enterOuterAlt(_localctx, 12); + setState(394); + switchStmt(); + break; + } + + case 13: { + enterOuterAlt(_localctx, 13); + setState(395); + selectStmt(); + break; + } + + case 14: { + enterOuterAlt(_localctx, 14); + setState(396); + forStmt(); + break; + } + + case 15: { + enterOuterAlt(_localctx, 15); + setState(397); + deferStmt(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SimpleStmtContext ------------------------------------------------------------------ + +GoParser::SimpleStmtContext::SimpleStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::SendStmtContext* GoParser::SimpleStmtContext::sendStmt() { + return getRuleContext(0); +} + +GoParser::IncDecStmtContext* GoParser::SimpleStmtContext::incDecStmt() { + return getRuleContext(0); +} + +GoParser::AssignmentContext* GoParser::SimpleStmtContext::assignment() { + return getRuleContext(0); +} + +GoParser::ExpressionStmtContext* GoParser::SimpleStmtContext::expressionStmt() { + return getRuleContext(0); +} + +GoParser::ShortVarDeclContext* GoParser::SimpleStmtContext::shortVarDecl() { + return getRuleContext(0); +} + + +size_t GoParser::SimpleStmtContext::getRuleIndex() const { + return GoParser::RuleSimpleStmt; +} + +void GoParser::SimpleStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSimpleStmt(this); +} + +void GoParser::SimpleStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSimpleStmt(this); +} + +GoParser::SimpleStmtContext* GoParser::simpleStmt() { + SimpleStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 40, GoParser::RuleSimpleStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(405); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(400); + sendStmt(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(401); + incDecStmt(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(402); + assignment(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(403); + expressionStmt(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(404); + shortVarDecl(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionStmtContext ------------------------------------------------------------------ + +GoParser::ExpressionStmtContext::ExpressionStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::ExpressionStmtContext::expression() { + return getRuleContext(0); +} + + +size_t GoParser::ExpressionStmtContext::getRuleIndex() const { + return GoParser::RuleExpressionStmt; +} + +void GoParser::ExpressionStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpressionStmt(this); +} + +void GoParser::ExpressionStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpressionStmt(this); +} + +GoParser::ExpressionStmtContext* GoParser::expressionStmt() { + ExpressionStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 42, GoParser::RuleExpressionStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(407); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SendStmtContext ------------------------------------------------------------------ + +GoParser::SendStmtContext::SendStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::SendStmtContext::RECEIVE() { + return getToken(GoParser::RECEIVE, 0); +} + +std::vector GoParser::SendStmtContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::SendStmtContext::expression(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::SendStmtContext::getRuleIndex() const { + return GoParser::RuleSendStmt; +} + +void GoParser::SendStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSendStmt(this); +} + +void GoParser::SendStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSendStmt(this); +} + +GoParser::SendStmtContext* GoParser::sendStmt() { + SendStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 44, GoParser::RuleSendStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(409); + antlrcpp::downCast(_localctx)->channel = expression(0); + setState(410); + match(GoParser::RECEIVE); + setState(411); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IncDecStmtContext ------------------------------------------------------------------ + +GoParser::IncDecStmtContext::IncDecStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::IncDecStmtContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::IncDecStmtContext::PLUS_PLUS() { + return getToken(GoParser::PLUS_PLUS, 0); +} + +tree::TerminalNode* GoParser::IncDecStmtContext::MINUS_MINUS() { + return getToken(GoParser::MINUS_MINUS, 0); +} + + +size_t GoParser::IncDecStmtContext::getRuleIndex() const { + return GoParser::RuleIncDecStmt; +} + +void GoParser::IncDecStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIncDecStmt(this); +} + +void GoParser::IncDecStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIncDecStmt(this); +} + +GoParser::IncDecStmtContext* GoParser::incDecStmt() { + IncDecStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 46, GoParser::RuleIncDecStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(413); + expression(0); + setState(414); + _la = _input->LA(1); + if (!(_la == GoParser::PLUS_PLUS + + || _la == GoParser::MINUS_MINUS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- AssignmentContext ------------------------------------------------------------------ + +GoParser::AssignmentContext::AssignmentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::AssignmentContext::expressionList() { + return getRuleContexts(); +} + +GoParser::ExpressionListContext* GoParser::AssignmentContext::expressionList(size_t i) { + return getRuleContext(i); +} + +GoParser::Assign_opContext* GoParser::AssignmentContext::assign_op() { + return getRuleContext(0); +} + + +size_t GoParser::AssignmentContext::getRuleIndex() const { + return GoParser::RuleAssignment; +} + +void GoParser::AssignmentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAssignment(this); +} + +void GoParser::AssignmentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAssignment(this); +} + +GoParser::AssignmentContext* GoParser::assignment() { + AssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 48, GoParser::RuleAssignment); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(416); + expressionList(); + setState(417); + assign_op(); + setState(418); + expressionList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Assign_opContext ------------------------------------------------------------------ + +GoParser::Assign_opContext::Assign_opContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::Assign_opContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::PLUS() { + return getToken(GoParser::PLUS, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::MINUS() { + return getToken(GoParser::MINUS, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::OR() { + return getToken(GoParser::OR, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::CARET() { + return getToken(GoParser::CARET, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::STAR() { + return getToken(GoParser::STAR, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::DIV() { + return getToken(GoParser::DIV, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::MOD() { + return getToken(GoParser::MOD, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::LSHIFT() { + return getToken(GoParser::LSHIFT, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::RSHIFT() { + return getToken(GoParser::RSHIFT, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::AMPERSAND() { + return getToken(GoParser::AMPERSAND, 0); +} + +tree::TerminalNode* GoParser::Assign_opContext::BIT_CLEAR() { + return getToken(GoParser::BIT_CLEAR, 0); +} + + +size_t GoParser::Assign_opContext::getRuleIndex() const { + return GoParser::RuleAssign_op; +} + +void GoParser::Assign_opContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAssign_op(this); +} + +void GoParser::Assign_opContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAssign_op(this); +} + +GoParser::Assign_opContext* GoParser::assign_op() { + Assign_opContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 50, GoParser::RuleAssign_op); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(421); + _errHandler->sync(this); + + _la = _input->LA(1); + if (((((_la - 54) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54)) + | (1ULL << (GoParser::DIV - 54)) + | (1ULL << (GoParser::MOD - 54)) + | (1ULL << (GoParser::LSHIFT - 54)) + | (1ULL << (GoParser::RSHIFT - 54)) + | (1ULL << (GoParser::BIT_CLEAR - 54)) + | (1ULL << (GoParser::PLUS - 54)) + | (1ULL << (GoParser::MINUS - 54)) + | (1ULL << (GoParser::CARET - 54)) + | (1ULL << (GoParser::STAR - 54)) + | (1ULL << (GoParser::AMPERSAND - 54)))) != 0)) { + setState(420); + _la = _input->LA(1); + if (!(((((_la - 54) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54)) + | (1ULL << (GoParser::DIV - 54)) + | (1ULL << (GoParser::MOD - 54)) + | (1ULL << (GoParser::LSHIFT - 54)) + | (1ULL << (GoParser::RSHIFT - 54)) + | (1ULL << (GoParser::BIT_CLEAR - 54)) + | (1ULL << (GoParser::PLUS - 54)) + | (1ULL << (GoParser::MINUS - 54)) + | (1ULL << (GoParser::CARET - 54)) + | (1ULL << (GoParser::STAR - 54)) + | (1ULL << (GoParser::AMPERSAND - 54)))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + } + setState(423); + match(GoParser::ASSIGN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ShortVarDeclContext ------------------------------------------------------------------ + +GoParser::ShortVarDeclContext::ShortVarDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::IdentifierListContext* GoParser::ShortVarDeclContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ShortVarDeclContext::DECLARE_ASSIGN() { + return getToken(GoParser::DECLARE_ASSIGN, 0); +} + +GoParser::ExpressionListContext* GoParser::ShortVarDeclContext::expressionList() { + return getRuleContext(0); +} + + +size_t GoParser::ShortVarDeclContext::getRuleIndex() const { + return GoParser::RuleShortVarDecl; +} + +void GoParser::ShortVarDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterShortVarDecl(this); +} + +void GoParser::ShortVarDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitShortVarDecl(this); +} + +GoParser::ShortVarDeclContext* GoParser::shortVarDecl() { + ShortVarDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 52, GoParser::RuleShortVarDecl); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(425); + identifierList(); + setState(426); + match(GoParser::DECLARE_ASSIGN); + setState(427); + expressionList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- EmptyStmtContext ------------------------------------------------------------------ + +GoParser::EmptyStmtContext::EmptyStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::EmptyStmtContext::EOSSS() { + return getToken(GoParser::EOSSS, 0); +} + +tree::TerminalNode* GoParser::EmptyStmtContext::SEMI() { + return getToken(GoParser::SEMI, 0); +} + + +size_t GoParser::EmptyStmtContext::getRuleIndex() const { + return GoParser::RuleEmptyStmt; +} + +void GoParser::EmptyStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterEmptyStmt(this); +} + +void GoParser::EmptyStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitEmptyStmt(this); +} + +GoParser::EmptyStmtContext* GoParser::emptyStmt() { + EmptyStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 54, GoParser::RuleEmptyStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(429); + _la = _input->LA(1); + if (!(_la == GoParser::SEMI + + || _la == GoParser::EOSSS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LabeledStmtContext ------------------------------------------------------------------ + +GoParser::LabeledStmtContext::LabeledStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::LabeledStmtContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +tree::TerminalNode* GoParser::LabeledStmtContext::COLON() { + return getToken(GoParser::COLON, 0); +} + +GoParser::StatementContext* GoParser::LabeledStmtContext::statement() { + return getRuleContext(0); +} + + +size_t GoParser::LabeledStmtContext::getRuleIndex() const { + return GoParser::RuleLabeledStmt; +} + +void GoParser::LabeledStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLabeledStmt(this); +} + +void GoParser::LabeledStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLabeledStmt(this); +} + +GoParser::LabeledStmtContext* GoParser::labeledStmt() { + LabeledStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 56, GoParser::RuleLabeledStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(431); + match(GoParser::IDENTIFIER); + setState(432); + match(GoParser::COLON); + setState(434); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(433); + statement(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ReturnStmtContext ------------------------------------------------------------------ + +GoParser::ReturnStmtContext::ReturnStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ReturnStmtContext::RETURN() { + return getToken(GoParser::RETURN, 0); +} + +GoParser::ExpressionListContext* GoParser::ReturnStmtContext::expressionList() { + return getRuleContext(0); +} + + +size_t GoParser::ReturnStmtContext::getRuleIndex() const { + return GoParser::RuleReturnStmt; +} + +void GoParser::ReturnStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterReturnStmt(this); +} + +void GoParser::ReturnStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitReturnStmt(this); +} + +GoParser::ReturnStmtContext* GoParser::returnStmt() { + ReturnStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 58, GoParser::RuleReturnStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(436); + match(GoParser::RETURN); + setState(438); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(437); + expressionList(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BreakStmtContext ------------------------------------------------------------------ + +GoParser::BreakStmtContext::BreakStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::BreakStmtContext::BREAK() { + return getToken(GoParser::BREAK, 0); +} + +tree::TerminalNode* GoParser::BreakStmtContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::BreakStmtContext::getRuleIndex() const { + return GoParser::RuleBreakStmt; +} + +void GoParser::BreakStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBreakStmt(this); +} + +void GoParser::BreakStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBreakStmt(this); +} + +GoParser::BreakStmtContext* GoParser::breakStmt() { + BreakStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 60, GoParser::RuleBreakStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(440); + match(GoParser::BREAK); + setState(442); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::IDENTIFIER) { + setState(441); + match(GoParser::IDENTIFIER); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ContinueStmtContext ------------------------------------------------------------------ + +GoParser::ContinueStmtContext::ContinueStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ContinueStmtContext::CONTINUE() { + return getToken(GoParser::CONTINUE, 0); +} + +tree::TerminalNode* GoParser::ContinueStmtContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::ContinueStmtContext::getRuleIndex() const { + return GoParser::RuleContinueStmt; +} + +void GoParser::ContinueStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterContinueStmt(this); +} + +void GoParser::ContinueStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitContinueStmt(this); +} + +GoParser::ContinueStmtContext* GoParser::continueStmt() { + ContinueStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 62, GoParser::RuleContinueStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(444); + match(GoParser::CONTINUE); + setState(446); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::IDENTIFIER) { + setState(445); + match(GoParser::IDENTIFIER); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- GotoStmtContext ------------------------------------------------------------------ + +GoParser::GotoStmtContext::GotoStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::GotoStmtContext::GOTO() { + return getToken(GoParser::GOTO, 0); +} + +tree::TerminalNode* GoParser::GotoStmtContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::GotoStmtContext::getRuleIndex() const { + return GoParser::RuleGotoStmt; +} + +void GoParser::GotoStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterGotoStmt(this); +} + +void GoParser::GotoStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitGotoStmt(this); +} + +GoParser::GotoStmtContext* GoParser::gotoStmt() { + GotoStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 64, GoParser::RuleGotoStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(448); + match(GoParser::GOTO); + setState(449); + match(GoParser::IDENTIFIER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- FallthroughStmtContext ------------------------------------------------------------------ + +GoParser::FallthroughStmtContext::FallthroughStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::FallthroughStmtContext::FALLTHROUGH() { + return getToken(GoParser::FALLTHROUGH, 0); +} + + +size_t GoParser::FallthroughStmtContext::getRuleIndex() const { + return GoParser::RuleFallthroughStmt; +} + +void GoParser::FallthroughStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFallthroughStmt(this); +} + +void GoParser::FallthroughStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFallthroughStmt(this); +} + +GoParser::FallthroughStmtContext* GoParser::fallthroughStmt() { + FallthroughStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 66, GoParser::RuleFallthroughStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(451); + match(GoParser::FALLTHROUGH); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DeferStmtContext ------------------------------------------------------------------ + +GoParser::DeferStmtContext::DeferStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::DeferStmtContext::DEFER() { + return getToken(GoParser::DEFER, 0); +} + +GoParser::ExpressionContext* GoParser::DeferStmtContext::expression() { + return getRuleContext(0); +} + + +size_t GoParser::DeferStmtContext::getRuleIndex() const { + return GoParser::RuleDeferStmt; +} + +void GoParser::DeferStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDeferStmt(this); +} + +void GoParser::DeferStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDeferStmt(this); +} + +GoParser::DeferStmtContext* GoParser::deferStmt() { + DeferStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 68, GoParser::RuleDeferStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(453); + match(GoParser::DEFER); + setState(454); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IfStmtContext ------------------------------------------------------------------ + +GoParser::IfStmtContext::IfStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::IfStmtContext::IF() { + return getToken(GoParser::IF, 0); +} + +std::vector GoParser::IfStmtContext::block() { + return getRuleContexts(); +} + +GoParser::BlockContext* GoParser::IfStmtContext::block(size_t i) { + return getRuleContext(i); +} + +GoParser::ExpressionContext* GoParser::IfStmtContext::expression() { + return getRuleContext(0); +} + +GoParser::EossContext* GoParser::IfStmtContext::eoss() { + return getRuleContext(0); +} + +GoParser::SimpleStmtContext* GoParser::IfStmtContext::simpleStmt() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::IfStmtContext::ELSE() { + return getToken(GoParser::ELSE, 0); +} + +GoParser::IfStmtContext* GoParser::IfStmtContext::ifStmt() { + return getRuleContext(0); +} + + +size_t GoParser::IfStmtContext::getRuleIndex() const { + return GoParser::RuleIfStmt; +} + +void GoParser::IfStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIfStmt(this); +} + +void GoParser::IfStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIfStmt(this); +} + +GoParser::IfStmtContext* GoParser::ifStmt() { + IfStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 70, GoParser::RuleIfStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(456); + match(GoParser::IF); + setState(465); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 36, _ctx)) { + case 1: { + setState(457); + expression(0); + break; + } + + case 2: { + setState(458); + eoss(); + setState(459); + expression(0); + break; + } + + case 3: { + setState(461); + simpleStmt(); + setState(462); + eoss(); + setState(463); + expression(0); + break; + } + + default: + break; + } + setState(467); + block(); + setState(473); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::ELSE) { + setState(468); + match(GoParser::ELSE); + setState(471); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IF: { + setState(469); + ifStmt(); + break; + } + + case GoParser::L_CURLY: { + setState(470); + block(); + break; + } + + default: + throw NoViableAltException(this); + } + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SwitchStmtContext ------------------------------------------------------------------ + +GoParser::SwitchStmtContext::SwitchStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExprSwitchStmtContext* GoParser::SwitchStmtContext::exprSwitchStmt() { + return getRuleContext(0); +} + +GoParser::TypeSwitchStmtContext* GoParser::SwitchStmtContext::typeSwitchStmt() { + return getRuleContext(0); +} + + +size_t GoParser::SwitchStmtContext::getRuleIndex() const { + return GoParser::RuleSwitchStmt; +} + +void GoParser::SwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSwitchStmt(this); +} + +void GoParser::SwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSwitchStmt(this); +} + +GoParser::SwitchStmtContext* GoParser::switchStmt() { + SwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 72, GoParser::RuleSwitchStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(477); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(475); + exprSwitchStmt(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(476); + typeSwitchStmt(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExprSwitchStmtContext ------------------------------------------------------------------ + +GoParser::ExprSwitchStmtContext::ExprSwitchStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ExprSwitchStmtContext::SWITCH() { + return getToken(GoParser::SWITCH, 0); +} + +tree::TerminalNode* GoParser::ExprSwitchStmtContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::ExprSwitchStmtContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +GoParser::EossContext* GoParser::ExprSwitchStmtContext::eoss() { + return getRuleContext(0); +} + +std::vector GoParser::ExprSwitchStmtContext::exprCaseClause() { + return getRuleContexts(); +} + +GoParser::ExprCaseClauseContext* GoParser::ExprSwitchStmtContext::exprCaseClause(size_t i) { + return getRuleContext(i); +} + +GoParser::ExpressionContext* GoParser::ExprSwitchStmtContext::expression() { + return getRuleContext(0); +} + +GoParser::SimpleStmtContext* GoParser::ExprSwitchStmtContext::simpleStmt() { + return getRuleContext(0); +} + + +size_t GoParser::ExprSwitchStmtContext::getRuleIndex() const { + return GoParser::RuleExprSwitchStmt; +} + +void GoParser::ExprSwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExprSwitchStmt(this); +} + +void GoParser::ExprSwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExprSwitchStmt(this); +} + +GoParser::ExprSwitchStmtContext* GoParser::exprSwitchStmt() { + ExprSwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 74, GoParser::RuleExprSwitchStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(479); + match(GoParser::SWITCH); + setState(490); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { + case 1: { + setState(481); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(480); + expression(0); + } + break; + } + + case 2: { + setState(484); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(483); + simpleStmt(); + } + setState(486); + eoss(); + setState(488); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(487); + expression(0); + } + break; + } + + default: + break; + } + setState(492); + match(GoParser::L_CURLY); + setState(496); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::DEFAULT + + || _la == GoParser::CASE) { + setState(493); + exprCaseClause(); + setState(498); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(499); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExprCaseClauseContext ------------------------------------------------------------------ + +GoParser::ExprCaseClauseContext::ExprCaseClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExprSwitchCaseContext* GoParser::ExprCaseClauseContext::exprSwitchCase() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ExprCaseClauseContext::COLON() { + return getToken(GoParser::COLON, 0); +} + +GoParser::StatementListContext* GoParser::ExprCaseClauseContext::statementList() { + return getRuleContext(0); +} + + +size_t GoParser::ExprCaseClauseContext::getRuleIndex() const { + return GoParser::RuleExprCaseClause; +} + +void GoParser::ExprCaseClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExprCaseClause(this); +} + +void GoParser::ExprCaseClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExprCaseClause(this); +} + +GoParser::ExprCaseClauseContext* GoParser::exprCaseClause() { + ExprCaseClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 76, GoParser::RuleExprCaseClause); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(501); + exprSwitchCase(); + setState(502); + match(GoParser::COLON); + setState(504); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(503); + statementList(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExprSwitchCaseContext ------------------------------------------------------------------ + +GoParser::ExprSwitchCaseContext::ExprSwitchCaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ExprSwitchCaseContext::CASE() { + return getToken(GoParser::CASE, 0); +} + +GoParser::ExpressionListContext* GoParser::ExprSwitchCaseContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ExprSwitchCaseContext::DEFAULT() { + return getToken(GoParser::DEFAULT, 0); +} + + +size_t GoParser::ExprSwitchCaseContext::getRuleIndex() const { + return GoParser::RuleExprSwitchCase; +} + +void GoParser::ExprSwitchCaseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExprSwitchCase(this); +} + +void GoParser::ExprSwitchCaseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExprSwitchCase(this); +} + +GoParser::ExprSwitchCaseContext* GoParser::exprSwitchCase() { + ExprSwitchCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 78, GoParser::RuleExprSwitchCase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(509); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::CASE: { + enterOuterAlt(_localctx, 1); + setState(506); + match(GoParser::CASE); + setState(507); + expressionList(); + break; + } + + case GoParser::DEFAULT: { + enterOuterAlt(_localctx, 2); + setState(508); + match(GoParser::DEFAULT); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeSwitchStmtContext ------------------------------------------------------------------ + +GoParser::TypeSwitchStmtContext::TypeSwitchStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::TypeSwitchStmtContext::SWITCH() { + return getToken(GoParser::SWITCH, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchStmtContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchStmtContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +GoParser::TypeSwitchGuardContext* GoParser::TypeSwitchStmtContext::typeSwitchGuard() { + return getRuleContext(0); +} + +GoParser::EossContext* GoParser::TypeSwitchStmtContext::eoss() { + return getRuleContext(0); +} + +GoParser::SimpleStmtContext* GoParser::TypeSwitchStmtContext::simpleStmt() { + return getRuleContext(0); +} + +std::vector GoParser::TypeSwitchStmtContext::typeCaseClause() { + return getRuleContexts(); +} + +GoParser::TypeCaseClauseContext* GoParser::TypeSwitchStmtContext::typeCaseClause(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::TypeSwitchStmtContext::getRuleIndex() const { + return GoParser::RuleTypeSwitchStmt; +} + +void GoParser::TypeSwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeSwitchStmt(this); +} + +void GoParser::TypeSwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeSwitchStmt(this); +} + +GoParser::TypeSwitchStmtContext* GoParser::typeSwitchStmt() { + TypeSwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 80, GoParser::RuleTypeSwitchStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(511); + match(GoParser::SWITCH); + setState(520); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 47, _ctx)) { + case 1: { + setState(512); + typeSwitchGuard(); + break; + } + + case 2: { + setState(513); + eoss(); + setState(514); + typeSwitchGuard(); + break; + } + + case 3: { + setState(516); + simpleStmt(); + setState(517); + eoss(); + setState(518); + typeSwitchGuard(); + break; + } + + default: + break; + } + setState(522); + match(GoParser::L_CURLY); + setState(526); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::DEFAULT + + || _la == GoParser::CASE) { + setState(523); + typeCaseClause(); + setState(528); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(529); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeSwitchGuardContext ------------------------------------------------------------------ + +GoParser::TypeSwitchGuardContext::TypeSwitchGuardContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::PrimaryExprContext* GoParser::TypeSwitchGuardContext::primaryExpr() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::DOT() { + return getToken(GoParser::DOT, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::TYPE() { + return getToken(GoParser::TYPE, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +tree::TerminalNode* GoParser::TypeSwitchGuardContext::DECLARE_ASSIGN() { + return getToken(GoParser::DECLARE_ASSIGN, 0); +} + + +size_t GoParser::TypeSwitchGuardContext::getRuleIndex() const { + return GoParser::RuleTypeSwitchGuard; +} + +void GoParser::TypeSwitchGuardContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeSwitchGuard(this); +} + +void GoParser::TypeSwitchGuardContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeSwitchGuard(this); +} + +GoParser::TypeSwitchGuardContext* GoParser::typeSwitchGuard() { + TypeSwitchGuardContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 82, GoParser::RuleTypeSwitchGuard); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(533); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { + case 1: { + setState(531); + match(GoParser::IDENTIFIER); + setState(532); + match(GoParser::DECLARE_ASSIGN); + break; + } + + default: + break; + } + setState(535); + primaryExpr(0); + setState(536); + match(GoParser::DOT); + setState(537); + match(GoParser::L_PAREN); + setState(538); + match(GoParser::TYPE); + setState(539); + match(GoParser::R_PAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeCaseClauseContext ------------------------------------------------------------------ + +GoParser::TypeCaseClauseContext::TypeCaseClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::TypeSwitchCaseContext* GoParser::TypeCaseClauseContext::typeSwitchCase() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeCaseClauseContext::COLON() { + return getToken(GoParser::COLON, 0); +} + +GoParser::StatementListContext* GoParser::TypeCaseClauseContext::statementList() { + return getRuleContext(0); +} + + +size_t GoParser::TypeCaseClauseContext::getRuleIndex() const { + return GoParser::RuleTypeCaseClause; +} + +void GoParser::TypeCaseClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeCaseClause(this); +} + +void GoParser::TypeCaseClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeCaseClause(this); +} + +GoParser::TypeCaseClauseContext* GoParser::typeCaseClause() { + TypeCaseClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 84, GoParser::RuleTypeCaseClause); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(541); + typeSwitchCase(); + setState(542); + match(GoParser::COLON); + setState(544); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(543); + statementList(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeSwitchCaseContext ------------------------------------------------------------------ + +GoParser::TypeSwitchCaseContext::TypeSwitchCaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::TypeSwitchCaseContext::CASE() { + return getToken(GoParser::CASE, 0); +} + +GoParser::TypeListContext* GoParser::TypeSwitchCaseContext::typeList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeSwitchCaseContext::DEFAULT() { + return getToken(GoParser::DEFAULT, 0); +} + + +size_t GoParser::TypeSwitchCaseContext::getRuleIndex() const { + return GoParser::RuleTypeSwitchCase; +} + +void GoParser::TypeSwitchCaseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeSwitchCase(this); +} + +void GoParser::TypeSwitchCaseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeSwitchCase(this); +} + +GoParser::TypeSwitchCaseContext* GoParser::typeSwitchCase() { + TypeSwitchCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 86, GoParser::RuleTypeSwitchCase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(549); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::CASE: { + enterOuterAlt(_localctx, 1); + setState(546); + match(GoParser::CASE); + setState(547); + typeList(); + break; + } + + case GoParser::DEFAULT: { + enterOuterAlt(_localctx, 2); + setState(548); + match(GoParser::DEFAULT); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeListContext ------------------------------------------------------------------ + +GoParser::TypeListContext::TypeListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::TypeListContext::type_() { + return getRuleContexts(); +} + +GoParser::Type_Context* GoParser::TypeListContext::type_(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::TypeListContext::NIL_LIT() { + return getTokens(GoParser::NIL_LIT); +} + +tree::TerminalNode* GoParser::TypeListContext::NIL_LIT(size_t i) { + return getToken(GoParser::NIL_LIT, i); +} + +std::vector GoParser::TypeListContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::TypeListContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::TypeListContext::getRuleIndex() const { + return GoParser::RuleTypeList; +} + +void GoParser::TypeListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeList(this); +} + +void GoParser::TypeListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeList(this); +} + +GoParser::TypeListContext* GoParser::typeList() { + TypeListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 88, GoParser::RuleTypeList); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(553); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::IDENTIFIER: + case GoParser::L_PAREN: + case GoParser::L_BRACKET: + case GoParser::STAR: + case GoParser::RECEIVE: { + setState(551); + type_(); + break; + } + + case GoParser::NIL_LIT: { + setState(552); + match(GoParser::NIL_LIT); + break; + } + + default: + throw NoViableAltException(this); + } + setState(562); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::COMMA) { + setState(555); + match(GoParser::COMMA); + setState(558); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::IDENTIFIER: + case GoParser::L_PAREN: + case GoParser::L_BRACKET: + case GoParser::STAR: + case GoParser::RECEIVE: { + setState(556); + type_(); + break; + } + + case GoParser::NIL_LIT: { + setState(557); + match(GoParser::NIL_LIT); + break; + } + + default: + throw NoViableAltException(this); + } + setState(564); + _errHandler->sync(this); + _la = _input->LA(1); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SelectStmtContext ------------------------------------------------------------------ + +GoParser::SelectStmtContext::SelectStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::SelectStmtContext::SELECT() { + return getToken(GoParser::SELECT, 0); +} + +tree::TerminalNode* GoParser::SelectStmtContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::SelectStmtContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +std::vector GoParser::SelectStmtContext::commClause() { + return getRuleContexts(); +} + +GoParser::CommClauseContext* GoParser::SelectStmtContext::commClause(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::SelectStmtContext::getRuleIndex() const { + return GoParser::RuleSelectStmt; +} + +void GoParser::SelectStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSelectStmt(this); +} + +void GoParser::SelectStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSelectStmt(this); +} + +GoParser::SelectStmtContext* GoParser::selectStmt() { + SelectStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 90, GoParser::RuleSelectStmt); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(565); + match(GoParser::SELECT); + setState(566); + match(GoParser::L_CURLY); + setState(570); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::DEFAULT + + || _la == GoParser::CASE) { + setState(567); + commClause(); + setState(572); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(573); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CommClauseContext ------------------------------------------------------------------ + +GoParser::CommClauseContext::CommClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::CommCaseContext* GoParser::CommClauseContext::commCase() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::CommClauseContext::COLON() { + return getToken(GoParser::COLON, 0); +} + +GoParser::StatementListContext* GoParser::CommClauseContext::statementList() { + return getRuleContext(0); +} + + +size_t GoParser::CommClauseContext::getRuleIndex() const { + return GoParser::RuleCommClause; +} + +void GoParser::CommClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCommClause(this); +} + +void GoParser::CommClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCommClause(this); +} + +GoParser::CommClauseContext* GoParser::commClause() { + CommClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 92, GoParser::RuleCommClause); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(575); + commCase(); + setState(576); + match(GoParser::COLON); + setState(578); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::BREAK) + | (1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::SELECT) + | (1ULL << GoParser::DEFER) + | (1ULL << GoParser::GO) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::GOTO) + | (1ULL << GoParser::SWITCH) + | (1ULL << GoParser::CONST) + | (1ULL << GoParser::FALLTHROUGH) + | (1ULL << GoParser::IF) + | (1ULL << GoParser::TYPE) + | (1ULL << GoParser::CONTINUE) + | (1ULL << GoParser::FOR) + | (1ULL << GoParser::RETURN) + | (1ULL << GoParser::VAR) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(577); + statementList(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CommCaseContext ------------------------------------------------------------------ + +GoParser::CommCaseContext::CommCaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::CommCaseContext::CASE() { + return getToken(GoParser::CASE, 0); +} + +GoParser::SendStmtContext* GoParser::CommCaseContext::sendStmt() { + return getRuleContext(0); +} + +GoParser::RecvStmtContext* GoParser::CommCaseContext::recvStmt() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::CommCaseContext::DEFAULT() { + return getToken(GoParser::DEFAULT, 0); +} + + +size_t GoParser::CommCaseContext::getRuleIndex() const { + return GoParser::RuleCommCase; +} + +void GoParser::CommCaseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCommCase(this); +} + +void GoParser::CommCaseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCommCase(this); +} + +GoParser::CommCaseContext* GoParser::commCase() { + CommCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 94, GoParser::RuleCommCase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(586); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::CASE: { + enterOuterAlt(_localctx, 1); + setState(580); + match(GoParser::CASE); + setState(583); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 57, _ctx)) { + case 1: { + setState(581); + sendStmt(); + break; + } + + case 2: { + setState(582); + recvStmt(); + break; + } + + default: + break; + } + break; + } + + case GoParser::DEFAULT: { + enterOuterAlt(_localctx, 2); + setState(585); + match(GoParser::DEFAULT); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- RecvStmtContext ------------------------------------------------------------------ + +GoParser::RecvStmtContext::RecvStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::RecvStmtContext::expression() { + return getRuleContext(0); +} + +GoParser::ExpressionListContext* GoParser::RecvStmtContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::RecvStmtContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + +GoParser::IdentifierListContext* GoParser::RecvStmtContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::RecvStmtContext::DECLARE_ASSIGN() { + return getToken(GoParser::DECLARE_ASSIGN, 0); +} + + +size_t GoParser::RecvStmtContext::getRuleIndex() const { + return GoParser::RuleRecvStmt; +} + +void GoParser::RecvStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterRecvStmt(this); +} + +void GoParser::RecvStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitRecvStmt(this); +} + +GoParser::RecvStmtContext* GoParser::recvStmt() { + RecvStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 96, GoParser::RuleRecvStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(594); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { + case 1: { + setState(588); + expressionList(); + setState(589); + match(GoParser::ASSIGN); + break; + } + + case 2: { + setState(591); + identifierList(); + setState(592); + match(GoParser::DECLARE_ASSIGN); + break; + } + + default: + break; + } + setState(596); + antlrcpp::downCast(_localctx)->recvExpr = expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ForStmtContext ------------------------------------------------------------------ + +GoParser::ForStmtContext::ForStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ForStmtContext::FOR() { + return getToken(GoParser::FOR, 0); +} + +GoParser::BlockContext* GoParser::ForStmtContext::block() { + return getRuleContext(0); +} + +GoParser::ExpressionContext* GoParser::ForStmtContext::expression() { + return getRuleContext(0); +} + +GoParser::ForClauseContext* GoParser::ForStmtContext::forClause() { + return getRuleContext(0); +} + +GoParser::RangeClauseContext* GoParser::ForStmtContext::rangeClause() { + return getRuleContext(0); +} + + +size_t GoParser::ForStmtContext::getRuleIndex() const { + return GoParser::RuleForStmt; +} + +void GoParser::ForStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterForStmt(this); +} + +void GoParser::ForStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitForStmt(this); +} + +GoParser::ForStmtContext* GoParser::forStmt() { + ForStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 98, GoParser::RuleForStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(598); + match(GoParser::FOR); + setState(602); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { + case 1: { + setState(599); + expression(0); + break; + } + + case 2: { + setState(600); + forClause(); + break; + } + + case 3: { + setState(601); + rangeClause(); + break; + } + + default: + break; + } + setState(604); + block(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ForClauseContext ------------------------------------------------------------------ + +GoParser::ForClauseContext::ForClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::ForClauseContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::ForClauseContext::eoss(size_t i) { + return getRuleContext(i); +} + +GoParser::ExpressionContext* GoParser::ForClauseContext::expression() { + return getRuleContext(0); +} + +std::vector GoParser::ForClauseContext::simpleStmt() { + return getRuleContexts(); +} + +GoParser::SimpleStmtContext* GoParser::ForClauseContext::simpleStmt(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::ForClauseContext::getRuleIndex() const { + return GoParser::RuleForClause; +} + +void GoParser::ForClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterForClause(this); +} + +void GoParser::ForClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitForClause(this); +} + +GoParser::ForClauseContext* GoParser::forClause() { + ForClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 100, GoParser::RuleForClause); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(607); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(606); + antlrcpp::downCast(_localctx)->initStmt = simpleStmt(); + } + setState(609); + eoss(); + setState(611); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(610); + expression(0); + } + setState(613); + eoss(); + setState(615); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(614); + antlrcpp::downCast(_localctx)->postStmt = simpleStmt(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- RangeClauseContext ------------------------------------------------------------------ + +GoParser::RangeClauseContext::RangeClauseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::RangeClauseContext::RANGE() { + return getToken(GoParser::RANGE, 0); +} + +GoParser::ExpressionContext* GoParser::RangeClauseContext::expression() { + return getRuleContext(0); +} + +GoParser::ExpressionListContext* GoParser::RangeClauseContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::RangeClauseContext::ASSIGN() { + return getToken(GoParser::ASSIGN, 0); +} + +GoParser::IdentifierListContext* GoParser::RangeClauseContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::RangeClauseContext::DECLARE_ASSIGN() { + return getToken(GoParser::DECLARE_ASSIGN, 0); +} + + +size_t GoParser::RangeClauseContext::getRuleIndex() const { + return GoParser::RuleRangeClause; +} + +void GoParser::RangeClauseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterRangeClause(this); +} + +void GoParser::RangeClauseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitRangeClause(this); +} + +GoParser::RangeClauseContext* GoParser::rangeClause() { + RangeClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 102, GoParser::RuleRangeClause); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(623); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 64, _ctx)) { + case 1: { + setState(617); + expressionList(); + setState(618); + match(GoParser::ASSIGN); + break; + } + + case 2: { + setState(620); + identifierList(); + setState(621); + match(GoParser::DECLARE_ASSIGN); + break; + } + + default: + break; + } + setState(625); + match(GoParser::RANGE); + setState(626); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- GoStmtContext ------------------------------------------------------------------ + +GoParser::GoStmtContext::GoStmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::GoStmtContext::GO() { + return getToken(GoParser::GO, 0); +} + +GoParser::ExpressionContext* GoParser::GoStmtContext::expression() { + return getRuleContext(0); +} + + +size_t GoParser::GoStmtContext::getRuleIndex() const { + return GoParser::RuleGoStmt; +} + +void GoParser::GoStmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterGoStmt(this); +} + +void GoParser::GoStmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitGoStmt(this); +} + +GoParser::GoStmtContext* GoParser::goStmt() { + GoStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 104, GoParser::RuleGoStmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(628); + match(GoParser::GO); + setState(629); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Type_Context ------------------------------------------------------------------ + +GoParser::Type_Context::Type_Context(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::TypeNameContext* GoParser::Type_Context::typeName() { + return getRuleContext(0); +} + +GoParser::TypeLitContext* GoParser::Type_Context::typeLit() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::Type_Context::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +GoParser::Type_Context* GoParser::Type_Context::type_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::Type_Context::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + + +size_t GoParser::Type_Context::getRuleIndex() const { + return GoParser::RuleType_; +} + +void GoParser::Type_Context::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterType_(this); +} + +void GoParser::Type_Context::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitType_(this); +} + +GoParser::Type_Context* GoParser::type_() { + Type_Context *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 106, GoParser::RuleType_); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(637); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::IDENTIFIER: { + enterOuterAlt(_localctx, 1); + setState(631); + typeName(); + break; + } + + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::L_BRACKET: + case GoParser::STAR: + case GoParser::RECEIVE: { + enterOuterAlt(_localctx, 2); + setState(632); + typeLit(); + break; + } + + case GoParser::L_PAREN: { + enterOuterAlt(_localctx, 3); + setState(633); + match(GoParser::L_PAREN); + setState(634); + type_(); + setState(635); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeNameContext ------------------------------------------------------------------ + +GoParser::TypeNameContext::TypeNameContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::QualifiedIdentContext* GoParser::TypeNameContext::qualifiedIdent() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeNameContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::TypeNameContext::getRuleIndex() const { + return GoParser::RuleTypeName; +} + +void GoParser::TypeNameContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeName(this); +} + +void GoParser::TypeNameContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeName(this); +} + +GoParser::TypeNameContext* GoParser::typeName() { + TypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 108, GoParser::RuleTypeName); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(641); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 66, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(639); + qualifiedIdent(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(640); + match(GoParser::IDENTIFIER); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeLitContext ------------------------------------------------------------------ + +GoParser::TypeLitContext::TypeLitContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ArrayTypeContext* GoParser::TypeLitContext::arrayType() { + return getRuleContext(0); +} + +GoParser::StructTypeContext* GoParser::TypeLitContext::structType() { + return getRuleContext(0); +} + +GoParser::PointerTypeContext* GoParser::TypeLitContext::pointerType() { + return getRuleContext(0); +} + +GoParser::FunctionTypeContext* GoParser::TypeLitContext::functionType() { + return getRuleContext(0); +} + +GoParser::InterfaceTypeContext* GoParser::TypeLitContext::interfaceType() { + return getRuleContext(0); +} + +GoParser::SliceTypeContext* GoParser::TypeLitContext::sliceType() { + return getRuleContext(0); +} + +GoParser::MapTypeContext* GoParser::TypeLitContext::mapType() { + return getRuleContext(0); +} + +GoParser::ChannelTypeContext* GoParser::TypeLitContext::channelType() { + return getRuleContext(0); +} + + +size_t GoParser::TypeLitContext::getRuleIndex() const { + return GoParser::RuleTypeLit; +} + +void GoParser::TypeLitContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeLit(this); +} + +void GoParser::TypeLitContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeLit(this); +} + +GoParser::TypeLitContext* GoParser::typeLit() { + TypeLitContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 110, GoParser::RuleTypeLit); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(651); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 67, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(643); + arrayType(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(644); + structType(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(645); + pointerType(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(646); + functionType(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(647); + interfaceType(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(648); + sliceType(); + break; + } + + case 7: { + enterOuterAlt(_localctx, 7); + setState(649); + mapType(); + break; + } + + case 8: { + enterOuterAlt(_localctx, 8); + setState(650); + channelType(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ArrayTypeContext ------------------------------------------------------------------ + +GoParser::ArrayTypeContext::ArrayTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ArrayTypeContext::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +GoParser::ArrayLengthContext* GoParser::ArrayTypeContext::arrayLength() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ArrayTypeContext::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + +GoParser::ElementTypeContext* GoParser::ArrayTypeContext::elementType() { + return getRuleContext(0); +} + + +size_t GoParser::ArrayTypeContext::getRuleIndex() const { + return GoParser::RuleArrayType; +} + +void GoParser::ArrayTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterArrayType(this); +} + +void GoParser::ArrayTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitArrayType(this); +} + +GoParser::ArrayTypeContext* GoParser::arrayType() { + ArrayTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 112, GoParser::RuleArrayType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(653); + match(GoParser::L_BRACKET); + setState(654); + arrayLength(); + setState(655); + match(GoParser::R_BRACKET); + setState(656); + elementType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ArrayLengthContext ------------------------------------------------------------------ + +GoParser::ArrayLengthContext::ArrayLengthContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::ArrayLengthContext::expression() { + return getRuleContext(0); +} + + +size_t GoParser::ArrayLengthContext::getRuleIndex() const { + return GoParser::RuleArrayLength; +} + +void GoParser::ArrayLengthContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterArrayLength(this); +} + +void GoParser::ArrayLengthContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitArrayLength(this); +} + +GoParser::ArrayLengthContext* GoParser::arrayLength() { + ArrayLengthContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 114, GoParser::RuleArrayLength); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(658); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ElementTypeContext ------------------------------------------------------------------ + +GoParser::ElementTypeContext::ElementTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::Type_Context* GoParser::ElementTypeContext::type_() { + return getRuleContext(0); +} + + +size_t GoParser::ElementTypeContext::getRuleIndex() const { + return GoParser::RuleElementType; +} + +void GoParser::ElementTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterElementType(this); +} + +void GoParser::ElementTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitElementType(this); +} + +GoParser::ElementTypeContext* GoParser::elementType() { + ElementTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 116, GoParser::RuleElementType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(660); + type_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- PointerTypeContext ------------------------------------------------------------------ + +GoParser::PointerTypeContext::PointerTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::PointerTypeContext::STAR() { + return getToken(GoParser::STAR, 0); +} + +GoParser::Type_Context* GoParser::PointerTypeContext::type_() { + return getRuleContext(0); +} + + +size_t GoParser::PointerTypeContext::getRuleIndex() const { + return GoParser::RulePointerType; +} + +void GoParser::PointerTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPointerType(this); +} + +void GoParser::PointerTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPointerType(this); +} + +GoParser::PointerTypeContext* GoParser::pointerType() { + PointerTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 118, GoParser::RulePointerType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(662); + match(GoParser::STAR); + setState(663); + type_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- InterfaceTypeContext ------------------------------------------------------------------ + +GoParser::InterfaceTypeContext::InterfaceTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::InterfaceTypeContext::INTERFACE() { + return getToken(GoParser::INTERFACE, 0); +} + +tree::TerminalNode* GoParser::InterfaceTypeContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::InterfaceTypeContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +std::vector GoParser::InterfaceTypeContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::InterfaceTypeContext::eoss(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::InterfaceTypeContext::methodSpec() { + return getRuleContexts(); +} + +GoParser::MethodSpecContext* GoParser::InterfaceTypeContext::methodSpec(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::InterfaceTypeContext::typeName() { + return getRuleContexts(); +} + +GoParser::TypeNameContext* GoParser::InterfaceTypeContext::typeName(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::InterfaceTypeContext::getRuleIndex() const { + return GoParser::RuleInterfaceType; +} + +void GoParser::InterfaceTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterInterfaceType(this); +} + +void GoParser::InterfaceTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitInterfaceType(this); +} + +GoParser::InterfaceTypeContext* GoParser::interfaceType() { + InterfaceTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 120, GoParser::RuleInterfaceType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(665); + match(GoParser::INTERFACE); + setState(666); + match(GoParser::L_CURLY); + setState(675); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IDENTIFIER) { + setState(669); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 68, _ctx)) { + case 1: { + setState(667); + methodSpec(); + break; + } + + case 2: { + setState(668); + typeName(); + break; + } + + default: + break; + } + setState(671); + eoss(); + setState(677); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(678); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SliceTypeContext ------------------------------------------------------------------ + +GoParser::SliceTypeContext::SliceTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::SliceTypeContext::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +tree::TerminalNode* GoParser::SliceTypeContext::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + +GoParser::ElementTypeContext* GoParser::SliceTypeContext::elementType() { + return getRuleContext(0); +} + + +size_t GoParser::SliceTypeContext::getRuleIndex() const { + return GoParser::RuleSliceType; +} + +void GoParser::SliceTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSliceType(this); +} + +void GoParser::SliceTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSliceType(this); +} + +GoParser::SliceTypeContext* GoParser::sliceType() { + SliceTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 122, GoParser::RuleSliceType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(680); + match(GoParser::L_BRACKET); + setState(681); + match(GoParser::R_BRACKET); + setState(682); + elementType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- MapTypeContext ------------------------------------------------------------------ + +GoParser::MapTypeContext::MapTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::MapTypeContext::MAP() { + return getToken(GoParser::MAP, 0); +} + +tree::TerminalNode* GoParser::MapTypeContext::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +GoParser::Type_Context* GoParser::MapTypeContext::type_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::MapTypeContext::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + +GoParser::ElementTypeContext* GoParser::MapTypeContext::elementType() { + return getRuleContext(0); +} + + +size_t GoParser::MapTypeContext::getRuleIndex() const { + return GoParser::RuleMapType; +} + +void GoParser::MapTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMapType(this); +} + +void GoParser::MapTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMapType(this); +} + +GoParser::MapTypeContext* GoParser::mapType() { + MapTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 124, GoParser::RuleMapType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(684); + match(GoParser::MAP); + setState(685); + match(GoParser::L_BRACKET); + setState(686); + type_(); + setState(687); + match(GoParser::R_BRACKET); + setState(688); + elementType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ChannelTypeContext ------------------------------------------------------------------ + +GoParser::ChannelTypeContext::ChannelTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ElementTypeContext* GoParser::ChannelTypeContext::elementType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ChannelTypeContext::CHAN() { + return getToken(GoParser::CHAN, 0); +} + +tree::TerminalNode* GoParser::ChannelTypeContext::RECEIVE() { + return getToken(GoParser::RECEIVE, 0); +} + + +size_t GoParser::ChannelTypeContext::getRuleIndex() const { + return GoParser::RuleChannelType; +} + +void GoParser::ChannelTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterChannelType(this); +} + +void GoParser::ChannelTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitChannelType(this); +} + +GoParser::ChannelTypeContext* GoParser::channelType() { + ChannelTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 126, GoParser::RuleChannelType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(695); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 70, _ctx)) { + case 1: { + setState(690); + match(GoParser::CHAN); + break; + } + + case 2: { + setState(691); + match(GoParser::CHAN); + setState(692); + match(GoParser::RECEIVE); + break; + } + + case 3: { + setState(693); + match(GoParser::RECEIVE); + setState(694); + match(GoParser::CHAN); + break; + } + + default: + break; + } + setState(697); + elementType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- MethodSpecContext ------------------------------------------------------------------ + +GoParser::MethodSpecContext::MethodSpecContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::MethodSpecContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + +GoParser::ParametersContext* GoParser::MethodSpecContext::parameters() { + return getRuleContext(0); +} + +GoParser::ResultContext* GoParser::MethodSpecContext::result() { + return getRuleContext(0); +} + + +size_t GoParser::MethodSpecContext::getRuleIndex() const { + return GoParser::RuleMethodSpec; +} + +void GoParser::MethodSpecContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMethodSpec(this); +} + +void GoParser::MethodSpecContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMethodSpec(this); +} + +GoParser::MethodSpecContext* GoParser::methodSpec() { + MethodSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 128, GoParser::RuleMethodSpec); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(705); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 71, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(699); + match(GoParser::IDENTIFIER); + setState(700); + parameters(); + setState(701); + result(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(703); + match(GoParser::IDENTIFIER); + setState(704); + parameters(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- FunctionTypeContext ------------------------------------------------------------------ + +GoParser::FunctionTypeContext::FunctionTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::FunctionTypeContext::FUNC() { + return getToken(GoParser::FUNC, 0); +} + +GoParser::SignatureContext* GoParser::FunctionTypeContext::signature() { + return getRuleContext(0); +} + + +size_t GoParser::FunctionTypeContext::getRuleIndex() const { + return GoParser::RuleFunctionType; +} + +void GoParser::FunctionTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFunctionType(this); +} + +void GoParser::FunctionTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFunctionType(this); +} + +GoParser::FunctionTypeContext* GoParser::functionType() { + FunctionTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 130, GoParser::RuleFunctionType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(707); + match(GoParser::FUNC); + setState(708); + signature(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SignatureContext ------------------------------------------------------------------ + +GoParser::SignatureContext::SignatureContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ParametersContext* GoParser::SignatureContext::parameters() { + return getRuleContext(0); +} + +GoParser::ResultContext* GoParser::SignatureContext::result() { + return getRuleContext(0); +} + + +size_t GoParser::SignatureContext::getRuleIndex() const { + return GoParser::RuleSignature; +} + +void GoParser::SignatureContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSignature(this); +} + +void GoParser::SignatureContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSignature(this); +} + +GoParser::SignatureContext* GoParser::signature() { + SignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 132, GoParser::RuleSignature); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(714); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 72, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(710); + parameters(); + setState(711); + result(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(713); + parameters(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ResultContext ------------------------------------------------------------------ + +GoParser::ResultContext::ResultContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ParametersContext* GoParser::ResultContext::parameters() { + return getRuleContext(0); +} + +GoParser::Type_Context* GoParser::ResultContext::type_() { + return getRuleContext(0); +} + + +size_t GoParser::ResultContext::getRuleIndex() const { + return GoParser::RuleResult; +} + +void GoParser::ResultContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterResult(this); +} + +void GoParser::ResultContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitResult(this); +} + +GoParser::ResultContext* GoParser::result() { + ResultContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 134, GoParser::RuleResult); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(718); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 73, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(716); + parameters(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(717); + type_(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ParametersContext ------------------------------------------------------------------ + +GoParser::ParametersContext::ParametersContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ParametersContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::ParametersContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +std::vector GoParser::ParametersContext::parameterDecl() { + return getRuleContexts(); +} + +GoParser::ParameterDeclContext* GoParser::ParametersContext::parameterDecl(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::ParametersContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::ParametersContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::ParametersContext::getRuleIndex() const { + return GoParser::RuleParameters; +} + +void GoParser::ParametersContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterParameters(this); +} + +void GoParser::ParametersContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitParameters(this); +} + +GoParser::ParametersContext* GoParser::parameters() { + ParametersContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 136, GoParser::RuleParameters); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(720); + match(GoParser::L_PAREN); + setState(732); + _errHandler->sync(this); + + _la = _input->LA(1); + if (((((_la - 3) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 3)) & ((1ULL << (GoParser::FUNC - 3)) + | (1ULL << (GoParser::INTERFACE - 3)) + | (1ULL << (GoParser::MAP - 3)) + | (1ULL << (GoParser::STRUCT - 3)) + | (1ULL << (GoParser::CHAN - 3)) + | (1ULL << (GoParser::IDENTIFIER - 3)) + | (1ULL << (GoParser::L_PAREN - 3)) + | (1ULL << (GoParser::L_BRACKET - 3)) + | (1ULL << (GoParser::ELLIPSIS - 3)) + | (1ULL << (GoParser::STAR - 3)) + | (1ULL << (GoParser::RECEIVE - 3)))) != 0)) { + setState(721); + parameterDecl(); + setState(726); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(722); + match(GoParser::COMMA); + setState(723); + parameterDecl(); + } + setState(728); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); + } + setState(730); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::COMMA) { + setState(729); + match(GoParser::COMMA); + } + } + setState(734); + match(GoParser::R_PAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ParameterDeclContext ------------------------------------------------------------------ + +GoParser::ParameterDeclContext::ParameterDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::Type_Context* GoParser::ParameterDeclContext::type_() { + return getRuleContext(0); +} + +GoParser::IdentifierListContext* GoParser::ParameterDeclContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ParameterDeclContext::ELLIPSIS() { + return getToken(GoParser::ELLIPSIS, 0); +} + + +size_t GoParser::ParameterDeclContext::getRuleIndex() const { + return GoParser::RuleParameterDecl; +} + +void GoParser::ParameterDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterParameterDecl(this); +} + +void GoParser::ParameterDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitParameterDecl(this); +} + +GoParser::ParameterDeclContext* GoParser::parameterDecl() { + ParameterDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 138, GoParser::RuleParameterDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(737); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 77, _ctx)) { + case 1: { + setState(736); + identifierList(); + break; + } + + default: + break; + } + setState(740); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::ELLIPSIS) { + setState(739); + match(GoParser::ELLIPSIS); + } + setState(742); + type_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionContext ------------------------------------------------------------------ + +GoParser::ExpressionContext::ExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t GoParser::ExpressionContext::getRuleIndex() const { + return GoParser::RuleExpression; +} + +void GoParser::ExpressionContext::copyFrom(ExpressionContext *ctx) { + ParserRuleContext::copyFrom(ctx); +} + +//----------------- LogicalAndOperationContext ------------------------------------------------------------------ + +std::vector GoParser::LogicalAndOperationContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::LogicalAndOperationContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::LogicalAndOperationContext::LOGICAL_AND() { + return getToken(GoParser::LOGICAL_AND, 0); +} + +GoParser::LogicalAndOperationContext::LogicalAndOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::LogicalAndOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLogicalAndOperation(this); +} +void GoParser::LogicalAndOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLogicalAndOperation(this); +} +//----------------- UnaryOperationContext ------------------------------------------------------------------ + +GoParser::ExpressionContext* GoParser::UnaryOperationContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::PLUS() { + return getToken(GoParser::PLUS, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::MINUS() { + return getToken(GoParser::MINUS, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::EXCLAMATION() { + return getToken(GoParser::EXCLAMATION, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::CARET() { + return getToken(GoParser::CARET, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::STAR() { + return getToken(GoParser::STAR, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::AMPERSAND() { + return getToken(GoParser::AMPERSAND, 0); +} + +tree::TerminalNode* GoParser::UnaryOperationContext::RECEIVE() { + return getToken(GoParser::RECEIVE, 0); +} + +GoParser::UnaryOperationContext::UnaryOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::UnaryOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterUnaryOperation(this); +} +void GoParser::UnaryOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitUnaryOperation(this); +} +//----------------- PrimaryExpressionContext ------------------------------------------------------------------ + +GoParser::PrimaryExprContext* GoParser::PrimaryExpressionContext::primaryExpr() { + return getRuleContext(0); +} + +GoParser::PrimaryExpressionContext::PrimaryExpressionContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::PrimaryExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPrimaryExpression(this); +} +void GoParser::PrimaryExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPrimaryExpression(this); +} +//----------------- PlusMinusOperationContext ------------------------------------------------------------------ + +std::vector GoParser::PlusMinusOperationContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::PlusMinusOperationContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::PlusMinusOperationContext::PLUS() { + return getToken(GoParser::PLUS, 0); +} + +tree::TerminalNode* GoParser::PlusMinusOperationContext::MINUS() { + return getToken(GoParser::MINUS, 0); +} + +tree::TerminalNode* GoParser::PlusMinusOperationContext::OR() { + return getToken(GoParser::OR, 0); +} + +tree::TerminalNode* GoParser::PlusMinusOperationContext::CARET() { + return getToken(GoParser::CARET, 0); +} + +GoParser::PlusMinusOperationContext::PlusMinusOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::PlusMinusOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPlusMinusOperation(this); +} +void GoParser::PlusMinusOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPlusMinusOperation(this); +} +//----------------- RelationOperationContext ------------------------------------------------------------------ + +std::vector GoParser::RelationOperationContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::RelationOperationContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::RelationOperationContext::EQUALS() { + return getToken(GoParser::EQUALS, 0); +} + +tree::TerminalNode* GoParser::RelationOperationContext::NOT_EQUALS() { + return getToken(GoParser::NOT_EQUALS, 0); +} + +tree::TerminalNode* GoParser::RelationOperationContext::LESS() { + return getToken(GoParser::LESS, 0); +} + +tree::TerminalNode* GoParser::RelationOperationContext::LESS_OR_EQUALS() { + return getToken(GoParser::LESS_OR_EQUALS, 0); +} + +tree::TerminalNode* GoParser::RelationOperationContext::GREATER() { + return getToken(GoParser::GREATER, 0); +} + +tree::TerminalNode* GoParser::RelationOperationContext::GREATER_OR_EQUALS() { + return getToken(GoParser::GREATER_OR_EQUALS, 0); +} + +GoParser::RelationOperationContext::RelationOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::RelationOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterRelationOperation(this); +} +void GoParser::RelationOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitRelationOperation(this); +} +//----------------- MulDivOperationContext ------------------------------------------------------------------ + +std::vector GoParser::MulDivOperationContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::MulDivOperationContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::STAR() { + return getToken(GoParser::STAR, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::DIV() { + return getToken(GoParser::DIV, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::MOD() { + return getToken(GoParser::MOD, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::LSHIFT() { + return getToken(GoParser::LSHIFT, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::RSHIFT() { + return getToken(GoParser::RSHIFT, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::AMPERSAND() { + return getToken(GoParser::AMPERSAND, 0); +} + +tree::TerminalNode* GoParser::MulDivOperationContext::BIT_CLEAR() { + return getToken(GoParser::BIT_CLEAR, 0); +} + +GoParser::MulDivOperationContext::MulDivOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::MulDivOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMulDivOperation(this); +} +void GoParser::MulDivOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMulDivOperation(this); +} +//----------------- LogicalOrOperationContext ------------------------------------------------------------------ + +std::vector GoParser::LogicalOrOperationContext::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::LogicalOrOperationContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* GoParser::LogicalOrOperationContext::LOGICAL_OR() { + return getToken(GoParser::LOGICAL_OR, 0); +} + +GoParser::LogicalOrOperationContext::LogicalOrOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } + +void GoParser::LogicalOrOperationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLogicalOrOperation(this); +} +void GoParser::LogicalOrOperationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLogicalOrOperation(this); +} + +GoParser::ExpressionContext* GoParser::expression() { + return expression(0); +} + +GoParser::ExpressionContext* GoParser::expression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + GoParser::ExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + GoParser::ExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 140; + enterRecursionRule(_localctx, 140, GoParser::RuleExpression, precedence); + + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(748); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { + case 1: { + _localctx = _tracker.createInstance(_localctx); + _ctx = _localctx; + previousContext = _localctx; + + setState(745); + primaryExpr(0); + break; + } + + case 2: { + _localctx = _tracker.createInstance(_localctx); + _ctx = _localctx; + previousContext = _localctx; + setState(746); + antlrcpp::downCast(_localctx)->unary_op = _input->LT(1); + _la = _input->LA(1); + if (!(((((_la - 60) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 60)) & ((1ULL << (GoParser::EXCLAMATION - 60)) + | (1ULL << (GoParser::PLUS - 60)) + | (1ULL << (GoParser::MINUS - 60)) + | (1ULL << (GoParser::CARET - 60)) + | (1ULL << (GoParser::STAR - 60)) + | (1ULL << (GoParser::AMPERSAND - 60)) + | (1ULL << (GoParser::RECEIVE - 60)))) != 0))) { + antlrcpp::downCast(_localctx)->unary_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(747); + expression(6); + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(767); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 81, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + setState(765); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 80, _ctx)) { + case 1: { + auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); + _localctx = newContext; + pushNewRecursionContext(newContext, startState, RuleExpression); + setState(750); + + if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(751); + antlrcpp::downCast(_localctx)->mul_op = _input->LT(1); + _la = _input->LA(1); + if (!(((((_la - 55) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 55)) & ((1ULL << (GoParser::DIV - 55)) + | (1ULL << (GoParser::MOD - 55)) + | (1ULL << (GoParser::LSHIFT - 55)) + | (1ULL << (GoParser::RSHIFT - 55)) + | (1ULL << (GoParser::BIT_CLEAR - 55)) + | (1ULL << (GoParser::STAR - 55)) + | (1ULL << (GoParser::AMPERSAND - 55)))) != 0))) { + antlrcpp::downCast(_localctx)->mul_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(752); + expression(6); + break; + } + + case 2: { + auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); + _localctx = newContext; + pushNewRecursionContext(newContext, startState, RuleExpression); + setState(753); + + if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(754); + antlrcpp::downCast(_localctx)->add_op = _input->LT(1); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::OR) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0))) { + antlrcpp::downCast(_localctx)->add_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(755); + expression(5); + break; + } + + case 3: { + auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); + _localctx = newContext; + pushNewRecursionContext(newContext, startState, RuleExpression); + setState(756); + + if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(757); + antlrcpp::downCast(_localctx)->rel_op = _input->LT(1); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::EQUALS) + | (1ULL << GoParser::NOT_EQUALS) + | (1ULL << GoParser::LESS) + | (1ULL << GoParser::LESS_OR_EQUALS) + | (1ULL << GoParser::GREATER) + | (1ULL << GoParser::GREATER_OR_EQUALS))) != 0))) { + antlrcpp::downCast(_localctx)->rel_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(758); + expression(4); + break; + } + + case 4: { + auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); + _localctx = newContext; + pushNewRecursionContext(newContext, startState, RuleExpression); + setState(759); + + if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(760); + match(GoParser::LOGICAL_AND); + setState(761); + expression(3); + break; + } + + case 5: { + auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); + _localctx = newContext; + pushNewRecursionContext(newContext, startState, RuleExpression); + setState(762); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(763); + match(GoParser::LOGICAL_OR); + setState(764); + expression(2); + break; + } + + default: + break; + } + } + setState(769); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 81, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- PrimaryExprContext ------------------------------------------------------------------ + +GoParser::PrimaryExprContext::PrimaryExprContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::OperandContext* GoParser::PrimaryExprContext::operand() { + return getRuleContext(0); +} + +GoParser::ConversionContext* GoParser::PrimaryExprContext::conversion() { + return getRuleContext(0); +} + +GoParser::MethodExprContext* GoParser::PrimaryExprContext::methodExpr() { + return getRuleContext(0); +} + +GoParser::PrimaryExprContext* GoParser::PrimaryExprContext::primaryExpr() { + return getRuleContext(0); +} + +GoParser::IndexContext* GoParser::PrimaryExprContext::index() { + return getRuleContext(0); +} + +GoParser::Slice_Context* GoParser::PrimaryExprContext::slice_() { + return getRuleContext(0); +} + +GoParser::TypeAssertionContext* GoParser::PrimaryExprContext::typeAssertion() { + return getRuleContext(0); +} + +GoParser::ArgumentsContext* GoParser::PrimaryExprContext::arguments() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::PrimaryExprContext::DOT() { + return getToken(GoParser::DOT, 0); +} + +tree::TerminalNode* GoParser::PrimaryExprContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::PrimaryExprContext::getRuleIndex() const { + return GoParser::RulePrimaryExpr; +} + +void GoParser::PrimaryExprContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPrimaryExpr(this); +} + +void GoParser::PrimaryExprContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPrimaryExpr(this); +} + + +GoParser::PrimaryExprContext* GoParser::primaryExpr() { + return primaryExpr(0); +} + +GoParser::PrimaryExprContext* GoParser::primaryExpr(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + GoParser::PrimaryExprContext *_localctx = _tracker.createInstance(_ctx, parentState); + GoParser::PrimaryExprContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 142; + enterRecursionRule(_localctx, 142, GoParser::RulePrimaryExpr, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(774); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 82, _ctx)) { + case 1: { + setState(771); + operand(); + break; + } + + case 2: { + setState(772); + conversion(); + break; + } + + case 3: { + setState(773); + methodExpr(); + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(787); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 84, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RulePrimaryExpr); + setState(776); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(783); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 83, _ctx)) { + case 1: { + setState(777); + match(GoParser::DOT); + setState(778); + match(GoParser::IDENTIFIER); + break; + } + + case 2: { + setState(779); + index(); + break; + } + + case 3: { + setState(780); + slice_(); + break; + } + + case 4: { + setState(781); + typeAssertion(); + break; + } + + case 5: { + setState(782); + arguments(); + break; + } + + default: + break; + } + } + setState(789); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 84, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- ConversionContext ------------------------------------------------------------------ + +GoParser::ConversionContext::ConversionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::NonNamedTypeContext* GoParser::ConversionContext::nonNamedType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ConversionContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +GoParser::ExpressionContext* GoParser::ConversionContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ConversionContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +tree::TerminalNode* GoParser::ConversionContext::COMMA() { + return getToken(GoParser::COMMA, 0); +} + + +size_t GoParser::ConversionContext::getRuleIndex() const { + return GoParser::RuleConversion; +} + +void GoParser::ConversionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterConversion(this); +} + +void GoParser::ConversionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitConversion(this); +} + +GoParser::ConversionContext* GoParser::conversion() { + ConversionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 144, GoParser::RuleConversion); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(790); + nonNamedType(); + setState(791); + match(GoParser::L_PAREN); + setState(792); + expression(0); + setState(794); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::COMMA) { + setState(793); + match(GoParser::COMMA); + } + setState(796); + match(GoParser::R_PAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- NonNamedTypeContext ------------------------------------------------------------------ + +GoParser::NonNamedTypeContext::NonNamedTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::TypeLitContext* GoParser::NonNamedTypeContext::typeLit() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::NonNamedTypeContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +GoParser::NonNamedTypeContext* GoParser::NonNamedTypeContext::nonNamedType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::NonNamedTypeContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + + +size_t GoParser::NonNamedTypeContext::getRuleIndex() const { + return GoParser::RuleNonNamedType; +} + +void GoParser::NonNamedTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterNonNamedType(this); +} + +void GoParser::NonNamedTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitNonNamedType(this); +} + +GoParser::NonNamedTypeContext* GoParser::nonNamedType() { + NonNamedTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 146, GoParser::RuleNonNamedType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(803); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::L_BRACKET: + case GoParser::STAR: + case GoParser::RECEIVE: { + enterOuterAlt(_localctx, 1); + setState(798); + typeLit(); + break; + } + + case GoParser::L_PAREN: { + enterOuterAlt(_localctx, 2); + setState(799); + match(GoParser::L_PAREN); + setState(800); + nonNamedType(); + setState(801); + match(GoParser::R_PAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- OperandContext ------------------------------------------------------------------ + +GoParser::OperandContext::OperandContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::LiteralContext* GoParser::OperandContext::literal() { + return getRuleContext(0); +} + +GoParser::OperandNameContext* GoParser::OperandContext::operandName() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::OperandContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +GoParser::ExpressionContext* GoParser::OperandContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::OperandContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + + +size_t GoParser::OperandContext::getRuleIndex() const { + return GoParser::RuleOperand; +} + +void GoParser::OperandContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterOperand(this); +} + +void GoParser::OperandContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitOperand(this); +} + +GoParser::OperandContext* GoParser::operand() { + OperandContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 148, GoParser::RuleOperand); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(811); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(805); + literal(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(806); + operandName(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(807); + match(GoParser::L_PAREN); + setState(808); + expression(0); + setState(809); + match(GoParser::R_PAREN); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LiteralContext ------------------------------------------------------------------ + +GoParser::LiteralContext::LiteralContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::BasicLitContext* GoParser::LiteralContext::basicLit() { + return getRuleContext(0); +} + +GoParser::CompositeLitContext* GoParser::LiteralContext::compositeLit() { + return getRuleContext(0); +} + +GoParser::FunctionLitContext* GoParser::LiteralContext::functionLit() { + return getRuleContext(0); +} + + +size_t GoParser::LiteralContext::getRuleIndex() const { + return GoParser::RuleLiteral; +} + +void GoParser::LiteralContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLiteral(this); +} + +void GoParser::LiteralContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLiteral(this); +} + +GoParser::LiteralContext* GoParser::literal() { + LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 150, GoParser::RuleLiteral); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(816); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::NIL_LIT: + case GoParser::DECIMAL_LIT: + case GoParser::BINARY_LIT: + case GoParser::OCTAL_LIT: + case GoParser::HEX_LIT: + case GoParser::FLOAT_LIT: + case GoParser::IMAGINARY_LIT: + case GoParser::RUNE_LIT: + case GoParser::RAW_STRING_LIT: + case GoParser::INTERPRETED_STRING_LIT: { + enterOuterAlt(_localctx, 1); + setState(813); + basicLit(); + break; + } + + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::IDENTIFIER: + case GoParser::L_BRACKET: { + enterOuterAlt(_localctx, 2); + setState(814); + compositeLit(); + break; + } + + case GoParser::FUNC: { + enterOuterAlt(_localctx, 3); + setState(815); + functionLit(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BasicLitContext ------------------------------------------------------------------ + +GoParser::BasicLitContext::BasicLitContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::BasicLitContext::NIL_LIT() { + return getToken(GoParser::NIL_LIT, 0); +} + +GoParser::IntegerContext* GoParser::BasicLitContext::integer() { + return getRuleContext(0); +} + +GoParser::String_Context* GoParser::BasicLitContext::string_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::BasicLitContext::FLOAT_LIT() { + return getToken(GoParser::FLOAT_LIT, 0); +} + + +size_t GoParser::BasicLitContext::getRuleIndex() const { + return GoParser::RuleBasicLit; +} + +void GoParser::BasicLitContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBasicLit(this); +} + +void GoParser::BasicLitContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBasicLit(this); +} + +GoParser::BasicLitContext* GoParser::basicLit() { + BasicLitContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 152, GoParser::RuleBasicLit); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(822); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::NIL_LIT: { + enterOuterAlt(_localctx, 1); + setState(818); + match(GoParser::NIL_LIT); + break; + } + + case GoParser::DECIMAL_LIT: + case GoParser::BINARY_LIT: + case GoParser::OCTAL_LIT: + case GoParser::HEX_LIT: + case GoParser::IMAGINARY_LIT: + case GoParser::RUNE_LIT: { + enterOuterAlt(_localctx, 2); + setState(819); + integer(); + break; + } + + case GoParser::RAW_STRING_LIT: + case GoParser::INTERPRETED_STRING_LIT: { + enterOuterAlt(_localctx, 3); + setState(820); + string_(); + break; + } + + case GoParser::FLOAT_LIT: { + enterOuterAlt(_localctx, 4); + setState(821); + match(GoParser::FLOAT_LIT); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IntegerContext ------------------------------------------------------------------ + +GoParser::IntegerContext::IntegerContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::IntegerContext::DECIMAL_LIT() { + return getToken(GoParser::DECIMAL_LIT, 0); +} + +tree::TerminalNode* GoParser::IntegerContext::BINARY_LIT() { + return getToken(GoParser::BINARY_LIT, 0); +} + +tree::TerminalNode* GoParser::IntegerContext::OCTAL_LIT() { + return getToken(GoParser::OCTAL_LIT, 0); +} + +tree::TerminalNode* GoParser::IntegerContext::HEX_LIT() { + return getToken(GoParser::HEX_LIT, 0); +} + +tree::TerminalNode* GoParser::IntegerContext::IMAGINARY_LIT() { + return getToken(GoParser::IMAGINARY_LIT, 0); +} + +tree::TerminalNode* GoParser::IntegerContext::RUNE_LIT() { + return getToken(GoParser::RUNE_LIT, 0); +} + + +size_t GoParser::IntegerContext::getRuleIndex() const { + return GoParser::RuleInteger; +} + +void GoParser::IntegerContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterInteger(this); +} + +void GoParser::IntegerContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitInteger(this); +} + +GoParser::IntegerContext* GoParser::integer() { + IntegerContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 154, GoParser::RuleInteger); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(824); + _la = _input->LA(1); + if (!(((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (GoParser::DECIMAL_LIT - 67)) + | (1ULL << (GoParser::BINARY_LIT - 67)) + | (1ULL << (GoParser::OCTAL_LIT - 67)) + | (1ULL << (GoParser::HEX_LIT - 67)) + | (1ULL << (GoParser::IMAGINARY_LIT - 67)) + | (1ULL << (GoParser::RUNE_LIT - 67)))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- OperandNameContext ------------------------------------------------------------------ + +GoParser::OperandNameContext::OperandNameContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::OperandNameContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::OperandNameContext::getRuleIndex() const { + return GoParser::RuleOperandName; +} + +void GoParser::OperandNameContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterOperandName(this); +} + +void GoParser::OperandNameContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitOperandName(this); +} + +GoParser::OperandNameContext* GoParser::operandName() { + OperandNameContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 156, GoParser::RuleOperandName); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(826); + match(GoParser::IDENTIFIER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QualifiedIdentContext ------------------------------------------------------------------ + +GoParser::QualifiedIdentContext::QualifiedIdentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::QualifiedIdentContext::IDENTIFIER() { + return getTokens(GoParser::IDENTIFIER); +} + +tree::TerminalNode* GoParser::QualifiedIdentContext::IDENTIFIER(size_t i) { + return getToken(GoParser::IDENTIFIER, i); +} + +tree::TerminalNode* GoParser::QualifiedIdentContext::DOT() { + return getToken(GoParser::DOT, 0); +} + + +size_t GoParser::QualifiedIdentContext::getRuleIndex() const { + return GoParser::RuleQualifiedIdent; +} + +void GoParser::QualifiedIdentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQualifiedIdent(this); +} + +void GoParser::QualifiedIdentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQualifiedIdent(this); +} + +GoParser::QualifiedIdentContext* GoParser::qualifiedIdent() { + QualifiedIdentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 158, GoParser::RuleQualifiedIdent); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(828); + match(GoParser::IDENTIFIER); + setState(829); + match(GoParser::DOT); + setState(830); + match(GoParser::IDENTIFIER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CompositeLitContext ------------------------------------------------------------------ + +GoParser::CompositeLitContext::CompositeLitContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::LiteralTypeContext* GoParser::CompositeLitContext::literalType() { + return getRuleContext(0); +} + +GoParser::LiteralValueContext* GoParser::CompositeLitContext::literalValue() { + return getRuleContext(0); +} + + +size_t GoParser::CompositeLitContext::getRuleIndex() const { + return GoParser::RuleCompositeLit; +} + +void GoParser::CompositeLitContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCompositeLit(this); +} + +void GoParser::CompositeLitContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCompositeLit(this); +} + +GoParser::CompositeLitContext* GoParser::compositeLit() { + CompositeLitContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 160, GoParser::RuleCompositeLit); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(832); + literalType(); + setState(833); + literalValue(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LiteralTypeContext ------------------------------------------------------------------ + +GoParser::LiteralTypeContext::LiteralTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::StructTypeContext* GoParser::LiteralTypeContext::structType() { + return getRuleContext(0); +} + +GoParser::ArrayTypeContext* GoParser::LiteralTypeContext::arrayType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::LiteralTypeContext::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +tree::TerminalNode* GoParser::LiteralTypeContext::ELLIPSIS() { + return getToken(GoParser::ELLIPSIS, 0); +} + +tree::TerminalNode* GoParser::LiteralTypeContext::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + +GoParser::ElementTypeContext* GoParser::LiteralTypeContext::elementType() { + return getRuleContext(0); +} + +GoParser::SliceTypeContext* GoParser::LiteralTypeContext::sliceType() { + return getRuleContext(0); +} + +GoParser::MapTypeContext* GoParser::LiteralTypeContext::mapType() { + return getRuleContext(0); +} + +GoParser::TypeNameContext* GoParser::LiteralTypeContext::typeName() { + return getRuleContext(0); +} + + +size_t GoParser::LiteralTypeContext::getRuleIndex() const { + return GoParser::RuleLiteralType; +} + +void GoParser::LiteralTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLiteralType(this); +} + +void GoParser::LiteralTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLiteralType(this); +} + +GoParser::LiteralTypeContext* GoParser::literalType() { + LiteralTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 162, GoParser::RuleLiteralType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(844); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 90, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(835); + structType(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(836); + arrayType(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(837); + match(GoParser::L_BRACKET); + setState(838); + match(GoParser::ELLIPSIS); + setState(839); + match(GoParser::R_BRACKET); + setState(840); + elementType(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(841); + sliceType(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(842); + mapType(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(843); + typeName(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LiteralValueContext ------------------------------------------------------------------ + +GoParser::LiteralValueContext::LiteralValueContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::LiteralValueContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::LiteralValueContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +GoParser::ElementListContext* GoParser::LiteralValueContext::elementList() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::LiteralValueContext::COMMA() { + return getToken(GoParser::COMMA, 0); +} + + +size_t GoParser::LiteralValueContext::getRuleIndex() const { + return GoParser::RuleLiteralValue; +} + +void GoParser::LiteralValueContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLiteralValue(this); +} + +void GoParser::LiteralValueContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLiteralValue(this); +} + +GoParser::LiteralValueContext* GoParser::literalValue() { + LiteralValueContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 164, GoParser::RuleLiteralValue); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(846); + match(GoParser::L_CURLY); + setState(851); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_CURLY) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(847); + elementList(); + setState(849); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::COMMA) { + setState(848); + match(GoParser::COMMA); + } + } + setState(853); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ElementListContext ------------------------------------------------------------------ + +GoParser::ElementListContext::ElementListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector GoParser::ElementListContext::keyedElement() { + return getRuleContexts(); +} + +GoParser::KeyedElementContext* GoParser::ElementListContext::keyedElement(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::ElementListContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::ElementListContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::ElementListContext::getRuleIndex() const { + return GoParser::RuleElementList; +} + +void GoParser::ElementListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterElementList(this); +} + +void GoParser::ElementListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitElementList(this); +} + +GoParser::ElementListContext* GoParser::elementList() { + ElementListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 166, GoParser::RuleElementList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(855); + keyedElement(); + setState(860); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 93, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(856); + match(GoParser::COMMA); + setState(857); + keyedElement(); + } + setState(862); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 93, _ctx); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- KeyedElementContext ------------------------------------------------------------------ + +GoParser::KeyedElementContext::KeyedElementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ElementContext* GoParser::KeyedElementContext::element() { + return getRuleContext(0); +} + +GoParser::KeyContext* GoParser::KeyedElementContext::key() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::KeyedElementContext::COLON() { + return getToken(GoParser::COLON, 0); +} + + +size_t GoParser::KeyedElementContext::getRuleIndex() const { + return GoParser::RuleKeyedElement; +} + +void GoParser::KeyedElementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterKeyedElement(this); +} + +void GoParser::KeyedElementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitKeyedElement(this); +} + +GoParser::KeyedElementContext* GoParser::keyedElement() { + KeyedElementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 168, GoParser::RuleKeyedElement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(866); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 94, _ctx)) { + case 1: { + setState(863); + key(); + setState(864); + match(GoParser::COLON); + break; + } + + default: + break; + } + setState(868); + element(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- KeyContext ------------------------------------------------------------------ + +GoParser::KeyContext::KeyContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::KeyContext::expression() { + return getRuleContext(0); +} + +GoParser::LiteralValueContext* GoParser::KeyContext::literalValue() { + return getRuleContext(0); +} + + +size_t GoParser::KeyContext::getRuleIndex() const { + return GoParser::RuleKey; +} + +void GoParser::KeyContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterKey(this); +} + +void GoParser::KeyContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitKey(this); +} + +GoParser::KeyContext* GoParser::key() { + KeyContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 170, GoParser::RuleKey); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(872); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::NIL_LIT: + case GoParser::IDENTIFIER: + case GoParser::L_PAREN: + case GoParser::L_BRACKET: + case GoParser::EXCLAMATION: + case GoParser::PLUS: + case GoParser::MINUS: + case GoParser::CARET: + case GoParser::STAR: + case GoParser::AMPERSAND: + case GoParser::RECEIVE: + case GoParser::DECIMAL_LIT: + case GoParser::BINARY_LIT: + case GoParser::OCTAL_LIT: + case GoParser::HEX_LIT: + case GoParser::FLOAT_LIT: + case GoParser::IMAGINARY_LIT: + case GoParser::RUNE_LIT: + case GoParser::RAW_STRING_LIT: + case GoParser::INTERPRETED_STRING_LIT: { + enterOuterAlt(_localctx, 1); + setState(870); + expression(0); + break; + } + + case GoParser::L_CURLY: { + enterOuterAlt(_localctx, 2); + setState(871); + literalValue(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ElementContext ------------------------------------------------------------------ + +GoParser::ElementContext::ElementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::ExpressionContext* GoParser::ElementContext::expression() { + return getRuleContext(0); +} + +GoParser::LiteralValueContext* GoParser::ElementContext::literalValue() { + return getRuleContext(0); +} + + +size_t GoParser::ElementContext::getRuleIndex() const { + return GoParser::RuleElement; +} + +void GoParser::ElementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterElement(this); +} + +void GoParser::ElementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitElement(this); +} + +GoParser::ElementContext* GoParser::element() { + ElementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 172, GoParser::RuleElement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(876); + _errHandler->sync(this); + switch (_input->LA(1)) { + case GoParser::FUNC: + case GoParser::INTERFACE: + case GoParser::MAP: + case GoParser::STRUCT: + case GoParser::CHAN: + case GoParser::NIL_LIT: + case GoParser::IDENTIFIER: + case GoParser::L_PAREN: + case GoParser::L_BRACKET: + case GoParser::EXCLAMATION: + case GoParser::PLUS: + case GoParser::MINUS: + case GoParser::CARET: + case GoParser::STAR: + case GoParser::AMPERSAND: + case GoParser::RECEIVE: + case GoParser::DECIMAL_LIT: + case GoParser::BINARY_LIT: + case GoParser::OCTAL_LIT: + case GoParser::HEX_LIT: + case GoParser::FLOAT_LIT: + case GoParser::IMAGINARY_LIT: + case GoParser::RUNE_LIT: + case GoParser::RAW_STRING_LIT: + case GoParser::INTERPRETED_STRING_LIT: { + enterOuterAlt(_localctx, 1); + setState(874); + expression(0); + break; + } + + case GoParser::L_CURLY: { + enterOuterAlt(_localctx, 2); + setState(875); + literalValue(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- StructTypeContext ------------------------------------------------------------------ + +GoParser::StructTypeContext::StructTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::StructTypeContext::STRUCT() { + return getToken(GoParser::STRUCT, 0); +} + +tree::TerminalNode* GoParser::StructTypeContext::L_CURLY() { + return getToken(GoParser::L_CURLY, 0); +} + +tree::TerminalNode* GoParser::StructTypeContext::R_CURLY() { + return getToken(GoParser::R_CURLY, 0); +} + +std::vector GoParser::StructTypeContext::fieldDecl() { + return getRuleContexts(); +} + +GoParser::FieldDeclContext* GoParser::StructTypeContext::fieldDecl(size_t i) { + return getRuleContext(i); +} + +std::vector GoParser::StructTypeContext::eoss() { + return getRuleContexts(); +} + +GoParser::EossContext* GoParser::StructTypeContext::eoss(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::StructTypeContext::getRuleIndex() const { + return GoParser::RuleStructType; +} + +void GoParser::StructTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterStructType(this); +} + +void GoParser::StructTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitStructType(this); +} + +GoParser::StructTypeContext* GoParser::structType() { + StructTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 174, GoParser::RuleStructType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(878); + match(GoParser::STRUCT); + setState(879); + match(GoParser::L_CURLY); + setState(885); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == GoParser::IDENTIFIER + + || _la == GoParser::STAR) { + setState(880); + fieldDecl(); + setState(881); + eoss(); + setState(887); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(888); + match(GoParser::R_CURLY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- FieldDeclContext ------------------------------------------------------------------ + +GoParser::FieldDeclContext::FieldDeclContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::IdentifierListContext* GoParser::FieldDeclContext::identifierList() { + return getRuleContext(0); +} + +GoParser::Type_Context* GoParser::FieldDeclContext::type_() { + return getRuleContext(0); +} + +GoParser::EmbeddedFieldContext* GoParser::FieldDeclContext::embeddedField() { + return getRuleContext(0); +} + +GoParser::String_Context* GoParser::FieldDeclContext::string_() { + return getRuleContext(0); +} + + +size_t GoParser::FieldDeclContext::getRuleIndex() const { + return GoParser::RuleFieldDecl; +} + +void GoParser::FieldDeclContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFieldDecl(this); +} + +void GoParser::FieldDeclContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFieldDecl(this); +} + +GoParser::FieldDeclContext* GoParser::fieldDecl() { + FieldDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 176, GoParser::RuleFieldDecl); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(894); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 98, _ctx)) { + case 1: { + setState(890); + identifierList(); + setState(891); + type_(); + break; + } + + case 2: { + setState(893); + embeddedField(); + break; + } + + default: + break; + } + setState(897); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::RAW_STRING_LIT + + || _la == GoParser::INTERPRETED_STRING_LIT) { + setState(896); + antlrcpp::downCast(_localctx)->tag = string_(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- String_Context ------------------------------------------------------------------ + +GoParser::String_Context::String_Context(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::String_Context::RAW_STRING_LIT() { + return getToken(GoParser::RAW_STRING_LIT, 0); +} + +tree::TerminalNode* GoParser::String_Context::INTERPRETED_STRING_LIT() { + return getToken(GoParser::INTERPRETED_STRING_LIT, 0); +} + + +size_t GoParser::String_Context::getRuleIndex() const { + return GoParser::RuleString_; +} + +void GoParser::String_Context::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterString_(this); +} + +void GoParser::String_Context::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitString_(this); +} + +GoParser::String_Context* GoParser::string_() { + String_Context *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 178, GoParser::RuleString_); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(899); + _la = _input->LA(1); + if (!(_la == GoParser::RAW_STRING_LIT + + || _la == GoParser::INTERPRETED_STRING_LIT)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- EmbeddedFieldContext ------------------------------------------------------------------ + +GoParser::EmbeddedFieldContext::EmbeddedFieldContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::TypeNameContext* GoParser::EmbeddedFieldContext::typeName() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::EmbeddedFieldContext::STAR() { + return getToken(GoParser::STAR, 0); +} + + +size_t GoParser::EmbeddedFieldContext::getRuleIndex() const { + return GoParser::RuleEmbeddedField; +} + +void GoParser::EmbeddedFieldContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterEmbeddedField(this); +} + +void GoParser::EmbeddedFieldContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitEmbeddedField(this); +} + +GoParser::EmbeddedFieldContext* GoParser::embeddedField() { + EmbeddedFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 180, GoParser::RuleEmbeddedField); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(902); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::STAR) { + setState(901); + match(GoParser::STAR); + } + setState(904); + typeName(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- FunctionLitContext ------------------------------------------------------------------ + +GoParser::FunctionLitContext::FunctionLitContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::FunctionLitContext::FUNC() { + return getToken(GoParser::FUNC, 0); +} + +GoParser::SignatureContext* GoParser::FunctionLitContext::signature() { + return getRuleContext(0); +} + +GoParser::BlockContext* GoParser::FunctionLitContext::block() { + return getRuleContext(0); +} + + +size_t GoParser::FunctionLitContext::getRuleIndex() const { + return GoParser::RuleFunctionLit; +} + +void GoParser::FunctionLitContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFunctionLit(this); +} + +void GoParser::FunctionLitContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFunctionLit(this); +} + +GoParser::FunctionLitContext* GoParser::functionLit() { + FunctionLitContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 182, GoParser::RuleFunctionLit); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(906); + match(GoParser::FUNC); + setState(907); + signature(); + setState(908); + block(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IndexContext ------------------------------------------------------------------ + +GoParser::IndexContext::IndexContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::IndexContext::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +GoParser::ExpressionContext* GoParser::IndexContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::IndexContext::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + + +size_t GoParser::IndexContext::getRuleIndex() const { + return GoParser::RuleIndex; +} + +void GoParser::IndexContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIndex(this); +} + +void GoParser::IndexContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIndex(this); +} + +GoParser::IndexContext* GoParser::index() { + IndexContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 184, GoParser::RuleIndex); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(910); + match(GoParser::L_BRACKET); + setState(911); + expression(0); + setState(912); + match(GoParser::R_BRACKET); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Slice_Context ------------------------------------------------------------------ + +GoParser::Slice_Context::Slice_Context(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::Slice_Context::L_BRACKET() { + return getToken(GoParser::L_BRACKET, 0); +} + +tree::TerminalNode* GoParser::Slice_Context::R_BRACKET() { + return getToken(GoParser::R_BRACKET, 0); +} + +std::vector GoParser::Slice_Context::COLON() { + return getTokens(GoParser::COLON); +} + +tree::TerminalNode* GoParser::Slice_Context::COLON(size_t i) { + return getToken(GoParser::COLON, i); +} + +std::vector GoParser::Slice_Context::expression() { + return getRuleContexts(); +} + +GoParser::ExpressionContext* GoParser::Slice_Context::expression(size_t i) { + return getRuleContext(i); +} + + +size_t GoParser::Slice_Context::getRuleIndex() const { + return GoParser::RuleSlice_; +} + +void GoParser::Slice_Context::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSlice_(this); +} + +void GoParser::Slice_Context::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSlice_(this); +} + +GoParser::Slice_Context* GoParser::slice_() { + Slice_Context *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 186, GoParser::RuleSlice_); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(914); + match(GoParser::L_BRACKET); + setState(930); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 104, _ctx)) { + case 1: { + setState(916); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(915); + expression(0); + } + setState(918); + match(GoParser::COLON); + setState(920); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(919); + expression(0); + } + break; + } + + case 2: { + setState(923); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(922); + expression(0); + } + setState(925); + match(GoParser::COLON); + setState(926); + expression(0); + setState(927); + match(GoParser::COLON); + setState(928); + expression(0); + break; + } + + default: + break; + } + setState(932); + match(GoParser::R_BRACKET); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TypeAssertionContext ------------------------------------------------------------------ + +GoParser::TypeAssertionContext::TypeAssertionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::TypeAssertionContext::DOT() { + return getToken(GoParser::DOT, 0); +} + +tree::TerminalNode* GoParser::TypeAssertionContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +GoParser::Type_Context* GoParser::TypeAssertionContext::type_() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::TypeAssertionContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + + +size_t GoParser::TypeAssertionContext::getRuleIndex() const { + return GoParser::RuleTypeAssertion; +} + +void GoParser::TypeAssertionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTypeAssertion(this); +} + +void GoParser::TypeAssertionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTypeAssertion(this); +} + +GoParser::TypeAssertionContext* GoParser::typeAssertion() { + TypeAssertionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 188, GoParser::RuleTypeAssertion); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(934); + match(GoParser::DOT); + setState(935); + match(GoParser::L_PAREN); + setState(936); + type_(); + setState(937); + match(GoParser::R_PAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ArgumentsContext ------------------------------------------------------------------ + +GoParser::ArgumentsContext::ArgumentsContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::ArgumentsContext::L_PAREN() { + return getToken(GoParser::L_PAREN, 0); +} + +tree::TerminalNode* GoParser::ArgumentsContext::R_PAREN() { + return getToken(GoParser::R_PAREN, 0); +} + +GoParser::ExpressionListContext* GoParser::ArgumentsContext::expressionList() { + return getRuleContext(0); +} + +GoParser::NonNamedTypeContext* GoParser::ArgumentsContext::nonNamedType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::ArgumentsContext::ELLIPSIS() { + return getToken(GoParser::ELLIPSIS, 0); +} + +std::vector GoParser::ArgumentsContext::COMMA() { + return getTokens(GoParser::COMMA); +} + +tree::TerminalNode* GoParser::ArgumentsContext::COMMA(size_t i) { + return getToken(GoParser::COMMA, i); +} + + +size_t GoParser::ArgumentsContext::getRuleIndex() const { + return GoParser::RuleArguments; +} + +void GoParser::ArgumentsContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterArguments(this); +} + +void GoParser::ArgumentsContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitArguments(this); +} + +GoParser::ArgumentsContext* GoParser::arguments() { + ArgumentsContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 190, GoParser::RuleArguments); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(939); + match(GoParser::L_PAREN); + setState(954); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::FUNC) + | (1ULL << GoParser::INTERFACE) + | (1ULL << GoParser::MAP) + | (1ULL << GoParser::STRUCT) + | (1ULL << GoParser::CHAN) + | (1ULL << GoParser::NIL_LIT) + | (1ULL << GoParser::IDENTIFIER) + | (1ULL << GoParser::L_PAREN) + | (1ULL << GoParser::L_BRACKET) + | (1ULL << GoParser::EXCLAMATION) + | (1ULL << GoParser::PLUS) + | (1ULL << GoParser::MINUS) + | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) + | (1ULL << (GoParser::AMPERSAND - 64)) + | (1ULL << (GoParser::RECEIVE - 64)) + | (1ULL << (GoParser::DECIMAL_LIT - 64)) + | (1ULL << (GoParser::BINARY_LIT - 64)) + | (1ULL << (GoParser::OCTAL_LIT - 64)) + | (1ULL << (GoParser::HEX_LIT - 64)) + | (1ULL << (GoParser::FLOAT_LIT - 64)) + | (1ULL << (GoParser::IMAGINARY_LIT - 64)) + | (1ULL << (GoParser::RUNE_LIT - 64)) + | (1ULL << (GoParser::RAW_STRING_LIT - 64)) + | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { + setState(946); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) { + case 1: { + setState(940); + expressionList(); + break; + } + + case 2: { + setState(941); + nonNamedType(); + setState(944); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 105, _ctx)) { + case 1: { + setState(942); + match(GoParser::COMMA); + setState(943); + expressionList(); + break; + } + + default: + break; + } + break; + } + + default: + break; + } + setState(949); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::ELLIPSIS) { + setState(948); + match(GoParser::ELLIPSIS); + } + setState(952); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == GoParser::COMMA) { + setState(951); + match(GoParser::COMMA); + } + } + setState(956); + match(GoParser::R_PAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- MethodExprContext ------------------------------------------------------------------ + +GoParser::MethodExprContext::MethodExprContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::NonNamedTypeContext* GoParser::MethodExprContext::nonNamedType() { + return getRuleContext(0); +} + +tree::TerminalNode* GoParser::MethodExprContext::DOT() { + return getToken(GoParser::DOT, 0); +} + +tree::TerminalNode* GoParser::MethodExprContext::IDENTIFIER() { + return getToken(GoParser::IDENTIFIER, 0); +} + + +size_t GoParser::MethodExprContext::getRuleIndex() const { + return GoParser::RuleMethodExpr; +} + +void GoParser::MethodExprContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMethodExpr(this); +} + +void GoParser::MethodExprContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMethodExpr(this); +} + +GoParser::MethodExprContext* GoParser::methodExpr() { + MethodExprContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 192, GoParser::RuleMethodExpr); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(958); + nonNamedType(); + setState(959); + match(GoParser::DOT); + setState(960); + match(GoParser::IDENTIFIER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ReceiverTypeContext ------------------------------------------------------------------ + +GoParser::ReceiverTypeContext::ReceiverTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +GoParser::Type_Context* GoParser::ReceiverTypeContext::type_() { + return getRuleContext(0); +} + + +size_t GoParser::ReceiverTypeContext::getRuleIndex() const { + return GoParser::RuleReceiverType; +} + +void GoParser::ReceiverTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterReceiverType(this); +} + +void GoParser::ReceiverTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitReceiverType(this); +} + +GoParser::ReceiverTypeContext* GoParser::receiverType() { + ReceiverTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 194, GoParser::RuleReceiverType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(962); + type_(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- EossContext ------------------------------------------------------------------ + +GoParser::EossContext::EossContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* GoParser::EossContext::SEMI() { + return getToken(GoParser::SEMI, 0); +} + +tree::TerminalNode* GoParser::EossContext::EOSSS() { + return getToken(GoParser::EOSSS, 0); +} + +tree::TerminalNode* GoParser::EossContext::HUANHANG() { + return getToken(GoParser::HUANHANG, 0); +} + +tree::TerminalNode* GoParser::EossContext::HUANHANGG() { + return getToken(GoParser::HUANHANGG, 0); +} + + +size_t GoParser::EossContext::getRuleIndex() const { + return GoParser::RuleEoss; +} + +void GoParser::EossContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterEoss(this); +} + +void GoParser::EossContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitEoss(this); +} + +GoParser::EossContext* GoParser::eoss() { + EossContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 196, GoParser::RuleEoss); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(964); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << GoParser::SEMI) + | (1ULL << GoParser::HUANHANG) + | (1ULL << GoParser::HUANHANGG) + | (1ULL << GoParser::EOSSS))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +bool GoParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { + switch (ruleIndex) { + case 70: return expressionSempred(antlrcpp::downCast(context), predicateIndex); + case 71: return primaryExprSempred(antlrcpp::downCast(context), predicateIndex); + + default: + break; + } + return true; +} + +bool GoParser::expressionSempred(ExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 0: return precpred(_ctx, 5); + case 1: return precpred(_ctx, 4); + case 2: return precpred(_ctx, 3); + case 3: return precpred(_ctx, 2); + case 4: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool GoParser::primaryExprSempred(PrimaryExprContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 5: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +// Static vars and initialization. +std::vector GoParser::_decisionToDFA; +atn::PredictionContextCache GoParser::_sharedContextCache; + +// We own the ATN which in turn owns the ATN states. +atn::ATN GoParser::_atn; +std::vector GoParser::_serializedATN; + +std::vector GoParser::_ruleNames = { + "sourceFile", "packageClause", "importDecl", "importSpec", "importPath", + "declaration", "constDecl", "constSpec", "identifierList", "expressionList", + "typeDecl", "typeSpec", "functionDecl", "methodDecl", "receiver", "varDecl", + "varSpec", "block", "statementList", "statement", "simpleStmt", "expressionStmt", + "sendStmt", "incDecStmt", "assignment", "assign_op", "shortVarDecl", "emptyStmt", + "labeledStmt", "returnStmt", "breakStmt", "continueStmt", "gotoStmt", + "fallthroughStmt", "deferStmt", "ifStmt", "switchStmt", "exprSwitchStmt", + "exprCaseClause", "exprSwitchCase", "typeSwitchStmt", "typeSwitchGuard", + "typeCaseClause", "typeSwitchCase", "typeList", "selectStmt", "commClause", + "commCase", "recvStmt", "forStmt", "forClause", "rangeClause", "goStmt", + "type_", "typeName", "typeLit", "arrayType", "arrayLength", "elementType", + "pointerType", "interfaceType", "sliceType", "mapType", "channelType", + "methodSpec", "functionType", "signature", "result", "parameters", "parameterDecl", + "expression", "primaryExpr", "conversion", "nonNamedType", "operand", + "literal", "basicLit", "integer", "operandName", "qualifiedIdent", "compositeLit", + "literalType", "literalValue", "elementList", "keyedElement", "key", "element", + "structType", "fieldDecl", "string_", "embeddedField", "functionLit", + "index", "slice_", "typeAssertion", "arguments", "methodExpr", "receiverType", + "eoss" +}; + +std::vector GoParser::_literalNames = { + "", "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", + "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", + "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", + "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", + "", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "'\n'", + "'\r\n'", "':'", "'.'", "'++'", "'--'", "':='", "'...'", "", "'||'", "'&&'", + "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", + "'>>'", "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'" +}; + +std::vector GoParser::_symbolicNames = { + "", "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", + "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG", + "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", + "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", + "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD", + "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET", + "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", + "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "IMAGINARY_LIT", + "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE", + "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT", + "TERMINATOR", "LINE_COMMENT", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI" +}; + +dfa::Vocabulary GoParser::_vocabulary(_literalNames, _symbolicNames); + +std::vector GoParser::_tokenNames; + +GoParser::Initializer::Initializer() { + for (size_t i = 0; i < _symbolicNames.size(); ++i) { + std::string name = _vocabulary.getLiteralName(i); + if (name.empty()) { + name = _vocabulary.getSymbolicName(i); + } + + if (name.empty()) { + _tokenNames.push_back(""); + } else { + _tokenNames.push_back(name); + } + } + + static const uint16_t serializedATNSegment0[] = { + 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, + 0x3, 0x5b, 0x3c9, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, + 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, + 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, + 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, + 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, + 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, + 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, + 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, + 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, + 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, + 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, + 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, + 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, + 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, + 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, + 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, + 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, + 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, + 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, + 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, + 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, + 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, + 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, + 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, + 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, + 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, + 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, + 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, + 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, + 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, + 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, + 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, + 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x3, 0x2, + 0x3, 0x2, 0x7, 0x2, 0xcb, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xce, 0xb, + 0x2, 0x3, 0x2, 0x3, 0x2, 0x7, 0x2, 0xd2, 0xa, 0x2, 0xc, 0x2, 0xe, + 0x2, 0xd5, 0xb, 0x2, 0x7, 0x2, 0xd7, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, + 0xda, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x5, 0x2, 0xdf, 0xa, + 0x2, 0x3, 0x2, 0x7, 0x2, 0xe2, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xe5, + 0xb, 0x2, 0x7, 0x2, 0xe7, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xea, 0xb, + 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, + 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x7, 0x4, 0xf7, + 0xa, 0x4, 0xc, 0x4, 0xe, 0x4, 0xfa, 0xb, 0x4, 0x3, 0x4, 0x5, 0x4, + 0xfd, 0xa, 0x4, 0x3, 0x5, 0x5, 0x5, 0x100, 0xa, 0x5, 0x3, 0x5, 0x3, + 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x5, 0x7, + 0x109, 0xa, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, + 0x3, 0x8, 0x7, 0x8, 0x111, 0xa, 0x8, 0xc, 0x8, 0xe, 0x8, 0x114, 0xb, + 0x8, 0x3, 0x8, 0x5, 0x8, 0x117, 0xa, 0x8, 0x3, 0x9, 0x3, 0x9, 0x5, + 0x9, 0x11b, 0xa, 0x9, 0x3, 0x9, 0x3, 0x9, 0x5, 0x9, 0x11f, 0xa, 0x9, + 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x7, 0xa, 0x124, 0xa, 0xa, 0xc, 0xa, + 0xe, 0xa, 0x127, 0xb, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x7, 0xb, + 0x12c, 0xa, 0xb, 0xc, 0xb, 0xe, 0xb, 0x12f, 0xb, 0xb, 0x3, 0xc, 0x3, + 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x7, 0xc, 0x137, 0xa, + 0xc, 0xc, 0xc, 0xe, 0xc, 0x13a, 0xb, 0xc, 0x3, 0xc, 0x5, 0xc, 0x13d, + 0xa, 0xc, 0x3, 0xd, 0x3, 0xd, 0x5, 0xd, 0x141, 0xa, 0xd, 0x3, 0xd, + 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x5, 0xe, 0x149, + 0xa, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x5, + 0xf, 0x150, 0xa, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, + 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x7, 0x11, 0x15a, 0xa, + 0x11, 0xc, 0x11, 0xe, 0x11, 0x15d, 0xb, 0x11, 0x3, 0x11, 0x5, 0x11, + 0x160, 0xa, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, + 0x12, 0x166, 0xa, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x16a, 0xa, + 0x12, 0x3, 0x13, 0x3, 0x13, 0x7, 0x13, 0x16e, 0xa, 0x13, 0xc, 0x13, + 0xe, 0x13, 0x171, 0xb, 0x13, 0x3, 0x13, 0x5, 0x13, 0x174, 0xa, 0x13, + 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x6, 0x14, 0x17a, 0xa, + 0x14, 0xd, 0x14, 0xe, 0x14, 0x17b, 0x6, 0x14, 0x17e, 0xa, 0x14, 0xd, + 0x14, 0xe, 0x14, 0x17f, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, + 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, + 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, + 0x191, 0xa, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x16, 0x5, 0x16, 0x198, 0xa, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, + 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, + 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x5, 0x1b, + 0x1a8, 0xa, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, + 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, + 0x1e, 0x5, 0x1e, 0x1b5, 0xa, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x5, 0x1f, + 0x1b9, 0xa, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x5, 0x20, 0x1bd, 0xa, 0x20, + 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1c1, 0xa, 0x21, 0x3, 0x22, 0x3, + 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x5, 0x25, 0x1d4, 0xa, 0x25, + 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x5, 0x25, 0x1da, 0xa, + 0x25, 0x5, 0x25, 0x1dc, 0xa, 0x25, 0x3, 0x26, 0x3, 0x26, 0x5, 0x26, + 0x1e0, 0xa, 0x26, 0x3, 0x27, 0x3, 0x27, 0x5, 0x27, 0x1e4, 0xa, 0x27, + 0x3, 0x27, 0x5, 0x27, 0x1e7, 0xa, 0x27, 0x3, 0x27, 0x3, 0x27, 0x5, + 0x27, 0x1eb, 0xa, 0x27, 0x5, 0x27, 0x1ed, 0xa, 0x27, 0x3, 0x27, 0x3, + 0x27, 0x7, 0x27, 0x1f1, 0xa, 0x27, 0xc, 0x27, 0xe, 0x27, 0x1f4, 0xb, + 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x5, + 0x28, 0x1fb, 0xa, 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x5, 0x29, + 0x200, 0xa, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, + 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x5, 0x2a, 0x20b, + 0xa, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x7, 0x2a, 0x20f, 0xa, 0x2a, 0xc, + 0x2a, 0xe, 0x2a, 0x212, 0xb, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, + 0x3, 0x2b, 0x5, 0x2b, 0x218, 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, + 0x2c, 0x5, 0x2c, 0x223, 0xa, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, + 0x5, 0x2d, 0x228, 0xa, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x22c, + 0xa, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x231, 0xa, + 0x2e, 0x7, 0x2e, 0x233, 0xa, 0x2e, 0xc, 0x2e, 0xe, 0x2e, 0x236, 0xb, + 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x7, 0x2f, 0x23b, 0xa, 0x2f, + 0xc, 0x2f, 0xe, 0x2f, 0x23e, 0xb, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, + 0x30, 0x3, 0x30, 0x3, 0x30, 0x5, 0x30, 0x245, 0xa, 0x30, 0x3, 0x31, + 0x3, 0x31, 0x3, 0x31, 0x5, 0x31, 0x24a, 0xa, 0x31, 0x3, 0x31, 0x5, + 0x31, 0x24d, 0xa, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, + 0x3, 0x32, 0x3, 0x32, 0x5, 0x32, 0x255, 0xa, 0x32, 0x3, 0x32, 0x3, + 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x5, 0x33, 0x25d, + 0xa, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x5, 0x34, 0x262, 0xa, + 0x34, 0x3, 0x34, 0x3, 0x34, 0x5, 0x34, 0x266, 0xa, 0x34, 0x3, 0x34, + 0x3, 0x34, 0x5, 0x34, 0x26a, 0xa, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, + 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x5, 0x35, 0x272, 0xa, 0x35, + 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, + 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, + 0x5, 0x37, 0x280, 0xa, 0x37, 0x3, 0x38, 0x3, 0x38, 0x5, 0x38, 0x284, + 0xa, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, + 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x5, 0x39, 0x28e, 0xa, 0x39, 0x3, + 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, + 0x3b, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, + 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x5, 0x3e, 0x2a0, 0xa, 0x3e, + 0x3, 0x3e, 0x3, 0x3e, 0x7, 0x3e, 0x2a4, 0xa, 0x3e, 0xc, 0x3e, 0xe, + 0x3e, 0x2a7, 0xb, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, + 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, + 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, + 0x3, 0x41, 0x5, 0x41, 0x2ba, 0xa, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, + 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x5, + 0x42, 0x2c4, 0xa, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x44, + 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x5, 0x44, 0x2cd, 0xa, 0x44, 0x3, + 0x45, 0x3, 0x45, 0x5, 0x45, 0x2d1, 0xa, 0x45, 0x3, 0x46, 0x3, 0x46, + 0x3, 0x46, 0x3, 0x46, 0x7, 0x46, 0x2d7, 0xa, 0x46, 0xc, 0x46, 0xe, + 0x46, 0x2da, 0xb, 0x46, 0x3, 0x46, 0x5, 0x46, 0x2dd, 0xa, 0x46, 0x5, + 0x46, 0x2df, 0xa, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x5, 0x47, + 0x2e4, 0xa, 0x47, 0x3, 0x47, 0x5, 0x47, 0x2e7, 0xa, 0x47, 0x3, 0x47, + 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x5, 0x48, + 0x2ef, 0xa, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, + 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, + 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x7, 0x48, 0x300, + 0xa, 0x48, 0xc, 0x48, 0xe, 0x48, 0x303, 0xb, 0x48, 0x3, 0x49, 0x3, + 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, 0x49, 0x309, 0xa, 0x49, 0x3, 0x49, + 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, + 0x5, 0x49, 0x312, 0xa, 0x49, 0x7, 0x49, 0x314, 0xa, 0x49, 0xc, 0x49, + 0xe, 0x49, 0x317, 0xb, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, + 0x4a, 0x5, 0x4a, 0x31d, 0xa, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, + 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x5, 0x4b, 0x326, 0xa, + 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, + 0x4c, 0x5, 0x4c, 0x32e, 0xa, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, + 0x5, 0x4d, 0x333, 0xa, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, + 0x4e, 0x5, 0x4e, 0x339, 0xa, 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, + 0x3, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x52, + 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, + 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x5, 0x53, + 0x34f, 0xa, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x5, 0x54, 0x354, + 0xa, 0x54, 0x5, 0x54, 0x356, 0xa, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, + 0x55, 0x3, 0x55, 0x3, 0x55, 0x7, 0x55, 0x35d, 0xa, 0x55, 0xc, 0x55, + 0xe, 0x55, 0x360, 0xb, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x5, + 0x56, 0x365, 0xa, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, + 0x5, 0x57, 0x36b, 0xa, 0x57, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x36f, + 0xa, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, + 0x7, 0x59, 0x376, 0xa, 0x59, 0xc, 0x59, 0xe, 0x59, 0x379, 0xb, 0x59, + 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, + 0x5, 0x5a, 0x381, 0xa, 0x5a, 0x3, 0x5a, 0x5, 0x5a, 0x384, 0xa, 0x5a, + 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x5, 0x5c, 0x389, 0xa, 0x5c, 0x3, + 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, + 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x5, + 0x5f, 0x397, 0xa, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x39b, 0xa, + 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x39e, 0xa, 0x5f, 0x3, 0x5f, 0x3, 0x5f, + 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x3a5, 0xa, 0x5f, 0x3, + 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, + 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x5, + 0x61, 0x3b3, 0xa, 0x61, 0x5, 0x61, 0x3b5, 0xa, 0x61, 0x3, 0x61, 0x5, + 0x61, 0x3b8, 0xa, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3bb, 0xa, 0x61, 0x5, + 0x61, 0x3bd, 0xa, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, + 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, + 0x3, 0x64, 0x2, 0x4, 0x8e, 0x90, 0x65, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, + 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, + 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, + 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, + 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, + 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, + 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, + 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, + 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, + 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0x2, 0xd, 0x4, 0x2, 0x1d, 0x1d, 0x2a, + 0x2a, 0x3, 0x2, 0x2b, 0x2c, 0x4, 0x2, 0x38, 0x3d, 0x3f, 0x43, 0x4, + 0x2, 0x26, 0x26, 0x2f, 0x2f, 0x3, 0x2, 0x3e, 0x44, 0x4, 0x2, 0x39, + 0x3d, 0x42, 0x43, 0x4, 0x2, 0x38, 0x38, 0x3f, 0x41, 0x3, 0x2, 0x32, + 0x37, 0x4, 0x2, 0x45, 0x48, 0x4c, 0x4d, 0x3, 0x2, 0x53, 0x54, 0x4, + 0x2, 0x26, 0x28, 0x2f, 0x2f, 0x2, 0x402, 0x2, 0xc8, 0x3, 0x2, 0x2, + 0x2, 0x4, 0xed, 0x3, 0x2, 0x2, 0x2, 0x6, 0xf0, 0x3, 0x2, 0x2, 0x2, + 0x8, 0xff, 0x3, 0x2, 0x2, 0x2, 0xa, 0x103, 0x3, 0x2, 0x2, 0x2, 0xc, + 0x108, 0x3, 0x2, 0x2, 0x2, 0xe, 0x10a, 0x3, 0x2, 0x2, 0x2, 0x10, + 0x118, 0x3, 0x2, 0x2, 0x2, 0x12, 0x120, 0x3, 0x2, 0x2, 0x2, 0x14, + 0x128, 0x3, 0x2, 0x2, 0x2, 0x16, 0x130, 0x3, 0x2, 0x2, 0x2, 0x18, + 0x13e, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x144, 0x3, 0x2, 0x2, 0x2, 0x1c, + 0x14a, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x151, 0x3, 0x2, 0x2, 0x2, 0x20, + 0x153, 0x3, 0x2, 0x2, 0x2, 0x22, 0x161, 0x3, 0x2, 0x2, 0x2, 0x24, + 0x16b, 0x3, 0x2, 0x2, 0x2, 0x26, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x28, + 0x190, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x197, 0x3, 0x2, 0x2, 0x2, 0x2c, + 0x199, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x30, + 0x19f, 0x3, 0x2, 0x2, 0x2, 0x32, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0x34, + 0x1a7, 0x3, 0x2, 0x2, 0x2, 0x36, 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x38, + 0x1af, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x3c, + 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x1ba, 0x3, 0x2, 0x2, 0x2, 0x40, + 0x1be, 0x3, 0x2, 0x2, 0x2, 0x42, 0x1c2, 0x3, 0x2, 0x2, 0x2, 0x44, + 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x46, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x48, + 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x1df, 0x3, 0x2, 0x2, 0x2, 0x4c, + 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x50, + 0x1ff, 0x3, 0x2, 0x2, 0x2, 0x52, 0x201, 0x3, 0x2, 0x2, 0x2, 0x54, + 0x217, 0x3, 0x2, 0x2, 0x2, 0x56, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x58, + 0x227, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x5c, + 0x237, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x241, 0x3, 0x2, 0x2, 0x2, 0x60, + 0x24c, 0x3, 0x2, 0x2, 0x2, 0x62, 0x254, 0x3, 0x2, 0x2, 0x2, 0x64, + 0x258, 0x3, 0x2, 0x2, 0x2, 0x66, 0x261, 0x3, 0x2, 0x2, 0x2, 0x68, + 0x271, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x276, 0x3, 0x2, 0x2, 0x2, 0x6c, + 0x27f, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x283, 0x3, 0x2, 0x2, 0x2, 0x70, + 0x28d, 0x3, 0x2, 0x2, 0x2, 0x72, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x74, + 0x294, 0x3, 0x2, 0x2, 0x2, 0x76, 0x296, 0x3, 0x2, 0x2, 0x2, 0x78, + 0x298, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x7c, + 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0x80, + 0x2b9, 0x3, 0x2, 0x2, 0x2, 0x82, 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x84, + 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x86, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0x88, + 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x8c, + 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x90, + 0x308, 0x3, 0x2, 0x2, 0x2, 0x92, 0x318, 0x3, 0x2, 0x2, 0x2, 0x94, + 0x325, 0x3, 0x2, 0x2, 0x2, 0x96, 0x32d, 0x3, 0x2, 0x2, 0x2, 0x98, + 0x332, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x338, 0x3, 0x2, 0x2, 0x2, 0x9c, + 0x33a, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x33c, 0x3, 0x2, 0x2, 0x2, 0xa0, + 0x33e, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x342, 0x3, 0x2, 0x2, 0x2, 0xa4, + 0x34e, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x350, 0x3, 0x2, 0x2, 0x2, 0xa8, + 0x359, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x364, 0x3, 0x2, 0x2, 0x2, 0xac, + 0x36a, 0x3, 0x2, 0x2, 0x2, 0xae, 0x36e, 0x3, 0x2, 0x2, 0x2, 0xb0, + 0x370, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x380, 0x3, 0x2, 0x2, 0x2, 0xb4, + 0x385, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x388, 0x3, 0x2, 0x2, 0x2, 0xb8, + 0x38c, 0x3, 0x2, 0x2, 0x2, 0xba, 0x390, 0x3, 0x2, 0x2, 0x2, 0xbc, + 0x394, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x3a8, 0x3, 0x2, 0x2, 0x2, 0xc0, + 0x3ad, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x3c0, 0x3, 0x2, 0x2, 0x2, 0xc4, + 0x3c4, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x3c6, 0x3, 0x2, 0x2, 0x2, 0xc8, + 0xcc, 0x5, 0x4, 0x3, 0x2, 0xc9, 0xcb, 0x5, 0xc6, 0x64, 0x2, 0xca, + 0xc9, 0x3, 0x2, 0x2, 0x2, 0xcb, 0xce, 0x3, 0x2, 0x2, 0x2, 0xcc, 0xca, + 0x3, 0x2, 0x2, 0x2, 0xcc, 0xcd, 0x3, 0x2, 0x2, 0x2, 0xcd, 0xd8, 0x3, + 0x2, 0x2, 0x2, 0xce, 0xcc, 0x3, 0x2, 0x2, 0x2, 0xcf, 0xd3, 0x5, 0x6, + 0x4, 0x2, 0xd0, 0xd2, 0x5, 0xc6, 0x64, 0x2, 0xd1, 0xd0, 0x3, 0x2, + 0x2, 0x2, 0xd2, 0xd5, 0x3, 0x2, 0x2, 0x2, 0xd3, 0xd1, 0x3, 0x2, 0x2, + 0x2, 0xd3, 0xd4, 0x3, 0x2, 0x2, 0x2, 0xd4, 0xd7, 0x3, 0x2, 0x2, 0x2, + 0xd5, 0xd3, 0x3, 0x2, 0x2, 0x2, 0xd6, 0xcf, 0x3, 0x2, 0x2, 0x2, 0xd7, + 0xda, 0x3, 0x2, 0x2, 0x2, 0xd8, 0xd6, 0x3, 0x2, 0x2, 0x2, 0xd8, 0xd9, + 0x3, 0x2, 0x2, 0x2, 0xd9, 0xe8, 0x3, 0x2, 0x2, 0x2, 0xda, 0xd8, 0x3, + 0x2, 0x2, 0x2, 0xdb, 0xdf, 0x5, 0x1a, 0xe, 0x2, 0xdc, 0xdf, 0x5, + 0x1c, 0xf, 0x2, 0xdd, 0xdf, 0x5, 0xc, 0x7, 0x2, 0xde, 0xdb, 0x3, + 0x2, 0x2, 0x2, 0xde, 0xdc, 0x3, 0x2, 0x2, 0x2, 0xde, 0xdd, 0x3, 0x2, + 0x2, 0x2, 0xdf, 0xe3, 0x3, 0x2, 0x2, 0x2, 0xe0, 0xe2, 0x5, 0xc6, + 0x64, 0x2, 0xe1, 0xe0, 0x3, 0x2, 0x2, 0x2, 0xe2, 0xe5, 0x3, 0x2, + 0x2, 0x2, 0xe3, 0xe1, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x3, 0x2, 0x2, + 0x2, 0xe4, 0xe7, 0x3, 0x2, 0x2, 0x2, 0xe5, 0xe3, 0x3, 0x2, 0x2, 0x2, + 0xe6, 0xde, 0x3, 0x2, 0x2, 0x2, 0xe7, 0xea, 0x3, 0x2, 0x2, 0x2, 0xe8, + 0xe6, 0x3, 0x2, 0x2, 0x2, 0xe8, 0xe9, 0x3, 0x2, 0x2, 0x2, 0xe9, 0xeb, + 0x3, 0x2, 0x2, 0x2, 0xea, 0xe8, 0x3, 0x2, 0x2, 0x2, 0xeb, 0xec, 0x7, + 0x2, 0x2, 0x3, 0xec, 0x3, 0x3, 0x2, 0x2, 0x2, 0xed, 0xee, 0x7, 0x10, + 0x2, 0x2, 0xee, 0xef, 0x7, 0x1d, 0x2, 0x2, 0xef, 0x5, 0x3, 0x2, 0x2, + 0x2, 0xf0, 0xfc, 0x7, 0x19, 0x2, 0x2, 0xf1, 0xfd, 0x5, 0x8, 0x5, + 0x2, 0xf2, 0xf8, 0x7, 0x1e, 0x2, 0x2, 0xf3, 0xf4, 0x5, 0x8, 0x5, + 0x2, 0xf4, 0xf5, 0x5, 0xc6, 0x64, 0x2, 0xf5, 0xf7, 0x3, 0x2, 0x2, + 0x2, 0xf6, 0xf3, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xfa, 0x3, 0x2, 0x2, 0x2, + 0xf8, 0xf6, 0x3, 0x2, 0x2, 0x2, 0xf8, 0xf9, 0x3, 0x2, 0x2, 0x2, 0xf9, + 0xfb, 0x3, 0x2, 0x2, 0x2, 0xfa, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xfb, 0xfd, + 0x7, 0x1f, 0x2, 0x2, 0xfc, 0xf1, 0x3, 0x2, 0x2, 0x2, 0xfc, 0xf2, + 0x3, 0x2, 0x2, 0x2, 0xfd, 0x7, 0x3, 0x2, 0x2, 0x2, 0xfe, 0x100, 0x9, + 0x2, 0x2, 0x2, 0xff, 0xfe, 0x3, 0x2, 0x2, 0x2, 0xff, 0x100, 0x3, + 0x2, 0x2, 0x2, 0x100, 0x101, 0x3, 0x2, 0x2, 0x2, 0x101, 0x102, 0x5, + 0xa, 0x6, 0x2, 0x102, 0x9, 0x3, 0x2, 0x2, 0x2, 0x103, 0x104, 0x5, + 0xb4, 0x5b, 0x2, 0x104, 0xb, 0x3, 0x2, 0x2, 0x2, 0x105, 0x109, 0x5, + 0xe, 0x8, 0x2, 0x106, 0x109, 0x5, 0x16, 0xc, 0x2, 0x107, 0x109, 0x5, + 0x20, 0x11, 0x2, 0x108, 0x105, 0x3, 0x2, 0x2, 0x2, 0x108, 0x106, + 0x3, 0x2, 0x2, 0x2, 0x108, 0x107, 0x3, 0x2, 0x2, 0x2, 0x109, 0xd, + 0x3, 0x2, 0x2, 0x2, 0x10a, 0x116, 0x7, 0x12, 0x2, 0x2, 0x10b, 0x117, + 0x5, 0x10, 0x9, 0x2, 0x10c, 0x112, 0x7, 0x1e, 0x2, 0x2, 0x10d, 0x10e, + 0x5, 0x10, 0x9, 0x2, 0x10e, 0x10f, 0x5, 0xc6, 0x64, 0x2, 0x10f, 0x111, + 0x3, 0x2, 0x2, 0x2, 0x110, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x111, 0x114, + 0x3, 0x2, 0x2, 0x2, 0x112, 0x110, 0x3, 0x2, 0x2, 0x2, 0x112, 0x113, + 0x3, 0x2, 0x2, 0x2, 0x113, 0x115, 0x3, 0x2, 0x2, 0x2, 0x114, 0x112, + 0x3, 0x2, 0x2, 0x2, 0x115, 0x117, 0x7, 0x1f, 0x2, 0x2, 0x116, 0x10b, + 0x3, 0x2, 0x2, 0x2, 0x116, 0x10c, 0x3, 0x2, 0x2, 0x2, 0x117, 0xf, + 0x3, 0x2, 0x2, 0x2, 0x118, 0x11e, 0x5, 0x12, 0xa, 0x2, 0x119, 0x11b, + 0x5, 0x6c, 0x37, 0x2, 0x11a, 0x119, 0x3, 0x2, 0x2, 0x2, 0x11a, 0x11b, + 0x3, 0x2, 0x2, 0x2, 0x11b, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x11d, + 0x7, 0x24, 0x2, 0x2, 0x11d, 0x11f, 0x5, 0x14, 0xb, 0x2, 0x11e, 0x11a, + 0x3, 0x2, 0x2, 0x2, 0x11e, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x11f, 0x11, + 0x3, 0x2, 0x2, 0x2, 0x120, 0x125, 0x7, 0x1d, 0x2, 0x2, 0x121, 0x122, + 0x7, 0x25, 0x2, 0x2, 0x122, 0x124, 0x7, 0x1d, 0x2, 0x2, 0x123, 0x121, + 0x3, 0x2, 0x2, 0x2, 0x124, 0x127, 0x3, 0x2, 0x2, 0x2, 0x125, 0x123, + 0x3, 0x2, 0x2, 0x2, 0x125, 0x126, 0x3, 0x2, 0x2, 0x2, 0x126, 0x13, + 0x3, 0x2, 0x2, 0x2, 0x127, 0x125, 0x3, 0x2, 0x2, 0x2, 0x128, 0x12d, + 0x5, 0x8e, 0x48, 0x2, 0x129, 0x12a, 0x7, 0x25, 0x2, 0x2, 0x12a, 0x12c, + 0x5, 0x8e, 0x48, 0x2, 0x12b, 0x129, 0x3, 0x2, 0x2, 0x2, 0x12c, 0x12f, + 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12b, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12e, + 0x3, 0x2, 0x2, 0x2, 0x12e, 0x15, 0x3, 0x2, 0x2, 0x2, 0x12f, 0x12d, + 0x3, 0x2, 0x2, 0x2, 0x130, 0x13c, 0x7, 0x16, 0x2, 0x2, 0x131, 0x13d, + 0x5, 0x18, 0xd, 0x2, 0x132, 0x138, 0x7, 0x1e, 0x2, 0x2, 0x133, 0x134, + 0x5, 0x18, 0xd, 0x2, 0x134, 0x135, 0x5, 0xc6, 0x64, 0x2, 0x135, 0x137, + 0x3, 0x2, 0x2, 0x2, 0x136, 0x133, 0x3, 0x2, 0x2, 0x2, 0x137, 0x13a, + 0x3, 0x2, 0x2, 0x2, 0x138, 0x136, 0x3, 0x2, 0x2, 0x2, 0x138, 0x139, + 0x3, 0x2, 0x2, 0x2, 0x139, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x13a, 0x138, + 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13d, 0x7, 0x1f, 0x2, 0x2, 0x13c, 0x131, + 0x3, 0x2, 0x2, 0x2, 0x13c, 0x132, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x17, + 0x3, 0x2, 0x2, 0x2, 0x13e, 0x140, 0x7, 0x1d, 0x2, 0x2, 0x13f, 0x141, + 0x7, 0x24, 0x2, 0x2, 0x140, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x140, 0x141, + 0x3, 0x2, 0x2, 0x2, 0x141, 0x142, 0x3, 0x2, 0x2, 0x2, 0x142, 0x143, + 0x5, 0x6c, 0x37, 0x2, 0x143, 0x19, 0x3, 0x2, 0x2, 0x2, 0x144, 0x145, + 0x7, 0x5, 0x2, 0x2, 0x145, 0x146, 0x7, 0x1d, 0x2, 0x2, 0x146, 0x148, + 0x5, 0x86, 0x44, 0x2, 0x147, 0x149, 0x5, 0x24, 0x13, 0x2, 0x148, + 0x147, 0x3, 0x2, 0x2, 0x2, 0x148, 0x149, 0x3, 0x2, 0x2, 0x2, 0x149, + 0x1b, 0x3, 0x2, 0x2, 0x2, 0x14a, 0x14b, 0x7, 0x5, 0x2, 0x2, 0x14b, + 0x14c, 0x5, 0x1e, 0x10, 0x2, 0x14c, 0x14d, 0x7, 0x1d, 0x2, 0x2, 0x14d, + 0x14f, 0x5, 0x86, 0x44, 0x2, 0x14e, 0x150, 0x5, 0x24, 0x13, 0x2, + 0x14f, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x14f, 0x150, 0x3, 0x2, 0x2, 0x2, + 0x150, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x151, 0x152, 0x5, 0x8a, 0x46, 0x2, + 0x152, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x153, 0x15f, 0x7, 0x1b, 0x2, 0x2, + 0x154, 0x160, 0x5, 0x22, 0x12, 0x2, 0x155, 0x15b, 0x7, 0x1e, 0x2, + 0x2, 0x156, 0x157, 0x5, 0x22, 0x12, 0x2, 0x157, 0x158, 0x5, 0xc6, + 0x64, 0x2, 0x158, 0x15a, 0x3, 0x2, 0x2, 0x2, 0x159, 0x156, 0x3, 0x2, + 0x2, 0x2, 0x15a, 0x15d, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x159, 0x3, 0x2, + 0x2, 0x2, 0x15b, 0x15c, 0x3, 0x2, 0x2, 0x2, 0x15c, 0x15e, 0x3, 0x2, + 0x2, 0x2, 0x15d, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x15e, 0x160, 0x7, 0x1f, + 0x2, 0x2, 0x15f, 0x154, 0x3, 0x2, 0x2, 0x2, 0x15f, 0x155, 0x3, 0x2, + 0x2, 0x2, 0x160, 0x21, 0x3, 0x2, 0x2, 0x2, 0x161, 0x169, 0x5, 0x12, + 0xa, 0x2, 0x162, 0x165, 0x5, 0x6c, 0x37, 0x2, 0x163, 0x164, 0x7, + 0x24, 0x2, 0x2, 0x164, 0x166, 0x5, 0x14, 0xb, 0x2, 0x165, 0x163, + 0x3, 0x2, 0x2, 0x2, 0x165, 0x166, 0x3, 0x2, 0x2, 0x2, 0x166, 0x16a, + 0x3, 0x2, 0x2, 0x2, 0x167, 0x168, 0x7, 0x24, 0x2, 0x2, 0x168, 0x16a, + 0x5, 0x14, 0xb, 0x2, 0x169, 0x162, 0x3, 0x2, 0x2, 0x2, 0x169, 0x167, + 0x3, 0x2, 0x2, 0x2, 0x16a, 0x23, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x16f, + 0x7, 0x20, 0x2, 0x2, 0x16c, 0x16e, 0x5, 0xc6, 0x64, 0x2, 0x16d, 0x16c, + 0x3, 0x2, 0x2, 0x2, 0x16e, 0x171, 0x3, 0x2, 0x2, 0x2, 0x16f, 0x16d, + 0x3, 0x2, 0x2, 0x2, 0x16f, 0x170, 0x3, 0x2, 0x2, 0x2, 0x170, 0x173, + 0x3, 0x2, 0x2, 0x2, 0x171, 0x16f, 0x3, 0x2, 0x2, 0x2, 0x172, 0x174, + 0x5, 0x26, 0x14, 0x2, 0x173, 0x172, 0x3, 0x2, 0x2, 0x2, 0x173, 0x174, + 0x3, 0x2, 0x2, 0x2, 0x174, 0x175, 0x3, 0x2, 0x2, 0x2, 0x175, 0x176, + 0x7, 0x21, 0x2, 0x2, 0x176, 0x25, 0x3, 0x2, 0x2, 0x2, 0x177, 0x179, + 0x5, 0x28, 0x15, 0x2, 0x178, 0x17a, 0x5, 0xc6, 0x64, 0x2, 0x179, + 0x178, 0x3, 0x2, 0x2, 0x2, 0x17a, 0x17b, 0x3, 0x2, 0x2, 0x2, 0x17b, + 0x179, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17c, 0x3, 0x2, 0x2, 0x2, 0x17c, + 0x17e, 0x3, 0x2, 0x2, 0x2, 0x17d, 0x177, 0x3, 0x2, 0x2, 0x2, 0x17e, + 0x17f, 0x3, 0x2, 0x2, 0x2, 0x17f, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x17f, + 0x180, 0x3, 0x2, 0x2, 0x2, 0x180, 0x27, 0x3, 0x2, 0x2, 0x2, 0x181, + 0x191, 0x5, 0xc, 0x7, 0x2, 0x182, 0x191, 0x5, 0x3a, 0x1e, 0x2, 0x183, + 0x191, 0x5, 0x2a, 0x16, 0x2, 0x184, 0x191, 0x5, 0x6a, 0x36, 0x2, + 0x185, 0x191, 0x5, 0x3c, 0x1f, 0x2, 0x186, 0x191, 0x5, 0x3e, 0x20, + 0x2, 0x187, 0x191, 0x5, 0x40, 0x21, 0x2, 0x188, 0x191, 0x5, 0x42, + 0x22, 0x2, 0x189, 0x191, 0x5, 0x44, 0x23, 0x2, 0x18a, 0x191, 0x5, + 0x24, 0x13, 0x2, 0x18b, 0x191, 0x5, 0x48, 0x25, 0x2, 0x18c, 0x191, + 0x5, 0x4a, 0x26, 0x2, 0x18d, 0x191, 0x5, 0x5c, 0x2f, 0x2, 0x18e, + 0x191, 0x5, 0x64, 0x33, 0x2, 0x18f, 0x191, 0x5, 0x46, 0x24, 0x2, + 0x190, 0x181, 0x3, 0x2, 0x2, 0x2, 0x190, 0x182, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x183, 0x3, 0x2, 0x2, 0x2, 0x190, 0x184, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x185, 0x3, 0x2, 0x2, 0x2, 0x190, 0x186, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x187, 0x3, 0x2, 0x2, 0x2, 0x190, 0x188, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x189, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18a, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x18b, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18c, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18e, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x191, 0x29, 0x3, 0x2, 0x2, 0x2, + 0x192, 0x198, 0x5, 0x2e, 0x18, 0x2, 0x193, 0x198, 0x5, 0x30, 0x19, + 0x2, 0x194, 0x198, 0x5, 0x32, 0x1a, 0x2, 0x195, 0x198, 0x5, 0x2c, + 0x17, 0x2, 0x196, 0x198, 0x5, 0x36, 0x1c, 0x2, 0x197, 0x192, 0x3, + 0x2, 0x2, 0x2, 0x197, 0x193, 0x3, 0x2, 0x2, 0x2, 0x197, 0x194, 0x3, + 0x2, 0x2, 0x2, 0x197, 0x195, 0x3, 0x2, 0x2, 0x2, 0x197, 0x196, 0x3, + 0x2, 0x2, 0x2, 0x198, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x199, 0x19a, 0x5, + 0x8e, 0x48, 0x2, 0x19a, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x19b, 0x19c, 0x5, + 0x8e, 0x48, 0x2, 0x19c, 0x19d, 0x7, 0x44, 0x2, 0x2, 0x19d, 0x19e, + 0x5, 0x8e, 0x48, 0x2, 0x19e, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x19f, 0x1a0, + 0x5, 0x8e, 0x48, 0x2, 0x1a0, 0x1a1, 0x9, 0x3, 0x2, 0x2, 0x1a1, 0x31, + 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a3, 0x5, 0x14, 0xb, 0x2, 0x1a3, 0x1a4, + 0x5, 0x34, 0x1b, 0x2, 0x1a4, 0x1a5, 0x5, 0x14, 0xb, 0x2, 0x1a5, 0x33, + 0x3, 0x2, 0x2, 0x2, 0x1a6, 0x1a8, 0x9, 0x4, 0x2, 0x2, 0x1a7, 0x1a6, + 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a8, 0x3, 0x2, 0x2, 0x2, 0x1a8, 0x1a9, + 0x3, 0x2, 0x2, 0x2, 0x1a9, 0x1aa, 0x7, 0x24, 0x2, 0x2, 0x1aa, 0x35, + 0x3, 0x2, 0x2, 0x2, 0x1ab, 0x1ac, 0x5, 0x12, 0xa, 0x2, 0x1ac, 0x1ad, + 0x7, 0x2d, 0x2, 0x2, 0x1ad, 0x1ae, 0x5, 0x14, 0xb, 0x2, 0x1ae, 0x37, + 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1b0, 0x9, 0x5, 0x2, 0x2, 0x1b0, 0x39, + 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1b2, 0x7, 0x1d, 0x2, 0x2, 0x1b2, 0x1b4, + 0x7, 0x29, 0x2, 0x2, 0x1b3, 0x1b5, 0x5, 0x28, 0x15, 0x2, 0x1b4, 0x1b3, + 0x3, 0x2, 0x2, 0x2, 0x1b4, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x3b, + 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b8, 0x7, 0x1a, 0x2, 0x2, 0x1b7, 0x1b9, + 0x5, 0x14, 0xb, 0x2, 0x1b8, 0x1b7, 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1b9, + 0x3, 0x2, 0x2, 0x2, 0x1b9, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bc, + 0x7, 0x3, 0x2, 0x2, 0x1bb, 0x1bd, 0x7, 0x1d, 0x2, 0x2, 0x1bc, 0x1bb, + 0x3, 0x2, 0x2, 0x2, 0x1bc, 0x1bd, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x3f, + 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1c0, 0x7, 0x17, 0x2, 0x2, 0x1bf, 0x1c1, + 0x7, 0x1d, 0x2, 0x2, 0x1c0, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1, + 0x3, 0x2, 0x2, 0x2, 0x1c1, 0x41, 0x3, 0x2, 0x2, 0x2, 0x1c2, 0x1c3, + 0x7, 0xf, 0x2, 0x2, 0x1c3, 0x1c4, 0x7, 0x1d, 0x2, 0x2, 0x1c4, 0x43, + 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c6, 0x7, 0x13, 0x2, 0x2, 0x1c6, 0x45, + 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x1c8, 0x7, 0x9, 0x2, 0x2, 0x1c8, 0x1c9, + 0x5, 0x8e, 0x48, 0x2, 0x1c9, 0x47, 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1d3, + 0x7, 0x14, 0x2, 0x2, 0x1cb, 0x1d4, 0x5, 0x8e, 0x48, 0x2, 0x1cc, 0x1cd, + 0x5, 0xc6, 0x64, 0x2, 0x1cd, 0x1ce, 0x5, 0x8e, 0x48, 0x2, 0x1ce, + 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d0, 0x5, 0x2a, 0x16, 0x2, 0x1d0, + 0x1d1, 0x5, 0xc6, 0x64, 0x2, 0x1d1, 0x1d2, 0x5, 0x8e, 0x48, 0x2, + 0x1d2, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1cb, 0x3, 0x2, 0x2, 0x2, + 0x1d3, 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1cf, 0x3, 0x2, 0x2, 0x2, + 0x1d4, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1db, 0x5, 0x24, 0x13, + 0x2, 0x1d6, 0x1d9, 0x7, 0xe, 0x2, 0x2, 0x1d7, 0x1da, 0x5, 0x48, 0x25, + 0x2, 0x1d8, 0x1da, 0x5, 0x24, 0x13, 0x2, 0x1d9, 0x1d7, 0x3, 0x2, + 0x2, 0x2, 0x1d9, 0x1d8, 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1dc, 0x3, 0x2, + 0x2, 0x2, 0x1db, 0x1d6, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1dc, 0x3, 0x2, + 0x2, 0x2, 0x1dc, 0x49, 0x3, 0x2, 0x2, 0x2, 0x1dd, 0x1e0, 0x5, 0x4c, + 0x27, 0x2, 0x1de, 0x1e0, 0x5, 0x52, 0x2a, 0x2, 0x1df, 0x1dd, 0x3, + 0x2, 0x2, 0x2, 0x1df, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x4b, 0x3, + 0x2, 0x2, 0x2, 0x1e1, 0x1ec, 0x7, 0x11, 0x2, 0x2, 0x1e2, 0x1e4, 0x5, + 0x8e, 0x48, 0x2, 0x1e3, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x1e3, 0x1e4, + 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1ed, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0x1e7, + 0x5, 0x2a, 0x16, 0x2, 0x1e6, 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e7, + 0x3, 0x2, 0x2, 0x2, 0x1e7, 0x1e8, 0x3, 0x2, 0x2, 0x2, 0x1e8, 0x1ea, + 0x5, 0xc6, 0x64, 0x2, 0x1e9, 0x1eb, 0x5, 0x8e, 0x48, 0x2, 0x1ea, + 0x1e9, 0x3, 0x2, 0x2, 0x2, 0x1ea, 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x1eb, + 0x1ed, 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x1ec, + 0x1e6, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0x1ee, + 0x1f2, 0x7, 0x20, 0x2, 0x2, 0x1ef, 0x1f1, 0x5, 0x4e, 0x28, 0x2, 0x1f0, + 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f2, + 0x1f0, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x1f3, + 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f5, + 0x1f6, 0x7, 0x21, 0x2, 0x2, 0x1f6, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x1f7, + 0x1f8, 0x5, 0x50, 0x29, 0x2, 0x1f8, 0x1fa, 0x7, 0x29, 0x2, 0x2, 0x1f9, + 0x1fb, 0x5, 0x26, 0x14, 0x2, 0x1fa, 0x1f9, 0x3, 0x2, 0x2, 0x2, 0x1fa, + 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x1fc, + 0x1fd, 0x7, 0x8, 0x2, 0x2, 0x1fd, 0x200, 0x5, 0x14, 0xb, 0x2, 0x1fe, + 0x200, 0x7, 0x4, 0x2, 0x2, 0x1ff, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1ff, + 0x1fe, 0x3, 0x2, 0x2, 0x2, 0x200, 0x51, 0x3, 0x2, 0x2, 0x2, 0x201, + 0x20a, 0x7, 0x11, 0x2, 0x2, 0x202, 0x20b, 0x5, 0x54, 0x2b, 0x2, 0x203, + 0x204, 0x5, 0xc6, 0x64, 0x2, 0x204, 0x205, 0x5, 0x54, 0x2b, 0x2, + 0x205, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x206, 0x207, 0x5, 0x2a, 0x16, + 0x2, 0x207, 0x208, 0x5, 0xc6, 0x64, 0x2, 0x208, 0x209, 0x5, 0x54, + 0x2b, 0x2, 0x209, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x202, 0x3, 0x2, + 0x2, 0x2, 0x20a, 0x203, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x206, 0x3, 0x2, + 0x2, 0x2, 0x20b, 0x20c, 0x3, 0x2, 0x2, 0x2, 0x20c, 0x210, 0x7, 0x20, + 0x2, 0x2, 0x20d, 0x20f, 0x5, 0x56, 0x2c, 0x2, 0x20e, 0x20d, 0x3, + 0x2, 0x2, 0x2, 0x20f, 0x212, 0x3, 0x2, 0x2, 0x2, 0x210, 0x20e, 0x3, + 0x2, 0x2, 0x2, 0x210, 0x211, 0x3, 0x2, 0x2, 0x2, 0x211, 0x213, 0x3, + 0x2, 0x2, 0x2, 0x212, 0x210, 0x3, 0x2, 0x2, 0x2, 0x213, 0x214, 0x7, + 0x21, 0x2, 0x2, 0x214, 0x53, 0x3, 0x2, 0x2, 0x2, 0x215, 0x216, 0x7, + 0x1d, 0x2, 0x2, 0x216, 0x218, 0x7, 0x2d, 0x2, 0x2, 0x217, 0x215, + 0x3, 0x2, 0x2, 0x2, 0x217, 0x218, 0x3, 0x2, 0x2, 0x2, 0x218, 0x219, + 0x3, 0x2, 0x2, 0x2, 0x219, 0x21a, 0x5, 0x90, 0x49, 0x2, 0x21a, 0x21b, + 0x7, 0x2a, 0x2, 0x2, 0x21b, 0x21c, 0x7, 0x1e, 0x2, 0x2, 0x21c, 0x21d, + 0x7, 0x16, 0x2, 0x2, 0x21d, 0x21e, 0x7, 0x1f, 0x2, 0x2, 0x21e, 0x55, + 0x3, 0x2, 0x2, 0x2, 0x21f, 0x220, 0x5, 0x58, 0x2d, 0x2, 0x220, 0x222, + 0x7, 0x29, 0x2, 0x2, 0x221, 0x223, 0x5, 0x26, 0x14, 0x2, 0x222, 0x221, + 0x3, 0x2, 0x2, 0x2, 0x222, 0x223, 0x3, 0x2, 0x2, 0x2, 0x223, 0x57, + 0x3, 0x2, 0x2, 0x2, 0x224, 0x225, 0x7, 0x8, 0x2, 0x2, 0x225, 0x228, + 0x5, 0x5a, 0x2e, 0x2, 0x226, 0x228, 0x7, 0x4, 0x2, 0x2, 0x227, 0x224, + 0x3, 0x2, 0x2, 0x2, 0x227, 0x226, 0x3, 0x2, 0x2, 0x2, 0x228, 0x59, + 0x3, 0x2, 0x2, 0x2, 0x229, 0x22c, 0x5, 0x6c, 0x37, 0x2, 0x22a, 0x22c, + 0x7, 0x1c, 0x2, 0x2, 0x22b, 0x229, 0x3, 0x2, 0x2, 0x2, 0x22b, 0x22a, + 0x3, 0x2, 0x2, 0x2, 0x22c, 0x234, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x230, + 0x7, 0x25, 0x2, 0x2, 0x22e, 0x231, 0x5, 0x6c, 0x37, 0x2, 0x22f, 0x231, + 0x7, 0x1c, 0x2, 0x2, 0x230, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x230, 0x22f, + 0x3, 0x2, 0x2, 0x2, 0x231, 0x233, 0x3, 0x2, 0x2, 0x2, 0x232, 0x22d, + 0x3, 0x2, 0x2, 0x2, 0x233, 0x236, 0x3, 0x2, 0x2, 0x2, 0x234, 0x232, + 0x3, 0x2, 0x2, 0x2, 0x234, 0x235, 0x3, 0x2, 0x2, 0x2, 0x235, 0x5b, + 0x3, 0x2, 0x2, 0x2, 0x236, 0x234, 0x3, 0x2, 0x2, 0x2, 0x237, 0x238, + 0x7, 0x7, 0x2, 0x2, 0x238, 0x23c, 0x7, 0x20, 0x2, 0x2, 0x239, 0x23b, + 0x5, 0x5e, 0x30, 0x2, 0x23a, 0x239, 0x3, 0x2, 0x2, 0x2, 0x23b, 0x23e, + 0x3, 0x2, 0x2, 0x2, 0x23c, 0x23a, 0x3, 0x2, 0x2, 0x2, 0x23c, 0x23d, + 0x3, 0x2, 0x2, 0x2, 0x23d, 0x23f, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23c, + 0x3, 0x2, 0x2, 0x2, 0x23f, 0x240, 0x7, 0x21, 0x2, 0x2, 0x240, 0x5d, + 0x3, 0x2, 0x2, 0x2, 0x241, 0x242, 0x5, 0x60, 0x31, 0x2, 0x242, 0x244, + 0x7, 0x29, 0x2, 0x2, 0x243, 0x245, 0x5, 0x26, 0x14, 0x2, 0x244, 0x243, + 0x3, 0x2, 0x2, 0x2, 0x244, 0x245, 0x3, 0x2, 0x2, 0x2, 0x245, 0x5f, + 0x3, 0x2, 0x2, 0x2, 0x246, 0x249, 0x7, 0x8, 0x2, 0x2, 0x247, 0x24a, + 0x5, 0x2e, 0x18, 0x2, 0x248, 0x24a, 0x5, 0x62, 0x32, 0x2, 0x249, + 0x247, 0x3, 0x2, 0x2, 0x2, 0x249, 0x248, 0x3, 0x2, 0x2, 0x2, 0x24a, + 0x24d, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24d, 0x7, 0x4, 0x2, 0x2, 0x24c, + 0x246, 0x3, 0x2, 0x2, 0x2, 0x24c, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x24d, + 0x61, 0x3, 0x2, 0x2, 0x2, 0x24e, 0x24f, 0x5, 0x14, 0xb, 0x2, 0x24f, + 0x250, 0x7, 0x24, 0x2, 0x2, 0x250, 0x255, 0x3, 0x2, 0x2, 0x2, 0x251, + 0x252, 0x5, 0x12, 0xa, 0x2, 0x252, 0x253, 0x7, 0x2d, 0x2, 0x2, 0x253, + 0x255, 0x3, 0x2, 0x2, 0x2, 0x254, 0x24e, 0x3, 0x2, 0x2, 0x2, 0x254, + 0x251, 0x3, 0x2, 0x2, 0x2, 0x254, 0x255, 0x3, 0x2, 0x2, 0x2, 0x255, + 0x256, 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, 0x5, 0x8e, 0x48, 0x2, 0x257, + 0x63, 0x3, 0x2, 0x2, 0x2, 0x258, 0x25c, 0x7, 0x18, 0x2, 0x2, 0x259, + 0x25d, 0x5, 0x8e, 0x48, 0x2, 0x25a, 0x25d, 0x5, 0x66, 0x34, 0x2, + 0x25b, 0x25d, 0x5, 0x68, 0x35, 0x2, 0x25c, 0x259, 0x3, 0x2, 0x2, + 0x2, 0x25c, 0x25a, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25b, 0x3, 0x2, 0x2, + 0x2, 0x25c, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25d, 0x25e, 0x3, 0x2, 0x2, + 0x2, 0x25e, 0x25f, 0x5, 0x24, 0x13, 0x2, 0x25f, 0x65, 0x3, 0x2, 0x2, + 0x2, 0x260, 0x262, 0x5, 0x2a, 0x16, 0x2, 0x261, 0x260, 0x3, 0x2, + 0x2, 0x2, 0x261, 0x262, 0x3, 0x2, 0x2, 0x2, 0x262, 0x263, 0x3, 0x2, + 0x2, 0x2, 0x263, 0x265, 0x5, 0xc6, 0x64, 0x2, 0x264, 0x266, 0x5, + 0x8e, 0x48, 0x2, 0x265, 0x264, 0x3, 0x2, 0x2, 0x2, 0x265, 0x266, + 0x3, 0x2, 0x2, 0x2, 0x266, 0x267, 0x3, 0x2, 0x2, 0x2, 0x267, 0x269, + 0x5, 0xc6, 0x64, 0x2, 0x268, 0x26a, 0x5, 0x2a, 0x16, 0x2, 0x269, + 0x268, 0x3, 0x2, 0x2, 0x2, 0x269, 0x26a, 0x3, 0x2, 0x2, 0x2, 0x26a, + 0x67, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26c, 0x5, 0x14, 0xb, 0x2, 0x26c, + 0x26d, 0x7, 0x24, 0x2, 0x2, 0x26d, 0x272, 0x3, 0x2, 0x2, 0x2, 0x26e, + 0x26f, 0x5, 0x12, 0xa, 0x2, 0x26f, 0x270, 0x7, 0x2d, 0x2, 0x2, 0x270, + 0x272, 0x3, 0x2, 0x2, 0x2, 0x271, 0x26b, 0x3, 0x2, 0x2, 0x2, 0x271, + 0x26e, 0x3, 0x2, 0x2, 0x2, 0x271, 0x272, 0x3, 0x2, 0x2, 0x2, 0x272, + 0x273, 0x3, 0x2, 0x2, 0x2, 0x273, 0x274, 0x7, 0x15, 0x2, 0x2, 0x274, + 0x275, 0x5, 0x8e, 0x48, 0x2, 0x275, 0x69, 0x3, 0x2, 0x2, 0x2, 0x276, + 0x277, 0x7, 0xa, 0x2, 0x2, 0x277, 0x278, 0x5, 0x8e, 0x48, 0x2, 0x278, + 0x6b, 0x3, 0x2, 0x2, 0x2, 0x279, 0x280, 0x5, 0x6e, 0x38, 0x2, 0x27a, + 0x280, 0x5, 0x70, 0x39, 0x2, 0x27b, 0x27c, 0x7, 0x1e, 0x2, 0x2, 0x27c, + 0x27d, 0x5, 0x6c, 0x37, 0x2, 0x27d, 0x27e, 0x7, 0x1f, 0x2, 0x2, 0x27e, + 0x280, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x279, 0x3, 0x2, 0x2, 0x2, 0x27f, + 0x27a, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x280, + 0x6d, 0x3, 0x2, 0x2, 0x2, 0x281, 0x284, 0x5, 0xa0, 0x51, 0x2, 0x282, + 0x284, 0x7, 0x1d, 0x2, 0x2, 0x283, 0x281, 0x3, 0x2, 0x2, 0x2, 0x283, + 0x282, 0x3, 0x2, 0x2, 0x2, 0x284, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x285, + 0x28e, 0x5, 0x72, 0x3a, 0x2, 0x286, 0x28e, 0x5, 0xb0, 0x59, 0x2, + 0x287, 0x28e, 0x5, 0x78, 0x3d, 0x2, 0x288, 0x28e, 0x5, 0x84, 0x43, + 0x2, 0x289, 0x28e, 0x5, 0x7a, 0x3e, 0x2, 0x28a, 0x28e, 0x5, 0x7c, + 0x3f, 0x2, 0x28b, 0x28e, 0x5, 0x7e, 0x40, 0x2, 0x28c, 0x28e, 0x5, + 0x80, 0x41, 0x2, 0x28d, 0x285, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x286, + 0x3, 0x2, 0x2, 0x2, 0x28d, 0x287, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x288, + 0x3, 0x2, 0x2, 0x2, 0x28d, 0x289, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28a, + 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28b, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28c, + 0x3, 0x2, 0x2, 0x2, 0x28e, 0x71, 0x3, 0x2, 0x2, 0x2, 0x28f, 0x290, + 0x7, 0x22, 0x2, 0x2, 0x290, 0x291, 0x5, 0x74, 0x3b, 0x2, 0x291, 0x292, + 0x7, 0x23, 0x2, 0x2, 0x292, 0x293, 0x5, 0x76, 0x3c, 0x2, 0x293, 0x73, + 0x3, 0x2, 0x2, 0x2, 0x294, 0x295, 0x5, 0x8e, 0x48, 0x2, 0x295, 0x75, + 0x3, 0x2, 0x2, 0x2, 0x296, 0x297, 0x5, 0x6c, 0x37, 0x2, 0x297, 0x77, + 0x3, 0x2, 0x2, 0x2, 0x298, 0x299, 0x7, 0x42, 0x2, 0x2, 0x299, 0x29a, + 0x5, 0x6c, 0x37, 0x2, 0x29a, 0x79, 0x3, 0x2, 0x2, 0x2, 0x29b, 0x29c, + 0x7, 0x6, 0x2, 0x2, 0x29c, 0x2a5, 0x7, 0x20, 0x2, 0x2, 0x29d, 0x2a0, + 0x5, 0x82, 0x42, 0x2, 0x29e, 0x2a0, 0x5, 0x6e, 0x38, 0x2, 0x29f, + 0x29d, 0x3, 0x2, 0x2, 0x2, 0x29f, 0x29e, 0x3, 0x2, 0x2, 0x2, 0x2a0, + 0x2a1, 0x3, 0x2, 0x2, 0x2, 0x2a1, 0x2a2, 0x5, 0xc6, 0x64, 0x2, 0x2a2, + 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2a3, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2a4, + 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x2a5, 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2a5, + 0x2a6, 0x3, 0x2, 0x2, 0x2, 0x2a6, 0x2a8, 0x3, 0x2, 0x2, 0x2, 0x2a7, + 0x2a5, 0x3, 0x2, 0x2, 0x2, 0x2a8, 0x2a9, 0x7, 0x21, 0x2, 0x2, 0x2a9, + 0x7b, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2ab, 0x7, 0x22, 0x2, 0x2, 0x2ab, + 0x2ac, 0x7, 0x23, 0x2, 0x2, 0x2ac, 0x2ad, 0x5, 0x76, 0x3c, 0x2, 0x2ad, + 0x7d, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2af, 0x7, 0xb, 0x2, 0x2, 0x2af, + 0x2b0, 0x7, 0x22, 0x2, 0x2, 0x2b0, 0x2b1, 0x5, 0x6c, 0x37, 0x2, 0x2b1, + 0x2b2, 0x7, 0x23, 0x2, 0x2, 0x2b2, 0x2b3, 0x5, 0x76, 0x3c, 0x2, 0x2b3, + 0x7f, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2ba, 0x7, 0xd, 0x2, 0x2, 0x2b5, + 0x2b6, 0x7, 0xd, 0x2, 0x2, 0x2b6, 0x2ba, 0x7, 0x44, 0x2, 0x2, 0x2b7, + 0x2b8, 0x7, 0x44, 0x2, 0x2, 0x2b8, 0x2ba, 0x7, 0xd, 0x2, 0x2, 0x2b9, + 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0x2b5, 0x3, 0x2, 0x2, 0x2, 0x2b9, + 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2ba, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2bb, + 0x2bc, 0x5, 0x76, 0x3c, 0x2, 0x2bc, 0x81, 0x3, 0x2, 0x2, 0x2, 0x2bd, + 0x2be, 0x7, 0x1d, 0x2, 0x2, 0x2be, 0x2bf, 0x5, 0x8a, 0x46, 0x2, 0x2bf, + 0x2c0, 0x5, 0x88, 0x45, 0x2, 0x2c0, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2c1, + 0x2c2, 0x7, 0x1d, 0x2, 0x2, 0x2c2, 0x2c4, 0x5, 0x8a, 0x46, 0x2, 0x2c3, + 0x2bd, 0x3, 0x2, 0x2, 0x2, 0x2c3, 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2c4, + 0x83, 0x3, 0x2, 0x2, 0x2, 0x2c5, 0x2c6, 0x7, 0x5, 0x2, 0x2, 0x2c6, + 0x2c7, 0x5, 0x86, 0x44, 0x2, 0x2c7, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2c8, + 0x2c9, 0x5, 0x8a, 0x46, 0x2, 0x2c9, 0x2ca, 0x5, 0x88, 0x45, 0x2, + 0x2ca, 0x2cd, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0x2cd, 0x5, 0x8a, 0x46, + 0x2, 0x2cc, 0x2c8, 0x3, 0x2, 0x2, 0x2, 0x2cc, 0x2cb, 0x3, 0x2, 0x2, + 0x2, 0x2cd, 0x87, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2d1, 0x5, 0x8a, 0x46, + 0x2, 0x2cf, 0x2d1, 0x5, 0x6c, 0x37, 0x2, 0x2d0, 0x2ce, 0x3, 0x2, + 0x2, 0x2, 0x2d0, 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x89, 0x3, 0x2, + 0x2, 0x2, 0x2d2, 0x2de, 0x7, 0x1e, 0x2, 0x2, 0x2d3, 0x2d8, 0x5, 0x8c, + 0x47, 0x2, 0x2d4, 0x2d5, 0x7, 0x25, 0x2, 0x2, 0x2d5, 0x2d7, 0x5, + 0x8c, 0x47, 0x2, 0x2d6, 0x2d4, 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x2da, + 0x3, 0x2, 0x2, 0x2, 0x2d8, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x2d8, 0x2d9, + 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x2da, 0x2d8, + 0x3, 0x2, 0x2, 0x2, 0x2db, 0x2dd, 0x7, 0x25, 0x2, 0x2, 0x2dc, 0x2db, + 0x3, 0x2, 0x2, 0x2, 0x2dc, 0x2dd, 0x3, 0x2, 0x2, 0x2, 0x2dd, 0x2df, + 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2df, + 0x3, 0x2, 0x2, 0x2, 0x2df, 0x2e0, 0x3, 0x2, 0x2, 0x2, 0x2e0, 0x2e1, + 0x7, 0x1f, 0x2, 0x2, 0x2e1, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2e4, + 0x5, 0x12, 0xa, 0x2, 0x2e3, 0x2e2, 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x2e4, + 0x3, 0x2, 0x2, 0x2, 0x2e4, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x2e7, + 0x7, 0x2e, 0x2, 0x2, 0x2e6, 0x2e5, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2e7, + 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2e9, + 0x5, 0x6c, 0x37, 0x2, 0x2e9, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2ea, 0x2eb, + 0x8, 0x48, 0x1, 0x2, 0x2eb, 0x2ef, 0x5, 0x90, 0x49, 0x2, 0x2ec, 0x2ed, + 0x9, 0x6, 0x2, 0x2, 0x2ed, 0x2ef, 0x5, 0x8e, 0x48, 0x8, 0x2ee, 0x2ea, + 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2ec, 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x301, + 0x3, 0x2, 0x2, 0x2, 0x2f0, 0x2f1, 0xc, 0x7, 0x2, 0x2, 0x2f1, 0x2f2, + 0x9, 0x7, 0x2, 0x2, 0x2f2, 0x300, 0x5, 0x8e, 0x48, 0x8, 0x2f3, 0x2f4, + 0xc, 0x6, 0x2, 0x2, 0x2f4, 0x2f5, 0x9, 0x8, 0x2, 0x2, 0x2f5, 0x300, + 0x5, 0x8e, 0x48, 0x7, 0x2f6, 0x2f7, 0xc, 0x5, 0x2, 0x2, 0x2f7, 0x2f8, + 0x9, 0x9, 0x2, 0x2, 0x2f8, 0x300, 0x5, 0x8e, 0x48, 0x6, 0x2f9, 0x2fa, + 0xc, 0x4, 0x2, 0x2, 0x2fa, 0x2fb, 0x7, 0x31, 0x2, 0x2, 0x2fb, 0x300, + 0x5, 0x8e, 0x48, 0x5, 0x2fc, 0x2fd, 0xc, 0x3, 0x2, 0x2, 0x2fd, 0x2fe, + 0x7, 0x30, 0x2, 0x2, 0x2fe, 0x300, 0x5, 0x8e, 0x48, 0x4, 0x2ff, 0x2f0, + 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f3, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f6, + 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f9, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2fc, + 0x3, 0x2, 0x2, 0x2, 0x300, 0x303, 0x3, 0x2, 0x2, 0x2, 0x301, 0x2ff, + 0x3, 0x2, 0x2, 0x2, 0x301, 0x302, 0x3, 0x2, 0x2, 0x2, 0x302, 0x8f, + 0x3, 0x2, 0x2, 0x2, 0x303, 0x301, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305, + 0x8, 0x49, 0x1, 0x2, 0x305, 0x309, 0x5, 0x96, 0x4c, 0x2, 0x306, 0x309, + 0x5, 0x92, 0x4a, 0x2, 0x307, 0x309, 0x5, 0xc2, 0x62, 0x2, 0x308, + 0x304, 0x3, 0x2, 0x2, 0x2, 0x308, 0x306, 0x3, 0x2, 0x2, 0x2, 0x308, + 0x307, 0x3, 0x2, 0x2, 0x2, 0x309, 0x315, 0x3, 0x2, 0x2, 0x2, 0x30a, + 0x311, 0xc, 0x3, 0x2, 0x2, 0x30b, 0x30c, 0x7, 0x2a, 0x2, 0x2, 0x30c, + 0x312, 0x7, 0x1d, 0x2, 0x2, 0x30d, 0x312, 0x5, 0xba, 0x5e, 0x2, 0x30e, + 0x312, 0x5, 0xbc, 0x5f, 0x2, 0x30f, 0x312, 0x5, 0xbe, 0x60, 0x2, + 0x310, 0x312, 0x5, 0xc0, 0x61, 0x2, 0x311, 0x30b, 0x3, 0x2, 0x2, + 0x2, 0x311, 0x30d, 0x3, 0x2, 0x2, 0x2, 0x311, 0x30e, 0x3, 0x2, 0x2, + 0x2, 0x311, 0x30f, 0x3, 0x2, 0x2, 0x2, 0x311, 0x310, 0x3, 0x2, 0x2, + 0x2, 0x312, 0x314, 0x3, 0x2, 0x2, 0x2, 0x313, 0x30a, 0x3, 0x2, 0x2, + 0x2, 0x314, 0x317, 0x3, 0x2, 0x2, 0x2, 0x315, 0x313, 0x3, 0x2, 0x2, + 0x2, 0x315, 0x316, 0x3, 0x2, 0x2, 0x2, 0x316, 0x91, 0x3, 0x2, 0x2, + 0x2, 0x317, 0x315, 0x3, 0x2, 0x2, 0x2, 0x318, 0x319, 0x5, 0x94, 0x4b, + 0x2, 0x319, 0x31a, 0x7, 0x1e, 0x2, 0x2, 0x31a, 0x31c, 0x5, 0x8e, + 0x48, 0x2, 0x31b, 0x31d, 0x7, 0x25, 0x2, 0x2, 0x31c, 0x31b, 0x3, + 0x2, 0x2, 0x2, 0x31c, 0x31d, 0x3, 0x2, 0x2, 0x2, 0x31d, 0x31e, 0x3, + 0x2, 0x2, 0x2, 0x31e, 0x31f, 0x7, 0x1f, 0x2, 0x2, 0x31f, 0x93, 0x3, + 0x2, 0x2, 0x2, 0x320, 0x326, 0x5, 0x70, 0x39, 0x2, 0x321, 0x322, + 0x7, 0x1e, 0x2, 0x2, 0x322, 0x323, 0x5, 0x94, 0x4b, 0x2, 0x323, 0x324, + 0x7, 0x1f, 0x2, 0x2, 0x324, 0x326, 0x3, 0x2, 0x2, 0x2, 0x325, 0x320, + 0x3, 0x2, 0x2, 0x2, 0x325, 0x321, 0x3, 0x2, 0x2, 0x2, 0x326, 0x95, + 0x3, 0x2, 0x2, 0x2, 0x327, 0x32e, 0x5, 0x98, 0x4d, 0x2, 0x328, 0x32e, + 0x5, 0x9e, 0x50, 0x2, 0x329, 0x32a, 0x7, 0x1e, 0x2, 0x2, 0x32a, 0x32b, + 0x5, 0x8e, 0x48, 0x2, 0x32b, 0x32c, 0x7, 0x1f, 0x2, 0x2, 0x32c, 0x32e, + 0x3, 0x2, 0x2, 0x2, 0x32d, 0x327, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x328, + 0x3, 0x2, 0x2, 0x2, 0x32d, 0x329, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x97, + 0x3, 0x2, 0x2, 0x2, 0x32f, 0x333, 0x5, 0x9a, 0x4e, 0x2, 0x330, 0x333, + 0x5, 0xa2, 0x52, 0x2, 0x331, 0x333, 0x5, 0xb8, 0x5d, 0x2, 0x332, + 0x32f, 0x3, 0x2, 0x2, 0x2, 0x332, 0x330, 0x3, 0x2, 0x2, 0x2, 0x332, + 0x331, 0x3, 0x2, 0x2, 0x2, 0x333, 0x99, 0x3, 0x2, 0x2, 0x2, 0x334, + 0x339, 0x7, 0x1c, 0x2, 0x2, 0x335, 0x339, 0x5, 0x9c, 0x4f, 0x2, 0x336, + 0x339, 0x5, 0xb4, 0x5b, 0x2, 0x337, 0x339, 0x7, 0x49, 0x2, 0x2, 0x338, + 0x334, 0x3, 0x2, 0x2, 0x2, 0x338, 0x335, 0x3, 0x2, 0x2, 0x2, 0x338, + 0x336, 0x3, 0x2, 0x2, 0x2, 0x338, 0x337, 0x3, 0x2, 0x2, 0x2, 0x339, + 0x9b, 0x3, 0x2, 0x2, 0x2, 0x33a, 0x33b, 0x9, 0xa, 0x2, 0x2, 0x33b, + 0x9d, 0x3, 0x2, 0x2, 0x2, 0x33c, 0x33d, 0x7, 0x1d, 0x2, 0x2, 0x33d, + 0x9f, 0x3, 0x2, 0x2, 0x2, 0x33e, 0x33f, 0x7, 0x1d, 0x2, 0x2, 0x33f, + 0x340, 0x7, 0x2a, 0x2, 0x2, 0x340, 0x341, 0x7, 0x1d, 0x2, 0x2, 0x341, + 0xa1, 0x3, 0x2, 0x2, 0x2, 0x342, 0x343, 0x5, 0xa4, 0x53, 0x2, 0x343, + 0x344, 0x5, 0xa6, 0x54, 0x2, 0x344, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x345, + 0x34f, 0x5, 0xb0, 0x59, 0x2, 0x346, 0x34f, 0x5, 0x72, 0x3a, 0x2, + 0x347, 0x348, 0x7, 0x22, 0x2, 0x2, 0x348, 0x349, 0x7, 0x2e, 0x2, + 0x2, 0x349, 0x34a, 0x7, 0x23, 0x2, 0x2, 0x34a, 0x34f, 0x5, 0x76, + 0x3c, 0x2, 0x34b, 0x34f, 0x5, 0x7c, 0x3f, 0x2, 0x34c, 0x34f, 0x5, + 0x7e, 0x40, 0x2, 0x34d, 0x34f, 0x5, 0x6e, 0x38, 0x2, 0x34e, 0x345, + 0x3, 0x2, 0x2, 0x2, 0x34e, 0x346, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x347, + 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34c, + 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x34f, 0xa5, + 0x3, 0x2, 0x2, 0x2, 0x350, 0x355, 0x7, 0x20, 0x2, 0x2, 0x351, 0x353, + 0x5, 0xa8, 0x55, 0x2, 0x352, 0x354, 0x7, 0x25, 0x2, 0x2, 0x353, 0x352, + 0x3, 0x2, 0x2, 0x2, 0x353, 0x354, 0x3, 0x2, 0x2, 0x2, 0x354, 0x356, + 0x3, 0x2, 0x2, 0x2, 0x355, 0x351, 0x3, 0x2, 0x2, 0x2, 0x355, 0x356, + 0x3, 0x2, 0x2, 0x2, 0x356, 0x357, 0x3, 0x2, 0x2, 0x2, 0x357, 0x358, + 0x7, 0x21, 0x2, 0x2, 0x358, 0xa7, 0x3, 0x2, 0x2, 0x2, 0x359, 0x35e, + 0x5, 0xaa, 0x56, 0x2, 0x35a, 0x35b, 0x7, 0x25, 0x2, 0x2, 0x35b, 0x35d, + 0x5, 0xaa, 0x56, 0x2, 0x35c, 0x35a, 0x3, 0x2, 0x2, 0x2, 0x35d, 0x360, + 0x3, 0x2, 0x2, 0x2, 0x35e, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x35e, 0x35f, + 0x3, 0x2, 0x2, 0x2, 0x35f, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x360, 0x35e, + 0x3, 0x2, 0x2, 0x2, 0x361, 0x362, 0x5, 0xac, 0x57, 0x2, 0x362, 0x363, + 0x7, 0x29, 0x2, 0x2, 0x363, 0x365, 0x3, 0x2, 0x2, 0x2, 0x364, 0x361, + 0x3, 0x2, 0x2, 0x2, 0x364, 0x365, 0x3, 0x2, 0x2, 0x2, 0x365, 0x366, + 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x5, 0xae, 0x58, 0x2, 0x367, 0xab, + 0x3, 0x2, 0x2, 0x2, 0x368, 0x36b, 0x5, 0x8e, 0x48, 0x2, 0x369, 0x36b, + 0x5, 0xa6, 0x54, 0x2, 0x36a, 0x368, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x369, + 0x3, 0x2, 0x2, 0x2, 0x36b, 0xad, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36f, + 0x5, 0x8e, 0x48, 0x2, 0x36d, 0x36f, 0x5, 0xa6, 0x54, 0x2, 0x36e, + 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36e, 0x36d, 0x3, 0x2, 0x2, 0x2, 0x36f, + 0xaf, 0x3, 0x2, 0x2, 0x2, 0x370, 0x371, 0x7, 0xc, 0x2, 0x2, 0x371, + 0x377, 0x7, 0x20, 0x2, 0x2, 0x372, 0x373, 0x5, 0xb2, 0x5a, 0x2, 0x373, + 0x374, 0x5, 0xc6, 0x64, 0x2, 0x374, 0x376, 0x3, 0x2, 0x2, 0x2, 0x375, + 0x372, 0x3, 0x2, 0x2, 0x2, 0x376, 0x379, 0x3, 0x2, 0x2, 0x2, 0x377, + 0x375, 0x3, 0x2, 0x2, 0x2, 0x377, 0x378, 0x3, 0x2, 0x2, 0x2, 0x378, + 0x37a, 0x3, 0x2, 0x2, 0x2, 0x379, 0x377, 0x3, 0x2, 0x2, 0x2, 0x37a, + 0x37b, 0x7, 0x21, 0x2, 0x2, 0x37b, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x37c, + 0x37d, 0x5, 0x12, 0xa, 0x2, 0x37d, 0x37e, 0x5, 0x6c, 0x37, 0x2, 0x37e, + 0x381, 0x3, 0x2, 0x2, 0x2, 0x37f, 0x381, 0x5, 0xb6, 0x5c, 0x2, 0x380, + 0x37c, 0x3, 0x2, 0x2, 0x2, 0x380, 0x37f, 0x3, 0x2, 0x2, 0x2, 0x381, + 0x383, 0x3, 0x2, 0x2, 0x2, 0x382, 0x384, 0x5, 0xb4, 0x5b, 0x2, 0x383, + 0x382, 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, 0x3, 0x2, 0x2, 0x2, 0x384, + 0xb3, 0x3, 0x2, 0x2, 0x2, 0x385, 0x386, 0x9, 0xb, 0x2, 0x2, 0x386, + 0xb5, 0x3, 0x2, 0x2, 0x2, 0x387, 0x389, 0x7, 0x42, 0x2, 0x2, 0x388, + 0x387, 0x3, 0x2, 0x2, 0x2, 0x388, 0x389, 0x3, 0x2, 0x2, 0x2, 0x389, + 0x38a, 0x3, 0x2, 0x2, 0x2, 0x38a, 0x38b, 0x5, 0x6e, 0x38, 0x2, 0x38b, + 0xb7, 0x3, 0x2, 0x2, 0x2, 0x38c, 0x38d, 0x7, 0x5, 0x2, 0x2, 0x38d, + 0x38e, 0x5, 0x86, 0x44, 0x2, 0x38e, 0x38f, 0x5, 0x24, 0x13, 0x2, + 0x38f, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, 0x7, 0x22, 0x2, 0x2, + 0x391, 0x392, 0x5, 0x8e, 0x48, 0x2, 0x392, 0x393, 0x7, 0x23, 0x2, + 0x2, 0x393, 0xbb, 0x3, 0x2, 0x2, 0x2, 0x394, 0x3a4, 0x7, 0x22, 0x2, + 0x2, 0x395, 0x397, 0x5, 0x8e, 0x48, 0x2, 0x396, 0x395, 0x3, 0x2, + 0x2, 0x2, 0x396, 0x397, 0x3, 0x2, 0x2, 0x2, 0x397, 0x398, 0x3, 0x2, + 0x2, 0x2, 0x398, 0x39a, 0x7, 0x29, 0x2, 0x2, 0x399, 0x39b, 0x5, 0x8e, + 0x48, 0x2, 0x39a, 0x399, 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39b, 0x3, 0x2, + 0x2, 0x2, 0x39b, 0x3a5, 0x3, 0x2, 0x2, 0x2, 0x39c, 0x39e, 0x5, 0x8e, + 0x48, 0x2, 0x39d, 0x39c, 0x3, 0x2, 0x2, 0x2, 0x39d, 0x39e, 0x3, 0x2, + 0x2, 0x2, 0x39e, 0x39f, 0x3, 0x2, 0x2, 0x2, 0x39f, 0x3a0, 0x7, 0x29, + 0x2, 0x2, 0x3a0, 0x3a1, 0x5, 0x8e, 0x48, 0x2, 0x3a1, 0x3a2, 0x7, + 0x29, 0x2, 0x2, 0x3a2, 0x3a3, 0x5, 0x8e, 0x48, 0x2, 0x3a3, 0x3a5, + 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x396, 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x39d, + 0x3, 0x2, 0x2, 0x2, 0x3a5, 0x3a6, 0x3, 0x2, 0x2, 0x2, 0x3a6, 0x3a7, + 0x7, 0x23, 0x2, 0x2, 0x3a7, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3a8, 0x3a9, + 0x7, 0x2a, 0x2, 0x2, 0x3a9, 0x3aa, 0x7, 0x1e, 0x2, 0x2, 0x3aa, 0x3ab, + 0x5, 0x6c, 0x37, 0x2, 0x3ab, 0x3ac, 0x7, 0x1f, 0x2, 0x2, 0x3ac, 0xbf, + 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3bc, 0x7, 0x1e, 0x2, 0x2, 0x3ae, 0x3b5, + 0x5, 0x14, 0xb, 0x2, 0x3af, 0x3b2, 0x5, 0x94, 0x4b, 0x2, 0x3b0, 0x3b1, + 0x7, 0x25, 0x2, 0x2, 0x3b1, 0x3b3, 0x5, 0x14, 0xb, 0x2, 0x3b2, 0x3b0, + 0x3, 0x2, 0x2, 0x2, 0x3b2, 0x3b3, 0x3, 0x2, 0x2, 0x2, 0x3b3, 0x3b5, + 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3ae, 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3af, + 0x3, 0x2, 0x2, 0x2, 0x3b5, 0x3b7, 0x3, 0x2, 0x2, 0x2, 0x3b6, 0x3b8, + 0x7, 0x2e, 0x2, 0x2, 0x3b7, 0x3b6, 0x3, 0x2, 0x2, 0x2, 0x3b7, 0x3b8, + 0x3, 0x2, 0x2, 0x2, 0x3b8, 0x3ba, 0x3, 0x2, 0x2, 0x2, 0x3b9, 0x3bb, + 0x7, 0x25, 0x2, 0x2, 0x3ba, 0x3b9, 0x3, 0x2, 0x2, 0x2, 0x3ba, 0x3bb, + 0x3, 0x2, 0x2, 0x2, 0x3bb, 0x3bd, 0x3, 0x2, 0x2, 0x2, 0x3bc, 0x3b4, + 0x3, 0x2, 0x2, 0x2, 0x3bc, 0x3bd, 0x3, 0x2, 0x2, 0x2, 0x3bd, 0x3be, + 0x3, 0x2, 0x2, 0x2, 0x3be, 0x3bf, 0x7, 0x1f, 0x2, 0x2, 0x3bf, 0xc1, + 0x3, 0x2, 0x2, 0x2, 0x3c0, 0x3c1, 0x5, 0x94, 0x4b, 0x2, 0x3c1, 0x3c2, + 0x7, 0x2a, 0x2, 0x2, 0x3c2, 0x3c3, 0x7, 0x1d, 0x2, 0x2, 0x3c3, 0xc3, + 0x3, 0x2, 0x2, 0x2, 0x3c4, 0x3c5, 0x5, 0x6c, 0x37, 0x2, 0x3c5, 0xc5, + 0x3, 0x2, 0x2, 0x2, 0x3c6, 0x3c7, 0x9, 0xc, 0x2, 0x2, 0x3c7, 0xc7, + 0x3, 0x2, 0x2, 0x2, 0x70, 0xcc, 0xd3, 0xd8, 0xde, 0xe3, 0xe8, 0xf8, + 0xfc, 0xff, 0x108, 0x112, 0x116, 0x11a, 0x11e, 0x125, 0x12d, 0x138, + 0x13c, 0x140, 0x148, 0x14f, 0x15b, 0x15f, 0x165, 0x169, 0x16f, 0x173, + 0x17b, 0x17f, 0x190, 0x197, 0x1a7, 0x1b4, 0x1b8, 0x1bc, 0x1c0, 0x1d3, + 0x1d9, 0x1db, 0x1df, 0x1e3, 0x1e6, 0x1ea, 0x1ec, 0x1f2, 0x1fa, 0x1ff, + 0x20a, 0x210, 0x217, 0x222, 0x227, 0x22b, 0x230, 0x234, 0x23c, 0x244, + 0x249, 0x24c, 0x254, 0x25c, 0x261, 0x265, 0x269, 0x271, 0x27f, 0x283, + 0x28d, 0x29f, 0x2a5, 0x2b9, 0x2c3, 0x2cc, 0x2d0, 0x2d8, 0x2dc, 0x2de, + 0x2e3, 0x2e6, 0x2ee, 0x2ff, 0x301, 0x308, 0x311, 0x315, 0x31c, 0x325, + 0x32d, 0x332, 0x338, 0x34e, 0x353, 0x355, 0x35e, 0x364, 0x36a, 0x36e, + 0x377, 0x380, 0x383, 0x388, 0x396, 0x39a, 0x39d, 0x3a4, 0x3b2, 0x3b4, + 0x3b7, 0x3ba, 0x3bc, + }; + + _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, + serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); + + + atn::ATNDeserializer deserializer; + _atn = deserializer.deserialize(_serializedATN); + + size_t count = _atn.getNumberOfDecisions(); + _decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); + } +} + +GoParser::Initializer GoParser::_init; diff --git a/grammar/cpp/GoParser.h b/grammar/cpp/GoParser.h new file mode 100644 index 0000000..a078b7f --- /dev/null +++ b/grammar/cpp/GoParser.h @@ -0,0 +1,1901 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + +#pragma once + + +#include "antlr4-runtime.h" + + + + +class GoParser : public antlr4::Parser { +public: + enum { + BREAK = 1, DEFAULT = 2, FUNC = 3, INTERFACE = 4, SELECT = 5, CASE = 6, + DEFER = 7, GO = 8, MAP = 9, STRUCT = 10, CHAN = 11, ELSE = 12, GOTO = 13, + PACKAGE = 14, SWITCH = 15, CONST = 16, FALLTHROUGH = 17, IF = 18, RANGE = 19, + TYPE = 20, CONTINUE = 21, FOR = 22, IMPORT = 23, RETURN = 24, VAR = 25, + NIL_LIT = 26, IDENTIFIER = 27, L_PAREN = 28, R_PAREN = 29, L_CURLY = 30, + R_CURLY = 31, L_BRACKET = 32, R_BRACKET = 33, ASSIGN = 34, COMMA = 35, + SEMI = 36, HUANHANG = 37, HUANHANGG = 38, COLON = 39, DOT = 40, PLUS_PLUS = 41, + MINUS_MINUS = 42, DECLARE_ASSIGN = 43, ELLIPSIS = 44, EOSSS = 45, LOGICAL_OR = 46, + LOGICAL_AND = 47, EQUALS = 48, NOT_EQUALS = 49, LESS = 50, LESS_OR_EQUALS = 51, + GREATER = 52, GREATER_OR_EQUALS = 53, OR = 54, DIV = 55, MOD = 56, LSHIFT = 57, + RSHIFT = 58, BIT_CLEAR = 59, EXCLAMATION = 60, PLUS = 61, MINUS = 62, + CARET = 63, STAR = 64, AMPERSAND = 65, RECEIVE = 66, DECIMAL_LIT = 67, + BINARY_LIT = 68, OCTAL_LIT = 69, HEX_LIT = 70, FLOAT_LIT = 71, DECIMAL_FLOAT_LIT = 72, + HEX_FLOAT_LIT = 73, IMAGINARY_LIT = 74, RUNE_LIT = 75, BYTE_VALUE = 76, + OCTAL_BYTE_VALUE = 77, HEX_BYTE_VALUE = 78, LITTLE_U_VALUE = 79, BIG_U_VALUE = 80, + RAW_STRING_LIT = 81, INTERPRETED_STRING_LIT = 82, WS = 83, COMMENT = 84, + TERMINATOR = 85, LINE_COMMENT = 86, WS_NLSEMI = 87, COMMENT_NLSEMI = 88, + LINE_COMMENT_NLSEMI = 89 + }; + + enum { + RuleSourceFile = 0, RulePackageClause = 1, RuleImportDecl = 2, RuleImportSpec = 3, + RuleImportPath = 4, RuleDeclaration = 5, RuleConstDecl = 6, RuleConstSpec = 7, + RuleIdentifierList = 8, RuleExpressionList = 9, RuleTypeDecl = 10, RuleTypeSpec = 11, + RuleFunctionDecl = 12, RuleMethodDecl = 13, RuleReceiver = 14, RuleVarDecl = 15, + RuleVarSpec = 16, RuleBlock = 17, RuleStatementList = 18, RuleStatement = 19, + RuleSimpleStmt = 20, RuleExpressionStmt = 21, RuleSendStmt = 22, RuleIncDecStmt = 23, + RuleAssignment = 24, RuleAssign_op = 25, RuleShortVarDecl = 26, RuleEmptyStmt = 27, + RuleLabeledStmt = 28, RuleReturnStmt = 29, RuleBreakStmt = 30, RuleContinueStmt = 31, + RuleGotoStmt = 32, RuleFallthroughStmt = 33, RuleDeferStmt = 34, RuleIfStmt = 35, + RuleSwitchStmt = 36, RuleExprSwitchStmt = 37, RuleExprCaseClause = 38, + RuleExprSwitchCase = 39, RuleTypeSwitchStmt = 40, RuleTypeSwitchGuard = 41, + RuleTypeCaseClause = 42, RuleTypeSwitchCase = 43, RuleTypeList = 44, + RuleSelectStmt = 45, RuleCommClause = 46, RuleCommCase = 47, RuleRecvStmt = 48, + RuleForStmt = 49, RuleForClause = 50, RuleRangeClause = 51, RuleGoStmt = 52, + RuleType_ = 53, RuleTypeName = 54, RuleTypeLit = 55, RuleArrayType = 56, + RuleArrayLength = 57, RuleElementType = 58, RulePointerType = 59, RuleInterfaceType = 60, + RuleSliceType = 61, RuleMapType = 62, RuleChannelType = 63, RuleMethodSpec = 64, + RuleFunctionType = 65, RuleSignature = 66, RuleResult = 67, RuleParameters = 68, + RuleParameterDecl = 69, RuleExpression = 70, RulePrimaryExpr = 71, RuleConversion = 72, + RuleNonNamedType = 73, RuleOperand = 74, RuleLiteral = 75, RuleBasicLit = 76, + RuleInteger = 77, RuleOperandName = 78, RuleQualifiedIdent = 79, RuleCompositeLit = 80, + RuleLiteralType = 81, RuleLiteralValue = 82, RuleElementList = 83, RuleKeyedElement = 84, + RuleKey = 85, RuleElement = 86, RuleStructType = 87, RuleFieldDecl = 88, + RuleString_ = 89, RuleEmbeddedField = 90, RuleFunctionLit = 91, RuleIndex = 92, + RuleSlice_ = 93, RuleTypeAssertion = 94, RuleArguments = 95, RuleMethodExpr = 96, + RuleReceiverType = 97, RuleEoss = 98 + }; + + explicit GoParser(antlr4::TokenStream *input); + ~GoParser(); + + virtual std::string getGrammarFileName() const override; + virtual const antlr4::atn::ATN& getATN() const override { return _atn; }; + virtual const std::vector& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead. + virtual const std::vector& getRuleNames() const override; + virtual antlr4::dfa::Vocabulary& getVocabulary() const override; + + + class SourceFileContext; + class PackageClauseContext; + class ImportDeclContext; + class ImportSpecContext; + class ImportPathContext; + class DeclarationContext; + class ConstDeclContext; + class ConstSpecContext; + class IdentifierListContext; + class ExpressionListContext; + class TypeDeclContext; + class TypeSpecContext; + class FunctionDeclContext; + class MethodDeclContext; + class ReceiverContext; + class VarDeclContext; + class VarSpecContext; + class BlockContext; + class StatementListContext; + class StatementContext; + class SimpleStmtContext; + class ExpressionStmtContext; + class SendStmtContext; + class IncDecStmtContext; + class AssignmentContext; + class Assign_opContext; + class ShortVarDeclContext; + class EmptyStmtContext; + class LabeledStmtContext; + class ReturnStmtContext; + class BreakStmtContext; + class ContinueStmtContext; + class GotoStmtContext; + class FallthroughStmtContext; + class DeferStmtContext; + class IfStmtContext; + class SwitchStmtContext; + class ExprSwitchStmtContext; + class ExprCaseClauseContext; + class ExprSwitchCaseContext; + class TypeSwitchStmtContext; + class TypeSwitchGuardContext; + class TypeCaseClauseContext; + class TypeSwitchCaseContext; + class TypeListContext; + class SelectStmtContext; + class CommClauseContext; + class CommCaseContext; + class RecvStmtContext; + class ForStmtContext; + class ForClauseContext; + class RangeClauseContext; + class GoStmtContext; + class Type_Context; + class TypeNameContext; + class TypeLitContext; + class ArrayTypeContext; + class ArrayLengthContext; + class ElementTypeContext; + class PointerTypeContext; + class InterfaceTypeContext; + class SliceTypeContext; + class MapTypeContext; + class ChannelTypeContext; + class MethodSpecContext; + class FunctionTypeContext; + class SignatureContext; + class ResultContext; + class ParametersContext; + class ParameterDeclContext; + class ExpressionContext; + class PrimaryExprContext; + class ConversionContext; + class NonNamedTypeContext; + class OperandContext; + class LiteralContext; + class BasicLitContext; + class IntegerContext; + class OperandNameContext; + class QualifiedIdentContext; + class CompositeLitContext; + class LiteralTypeContext; + class LiteralValueContext; + class ElementListContext; + class KeyedElementContext; + class KeyContext; + class ElementContext; + class StructTypeContext; + class FieldDeclContext; + class String_Context; + class EmbeddedFieldContext; + class FunctionLitContext; + class IndexContext; + class Slice_Context; + class TypeAssertionContext; + class ArgumentsContext; + class MethodExprContext; + class ReceiverTypeContext; + class EossContext; + + class SourceFileContext : public antlr4::ParserRuleContext { + public: + SourceFileContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + PackageClauseContext *packageClause(); + antlr4::tree::TerminalNode *EOF(); + std::vector eoss(); + EossContext* eoss(size_t i); + std::vector importDecl(); + ImportDeclContext* importDecl(size_t i); + std::vector functionDecl(); + FunctionDeclContext* functionDecl(size_t i); + std::vector methodDecl(); + MethodDeclContext* methodDecl(size_t i); + std::vector declaration(); + DeclarationContext* declaration(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SourceFileContext* sourceFile(); + + class PackageClauseContext : public antlr4::ParserRuleContext { + public: + antlr4::Token *packageName = nullptr; + PackageClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *PACKAGE(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + PackageClauseContext* packageClause(); + + class ImportDeclContext : public antlr4::ParserRuleContext { + public: + ImportDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IMPORT(); + std::vector importSpec(); + ImportSpecContext* importSpec(size_t i); + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ImportDeclContext* importDecl(); + + class ImportSpecContext : public antlr4::ParserRuleContext { + public: + antlr4::Token *alias = nullptr; + ImportSpecContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ImportPathContext *importPath(); + antlr4::tree::TerminalNode *DOT(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ImportSpecContext* importSpec(); + + class ImportPathContext : public antlr4::ParserRuleContext { + public: + ImportPathContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + String_Context *string_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ImportPathContext* importPath(); + + class DeclarationContext : public antlr4::ParserRuleContext { + public: + DeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ConstDeclContext *constDecl(); + TypeDeclContext *typeDecl(); + VarDeclContext *varDecl(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + DeclarationContext* declaration(); + + class ConstDeclContext : public antlr4::ParserRuleContext { + public: + ConstDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CONST(); + std::vector constSpec(); + ConstSpecContext* constSpec(size_t i); + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ConstDeclContext* constDecl(); + + class ConstSpecContext : public antlr4::ParserRuleContext { + public: + ConstSpecContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *ASSIGN(); + ExpressionListContext *expressionList(); + Type_Context *type_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ConstSpecContext* constSpec(); + + class IdentifierListContext : public antlr4::ParserRuleContext { + public: + IdentifierListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector IDENTIFIER(); + antlr4::tree::TerminalNode* IDENTIFIER(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + IdentifierListContext* identifierList(); + + class ExpressionListContext : public antlr4::ParserRuleContext { + public: + ExpressionListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expression(); + ExpressionContext* expression(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ExpressionListContext* expressionList(); + + class TypeDeclContext : public antlr4::ParserRuleContext { + public: + TypeDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *TYPE(); + std::vector typeSpec(); + TypeSpecContext* typeSpec(size_t i); + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeDeclContext* typeDecl(); + + class TypeSpecContext : public antlr4::ParserRuleContext { + public: + TypeSpecContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IDENTIFIER(); + Type_Context *type_(); + antlr4::tree::TerminalNode *ASSIGN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeSpecContext* typeSpec(); + + class FunctionDeclContext : public antlr4::ParserRuleContext { + public: + FunctionDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FUNC(); + antlr4::tree::TerminalNode *IDENTIFIER(); + SignatureContext *signature(); + BlockContext *block(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + FunctionDeclContext* functionDecl(); + + class MethodDeclContext : public antlr4::ParserRuleContext { + public: + MethodDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FUNC(); + ReceiverContext *receiver(); + antlr4::tree::TerminalNode *IDENTIFIER(); + SignatureContext *signature(); + BlockContext *block(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + MethodDeclContext* methodDecl(); + + class ReceiverContext : public antlr4::ParserRuleContext { + public: + ReceiverContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ParametersContext *parameters(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ReceiverContext* receiver(); + + class VarDeclContext : public antlr4::ParserRuleContext { + public: + VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *VAR(); + std::vector varSpec(); + VarSpecContext* varSpec(size_t i); + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + VarDeclContext* varDecl(); + + class VarSpecContext : public antlr4::ParserRuleContext { + public: + VarSpecContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierListContext *identifierList(); + Type_Context *type_(); + antlr4::tree::TerminalNode *ASSIGN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + VarSpecContext* varSpec(); + + class BlockContext : public antlr4::ParserRuleContext { + public: + BlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + std::vector eoss(); + EossContext* eoss(size_t i); + StatementListContext *statementList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + BlockContext* block(); + + class StatementListContext : public antlr4::ParserRuleContext { + public: + StatementListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector statement(); + StatementContext* statement(size_t i); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + StatementListContext* statementList(); + + class StatementContext : public antlr4::ParserRuleContext { + public: + StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + DeclarationContext *declaration(); + LabeledStmtContext *labeledStmt(); + SimpleStmtContext *simpleStmt(); + GoStmtContext *goStmt(); + ReturnStmtContext *returnStmt(); + BreakStmtContext *breakStmt(); + ContinueStmtContext *continueStmt(); + GotoStmtContext *gotoStmt(); + FallthroughStmtContext *fallthroughStmt(); + BlockContext *block(); + IfStmtContext *ifStmt(); + SwitchStmtContext *switchStmt(); + SelectStmtContext *selectStmt(); + ForStmtContext *forStmt(); + DeferStmtContext *deferStmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + StatementContext* statement(); + + class SimpleStmtContext : public antlr4::ParserRuleContext { + public: + SimpleStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + SendStmtContext *sendStmt(); + IncDecStmtContext *incDecStmt(); + AssignmentContext *assignment(); + ExpressionStmtContext *expressionStmt(); + ShortVarDeclContext *shortVarDecl(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SimpleStmtContext* simpleStmt(); + + class ExpressionStmtContext : public antlr4::ParserRuleContext { + public: + ExpressionStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ExpressionStmtContext* expressionStmt(); + + class SendStmtContext : public antlr4::ParserRuleContext { + public: + GoParser::ExpressionContext *channel = nullptr; + SendStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *RECEIVE(); + std::vector expression(); + ExpressionContext* expression(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SendStmtContext* sendStmt(); + + class IncDecStmtContext : public antlr4::ParserRuleContext { + public: + IncDecStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + antlr4::tree::TerminalNode *PLUS_PLUS(); + antlr4::tree::TerminalNode *MINUS_MINUS(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + IncDecStmtContext* incDecStmt(); + + class AssignmentContext : public antlr4::ParserRuleContext { + public: + AssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expressionList(); + ExpressionListContext* expressionList(size_t i); + Assign_opContext *assign_op(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + AssignmentContext* assignment(); + + class Assign_opContext : public antlr4::ParserRuleContext { + public: + Assign_opContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *ASSIGN(); + antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *MINUS(); + antlr4::tree::TerminalNode *OR(); + antlr4::tree::TerminalNode *CARET(); + antlr4::tree::TerminalNode *STAR(); + antlr4::tree::TerminalNode *DIV(); + antlr4::tree::TerminalNode *MOD(); + antlr4::tree::TerminalNode *LSHIFT(); + antlr4::tree::TerminalNode *RSHIFT(); + antlr4::tree::TerminalNode *AMPERSAND(); + antlr4::tree::TerminalNode *BIT_CLEAR(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Assign_opContext* assign_op(); + + class ShortVarDeclContext : public antlr4::ParserRuleContext { + public: + ShortVarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *DECLARE_ASSIGN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ShortVarDeclContext* shortVarDecl(); + + class EmptyStmtContext : public antlr4::ParserRuleContext { + public: + EmptyStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *EOSSS(); + antlr4::tree::TerminalNode *SEMI(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + EmptyStmtContext* emptyStmt(); + + class LabeledStmtContext : public antlr4::ParserRuleContext { + public: + LabeledStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IDENTIFIER(); + antlr4::tree::TerminalNode *COLON(); + StatementContext *statement(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + LabeledStmtContext* labeledStmt(); + + class ReturnStmtContext : public antlr4::ParserRuleContext { + public: + ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *RETURN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ReturnStmtContext* returnStmt(); + + class BreakStmtContext : public antlr4::ParserRuleContext { + public: + BreakStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *BREAK(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + BreakStmtContext* breakStmt(); + + class ContinueStmtContext : public antlr4::ParserRuleContext { + public: + ContinueStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CONTINUE(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ContinueStmtContext* continueStmt(); + + class GotoStmtContext : public antlr4::ParserRuleContext { + public: + GotoStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *GOTO(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + GotoStmtContext* gotoStmt(); + + class FallthroughStmtContext : public antlr4::ParserRuleContext { + public: + FallthroughStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FALLTHROUGH(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + FallthroughStmtContext* fallthroughStmt(); + + class DeferStmtContext : public antlr4::ParserRuleContext { + public: + DeferStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *DEFER(); + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + DeferStmtContext* deferStmt(); + + class IfStmtContext : public antlr4::ParserRuleContext { + public: + IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IF(); + std::vector block(); + BlockContext* block(size_t i); + ExpressionContext *expression(); + EossContext *eoss(); + SimpleStmtContext *simpleStmt(); + antlr4::tree::TerminalNode *ELSE(); + IfStmtContext *ifStmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + IfStmtContext* ifStmt(); + + class SwitchStmtContext : public antlr4::ParserRuleContext { + public: + SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExprSwitchStmtContext *exprSwitchStmt(); + TypeSwitchStmtContext *typeSwitchStmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SwitchStmtContext* switchStmt(); + + class ExprSwitchStmtContext : public antlr4::ParserRuleContext { + public: + ExprSwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SWITCH(); + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + EossContext *eoss(); + std::vector exprCaseClause(); + ExprCaseClauseContext* exprCaseClause(size_t i); + ExpressionContext *expression(); + SimpleStmtContext *simpleStmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ExprSwitchStmtContext* exprSwitchStmt(); + + class ExprCaseClauseContext : public antlr4::ParserRuleContext { + public: + ExprCaseClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExprSwitchCaseContext *exprSwitchCase(); + antlr4::tree::TerminalNode *COLON(); + StatementListContext *statementList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ExprCaseClauseContext* exprCaseClause(); + + class ExprSwitchCaseContext : public antlr4::ParserRuleContext { + public: + ExprSwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CASE(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *DEFAULT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ExprSwitchCaseContext* exprSwitchCase(); + + class TypeSwitchStmtContext : public antlr4::ParserRuleContext { + public: + TypeSwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SWITCH(); + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + TypeSwitchGuardContext *typeSwitchGuard(); + EossContext *eoss(); + SimpleStmtContext *simpleStmt(); + std::vector typeCaseClause(); + TypeCaseClauseContext* typeCaseClause(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeSwitchStmtContext* typeSwitchStmt(); + + class TypeSwitchGuardContext : public antlr4::ParserRuleContext { + public: + TypeSwitchGuardContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + PrimaryExprContext *primaryExpr(); + antlr4::tree::TerminalNode *DOT(); + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *TYPE(); + antlr4::tree::TerminalNode *R_PAREN(); + antlr4::tree::TerminalNode *IDENTIFIER(); + antlr4::tree::TerminalNode *DECLARE_ASSIGN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeSwitchGuardContext* typeSwitchGuard(); + + class TypeCaseClauseContext : public antlr4::ParserRuleContext { + public: + TypeCaseClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeSwitchCaseContext *typeSwitchCase(); + antlr4::tree::TerminalNode *COLON(); + StatementListContext *statementList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeCaseClauseContext* typeCaseClause(); + + class TypeSwitchCaseContext : public antlr4::ParserRuleContext { + public: + TypeSwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CASE(); + TypeListContext *typeList(); + antlr4::tree::TerminalNode *DEFAULT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeSwitchCaseContext* typeSwitchCase(); + + class TypeListContext : public antlr4::ParserRuleContext { + public: + TypeListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector type_(); + Type_Context* type_(size_t i); + std::vector NIL_LIT(); + antlr4::tree::TerminalNode* NIL_LIT(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeListContext* typeList(); + + class SelectStmtContext : public antlr4::ParserRuleContext { + public: + SelectStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SELECT(); + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + std::vector commClause(); + CommClauseContext* commClause(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SelectStmtContext* selectStmt(); + + class CommClauseContext : public antlr4::ParserRuleContext { + public: + CommClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + CommCaseContext *commCase(); + antlr4::tree::TerminalNode *COLON(); + StatementListContext *statementList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + CommClauseContext* commClause(); + + class CommCaseContext : public antlr4::ParserRuleContext { + public: + CommCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CASE(); + SendStmtContext *sendStmt(); + RecvStmtContext *recvStmt(); + antlr4::tree::TerminalNode *DEFAULT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + CommCaseContext* commCase(); + + class RecvStmtContext : public antlr4::ParserRuleContext { + public: + GoParser::ExpressionContext *recvExpr = nullptr; + RecvStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *ASSIGN(); + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *DECLARE_ASSIGN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + RecvStmtContext* recvStmt(); + + class ForStmtContext : public antlr4::ParserRuleContext { + public: + ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FOR(); + BlockContext *block(); + ExpressionContext *expression(); + ForClauseContext *forClause(); + RangeClauseContext *rangeClause(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ForStmtContext* forStmt(); + + class ForClauseContext : public antlr4::ParserRuleContext { + public: + GoParser::SimpleStmtContext *initStmt = nullptr; + GoParser::SimpleStmtContext *postStmt = nullptr; + ForClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector eoss(); + EossContext* eoss(size_t i); + ExpressionContext *expression(); + std::vector simpleStmt(); + SimpleStmtContext* simpleStmt(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ForClauseContext* forClause(); + + class RangeClauseContext : public antlr4::ParserRuleContext { + public: + RangeClauseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *RANGE(); + ExpressionContext *expression(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *ASSIGN(); + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *DECLARE_ASSIGN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + RangeClauseContext* rangeClause(); + + class GoStmtContext : public antlr4::ParserRuleContext { + public: + GoStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *GO(); + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + GoStmtContext* goStmt(); + + class Type_Context : public antlr4::ParserRuleContext { + public: + Type_Context(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeNameContext *typeName(); + TypeLitContext *typeLit(); + antlr4::tree::TerminalNode *L_PAREN(); + Type_Context *type_(); + antlr4::tree::TerminalNode *R_PAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Type_Context* type_(); + + class TypeNameContext : public antlr4::ParserRuleContext { + public: + TypeNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QualifiedIdentContext *qualifiedIdent(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeNameContext* typeName(); + + class TypeLitContext : public antlr4::ParserRuleContext { + public: + TypeLitContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ArrayTypeContext *arrayType(); + StructTypeContext *structType(); + PointerTypeContext *pointerType(); + FunctionTypeContext *functionType(); + InterfaceTypeContext *interfaceType(); + SliceTypeContext *sliceType(); + MapTypeContext *mapType(); + ChannelTypeContext *channelType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeLitContext* typeLit(); + + class ArrayTypeContext : public antlr4::ParserRuleContext { + public: + ArrayTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_BRACKET(); + ArrayLengthContext *arrayLength(); + antlr4::tree::TerminalNode *R_BRACKET(); + ElementTypeContext *elementType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ArrayTypeContext* arrayType(); + + class ArrayLengthContext : public antlr4::ParserRuleContext { + public: + ArrayLengthContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ArrayLengthContext* arrayLength(); + + class ElementTypeContext : public antlr4::ParserRuleContext { + public: + ElementTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Type_Context *type_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ElementTypeContext* elementType(); + + class PointerTypeContext : public antlr4::ParserRuleContext { + public: + PointerTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *STAR(); + Type_Context *type_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + PointerTypeContext* pointerType(); + + class InterfaceTypeContext : public antlr4::ParserRuleContext { + public: + InterfaceTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *INTERFACE(); + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + std::vector eoss(); + EossContext* eoss(size_t i); + std::vector methodSpec(); + MethodSpecContext* methodSpec(size_t i); + std::vector typeName(); + TypeNameContext* typeName(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + InterfaceTypeContext* interfaceType(); + + class SliceTypeContext : public antlr4::ParserRuleContext { + public: + SliceTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_BRACKET(); + antlr4::tree::TerminalNode *R_BRACKET(); + ElementTypeContext *elementType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SliceTypeContext* sliceType(); + + class MapTypeContext : public antlr4::ParserRuleContext { + public: + MapTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *MAP(); + antlr4::tree::TerminalNode *L_BRACKET(); + Type_Context *type_(); + antlr4::tree::TerminalNode *R_BRACKET(); + ElementTypeContext *elementType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + MapTypeContext* mapType(); + + class ChannelTypeContext : public antlr4::ParserRuleContext { + public: + ChannelTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ElementTypeContext *elementType(); + antlr4::tree::TerminalNode *CHAN(); + antlr4::tree::TerminalNode *RECEIVE(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ChannelTypeContext* channelType(); + + class MethodSpecContext : public antlr4::ParserRuleContext { + public: + MethodSpecContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IDENTIFIER(); + ParametersContext *parameters(); + ResultContext *result(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + MethodSpecContext* methodSpec(); + + class FunctionTypeContext : public antlr4::ParserRuleContext { + public: + FunctionTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FUNC(); + SignatureContext *signature(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + FunctionTypeContext* functionType(); + + class SignatureContext : public antlr4::ParserRuleContext { + public: + SignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ParametersContext *parameters(); + ResultContext *result(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SignatureContext* signature(); + + class ResultContext : public antlr4::ParserRuleContext { + public: + ResultContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ParametersContext *parameters(); + Type_Context *type_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ResultContext* result(); + + class ParametersContext : public antlr4::ParserRuleContext { + public: + ParametersContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + std::vector parameterDecl(); + ParameterDeclContext* parameterDecl(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ParametersContext* parameters(); + + class ParameterDeclContext : public antlr4::ParserRuleContext { + public: + ParameterDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Type_Context *type_(); + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *ELLIPSIS(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ParameterDeclContext* parameterDecl(); + + class ExpressionContext : public antlr4::ParserRuleContext { + public: + ExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + + ExpressionContext() = default; + void copyFrom(ExpressionContext *context); + using antlr4::ParserRuleContext::copyFrom; + + virtual size_t getRuleIndex() const override; + + + }; + + class LogicalAndOperationContext : public ExpressionContext { + public: + LogicalAndOperationContext(ExpressionContext *ctx); + + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *LOGICAL_AND(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class UnaryOperationContext : public ExpressionContext { + public: + UnaryOperationContext(ExpressionContext *ctx); + + antlr4::Token *unary_op = nullptr; + ExpressionContext *expression(); + antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *MINUS(); + antlr4::tree::TerminalNode *EXCLAMATION(); + antlr4::tree::TerminalNode *CARET(); + antlr4::tree::TerminalNode *STAR(); + antlr4::tree::TerminalNode *AMPERSAND(); + antlr4::tree::TerminalNode *RECEIVE(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class PrimaryExpressionContext : public ExpressionContext { + public: + PrimaryExpressionContext(ExpressionContext *ctx); + + PrimaryExprContext *primaryExpr(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class PlusMinusOperationContext : public ExpressionContext { + public: + PlusMinusOperationContext(ExpressionContext *ctx); + + antlr4::Token *add_op = nullptr; + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *MINUS(); + antlr4::tree::TerminalNode *OR(); + antlr4::tree::TerminalNode *CARET(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class RelationOperationContext : public ExpressionContext { + public: + RelationOperationContext(ExpressionContext *ctx); + + antlr4::Token *rel_op = nullptr; + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *EQUALS(); + antlr4::tree::TerminalNode *NOT_EQUALS(); + antlr4::tree::TerminalNode *LESS(); + antlr4::tree::TerminalNode *LESS_OR_EQUALS(); + antlr4::tree::TerminalNode *GREATER(); + antlr4::tree::TerminalNode *GREATER_OR_EQUALS(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class MulDivOperationContext : public ExpressionContext { + public: + MulDivOperationContext(ExpressionContext *ctx); + + antlr4::Token *mul_op = nullptr; + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *STAR(); + antlr4::tree::TerminalNode *DIV(); + antlr4::tree::TerminalNode *MOD(); + antlr4::tree::TerminalNode *LSHIFT(); + antlr4::tree::TerminalNode *RSHIFT(); + antlr4::tree::TerminalNode *AMPERSAND(); + antlr4::tree::TerminalNode *BIT_CLEAR(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + class LogicalOrOperationContext : public ExpressionContext { + public: + LogicalOrOperationContext(ExpressionContext *ctx); + + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *LOGICAL_OR(); + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + }; + + ExpressionContext* expression(); + ExpressionContext* expression(int precedence); + class PrimaryExprContext : public antlr4::ParserRuleContext { + public: + PrimaryExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + OperandContext *operand(); + ConversionContext *conversion(); + MethodExprContext *methodExpr(); + PrimaryExprContext *primaryExpr(); + IndexContext *index(); + Slice_Context *slice_(); + TypeAssertionContext *typeAssertion(); + ArgumentsContext *arguments(); + antlr4::tree::TerminalNode *DOT(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + PrimaryExprContext* primaryExpr(); + PrimaryExprContext* primaryExpr(int precedence); + class ConversionContext : public antlr4::ParserRuleContext { + public: + ConversionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + NonNamedTypeContext *nonNamedType(); + antlr4::tree::TerminalNode *L_PAREN(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *R_PAREN(); + antlr4::tree::TerminalNode *COMMA(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ConversionContext* conversion(); + + class NonNamedTypeContext : public antlr4::ParserRuleContext { + public: + NonNamedTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeLitContext *typeLit(); + antlr4::tree::TerminalNode *L_PAREN(); + NonNamedTypeContext *nonNamedType(); + antlr4::tree::TerminalNode *R_PAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + NonNamedTypeContext* nonNamedType(); + + class OperandContext : public antlr4::ParserRuleContext { + public: + OperandContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + LiteralContext *literal(); + OperandNameContext *operandName(); + antlr4::tree::TerminalNode *L_PAREN(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *R_PAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + OperandContext* operand(); + + class LiteralContext : public antlr4::ParserRuleContext { + public: + LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + BasicLitContext *basicLit(); + CompositeLitContext *compositeLit(); + FunctionLitContext *functionLit(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + LiteralContext* literal(); + + class BasicLitContext : public antlr4::ParserRuleContext { + public: + BasicLitContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *NIL_LIT(); + IntegerContext *integer(); + String_Context *string_(); + antlr4::tree::TerminalNode *FLOAT_LIT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + BasicLitContext* basicLit(); + + class IntegerContext : public antlr4::ParserRuleContext { + public: + IntegerContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *DECIMAL_LIT(); + antlr4::tree::TerminalNode *BINARY_LIT(); + antlr4::tree::TerminalNode *OCTAL_LIT(); + antlr4::tree::TerminalNode *HEX_LIT(); + antlr4::tree::TerminalNode *IMAGINARY_LIT(); + antlr4::tree::TerminalNode *RUNE_LIT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + IntegerContext* integer(); + + class OperandNameContext : public antlr4::ParserRuleContext { + public: + OperandNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + OperandNameContext* operandName(); + + class QualifiedIdentContext : public antlr4::ParserRuleContext { + public: + QualifiedIdentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector IDENTIFIER(); + antlr4::tree::TerminalNode* IDENTIFIER(size_t i); + antlr4::tree::TerminalNode *DOT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + QualifiedIdentContext* qualifiedIdent(); + + class CompositeLitContext : public antlr4::ParserRuleContext { + public: + CompositeLitContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + LiteralTypeContext *literalType(); + LiteralValueContext *literalValue(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + CompositeLitContext* compositeLit(); + + class LiteralTypeContext : public antlr4::ParserRuleContext { + public: + LiteralTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + StructTypeContext *structType(); + ArrayTypeContext *arrayType(); + antlr4::tree::TerminalNode *L_BRACKET(); + antlr4::tree::TerminalNode *ELLIPSIS(); + antlr4::tree::TerminalNode *R_BRACKET(); + ElementTypeContext *elementType(); + SliceTypeContext *sliceType(); + MapTypeContext *mapType(); + TypeNameContext *typeName(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + LiteralTypeContext* literalType(); + + class LiteralValueContext : public antlr4::ParserRuleContext { + public: + LiteralValueContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + ElementListContext *elementList(); + antlr4::tree::TerminalNode *COMMA(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + LiteralValueContext* literalValue(); + + class ElementListContext : public antlr4::ParserRuleContext { + public: + ElementListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector keyedElement(); + KeyedElementContext* keyedElement(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ElementListContext* elementList(); + + class KeyedElementContext : public antlr4::ParserRuleContext { + public: + KeyedElementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ElementContext *element(); + KeyContext *key(); + antlr4::tree::TerminalNode *COLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + KeyedElementContext* keyedElement(); + + class KeyContext : public antlr4::ParserRuleContext { + public: + KeyContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + LiteralValueContext *literalValue(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + KeyContext* key(); + + class ElementContext : public antlr4::ParserRuleContext { + public: + ElementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + LiteralValueContext *literalValue(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ElementContext* element(); + + class StructTypeContext : public antlr4::ParserRuleContext { + public: + StructTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *STRUCT(); + antlr4::tree::TerminalNode *L_CURLY(); + antlr4::tree::TerminalNode *R_CURLY(); + std::vector fieldDecl(); + FieldDeclContext* fieldDecl(size_t i); + std::vector eoss(); + EossContext* eoss(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + StructTypeContext* structType(); + + class FieldDeclContext : public antlr4::ParserRuleContext { + public: + GoParser::String_Context *tag = nullptr; + FieldDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierListContext *identifierList(); + Type_Context *type_(); + EmbeddedFieldContext *embeddedField(); + String_Context *string_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + FieldDeclContext* fieldDecl(); + + class String_Context : public antlr4::ParserRuleContext { + public: + String_Context(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *RAW_STRING_LIT(); + antlr4::tree::TerminalNode *INTERPRETED_STRING_LIT(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + String_Context* string_(); + + class EmbeddedFieldContext : public antlr4::ParserRuleContext { + public: + EmbeddedFieldContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeNameContext *typeName(); + antlr4::tree::TerminalNode *STAR(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + EmbeddedFieldContext* embeddedField(); + + class FunctionLitContext : public antlr4::ParserRuleContext { + public: + FunctionLitContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FUNC(); + SignatureContext *signature(); + BlockContext *block(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + FunctionLitContext* functionLit(); + + class IndexContext : public antlr4::ParserRuleContext { + public: + IndexContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_BRACKET(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *R_BRACKET(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + IndexContext* index(); + + class Slice_Context : public antlr4::ParserRuleContext { + public: + Slice_Context(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_BRACKET(); + antlr4::tree::TerminalNode *R_BRACKET(); + std::vector COLON(); + antlr4::tree::TerminalNode* COLON(size_t i); + std::vector expression(); + ExpressionContext* expression(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Slice_Context* slice_(); + + class TypeAssertionContext : public antlr4::ParserRuleContext { + public: + TypeAssertionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *DOT(); + antlr4::tree::TerminalNode *L_PAREN(); + Type_Context *type_(); + antlr4::tree::TerminalNode *R_PAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeAssertionContext* typeAssertion(); + + class ArgumentsContext : public antlr4::ParserRuleContext { + public: + ArgumentsContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *L_PAREN(); + antlr4::tree::TerminalNode *R_PAREN(); + ExpressionListContext *expressionList(); + NonNamedTypeContext *nonNamedType(); + antlr4::tree::TerminalNode *ELLIPSIS(); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ArgumentsContext* arguments(); + + class MethodExprContext : public antlr4::ParserRuleContext { + public: + MethodExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + NonNamedTypeContext *nonNamedType(); + antlr4::tree::TerminalNode *DOT(); + antlr4::tree::TerminalNode *IDENTIFIER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + MethodExprContext* methodExpr(); + + class ReceiverTypeContext : public antlr4::ParserRuleContext { + public: + ReceiverTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Type_Context *type_(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ReceiverTypeContext* receiverType(); + + class EossContext : public antlr4::ParserRuleContext { + public: + EossContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SEMI(); + antlr4::tree::TerminalNode *EOSSS(); + antlr4::tree::TerminalNode *HUANHANG(); + antlr4::tree::TerminalNode *HUANHANGG(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + EossContext* eoss(); + + + virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + bool expressionSempred(ExpressionContext *_localctx, size_t predicateIndex); + bool primaryExprSempred(PrimaryExprContext *_localctx, size_t predicateIndex); + +private: + static std::vector _decisionToDFA; + static antlr4::atn::PredictionContextCache _sharedContextCache; + static std::vector _ruleNames; + static std::vector _tokenNames; + + static std::vector _literalNames; + static std::vector _symbolicNames; + static antlr4::dfa::Vocabulary _vocabulary; + static antlr4::atn::ATN _atn; + static std::vector _serializedATN; + + + struct Initializer { + Initializer(); + }; + static Initializer _init; +}; + diff --git a/grammar/cpp/GoParser.interp b/grammar/cpp/GoParser.interp new file mode 100644 index 0000000..9c2388d --- /dev/null +++ b/grammar/cpp/GoParser.interp @@ -0,0 +1,288 @@ +token literal names: +null +'break' +'default' +'func' +'interface' +'select' +'case' +'defer' +'go' +'map' +'struct' +'chan' +'else' +'goto' +'package' +'switch' +'const' +'fallthrough' +'if' +'range' +'type' +'continue' +'for' +'import' +'return' +'var' +'nil' +null +'(' +')' +'{' +'}' +'[' +']' +'=' +',' +';' +'\n' +'\r\n' +':' +'.' +'++' +'--' +':=' +'...' +null +'||' +'&&' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'|' +'/' +'%' +'<<' +'>>' +'&^' +'!' +'+' +'-' +'^' +'*' +'&' +'<-' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +HUANHANG +HUANHANGG +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +EOSSS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +IMAGINARY_LIT +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI + +rule names: +sourceFile +packageClause +importDecl +importSpec +importPath +declaration +constDecl +constSpec +identifierList +expressionList +typeDecl +typeSpec +functionDecl +methodDecl +receiver +varDecl +varSpec +block +statementList +statement +simpleStmt +expressionStmt +sendStmt +incDecStmt +assignment +assign_op +shortVarDecl +emptyStmt +labeledStmt +returnStmt +breakStmt +continueStmt +gotoStmt +fallthroughStmt +deferStmt +ifStmt +switchStmt +exprSwitchStmt +exprCaseClause +exprSwitchCase +typeSwitchStmt +typeSwitchGuard +typeCaseClause +typeSwitchCase +typeList +selectStmt +commClause +commCase +recvStmt +forStmt +forClause +rangeClause +goStmt +type_ +typeName +typeLit +arrayType +arrayLength +elementType +pointerType +interfaceType +sliceType +mapType +channelType +methodSpec +functionType +signature +result +parameters +parameterDecl +expression +primaryExpr +conversion +nonNamedType +operand +literal +basicLit +integer +operandName +qualifiedIdent +compositeLit +literalType +literalValue +elementList +keyedElement +key +element +structType +fieldDecl +string_ +embeddedField +functionLit +index +slice_ +typeAssertion +arguments +methodExpr +receiverType +eoss + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 91, 969, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 3, 2, 3, 2, 7, 2, 203, 10, 2, 12, 2, 14, 2, 206, 11, 2, 3, 2, 3, 2, 7, 2, 210, 10, 2, 12, 2, 14, 2, 213, 11, 2, 7, 2, 215, 10, 2, 12, 2, 14, 2, 218, 11, 2, 3, 2, 3, 2, 3, 2, 5, 2, 223, 10, 2, 3, 2, 7, 2, 226, 10, 2, 12, 2, 14, 2, 229, 11, 2, 7, 2, 231, 10, 2, 12, 2, 14, 2, 234, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 247, 10, 4, 12, 4, 14, 4, 250, 11, 4, 3, 4, 5, 4, 253, 10, 4, 3, 5, 5, 5, 256, 10, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 5, 7, 265, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 273, 10, 8, 12, 8, 14, 8, 276, 11, 8, 3, 8, 5, 8, 279, 10, 8, 3, 9, 3, 9, 5, 9, 283, 10, 9, 3, 9, 3, 9, 5, 9, 287, 10, 9, 3, 10, 3, 10, 3, 10, 7, 10, 292, 10, 10, 12, 10, 14, 10, 295, 11, 10, 3, 11, 3, 11, 3, 11, 7, 11, 300, 10, 11, 12, 11, 14, 11, 303, 11, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 311, 10, 12, 12, 12, 14, 12, 314, 11, 12, 3, 12, 5, 12, 317, 10, 12, 3, 13, 3, 13, 5, 13, 321, 10, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 329, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 336, 10, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 346, 10, 17, 12, 17, 14, 17, 349, 11, 17, 3, 17, 5, 17, 352, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 358, 10, 18, 3, 18, 3, 18, 5, 18, 362, 10, 18, 3, 19, 3, 19, 7, 19, 366, 10, 19, 12, 19, 14, 19, 369, 11, 19, 3, 19, 5, 19, 372, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 6, 20, 378, 10, 20, 13, 20, 14, 20, 379, 6, 20, 382, 10, 20, 13, 20, 14, 20, 383, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 401, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 408, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 5, 27, 424, 10, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 5, 30, 437, 10, 30, 3, 31, 3, 31, 5, 31, 441, 10, 31, 3, 32, 3, 32, 5, 32, 445, 10, 32, 3, 33, 3, 33, 5, 33, 449, 10, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 468, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 474, 10, 37, 5, 37, 476, 10, 37, 3, 38, 3, 38, 5, 38, 480, 10, 38, 3, 39, 3, 39, 5, 39, 484, 10, 39, 3, 39, 5, 39, 487, 10, 39, 3, 39, 3, 39, 5, 39, 491, 10, 39, 5, 39, 493, 10, 39, 3, 39, 3, 39, 7, 39, 497, 10, 39, 12, 39, 14, 39, 500, 11, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 5, 40, 507, 10, 40, 3, 41, 3, 41, 3, 41, 5, 41, 512, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 523, 10, 42, 3, 42, 3, 42, 7, 42, 527, 10, 42, 12, 42, 14, 42, 530, 11, 42, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 536, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 5, 44, 547, 10, 44, 3, 45, 3, 45, 3, 45, 5, 45, 552, 10, 45, 3, 46, 3, 46, 5, 46, 556, 10, 46, 3, 46, 3, 46, 3, 46, 5, 46, 561, 10, 46, 7, 46, 563, 10, 46, 12, 46, 14, 46, 566, 11, 46, 3, 47, 3, 47, 3, 47, 7, 47, 571, 10, 47, 12, 47, 14, 47, 574, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 5, 48, 581, 10, 48, 3, 49, 3, 49, 3, 49, 5, 49, 586, 10, 49, 3, 49, 5, 49, 589, 10, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 597, 10, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 605, 10, 51, 3, 51, 3, 51, 3, 52, 5, 52, 610, 10, 52, 3, 52, 3, 52, 5, 52, 614, 10, 52, 3, 52, 3, 52, 5, 52, 618, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 626, 10, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 640, 10, 55, 3, 56, 3, 56, 5, 56, 644, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 654, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 672, 10, 62, 3, 62, 3, 62, 7, 62, 676, 10, 62, 12, 62, 14, 62, 679, 11, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 698, 10, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 708, 10, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 717, 10, 68, 3, 69, 3, 69, 5, 69, 721, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 7, 70, 727, 10, 70, 12, 70, 14, 70, 730, 11, 70, 3, 70, 5, 70, 733, 10, 70, 5, 70, 735, 10, 70, 3, 70, 3, 70, 3, 71, 5, 71, 740, 10, 71, 3, 71, 5, 71, 743, 10, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 751, 10, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 7, 72, 768, 10, 72, 12, 72, 14, 72, 771, 11, 72, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 777, 10, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 786, 10, 73, 7, 73, 788, 10, 73, 12, 73, 14, 73, 791, 11, 73, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 797, 10, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 806, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 814, 10, 76, 3, 77, 3, 77, 3, 77, 5, 77, 819, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 825, 10, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 847, 10, 83, 3, 84, 3, 84, 3, 84, 5, 84, 852, 10, 84, 5, 84, 854, 10, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 7, 85, 861, 10, 85, 12, 85, 14, 85, 864, 11, 85, 3, 86, 3, 86, 3, 86, 5, 86, 869, 10, 86, 3, 86, 3, 86, 3, 87, 3, 87, 5, 87, 875, 10, 87, 3, 88, 3, 88, 5, 88, 879, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 886, 10, 89, 12, 89, 14, 89, 889, 11, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 897, 10, 90, 3, 90, 5, 90, 900, 10, 90, 3, 91, 3, 91, 3, 92, 5, 92, 905, 10, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 5, 95, 919, 10, 95, 3, 95, 3, 95, 5, 95, 923, 10, 95, 3, 95, 5, 95, 926, 10, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 933, 10, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 947, 10, 97, 5, 97, 949, 10, 97, 3, 97, 5, 97, 952, 10, 97, 3, 97, 5, 97, 955, 10, 97, 5, 97, 957, 10, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 2, 4, 142, 144, 101, 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, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 2, 13, 4, 2, 29, 29, 42, 42, 3, 2, 43, 44, 4, 2, 56, 61, 63, 67, 4, 2, 38, 38, 47, 47, 3, 2, 62, 68, 4, 2, 57, 61, 66, 67, 4, 2, 56, 56, 63, 65, 3, 2, 50, 55, 4, 2, 69, 72, 76, 77, 3, 2, 83, 84, 4, 2, 38, 40, 47, 47, 2, 1026, 2, 200, 3, 2, 2, 2, 4, 237, 3, 2, 2, 2, 6, 240, 3, 2, 2, 2, 8, 255, 3, 2, 2, 2, 10, 259, 3, 2, 2, 2, 12, 264, 3, 2, 2, 2, 14, 266, 3, 2, 2, 2, 16, 280, 3, 2, 2, 2, 18, 288, 3, 2, 2, 2, 20, 296, 3, 2, 2, 2, 22, 304, 3, 2, 2, 2, 24, 318, 3, 2, 2, 2, 26, 324, 3, 2, 2, 2, 28, 330, 3, 2, 2, 2, 30, 337, 3, 2, 2, 2, 32, 339, 3, 2, 2, 2, 34, 353, 3, 2, 2, 2, 36, 363, 3, 2, 2, 2, 38, 381, 3, 2, 2, 2, 40, 400, 3, 2, 2, 2, 42, 407, 3, 2, 2, 2, 44, 409, 3, 2, 2, 2, 46, 411, 3, 2, 2, 2, 48, 415, 3, 2, 2, 2, 50, 418, 3, 2, 2, 2, 52, 423, 3, 2, 2, 2, 54, 427, 3, 2, 2, 2, 56, 431, 3, 2, 2, 2, 58, 433, 3, 2, 2, 2, 60, 438, 3, 2, 2, 2, 62, 442, 3, 2, 2, 2, 64, 446, 3, 2, 2, 2, 66, 450, 3, 2, 2, 2, 68, 453, 3, 2, 2, 2, 70, 455, 3, 2, 2, 2, 72, 458, 3, 2, 2, 2, 74, 479, 3, 2, 2, 2, 76, 481, 3, 2, 2, 2, 78, 503, 3, 2, 2, 2, 80, 511, 3, 2, 2, 2, 82, 513, 3, 2, 2, 2, 84, 535, 3, 2, 2, 2, 86, 543, 3, 2, 2, 2, 88, 551, 3, 2, 2, 2, 90, 555, 3, 2, 2, 2, 92, 567, 3, 2, 2, 2, 94, 577, 3, 2, 2, 2, 96, 588, 3, 2, 2, 2, 98, 596, 3, 2, 2, 2, 100, 600, 3, 2, 2, 2, 102, 609, 3, 2, 2, 2, 104, 625, 3, 2, 2, 2, 106, 630, 3, 2, 2, 2, 108, 639, 3, 2, 2, 2, 110, 643, 3, 2, 2, 2, 112, 653, 3, 2, 2, 2, 114, 655, 3, 2, 2, 2, 116, 660, 3, 2, 2, 2, 118, 662, 3, 2, 2, 2, 120, 664, 3, 2, 2, 2, 122, 667, 3, 2, 2, 2, 124, 682, 3, 2, 2, 2, 126, 686, 3, 2, 2, 2, 128, 697, 3, 2, 2, 2, 130, 707, 3, 2, 2, 2, 132, 709, 3, 2, 2, 2, 134, 716, 3, 2, 2, 2, 136, 720, 3, 2, 2, 2, 138, 722, 3, 2, 2, 2, 140, 739, 3, 2, 2, 2, 142, 750, 3, 2, 2, 2, 144, 776, 3, 2, 2, 2, 146, 792, 3, 2, 2, 2, 148, 805, 3, 2, 2, 2, 150, 813, 3, 2, 2, 2, 152, 818, 3, 2, 2, 2, 154, 824, 3, 2, 2, 2, 156, 826, 3, 2, 2, 2, 158, 828, 3, 2, 2, 2, 160, 830, 3, 2, 2, 2, 162, 834, 3, 2, 2, 2, 164, 846, 3, 2, 2, 2, 166, 848, 3, 2, 2, 2, 168, 857, 3, 2, 2, 2, 170, 868, 3, 2, 2, 2, 172, 874, 3, 2, 2, 2, 174, 878, 3, 2, 2, 2, 176, 880, 3, 2, 2, 2, 178, 896, 3, 2, 2, 2, 180, 901, 3, 2, 2, 2, 182, 904, 3, 2, 2, 2, 184, 908, 3, 2, 2, 2, 186, 912, 3, 2, 2, 2, 188, 916, 3, 2, 2, 2, 190, 936, 3, 2, 2, 2, 192, 941, 3, 2, 2, 2, 194, 960, 3, 2, 2, 2, 196, 964, 3, 2, 2, 2, 198, 966, 3, 2, 2, 2, 200, 204, 5, 4, 3, 2, 201, 203, 5, 198, 100, 2, 202, 201, 3, 2, 2, 2, 203, 206, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 216, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 207, 211, 5, 6, 4, 2, 208, 210, 5, 198, 100, 2, 209, 208, 3, 2, 2, 2, 210, 213, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 215, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 214, 207, 3, 2, 2, 2, 215, 218, 3, 2, 2, 2, 216, 214, 3, 2, 2, 2, 216, 217, 3, 2, 2, 2, 217, 232, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 219, 223, 5, 26, 14, 2, 220, 223, 5, 28, 15, 2, 221, 223, 5, 12, 7, 2, 222, 219, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 222, 221, 3, 2, 2, 2, 223, 227, 3, 2, 2, 2, 224, 226, 5, 198, 100, 2, 225, 224, 3, 2, 2, 2, 226, 229, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 231, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 222, 3, 2, 2, 2, 231, 234, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 232, 233, 3, 2, 2, 2, 233, 235, 3, 2, 2, 2, 234, 232, 3, 2, 2, 2, 235, 236, 7, 2, 2, 3, 236, 3, 3, 2, 2, 2, 237, 238, 7, 16, 2, 2, 238, 239, 7, 29, 2, 2, 239, 5, 3, 2, 2, 2, 240, 252, 7, 25, 2, 2, 241, 253, 5, 8, 5, 2, 242, 248, 7, 30, 2, 2, 243, 244, 5, 8, 5, 2, 244, 245, 5, 198, 100, 2, 245, 247, 3, 2, 2, 2, 246, 243, 3, 2, 2, 2, 247, 250, 3, 2, 2, 2, 248, 246, 3, 2, 2, 2, 248, 249, 3, 2, 2, 2, 249, 251, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 251, 253, 7, 31, 2, 2, 252, 241, 3, 2, 2, 2, 252, 242, 3, 2, 2, 2, 253, 7, 3, 2, 2, 2, 254, 256, 9, 2, 2, 2, 255, 254, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 257, 258, 5, 10, 6, 2, 258, 9, 3, 2, 2, 2, 259, 260, 5, 180, 91, 2, 260, 11, 3, 2, 2, 2, 261, 265, 5, 14, 8, 2, 262, 265, 5, 22, 12, 2, 263, 265, 5, 32, 17, 2, 264, 261, 3, 2, 2, 2, 264, 262, 3, 2, 2, 2, 264, 263, 3, 2, 2, 2, 265, 13, 3, 2, 2, 2, 266, 278, 7, 18, 2, 2, 267, 279, 5, 16, 9, 2, 268, 274, 7, 30, 2, 2, 269, 270, 5, 16, 9, 2, 270, 271, 5, 198, 100, 2, 271, 273, 3, 2, 2, 2, 272, 269, 3, 2, 2, 2, 273, 276, 3, 2, 2, 2, 274, 272, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 277, 3, 2, 2, 2, 276, 274, 3, 2, 2, 2, 277, 279, 7, 31, 2, 2, 278, 267, 3, 2, 2, 2, 278, 268, 3, 2, 2, 2, 279, 15, 3, 2, 2, 2, 280, 286, 5, 18, 10, 2, 281, 283, 5, 108, 55, 2, 282, 281, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 285, 7, 36, 2, 2, 285, 287, 5, 20, 11, 2, 286, 282, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 287, 17, 3, 2, 2, 2, 288, 293, 7, 29, 2, 2, 289, 290, 7, 37, 2, 2, 290, 292, 7, 29, 2, 2, 291, 289, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 291, 3, 2, 2, 2, 293, 294, 3, 2, 2, 2, 294, 19, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 296, 301, 5, 142, 72, 2, 297, 298, 7, 37, 2, 2, 298, 300, 5, 142, 72, 2, 299, 297, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 299, 3, 2, 2, 2, 301, 302, 3, 2, 2, 2, 302, 21, 3, 2, 2, 2, 303, 301, 3, 2, 2, 2, 304, 316, 7, 22, 2, 2, 305, 317, 5, 24, 13, 2, 306, 312, 7, 30, 2, 2, 307, 308, 5, 24, 13, 2, 308, 309, 5, 198, 100, 2, 309, 311, 3, 2, 2, 2, 310, 307, 3, 2, 2, 2, 311, 314, 3, 2, 2, 2, 312, 310, 3, 2, 2, 2, 312, 313, 3, 2, 2, 2, 313, 315, 3, 2, 2, 2, 314, 312, 3, 2, 2, 2, 315, 317, 7, 31, 2, 2, 316, 305, 3, 2, 2, 2, 316, 306, 3, 2, 2, 2, 317, 23, 3, 2, 2, 2, 318, 320, 7, 29, 2, 2, 319, 321, 7, 36, 2, 2, 320, 319, 3, 2, 2, 2, 320, 321, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, 323, 5, 108, 55, 2, 323, 25, 3, 2, 2, 2, 324, 325, 7, 5, 2, 2, 325, 326, 7, 29, 2, 2, 326, 328, 5, 134, 68, 2, 327, 329, 5, 36, 19, 2, 328, 327, 3, 2, 2, 2, 328, 329, 3, 2, 2, 2, 329, 27, 3, 2, 2, 2, 330, 331, 7, 5, 2, 2, 331, 332, 5, 30, 16, 2, 332, 333, 7, 29, 2, 2, 333, 335, 5, 134, 68, 2, 334, 336, 5, 36, 19, 2, 335, 334, 3, 2, 2, 2, 335, 336, 3, 2, 2, 2, 336, 29, 3, 2, 2, 2, 337, 338, 5, 138, 70, 2, 338, 31, 3, 2, 2, 2, 339, 351, 7, 27, 2, 2, 340, 352, 5, 34, 18, 2, 341, 347, 7, 30, 2, 2, 342, 343, 5, 34, 18, 2, 343, 344, 5, 198, 100, 2, 344, 346, 3, 2, 2, 2, 345, 342, 3, 2, 2, 2, 346, 349, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2, 347, 348, 3, 2, 2, 2, 348, 350, 3, 2, 2, 2, 349, 347, 3, 2, 2, 2, 350, 352, 7, 31, 2, 2, 351, 340, 3, 2, 2, 2, 351, 341, 3, 2, 2, 2, 352, 33, 3, 2, 2, 2, 353, 361, 5, 18, 10, 2, 354, 357, 5, 108, 55, 2, 355, 356, 7, 36, 2, 2, 356, 358, 5, 20, 11, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 362, 3, 2, 2, 2, 359, 360, 7, 36, 2, 2, 360, 362, 5, 20, 11, 2, 361, 354, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 35, 3, 2, 2, 2, 363, 367, 7, 32, 2, 2, 364, 366, 5, 198, 100, 2, 365, 364, 3, 2, 2, 2, 366, 369, 3, 2, 2, 2, 367, 365, 3, 2, 2, 2, 367, 368, 3, 2, 2, 2, 368, 371, 3, 2, 2, 2, 369, 367, 3, 2, 2, 2, 370, 372, 5, 38, 20, 2, 371, 370, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 374, 7, 33, 2, 2, 374, 37, 3, 2, 2, 2, 375, 377, 5, 40, 21, 2, 376, 378, 5, 198, 100, 2, 377, 376, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 377, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 382, 3, 2, 2, 2, 381, 375, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 39, 3, 2, 2, 2, 385, 401, 5, 12, 7, 2, 386, 401, 5, 58, 30, 2, 387, 401, 5, 42, 22, 2, 388, 401, 5, 106, 54, 2, 389, 401, 5, 60, 31, 2, 390, 401, 5, 62, 32, 2, 391, 401, 5, 64, 33, 2, 392, 401, 5, 66, 34, 2, 393, 401, 5, 68, 35, 2, 394, 401, 5, 36, 19, 2, 395, 401, 5, 72, 37, 2, 396, 401, 5, 74, 38, 2, 397, 401, 5, 92, 47, 2, 398, 401, 5, 100, 51, 2, 399, 401, 5, 70, 36, 2, 400, 385, 3, 2, 2, 2, 400, 386, 3, 2, 2, 2, 400, 387, 3, 2, 2, 2, 400, 388, 3, 2, 2, 2, 400, 389, 3, 2, 2, 2, 400, 390, 3, 2, 2, 2, 400, 391, 3, 2, 2, 2, 400, 392, 3, 2, 2, 2, 400, 393, 3, 2, 2, 2, 400, 394, 3, 2, 2, 2, 400, 395, 3, 2, 2, 2, 400, 396, 3, 2, 2, 2, 400, 397, 3, 2, 2, 2, 400, 398, 3, 2, 2, 2, 400, 399, 3, 2, 2, 2, 401, 41, 3, 2, 2, 2, 402, 408, 5, 46, 24, 2, 403, 408, 5, 48, 25, 2, 404, 408, 5, 50, 26, 2, 405, 408, 5, 44, 23, 2, 406, 408, 5, 54, 28, 2, 407, 402, 3, 2, 2, 2, 407, 403, 3, 2, 2, 2, 407, 404, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 407, 406, 3, 2, 2, 2, 408, 43, 3, 2, 2, 2, 409, 410, 5, 142, 72, 2, 410, 45, 3, 2, 2, 2, 411, 412, 5, 142, 72, 2, 412, 413, 7, 68, 2, 2, 413, 414, 5, 142, 72, 2, 414, 47, 3, 2, 2, 2, 415, 416, 5, 142, 72, 2, 416, 417, 9, 3, 2, 2, 417, 49, 3, 2, 2, 2, 418, 419, 5, 20, 11, 2, 419, 420, 5, 52, 27, 2, 420, 421, 5, 20, 11, 2, 421, 51, 3, 2, 2, 2, 422, 424, 9, 4, 2, 2, 423, 422, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 426, 7, 36, 2, 2, 426, 53, 3, 2, 2, 2, 427, 428, 5, 18, 10, 2, 428, 429, 7, 45, 2, 2, 429, 430, 5, 20, 11, 2, 430, 55, 3, 2, 2, 2, 431, 432, 9, 5, 2, 2, 432, 57, 3, 2, 2, 2, 433, 434, 7, 29, 2, 2, 434, 436, 7, 41, 2, 2, 435, 437, 5, 40, 21, 2, 436, 435, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 59, 3, 2, 2, 2, 438, 440, 7, 26, 2, 2, 439, 441, 5, 20, 11, 2, 440, 439, 3, 2, 2, 2, 440, 441, 3, 2, 2, 2, 441, 61, 3, 2, 2, 2, 442, 444, 7, 3, 2, 2, 443, 445, 7, 29, 2, 2, 444, 443, 3, 2, 2, 2, 444, 445, 3, 2, 2, 2, 445, 63, 3, 2, 2, 2, 446, 448, 7, 23, 2, 2, 447, 449, 7, 29, 2, 2, 448, 447, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 65, 3, 2, 2, 2, 450, 451, 7, 15, 2, 2, 451, 452, 7, 29, 2, 2, 452, 67, 3, 2, 2, 2, 453, 454, 7, 19, 2, 2, 454, 69, 3, 2, 2, 2, 455, 456, 7, 9, 2, 2, 456, 457, 5, 142, 72, 2, 457, 71, 3, 2, 2, 2, 458, 467, 7, 20, 2, 2, 459, 468, 5, 142, 72, 2, 460, 461, 5, 198, 100, 2, 461, 462, 5, 142, 72, 2, 462, 468, 3, 2, 2, 2, 463, 464, 5, 42, 22, 2, 464, 465, 5, 198, 100, 2, 465, 466, 5, 142, 72, 2, 466, 468, 3, 2, 2, 2, 467, 459, 3, 2, 2, 2, 467, 460, 3, 2, 2, 2, 467, 463, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 475, 5, 36, 19, 2, 470, 473, 7, 14, 2, 2, 471, 474, 5, 72, 37, 2, 472, 474, 5, 36, 19, 2, 473, 471, 3, 2, 2, 2, 473, 472, 3, 2, 2, 2, 474, 476, 3, 2, 2, 2, 475, 470, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 73, 3, 2, 2, 2, 477, 480, 5, 76, 39, 2, 478, 480, 5, 82, 42, 2, 479, 477, 3, 2, 2, 2, 479, 478, 3, 2, 2, 2, 480, 75, 3, 2, 2, 2, 481, 492, 7, 17, 2, 2, 482, 484, 5, 142, 72, 2, 483, 482, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 493, 3, 2, 2, 2, 485, 487, 5, 42, 22, 2, 486, 485, 3, 2, 2, 2, 486, 487, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 490, 5, 198, 100, 2, 489, 491, 5, 142, 72, 2, 490, 489, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 493, 3, 2, 2, 2, 492, 483, 3, 2, 2, 2, 492, 486, 3, 2, 2, 2, 493, 494, 3, 2, 2, 2, 494, 498, 7, 32, 2, 2, 495, 497, 5, 78, 40, 2, 496, 495, 3, 2, 2, 2, 497, 500, 3, 2, 2, 2, 498, 496, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, 499, 501, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 501, 502, 7, 33, 2, 2, 502, 77, 3, 2, 2, 2, 503, 504, 5, 80, 41, 2, 504, 506, 7, 41, 2, 2, 505, 507, 5, 38, 20, 2, 506, 505, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 79, 3, 2, 2, 2, 508, 509, 7, 8, 2, 2, 509, 512, 5, 20, 11, 2, 510, 512, 7, 4, 2, 2, 511, 508, 3, 2, 2, 2, 511, 510, 3, 2, 2, 2, 512, 81, 3, 2, 2, 2, 513, 522, 7, 17, 2, 2, 514, 523, 5, 84, 43, 2, 515, 516, 5, 198, 100, 2, 516, 517, 5, 84, 43, 2, 517, 523, 3, 2, 2, 2, 518, 519, 5, 42, 22, 2, 519, 520, 5, 198, 100, 2, 520, 521, 5, 84, 43, 2, 521, 523, 3, 2, 2, 2, 522, 514, 3, 2, 2, 2, 522, 515, 3, 2, 2, 2, 522, 518, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 528, 7, 32, 2, 2, 525, 527, 5, 86, 44, 2, 526, 525, 3, 2, 2, 2, 527, 530, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 531, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 531, 532, 7, 33, 2, 2, 532, 83, 3, 2, 2, 2, 533, 534, 7, 29, 2, 2, 534, 536, 7, 45, 2, 2, 535, 533, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 538, 5, 144, 73, 2, 538, 539, 7, 42, 2, 2, 539, 540, 7, 30, 2, 2, 540, 541, 7, 22, 2, 2, 541, 542, 7, 31, 2, 2, 542, 85, 3, 2, 2, 2, 543, 544, 5, 88, 45, 2, 544, 546, 7, 41, 2, 2, 545, 547, 5, 38, 20, 2, 546, 545, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 87, 3, 2, 2, 2, 548, 549, 7, 8, 2, 2, 549, 552, 5, 90, 46, 2, 550, 552, 7, 4, 2, 2, 551, 548, 3, 2, 2, 2, 551, 550, 3, 2, 2, 2, 552, 89, 3, 2, 2, 2, 553, 556, 5, 108, 55, 2, 554, 556, 7, 28, 2, 2, 555, 553, 3, 2, 2, 2, 555, 554, 3, 2, 2, 2, 556, 564, 3, 2, 2, 2, 557, 560, 7, 37, 2, 2, 558, 561, 5, 108, 55, 2, 559, 561, 7, 28, 2, 2, 560, 558, 3, 2, 2, 2, 560, 559, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 557, 3, 2, 2, 2, 563, 566, 3, 2, 2, 2, 564, 562, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 91, 3, 2, 2, 2, 566, 564, 3, 2, 2, 2, 567, 568, 7, 7, 2, 2, 568, 572, 7, 32, 2, 2, 569, 571, 5, 94, 48, 2, 570, 569, 3, 2, 2, 2, 571, 574, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 575, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 575, 576, 7, 33, 2, 2, 576, 93, 3, 2, 2, 2, 577, 578, 5, 96, 49, 2, 578, 580, 7, 41, 2, 2, 579, 581, 5, 38, 20, 2, 580, 579, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 95, 3, 2, 2, 2, 582, 585, 7, 8, 2, 2, 583, 586, 5, 46, 24, 2, 584, 586, 5, 98, 50, 2, 585, 583, 3, 2, 2, 2, 585, 584, 3, 2, 2, 2, 586, 589, 3, 2, 2, 2, 587, 589, 7, 4, 2, 2, 588, 582, 3, 2, 2, 2, 588, 587, 3, 2, 2, 2, 589, 97, 3, 2, 2, 2, 590, 591, 5, 20, 11, 2, 591, 592, 7, 36, 2, 2, 592, 597, 3, 2, 2, 2, 593, 594, 5, 18, 10, 2, 594, 595, 7, 45, 2, 2, 595, 597, 3, 2, 2, 2, 596, 590, 3, 2, 2, 2, 596, 593, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 599, 5, 142, 72, 2, 599, 99, 3, 2, 2, 2, 600, 604, 7, 24, 2, 2, 601, 605, 5, 142, 72, 2, 602, 605, 5, 102, 52, 2, 603, 605, 5, 104, 53, 2, 604, 601, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 603, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 606, 3, 2, 2, 2, 606, 607, 5, 36, 19, 2, 607, 101, 3, 2, 2, 2, 608, 610, 5, 42, 22, 2, 609, 608, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 613, 5, 198, 100, 2, 612, 614, 5, 142, 72, 2, 613, 612, 3, 2, 2, 2, 613, 614, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 617, 5, 198, 100, 2, 616, 618, 5, 42, 22, 2, 617, 616, 3, 2, 2, 2, 617, 618, 3, 2, 2, 2, 618, 103, 3, 2, 2, 2, 619, 620, 5, 20, 11, 2, 620, 621, 7, 36, 2, 2, 621, 626, 3, 2, 2, 2, 622, 623, 5, 18, 10, 2, 623, 624, 7, 45, 2, 2, 624, 626, 3, 2, 2, 2, 625, 619, 3, 2, 2, 2, 625, 622, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 628, 7, 21, 2, 2, 628, 629, 5, 142, 72, 2, 629, 105, 3, 2, 2, 2, 630, 631, 7, 10, 2, 2, 631, 632, 5, 142, 72, 2, 632, 107, 3, 2, 2, 2, 633, 640, 5, 110, 56, 2, 634, 640, 5, 112, 57, 2, 635, 636, 7, 30, 2, 2, 636, 637, 5, 108, 55, 2, 637, 638, 7, 31, 2, 2, 638, 640, 3, 2, 2, 2, 639, 633, 3, 2, 2, 2, 639, 634, 3, 2, 2, 2, 639, 635, 3, 2, 2, 2, 640, 109, 3, 2, 2, 2, 641, 644, 5, 160, 81, 2, 642, 644, 7, 29, 2, 2, 643, 641, 3, 2, 2, 2, 643, 642, 3, 2, 2, 2, 644, 111, 3, 2, 2, 2, 645, 654, 5, 114, 58, 2, 646, 654, 5, 176, 89, 2, 647, 654, 5, 120, 61, 2, 648, 654, 5, 132, 67, 2, 649, 654, 5, 122, 62, 2, 650, 654, 5, 124, 63, 2, 651, 654, 5, 126, 64, 2, 652, 654, 5, 128, 65, 2, 653, 645, 3, 2, 2, 2, 653, 646, 3, 2, 2, 2, 653, 647, 3, 2, 2, 2, 653, 648, 3, 2, 2, 2, 653, 649, 3, 2, 2, 2, 653, 650, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 653, 652, 3, 2, 2, 2, 654, 113, 3, 2, 2, 2, 655, 656, 7, 34, 2, 2, 656, 657, 5, 116, 59, 2, 657, 658, 7, 35, 2, 2, 658, 659, 5, 118, 60, 2, 659, 115, 3, 2, 2, 2, 660, 661, 5, 142, 72, 2, 661, 117, 3, 2, 2, 2, 662, 663, 5, 108, 55, 2, 663, 119, 3, 2, 2, 2, 664, 665, 7, 66, 2, 2, 665, 666, 5, 108, 55, 2, 666, 121, 3, 2, 2, 2, 667, 668, 7, 6, 2, 2, 668, 677, 7, 32, 2, 2, 669, 672, 5, 130, 66, 2, 670, 672, 5, 110, 56, 2, 671, 669, 3, 2, 2, 2, 671, 670, 3, 2, 2, 2, 672, 673, 3, 2, 2, 2, 673, 674, 5, 198, 100, 2, 674, 676, 3, 2, 2, 2, 675, 671, 3, 2, 2, 2, 676, 679, 3, 2, 2, 2, 677, 675, 3, 2, 2, 2, 677, 678, 3, 2, 2, 2, 678, 680, 3, 2, 2, 2, 679, 677, 3, 2, 2, 2, 680, 681, 7, 33, 2, 2, 681, 123, 3, 2, 2, 2, 682, 683, 7, 34, 2, 2, 683, 684, 7, 35, 2, 2, 684, 685, 5, 118, 60, 2, 685, 125, 3, 2, 2, 2, 686, 687, 7, 11, 2, 2, 687, 688, 7, 34, 2, 2, 688, 689, 5, 108, 55, 2, 689, 690, 7, 35, 2, 2, 690, 691, 5, 118, 60, 2, 691, 127, 3, 2, 2, 2, 692, 698, 7, 13, 2, 2, 693, 694, 7, 13, 2, 2, 694, 698, 7, 68, 2, 2, 695, 696, 7, 68, 2, 2, 696, 698, 7, 13, 2, 2, 697, 692, 3, 2, 2, 2, 697, 693, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 699, 700, 5, 118, 60, 2, 700, 129, 3, 2, 2, 2, 701, 702, 7, 29, 2, 2, 702, 703, 5, 138, 70, 2, 703, 704, 5, 136, 69, 2, 704, 708, 3, 2, 2, 2, 705, 706, 7, 29, 2, 2, 706, 708, 5, 138, 70, 2, 707, 701, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 131, 3, 2, 2, 2, 709, 710, 7, 5, 2, 2, 710, 711, 5, 134, 68, 2, 711, 133, 3, 2, 2, 2, 712, 713, 5, 138, 70, 2, 713, 714, 5, 136, 69, 2, 714, 717, 3, 2, 2, 2, 715, 717, 5, 138, 70, 2, 716, 712, 3, 2, 2, 2, 716, 715, 3, 2, 2, 2, 717, 135, 3, 2, 2, 2, 718, 721, 5, 138, 70, 2, 719, 721, 5, 108, 55, 2, 720, 718, 3, 2, 2, 2, 720, 719, 3, 2, 2, 2, 721, 137, 3, 2, 2, 2, 722, 734, 7, 30, 2, 2, 723, 728, 5, 140, 71, 2, 724, 725, 7, 37, 2, 2, 725, 727, 5, 140, 71, 2, 726, 724, 3, 2, 2, 2, 727, 730, 3, 2, 2, 2, 728, 726, 3, 2, 2, 2, 728, 729, 3, 2, 2, 2, 729, 732, 3, 2, 2, 2, 730, 728, 3, 2, 2, 2, 731, 733, 7, 37, 2, 2, 732, 731, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 735, 3, 2, 2, 2, 734, 723, 3, 2, 2, 2, 734, 735, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 737, 7, 31, 2, 2, 737, 139, 3, 2, 2, 2, 738, 740, 5, 18, 10, 2, 739, 738, 3, 2, 2, 2, 739, 740, 3, 2, 2, 2, 740, 742, 3, 2, 2, 2, 741, 743, 7, 46, 2, 2, 742, 741, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 744, 3, 2, 2, 2, 744, 745, 5, 108, 55, 2, 745, 141, 3, 2, 2, 2, 746, 747, 8, 72, 1, 2, 747, 751, 5, 144, 73, 2, 748, 749, 9, 6, 2, 2, 749, 751, 5, 142, 72, 8, 750, 746, 3, 2, 2, 2, 750, 748, 3, 2, 2, 2, 751, 769, 3, 2, 2, 2, 752, 753, 12, 7, 2, 2, 753, 754, 9, 7, 2, 2, 754, 768, 5, 142, 72, 8, 755, 756, 12, 6, 2, 2, 756, 757, 9, 8, 2, 2, 757, 768, 5, 142, 72, 7, 758, 759, 12, 5, 2, 2, 759, 760, 9, 9, 2, 2, 760, 768, 5, 142, 72, 6, 761, 762, 12, 4, 2, 2, 762, 763, 7, 49, 2, 2, 763, 768, 5, 142, 72, 5, 764, 765, 12, 3, 2, 2, 765, 766, 7, 48, 2, 2, 766, 768, 5, 142, 72, 4, 767, 752, 3, 2, 2, 2, 767, 755, 3, 2, 2, 2, 767, 758, 3, 2, 2, 2, 767, 761, 3, 2, 2, 2, 767, 764, 3, 2, 2, 2, 768, 771, 3, 2, 2, 2, 769, 767, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 143, 3, 2, 2, 2, 771, 769, 3, 2, 2, 2, 772, 773, 8, 73, 1, 2, 773, 777, 5, 150, 76, 2, 774, 777, 5, 146, 74, 2, 775, 777, 5, 194, 98, 2, 776, 772, 3, 2, 2, 2, 776, 774, 3, 2, 2, 2, 776, 775, 3, 2, 2, 2, 777, 789, 3, 2, 2, 2, 778, 785, 12, 3, 2, 2, 779, 780, 7, 42, 2, 2, 780, 786, 7, 29, 2, 2, 781, 786, 5, 186, 94, 2, 782, 786, 5, 188, 95, 2, 783, 786, 5, 190, 96, 2, 784, 786, 5, 192, 97, 2, 785, 779, 3, 2, 2, 2, 785, 781, 3, 2, 2, 2, 785, 782, 3, 2, 2, 2, 785, 783, 3, 2, 2, 2, 785, 784, 3, 2, 2, 2, 786, 788, 3, 2, 2, 2, 787, 778, 3, 2, 2, 2, 788, 791, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 789, 790, 3, 2, 2, 2, 790, 145, 3, 2, 2, 2, 791, 789, 3, 2, 2, 2, 792, 793, 5, 148, 75, 2, 793, 794, 7, 30, 2, 2, 794, 796, 5, 142, 72, 2, 795, 797, 7, 37, 2, 2, 796, 795, 3, 2, 2, 2, 796, 797, 3, 2, 2, 2, 797, 798, 3, 2, 2, 2, 798, 799, 7, 31, 2, 2, 799, 147, 3, 2, 2, 2, 800, 806, 5, 112, 57, 2, 801, 802, 7, 30, 2, 2, 802, 803, 5, 148, 75, 2, 803, 804, 7, 31, 2, 2, 804, 806, 3, 2, 2, 2, 805, 800, 3, 2, 2, 2, 805, 801, 3, 2, 2, 2, 806, 149, 3, 2, 2, 2, 807, 814, 5, 152, 77, 2, 808, 814, 5, 158, 80, 2, 809, 810, 7, 30, 2, 2, 810, 811, 5, 142, 72, 2, 811, 812, 7, 31, 2, 2, 812, 814, 3, 2, 2, 2, 813, 807, 3, 2, 2, 2, 813, 808, 3, 2, 2, 2, 813, 809, 3, 2, 2, 2, 814, 151, 3, 2, 2, 2, 815, 819, 5, 154, 78, 2, 816, 819, 5, 162, 82, 2, 817, 819, 5, 184, 93, 2, 818, 815, 3, 2, 2, 2, 818, 816, 3, 2, 2, 2, 818, 817, 3, 2, 2, 2, 819, 153, 3, 2, 2, 2, 820, 825, 7, 28, 2, 2, 821, 825, 5, 156, 79, 2, 822, 825, 5, 180, 91, 2, 823, 825, 7, 73, 2, 2, 824, 820, 3, 2, 2, 2, 824, 821, 3, 2, 2, 2, 824, 822, 3, 2, 2, 2, 824, 823, 3, 2, 2, 2, 825, 155, 3, 2, 2, 2, 826, 827, 9, 10, 2, 2, 827, 157, 3, 2, 2, 2, 828, 829, 7, 29, 2, 2, 829, 159, 3, 2, 2, 2, 830, 831, 7, 29, 2, 2, 831, 832, 7, 42, 2, 2, 832, 833, 7, 29, 2, 2, 833, 161, 3, 2, 2, 2, 834, 835, 5, 164, 83, 2, 835, 836, 5, 166, 84, 2, 836, 163, 3, 2, 2, 2, 837, 847, 5, 176, 89, 2, 838, 847, 5, 114, 58, 2, 839, 840, 7, 34, 2, 2, 840, 841, 7, 46, 2, 2, 841, 842, 7, 35, 2, 2, 842, 847, 5, 118, 60, 2, 843, 847, 5, 124, 63, 2, 844, 847, 5, 126, 64, 2, 845, 847, 5, 110, 56, 2, 846, 837, 3, 2, 2, 2, 846, 838, 3, 2, 2, 2, 846, 839, 3, 2, 2, 2, 846, 843, 3, 2, 2, 2, 846, 844, 3, 2, 2, 2, 846, 845, 3, 2, 2, 2, 847, 165, 3, 2, 2, 2, 848, 853, 7, 32, 2, 2, 849, 851, 5, 168, 85, 2, 850, 852, 7, 37, 2, 2, 851, 850, 3, 2, 2, 2, 851, 852, 3, 2, 2, 2, 852, 854, 3, 2, 2, 2, 853, 849, 3, 2, 2, 2, 853, 854, 3, 2, 2, 2, 854, 855, 3, 2, 2, 2, 855, 856, 7, 33, 2, 2, 856, 167, 3, 2, 2, 2, 857, 862, 5, 170, 86, 2, 858, 859, 7, 37, 2, 2, 859, 861, 5, 170, 86, 2, 860, 858, 3, 2, 2, 2, 861, 864, 3, 2, 2, 2, 862, 860, 3, 2, 2, 2, 862, 863, 3, 2, 2, 2, 863, 169, 3, 2, 2, 2, 864, 862, 3, 2, 2, 2, 865, 866, 5, 172, 87, 2, 866, 867, 7, 41, 2, 2, 867, 869, 3, 2, 2, 2, 868, 865, 3, 2, 2, 2, 868, 869, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 871, 5, 174, 88, 2, 871, 171, 3, 2, 2, 2, 872, 875, 5, 142, 72, 2, 873, 875, 5, 166, 84, 2, 874, 872, 3, 2, 2, 2, 874, 873, 3, 2, 2, 2, 875, 173, 3, 2, 2, 2, 876, 879, 5, 142, 72, 2, 877, 879, 5, 166, 84, 2, 878, 876, 3, 2, 2, 2, 878, 877, 3, 2, 2, 2, 879, 175, 3, 2, 2, 2, 880, 881, 7, 12, 2, 2, 881, 887, 7, 32, 2, 2, 882, 883, 5, 178, 90, 2, 883, 884, 5, 198, 100, 2, 884, 886, 3, 2, 2, 2, 885, 882, 3, 2, 2, 2, 886, 889, 3, 2, 2, 2, 887, 885, 3, 2, 2, 2, 887, 888, 3, 2, 2, 2, 888, 890, 3, 2, 2, 2, 889, 887, 3, 2, 2, 2, 890, 891, 7, 33, 2, 2, 891, 177, 3, 2, 2, 2, 892, 893, 5, 18, 10, 2, 893, 894, 5, 108, 55, 2, 894, 897, 3, 2, 2, 2, 895, 897, 5, 182, 92, 2, 896, 892, 3, 2, 2, 2, 896, 895, 3, 2, 2, 2, 897, 899, 3, 2, 2, 2, 898, 900, 5, 180, 91, 2, 899, 898, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 179, 3, 2, 2, 2, 901, 902, 9, 11, 2, 2, 902, 181, 3, 2, 2, 2, 903, 905, 7, 66, 2, 2, 904, 903, 3, 2, 2, 2, 904, 905, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 907, 5, 110, 56, 2, 907, 183, 3, 2, 2, 2, 908, 909, 7, 5, 2, 2, 909, 910, 5, 134, 68, 2, 910, 911, 5, 36, 19, 2, 911, 185, 3, 2, 2, 2, 912, 913, 7, 34, 2, 2, 913, 914, 5, 142, 72, 2, 914, 915, 7, 35, 2, 2, 915, 187, 3, 2, 2, 2, 916, 932, 7, 34, 2, 2, 917, 919, 5, 142, 72, 2, 918, 917, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 920, 3, 2, 2, 2, 920, 922, 7, 41, 2, 2, 921, 923, 5, 142, 72, 2, 922, 921, 3, 2, 2, 2, 922, 923, 3, 2, 2, 2, 923, 933, 3, 2, 2, 2, 924, 926, 5, 142, 72, 2, 925, 924, 3, 2, 2, 2, 925, 926, 3, 2, 2, 2, 926, 927, 3, 2, 2, 2, 927, 928, 7, 41, 2, 2, 928, 929, 5, 142, 72, 2, 929, 930, 7, 41, 2, 2, 930, 931, 5, 142, 72, 2, 931, 933, 3, 2, 2, 2, 932, 918, 3, 2, 2, 2, 932, 925, 3, 2, 2, 2, 933, 934, 3, 2, 2, 2, 934, 935, 7, 35, 2, 2, 935, 189, 3, 2, 2, 2, 936, 937, 7, 42, 2, 2, 937, 938, 7, 30, 2, 2, 938, 939, 5, 108, 55, 2, 939, 940, 7, 31, 2, 2, 940, 191, 3, 2, 2, 2, 941, 956, 7, 30, 2, 2, 942, 949, 5, 20, 11, 2, 943, 946, 5, 148, 75, 2, 944, 945, 7, 37, 2, 2, 945, 947, 5, 20, 11, 2, 946, 944, 3, 2, 2, 2, 946, 947, 3, 2, 2, 2, 947, 949, 3, 2, 2, 2, 948, 942, 3, 2, 2, 2, 948, 943, 3, 2, 2, 2, 949, 951, 3, 2, 2, 2, 950, 952, 7, 46, 2, 2, 951, 950, 3, 2, 2, 2, 951, 952, 3, 2, 2, 2, 952, 954, 3, 2, 2, 2, 953, 955, 7, 37, 2, 2, 954, 953, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 3, 2, 2, 2, 956, 948, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 958, 3, 2, 2, 2, 958, 959, 7, 31, 2, 2, 959, 193, 3, 2, 2, 2, 960, 961, 5, 148, 75, 2, 961, 962, 7, 42, 2, 2, 962, 963, 7, 29, 2, 2, 963, 195, 3, 2, 2, 2, 964, 965, 5, 108, 55, 2, 965, 197, 3, 2, 2, 2, 966, 967, 9, 12, 2, 2, 967, 199, 3, 2, 2, 2, 112, 204, 211, 216, 222, 227, 232, 248, 252, 255, 264, 274, 278, 282, 286, 293, 301, 312, 316, 320, 328, 335, 347, 351, 357, 361, 367, 371, 379, 383, 400, 407, 423, 436, 440, 444, 448, 467, 473, 475, 479, 483, 486, 490, 492, 498, 506, 511, 522, 528, 535, 546, 551, 555, 560, 564, 572, 580, 585, 588, 596, 604, 609, 613, 617, 625, 639, 643, 653, 671, 677, 697, 707, 716, 720, 728, 732, 734, 739, 742, 750, 767, 769, 776, 785, 789, 796, 805, 813, 818, 824, 846, 851, 853, 862, 868, 874, 878, 887, 896, 899, 904, 918, 922, 925, 932, 946, 948, 951, 954, 956] \ No newline at end of file diff --git a/grammar/cpp/GoParser.tokens b/grammar/cpp/GoParser.tokens new file mode 100644 index 0000000..07df51d --- /dev/null +++ b/grammar/cpp/GoParser.tokens @@ -0,0 +1,153 @@ +BREAK=1 +DEFAULT=2 +FUNC=3 +INTERFACE=4 +SELECT=5 +CASE=6 +DEFER=7 +GO=8 +MAP=9 +STRUCT=10 +CHAN=11 +ELSE=12 +GOTO=13 +PACKAGE=14 +SWITCH=15 +CONST=16 +FALLTHROUGH=17 +IF=18 +RANGE=19 +TYPE=20 +CONTINUE=21 +FOR=22 +IMPORT=23 +RETURN=24 +VAR=25 +NIL_LIT=26 +IDENTIFIER=27 +L_PAREN=28 +R_PAREN=29 +L_CURLY=30 +R_CURLY=31 +L_BRACKET=32 +R_BRACKET=33 +ASSIGN=34 +COMMA=35 +SEMI=36 +HUANHANG=37 +HUANHANGG=38 +COLON=39 +DOT=40 +PLUS_PLUS=41 +MINUS_MINUS=42 +DECLARE_ASSIGN=43 +ELLIPSIS=44 +EOSSS=45 +LOGICAL_OR=46 +LOGICAL_AND=47 +EQUALS=48 +NOT_EQUALS=49 +LESS=50 +LESS_OR_EQUALS=51 +GREATER=52 +GREATER_OR_EQUALS=53 +OR=54 +DIV=55 +MOD=56 +LSHIFT=57 +RSHIFT=58 +BIT_CLEAR=59 +EXCLAMATION=60 +PLUS=61 +MINUS=62 +CARET=63 +STAR=64 +AMPERSAND=65 +RECEIVE=66 +DECIMAL_LIT=67 +BINARY_LIT=68 +OCTAL_LIT=69 +HEX_LIT=70 +FLOAT_LIT=71 +DECIMAL_FLOAT_LIT=72 +HEX_FLOAT_LIT=73 +IMAGINARY_LIT=74 +RUNE_LIT=75 +BYTE_VALUE=76 +OCTAL_BYTE_VALUE=77 +HEX_BYTE_VALUE=78 +LITTLE_U_VALUE=79 +BIG_U_VALUE=80 +RAW_STRING_LIT=81 +INTERPRETED_STRING_LIT=82 +WS=83 +COMMENT=84 +TERMINATOR=85 +LINE_COMMENT=86 +WS_NLSEMI=87 +COMMENT_NLSEMI=88 +LINE_COMMENT_NLSEMI=89 +'break'=1 +'default'=2 +'func'=3 +'interface'=4 +'select'=5 +'case'=6 +'defer'=7 +'go'=8 +'map'=9 +'struct'=10 +'chan'=11 +'else'=12 +'goto'=13 +'package'=14 +'switch'=15 +'const'=16 +'fallthrough'=17 +'if'=18 +'range'=19 +'type'=20 +'continue'=21 +'for'=22 +'import'=23 +'return'=24 +'var'=25 +'nil'=26 +'('=28 +')'=29 +'{'=30 +'}'=31 +'['=32 +']'=33 +'='=34 +','=35 +';'=36 +'\n'=37 +'\r\n'=38 +':'=39 +'.'=40 +'++'=41 +'--'=42 +':='=43 +'...'=44 +'||'=46 +'&&'=47 +'=='=48 +'!='=49 +'<'=50 +'<='=51 +'>'=52 +'>='=53 +'|'=54 +'/'=55 +'%'=56 +'<<'=57 +'>>'=58 +'&^'=59 +'!'=60 +'+'=61 +'-'=62 +'^'=63 +'*'=64 +'&'=65 +'<-'=66 diff --git a/grammar/cpp/GoParserBaseListener.cpp b/grammar/cpp/GoParserBaseListener.cpp new file mode 100644 index 0000000..a21c01b --- /dev/null +++ b/grammar/cpp/GoParserBaseListener.cpp @@ -0,0 +1,7 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + + +#include "GoParserBaseListener.h" + + diff --git a/grammar/cpp/GoParserBaseListener.h b/grammar/cpp/GoParserBaseListener.h new file mode 100644 index 0000000..53cca6d --- /dev/null +++ b/grammar/cpp/GoParserBaseListener.h @@ -0,0 +1,341 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + +#pragma once + + +#include "antlr4-runtime.h" +#include "GoParserListener.h" + + +/** + * This class provides an empty implementation of GoParserListener, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +class GoParserBaseListener : public GoParserListener { +public: + + virtual void enterSourceFile(GoParser::SourceFileContext * /*ctx*/) override { } + virtual void exitSourceFile(GoParser::SourceFileContext * /*ctx*/) override { } + + virtual void enterPackageClause(GoParser::PackageClauseContext * /*ctx*/) override { } + virtual void exitPackageClause(GoParser::PackageClauseContext * /*ctx*/) override { } + + virtual void enterImportDecl(GoParser::ImportDeclContext * /*ctx*/) override { } + virtual void exitImportDecl(GoParser::ImportDeclContext * /*ctx*/) override { } + + virtual void enterImportSpec(GoParser::ImportSpecContext * /*ctx*/) override { } + virtual void exitImportSpec(GoParser::ImportSpecContext * /*ctx*/) override { } + + virtual void enterImportPath(GoParser::ImportPathContext * /*ctx*/) override { } + virtual void exitImportPath(GoParser::ImportPathContext * /*ctx*/) override { } + + virtual void enterDeclaration(GoParser::DeclarationContext * /*ctx*/) override { } + virtual void exitDeclaration(GoParser::DeclarationContext * /*ctx*/) override { } + + virtual void enterConstDecl(GoParser::ConstDeclContext * /*ctx*/) override { } + virtual void exitConstDecl(GoParser::ConstDeclContext * /*ctx*/) override { } + + virtual void enterConstSpec(GoParser::ConstSpecContext * /*ctx*/) override { } + virtual void exitConstSpec(GoParser::ConstSpecContext * /*ctx*/) override { } + + virtual void enterIdentifierList(GoParser::IdentifierListContext * /*ctx*/) override { } + virtual void exitIdentifierList(GoParser::IdentifierListContext * /*ctx*/) override { } + + virtual void enterExpressionList(GoParser::ExpressionListContext * /*ctx*/) override { } + virtual void exitExpressionList(GoParser::ExpressionListContext * /*ctx*/) override { } + + virtual void enterTypeDecl(GoParser::TypeDeclContext * /*ctx*/) override { } + virtual void exitTypeDecl(GoParser::TypeDeclContext * /*ctx*/) override { } + + virtual void enterTypeSpec(GoParser::TypeSpecContext * /*ctx*/) override { } + virtual void exitTypeSpec(GoParser::TypeSpecContext * /*ctx*/) override { } + + virtual void enterFunctionDecl(GoParser::FunctionDeclContext * /*ctx*/) override { } + virtual void exitFunctionDecl(GoParser::FunctionDeclContext * /*ctx*/) override { } + + virtual void enterMethodDecl(GoParser::MethodDeclContext * /*ctx*/) override { } + virtual void exitMethodDecl(GoParser::MethodDeclContext * /*ctx*/) override { } + + virtual void enterReceiver(GoParser::ReceiverContext * /*ctx*/) override { } + virtual void exitReceiver(GoParser::ReceiverContext * /*ctx*/) override { } + + virtual void enterVarDecl(GoParser::VarDeclContext * /*ctx*/) override { } + virtual void exitVarDecl(GoParser::VarDeclContext * /*ctx*/) override { } + + virtual void enterVarSpec(GoParser::VarSpecContext * /*ctx*/) override { } + virtual void exitVarSpec(GoParser::VarSpecContext * /*ctx*/) override { } + + virtual void enterBlock(GoParser::BlockContext * /*ctx*/) override { } + virtual void exitBlock(GoParser::BlockContext * /*ctx*/) override { } + + virtual void enterStatementList(GoParser::StatementListContext * /*ctx*/) override { } + virtual void exitStatementList(GoParser::StatementListContext * /*ctx*/) override { } + + virtual void enterStatement(GoParser::StatementContext * /*ctx*/) override { } + virtual void exitStatement(GoParser::StatementContext * /*ctx*/) override { } + + virtual void enterSimpleStmt(GoParser::SimpleStmtContext * /*ctx*/) override { } + virtual void exitSimpleStmt(GoParser::SimpleStmtContext * /*ctx*/) override { } + + virtual void enterExpressionStmt(GoParser::ExpressionStmtContext * /*ctx*/) override { } + virtual void exitExpressionStmt(GoParser::ExpressionStmtContext * /*ctx*/) override { } + + virtual void enterSendStmt(GoParser::SendStmtContext * /*ctx*/) override { } + virtual void exitSendStmt(GoParser::SendStmtContext * /*ctx*/) override { } + + virtual void enterIncDecStmt(GoParser::IncDecStmtContext * /*ctx*/) override { } + virtual void exitIncDecStmt(GoParser::IncDecStmtContext * /*ctx*/) override { } + + virtual void enterAssignment(GoParser::AssignmentContext * /*ctx*/) override { } + virtual void exitAssignment(GoParser::AssignmentContext * /*ctx*/) override { } + + virtual void enterAssign_op(GoParser::Assign_opContext * /*ctx*/) override { } + virtual void exitAssign_op(GoParser::Assign_opContext * /*ctx*/) override { } + + virtual void enterShortVarDecl(GoParser::ShortVarDeclContext * /*ctx*/) override { } + virtual void exitShortVarDecl(GoParser::ShortVarDeclContext * /*ctx*/) override { } + + virtual void enterEmptyStmt(GoParser::EmptyStmtContext * /*ctx*/) override { } + virtual void exitEmptyStmt(GoParser::EmptyStmtContext * /*ctx*/) override { } + + virtual void enterLabeledStmt(GoParser::LabeledStmtContext * /*ctx*/) override { } + virtual void exitLabeledStmt(GoParser::LabeledStmtContext * /*ctx*/) override { } + + virtual void enterReturnStmt(GoParser::ReturnStmtContext * /*ctx*/) override { } + virtual void exitReturnStmt(GoParser::ReturnStmtContext * /*ctx*/) override { } + + virtual void enterBreakStmt(GoParser::BreakStmtContext * /*ctx*/) override { } + virtual void exitBreakStmt(GoParser::BreakStmtContext * /*ctx*/) override { } + + virtual void enterContinueStmt(GoParser::ContinueStmtContext * /*ctx*/) override { } + virtual void exitContinueStmt(GoParser::ContinueStmtContext * /*ctx*/) override { } + + virtual void enterGotoStmt(GoParser::GotoStmtContext * /*ctx*/) override { } + virtual void exitGotoStmt(GoParser::GotoStmtContext * /*ctx*/) override { } + + virtual void enterFallthroughStmt(GoParser::FallthroughStmtContext * /*ctx*/) override { } + virtual void exitFallthroughStmt(GoParser::FallthroughStmtContext * /*ctx*/) override { } + + virtual void enterDeferStmt(GoParser::DeferStmtContext * /*ctx*/) override { } + virtual void exitDeferStmt(GoParser::DeferStmtContext * /*ctx*/) override { } + + virtual void enterIfStmt(GoParser::IfStmtContext * /*ctx*/) override { } + virtual void exitIfStmt(GoParser::IfStmtContext * /*ctx*/) override { } + + virtual void enterSwitchStmt(GoParser::SwitchStmtContext * /*ctx*/) override { } + virtual void exitSwitchStmt(GoParser::SwitchStmtContext * /*ctx*/) override { } + + virtual void enterExprSwitchStmt(GoParser::ExprSwitchStmtContext * /*ctx*/) override { } + virtual void exitExprSwitchStmt(GoParser::ExprSwitchStmtContext * /*ctx*/) override { } + + virtual void enterExprCaseClause(GoParser::ExprCaseClauseContext * /*ctx*/) override { } + virtual void exitExprCaseClause(GoParser::ExprCaseClauseContext * /*ctx*/) override { } + + virtual void enterExprSwitchCase(GoParser::ExprSwitchCaseContext * /*ctx*/) override { } + virtual void exitExprSwitchCase(GoParser::ExprSwitchCaseContext * /*ctx*/) override { } + + virtual void enterTypeSwitchStmt(GoParser::TypeSwitchStmtContext * /*ctx*/) override { } + virtual void exitTypeSwitchStmt(GoParser::TypeSwitchStmtContext * /*ctx*/) override { } + + virtual void enterTypeSwitchGuard(GoParser::TypeSwitchGuardContext * /*ctx*/) override { } + virtual void exitTypeSwitchGuard(GoParser::TypeSwitchGuardContext * /*ctx*/) override { } + + virtual void enterTypeCaseClause(GoParser::TypeCaseClauseContext * /*ctx*/) override { } + virtual void exitTypeCaseClause(GoParser::TypeCaseClauseContext * /*ctx*/) override { } + + virtual void enterTypeSwitchCase(GoParser::TypeSwitchCaseContext * /*ctx*/) override { } + virtual void exitTypeSwitchCase(GoParser::TypeSwitchCaseContext * /*ctx*/) override { } + + virtual void enterTypeList(GoParser::TypeListContext * /*ctx*/) override { } + virtual void exitTypeList(GoParser::TypeListContext * /*ctx*/) override { } + + virtual void enterSelectStmt(GoParser::SelectStmtContext * /*ctx*/) override { } + virtual void exitSelectStmt(GoParser::SelectStmtContext * /*ctx*/) override { } + + virtual void enterCommClause(GoParser::CommClauseContext * /*ctx*/) override { } + virtual void exitCommClause(GoParser::CommClauseContext * /*ctx*/) override { } + + virtual void enterCommCase(GoParser::CommCaseContext * /*ctx*/) override { } + virtual void exitCommCase(GoParser::CommCaseContext * /*ctx*/) override { } + + virtual void enterRecvStmt(GoParser::RecvStmtContext * /*ctx*/) override { } + virtual void exitRecvStmt(GoParser::RecvStmtContext * /*ctx*/) override { } + + virtual void enterForStmt(GoParser::ForStmtContext * /*ctx*/) override { } + virtual void exitForStmt(GoParser::ForStmtContext * /*ctx*/) override { } + + virtual void enterForClause(GoParser::ForClauseContext * /*ctx*/) override { } + virtual void exitForClause(GoParser::ForClauseContext * /*ctx*/) override { } + + virtual void enterRangeClause(GoParser::RangeClauseContext * /*ctx*/) override { } + virtual void exitRangeClause(GoParser::RangeClauseContext * /*ctx*/) override { } + + virtual void enterGoStmt(GoParser::GoStmtContext * /*ctx*/) override { } + virtual void exitGoStmt(GoParser::GoStmtContext * /*ctx*/) override { } + + virtual void enterType_(GoParser::Type_Context * /*ctx*/) override { } + virtual void exitType_(GoParser::Type_Context * /*ctx*/) override { } + + virtual void enterTypeName(GoParser::TypeNameContext * /*ctx*/) override { } + virtual void exitTypeName(GoParser::TypeNameContext * /*ctx*/) override { } + + virtual void enterTypeLit(GoParser::TypeLitContext * /*ctx*/) override { } + virtual void exitTypeLit(GoParser::TypeLitContext * /*ctx*/) override { } + + virtual void enterArrayType(GoParser::ArrayTypeContext * /*ctx*/) override { } + virtual void exitArrayType(GoParser::ArrayTypeContext * /*ctx*/) override { } + + virtual void enterArrayLength(GoParser::ArrayLengthContext * /*ctx*/) override { } + virtual void exitArrayLength(GoParser::ArrayLengthContext * /*ctx*/) override { } + + virtual void enterElementType(GoParser::ElementTypeContext * /*ctx*/) override { } + virtual void exitElementType(GoParser::ElementTypeContext * /*ctx*/) override { } + + virtual void enterPointerType(GoParser::PointerTypeContext * /*ctx*/) override { } + virtual void exitPointerType(GoParser::PointerTypeContext * /*ctx*/) override { } + + virtual void enterInterfaceType(GoParser::InterfaceTypeContext * /*ctx*/) override { } + virtual void exitInterfaceType(GoParser::InterfaceTypeContext * /*ctx*/) override { } + + virtual void enterSliceType(GoParser::SliceTypeContext * /*ctx*/) override { } + virtual void exitSliceType(GoParser::SliceTypeContext * /*ctx*/) override { } + + virtual void enterMapType(GoParser::MapTypeContext * /*ctx*/) override { } + virtual void exitMapType(GoParser::MapTypeContext * /*ctx*/) override { } + + virtual void enterChannelType(GoParser::ChannelTypeContext * /*ctx*/) override { } + virtual void exitChannelType(GoParser::ChannelTypeContext * /*ctx*/) override { } + + virtual void enterMethodSpec(GoParser::MethodSpecContext * /*ctx*/) override { } + virtual void exitMethodSpec(GoParser::MethodSpecContext * /*ctx*/) override { } + + virtual void enterFunctionType(GoParser::FunctionTypeContext * /*ctx*/) override { } + virtual void exitFunctionType(GoParser::FunctionTypeContext * /*ctx*/) override { } + + virtual void enterSignature(GoParser::SignatureContext * /*ctx*/) override { } + virtual void exitSignature(GoParser::SignatureContext * /*ctx*/) override { } + + virtual void enterResult(GoParser::ResultContext * /*ctx*/) override { } + virtual void exitResult(GoParser::ResultContext * /*ctx*/) override { } + + virtual void enterParameters(GoParser::ParametersContext * /*ctx*/) override { } + virtual void exitParameters(GoParser::ParametersContext * /*ctx*/) override { } + + virtual void enterParameterDecl(GoParser::ParameterDeclContext * /*ctx*/) override { } + virtual void exitParameterDecl(GoParser::ParameterDeclContext * /*ctx*/) override { } + + virtual void enterLogicalAndOperation(GoParser::LogicalAndOperationContext * /*ctx*/) override { } + virtual void exitLogicalAndOperation(GoParser::LogicalAndOperationContext * /*ctx*/) override { } + + virtual void enterUnaryOperation(GoParser::UnaryOperationContext * /*ctx*/) override { } + virtual void exitUnaryOperation(GoParser::UnaryOperationContext * /*ctx*/) override { } + + virtual void enterPrimaryExpression(GoParser::PrimaryExpressionContext * /*ctx*/) override { } + virtual void exitPrimaryExpression(GoParser::PrimaryExpressionContext * /*ctx*/) override { } + + virtual void enterPlusMinusOperation(GoParser::PlusMinusOperationContext * /*ctx*/) override { } + virtual void exitPlusMinusOperation(GoParser::PlusMinusOperationContext * /*ctx*/) override { } + + virtual void enterRelationOperation(GoParser::RelationOperationContext * /*ctx*/) override { } + virtual void exitRelationOperation(GoParser::RelationOperationContext * /*ctx*/) override { } + + virtual void enterMulDivOperation(GoParser::MulDivOperationContext * /*ctx*/) override { } + virtual void exitMulDivOperation(GoParser::MulDivOperationContext * /*ctx*/) override { } + + virtual void enterLogicalOrOperation(GoParser::LogicalOrOperationContext * /*ctx*/) override { } + virtual void exitLogicalOrOperation(GoParser::LogicalOrOperationContext * /*ctx*/) override { } + + virtual void enterPrimaryExpr(GoParser::PrimaryExprContext * /*ctx*/) override { } + virtual void exitPrimaryExpr(GoParser::PrimaryExprContext * /*ctx*/) override { } + + virtual void enterConversion(GoParser::ConversionContext * /*ctx*/) override { } + virtual void exitConversion(GoParser::ConversionContext * /*ctx*/) override { } + + virtual void enterNonNamedType(GoParser::NonNamedTypeContext * /*ctx*/) override { } + virtual void exitNonNamedType(GoParser::NonNamedTypeContext * /*ctx*/) override { } + + virtual void enterOperand(GoParser::OperandContext * /*ctx*/) override { } + virtual void exitOperand(GoParser::OperandContext * /*ctx*/) override { } + + virtual void enterLiteral(GoParser::LiteralContext * /*ctx*/) override { } + virtual void exitLiteral(GoParser::LiteralContext * /*ctx*/) override { } + + virtual void enterBasicLit(GoParser::BasicLitContext * /*ctx*/) override { } + virtual void exitBasicLit(GoParser::BasicLitContext * /*ctx*/) override { } + + virtual void enterInteger(GoParser::IntegerContext * /*ctx*/) override { } + virtual void exitInteger(GoParser::IntegerContext * /*ctx*/) override { } + + virtual void enterOperandName(GoParser::OperandNameContext * /*ctx*/) override { } + virtual void exitOperandName(GoParser::OperandNameContext * /*ctx*/) override { } + + virtual void enterQualifiedIdent(GoParser::QualifiedIdentContext * /*ctx*/) override { } + virtual void exitQualifiedIdent(GoParser::QualifiedIdentContext * /*ctx*/) override { } + + virtual void enterCompositeLit(GoParser::CompositeLitContext * /*ctx*/) override { } + virtual void exitCompositeLit(GoParser::CompositeLitContext * /*ctx*/) override { } + + virtual void enterLiteralType(GoParser::LiteralTypeContext * /*ctx*/) override { } + virtual void exitLiteralType(GoParser::LiteralTypeContext * /*ctx*/) override { } + + virtual void enterLiteralValue(GoParser::LiteralValueContext * /*ctx*/) override { } + virtual void exitLiteralValue(GoParser::LiteralValueContext * /*ctx*/) override { } + + virtual void enterElementList(GoParser::ElementListContext * /*ctx*/) override { } + virtual void exitElementList(GoParser::ElementListContext * /*ctx*/) override { } + + virtual void enterKeyedElement(GoParser::KeyedElementContext * /*ctx*/) override { } + virtual void exitKeyedElement(GoParser::KeyedElementContext * /*ctx*/) override { } + + virtual void enterKey(GoParser::KeyContext * /*ctx*/) override { } + virtual void exitKey(GoParser::KeyContext * /*ctx*/) override { } + + virtual void enterElement(GoParser::ElementContext * /*ctx*/) override { } + virtual void exitElement(GoParser::ElementContext * /*ctx*/) override { } + + virtual void enterStructType(GoParser::StructTypeContext * /*ctx*/) override { } + virtual void exitStructType(GoParser::StructTypeContext * /*ctx*/) override { } + + virtual void enterFieldDecl(GoParser::FieldDeclContext * /*ctx*/) override { } + virtual void exitFieldDecl(GoParser::FieldDeclContext * /*ctx*/) override { } + + virtual void enterString_(GoParser::String_Context * /*ctx*/) override { } + virtual void exitString_(GoParser::String_Context * /*ctx*/) override { } + + virtual void enterEmbeddedField(GoParser::EmbeddedFieldContext * /*ctx*/) override { } + virtual void exitEmbeddedField(GoParser::EmbeddedFieldContext * /*ctx*/) override { } + + virtual void enterFunctionLit(GoParser::FunctionLitContext * /*ctx*/) override { } + virtual void exitFunctionLit(GoParser::FunctionLitContext * /*ctx*/) override { } + + virtual void enterIndex(GoParser::IndexContext * /*ctx*/) override { } + virtual void exitIndex(GoParser::IndexContext * /*ctx*/) override { } + + virtual void enterSlice_(GoParser::Slice_Context * /*ctx*/) override { } + virtual void exitSlice_(GoParser::Slice_Context * /*ctx*/) override { } + + virtual void enterTypeAssertion(GoParser::TypeAssertionContext * /*ctx*/) override { } + virtual void exitTypeAssertion(GoParser::TypeAssertionContext * /*ctx*/) override { } + + virtual void enterArguments(GoParser::ArgumentsContext * /*ctx*/) override { } + virtual void exitArguments(GoParser::ArgumentsContext * /*ctx*/) override { } + + virtual void enterMethodExpr(GoParser::MethodExprContext * /*ctx*/) override { } + virtual void exitMethodExpr(GoParser::MethodExprContext * /*ctx*/) override { } + + virtual void enterReceiverType(GoParser::ReceiverTypeContext * /*ctx*/) override { } + virtual void exitReceiverType(GoParser::ReceiverTypeContext * /*ctx*/) override { } + + virtual void enterEoss(GoParser::EossContext * /*ctx*/) override { } + virtual void exitEoss(GoParser::EossContext * /*ctx*/) override { } + + + virtual void enterEveryRule(antlr4::ParserRuleContext * /*ctx*/) override { } + virtual void exitEveryRule(antlr4::ParserRuleContext * /*ctx*/) override { } + virtual void visitTerminal(antlr4::tree::TerminalNode * /*node*/) override { } + virtual void visitErrorNode(antlr4::tree::ErrorNode * /*node*/) override { } + +}; + diff --git a/grammar/cpp/GoParserListener.cpp b/grammar/cpp/GoParserListener.cpp new file mode 100644 index 0000000..6932d16 --- /dev/null +++ b/grammar/cpp/GoParserListener.cpp @@ -0,0 +1,7 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + + +#include "GoParserListener.h" + + diff --git a/grammar/cpp/GoParserListener.h b/grammar/cpp/GoParserListener.h new file mode 100644 index 0000000..70bd5ae --- /dev/null +++ b/grammar/cpp/GoParserListener.h @@ -0,0 +1,334 @@ + +// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 + +#pragma once + + +#include "antlr4-runtime.h" +#include "GoParser.h" + + +/** + * This interface defines an abstract listener for a parse tree produced by GoParser. + */ +class GoParserListener : public antlr4::tree::ParseTreeListener { +public: + + virtual void enterSourceFile(GoParser::SourceFileContext *ctx) = 0; + virtual void exitSourceFile(GoParser::SourceFileContext *ctx) = 0; + + virtual void enterPackageClause(GoParser::PackageClauseContext *ctx) = 0; + virtual void exitPackageClause(GoParser::PackageClauseContext *ctx) = 0; + + virtual void enterImportDecl(GoParser::ImportDeclContext *ctx) = 0; + virtual void exitImportDecl(GoParser::ImportDeclContext *ctx) = 0; + + virtual void enterImportSpec(GoParser::ImportSpecContext *ctx) = 0; + virtual void exitImportSpec(GoParser::ImportSpecContext *ctx) = 0; + + virtual void enterImportPath(GoParser::ImportPathContext *ctx) = 0; + virtual void exitImportPath(GoParser::ImportPathContext *ctx) = 0; + + virtual void enterDeclaration(GoParser::DeclarationContext *ctx) = 0; + virtual void exitDeclaration(GoParser::DeclarationContext *ctx) = 0; + + virtual void enterConstDecl(GoParser::ConstDeclContext *ctx) = 0; + virtual void exitConstDecl(GoParser::ConstDeclContext *ctx) = 0; + + virtual void enterConstSpec(GoParser::ConstSpecContext *ctx) = 0; + virtual void exitConstSpec(GoParser::ConstSpecContext *ctx) = 0; + + virtual void enterIdentifierList(GoParser::IdentifierListContext *ctx) = 0; + virtual void exitIdentifierList(GoParser::IdentifierListContext *ctx) = 0; + + virtual void enterExpressionList(GoParser::ExpressionListContext *ctx) = 0; + virtual void exitExpressionList(GoParser::ExpressionListContext *ctx) = 0; + + virtual void enterTypeDecl(GoParser::TypeDeclContext *ctx) = 0; + virtual void exitTypeDecl(GoParser::TypeDeclContext *ctx) = 0; + + virtual void enterTypeSpec(GoParser::TypeSpecContext *ctx) = 0; + virtual void exitTypeSpec(GoParser::TypeSpecContext *ctx) = 0; + + virtual void enterFunctionDecl(GoParser::FunctionDeclContext *ctx) = 0; + virtual void exitFunctionDecl(GoParser::FunctionDeclContext *ctx) = 0; + + virtual void enterMethodDecl(GoParser::MethodDeclContext *ctx) = 0; + virtual void exitMethodDecl(GoParser::MethodDeclContext *ctx) = 0; + + virtual void enterReceiver(GoParser::ReceiverContext *ctx) = 0; + virtual void exitReceiver(GoParser::ReceiverContext *ctx) = 0; + + virtual void enterVarDecl(GoParser::VarDeclContext *ctx) = 0; + virtual void exitVarDecl(GoParser::VarDeclContext *ctx) = 0; + + virtual void enterVarSpec(GoParser::VarSpecContext *ctx) = 0; + virtual void exitVarSpec(GoParser::VarSpecContext *ctx) = 0; + + virtual void enterBlock(GoParser::BlockContext *ctx) = 0; + virtual void exitBlock(GoParser::BlockContext *ctx) = 0; + + virtual void enterStatementList(GoParser::StatementListContext *ctx) = 0; + virtual void exitStatementList(GoParser::StatementListContext *ctx) = 0; + + virtual void enterStatement(GoParser::StatementContext *ctx) = 0; + virtual void exitStatement(GoParser::StatementContext *ctx) = 0; + + virtual void enterSimpleStmt(GoParser::SimpleStmtContext *ctx) = 0; + virtual void exitSimpleStmt(GoParser::SimpleStmtContext *ctx) = 0; + + virtual void enterExpressionStmt(GoParser::ExpressionStmtContext *ctx) = 0; + virtual void exitExpressionStmt(GoParser::ExpressionStmtContext *ctx) = 0; + + virtual void enterSendStmt(GoParser::SendStmtContext *ctx) = 0; + virtual void exitSendStmt(GoParser::SendStmtContext *ctx) = 0; + + virtual void enterIncDecStmt(GoParser::IncDecStmtContext *ctx) = 0; + virtual void exitIncDecStmt(GoParser::IncDecStmtContext *ctx) = 0; + + virtual void enterAssignment(GoParser::AssignmentContext *ctx) = 0; + virtual void exitAssignment(GoParser::AssignmentContext *ctx) = 0; + + virtual void enterAssign_op(GoParser::Assign_opContext *ctx) = 0; + virtual void exitAssign_op(GoParser::Assign_opContext *ctx) = 0; + + virtual void enterShortVarDecl(GoParser::ShortVarDeclContext *ctx) = 0; + virtual void exitShortVarDecl(GoParser::ShortVarDeclContext *ctx) = 0; + + virtual void enterEmptyStmt(GoParser::EmptyStmtContext *ctx) = 0; + virtual void exitEmptyStmt(GoParser::EmptyStmtContext *ctx) = 0; + + virtual void enterLabeledStmt(GoParser::LabeledStmtContext *ctx) = 0; + virtual void exitLabeledStmt(GoParser::LabeledStmtContext *ctx) = 0; + + virtual void enterReturnStmt(GoParser::ReturnStmtContext *ctx) = 0; + virtual void exitReturnStmt(GoParser::ReturnStmtContext *ctx) = 0; + + virtual void enterBreakStmt(GoParser::BreakStmtContext *ctx) = 0; + virtual void exitBreakStmt(GoParser::BreakStmtContext *ctx) = 0; + + virtual void enterContinueStmt(GoParser::ContinueStmtContext *ctx) = 0; + virtual void exitContinueStmt(GoParser::ContinueStmtContext *ctx) = 0; + + virtual void enterGotoStmt(GoParser::GotoStmtContext *ctx) = 0; + virtual void exitGotoStmt(GoParser::GotoStmtContext *ctx) = 0; + + virtual void enterFallthroughStmt(GoParser::FallthroughStmtContext *ctx) = 0; + virtual void exitFallthroughStmt(GoParser::FallthroughStmtContext *ctx) = 0; + + virtual void enterDeferStmt(GoParser::DeferStmtContext *ctx) = 0; + virtual void exitDeferStmt(GoParser::DeferStmtContext *ctx) = 0; + + virtual void enterIfStmt(GoParser::IfStmtContext *ctx) = 0; + virtual void exitIfStmt(GoParser::IfStmtContext *ctx) = 0; + + virtual void enterSwitchStmt(GoParser::SwitchStmtContext *ctx) = 0; + virtual void exitSwitchStmt(GoParser::SwitchStmtContext *ctx) = 0; + + virtual void enterExprSwitchStmt(GoParser::ExprSwitchStmtContext *ctx) = 0; + virtual void exitExprSwitchStmt(GoParser::ExprSwitchStmtContext *ctx) = 0; + + virtual void enterExprCaseClause(GoParser::ExprCaseClauseContext *ctx) = 0; + virtual void exitExprCaseClause(GoParser::ExprCaseClauseContext *ctx) = 0; + + virtual void enterExprSwitchCase(GoParser::ExprSwitchCaseContext *ctx) = 0; + virtual void exitExprSwitchCase(GoParser::ExprSwitchCaseContext *ctx) = 0; + + virtual void enterTypeSwitchStmt(GoParser::TypeSwitchStmtContext *ctx) = 0; + virtual void exitTypeSwitchStmt(GoParser::TypeSwitchStmtContext *ctx) = 0; + + virtual void enterTypeSwitchGuard(GoParser::TypeSwitchGuardContext *ctx) = 0; + virtual void exitTypeSwitchGuard(GoParser::TypeSwitchGuardContext *ctx) = 0; + + virtual void enterTypeCaseClause(GoParser::TypeCaseClauseContext *ctx) = 0; + virtual void exitTypeCaseClause(GoParser::TypeCaseClauseContext *ctx) = 0; + + virtual void enterTypeSwitchCase(GoParser::TypeSwitchCaseContext *ctx) = 0; + virtual void exitTypeSwitchCase(GoParser::TypeSwitchCaseContext *ctx) = 0; + + virtual void enterTypeList(GoParser::TypeListContext *ctx) = 0; + virtual void exitTypeList(GoParser::TypeListContext *ctx) = 0; + + virtual void enterSelectStmt(GoParser::SelectStmtContext *ctx) = 0; + virtual void exitSelectStmt(GoParser::SelectStmtContext *ctx) = 0; + + virtual void enterCommClause(GoParser::CommClauseContext *ctx) = 0; + virtual void exitCommClause(GoParser::CommClauseContext *ctx) = 0; + + virtual void enterCommCase(GoParser::CommCaseContext *ctx) = 0; + virtual void exitCommCase(GoParser::CommCaseContext *ctx) = 0; + + virtual void enterRecvStmt(GoParser::RecvStmtContext *ctx) = 0; + virtual void exitRecvStmt(GoParser::RecvStmtContext *ctx) = 0; + + virtual void enterForStmt(GoParser::ForStmtContext *ctx) = 0; + virtual void exitForStmt(GoParser::ForStmtContext *ctx) = 0; + + virtual void enterForClause(GoParser::ForClauseContext *ctx) = 0; + virtual void exitForClause(GoParser::ForClauseContext *ctx) = 0; + + virtual void enterRangeClause(GoParser::RangeClauseContext *ctx) = 0; + virtual void exitRangeClause(GoParser::RangeClauseContext *ctx) = 0; + + virtual void enterGoStmt(GoParser::GoStmtContext *ctx) = 0; + virtual void exitGoStmt(GoParser::GoStmtContext *ctx) = 0; + + virtual void enterType_(GoParser::Type_Context *ctx) = 0; + virtual void exitType_(GoParser::Type_Context *ctx) = 0; + + virtual void enterTypeName(GoParser::TypeNameContext *ctx) = 0; + virtual void exitTypeName(GoParser::TypeNameContext *ctx) = 0; + + virtual void enterTypeLit(GoParser::TypeLitContext *ctx) = 0; + virtual void exitTypeLit(GoParser::TypeLitContext *ctx) = 0; + + virtual void enterArrayType(GoParser::ArrayTypeContext *ctx) = 0; + virtual void exitArrayType(GoParser::ArrayTypeContext *ctx) = 0; + + virtual void enterArrayLength(GoParser::ArrayLengthContext *ctx) = 0; + virtual void exitArrayLength(GoParser::ArrayLengthContext *ctx) = 0; + + virtual void enterElementType(GoParser::ElementTypeContext *ctx) = 0; + virtual void exitElementType(GoParser::ElementTypeContext *ctx) = 0; + + virtual void enterPointerType(GoParser::PointerTypeContext *ctx) = 0; + virtual void exitPointerType(GoParser::PointerTypeContext *ctx) = 0; + + virtual void enterInterfaceType(GoParser::InterfaceTypeContext *ctx) = 0; + virtual void exitInterfaceType(GoParser::InterfaceTypeContext *ctx) = 0; + + virtual void enterSliceType(GoParser::SliceTypeContext *ctx) = 0; + virtual void exitSliceType(GoParser::SliceTypeContext *ctx) = 0; + + virtual void enterMapType(GoParser::MapTypeContext *ctx) = 0; + virtual void exitMapType(GoParser::MapTypeContext *ctx) = 0; + + virtual void enterChannelType(GoParser::ChannelTypeContext *ctx) = 0; + virtual void exitChannelType(GoParser::ChannelTypeContext *ctx) = 0; + + virtual void enterMethodSpec(GoParser::MethodSpecContext *ctx) = 0; + virtual void exitMethodSpec(GoParser::MethodSpecContext *ctx) = 0; + + virtual void enterFunctionType(GoParser::FunctionTypeContext *ctx) = 0; + virtual void exitFunctionType(GoParser::FunctionTypeContext *ctx) = 0; + + virtual void enterSignature(GoParser::SignatureContext *ctx) = 0; + virtual void exitSignature(GoParser::SignatureContext *ctx) = 0; + + virtual void enterResult(GoParser::ResultContext *ctx) = 0; + virtual void exitResult(GoParser::ResultContext *ctx) = 0; + + virtual void enterParameters(GoParser::ParametersContext *ctx) = 0; + virtual void exitParameters(GoParser::ParametersContext *ctx) = 0; + + virtual void enterParameterDecl(GoParser::ParameterDeclContext *ctx) = 0; + virtual void exitParameterDecl(GoParser::ParameterDeclContext *ctx) = 0; + + virtual void enterLogicalAndOperation(GoParser::LogicalAndOperationContext *ctx) = 0; + virtual void exitLogicalAndOperation(GoParser::LogicalAndOperationContext *ctx) = 0; + + virtual void enterUnaryOperation(GoParser::UnaryOperationContext *ctx) = 0; + virtual void exitUnaryOperation(GoParser::UnaryOperationContext *ctx) = 0; + + virtual void enterPrimaryExpression(GoParser::PrimaryExpressionContext *ctx) = 0; + virtual void exitPrimaryExpression(GoParser::PrimaryExpressionContext *ctx) = 0; + + virtual void enterPlusMinusOperation(GoParser::PlusMinusOperationContext *ctx) = 0; + virtual void exitPlusMinusOperation(GoParser::PlusMinusOperationContext *ctx) = 0; + + virtual void enterRelationOperation(GoParser::RelationOperationContext *ctx) = 0; + virtual void exitRelationOperation(GoParser::RelationOperationContext *ctx) = 0; + + virtual void enterMulDivOperation(GoParser::MulDivOperationContext *ctx) = 0; + virtual void exitMulDivOperation(GoParser::MulDivOperationContext *ctx) = 0; + + virtual void enterLogicalOrOperation(GoParser::LogicalOrOperationContext *ctx) = 0; + virtual void exitLogicalOrOperation(GoParser::LogicalOrOperationContext *ctx) = 0; + + virtual void enterPrimaryExpr(GoParser::PrimaryExprContext *ctx) = 0; + virtual void exitPrimaryExpr(GoParser::PrimaryExprContext *ctx) = 0; + + virtual void enterConversion(GoParser::ConversionContext *ctx) = 0; + virtual void exitConversion(GoParser::ConversionContext *ctx) = 0; + + virtual void enterNonNamedType(GoParser::NonNamedTypeContext *ctx) = 0; + virtual void exitNonNamedType(GoParser::NonNamedTypeContext *ctx) = 0; + + virtual void enterOperand(GoParser::OperandContext *ctx) = 0; + virtual void exitOperand(GoParser::OperandContext *ctx) = 0; + + virtual void enterLiteral(GoParser::LiteralContext *ctx) = 0; + virtual void exitLiteral(GoParser::LiteralContext *ctx) = 0; + + virtual void enterBasicLit(GoParser::BasicLitContext *ctx) = 0; + virtual void exitBasicLit(GoParser::BasicLitContext *ctx) = 0; + + virtual void enterInteger(GoParser::IntegerContext *ctx) = 0; + virtual void exitInteger(GoParser::IntegerContext *ctx) = 0; + + virtual void enterOperandName(GoParser::OperandNameContext *ctx) = 0; + virtual void exitOperandName(GoParser::OperandNameContext *ctx) = 0; + + virtual void enterQualifiedIdent(GoParser::QualifiedIdentContext *ctx) = 0; + virtual void exitQualifiedIdent(GoParser::QualifiedIdentContext *ctx) = 0; + + virtual void enterCompositeLit(GoParser::CompositeLitContext *ctx) = 0; + virtual void exitCompositeLit(GoParser::CompositeLitContext *ctx) = 0; + + virtual void enterLiteralType(GoParser::LiteralTypeContext *ctx) = 0; + virtual void exitLiteralType(GoParser::LiteralTypeContext *ctx) = 0; + + virtual void enterLiteralValue(GoParser::LiteralValueContext *ctx) = 0; + virtual void exitLiteralValue(GoParser::LiteralValueContext *ctx) = 0; + + virtual void enterElementList(GoParser::ElementListContext *ctx) = 0; + virtual void exitElementList(GoParser::ElementListContext *ctx) = 0; + + virtual void enterKeyedElement(GoParser::KeyedElementContext *ctx) = 0; + virtual void exitKeyedElement(GoParser::KeyedElementContext *ctx) = 0; + + virtual void enterKey(GoParser::KeyContext *ctx) = 0; + virtual void exitKey(GoParser::KeyContext *ctx) = 0; + + virtual void enterElement(GoParser::ElementContext *ctx) = 0; + virtual void exitElement(GoParser::ElementContext *ctx) = 0; + + virtual void enterStructType(GoParser::StructTypeContext *ctx) = 0; + virtual void exitStructType(GoParser::StructTypeContext *ctx) = 0; + + virtual void enterFieldDecl(GoParser::FieldDeclContext *ctx) = 0; + virtual void exitFieldDecl(GoParser::FieldDeclContext *ctx) = 0; + + virtual void enterString_(GoParser::String_Context *ctx) = 0; + virtual void exitString_(GoParser::String_Context *ctx) = 0; + + virtual void enterEmbeddedField(GoParser::EmbeddedFieldContext *ctx) = 0; + virtual void exitEmbeddedField(GoParser::EmbeddedFieldContext *ctx) = 0; + + virtual void enterFunctionLit(GoParser::FunctionLitContext *ctx) = 0; + virtual void exitFunctionLit(GoParser::FunctionLitContext *ctx) = 0; + + virtual void enterIndex(GoParser::IndexContext *ctx) = 0; + virtual void exitIndex(GoParser::IndexContext *ctx) = 0; + + virtual void enterSlice_(GoParser::Slice_Context *ctx) = 0; + virtual void exitSlice_(GoParser::Slice_Context *ctx) = 0; + + virtual void enterTypeAssertion(GoParser::TypeAssertionContext *ctx) = 0; + virtual void exitTypeAssertion(GoParser::TypeAssertionContext *ctx) = 0; + + virtual void enterArguments(GoParser::ArgumentsContext *ctx) = 0; + virtual void exitArguments(GoParser::ArgumentsContext *ctx) = 0; + + virtual void enterMethodExpr(GoParser::MethodExprContext *ctx) = 0; + virtual void exitMethodExpr(GoParser::MethodExprContext *ctx) = 0; + + virtual void enterReceiverType(GoParser::ReceiverTypeContext *ctx) = 0; + virtual void exitReceiverType(GoParser::ReceiverTypeContext *ctx) = 0; + + virtual void enterEoss(GoParser::EossContext *ctx) = 0; + virtual void exitEoss(GoParser::EossContext *ctx) = 0; + + +}; + diff --git a/run_asm.sh b/run_asm.sh deleted file mode 100755 index 966d1f4..0000000 --- a/run_asm.sh +++ /dev/null @@ -1,5 +0,0 @@ -cd build -./tjugo ../demo/05func.go -ld -m elf_i386 -o run.bin out.o print.o -./run.bin - diff --git a/src/ICG/CMakeLists.txt b/src/ICG/CMakeLists.txt index 71411a4..0dc18e4 100644 --- a/src/ICG/CMakeLists.txt +++ b/src/ICG/CMakeLists.txt @@ -7,28 +7,23 @@ file(GLOB grammar_g4 set(ANTLR4_FLAGS -Dlanguage=Cpp) execute_process( - COMMAND java -jar "${ANTLR4CPP_JAR_LOCATION}" ${ANTLR4_FLAGS} ${grammar_g4} -o ${CMAKE_SOURCE_DIR}/grammar/gen -) - -set(ANTLR4_FLAGS -Dlanguage=Java) -execute_process( - COMMAND java -jar "${ANTLR4CPP_JAR_LOCATION}" ${ANTLR4_FLAGS} ${grammar_g4} -o ${CMAKE_SOURCE_DIR}/grammar/java + COMMAND java -jar "${ANTLR4CPP_JAR_LOCATION}" ${ANTLR4_FLAGS} ${grammar_g4} -o ${CMAKE_SOURCE_DIR}/grammar/cpp ) # cmake -file(GLOB_RECURSE src_lib_gen ${CMAKE_SOURCE_DIR}/grammar/gen/*.cpp) +file(GLOB_RECURSE src_lib_cpp ${CMAKE_SOURCE_DIR}/grammar/cpp/*.cpp) file(GLOB_RECURSE src_lib_icg *.cpp) add_library(icg - ${src_lib_gen} + ${src_lib_cpp} ${src_lib_icg} ) target_include_directories(icg PUBLIC ${CMAKE_SOURCE_DIR}/3rd/antlr4-runtime/src - ${CMAKE_SOURCE_DIR}/grammar/gen + ${CMAKE_SOURCE_DIR}/grammar/cpp ${CMAKE_SOURCE_DIR}/include ) diff --git a/temp/05func.go b/temp/05func.go deleted file mode 100644 index da5793f..0000000 --- a/temp/05func.go +++ /dev/null @@ -1,18 +0,0 @@ -package main - - -func myprint(a int) - - -func add_1(a int, b int) (int, int) { - return a + 1, b + 1 -} - - -func main() { - var a = 100; - var b = 105; - var c, d = add_1(a, b) - myprint(c) // 预计输出 101 - myprint(d) // 预计输出 106 -} diff --git a/test_all.sh b/test_all.sh new file mode 100755 index 0000000..2e74984 --- /dev/null +++ b/test_all.sh @@ -0,0 +1,23 @@ +#!/bin/bash +cd build + +for test_file in ../demo/*.go; do + base_name=$(basename "$test_file" .go) + + echo -e "\n========== 编译 $base_name ==========" + if ! ./tjugo ../demo/$test_file; then + echo "编译错误,按任意键继续..." + read -n 1 -s + fi + + if ! ld -m elf_i386 -o run.bin out.o print.o; then + echo "链接错误,按任意键继续..." + read -n 1 -s + fi + + echo -e "\n========== 运行 $base_name ==========" + if ! ./run.bin; then + echo "运行错误,按任意键继续..." + read -n 1 -s + fi +done \ No newline at end of file