From 800bf991628efcfdc75157113f9e6e14ba0c59cd Mon Sep 17 00:00:00 2001 From: Svetozar Ikovic Date: Tue, 31 Mar 2026 08:38:12 +0200 Subject: [PATCH 1/5] Download python lexers --- .../Builders/Python/ANTLR/Python3Lexer.g4 | 313 ++++++++ .../Builders/Python/ANTLR/Python3LexerBase.cs | 174 +++++ .../Builders/Python/ANTLR/Python3Parser.g4 | 694 ++++++++++++++++++ .../Python/ANTLR/Python3ParserBase.cs | 28 + 4 files changed, 1209 insertions(+) create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.g4 create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.g4 create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.g4 b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.g4 new file mode 100644 index 0000000..8b36564 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.g4 @@ -0,0 +1,313 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Project : python3-parser; an ANTLR4 grammar for Python 3 + * https://github.com/bkiers/python3-parser + * Developed by : Bart Kiers, bart@big-o.nl + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true + +lexer grammar Python3Lexer; + +// All comments that start with "///" are copy-pasted from +// The Python Language Reference + +tokens { + INDENT, + DEDENT +} + +options { + superClass = Python3LexerBase; +} + +// Insert here @header for C++ lexer. + +/* + * lexer rules + */ + +STRING: STRING_LITERAL | BYTES_LITERAL; + +NUMBER: INTEGER | FLOAT_NUMBER | IMAG_NUMBER; + +INTEGER: DECIMAL_INTEGER | OCT_INTEGER | HEX_INTEGER | BIN_INTEGER; + +AND : 'and'; +AS : 'as'; +ASSERT : 'assert'; +ASYNC : 'async'; +AWAIT : 'await'; +BREAK : 'break'; +CASE : 'case'; +CLASS : 'class'; +CONTINUE : 'continue'; +DEF : 'def'; +DEL : 'del'; +ELIF : 'elif'; +ELSE : 'else'; +EXCEPT : 'except'; +FALSE : 'False'; +FINALLY : 'finally'; +FOR : 'for'; +FROM : 'from'; +GLOBAL : 'global'; +IF : 'if'; +IMPORT : 'import'; +IN : 'in'; +IS : 'is'; +LAMBDA : 'lambda'; +MATCH : 'match'; +NONE : 'None'; +NONLOCAL : 'nonlocal'; +NOT : 'not'; +OR : 'or'; +PASS : 'pass'; +RAISE : 'raise'; +RETURN : 'return'; +TRUE : 'True'; +TRY : 'try'; +UNDERSCORE : '_'; +WHILE : 'while'; +WITH : 'with'; +YIELD : 'yield'; + +NEWLINE: ({this.atStartOfInput()}? SPACES | ( '\r'? '\n' | '\r' | '\f') SPACES?) {this.onNewLine();}; + +/// identifier ::= id_start id_continue* +NAME: ID_START ID_CONTINUE*; + +/// stringliteral ::= [stringprefix](shortstring | longstring) +/// stringprefix ::= "r" | "u" | "R" | "U" | "f" | "F" +/// | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF" +STRING_LITERAL: ( [rR] | [uU] | [fF] | ( [fF] [rR]) | ( [rR] [fF]))? ( SHORT_STRING | LONG_STRING); + +/// bytesliteral ::= bytesprefix(shortbytes | longbytes) +/// bytesprefix ::= "b" | "B" | "br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB" +BYTES_LITERAL: ( [bB] | ( [bB] [rR]) | ( [rR] [bB])) ( SHORT_BYTES | LONG_BYTES); + +/// decimalinteger ::= nonzerodigit digit* | "0"+ +DECIMAL_INTEGER: NON_ZERO_DIGIT DIGIT* | '0'+; + +/// octinteger ::= "0" ("o" | "O") octdigit+ +OCT_INTEGER: '0' [oO] OCT_DIGIT+; + +/// hexinteger ::= "0" ("x" | "X") hexdigit+ +HEX_INTEGER: '0' [xX] HEX_DIGIT+; + +/// bininteger ::= "0" ("b" | "B") bindigit+ +BIN_INTEGER: '0' [bB] BIN_DIGIT+; + +/// floatnumber ::= pointfloat | exponentfloat +FLOAT_NUMBER: POINT_FLOAT | EXPONENT_FLOAT; + +/// imagnumber ::= (floatnumber | intpart) ("j" | "J") +IMAG_NUMBER: ( FLOAT_NUMBER | INT_PART) [jJ]; + +DOT : '.'; +ELLIPSIS : '...'; +STAR : '*'; +OPEN_PAREN : '(' {this.openBrace();}; +CLOSE_PAREN : ')' {this.closeBrace();}; +COMMA : ','; +COLON : ':'; +SEMI_COLON : ';'; +POWER : '**'; +ASSIGN : '='; +OPEN_BRACK : '[' {this.openBrace();}; +CLOSE_BRACK : ']' {this.closeBrace();}; +OR_OP : '|'; +XOR : '^'; +AND_OP : '&'; +LEFT_SHIFT : '<<'; +RIGHT_SHIFT : '>>'; +ADD : '+'; +MINUS : '-'; +DIV : '/'; +MOD : '%'; +IDIV : '//'; +NOT_OP : '~'; +OPEN_BRACE : '{' {this.openBrace();}; +CLOSE_BRACE : '}' {this.closeBrace();}; +LESS_THAN : '<'; +GREATER_THAN : '>'; +EQUALS : '=='; +GT_EQ : '>='; +LT_EQ : '<='; +NOT_EQ_1 : '<>'; +NOT_EQ_2 : '!='; +AT : '@'; +ARROW : '->'; +ADD_ASSIGN : '+='; +SUB_ASSIGN : '-='; +MULT_ASSIGN : '*='; +AT_ASSIGN : '@='; +DIV_ASSIGN : '/='; +MOD_ASSIGN : '%='; +AND_ASSIGN : '&='; +OR_ASSIGN : '|='; +XOR_ASSIGN : '^='; +LEFT_SHIFT_ASSIGN : '<<='; +RIGHT_SHIFT_ASSIGN : '>>='; +POWER_ASSIGN : '**='; +IDIV_ASSIGN : '//='; + +SKIP_: ( SPACES | COMMENT | LINE_JOINING) -> skip; + +UNKNOWN_CHAR: .; + +/* + * fragments + */ + +/// shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"' +/// shortstringitem ::= shortstringchar | stringescapeseq +/// shortstringchar ::= +fragment SHORT_STRING: + '\'' (STRING_ESCAPE_SEQ | ~[\\\r\n\f'])* '\'' + | '"' ( STRING_ESCAPE_SEQ | ~[\\\r\n\f"])* '"' +; +/// longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""' +fragment LONG_STRING: '\'\'\'' LONG_STRING_ITEM*? '\'\'\'' | '"""' LONG_STRING_ITEM*? '"""'; + +/// longstringitem ::= longstringchar | stringescapeseq +fragment LONG_STRING_ITEM: LONG_STRING_CHAR | STRING_ESCAPE_SEQ; + +/// longstringchar ::= +fragment LONG_STRING_CHAR: ~'\\'; + +/// stringescapeseq ::= "\" +fragment STRING_ESCAPE_SEQ: '\\' . | '\\' NEWLINE; + +/// nonzerodigit ::= "1"..."9" +fragment NON_ZERO_DIGIT: [1-9]; + +/// digit ::= "0"..."9" +fragment DIGIT: [0-9]; + +/// octdigit ::= "0"..."7" +fragment OCT_DIGIT: [0-7]; + +/// hexdigit ::= digit | "a"..."f" | "A"..."F" +fragment HEX_DIGIT: [0-9a-fA-F]; + +/// bindigit ::= "0" | "1" +fragment BIN_DIGIT: [01]; + +/// pointfloat ::= [intpart] fraction | intpart "." +fragment POINT_FLOAT: INT_PART? FRACTION | INT_PART '.'; + +/// exponentfloat ::= (intpart | pointfloat) exponent +fragment EXPONENT_FLOAT: ( INT_PART | POINT_FLOAT) EXPONENT; + +/// intpart ::= digit+ +fragment INT_PART: DIGIT+; + +/// fraction ::= "." digit+ +fragment FRACTION: '.' DIGIT+; + +/// exponent ::= ("e" | "E") ["+" | "-"] digit+ +fragment EXPONENT: [eE] [+-]? DIGIT+; + +/// shortbytes ::= "'" shortbytesitem* "'" | '"' shortbytesitem* '"' +/// shortbytesitem ::= shortbyteschar | bytesescapeseq +fragment SHORT_BYTES: + '\'' (SHORT_BYTES_CHAR_NO_SINGLE_QUOTE | BYTES_ESCAPE_SEQ)* '\'' + | '"' ( SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE | BYTES_ESCAPE_SEQ)* '"' +; + +/// longbytes ::= "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""' +fragment LONG_BYTES: '\'\'\'' LONG_BYTES_ITEM*? '\'\'\'' | '"""' LONG_BYTES_ITEM*? '"""'; + +/// longbytesitem ::= longbyteschar | bytesescapeseq +fragment LONG_BYTES_ITEM: LONG_BYTES_CHAR | BYTES_ESCAPE_SEQ; + +/// shortbyteschar ::= +fragment SHORT_BYTES_CHAR_NO_SINGLE_QUOTE: + [\u0000-\u0009] + | [\u000B-\u000C] + | [\u000E-\u0026] + | [\u0028-\u005B] + | [\u005D-\u007F] +; + +fragment SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE: + [\u0000-\u0009] + | [\u000B-\u000C] + | [\u000E-\u0021] + | [\u0023-\u005B] + | [\u005D-\u007F] +; + +/// longbyteschar ::= +fragment LONG_BYTES_CHAR: [\u0000-\u005B] | [\u005D-\u007F]; + +/// bytesescapeseq ::= "\" +fragment BYTES_ESCAPE_SEQ: '\\' [\u0000-\u007F]; + +fragment SPACES: [ \t]+; + +fragment COMMENT: '#' ~[\r\n\f]*; + +fragment LINE_JOINING: '\\' SPACES? ( '\r'? '\n' | '\r' | '\f'); + +// TODO: ANTLR seems lack of some Unicode property support... +//$ curl https://www.unicode.org/Public/13.0.0/ucd/PropList.txt | grep Other_ID_ +//1885..1886 ; Other_ID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA +//2118 ; Other_ID_Start # Sm SCRIPT CAPITAL P +//212E ; Other_ID_Start # So ESTIMATED SYMBOL +//309B..309C ; Other_ID_Start # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +//00B7 ; Other_ID_Continue # Po MIDDLE DOT +//0387 ; Other_ID_Continue # Po GREEK ANO TELEIA +//1369..1371 ; Other_ID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE +//19DA ; Other_ID_Continue # No NEW TAI LUE THAM DIGIT ONE + +fragment UNICODE_OIDS: '\u1885' ..'\u1886' | '\u2118' | '\u212e' | '\u309b' ..'\u309c'; + +fragment UNICODE_OIDC: '\u00b7' | '\u0387' | '\u1369' ..'\u1371' | '\u19da'; + +/// id_start ::= +fragment ID_START: + '_' + | [\p{L}] + | [\p{Nl}] + //| [\p{Other_ID_Start}] + | UNICODE_OIDS +; + +/// id_continue ::= +fragment ID_CONTINUE: + ID_START + | [\p{Mn}] + | [\p{Mc}] + | [\p{Nd}] + | [\p{Pc}] + //| [\p{Other_ID_Continue}] + | UNICODE_OIDC +; \ No newline at end of file diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs new file mode 100644 index 0000000..83e853a --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs @@ -0,0 +1,174 @@ +using Antlr4.Runtime; +using System.Collections.Generic; +using System; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; + +public abstract class Python3LexerBase : Lexer { + // A queue where extra tokens are pushed on (see the NEWLINE lexer rule). + private LinkedList Tokens = new LinkedList(); + // The stack that keeps track of the indentation level. + private Stack Indents = new Stack(); + // The amount of opened braces, brackets and parenthesis. + private int Opened = 0; + // The most recently produced token. + private IToken LastToken = null; + + public Python3LexerBase(ICharStream input) + : base(input) + { + } + public Python3LexerBase(ICharStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + } + + public override void Emit(IToken token) + { + base.Token = token; + Tokens.AddLast(token); + } + + private CommonToken CommonToken(int type, string text) + { + int stop = CharIndex - 1; + int start = text.Length == 0 ? stop : stop - text.Length + 1; + return new CommonToken(Tuple.Create((ITokenSource)this, (ICharStream)InputStream), type, DefaultTokenChannel, start, stop); + } + + private IToken CreateDedent() + { + var dedent = CommonToken(Python3Parser.DEDENT, ""); + dedent.Line = LastToken.Line; + return dedent; + } + + public override IToken NextToken() + { + // Check if the end-of-file is ahead and there are still some DEDENTS expected. + if (((ICharStream)InputStream).LA(1) == Eof && Indents.Count != 0) + { + // Remove any trailing EOF tokens from our buffer. + for (var node = Tokens.First; node != null; ) + { + var temp = node.Next; + if (node.Value.Type == Eof) + { + Tokens.Remove(node); + } + node = temp; + } + + // First emit an extra line break that serves as the end of the statement. + this.Emit(CommonToken(Python3Parser.NEWLINE, "\n")); + + // Now emit as much DEDENT tokens as needed. + while (Indents.Count != 0) + { + Emit(CreateDedent()); + Indents.Pop(); + } + + // Put the EOF back on the token stream. + Emit(CommonToken(Python3Parser.Eof, "")); + } + + var next = base.NextToken(); + if (next.Channel == DefaultTokenChannel) + { + // Keep track of the last token on the default channel. + LastToken = next; + } + + if (Tokens.Count == 0) + { + return next; + } + else + { + var x = Tokens.First.Value; + Tokens.RemoveFirst(); + return x; + } + } + + // Calculates the indentation of the provided spaces, taking the + // following rules into account: + // + // "Tabs are replaced (from left to right) by one to eight spaces + // such that the total number of characters up to and including + // the replacement is a multiple of eight [...]" + // + // -- https://docs.python.org/3.1/reference/lexical_analysis.html#indentation + static int GetIndentationCount(string spaces) + { + int count = 0; + foreach (char ch in spaces.ToCharArray()) + { + count += ch == '\t' ? 8 - (count % 8) : 1; + } + return count; + } + + public bool atStartOfInput() + { + return Column == 0 && Line == 1; + } + + public void openBrace(){ + Opened++; + } + + public void closeBrace(){ + Opened--; + } + + public void onNewLine(){ + var newLine = (new Regex("[^\r\n\f]+")).Replace(Text, ""); + var spaces = (new Regex("[\r\n\f]+")).Replace(Text, ""); + + // Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to + // satisfy the final newline needed by the single_put rule used by the REPL. + int next = ((ICharStream)InputStream).LA(1); + int nextnext = ((ICharStream)InputStream).LA(2); + if (Opened > 0 || (nextnext != -1 && (next == '\r' || next == '\n' || next == '\f' || next == '#'))) + { + // If we're inside a list or on a blank line, ignore all indents, + // dedents and line breaks. + Skip(); + } + else + { + Emit(CommonToken(Python3Lexer.NEWLINE, newLine)); + int indent = GetIndentationCount(spaces); + int previous = Indents.Count == 0 ? 0 : Indents.Peek(); + if (indent == previous) + { + // skip indents of the same size as the present indent-size + Skip(); + } + else if (indent > previous) { + Indents.Push(indent); + Emit(CommonToken(Python3Parser.INDENT, spaces)); + } + else { + // Possibly emit more than 1 DEDENT token. + while(Indents.Count != 0 && Indents.Peek() > indent) + { + this.Emit(CreateDedent()); + Indents.Pop(); + } + } + } + } + + public override void Reset() + { + Tokens = new LinkedList(); + Indents = new Stack(); + Opened = 0; + LastToken = null; + base.Reset(); + } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.g4 b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.g4 new file mode 100644 index 0000000..4c5a27c --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.g4 @@ -0,0 +1,694 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Project : python3-parser; an ANTLR4 grammar for Python 3 + * https://github.com/bkiers/python3-parser + * Developed by : Bart Kiers, bart@big-o.nl + */ + +// Scraping from https://docs.python.org/3/reference/grammar.html + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar Python3Parser; + +options { + superClass = Python3ParserBase; + tokenVocab = Python3Lexer; +} + +// Insert here @header for C++ parser. + +// All comments that start with "///" are copy-pasted from +// The Python Language Reference + +single_input + : NEWLINE + | simple_stmts + | compound_stmt NEWLINE + ; + +file_input + : (NEWLINE | stmt)* EOF + ; + +eval_input + : testlist NEWLINE* EOF + ; + +decorator + : '@' dotted_name ('(' arglist? ')')? NEWLINE + ; + +decorators + : decorator+ + ; + +decorated + : decorators (classdef | funcdef | async_funcdef) + ; + +async_funcdef + : ASYNC funcdef + ; + +funcdef + : 'def' name parameters ('->' test)? ':' block + ; + +parameters + : '(' typedargslist? ')' + ; + +typedargslist + : ( + tfpdef ('=' test)? (',' tfpdef ('=' test)?)* ( + ',' ( + '*' tfpdef? (',' tfpdef ('=' test)?)* (',' ('**' tfpdef ','?)?)? + | '**' tfpdef ','? + )? + )? + | '*' tfpdef? (',' tfpdef ('=' test)?)* (',' ('**' tfpdef ','?)?)? + | '**' tfpdef ','? + ) + ; + +tfpdef + : name (':' test)? + ; + +varargslist + : ( + vfpdef ('=' test)? (',' vfpdef ('=' test)?)* ( + ',' ( + '*' vfpdef? (',' vfpdef ('=' test)?)* (',' ('**' vfpdef ','?)?)? + | '**' vfpdef (',')? + )? + )? + | '*' vfpdef? (',' vfpdef ('=' test)?)* (',' ('**' vfpdef ','?)?)? + | '**' vfpdef ','? + ) + ; + +vfpdef + : name + ; + +stmt + : simple_stmts + | compound_stmt + ; + +simple_stmts + : simple_stmt (';' simple_stmt)* ';'? NEWLINE + ; + +simple_stmt + : ( + expr_stmt + | del_stmt + | pass_stmt + | flow_stmt + | import_stmt + | global_stmt + | nonlocal_stmt + | assert_stmt + ) + ; + +expr_stmt + : testlist_star_expr ( + annassign + | augassign (yield_expr | testlist) + | ('=' (yield_expr | testlist_star_expr))* + ) + ; + +annassign + : ':' test ('=' test)? + ; + +testlist_star_expr + : (test | star_expr) (',' (test | star_expr))* ','? + ; + +augassign + : ( + '+=' + | '-=' + | '*=' + | '@=' + | '/=' + | '%=' + | '&=' + | '|=' + | '^=' + | '<<=' + | '>>=' + | '**=' + | '//=' + ) + ; + +// For normal and annotated assignments, additional restrictions enforced by the interpreter +del_stmt + : 'del' exprlist + ; + +pass_stmt + : 'pass' + ; + +flow_stmt + : break_stmt + | continue_stmt + | return_stmt + | raise_stmt + | yield_stmt + ; + +break_stmt + : 'break' + ; + +continue_stmt + : 'continue' + ; + +return_stmt + : 'return' testlist? + ; + +yield_stmt + : yield_expr + ; + +raise_stmt + : 'raise' (test ('from' test)?)? + ; + +import_stmt + : import_name + | import_from + ; + +import_name + : 'import' dotted_as_names + ; + +// note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from + : ( + 'from' (('.' | '...')* dotted_name | ('.' | '...')+) 'import' ( + '*' + | '(' import_as_names ')' + | import_as_names + ) + ) + ; + +import_as_name + : name ('as' name)? + ; + +dotted_as_name + : dotted_name ('as' name)? + ; + +import_as_names + : import_as_name (',' import_as_name)* ','? + ; + +dotted_as_names + : dotted_as_name (',' dotted_as_name)* + ; + +dotted_name + : name ('.' name)* + ; + +global_stmt + : 'global' name (',' name)* + ; + +nonlocal_stmt + : 'nonlocal' name (',' name)* + ; + +assert_stmt + : 'assert' test (',' test)? + ; + +compound_stmt + : if_stmt + | while_stmt + | for_stmt + | try_stmt + | with_stmt + | funcdef + | classdef + | decorated + | async_stmt + | match_stmt + ; + +async_stmt + : ASYNC (funcdef | with_stmt | for_stmt) + ; + +if_stmt + : 'if' test ':' block ('elif' test ':' block)* ('else' ':' block)? + ; + +while_stmt + : 'while' test ':' block ('else' ':' block)? + ; + +for_stmt + : 'for' exprlist 'in' testlist ':' block ('else' ':' block)? + ; + +try_stmt + : ( + 'try' ':' block ( + (except_clause ':' block)+ ('else' ':' block)? ('finally' ':' block)? + | 'finally' ':' block + ) + ) + ; + +with_stmt + : 'with' with_item (',' with_item)* ':' block + ; + +with_item + : test ('as' expr)? + ; + +// NB compile.c makes sure that the default except clause is last +except_clause + : 'except' (test ('as' name)?)? + ; + +block + : simple_stmts + | NEWLINE INDENT stmt+ DEDENT + ; + +match_stmt + : 'match' subject_expr ':' NEWLINE INDENT case_block+ DEDENT + ; + +subject_expr + : star_named_expression ',' star_named_expressions? + | test + ; + +star_named_expressions + : ',' star_named_expression+ ','? + ; + +star_named_expression + : '*' expr + | test + ; + +case_block + : 'case' patterns guard? ':' block + ; + +guard + : 'if' test + ; + +patterns + : open_sequence_pattern + | pattern + ; + +pattern + : as_pattern + | or_pattern + ; + +as_pattern + : or_pattern 'as' pattern_capture_target + ; + +or_pattern + : closed_pattern ('|' closed_pattern)* + ; + +closed_pattern + : literal_pattern + | capture_pattern + | wildcard_pattern + | value_pattern + | group_pattern + | sequence_pattern + | mapping_pattern + | class_pattern + ; + +literal_pattern + : signed_number { this.CannotBePlusMinus() }? + | complex_number + | strings + | 'None' + | 'True' + | 'False' + ; + +literal_expr + : signed_number { this.CannotBePlusMinus() }? + | complex_number + | strings + | 'None' + | 'True' + | 'False' + ; + +complex_number + : signed_real_number '+' imaginary_number + | signed_real_number '-' imaginary_number + ; + +signed_number + : NUMBER + | '-' NUMBER + ; + +signed_real_number + : real_number + | '-' real_number + ; + +real_number + : NUMBER + ; + +imaginary_number + : NUMBER + ; + +capture_pattern + : pattern_capture_target + ; + +pattern_capture_target + : /* cannot be '_' */ name { this.CannotBeDotLpEq() }? + ; + +wildcard_pattern + : '_' + ; + +value_pattern + : attr { this.CannotBeDotLpEq() }? + ; + +attr + : name ('.' name)+ + ; + +name_or_attr + : attr + | name + ; + +group_pattern + : '(' pattern ')' + ; + +sequence_pattern + : '[' maybe_sequence_pattern? ']' + | '(' open_sequence_pattern? ')' + ; + +open_sequence_pattern + : maybe_star_pattern ',' maybe_sequence_pattern? + ; + +maybe_sequence_pattern + : maybe_star_pattern (',' maybe_star_pattern)* ','? + ; + +maybe_star_pattern + : star_pattern + | pattern + ; + +star_pattern + : '*' pattern_capture_target + | '*' wildcard_pattern + ; + +mapping_pattern + : '{' '}' + | '{' double_star_pattern ','? '}' + | '{' items_pattern ',' double_star_pattern ','? '}' + | '{' items_pattern ','? '}' + ; + +items_pattern + : key_value_pattern (',' key_value_pattern)* + ; + +key_value_pattern + : (literal_expr | attr) ':' pattern + ; + +double_star_pattern + : '**' pattern_capture_target + ; + +class_pattern + : name_or_attr '(' ')' + | name_or_attr '(' positional_patterns ','? ')' + | name_or_attr '(' keyword_patterns ','? ')' + | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' + ; + +positional_patterns + : pattern (',' pattern)* + ; + +keyword_patterns + : keyword_pattern (',' keyword_pattern)* + ; + +keyword_pattern + : name '=' pattern + ; + +test + : or_test ('if' or_test 'else' test)? + | lambdef + ; + +test_nocond + : or_test + | lambdef_nocond + ; + +lambdef + : 'lambda' varargslist? ':' test + ; + +lambdef_nocond + : 'lambda' varargslist? ':' test_nocond + ; + +or_test + : and_test ('or' and_test)* + ; + +and_test + : not_test ('and' not_test)* + ; + +not_test + : 'not' not_test + | comparison + ; + +comparison + : expr (comp_op expr)* + ; + +// <> isn't actually a valid comparison operator in Python. It's here for the +// sake of a __future__ import described in PEP 401 (which really works :-) +comp_op + : '<' + | '>' + | '==' + | '>=' + | '<=' + | '<>' + | '!=' + | 'in' + | 'not' 'in' + | 'is' + | 'is' 'not' + ; + +star_expr + : '*' expr + ; + +expr + : atom_expr + | expr '**' expr + | ('+' | '-' | '~')+ expr + | expr ('*' | '@' | '/' | '%' | '//') expr + | expr ('+' | '-') expr + | expr ('<<' | '>>') expr + | expr '&' expr + | expr '^' expr + | expr '|' expr + ; + +//expr: xor_expr ('|' xor_expr)*; +//xor_expr: and_expr ('^' and_expr)*; +//and_expr: shift_expr ('&' shift_expr)*; +//shift_expr: arith_expr (('<<'|'>>') arith_expr)*; +//arith_expr: term (('+'|'-') term)*; +//term: factor (('*'|'@'|'/'|'%'|'//') factor)*; +//factor: ('+'|'-'|'~') factor | power; +//power: atom_expr ('**' factor)?; +atom_expr + : AWAIT? atom trailer* + ; + +atom + : '(' (yield_expr | testlist_comp)? ')' + | '[' testlist_comp? ']' + | '{' dictorsetmaker? '}' + | name + | NUMBER + | STRING+ + | '...' + | 'None' + | 'True' + | 'False' + ; + +name + : NAME + | '_' + | 'match' + ; + +testlist_comp + : (test | star_expr) (comp_for | (',' (test | star_expr))* ','?) + ; + +trailer + : '(' arglist? ')' + | '[' subscriptlist ']' + | '.' name + ; + +subscriptlist + : subscript_ (',' subscript_)* ','? + ; + +subscript_ + : test + | test? ':' test? sliceop? + ; + +sliceop + : ':' test? + ; + +exprlist + : (expr | star_expr) (',' (expr | star_expr))* ','? + ; + +testlist + : test (',' test)* ','? + ; + +dictorsetmaker + : ( + ((test ':' test | '**' expr) (comp_for | (',' (test ':' test | '**' expr))* ','?)) + | ((test | star_expr) (comp_for | (',' (test | star_expr))* ','?)) + ) + ; + +classdef + : 'class' name ('(' arglist? ')')? ':' block + ; + +arglist + : argument (',' argument)* ','? + ; + +// The reason that keywords are test nodes instead of NAME is that using NAME +// results in an ambiguity. ast.c makes sure it's a NAME. +// "test '=' test" is really "keyword '=' test", but we have no such token. +// These need to be in a single rule to avoid grammar that is ambiguous +// to our LL(1) parser. Even though 'test' includes '*expr' in star_expr, +// we explicitly match '*' here, too, to give it proper precedence. +// Illegal combinations and orderings are blocked in ast.c: +// multiple (test comp_for) arguments are blocked; keyword unpackings +// that precede iterable unpackings are blocked; etc. +argument + : (test comp_for? | test '=' test | '**' test | '*' test) + ; + +comp_iter + : comp_for + | comp_if + ; + +comp_for + : ASYNC? 'for' exprlist 'in' or_test comp_iter? + ; + +comp_if + : 'if' test_nocond comp_iter? + ; + +// not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl + : name + ; + +yield_expr + : 'yield' yield_arg? + ; + +yield_arg + : 'from' test + | testlist + ; + +strings + : STRING+ + ; \ No newline at end of file diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs new file mode 100644 index 0000000..1d814e3 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Antlr4.Runtime; + +public abstract class Python3ParserBase : Parser +{ + protected Python3ParserBase(ITokenStream input) + : base(input) + { + } + + protected Python3ParserBase(ITokenStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + } + + public bool CannotBePlusMinus() + { + return true; + } + + public bool CannotBeDotLpEq() + { + return true; + } +} + From cf3b8e0a731d8dcd64d0b773f7fedf9cfc251b42 Mon Sep 17 00:00:00 2001 From: Svetozar Ikovic Date: Tue, 31 Mar 2026 08:38:56 +0200 Subject: [PATCH 2/5] Generate c# lexer using command: java -jar antlr-4.13.2-complete.jar -Dlanguage=CSharp -visitor -no-listener Python3Lexer.g4 Python3Parser.g4 --- .../Builders/Python/ANTLR/Python3Lexer.cs | 697 ++ .../Builders/Python/ANTLR/Python3Lexer.interp | 350 + .../Builders/Python/ANTLR/Python3Lexer.tokens | 187 + .../Builders/Python/ANTLR/Python3Parser.cs | 10334 ++++++++++++++++ .../Python/ANTLR/Python3Parser.interp | 334 + .../Python/ANTLR/Python3Parser.tokens | 187 + .../Python/ANTLR/Python3ParserBaseVisitor.cs | 1228 ++ .../Python/ANTLR/Python3ParserVisitor.cs | 749 ++ 8 files changed, 14066 insertions(+) create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.interp create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.tokens create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.interp create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.tokens create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs create mode 100644 LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs new file mode 100644 index 0000000..96dfc88 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs @@ -0,0 +1,697 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.2 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from Python3Lexer.g4 by ANTLR 4.13.2 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +using System; +using System.IO; +using System.Text; +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using DFA = Antlr4.Runtime.Dfa.DFA; + +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")] +[System.CLSCompliant(false)] +public partial class Python3Lexer : Python3LexerBase { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + INDENT=1, DEDENT=2, STRING=3, NUMBER=4, INTEGER=5, AND=6, AS=7, ASSERT=8, + ASYNC=9, AWAIT=10, BREAK=11, CASE=12, CLASS=13, CONTINUE=14, DEF=15, DEL=16, + ELIF=17, ELSE=18, EXCEPT=19, FALSE=20, FINALLY=21, FOR=22, FROM=23, GLOBAL=24, + IF=25, IMPORT=26, IN=27, IS=28, LAMBDA=29, MATCH=30, NONE=31, NONLOCAL=32, + NOT=33, OR=34, PASS=35, RAISE=36, RETURN=37, TRUE=38, TRY=39, UNDERSCORE=40, + WHILE=41, WITH=42, YIELD=43, NEWLINE=44, NAME=45, STRING_LITERAL=46, BYTES_LITERAL=47, + DECIMAL_INTEGER=48, OCT_INTEGER=49, HEX_INTEGER=50, BIN_INTEGER=51, FLOAT_NUMBER=52, + IMAG_NUMBER=53, DOT=54, ELLIPSIS=55, STAR=56, OPEN_PAREN=57, CLOSE_PAREN=58, + COMMA=59, COLON=60, SEMI_COLON=61, POWER=62, ASSIGN=63, OPEN_BRACK=64, + CLOSE_BRACK=65, OR_OP=66, XOR=67, AND_OP=68, LEFT_SHIFT=69, RIGHT_SHIFT=70, + ADD=71, MINUS=72, DIV=73, MOD=74, IDIV=75, NOT_OP=76, OPEN_BRACE=77, CLOSE_BRACE=78, + LESS_THAN=79, GREATER_THAN=80, EQUALS=81, GT_EQ=82, LT_EQ=83, NOT_EQ_1=84, + NOT_EQ_2=85, AT=86, ARROW=87, ADD_ASSIGN=88, SUB_ASSIGN=89, MULT_ASSIGN=90, + AT_ASSIGN=91, DIV_ASSIGN=92, MOD_ASSIGN=93, AND_ASSIGN=94, OR_ASSIGN=95, + XOR_ASSIGN=96, LEFT_SHIFT_ASSIGN=97, RIGHT_SHIFT_ASSIGN=98, POWER_ASSIGN=99, + IDIV_ASSIGN=100, SKIP_=101, UNKNOWN_CHAR=102; + public static string[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static string[] modeNames = { + "DEFAULT_MODE" + }; + + public static readonly string[] ruleNames = { + "STRING", "NUMBER", "INTEGER", "AND", "AS", "ASSERT", "ASYNC", "AWAIT", + "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", + "FALSE", "FINALLY", "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", + "LAMBDA", "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE", "RETURN", + "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH", "YIELD", "NEWLINE", "NAME", + "STRING_LITERAL", "BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", + "BIN_INTEGER", "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", + "OPEN_PAREN", "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", "POWER", + "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", + "RIGHT_SHIFT", "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", + "CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", + "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", + "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", + "LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", + "SKIP_", "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM", + "LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT", "DIGIT", "OCT_DIGIT", + "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT", "EXPONENT_FLOAT", "INT_PART", + "FRACTION", "EXPONENT", "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", + "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE", "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", + "LONG_BYTES_CHAR", "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING", + "UNICODE_OIDS", "UNICODE_OIDC", "ID_START", "ID_CONTINUE" + }; + + + public Python3Lexer(ICharStream input) + : this(input, Console.Out, Console.Error) { } + + public Python3Lexer(ICharStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } + + private static readonly string[] _LiteralNames = { + null, null, null, null, null, null, "'and'", "'as'", "'assert'", "'async'", + "'await'", "'break'", "'case'", "'class'", "'continue'", "'def'", "'del'", + "'elif'", "'else'", "'except'", "'False'", "'finally'", "'for'", "'from'", + "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'", "'match'", + "'None'", "'nonlocal'", "'not'", "'or'", "'pass'", "'raise'", "'return'", + "'True'", "'try'", "'_'", "'while'", "'with'", "'yield'", null, null, + null, null, null, null, null, null, null, null, "'.'", "'...'", "'*'", + "'('", "')'", "','", "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", + "'^'", "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", "'//'", "'~'", + "'{'", "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'", "'!='", "'@'", + "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='", "'&='", "'|='", + "'^='", "'<<='", "'>>='", "'**='", "'//='" + }; + private static readonly string[] _SymbolicNames = { + null, "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "AND", "AS", + "ASSERT", "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", + "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", "FOR", "FROM", "GLOBAL", + "IF", "IMPORT", "IN", "IS", "LAMBDA", "MATCH", "NONE", "NONLOCAL", "NOT", + "OR", "PASS", "RAISE", "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", + "WITH", "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL", + "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", + "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN", + "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", + "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", + "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN", + "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", + "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", + "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", + "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } + + public override string GrammarFileName { get { return "Python3Lexer.g4"; } } + + public override string[] RuleNames { get { return ruleNames; } } + + public override string[] ChannelNames { get { return channelNames; } } + + public override string[] ModeNames { get { return modeNames; } } + + public override int[] SerializedAtn { get { return _serializedATN; } } + + static Python3Lexer() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + public override void Action(RuleContext _localctx, int ruleIndex, int actionIndex) { + switch (ruleIndex) { + case 41 : NEWLINE_action(_localctx, actionIndex); break; + case 54 : OPEN_PAREN_action(_localctx, actionIndex); break; + case 55 : CLOSE_PAREN_action(_localctx, actionIndex); break; + case 61 : OPEN_BRACK_action(_localctx, actionIndex); break; + case 62 : CLOSE_BRACK_action(_localctx, actionIndex); break; + case 74 : OPEN_BRACE_action(_localctx, actionIndex); break; + case 75 : CLOSE_BRACE_action(_localctx, actionIndex); break; + } + } + private void NEWLINE_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: this.onNewLine(); break; + } + } + private void OPEN_PAREN_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 1: this.openBrace(); break; + } + } + private void CLOSE_PAREN_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 2: this.closeBrace(); break; + } + } + private void OPEN_BRACK_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 3: this.openBrace(); break; + } + } + private void CLOSE_BRACK_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 4: this.closeBrace(); break; + } + } + private void OPEN_BRACE_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 5: this.openBrace(); break; + } + } + private void CLOSE_BRACE_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 6: this.closeBrace(); break; + } + } + public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 41 : return NEWLINE_sempred(_localctx, predIndex); + } + return true; + } + private bool NEWLINE_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: return this.atStartOfInput(); + } + return true; + } + + private static int[] _serializedATN = { + 4,0,102,910,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, + 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, + 7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35, + 7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42, + 7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49, + 7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56, + 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63, + 7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70, + 7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77, + 7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, + 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, + 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98, + 7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7, + 104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110, + 7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116, + 7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122, + 7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128, + 7,128,1,0,1,0,3,0,262,8,0,1,1,1,1,1,1,3,1,267,8,1,1,2,1,2,1,2,1,2,3,2, + 273,8,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1, + 6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9, + 1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14, + 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24, + 1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27, + 1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32, + 1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34, + 1,34,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,38,1,38, + 1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40, + 1,40,1,41,1,41,1,41,3,41,481,8,41,1,41,1,41,3,41,485,8,41,1,41,3,41,488, + 8,41,3,41,490,8,41,1,41,1,41,1,42,1,42,5,42,496,8,42,10,42,12,42,499,9, + 42,1,43,1,43,1,43,1,43,1,43,3,43,506,8,43,1,43,1,43,3,43,510,8,43,1,44, + 1,44,1,44,1,44,1,44,3,44,517,8,44,1,44,1,44,3,44,521,8,44,1,45,1,45,5, + 45,525,8,45,10,45,12,45,528,9,45,1,45,4,45,531,8,45,11,45,12,45,532,3, + 45,535,8,45,1,46,1,46,1,46,4,46,540,8,46,11,46,12,46,541,1,47,1,47,1,47, + 4,47,547,8,47,11,47,12,47,548,1,48,1,48,1,48,4,48,554,8,48,11,48,12,48, + 555,1,49,1,49,3,49,560,8,49,1,50,1,50,3,50,564,8,50,1,50,1,50,1,51,1,51, + 1,52,1,52,1,52,1,52,1,53,1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56, + 1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,61,1,61,1,61,1,62,1,62, + 1,62,1,63,1,63,1,64,1,64,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68, + 1,68,1,69,1,69,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,74,1,74, + 1,74,1,75,1,75,1,75,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79, + 1,80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,1,84, + 1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,89,1,89, + 1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1,93,1,93,1,94, + 1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,97,1,97,1,97, + 1,97,1,98,1,98,1,98,3,98,700,8,98,1,98,1,98,1,99,1,99,1,100,1,100,1,100, + 5,100,709,8,100,10,100,12,100,712,9,100,1,100,1,100,1,100,1,100,5,100, + 718,8,100,10,100,12,100,721,9,100,1,100,3,100,724,8,100,1,101,1,101,1, + 101,1,101,1,101,5,101,731,8,101,10,101,12,101,734,9,101,1,101,1,101,1, + 101,1,101,1,101,1,101,1,101,1,101,5,101,744,8,101,10,101,12,101,747,9, + 101,1,101,1,101,1,101,3,101,752,8,101,1,102,1,102,3,102,756,8,102,1,103, + 1,103,1,104,1,104,1,104,1,104,3,104,764,8,104,1,105,1,105,1,106,1,106, + 1,107,1,107,1,108,1,108,1,109,1,109,1,110,3,110,777,8,110,1,110,1,110, + 1,110,1,110,3,110,783,8,110,1,111,1,111,3,111,787,8,111,1,111,1,111,1, + 112,4,112,792,8,112,11,112,12,112,793,1,113,1,113,4,113,798,8,113,11,113, + 12,113,799,1,114,1,114,3,114,804,8,114,1,114,4,114,807,8,114,11,114,12, + 114,808,1,115,1,115,1,115,5,115,814,8,115,10,115,12,115,817,9,115,1,115, + 1,115,1,115,1,115,5,115,823,8,115,10,115,12,115,826,9,115,1,115,3,115, + 829,8,115,1,116,1,116,1,116,1,116,1,116,5,116,836,8,116,10,116,12,116, + 839,9,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,5,116,849,8, + 116,10,116,12,116,852,9,116,1,116,1,116,1,116,3,116,857,8,116,1,117,1, + 117,3,117,861,8,117,1,118,3,118,864,8,118,1,119,3,119,867,8,119,1,120, + 3,120,870,8,120,1,121,1,121,1,121,1,122,4,122,876,8,122,11,122,12,122, + 877,1,123,1,123,5,123,882,8,123,10,123,12,123,885,9,123,1,124,1,124,3, + 124,889,8,124,1,124,3,124,892,8,124,1,124,1,124,3,124,896,8,124,1,125, + 1,125,1,126,1,126,1,127,1,127,3,127,904,8,127,1,128,1,128,1,128,3,128, + 909,8,128,4,732,745,837,850,0,129,1,3,3,4,5,5,7,6,9,7,11,8,13,9,15,10, + 17,11,19,12,21,13,23,14,25,15,27,16,29,17,31,18,33,19,35,20,37,21,39,22, + 41,23,43,24,45,25,47,26,49,27,51,28,53,29,55,30,57,31,59,32,61,33,63,34, + 65,35,67,36,69,37,71,38,73,39,75,40,77,41,79,42,81,43,83,44,85,45,87,46, + 89,47,91,48,93,49,95,50,97,51,99,52,101,53,103,54,105,55,107,56,109,57, + 111,58,113,59,115,60,117,61,119,62,121,63,123,64,125,65,127,66,129,67, + 131,68,133,69,135,70,137,71,139,72,141,73,143,74,145,75,147,76,149,77, + 151,78,153,79,155,80,157,81,159,82,161,83,163,84,165,85,167,86,169,87, + 171,88,173,89,175,90,177,91,179,92,181,93,183,94,185,95,187,96,189,97, + 191,98,193,99,195,100,197,101,199,102,201,0,203,0,205,0,207,0,209,0,211, + 0,213,0,215,0,217,0,219,0,221,0,223,0,225,0,227,0,229,0,231,0,233,0,235, + 0,237,0,239,0,241,0,243,0,245,0,247,0,249,0,251,0,253,0,255,0,257,0,1, + 0,27,6,0,70,70,82,82,85,85,102,102,114,114,117,117,2,0,70,70,102,102,2, + 0,82,82,114,114,2,0,66,66,98,98,2,0,79,79,111,111,2,0,88,88,120,120,2, + 0,74,74,106,106,4,0,10,10,12,13,39,39,92,92,4,0,10,10,12,13,34,34,92,92, + 1,0,92,92,1,0,49,57,1,0,48,57,1,0,48,55,3,0,48,57,65,70,97,102,1,0,48, + 49,2,0,69,69,101,101,2,0,43,43,45,45,5,0,0,9,11,12,14,38,40,91,93,127, + 5,0,0,9,11,12,14,33,35,91,93,127,2,0,0,91,93,127,1,0,0,127,2,0,9,9,32, + 32,2,0,10,10,12,13,4,0,6277,6278,8472,8472,8494,8494,12443,12444,4,0,183, + 183,903,903,4969,4977,6618,6618,663,0,65,90,95,95,97,122,170,170,181,181, + 186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884, + 886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015, + 1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568, + 1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791, + 1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042, + 2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160, + 2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2417, + 2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493, + 2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575, + 2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654, + 2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741, + 2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835, + 2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929, + 2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974, + 2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090, + 3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205, + 3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296, + 3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412, + 3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520, + 3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724, + 3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804, + 3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176, + 4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256, + 4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696, + 4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800, + 4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024, + 5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888, + 5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108, + 6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480, + 6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917, + 6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258, + 7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418, + 7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025, + 8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130, + 8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305, + 8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473, + 8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517, + 8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557, + 11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686, + 11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734, + 11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348, + 12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686, + 12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508, + 42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783, + 42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009, + 43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255, + 43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442, + 43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586, + 43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702, + 43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764, + 43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866, + 43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109, + 64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310, + 64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829, + 64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338, + 65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500, + 65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629, + 65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378, + 66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717, + 66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954, + 66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004, + 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514, + 67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669, + 67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897, + 67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149, + 68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437, + 68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899, + 69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505, + 69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807, + 69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006, + 70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187, + 70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312, + 70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451, + 70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730, + 70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131, + 71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494, + 71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958, + 71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161, + 72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329, + 72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847, + 72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064, + 73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523, + 73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895, + 78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909, + 92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026, + 94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589, + 101632,101640,110576,110579,110581,110587,110589,110590,110592,110882, + 110898,110898,110928,110930,110933,110933,110948,110951,110960,111355, + 113664,113770,113776,113788,113792,113800,113808,113817,119808,119892, + 119894,119964,119966,119967,119970,119970,119973,119974,119977,119980, + 119982,119993,119995,119995,119997,120003,120005,120069,120071,120074, + 120077,120084,120086,120092,120094,120121,120123,120126,120128,120132, + 120134,120134,120138,120144,120146,120485,120488,120512,120514,120538, + 120540,120570,120572,120596,120598,120628,120630,120654,120656,120686, + 120688,120712,120714,120744,120746,120770,120772,120779,122624,122654, + 122661,122666,122928,122989,123136,123180,123191,123197,123214,123214, + 123536,123565,123584,123627,124112,124139,124896,124902,124904,124907, + 124909,124910,124912,124926,124928,125124,125184,125251,125259,125259, + 126464,126467,126469,126495,126497,126498,126500,126500,126503,126503, + 126505,126514,126516,126519,126521,126521,126523,126523,126530,126530, + 126535,126535,126537,126537,126539,126539,126541,126543,126545,126546, + 126548,126548,126551,126551,126553,126553,126555,126555,126557,126557, + 126559,126559,126561,126562,126564,126564,126567,126570,126572,126578, + 126580,126583,126585,126588,126590,126590,126592,126601,126603,126619, + 126625,126627,126629,126633,126635,126651,131072,173791,173824,177977, + 177984,178205,178208,183969,183984,191456,194560,195101,196608,201546, + 201552,205743,372,0,48,57,95,95,768,879,1155,1159,1425,1469,1471,1471, + 1473,1474,1476,1477,1479,1479,1552,1562,1611,1641,1648,1648,1750,1756, + 1759,1764,1767,1768,1770,1773,1776,1785,1809,1809,1840,1866,1958,1968, + 1984,1993,2027,2035,2045,2045,2070,2073,2075,2083,2085,2087,2089,2093, + 2137,2139,2200,2207,2250,2273,2275,2307,2362,2364,2366,2383,2385,2391, + 2402,2403,2406,2415,2433,2435,2492,2492,2494,2500,2503,2504,2507,2509, + 2519,2519,2530,2531,2534,2543,2558,2558,2561,2563,2620,2620,2622,2626, + 2631,2632,2635,2637,2641,2641,2662,2673,2677,2677,2689,2691,2748,2748, + 2750,2757,2759,2761,2763,2765,2786,2787,2790,2799,2810,2815,2817,2819, + 2876,2876,2878,2884,2887,2888,2891,2893,2901,2903,2914,2915,2918,2927, + 2946,2946,3006,3010,3014,3016,3018,3021,3031,3031,3046,3055,3072,3076, + 3132,3132,3134,3140,3142,3144,3146,3149,3157,3158,3170,3171,3174,3183, + 3201,3203,3260,3260,3262,3268,3270,3272,3274,3277,3285,3286,3298,3299, + 3302,3311,3315,3315,3328,3331,3387,3388,3390,3396,3398,3400,3402,3405, + 3415,3415,3426,3427,3430,3439,3457,3459,3530,3530,3535,3540,3542,3542, + 3544,3551,3558,3567,3570,3571,3633,3633,3636,3642,3655,3662,3664,3673, + 3761,3761,3764,3772,3784,3790,3792,3801,3864,3865,3872,3881,3893,3893, + 3895,3895,3897,3897,3902,3903,3953,3972,3974,3975,3981,3991,3993,4028, + 4038,4038,4139,4158,4160,4169,4182,4185,4190,4192,4194,4196,4199,4205, + 4209,4212,4226,4237,4239,4253,4957,4959,5906,5909,5938,5940,5970,5971, + 6002,6003,6068,6099,6109,6109,6112,6121,6155,6157,6159,6169,6277,6278, + 6313,6313,6432,6443,6448,6459,6470,6479,6608,6617,6679,6683,6741,6750, + 6752,6780,6783,6793,6800,6809,6832,6845,6847,6862,6912,6916,6964,6980, + 6992,7001,7019,7027,7040,7042,7073,7085,7088,7097,7142,7155,7204,7223, + 7232,7241,7248,7257,7376,7378,7380,7400,7405,7405,7412,7412,7415,7417, + 7616,7679,8255,8256,8276,8276,8400,8412,8417,8417,8421,8432,11503,11505, + 11647,11647,11744,11775,12330,12335,12441,12442,42528,42537,42607,42607, + 42612,42621,42654,42655,42736,42737,43010,43010,43014,43014,43019,43019, + 43043,43047,43052,43052,43136,43137,43188,43205,43216,43225,43232,43249, + 43263,43273,43302,43309,43335,43347,43392,43395,43443,43456,43472,43481, + 43493,43493,43504,43513,43561,43574,43587,43587,43596,43597,43600,43609, + 43643,43645,43696,43696,43698,43700,43703,43704,43710,43711,43713,43713, + 43755,43759,43765,43766,44003,44010,44012,44013,44016,44025,64286,64286, + 65024,65039,65056,65071,65075,65076,65101,65103,65296,65305,65343,65343, + 66045,66045,66272,66272,66422,66426,66720,66729,68097,68099,68101,68102, + 68108,68111,68152,68154,68159,68159,68325,68326,68900,68903,68912,68921, + 69291,69292,69373,69375,69446,69456,69506,69509,69632,69634,69688,69702, + 69734,69744,69747,69748,69759,69762,69808,69818,69826,69826,69872,69881, + 69888,69890,69927,69940,69942,69951,69957,69958,70003,70003,70016,70018, + 70067,70080,70089,70092,70094,70105,70188,70199,70206,70206,70209,70209, + 70367,70378,70384,70393,70400,70403,70459,70460,70462,70468,70471,70472, + 70475,70477,70487,70487,70498,70499,70502,70508,70512,70516,70709,70726, + 70736,70745,70750,70750,70832,70851,70864,70873,71087,71093,71096,71104, + 71132,71133,71216,71232,71248,71257,71339,71351,71360,71369,71453,71467, + 71472,71481,71724,71738,71904,71913,71984,71989,71991,71992,71995,71998, + 72000,72000,72002,72003,72016,72025,72145,72151,72154,72160,72164,72164, + 72193,72202,72243,72249,72251,72254,72263,72263,72273,72283,72330,72345, + 72751,72758,72760,72767,72784,72793,72850,72871,72873,72886,73009,73014, + 73018,73018,73020,73021,73023,73029,73031,73031,73040,73049,73098,73102, + 73104,73105,73107,73111,73120,73129,73459,73462,73472,73473,73475,73475, + 73524,73530,73534,73538,73552,73561,78912,78912,78919,78933,92768,92777, + 92864,92873,92912,92916,92976,92982,93008,93017,94031,94031,94033,94087, + 94095,94098,94180,94180,94192,94193,113821,113822,118528,118573,118576, + 118598,119141,119145,119149,119154,119163,119170,119173,119179,119210, + 119213,119362,119364,120782,120831,121344,121398,121403,121452,121461, + 121461,121476,121476,121499,121503,121505,121519,122880,122886,122888, + 122904,122907,122913,122915,122916,122918,122922,123023,123023,123184, + 123190,123200,123209,123566,123566,123628,123641,124140,124153,125136, + 125142,125252,125258,125264,125273,130032,130041,917760,917999,942,0,1, + 1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0, + 13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1, + 0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0, + 0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45, + 1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0, + 0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67, + 1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0, + 0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89, + 1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0, + 0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0, + 0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0, + 0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0, + 0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0, + 0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0, + 0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0, + 0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0, + 0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0, + 0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0, + 0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0, + 0,1,261,1,0,0,0,3,266,1,0,0,0,5,272,1,0,0,0,7,274,1,0,0,0,9,278,1,0,0, + 0,11,281,1,0,0,0,13,288,1,0,0,0,15,294,1,0,0,0,17,300,1,0,0,0,19,306,1, + 0,0,0,21,311,1,0,0,0,23,317,1,0,0,0,25,326,1,0,0,0,27,330,1,0,0,0,29,334, + 1,0,0,0,31,339,1,0,0,0,33,344,1,0,0,0,35,351,1,0,0,0,37,357,1,0,0,0,39, + 365,1,0,0,0,41,369,1,0,0,0,43,374,1,0,0,0,45,381,1,0,0,0,47,384,1,0,0, + 0,49,391,1,0,0,0,51,394,1,0,0,0,53,397,1,0,0,0,55,404,1,0,0,0,57,410,1, + 0,0,0,59,415,1,0,0,0,61,424,1,0,0,0,63,428,1,0,0,0,65,431,1,0,0,0,67,436, + 1,0,0,0,69,442,1,0,0,0,71,449,1,0,0,0,73,454,1,0,0,0,75,458,1,0,0,0,77, + 460,1,0,0,0,79,466,1,0,0,0,81,471,1,0,0,0,83,489,1,0,0,0,85,493,1,0,0, + 0,87,505,1,0,0,0,89,516,1,0,0,0,91,534,1,0,0,0,93,536,1,0,0,0,95,543,1, + 0,0,0,97,550,1,0,0,0,99,559,1,0,0,0,101,563,1,0,0,0,103,567,1,0,0,0,105, + 569,1,0,0,0,107,573,1,0,0,0,109,575,1,0,0,0,111,578,1,0,0,0,113,581,1, + 0,0,0,115,583,1,0,0,0,117,585,1,0,0,0,119,587,1,0,0,0,121,590,1,0,0,0, + 123,592,1,0,0,0,125,595,1,0,0,0,127,598,1,0,0,0,129,600,1,0,0,0,131,602, + 1,0,0,0,133,604,1,0,0,0,135,607,1,0,0,0,137,610,1,0,0,0,139,612,1,0,0, + 0,141,614,1,0,0,0,143,616,1,0,0,0,145,618,1,0,0,0,147,621,1,0,0,0,149, + 623,1,0,0,0,151,626,1,0,0,0,153,629,1,0,0,0,155,631,1,0,0,0,157,633,1, + 0,0,0,159,636,1,0,0,0,161,639,1,0,0,0,163,642,1,0,0,0,165,645,1,0,0,0, + 167,648,1,0,0,0,169,650,1,0,0,0,171,653,1,0,0,0,173,656,1,0,0,0,175,659, + 1,0,0,0,177,662,1,0,0,0,179,665,1,0,0,0,181,668,1,0,0,0,183,671,1,0,0, + 0,185,674,1,0,0,0,187,677,1,0,0,0,189,680,1,0,0,0,191,684,1,0,0,0,193, + 688,1,0,0,0,195,692,1,0,0,0,197,699,1,0,0,0,199,703,1,0,0,0,201,723,1, + 0,0,0,203,751,1,0,0,0,205,755,1,0,0,0,207,757,1,0,0,0,209,763,1,0,0,0, + 211,765,1,0,0,0,213,767,1,0,0,0,215,769,1,0,0,0,217,771,1,0,0,0,219,773, + 1,0,0,0,221,782,1,0,0,0,223,786,1,0,0,0,225,791,1,0,0,0,227,795,1,0,0, + 0,229,801,1,0,0,0,231,828,1,0,0,0,233,856,1,0,0,0,235,860,1,0,0,0,237, + 863,1,0,0,0,239,866,1,0,0,0,241,869,1,0,0,0,243,871,1,0,0,0,245,875,1, + 0,0,0,247,879,1,0,0,0,249,886,1,0,0,0,251,897,1,0,0,0,253,899,1,0,0,0, + 255,903,1,0,0,0,257,908,1,0,0,0,259,262,3,87,43,0,260,262,3,89,44,0,261, + 259,1,0,0,0,261,260,1,0,0,0,262,2,1,0,0,0,263,267,3,5,2,0,264,267,3,99, + 49,0,265,267,3,101,50,0,266,263,1,0,0,0,266,264,1,0,0,0,266,265,1,0,0, + 0,267,4,1,0,0,0,268,273,3,91,45,0,269,273,3,93,46,0,270,273,3,95,47,0, + 271,273,3,97,48,0,272,268,1,0,0,0,272,269,1,0,0,0,272,270,1,0,0,0,272, + 271,1,0,0,0,273,6,1,0,0,0,274,275,5,97,0,0,275,276,5,110,0,0,276,277,5, + 100,0,0,277,8,1,0,0,0,278,279,5,97,0,0,279,280,5,115,0,0,280,10,1,0,0, + 0,281,282,5,97,0,0,282,283,5,115,0,0,283,284,5,115,0,0,284,285,5,101,0, + 0,285,286,5,114,0,0,286,287,5,116,0,0,287,12,1,0,0,0,288,289,5,97,0,0, + 289,290,5,115,0,0,290,291,5,121,0,0,291,292,5,110,0,0,292,293,5,99,0,0, + 293,14,1,0,0,0,294,295,5,97,0,0,295,296,5,119,0,0,296,297,5,97,0,0,297, + 298,5,105,0,0,298,299,5,116,0,0,299,16,1,0,0,0,300,301,5,98,0,0,301,302, + 5,114,0,0,302,303,5,101,0,0,303,304,5,97,0,0,304,305,5,107,0,0,305,18, + 1,0,0,0,306,307,5,99,0,0,307,308,5,97,0,0,308,309,5,115,0,0,309,310,5, + 101,0,0,310,20,1,0,0,0,311,312,5,99,0,0,312,313,5,108,0,0,313,314,5,97, + 0,0,314,315,5,115,0,0,315,316,5,115,0,0,316,22,1,0,0,0,317,318,5,99,0, + 0,318,319,5,111,0,0,319,320,5,110,0,0,320,321,5,116,0,0,321,322,5,105, + 0,0,322,323,5,110,0,0,323,324,5,117,0,0,324,325,5,101,0,0,325,24,1,0,0, + 0,326,327,5,100,0,0,327,328,5,101,0,0,328,329,5,102,0,0,329,26,1,0,0,0, + 330,331,5,100,0,0,331,332,5,101,0,0,332,333,5,108,0,0,333,28,1,0,0,0,334, + 335,5,101,0,0,335,336,5,108,0,0,336,337,5,105,0,0,337,338,5,102,0,0,338, + 30,1,0,0,0,339,340,5,101,0,0,340,341,5,108,0,0,341,342,5,115,0,0,342,343, + 5,101,0,0,343,32,1,0,0,0,344,345,5,101,0,0,345,346,5,120,0,0,346,347,5, + 99,0,0,347,348,5,101,0,0,348,349,5,112,0,0,349,350,5,116,0,0,350,34,1, + 0,0,0,351,352,5,70,0,0,352,353,5,97,0,0,353,354,5,108,0,0,354,355,5,115, + 0,0,355,356,5,101,0,0,356,36,1,0,0,0,357,358,5,102,0,0,358,359,5,105,0, + 0,359,360,5,110,0,0,360,361,5,97,0,0,361,362,5,108,0,0,362,363,5,108,0, + 0,363,364,5,121,0,0,364,38,1,0,0,0,365,366,5,102,0,0,366,367,5,111,0,0, + 367,368,5,114,0,0,368,40,1,0,0,0,369,370,5,102,0,0,370,371,5,114,0,0,371, + 372,5,111,0,0,372,373,5,109,0,0,373,42,1,0,0,0,374,375,5,103,0,0,375,376, + 5,108,0,0,376,377,5,111,0,0,377,378,5,98,0,0,378,379,5,97,0,0,379,380, + 5,108,0,0,380,44,1,0,0,0,381,382,5,105,0,0,382,383,5,102,0,0,383,46,1, + 0,0,0,384,385,5,105,0,0,385,386,5,109,0,0,386,387,5,112,0,0,387,388,5, + 111,0,0,388,389,5,114,0,0,389,390,5,116,0,0,390,48,1,0,0,0,391,392,5,105, + 0,0,392,393,5,110,0,0,393,50,1,0,0,0,394,395,5,105,0,0,395,396,5,115,0, + 0,396,52,1,0,0,0,397,398,5,108,0,0,398,399,5,97,0,0,399,400,5,109,0,0, + 400,401,5,98,0,0,401,402,5,100,0,0,402,403,5,97,0,0,403,54,1,0,0,0,404, + 405,5,109,0,0,405,406,5,97,0,0,406,407,5,116,0,0,407,408,5,99,0,0,408, + 409,5,104,0,0,409,56,1,0,0,0,410,411,5,78,0,0,411,412,5,111,0,0,412,413, + 5,110,0,0,413,414,5,101,0,0,414,58,1,0,0,0,415,416,5,110,0,0,416,417,5, + 111,0,0,417,418,5,110,0,0,418,419,5,108,0,0,419,420,5,111,0,0,420,421, + 5,99,0,0,421,422,5,97,0,0,422,423,5,108,0,0,423,60,1,0,0,0,424,425,5,110, + 0,0,425,426,5,111,0,0,426,427,5,116,0,0,427,62,1,0,0,0,428,429,5,111,0, + 0,429,430,5,114,0,0,430,64,1,0,0,0,431,432,5,112,0,0,432,433,5,97,0,0, + 433,434,5,115,0,0,434,435,5,115,0,0,435,66,1,0,0,0,436,437,5,114,0,0,437, + 438,5,97,0,0,438,439,5,105,0,0,439,440,5,115,0,0,440,441,5,101,0,0,441, + 68,1,0,0,0,442,443,5,114,0,0,443,444,5,101,0,0,444,445,5,116,0,0,445,446, + 5,117,0,0,446,447,5,114,0,0,447,448,5,110,0,0,448,70,1,0,0,0,449,450,5, + 84,0,0,450,451,5,114,0,0,451,452,5,117,0,0,452,453,5,101,0,0,453,72,1, + 0,0,0,454,455,5,116,0,0,455,456,5,114,0,0,456,457,5,121,0,0,457,74,1,0, + 0,0,458,459,5,95,0,0,459,76,1,0,0,0,460,461,5,119,0,0,461,462,5,104,0, + 0,462,463,5,105,0,0,463,464,5,108,0,0,464,465,5,101,0,0,465,78,1,0,0,0, + 466,467,5,119,0,0,467,468,5,105,0,0,468,469,5,116,0,0,469,470,5,104,0, + 0,470,80,1,0,0,0,471,472,5,121,0,0,472,473,5,105,0,0,473,474,5,101,0,0, + 474,475,5,108,0,0,475,476,5,100,0,0,476,82,1,0,0,0,477,478,4,41,0,0,478, + 490,3,245,122,0,479,481,5,13,0,0,480,479,1,0,0,0,480,481,1,0,0,0,481,482, + 1,0,0,0,482,485,5,10,0,0,483,485,2,12,13,0,484,480,1,0,0,0,484,483,1,0, + 0,0,485,487,1,0,0,0,486,488,3,245,122,0,487,486,1,0,0,0,487,488,1,0,0, + 0,488,490,1,0,0,0,489,477,1,0,0,0,489,484,1,0,0,0,490,491,1,0,0,0,491, + 492,6,41,0,0,492,84,1,0,0,0,493,497,3,255,127,0,494,496,3,257,128,0,495, + 494,1,0,0,0,496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,86,1,0, + 0,0,499,497,1,0,0,0,500,506,7,0,0,0,501,502,7,1,0,0,502,506,7,2,0,0,503, + 504,7,2,0,0,504,506,7,1,0,0,505,500,1,0,0,0,505,501,1,0,0,0,505,503,1, + 0,0,0,505,506,1,0,0,0,506,509,1,0,0,0,507,510,3,201,100,0,508,510,3,203, + 101,0,509,507,1,0,0,0,509,508,1,0,0,0,510,88,1,0,0,0,511,517,7,3,0,0,512, + 513,7,3,0,0,513,517,7,2,0,0,514,515,7,2,0,0,515,517,7,3,0,0,516,511,1, + 0,0,0,516,512,1,0,0,0,516,514,1,0,0,0,517,520,1,0,0,0,518,521,3,231,115, + 0,519,521,3,233,116,0,520,518,1,0,0,0,520,519,1,0,0,0,521,90,1,0,0,0,522, + 526,3,211,105,0,523,525,3,213,106,0,524,523,1,0,0,0,525,528,1,0,0,0,526, + 524,1,0,0,0,526,527,1,0,0,0,527,535,1,0,0,0,528,526,1,0,0,0,529,531,5, + 48,0,0,530,529,1,0,0,0,531,532,1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0, + 533,535,1,0,0,0,534,522,1,0,0,0,534,530,1,0,0,0,535,92,1,0,0,0,536,537, + 5,48,0,0,537,539,7,4,0,0,538,540,3,215,107,0,539,538,1,0,0,0,540,541,1, + 0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,94,1,0,0,0,543,544,5,48,0,0, + 544,546,7,5,0,0,545,547,3,217,108,0,546,545,1,0,0,0,547,548,1,0,0,0,548, + 546,1,0,0,0,548,549,1,0,0,0,549,96,1,0,0,0,550,551,5,48,0,0,551,553,7, + 3,0,0,552,554,3,219,109,0,553,552,1,0,0,0,554,555,1,0,0,0,555,553,1,0, + 0,0,555,556,1,0,0,0,556,98,1,0,0,0,557,560,3,221,110,0,558,560,3,223,111, + 0,559,557,1,0,0,0,559,558,1,0,0,0,560,100,1,0,0,0,561,564,3,99,49,0,562, + 564,3,225,112,0,563,561,1,0,0,0,563,562,1,0,0,0,564,565,1,0,0,0,565,566, + 7,6,0,0,566,102,1,0,0,0,567,568,5,46,0,0,568,104,1,0,0,0,569,570,5,46, + 0,0,570,571,5,46,0,0,571,572,5,46,0,0,572,106,1,0,0,0,573,574,5,42,0,0, + 574,108,1,0,0,0,575,576,5,40,0,0,576,577,6,54,1,0,577,110,1,0,0,0,578, + 579,5,41,0,0,579,580,6,55,2,0,580,112,1,0,0,0,581,582,5,44,0,0,582,114, + 1,0,0,0,583,584,5,58,0,0,584,116,1,0,0,0,585,586,5,59,0,0,586,118,1,0, + 0,0,587,588,5,42,0,0,588,589,5,42,0,0,589,120,1,0,0,0,590,591,5,61,0,0, + 591,122,1,0,0,0,592,593,5,91,0,0,593,594,6,61,3,0,594,124,1,0,0,0,595, + 596,5,93,0,0,596,597,6,62,4,0,597,126,1,0,0,0,598,599,5,124,0,0,599,128, + 1,0,0,0,600,601,5,94,0,0,601,130,1,0,0,0,602,603,5,38,0,0,603,132,1,0, + 0,0,604,605,5,60,0,0,605,606,5,60,0,0,606,134,1,0,0,0,607,608,5,62,0,0, + 608,609,5,62,0,0,609,136,1,0,0,0,610,611,5,43,0,0,611,138,1,0,0,0,612, + 613,5,45,0,0,613,140,1,0,0,0,614,615,5,47,0,0,615,142,1,0,0,0,616,617, + 5,37,0,0,617,144,1,0,0,0,618,619,5,47,0,0,619,620,5,47,0,0,620,146,1,0, + 0,0,621,622,5,126,0,0,622,148,1,0,0,0,623,624,5,123,0,0,624,625,6,74,5, + 0,625,150,1,0,0,0,626,627,5,125,0,0,627,628,6,75,6,0,628,152,1,0,0,0,629, + 630,5,60,0,0,630,154,1,0,0,0,631,632,5,62,0,0,632,156,1,0,0,0,633,634, + 5,61,0,0,634,635,5,61,0,0,635,158,1,0,0,0,636,637,5,62,0,0,637,638,5,61, + 0,0,638,160,1,0,0,0,639,640,5,60,0,0,640,641,5,61,0,0,641,162,1,0,0,0, + 642,643,5,60,0,0,643,644,5,62,0,0,644,164,1,0,0,0,645,646,5,33,0,0,646, + 647,5,61,0,0,647,166,1,0,0,0,648,649,5,64,0,0,649,168,1,0,0,0,650,651, + 5,45,0,0,651,652,5,62,0,0,652,170,1,0,0,0,653,654,5,43,0,0,654,655,5,61, + 0,0,655,172,1,0,0,0,656,657,5,45,0,0,657,658,5,61,0,0,658,174,1,0,0,0, + 659,660,5,42,0,0,660,661,5,61,0,0,661,176,1,0,0,0,662,663,5,64,0,0,663, + 664,5,61,0,0,664,178,1,0,0,0,665,666,5,47,0,0,666,667,5,61,0,0,667,180, + 1,0,0,0,668,669,5,37,0,0,669,670,5,61,0,0,670,182,1,0,0,0,671,672,5,38, + 0,0,672,673,5,61,0,0,673,184,1,0,0,0,674,675,5,124,0,0,675,676,5,61,0, + 0,676,186,1,0,0,0,677,678,5,94,0,0,678,679,5,61,0,0,679,188,1,0,0,0,680, + 681,5,60,0,0,681,682,5,60,0,0,682,683,5,61,0,0,683,190,1,0,0,0,684,685, + 5,62,0,0,685,686,5,62,0,0,686,687,5,61,0,0,687,192,1,0,0,0,688,689,5,42, + 0,0,689,690,5,42,0,0,690,691,5,61,0,0,691,194,1,0,0,0,692,693,5,47,0,0, + 693,694,5,47,0,0,694,695,5,61,0,0,695,196,1,0,0,0,696,700,3,245,122,0, + 697,700,3,247,123,0,698,700,3,249,124,0,699,696,1,0,0,0,699,697,1,0,0, + 0,699,698,1,0,0,0,700,701,1,0,0,0,701,702,6,98,7,0,702,198,1,0,0,0,703, + 704,9,0,0,0,704,200,1,0,0,0,705,710,5,39,0,0,706,709,3,209,104,0,707,709, + 8,7,0,0,708,706,1,0,0,0,708,707,1,0,0,0,709,712,1,0,0,0,710,708,1,0,0, + 0,710,711,1,0,0,0,711,713,1,0,0,0,712,710,1,0,0,0,713,724,5,39,0,0,714, + 719,5,34,0,0,715,718,3,209,104,0,716,718,8,8,0,0,717,715,1,0,0,0,717,716, + 1,0,0,0,718,721,1,0,0,0,719,717,1,0,0,0,719,720,1,0,0,0,720,722,1,0,0, + 0,721,719,1,0,0,0,722,724,5,34,0,0,723,705,1,0,0,0,723,714,1,0,0,0,724, + 202,1,0,0,0,725,726,5,39,0,0,726,727,5,39,0,0,727,728,5,39,0,0,728,732, + 1,0,0,0,729,731,3,205,102,0,730,729,1,0,0,0,731,734,1,0,0,0,732,733,1, + 0,0,0,732,730,1,0,0,0,733,735,1,0,0,0,734,732,1,0,0,0,735,736,5,39,0,0, + 736,737,5,39,0,0,737,752,5,39,0,0,738,739,5,34,0,0,739,740,5,34,0,0,740, + 741,5,34,0,0,741,745,1,0,0,0,742,744,3,205,102,0,743,742,1,0,0,0,744,747, + 1,0,0,0,745,746,1,0,0,0,745,743,1,0,0,0,746,748,1,0,0,0,747,745,1,0,0, + 0,748,749,5,34,0,0,749,750,5,34,0,0,750,752,5,34,0,0,751,725,1,0,0,0,751, + 738,1,0,0,0,752,204,1,0,0,0,753,756,3,207,103,0,754,756,3,209,104,0,755, + 753,1,0,0,0,755,754,1,0,0,0,756,206,1,0,0,0,757,758,8,9,0,0,758,208,1, + 0,0,0,759,760,5,92,0,0,760,764,9,0,0,0,761,762,5,92,0,0,762,764,3,83,41, + 0,763,759,1,0,0,0,763,761,1,0,0,0,764,210,1,0,0,0,765,766,7,10,0,0,766, + 212,1,0,0,0,767,768,7,11,0,0,768,214,1,0,0,0,769,770,7,12,0,0,770,216, + 1,0,0,0,771,772,7,13,0,0,772,218,1,0,0,0,773,774,7,14,0,0,774,220,1,0, + 0,0,775,777,3,225,112,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778,1,0,0, + 0,778,783,3,227,113,0,779,780,3,225,112,0,780,781,5,46,0,0,781,783,1,0, + 0,0,782,776,1,0,0,0,782,779,1,0,0,0,783,222,1,0,0,0,784,787,3,225,112, + 0,785,787,3,221,110,0,786,784,1,0,0,0,786,785,1,0,0,0,787,788,1,0,0,0, + 788,789,3,229,114,0,789,224,1,0,0,0,790,792,3,213,106,0,791,790,1,0,0, + 0,792,793,1,0,0,0,793,791,1,0,0,0,793,794,1,0,0,0,794,226,1,0,0,0,795, + 797,5,46,0,0,796,798,3,213,106,0,797,796,1,0,0,0,798,799,1,0,0,0,799,797, + 1,0,0,0,799,800,1,0,0,0,800,228,1,0,0,0,801,803,7,15,0,0,802,804,7,16, + 0,0,803,802,1,0,0,0,803,804,1,0,0,0,804,806,1,0,0,0,805,807,3,213,106, + 0,806,805,1,0,0,0,807,808,1,0,0,0,808,806,1,0,0,0,808,809,1,0,0,0,809, + 230,1,0,0,0,810,815,5,39,0,0,811,814,3,237,118,0,812,814,3,243,121,0,813, + 811,1,0,0,0,813,812,1,0,0,0,814,817,1,0,0,0,815,813,1,0,0,0,815,816,1, + 0,0,0,816,818,1,0,0,0,817,815,1,0,0,0,818,829,5,39,0,0,819,824,5,34,0, + 0,820,823,3,239,119,0,821,823,3,243,121,0,822,820,1,0,0,0,822,821,1,0, + 0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825,1,0,0,0,825,827,1,0,0,0,826, + 824,1,0,0,0,827,829,5,34,0,0,828,810,1,0,0,0,828,819,1,0,0,0,829,232,1, + 0,0,0,830,831,5,39,0,0,831,832,5,39,0,0,832,833,5,39,0,0,833,837,1,0,0, + 0,834,836,3,235,117,0,835,834,1,0,0,0,836,839,1,0,0,0,837,838,1,0,0,0, + 837,835,1,0,0,0,838,840,1,0,0,0,839,837,1,0,0,0,840,841,5,39,0,0,841,842, + 5,39,0,0,842,857,5,39,0,0,843,844,5,34,0,0,844,845,5,34,0,0,845,846,5, + 34,0,0,846,850,1,0,0,0,847,849,3,235,117,0,848,847,1,0,0,0,849,852,1,0, + 0,0,850,851,1,0,0,0,850,848,1,0,0,0,851,853,1,0,0,0,852,850,1,0,0,0,853, + 854,5,34,0,0,854,855,5,34,0,0,855,857,5,34,0,0,856,830,1,0,0,0,856,843, + 1,0,0,0,857,234,1,0,0,0,858,861,3,241,120,0,859,861,3,243,121,0,860,858, + 1,0,0,0,860,859,1,0,0,0,861,236,1,0,0,0,862,864,7,17,0,0,863,862,1,0,0, + 0,864,238,1,0,0,0,865,867,7,18,0,0,866,865,1,0,0,0,867,240,1,0,0,0,868, + 870,7,19,0,0,869,868,1,0,0,0,870,242,1,0,0,0,871,872,5,92,0,0,872,873, + 7,20,0,0,873,244,1,0,0,0,874,876,7,21,0,0,875,874,1,0,0,0,876,877,1,0, + 0,0,877,875,1,0,0,0,877,878,1,0,0,0,878,246,1,0,0,0,879,883,5,35,0,0,880, + 882,8,22,0,0,881,880,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1, + 0,0,0,884,248,1,0,0,0,885,883,1,0,0,0,886,888,5,92,0,0,887,889,3,245,122, + 0,888,887,1,0,0,0,888,889,1,0,0,0,889,895,1,0,0,0,890,892,5,13,0,0,891, + 890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,896,5,10,0,0,894,896,2, + 12,13,0,895,891,1,0,0,0,895,894,1,0,0,0,896,250,1,0,0,0,897,898,7,23,0, + 0,898,252,1,0,0,0,899,900,7,24,0,0,900,254,1,0,0,0,901,904,7,25,0,0,902, + 904,3,251,125,0,903,901,1,0,0,0,903,902,1,0,0,0,904,256,1,0,0,0,905,909, + 3,255,127,0,906,909,7,26,0,0,907,909,3,253,126,0,908,905,1,0,0,0,908,906, + 1,0,0,0,908,907,1,0,0,0,909,258,1,0,0,0,58,0,261,266,272,480,484,487,489, + 497,505,509,516,520,526,532,534,541,548,555,559,563,699,708,710,717,719, + 723,732,745,751,755,763,776,782,786,793,799,803,808,813,815,822,824,828, + 837,850,856,860,863,866,869,877,883,888,891,895,903,908,8,1,41,0,1,54, + 1,1,55,2,1,61,3,1,62,4,1,74,5,1,75,6,6,0,0 + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); + + +} + diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.interp b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.interp new file mode 100644 index 0000000..b467248 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.interp @@ -0,0 +1,350 @@ +token literal names: +null +null +null +null +null +null +'and' +'as' +'assert' +'async' +'await' +'break' +'case' +'class' +'continue' +'def' +'del' +'elif' +'else' +'except' +'False' +'finally' +'for' +'from' +'global' +'if' +'import' +'in' +'is' +'lambda' +'match' +'None' +'nonlocal' +'not' +'or' +'pass' +'raise' +'return' +'True' +'try' +'_' +'while' +'with' +'yield' +null +null +null +null +null +null +null +null +null +null +'.' +'...' +'*' +'(' +')' +',' +':' +';' +'**' +'=' +'[' +']' +'|' +'^' +'&' +'<<' +'>>' +'+' +'-' +'/' +'%' +'//' +'~' +'{' +'}' +'<' +'>' +'==' +'>=' +'<=' +'<>' +'!=' +'@' +'->' +'+=' +'-=' +'*=' +'@=' +'/=' +'%=' +'&=' +'|=' +'^=' +'<<=' +'>>=' +'**=' +'//=' +null +null + +token symbolic names: +null +INDENT +DEDENT +STRING +NUMBER +INTEGER +AND +AS +ASSERT +ASYNC +AWAIT +BREAK +CASE +CLASS +CONTINUE +DEF +DEL +ELIF +ELSE +EXCEPT +FALSE +FINALLY +FOR +FROM +GLOBAL +IF +IMPORT +IN +IS +LAMBDA +MATCH +NONE +NONLOCAL +NOT +OR +PASS +RAISE +RETURN +TRUE +TRY +UNDERSCORE +WHILE +WITH +YIELD +NEWLINE +NAME +STRING_LITERAL +BYTES_LITERAL +DECIMAL_INTEGER +OCT_INTEGER +HEX_INTEGER +BIN_INTEGER +FLOAT_NUMBER +IMAG_NUMBER +DOT +ELLIPSIS +STAR +OPEN_PAREN +CLOSE_PAREN +COMMA +COLON +SEMI_COLON +POWER +ASSIGN +OPEN_BRACK +CLOSE_BRACK +OR_OP +XOR +AND_OP +LEFT_SHIFT +RIGHT_SHIFT +ADD +MINUS +DIV +MOD +IDIV +NOT_OP +OPEN_BRACE +CLOSE_BRACE +LESS_THAN +GREATER_THAN +EQUALS +GT_EQ +LT_EQ +NOT_EQ_1 +NOT_EQ_2 +AT +ARROW +ADD_ASSIGN +SUB_ASSIGN +MULT_ASSIGN +AT_ASSIGN +DIV_ASSIGN +MOD_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +LEFT_SHIFT_ASSIGN +RIGHT_SHIFT_ASSIGN +POWER_ASSIGN +IDIV_ASSIGN +SKIP_ +UNKNOWN_CHAR + +rule names: +STRING +NUMBER +INTEGER +AND +AS +ASSERT +ASYNC +AWAIT +BREAK +CASE +CLASS +CONTINUE +DEF +DEL +ELIF +ELSE +EXCEPT +FALSE +FINALLY +FOR +FROM +GLOBAL +IF +IMPORT +IN +IS +LAMBDA +MATCH +NONE +NONLOCAL +NOT +OR +PASS +RAISE +RETURN +TRUE +TRY +UNDERSCORE +WHILE +WITH +YIELD +NEWLINE +NAME +STRING_LITERAL +BYTES_LITERAL +DECIMAL_INTEGER +OCT_INTEGER +HEX_INTEGER +BIN_INTEGER +FLOAT_NUMBER +IMAG_NUMBER +DOT +ELLIPSIS +STAR +OPEN_PAREN +CLOSE_PAREN +COMMA +COLON +SEMI_COLON +POWER +ASSIGN +OPEN_BRACK +CLOSE_BRACK +OR_OP +XOR +AND_OP +LEFT_SHIFT +RIGHT_SHIFT +ADD +MINUS +DIV +MOD +IDIV +NOT_OP +OPEN_BRACE +CLOSE_BRACE +LESS_THAN +GREATER_THAN +EQUALS +GT_EQ +LT_EQ +NOT_EQ_1 +NOT_EQ_2 +AT +ARROW +ADD_ASSIGN +SUB_ASSIGN +MULT_ASSIGN +AT_ASSIGN +DIV_ASSIGN +MOD_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +LEFT_SHIFT_ASSIGN +RIGHT_SHIFT_ASSIGN +POWER_ASSIGN +IDIV_ASSIGN +SKIP_ +UNKNOWN_CHAR +SHORT_STRING +LONG_STRING +LONG_STRING_ITEM +LONG_STRING_CHAR +STRING_ESCAPE_SEQ +NON_ZERO_DIGIT +DIGIT +OCT_DIGIT +HEX_DIGIT +BIN_DIGIT +POINT_FLOAT +EXPONENT_FLOAT +INT_PART +FRACTION +EXPONENT +SHORT_BYTES +LONG_BYTES +LONG_BYTES_ITEM +SHORT_BYTES_CHAR_NO_SINGLE_QUOTE +SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE +LONG_BYTES_CHAR +BYTES_ESCAPE_SEQ +SPACES +COMMENT +LINE_JOINING +UNICODE_OIDS +UNICODE_OIDC +ID_START +ID_CONTINUE + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 102, 910, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 1, 0, 1, 0, 3, 0, 262, 8, 0, 1, 1, 1, 1, 1, 1, 3, 1, 267, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 273, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 3, 41, 481, 8, 41, 1, 41, 1, 41, 3, 41, 485, 8, 41, 1, 41, 3, 41, 488, 8, 41, 3, 41, 490, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 5, 42, 496, 8, 42, 10, 42, 12, 42, 499, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 506, 8, 43, 1, 43, 1, 43, 3, 43, 510, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 517, 8, 44, 1, 44, 1, 44, 3, 44, 521, 8, 44, 1, 45, 1, 45, 5, 45, 525, 8, 45, 10, 45, 12, 45, 528, 9, 45, 1, 45, 4, 45, 531, 8, 45, 11, 45, 12, 45, 532, 3, 45, 535, 8, 45, 1, 46, 1, 46, 1, 46, 4, 46, 540, 8, 46, 11, 46, 12, 46, 541, 1, 47, 1, 47, 1, 47, 4, 47, 547, 8, 47, 11, 47, 12, 47, 548, 1, 48, 1, 48, 1, 48, 4, 48, 554, 8, 48, 11, 48, 12, 48, 555, 1, 49, 1, 49, 3, 49, 560, 8, 49, 1, 50, 1, 50, 3, 50, 564, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 3, 98, 700, 8, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 5, 100, 709, 8, 100, 10, 100, 12, 100, 712, 9, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 718, 8, 100, 10, 100, 12, 100, 721, 9, 100, 1, 100, 3, 100, 724, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 731, 8, 101, 10, 101, 12, 101, 734, 9, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 744, 8, 101, 10, 101, 12, 101, 747, 9, 101, 1, 101, 1, 101, 1, 101, 3, 101, 752, 8, 101, 1, 102, 1, 102, 3, 102, 756, 8, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 764, 8, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 3, 110, 777, 8, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 783, 8, 110, 1, 111, 1, 111, 3, 111, 787, 8, 111, 1, 111, 1, 111, 1, 112, 4, 112, 792, 8, 112, 11, 112, 12, 112, 793, 1, 113, 1, 113, 4, 113, 798, 8, 113, 11, 113, 12, 113, 799, 1, 114, 1, 114, 3, 114, 804, 8, 114, 1, 114, 4, 114, 807, 8, 114, 11, 114, 12, 114, 808, 1, 115, 1, 115, 1, 115, 5, 115, 814, 8, 115, 10, 115, 12, 115, 817, 9, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 823, 8, 115, 10, 115, 12, 115, 826, 9, 115, 1, 115, 3, 115, 829, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 836, 8, 116, 10, 116, 12, 116, 839, 9, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 849, 8, 116, 10, 116, 12, 116, 852, 9, 116, 1, 116, 1, 116, 1, 116, 3, 116, 857, 8, 116, 1, 117, 1, 117, 3, 117, 861, 8, 117, 1, 118, 3, 118, 864, 8, 118, 1, 119, 3, 119, 867, 8, 119, 1, 120, 3, 120, 870, 8, 120, 1, 121, 1, 121, 1, 121, 1, 122, 4, 122, 876, 8, 122, 11, 122, 12, 122, 877, 1, 123, 1, 123, 5, 123, 882, 8, 123, 10, 123, 12, 123, 885, 9, 123, 1, 124, 1, 124, 3, 124, 889, 8, 124, 1, 124, 3, 124, 892, 8, 124, 1, 124, 1, 124, 3, 124, 896, 8, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 904, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 909, 8, 128, 4, 732, 745, 837, 850, 0, 129, 1, 3, 3, 4, 5, 5, 7, 6, 9, 7, 11, 8, 13, 9, 15, 10, 17, 11, 19, 12, 21, 13, 23, 14, 25, 15, 27, 16, 29, 17, 31, 18, 33, 19, 35, 20, 37, 21, 39, 22, 41, 23, 43, 24, 45, 25, 47, 26, 49, 27, 51, 28, 53, 29, 55, 30, 57, 31, 59, 32, 61, 33, 63, 34, 65, 35, 67, 36, 69, 37, 71, 38, 73, 39, 75, 40, 77, 41, 79, 42, 81, 43, 83, 44, 85, 45, 87, 46, 89, 47, 91, 48, 93, 49, 95, 50, 97, 51, 99, 52, 101, 53, 103, 54, 105, 55, 107, 56, 109, 57, 111, 58, 113, 59, 115, 60, 117, 61, 119, 62, 121, 63, 123, 64, 125, 65, 127, 66, 129, 67, 131, 68, 133, 69, 135, 70, 137, 71, 139, 72, 141, 73, 143, 74, 145, 75, 147, 76, 149, 77, 151, 78, 153, 79, 155, 80, 157, 81, 159, 82, 161, 83, 163, 84, 165, 85, 167, 86, 169, 87, 171, 88, 173, 89, 175, 90, 177, 91, 179, 92, 181, 93, 183, 94, 185, 95, 187, 96, 189, 97, 191, 98, 193, 99, 195, 100, 197, 101, 199, 102, 201, 0, 203, 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 0, 217, 0, 219, 0, 221, 0, 223, 0, 225, 0, 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, 0, 239, 0, 241, 0, 243, 0, 245, 0, 247, 0, 249, 0, 251, 0, 253, 0, 255, 0, 257, 0, 1, 0, 27, 6, 0, 70, 70, 82, 82, 85, 85, 102, 102, 114, 114, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 88, 88, 120, 120, 2, 0, 74, 74, 106, 106, 4, 0, 10, 10, 12, 13, 39, 39, 92, 92, 4, 0, 10, 10, 12, 13, 34, 34, 92, 92, 1, 0, 92, 92, 1, 0, 49, 57, 1, 0, 48, 57, 1, 0, 48, 55, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 5, 0, 0, 9, 11, 12, 14, 38, 40, 91, 93, 127, 5, 0, 0, 9, 11, 12, 14, 33, 35, 91, 93, 127, 2, 0, 0, 91, 93, 127, 1, 0, 0, 127, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 12, 13, 4, 0, 6277, 6278, 8472, 8472, 8494, 8494, 12443, 12444, 4, 0, 183, 183, 903, 903, 4969, 4977, 6618, 6618, 663, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 372, 0, 48, 57, 95, 95, 768, 879, 1155, 1159, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1552, 1562, 1611, 1641, 1648, 1648, 1750, 1756, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2045, 2045, 2070, 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2200, 2207, 2250, 2273, 2275, 2307, 2362, 2364, 2366, 2383, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2435, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2558, 2558, 2561, 2563, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2673, 2677, 2677, 2689, 2691, 2748, 2748, 2750, 2757, 2759, 2761, 2763, 2765, 2786, 2787, 2790, 2799, 2810, 2815, 2817, 2819, 2876, 2876, 2878, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2914, 2915, 2918, 2927, 2946, 2946, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3046, 3055, 3072, 3076, 3132, 3132, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3201, 3203, 3260, 3260, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3298, 3299, 3302, 3311, 3315, 3315, 3328, 3331, 3387, 3388, 3390, 3396, 3398, 3400, 3402, 3405, 3415, 3415, 3426, 3427, 3430, 3439, 3457, 3459, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3772, 3784, 3790, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3903, 3953, 3972, 3974, 3975, 3981, 3991, 3993, 4028, 4038, 4038, 4139, 4158, 4160, 4169, 4182, 4185, 4190, 4192, 4194, 4196, 4199, 4205, 4209, 4212, 4226, 4237, 4239, 4253, 4957, 4959, 5906, 5909, 5938, 5940, 5970, 5971, 6002, 6003, 6068, 6099, 6109, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6277, 6278, 6313, 6313, 6432, 6443, 6448, 6459, 6470, 6479, 6608, 6617, 6679, 6683, 6741, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6832, 6845, 6847, 6862, 6912, 6916, 6964, 6980, 6992, 7001, 7019, 7027, 7040, 7042, 7073, 7085, 7088, 7097, 7142, 7155, 7204, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7400, 7405, 7405, 7412, 7412, 7415, 7417, 7616, 7679, 8255, 8256, 8276, 8276, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647, 11647, 11744, 11775, 12330, 12335, 12441, 12442, 42528, 42537, 42607, 42607, 42612, 42621, 42654, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019, 43019, 43043, 43047, 43052, 43052, 43136, 43137, 43188, 43205, 43216, 43225, 43232, 43249, 43263, 43273, 43302, 43309, 43335, 43347, 43392, 43395, 43443, 43456, 43472, 43481, 43493, 43493, 43504, 43513, 43561, 43574, 43587, 43587, 43596, 43597, 43600, 43609, 43643, 43645, 43696, 43696, 43698, 43700, 43703, 43704, 43710, 43711, 43713, 43713, 43755, 43759, 43765, 43766, 44003, 44010, 44012, 44013, 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65296, 65305, 65343, 65343, 66045, 66045, 66272, 66272, 66422, 66426, 66720, 66729, 68097, 68099, 68101, 68102, 68108, 68111, 68152, 68154, 68159, 68159, 68325, 68326, 68900, 68903, 68912, 68921, 69291, 69292, 69373, 69375, 69446, 69456, 69506, 69509, 69632, 69634, 69688, 69702, 69734, 69744, 69747, 69748, 69759, 69762, 69808, 69818, 69826, 69826, 69872, 69881, 69888, 69890, 69927, 69940, 69942, 69951, 69957, 69958, 70003, 70003, 70016, 70018, 70067, 70080, 70089, 70092, 70094, 70105, 70188, 70199, 70206, 70206, 70209, 70209, 70367, 70378, 70384, 70393, 70400, 70403, 70459, 70460, 70462, 70468, 70471, 70472, 70475, 70477, 70487, 70487, 70498, 70499, 70502, 70508, 70512, 70516, 70709, 70726, 70736, 70745, 70750, 70750, 70832, 70851, 70864, 70873, 71087, 71093, 71096, 71104, 71132, 71133, 71216, 71232, 71248, 71257, 71339, 71351, 71360, 71369, 71453, 71467, 71472, 71481, 71724, 71738, 71904, 71913, 71984, 71989, 71991, 71992, 71995, 71998, 72000, 72000, 72002, 72003, 72016, 72025, 72145, 72151, 72154, 72160, 72164, 72164, 72193, 72202, 72243, 72249, 72251, 72254, 72263, 72263, 72273, 72283, 72330, 72345, 72751, 72758, 72760, 72767, 72784, 72793, 72850, 72871, 72873, 72886, 73009, 73014, 73018, 73018, 73020, 73021, 73023, 73029, 73031, 73031, 73040, 73049, 73098, 73102, 73104, 73105, 73107, 73111, 73120, 73129, 73459, 73462, 73472, 73473, 73475, 73475, 73524, 73530, 73534, 73538, 73552, 73561, 78912, 78912, 78919, 78933, 92768, 92777, 92864, 92873, 92912, 92916, 92976, 92982, 93008, 93017, 94031, 94031, 94033, 94087, 94095, 94098, 94180, 94180, 94192, 94193, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 123023, 123023, 123184, 123190, 123200, 123209, 123566, 123566, 123628, 123641, 124140, 124153, 125136, 125142, 125252, 125258, 125264, 125273, 130032, 130041, 917760, 917999, 942, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 1, 261, 1, 0, 0, 0, 3, 266, 1, 0, 0, 0, 5, 272, 1, 0, 0, 0, 7, 274, 1, 0, 0, 0, 9, 278, 1, 0, 0, 0, 11, 281, 1, 0, 0, 0, 13, 288, 1, 0, 0, 0, 15, 294, 1, 0, 0, 0, 17, 300, 1, 0, 0, 0, 19, 306, 1, 0, 0, 0, 21, 311, 1, 0, 0, 0, 23, 317, 1, 0, 0, 0, 25, 326, 1, 0, 0, 0, 27, 330, 1, 0, 0, 0, 29, 334, 1, 0, 0, 0, 31, 339, 1, 0, 0, 0, 33, 344, 1, 0, 0, 0, 35, 351, 1, 0, 0, 0, 37, 357, 1, 0, 0, 0, 39, 365, 1, 0, 0, 0, 41, 369, 1, 0, 0, 0, 43, 374, 1, 0, 0, 0, 45, 381, 1, 0, 0, 0, 47, 384, 1, 0, 0, 0, 49, 391, 1, 0, 0, 0, 51, 394, 1, 0, 0, 0, 53, 397, 1, 0, 0, 0, 55, 404, 1, 0, 0, 0, 57, 410, 1, 0, 0, 0, 59, 415, 1, 0, 0, 0, 61, 424, 1, 0, 0, 0, 63, 428, 1, 0, 0, 0, 65, 431, 1, 0, 0, 0, 67, 436, 1, 0, 0, 0, 69, 442, 1, 0, 0, 0, 71, 449, 1, 0, 0, 0, 73, 454, 1, 0, 0, 0, 75, 458, 1, 0, 0, 0, 77, 460, 1, 0, 0, 0, 79, 466, 1, 0, 0, 0, 81, 471, 1, 0, 0, 0, 83, 489, 1, 0, 0, 0, 85, 493, 1, 0, 0, 0, 87, 505, 1, 0, 0, 0, 89, 516, 1, 0, 0, 0, 91, 534, 1, 0, 0, 0, 93, 536, 1, 0, 0, 0, 95, 543, 1, 0, 0, 0, 97, 550, 1, 0, 0, 0, 99, 559, 1, 0, 0, 0, 101, 563, 1, 0, 0, 0, 103, 567, 1, 0, 0, 0, 105, 569, 1, 0, 0, 0, 107, 573, 1, 0, 0, 0, 109, 575, 1, 0, 0, 0, 111, 578, 1, 0, 0, 0, 113, 581, 1, 0, 0, 0, 115, 583, 1, 0, 0, 0, 117, 585, 1, 0, 0, 0, 119, 587, 1, 0, 0, 0, 121, 590, 1, 0, 0, 0, 123, 592, 1, 0, 0, 0, 125, 595, 1, 0, 0, 0, 127, 598, 1, 0, 0, 0, 129, 600, 1, 0, 0, 0, 131, 602, 1, 0, 0, 0, 133, 604, 1, 0, 0, 0, 135, 607, 1, 0, 0, 0, 137, 610, 1, 0, 0, 0, 139, 612, 1, 0, 0, 0, 141, 614, 1, 0, 0, 0, 143, 616, 1, 0, 0, 0, 145, 618, 1, 0, 0, 0, 147, 621, 1, 0, 0, 0, 149, 623, 1, 0, 0, 0, 151, 626, 1, 0, 0, 0, 153, 629, 1, 0, 0, 0, 155, 631, 1, 0, 0, 0, 157, 633, 1, 0, 0, 0, 159, 636, 1, 0, 0, 0, 161, 639, 1, 0, 0, 0, 163, 642, 1, 0, 0, 0, 165, 645, 1, 0, 0, 0, 167, 648, 1, 0, 0, 0, 169, 650, 1, 0, 0, 0, 171, 653, 1, 0, 0, 0, 173, 656, 1, 0, 0, 0, 175, 659, 1, 0, 0, 0, 177, 662, 1, 0, 0, 0, 179, 665, 1, 0, 0, 0, 181, 668, 1, 0, 0, 0, 183, 671, 1, 0, 0, 0, 185, 674, 1, 0, 0, 0, 187, 677, 1, 0, 0, 0, 189, 680, 1, 0, 0, 0, 191, 684, 1, 0, 0, 0, 193, 688, 1, 0, 0, 0, 195, 692, 1, 0, 0, 0, 197, 699, 1, 0, 0, 0, 199, 703, 1, 0, 0, 0, 201, 723, 1, 0, 0, 0, 203, 751, 1, 0, 0, 0, 205, 755, 1, 0, 0, 0, 207, 757, 1, 0, 0, 0, 209, 763, 1, 0, 0, 0, 211, 765, 1, 0, 0, 0, 213, 767, 1, 0, 0, 0, 215, 769, 1, 0, 0, 0, 217, 771, 1, 0, 0, 0, 219, 773, 1, 0, 0, 0, 221, 782, 1, 0, 0, 0, 223, 786, 1, 0, 0, 0, 225, 791, 1, 0, 0, 0, 227, 795, 1, 0, 0, 0, 229, 801, 1, 0, 0, 0, 231, 828, 1, 0, 0, 0, 233, 856, 1, 0, 0, 0, 235, 860, 1, 0, 0, 0, 237, 863, 1, 0, 0, 0, 239, 866, 1, 0, 0, 0, 241, 869, 1, 0, 0, 0, 243, 871, 1, 0, 0, 0, 245, 875, 1, 0, 0, 0, 247, 879, 1, 0, 0, 0, 249, 886, 1, 0, 0, 0, 251, 897, 1, 0, 0, 0, 253, 899, 1, 0, 0, 0, 255, 903, 1, 0, 0, 0, 257, 908, 1, 0, 0, 0, 259, 262, 3, 87, 43, 0, 260, 262, 3, 89, 44, 0, 261, 259, 1, 0, 0, 0, 261, 260, 1, 0, 0, 0, 262, 2, 1, 0, 0, 0, 263, 267, 3, 5, 2, 0, 264, 267, 3, 99, 49, 0, 265, 267, 3, 101, 50, 0, 266, 263, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 4, 1, 0, 0, 0, 268, 273, 3, 91, 45, 0, 269, 273, 3, 93, 46, 0, 270, 273, 3, 95, 47, 0, 271, 273, 3, 97, 48, 0, 272, 268, 1, 0, 0, 0, 272, 269, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 272, 271, 1, 0, 0, 0, 273, 6, 1, 0, 0, 0, 274, 275, 5, 97, 0, 0, 275, 276, 5, 110, 0, 0, 276, 277, 5, 100, 0, 0, 277, 8, 1, 0, 0, 0, 278, 279, 5, 97, 0, 0, 279, 280, 5, 115, 0, 0, 280, 10, 1, 0, 0, 0, 281, 282, 5, 97, 0, 0, 282, 283, 5, 115, 0, 0, 283, 284, 5, 115, 0, 0, 284, 285, 5, 101, 0, 0, 285, 286, 5, 114, 0, 0, 286, 287, 5, 116, 0, 0, 287, 12, 1, 0, 0, 0, 288, 289, 5, 97, 0, 0, 289, 290, 5, 115, 0, 0, 290, 291, 5, 121, 0, 0, 291, 292, 5, 110, 0, 0, 292, 293, 5, 99, 0, 0, 293, 14, 1, 0, 0, 0, 294, 295, 5, 97, 0, 0, 295, 296, 5, 119, 0, 0, 296, 297, 5, 97, 0, 0, 297, 298, 5, 105, 0, 0, 298, 299, 5, 116, 0, 0, 299, 16, 1, 0, 0, 0, 300, 301, 5, 98, 0, 0, 301, 302, 5, 114, 0, 0, 302, 303, 5, 101, 0, 0, 303, 304, 5, 97, 0, 0, 304, 305, 5, 107, 0, 0, 305, 18, 1, 0, 0, 0, 306, 307, 5, 99, 0, 0, 307, 308, 5, 97, 0, 0, 308, 309, 5, 115, 0, 0, 309, 310, 5, 101, 0, 0, 310, 20, 1, 0, 0, 0, 311, 312, 5, 99, 0, 0, 312, 313, 5, 108, 0, 0, 313, 314, 5, 97, 0, 0, 314, 315, 5, 115, 0, 0, 315, 316, 5, 115, 0, 0, 316, 22, 1, 0, 0, 0, 317, 318, 5, 99, 0, 0, 318, 319, 5, 111, 0, 0, 319, 320, 5, 110, 0, 0, 320, 321, 5, 116, 0, 0, 321, 322, 5, 105, 0, 0, 322, 323, 5, 110, 0, 0, 323, 324, 5, 117, 0, 0, 324, 325, 5, 101, 0, 0, 325, 24, 1, 0, 0, 0, 326, 327, 5, 100, 0, 0, 327, 328, 5, 101, 0, 0, 328, 329, 5, 102, 0, 0, 329, 26, 1, 0, 0, 0, 330, 331, 5, 100, 0, 0, 331, 332, 5, 101, 0, 0, 332, 333, 5, 108, 0, 0, 333, 28, 1, 0, 0, 0, 334, 335, 5, 101, 0, 0, 335, 336, 5, 108, 0, 0, 336, 337, 5, 105, 0, 0, 337, 338, 5, 102, 0, 0, 338, 30, 1, 0, 0, 0, 339, 340, 5, 101, 0, 0, 340, 341, 5, 108, 0, 0, 341, 342, 5, 115, 0, 0, 342, 343, 5, 101, 0, 0, 343, 32, 1, 0, 0, 0, 344, 345, 5, 101, 0, 0, 345, 346, 5, 120, 0, 0, 346, 347, 5, 99, 0, 0, 347, 348, 5, 101, 0, 0, 348, 349, 5, 112, 0, 0, 349, 350, 5, 116, 0, 0, 350, 34, 1, 0, 0, 0, 351, 352, 5, 70, 0, 0, 352, 353, 5, 97, 0, 0, 353, 354, 5, 108, 0, 0, 354, 355, 5, 115, 0, 0, 355, 356, 5, 101, 0, 0, 356, 36, 1, 0, 0, 0, 357, 358, 5, 102, 0, 0, 358, 359, 5, 105, 0, 0, 359, 360, 5, 110, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 108, 0, 0, 362, 363, 5, 108, 0, 0, 363, 364, 5, 121, 0, 0, 364, 38, 1, 0, 0, 0, 365, 366, 5, 102, 0, 0, 366, 367, 5, 111, 0, 0, 367, 368, 5, 114, 0, 0, 368, 40, 1, 0, 0, 0, 369, 370, 5, 102, 0, 0, 370, 371, 5, 114, 0, 0, 371, 372, 5, 111, 0, 0, 372, 373, 5, 109, 0, 0, 373, 42, 1, 0, 0, 0, 374, 375, 5, 103, 0, 0, 375, 376, 5, 108, 0, 0, 376, 377, 5, 111, 0, 0, 377, 378, 5, 98, 0, 0, 378, 379, 5, 97, 0, 0, 379, 380, 5, 108, 0, 0, 380, 44, 1, 0, 0, 0, 381, 382, 5, 105, 0, 0, 382, 383, 5, 102, 0, 0, 383, 46, 1, 0, 0, 0, 384, 385, 5, 105, 0, 0, 385, 386, 5, 109, 0, 0, 386, 387, 5, 112, 0, 0, 387, 388, 5, 111, 0, 0, 388, 389, 5, 114, 0, 0, 389, 390, 5, 116, 0, 0, 390, 48, 1, 0, 0, 0, 391, 392, 5, 105, 0, 0, 392, 393, 5, 110, 0, 0, 393, 50, 1, 0, 0, 0, 394, 395, 5, 105, 0, 0, 395, 396, 5, 115, 0, 0, 396, 52, 1, 0, 0, 0, 397, 398, 5, 108, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 109, 0, 0, 400, 401, 5, 98, 0, 0, 401, 402, 5, 100, 0, 0, 402, 403, 5, 97, 0, 0, 403, 54, 1, 0, 0, 0, 404, 405, 5, 109, 0, 0, 405, 406, 5, 97, 0, 0, 406, 407, 5, 116, 0, 0, 407, 408, 5, 99, 0, 0, 408, 409, 5, 104, 0, 0, 409, 56, 1, 0, 0, 0, 410, 411, 5, 78, 0, 0, 411, 412, 5, 111, 0, 0, 412, 413, 5, 110, 0, 0, 413, 414, 5, 101, 0, 0, 414, 58, 1, 0, 0, 0, 415, 416, 5, 110, 0, 0, 416, 417, 5, 111, 0, 0, 417, 418, 5, 110, 0, 0, 418, 419, 5, 108, 0, 0, 419, 420, 5, 111, 0, 0, 420, 421, 5, 99, 0, 0, 421, 422, 5, 97, 0, 0, 422, 423, 5, 108, 0, 0, 423, 60, 1, 0, 0, 0, 424, 425, 5, 110, 0, 0, 425, 426, 5, 111, 0, 0, 426, 427, 5, 116, 0, 0, 427, 62, 1, 0, 0, 0, 428, 429, 5, 111, 0, 0, 429, 430, 5, 114, 0, 0, 430, 64, 1, 0, 0, 0, 431, 432, 5, 112, 0, 0, 432, 433, 5, 97, 0, 0, 433, 434, 5, 115, 0, 0, 434, 435, 5, 115, 0, 0, 435, 66, 1, 0, 0, 0, 436, 437, 5, 114, 0, 0, 437, 438, 5, 97, 0, 0, 438, 439, 5, 105, 0, 0, 439, 440, 5, 115, 0, 0, 440, 441, 5, 101, 0, 0, 441, 68, 1, 0, 0, 0, 442, 443, 5, 114, 0, 0, 443, 444, 5, 101, 0, 0, 444, 445, 5, 116, 0, 0, 445, 446, 5, 117, 0, 0, 446, 447, 5, 114, 0, 0, 447, 448, 5, 110, 0, 0, 448, 70, 1, 0, 0, 0, 449, 450, 5, 84, 0, 0, 450, 451, 5, 114, 0, 0, 451, 452, 5, 117, 0, 0, 452, 453, 5, 101, 0, 0, 453, 72, 1, 0, 0, 0, 454, 455, 5, 116, 0, 0, 455, 456, 5, 114, 0, 0, 456, 457, 5, 121, 0, 0, 457, 74, 1, 0, 0, 0, 458, 459, 5, 95, 0, 0, 459, 76, 1, 0, 0, 0, 460, 461, 5, 119, 0, 0, 461, 462, 5, 104, 0, 0, 462, 463, 5, 105, 0, 0, 463, 464, 5, 108, 0, 0, 464, 465, 5, 101, 0, 0, 465, 78, 1, 0, 0, 0, 466, 467, 5, 119, 0, 0, 467, 468, 5, 105, 0, 0, 468, 469, 5, 116, 0, 0, 469, 470, 5, 104, 0, 0, 470, 80, 1, 0, 0, 0, 471, 472, 5, 121, 0, 0, 472, 473, 5, 105, 0, 0, 473, 474, 5, 101, 0, 0, 474, 475, 5, 108, 0, 0, 475, 476, 5, 100, 0, 0, 476, 82, 1, 0, 0, 0, 477, 478, 4, 41, 0, 0, 478, 490, 3, 245, 122, 0, 479, 481, 5, 13, 0, 0, 480, 479, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 485, 5, 10, 0, 0, 483, 485, 2, 12, 13, 0, 484, 480, 1, 0, 0, 0, 484, 483, 1, 0, 0, 0, 485, 487, 1, 0, 0, 0, 486, 488, 3, 245, 122, 0, 487, 486, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, 0, 489, 477, 1, 0, 0, 0, 489, 484, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 6, 41, 0, 0, 492, 84, 1, 0, 0, 0, 493, 497, 3, 255, 127, 0, 494, 496, 3, 257, 128, 0, 495, 494, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 86, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 506, 7, 0, 0, 0, 501, 502, 7, 1, 0, 0, 502, 506, 7, 2, 0, 0, 503, 504, 7, 2, 0, 0, 504, 506, 7, 1, 0, 0, 505, 500, 1, 0, 0, 0, 505, 501, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 509, 1, 0, 0, 0, 507, 510, 3, 201, 100, 0, 508, 510, 3, 203, 101, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 88, 1, 0, 0, 0, 511, 517, 7, 3, 0, 0, 512, 513, 7, 3, 0, 0, 513, 517, 7, 2, 0, 0, 514, 515, 7, 2, 0, 0, 515, 517, 7, 3, 0, 0, 516, 511, 1, 0, 0, 0, 516, 512, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 521, 3, 231, 115, 0, 519, 521, 3, 233, 116, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 90, 1, 0, 0, 0, 522, 526, 3, 211, 105, 0, 523, 525, 3, 213, 106, 0, 524, 523, 1, 0, 0, 0, 525, 528, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 535, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 529, 531, 5, 48, 0, 0, 530, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 535, 1, 0, 0, 0, 534, 522, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, 535, 92, 1, 0, 0, 0, 536, 537, 5, 48, 0, 0, 537, 539, 7, 4, 0, 0, 538, 540, 3, 215, 107, 0, 539, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 94, 1, 0, 0, 0, 543, 544, 5, 48, 0, 0, 544, 546, 7, 5, 0, 0, 545, 547, 3, 217, 108, 0, 546, 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 96, 1, 0, 0, 0, 550, 551, 5, 48, 0, 0, 551, 553, 7, 3, 0, 0, 552, 554, 3, 219, 109, 0, 553, 552, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 98, 1, 0, 0, 0, 557, 560, 3, 221, 110, 0, 558, 560, 3, 223, 111, 0, 559, 557, 1, 0, 0, 0, 559, 558, 1, 0, 0, 0, 560, 100, 1, 0, 0, 0, 561, 564, 3, 99, 49, 0, 562, 564, 3, 225, 112, 0, 563, 561, 1, 0, 0, 0, 563, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 7, 6, 0, 0, 566, 102, 1, 0, 0, 0, 567, 568, 5, 46, 0, 0, 568, 104, 1, 0, 0, 0, 569, 570, 5, 46, 0, 0, 570, 571, 5, 46, 0, 0, 571, 572, 5, 46, 0, 0, 572, 106, 1, 0, 0, 0, 573, 574, 5, 42, 0, 0, 574, 108, 1, 0, 0, 0, 575, 576, 5, 40, 0, 0, 576, 577, 6, 54, 1, 0, 577, 110, 1, 0, 0, 0, 578, 579, 5, 41, 0, 0, 579, 580, 6, 55, 2, 0, 580, 112, 1, 0, 0, 0, 581, 582, 5, 44, 0, 0, 582, 114, 1, 0, 0, 0, 583, 584, 5, 58, 0, 0, 584, 116, 1, 0, 0, 0, 585, 586, 5, 59, 0, 0, 586, 118, 1, 0, 0, 0, 587, 588, 5, 42, 0, 0, 588, 589, 5, 42, 0, 0, 589, 120, 1, 0, 0, 0, 590, 591, 5, 61, 0, 0, 591, 122, 1, 0, 0, 0, 592, 593, 5, 91, 0, 0, 593, 594, 6, 61, 3, 0, 594, 124, 1, 0, 0, 0, 595, 596, 5, 93, 0, 0, 596, 597, 6, 62, 4, 0, 597, 126, 1, 0, 0, 0, 598, 599, 5, 124, 0, 0, 599, 128, 1, 0, 0, 0, 600, 601, 5, 94, 0, 0, 601, 130, 1, 0, 0, 0, 602, 603, 5, 38, 0, 0, 603, 132, 1, 0, 0, 0, 604, 605, 5, 60, 0, 0, 605, 606, 5, 60, 0, 0, 606, 134, 1, 0, 0, 0, 607, 608, 5, 62, 0, 0, 608, 609, 5, 62, 0, 0, 609, 136, 1, 0, 0, 0, 610, 611, 5, 43, 0, 0, 611, 138, 1, 0, 0, 0, 612, 613, 5, 45, 0, 0, 613, 140, 1, 0, 0, 0, 614, 615, 5, 47, 0, 0, 615, 142, 1, 0, 0, 0, 616, 617, 5, 37, 0, 0, 617, 144, 1, 0, 0, 0, 618, 619, 5, 47, 0, 0, 619, 620, 5, 47, 0, 0, 620, 146, 1, 0, 0, 0, 621, 622, 5, 126, 0, 0, 622, 148, 1, 0, 0, 0, 623, 624, 5, 123, 0, 0, 624, 625, 6, 74, 5, 0, 625, 150, 1, 0, 0, 0, 626, 627, 5, 125, 0, 0, 627, 628, 6, 75, 6, 0, 628, 152, 1, 0, 0, 0, 629, 630, 5, 60, 0, 0, 630, 154, 1, 0, 0, 0, 631, 632, 5, 62, 0, 0, 632, 156, 1, 0, 0, 0, 633, 634, 5, 61, 0, 0, 634, 635, 5, 61, 0, 0, 635, 158, 1, 0, 0, 0, 636, 637, 5, 62, 0, 0, 637, 638, 5, 61, 0, 0, 638, 160, 1, 0, 0, 0, 639, 640, 5, 60, 0, 0, 640, 641, 5, 61, 0, 0, 641, 162, 1, 0, 0, 0, 642, 643, 5, 60, 0, 0, 643, 644, 5, 62, 0, 0, 644, 164, 1, 0, 0, 0, 645, 646, 5, 33, 0, 0, 646, 647, 5, 61, 0, 0, 647, 166, 1, 0, 0, 0, 648, 649, 5, 64, 0, 0, 649, 168, 1, 0, 0, 0, 650, 651, 5, 45, 0, 0, 651, 652, 5, 62, 0, 0, 652, 170, 1, 0, 0, 0, 653, 654, 5, 43, 0, 0, 654, 655, 5, 61, 0, 0, 655, 172, 1, 0, 0, 0, 656, 657, 5, 45, 0, 0, 657, 658, 5, 61, 0, 0, 658, 174, 1, 0, 0, 0, 659, 660, 5, 42, 0, 0, 660, 661, 5, 61, 0, 0, 661, 176, 1, 0, 0, 0, 662, 663, 5, 64, 0, 0, 663, 664, 5, 61, 0, 0, 664, 178, 1, 0, 0, 0, 665, 666, 5, 47, 0, 0, 666, 667, 5, 61, 0, 0, 667, 180, 1, 0, 0, 0, 668, 669, 5, 37, 0, 0, 669, 670, 5, 61, 0, 0, 670, 182, 1, 0, 0, 0, 671, 672, 5, 38, 0, 0, 672, 673, 5, 61, 0, 0, 673, 184, 1, 0, 0, 0, 674, 675, 5, 124, 0, 0, 675, 676, 5, 61, 0, 0, 676, 186, 1, 0, 0, 0, 677, 678, 5, 94, 0, 0, 678, 679, 5, 61, 0, 0, 679, 188, 1, 0, 0, 0, 680, 681, 5, 60, 0, 0, 681, 682, 5, 60, 0, 0, 682, 683, 5, 61, 0, 0, 683, 190, 1, 0, 0, 0, 684, 685, 5, 62, 0, 0, 685, 686, 5, 62, 0, 0, 686, 687, 5, 61, 0, 0, 687, 192, 1, 0, 0, 0, 688, 689, 5, 42, 0, 0, 689, 690, 5, 42, 0, 0, 690, 691, 5, 61, 0, 0, 691, 194, 1, 0, 0, 0, 692, 693, 5, 47, 0, 0, 693, 694, 5, 47, 0, 0, 694, 695, 5, 61, 0, 0, 695, 196, 1, 0, 0, 0, 696, 700, 3, 245, 122, 0, 697, 700, 3, 247, 123, 0, 698, 700, 3, 249, 124, 0, 699, 696, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 698, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 6, 98, 7, 0, 702, 198, 1, 0, 0, 0, 703, 704, 9, 0, 0, 0, 704, 200, 1, 0, 0, 0, 705, 710, 5, 39, 0, 0, 706, 709, 3, 209, 104, 0, 707, 709, 8, 7, 0, 0, 708, 706, 1, 0, 0, 0, 708, 707, 1, 0, 0, 0, 709, 712, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 713, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 724, 5, 39, 0, 0, 714, 719, 5, 34, 0, 0, 715, 718, 3, 209, 104, 0, 716, 718, 8, 8, 0, 0, 717, 715, 1, 0, 0, 0, 717, 716, 1, 0, 0, 0, 718, 721, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 724, 5, 34, 0, 0, 723, 705, 1, 0, 0, 0, 723, 714, 1, 0, 0, 0, 724, 202, 1, 0, 0, 0, 725, 726, 5, 39, 0, 0, 726, 727, 5, 39, 0, 0, 727, 728, 5, 39, 0, 0, 728, 732, 1, 0, 0, 0, 729, 731, 3, 205, 102, 0, 730, 729, 1, 0, 0, 0, 731, 734, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 735, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 735, 736, 5, 39, 0, 0, 736, 737, 5, 39, 0, 0, 737, 752, 5, 39, 0, 0, 738, 739, 5, 34, 0, 0, 739, 740, 5, 34, 0, 0, 740, 741, 5, 34, 0, 0, 741, 745, 1, 0, 0, 0, 742, 744, 3, 205, 102, 0, 743, 742, 1, 0, 0, 0, 744, 747, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 745, 743, 1, 0, 0, 0, 746, 748, 1, 0, 0, 0, 747, 745, 1, 0, 0, 0, 748, 749, 5, 34, 0, 0, 749, 750, 5, 34, 0, 0, 750, 752, 5, 34, 0, 0, 751, 725, 1, 0, 0, 0, 751, 738, 1, 0, 0, 0, 752, 204, 1, 0, 0, 0, 753, 756, 3, 207, 103, 0, 754, 756, 3, 209, 104, 0, 755, 753, 1, 0, 0, 0, 755, 754, 1, 0, 0, 0, 756, 206, 1, 0, 0, 0, 757, 758, 8, 9, 0, 0, 758, 208, 1, 0, 0, 0, 759, 760, 5, 92, 0, 0, 760, 764, 9, 0, 0, 0, 761, 762, 5, 92, 0, 0, 762, 764, 3, 83, 41, 0, 763, 759, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 764, 210, 1, 0, 0, 0, 765, 766, 7, 10, 0, 0, 766, 212, 1, 0, 0, 0, 767, 768, 7, 11, 0, 0, 768, 214, 1, 0, 0, 0, 769, 770, 7, 12, 0, 0, 770, 216, 1, 0, 0, 0, 771, 772, 7, 13, 0, 0, 772, 218, 1, 0, 0, 0, 773, 774, 7, 14, 0, 0, 774, 220, 1, 0, 0, 0, 775, 777, 3, 225, 112, 0, 776, 775, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 783, 3, 227, 113, 0, 779, 780, 3, 225, 112, 0, 780, 781, 5, 46, 0, 0, 781, 783, 1, 0, 0, 0, 782, 776, 1, 0, 0, 0, 782, 779, 1, 0, 0, 0, 783, 222, 1, 0, 0, 0, 784, 787, 3, 225, 112, 0, 785, 787, 3, 221, 110, 0, 786, 784, 1, 0, 0, 0, 786, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 3, 229, 114, 0, 789, 224, 1, 0, 0, 0, 790, 792, 3, 213, 106, 0, 791, 790, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 791, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 226, 1, 0, 0, 0, 795, 797, 5, 46, 0, 0, 796, 798, 3, 213, 106, 0, 797, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 228, 1, 0, 0, 0, 801, 803, 7, 15, 0, 0, 802, 804, 7, 16, 0, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 807, 3, 213, 106, 0, 806, 805, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 230, 1, 0, 0, 0, 810, 815, 5, 39, 0, 0, 811, 814, 3, 237, 118, 0, 812, 814, 3, 243, 121, 0, 813, 811, 1, 0, 0, 0, 813, 812, 1, 0, 0, 0, 814, 817, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 1, 0, 0, 0, 817, 815, 1, 0, 0, 0, 818, 829, 5, 39, 0, 0, 819, 824, 5, 34, 0, 0, 820, 823, 3, 239, 119, 0, 821, 823, 3, 243, 121, 0, 822, 820, 1, 0, 0, 0, 822, 821, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 829, 5, 34, 0, 0, 828, 810, 1, 0, 0, 0, 828, 819, 1, 0, 0, 0, 829, 232, 1, 0, 0, 0, 830, 831, 5, 39, 0, 0, 831, 832, 5, 39, 0, 0, 832, 833, 5, 39, 0, 0, 833, 837, 1, 0, 0, 0, 834, 836, 3, 235, 117, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 838, 840, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 39, 0, 0, 841, 842, 5, 39, 0, 0, 842, 857, 5, 39, 0, 0, 843, 844, 5, 34, 0, 0, 844, 845, 5, 34, 0, 0, 845, 846, 5, 34, 0, 0, 846, 850, 1, 0, 0, 0, 847, 849, 3, 235, 117, 0, 848, 847, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 851, 853, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 854, 5, 34, 0, 0, 854, 855, 5, 34, 0, 0, 855, 857, 5, 34, 0, 0, 856, 830, 1, 0, 0, 0, 856, 843, 1, 0, 0, 0, 857, 234, 1, 0, 0, 0, 858, 861, 3, 241, 120, 0, 859, 861, 3, 243, 121, 0, 860, 858, 1, 0, 0, 0, 860, 859, 1, 0, 0, 0, 861, 236, 1, 0, 0, 0, 862, 864, 7, 17, 0, 0, 863, 862, 1, 0, 0, 0, 864, 238, 1, 0, 0, 0, 865, 867, 7, 18, 0, 0, 866, 865, 1, 0, 0, 0, 867, 240, 1, 0, 0, 0, 868, 870, 7, 19, 0, 0, 869, 868, 1, 0, 0, 0, 870, 242, 1, 0, 0, 0, 871, 872, 5, 92, 0, 0, 872, 873, 7, 20, 0, 0, 873, 244, 1, 0, 0, 0, 874, 876, 7, 21, 0, 0, 875, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 246, 1, 0, 0, 0, 879, 883, 5, 35, 0, 0, 880, 882, 8, 22, 0, 0, 881, 880, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 248, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 888, 5, 92, 0, 0, 887, 889, 3, 245, 122, 0, 888, 887, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 895, 1, 0, 0, 0, 890, 892, 5, 13, 0, 0, 891, 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 896, 5, 10, 0, 0, 894, 896, 2, 12, 13, 0, 895, 891, 1, 0, 0, 0, 895, 894, 1, 0, 0, 0, 896, 250, 1, 0, 0, 0, 897, 898, 7, 23, 0, 0, 898, 252, 1, 0, 0, 0, 899, 900, 7, 24, 0, 0, 900, 254, 1, 0, 0, 0, 901, 904, 7, 25, 0, 0, 902, 904, 3, 251, 125, 0, 903, 901, 1, 0, 0, 0, 903, 902, 1, 0, 0, 0, 904, 256, 1, 0, 0, 0, 905, 909, 3, 255, 127, 0, 906, 909, 7, 26, 0, 0, 907, 909, 3, 253, 126, 0, 908, 905, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 908, 907, 1, 0, 0, 0, 909, 258, 1, 0, 0, 0, 58, 0, 261, 266, 272, 480, 484, 487, 489, 497, 505, 509, 516, 520, 526, 532, 534, 541, 548, 555, 559, 563, 699, 708, 710, 717, 719, 723, 732, 745, 751, 755, 763, 776, 782, 786, 793, 799, 803, 808, 813, 815, 822, 824, 828, 837, 850, 856, 860, 863, 866, 869, 877, 883, 888, 891, 895, 903, 908, 8, 1, 41, 0, 1, 54, 1, 1, 55, 2, 1, 61, 3, 1, 62, 4, 1, 74, 5, 1, 75, 6, 6, 0, 0] \ No newline at end of file diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.tokens b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.tokens new file mode 100644 index 0000000..3e1c535 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.tokens @@ -0,0 +1,187 @@ +INDENT=1 +DEDENT=2 +STRING=3 +NUMBER=4 +INTEGER=5 +AND=6 +AS=7 +ASSERT=8 +ASYNC=9 +AWAIT=10 +BREAK=11 +CASE=12 +CLASS=13 +CONTINUE=14 +DEF=15 +DEL=16 +ELIF=17 +ELSE=18 +EXCEPT=19 +FALSE=20 +FINALLY=21 +FOR=22 +FROM=23 +GLOBAL=24 +IF=25 +IMPORT=26 +IN=27 +IS=28 +LAMBDA=29 +MATCH=30 +NONE=31 +NONLOCAL=32 +NOT=33 +OR=34 +PASS=35 +RAISE=36 +RETURN=37 +TRUE=38 +TRY=39 +UNDERSCORE=40 +WHILE=41 +WITH=42 +YIELD=43 +NEWLINE=44 +NAME=45 +STRING_LITERAL=46 +BYTES_LITERAL=47 +DECIMAL_INTEGER=48 +OCT_INTEGER=49 +HEX_INTEGER=50 +BIN_INTEGER=51 +FLOAT_NUMBER=52 +IMAG_NUMBER=53 +DOT=54 +ELLIPSIS=55 +STAR=56 +OPEN_PAREN=57 +CLOSE_PAREN=58 +COMMA=59 +COLON=60 +SEMI_COLON=61 +POWER=62 +ASSIGN=63 +OPEN_BRACK=64 +CLOSE_BRACK=65 +OR_OP=66 +XOR=67 +AND_OP=68 +LEFT_SHIFT=69 +RIGHT_SHIFT=70 +ADD=71 +MINUS=72 +DIV=73 +MOD=74 +IDIV=75 +NOT_OP=76 +OPEN_BRACE=77 +CLOSE_BRACE=78 +LESS_THAN=79 +GREATER_THAN=80 +EQUALS=81 +GT_EQ=82 +LT_EQ=83 +NOT_EQ_1=84 +NOT_EQ_2=85 +AT=86 +ARROW=87 +ADD_ASSIGN=88 +SUB_ASSIGN=89 +MULT_ASSIGN=90 +AT_ASSIGN=91 +DIV_ASSIGN=92 +MOD_ASSIGN=93 +AND_ASSIGN=94 +OR_ASSIGN=95 +XOR_ASSIGN=96 +LEFT_SHIFT_ASSIGN=97 +RIGHT_SHIFT_ASSIGN=98 +POWER_ASSIGN=99 +IDIV_ASSIGN=100 +SKIP_=101 +UNKNOWN_CHAR=102 +'and'=6 +'as'=7 +'assert'=8 +'async'=9 +'await'=10 +'break'=11 +'case'=12 +'class'=13 +'continue'=14 +'def'=15 +'del'=16 +'elif'=17 +'else'=18 +'except'=19 +'False'=20 +'finally'=21 +'for'=22 +'from'=23 +'global'=24 +'if'=25 +'import'=26 +'in'=27 +'is'=28 +'lambda'=29 +'match'=30 +'None'=31 +'nonlocal'=32 +'not'=33 +'or'=34 +'pass'=35 +'raise'=36 +'return'=37 +'True'=38 +'try'=39 +'_'=40 +'while'=41 +'with'=42 +'yield'=43 +'.'=54 +'...'=55 +'*'=56 +'('=57 +')'=58 +','=59 +':'=60 +';'=61 +'**'=62 +'='=63 +'['=64 +']'=65 +'|'=66 +'^'=67 +'&'=68 +'<<'=69 +'>>'=70 +'+'=71 +'-'=72 +'/'=73 +'%'=74 +'//'=75 +'~'=76 +'{'=77 +'}'=78 +'<'=79 +'>'=80 +'=='=81 +'>='=82 +'<='=83 +'<>'=84 +'!='=85 +'@'=86 +'->'=87 +'+='=88 +'-='=89 +'*='=90 +'@='=91 +'/='=92 +'%='=93 +'&='=94 +'|='=95 +'^='=96 +'<<='=97 +'>>='=98 +'**='=99 +'//='=100 diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs new file mode 100644 index 0000000..0cc42c3 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs @@ -0,0 +1,10334 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.2 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from Python3Parser.g4 by ANTLR 4.13.2 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +using System; +using System.IO; +using System.Text; +using System.Diagnostics; +using System.Collections.Generic; +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using DFA = Antlr4.Runtime.Dfa.DFA; + +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")] +[System.CLSCompliant(false)] +public partial class Python3Parser : Python3ParserBase { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + INDENT=1, DEDENT=2, STRING=3, NUMBER=4, INTEGER=5, AND=6, AS=7, ASSERT=8, + ASYNC=9, AWAIT=10, BREAK=11, CASE=12, CLASS=13, CONTINUE=14, DEF=15, DEL=16, + ELIF=17, ELSE=18, EXCEPT=19, FALSE=20, FINALLY=21, FOR=22, FROM=23, GLOBAL=24, + IF=25, IMPORT=26, IN=27, IS=28, LAMBDA=29, MATCH=30, NONE=31, NONLOCAL=32, + NOT=33, OR=34, PASS=35, RAISE=36, RETURN=37, TRUE=38, TRY=39, UNDERSCORE=40, + WHILE=41, WITH=42, YIELD=43, NEWLINE=44, NAME=45, STRING_LITERAL=46, BYTES_LITERAL=47, + DECIMAL_INTEGER=48, OCT_INTEGER=49, HEX_INTEGER=50, BIN_INTEGER=51, FLOAT_NUMBER=52, + IMAG_NUMBER=53, DOT=54, ELLIPSIS=55, STAR=56, OPEN_PAREN=57, CLOSE_PAREN=58, + COMMA=59, COLON=60, SEMI_COLON=61, POWER=62, ASSIGN=63, OPEN_BRACK=64, + CLOSE_BRACK=65, OR_OP=66, XOR=67, AND_OP=68, LEFT_SHIFT=69, RIGHT_SHIFT=70, + ADD=71, MINUS=72, DIV=73, MOD=74, IDIV=75, NOT_OP=76, OPEN_BRACE=77, CLOSE_BRACE=78, + LESS_THAN=79, GREATER_THAN=80, EQUALS=81, GT_EQ=82, LT_EQ=83, NOT_EQ_1=84, + NOT_EQ_2=85, AT=86, ARROW=87, ADD_ASSIGN=88, SUB_ASSIGN=89, MULT_ASSIGN=90, + AT_ASSIGN=91, DIV_ASSIGN=92, MOD_ASSIGN=93, AND_ASSIGN=94, OR_ASSIGN=95, + XOR_ASSIGN=96, LEFT_SHIFT_ASSIGN=97, RIGHT_SHIFT_ASSIGN=98, POWER_ASSIGN=99, + IDIV_ASSIGN=100, SKIP_=101, UNKNOWN_CHAR=102; + public const int + RULE_single_input = 0, RULE_file_input = 1, RULE_eval_input = 2, RULE_decorator = 3, + RULE_decorators = 4, RULE_decorated = 5, RULE_async_funcdef = 6, RULE_funcdef = 7, + RULE_parameters = 8, RULE_typedargslist = 9, RULE_tfpdef = 10, RULE_varargslist = 11, + RULE_vfpdef = 12, RULE_stmt = 13, RULE_simple_stmts = 14, RULE_simple_stmt = 15, + RULE_expr_stmt = 16, RULE_annassign = 17, RULE_testlist_star_expr = 18, + RULE_augassign = 19, RULE_del_stmt = 20, RULE_pass_stmt = 21, RULE_flow_stmt = 22, + RULE_break_stmt = 23, RULE_continue_stmt = 24, RULE_return_stmt = 25, + RULE_yield_stmt = 26, RULE_raise_stmt = 27, RULE_import_stmt = 28, RULE_import_name = 29, + RULE_import_from = 30, RULE_import_as_name = 31, RULE_dotted_as_name = 32, + RULE_import_as_names = 33, RULE_dotted_as_names = 34, RULE_dotted_name = 35, + RULE_global_stmt = 36, RULE_nonlocal_stmt = 37, RULE_assert_stmt = 38, + RULE_compound_stmt = 39, RULE_async_stmt = 40, RULE_if_stmt = 41, RULE_while_stmt = 42, + RULE_for_stmt = 43, RULE_try_stmt = 44, RULE_with_stmt = 45, RULE_with_item = 46, + RULE_except_clause = 47, RULE_block = 48, RULE_match_stmt = 49, RULE_subject_expr = 50, + RULE_star_named_expressions = 51, RULE_star_named_expression = 52, RULE_case_block = 53, + RULE_guard = 54, RULE_patterns = 55, RULE_pattern = 56, RULE_as_pattern = 57, + RULE_or_pattern = 58, RULE_closed_pattern = 59, RULE_literal_pattern = 60, + RULE_literal_expr = 61, RULE_complex_number = 62, RULE_signed_number = 63, + RULE_signed_real_number = 64, RULE_real_number = 65, RULE_imaginary_number = 66, + RULE_capture_pattern = 67, RULE_pattern_capture_target = 68, RULE_wildcard_pattern = 69, + RULE_value_pattern = 70, RULE_attr = 71, RULE_name_or_attr = 72, RULE_group_pattern = 73, + RULE_sequence_pattern = 74, RULE_open_sequence_pattern = 75, RULE_maybe_sequence_pattern = 76, + RULE_maybe_star_pattern = 77, RULE_star_pattern = 78, RULE_mapping_pattern = 79, + RULE_items_pattern = 80, RULE_key_value_pattern = 81, RULE_double_star_pattern = 82, + RULE_class_pattern = 83, RULE_positional_patterns = 84, RULE_keyword_patterns = 85, + RULE_keyword_pattern = 86, RULE_test = 87, RULE_test_nocond = 88, RULE_lambdef = 89, + RULE_lambdef_nocond = 90, RULE_or_test = 91, RULE_and_test = 92, RULE_not_test = 93, + RULE_comparison = 94, RULE_comp_op = 95, RULE_star_expr = 96, RULE_expr = 97, + RULE_atom_expr = 98, RULE_atom = 99, RULE_name = 100, RULE_testlist_comp = 101, + RULE_trailer = 102, RULE_subscriptlist = 103, RULE_subscript_ = 104, RULE_sliceop = 105, + RULE_exprlist = 106, RULE_testlist = 107, RULE_dictorsetmaker = 108, RULE_classdef = 109, + RULE_arglist = 110, RULE_argument = 111, RULE_comp_iter = 112, RULE_comp_for = 113, + RULE_comp_if = 114, RULE_encoding_decl = 115, RULE_yield_expr = 116, RULE_yield_arg = 117, + RULE_strings = 118; + public static readonly string[] ruleNames = { + "single_input", "file_input", "eval_input", "decorator", "decorators", + "decorated", "async_funcdef", "funcdef", "parameters", "typedargslist", + "tfpdef", "varargslist", "vfpdef", "stmt", "simple_stmts", "simple_stmt", + "expr_stmt", "annassign", "testlist_star_expr", "augassign", "del_stmt", + "pass_stmt", "flow_stmt", "break_stmt", "continue_stmt", "return_stmt", + "yield_stmt", "raise_stmt", "import_stmt", "import_name", "import_from", + "import_as_name", "dotted_as_name", "import_as_names", "dotted_as_names", + "dotted_name", "global_stmt", "nonlocal_stmt", "assert_stmt", "compound_stmt", + "async_stmt", "if_stmt", "while_stmt", "for_stmt", "try_stmt", "with_stmt", + "with_item", "except_clause", "block", "match_stmt", "subject_expr", "star_named_expressions", + "star_named_expression", "case_block", "guard", "patterns", "pattern", + "as_pattern", "or_pattern", "closed_pattern", "literal_pattern", "literal_expr", + "complex_number", "signed_number", "signed_real_number", "real_number", + "imaginary_number", "capture_pattern", "pattern_capture_target", "wildcard_pattern", + "value_pattern", "attr", "name_or_attr", "group_pattern", "sequence_pattern", + "open_sequence_pattern", "maybe_sequence_pattern", "maybe_star_pattern", + "star_pattern", "mapping_pattern", "items_pattern", "key_value_pattern", + "double_star_pattern", "class_pattern", "positional_patterns", "keyword_patterns", + "keyword_pattern", "test", "test_nocond", "lambdef", "lambdef_nocond", + "or_test", "and_test", "not_test", "comparison", "comp_op", "star_expr", + "expr", "atom_expr", "atom", "name", "testlist_comp", "trailer", "subscriptlist", + "subscript_", "sliceop", "exprlist", "testlist", "dictorsetmaker", "classdef", + "arglist", "argument", "comp_iter", "comp_for", "comp_if", "encoding_decl", + "yield_expr", "yield_arg", "strings" + }; + + private static readonly string[] _LiteralNames = { + null, null, null, null, null, null, "'and'", "'as'", "'assert'", "'async'", + "'await'", "'break'", "'case'", "'class'", "'continue'", "'def'", "'del'", + "'elif'", "'else'", "'except'", "'False'", "'finally'", "'for'", "'from'", + "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'", "'match'", + "'None'", "'nonlocal'", "'not'", "'or'", "'pass'", "'raise'", "'return'", + "'True'", "'try'", "'_'", "'while'", "'with'", "'yield'", null, null, + null, null, null, null, null, null, null, null, "'.'", "'...'", "'*'", + "'('", "')'", "','", "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", + "'^'", "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", "'//'", "'~'", + "'{'", "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'", "'!='", "'@'", + "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='", "'&='", "'|='", + "'^='", "'<<='", "'>>='", "'**='", "'//='" + }; + private static readonly string[] _SymbolicNames = { + null, "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "AND", "AS", + "ASSERT", "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", + "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", "FOR", "FROM", "GLOBAL", + "IF", "IMPORT", "IN", "IS", "LAMBDA", "MATCH", "NONE", "NONLOCAL", "NOT", + "OR", "PASS", "RAISE", "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", + "WITH", "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL", + "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", + "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN", + "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", + "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", + "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN", + "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", + "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", + "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", + "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } + + public override string GrammarFileName { get { return "Python3Parser.g4"; } } + + public override string[] RuleNames { get { return ruleNames; } } + + public override int[] SerializedAtn { get { return _serializedATN; } } + + static Python3Parser() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + + public Python3Parser(ITokenStream input) : this(input, Console.Out, Console.Error) { } + + public Python3Parser(ITokenStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } + + public partial class Single_inputContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(Python3Parser.NEWLINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Simple_stmtsContext simple_stmts() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Compound_stmtContext compound_stmt() { + return GetRuleContext(0); + } + public Single_inputContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_single_input; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSingle_input(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Single_inputContext single_input() { + Single_inputContext _localctx = new Single_inputContext(Context, State); + EnterRule(_localctx, 0, RULE_single_input); + try { + State = 243; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,0,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 238; + Match(NEWLINE); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 239; + simple_stmts(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 240; + compound_stmt(); + State = 241; + Match(NEWLINE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class File_inputContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(Python3Parser.Eof, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] NEWLINE() { return GetTokens(Python3Parser.NEWLINE); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE(int i) { + return GetToken(Python3Parser.NEWLINE, i); + } + [System.Diagnostics.DebuggerNonUserCode] public StmtContext[] stmt() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public StmtContext stmt(int i) { + return GetRuleContext(i); + } + public File_inputContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_file_input; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitFile_input(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public File_inputContext file_input() { + File_inputContext _localctx = new File_inputContext(Context, State); + EnterRule(_localctx, 2, RULE_file_input); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 249; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 252271930291384088L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 4206977L) != 0)) { + { + State = 247; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case NEWLINE: + { + State = 245; + Match(NEWLINE); + } + break; + case STRING: + case NUMBER: + case ASSERT: + case ASYNC: + case AWAIT: + case BREAK: + case CLASS: + case CONTINUE: + case DEF: + case DEL: + case FALSE: + case FOR: + case FROM: + case GLOBAL: + case IF: + case IMPORT: + case LAMBDA: + case MATCH: + case NONE: + case NONLOCAL: + case NOT: + case PASS: + case RAISE: + case RETURN: + case TRUE: + case TRY: + case UNDERSCORE: + case WHILE: + case WITH: + case YIELD: + case NAME: + case ELLIPSIS: + case STAR: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + case AT: + { + State = 246; + stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 251; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 252; + Match(Eof); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Eval_inputContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestlistContext testlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(Python3Parser.Eof, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] NEWLINE() { return GetTokens(Python3Parser.NEWLINE); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE(int i) { + return GetToken(Python3Parser.NEWLINE, i); + } + public Eval_inputContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_eval_input; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitEval_input(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Eval_inputContext eval_input() { + Eval_inputContext _localctx = new Eval_inputContext(Context, State); + EnterRule(_localctx, 4, RULE_eval_input); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 254; + testlist(); + State = 258; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==NEWLINE) { + { + { + State = 255; + Match(NEWLINE); + } + } + State = 260; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 261; + Match(Eof); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DecoratorContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AT() { return GetToken(Python3Parser.AT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Dotted_nameContext dotted_name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(Python3Parser.NEWLINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ArglistContext arglist() { + return GetRuleContext(0); + } + public DecoratorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_decorator; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDecorator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DecoratorContext decorator() { + DecoratorContext _localctx = new DecoratorContext(Context, State); + EnterRule(_localctx, 6, RULE_decorator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 263; + Match(AT); + State = 264; + dotted_name(); + State = 270; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==OPEN_PAREN) { + { + State = 265; + Match(OPEN_PAREN); + State = 267; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4863924168670839832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 266; + arglist(); + } + } + + State = 269; + Match(CLOSE_PAREN); + } + } + + State = 272; + Match(NEWLINE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DecoratorsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DecoratorContext[] decorator() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DecoratorContext decorator(int i) { + return GetRuleContext(i); + } + public DecoratorsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_decorators; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDecorators(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DecoratorsContext decorators() { + DecoratorsContext _localctx = new DecoratorsContext(Context, State); + EnterRule(_localctx, 8, RULE_decorators); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 275; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 274; + decorator(); + } + } + State = 277; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( _la==AT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DecoratedContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DecoratorsContext decorators() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassdefContext classdef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FuncdefContext funcdef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Async_funcdefContext async_funcdef() { + return GetRuleContext(0); + } + public DecoratedContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_decorated; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDecorated(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DecoratedContext decorated() { + DecoratedContext _localctx = new DecoratedContext(Context, State); + EnterRule(_localctx, 10, RULE_decorated); + try { + EnterOuterAlt(_localctx, 1); + { + State = 279; + decorators(); + State = 283; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case CLASS: + { + State = 280; + classdef(); + } + break; + case DEF: + { + State = 281; + funcdef(); + } + break; + case ASYNC: + { + State = 282; + async_funcdef(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Async_funcdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASYNC() { return GetToken(Python3Parser.ASYNC, 0); } + [System.Diagnostics.DebuggerNonUserCode] public FuncdefContext funcdef() { + return GetRuleContext(0); + } + public Async_funcdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_async_funcdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAsync_funcdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Async_funcdefContext async_funcdef() { + Async_funcdefContext _localctx = new Async_funcdefContext(Context, State); + EnterRule(_localctx, 12, RULE_async_funcdef); + try { + EnterOuterAlt(_localctx, 1); + { + State = 285; + Match(ASYNC); + State = 286; + funcdef(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FuncdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEF() { return GetToken(Python3Parser.DEF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ParametersContext parameters() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARROW() { return GetToken(Python3Parser.ARROW, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public FuncdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_funcdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitFuncdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FuncdefContext funcdef() { + FuncdefContext _localctx = new FuncdefContext(Context, State); + EnterRule(_localctx, 14, RULE_funcdef); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 288; + Match(DEF); + State = 289; + name(); + State = 290; + parameters(); + State = 293; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ARROW) { + { + State = 291; + Match(ARROW); + State = 292; + test(); + } + } + + State = 295; + Match(COLON); + State = 296; + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ParametersContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TypedargslistContext typedargslist() { + return GetRuleContext(0); + } + public ParametersContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_parameters; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitParameters(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ParametersContext parameters() { + ParametersContext _localctx = new ParametersContext(Context, State); + EnterRule(_localctx, 16, RULE_parameters); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 298; + Match(OPEN_PAREN); + State = 300; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4683779897422774272L) != 0)) { + { + State = 299; + typedargslist(); + } + } + + State = 302; + Match(CLOSE_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypedargslistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TfpdefContext[] tfpdef() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TfpdefContext tfpdef(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER() { return GetToken(Python3Parser.POWER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ASSIGN() { return GetTokens(Python3Parser.ASSIGN); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN(int i) { + return GetToken(Python3Parser.ASSIGN, i); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public TypedargslistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typedargslist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypedargslist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypedargslistContext typedargslist() { + TypedargslistContext _localctx = new TypedargslistContext(Context, State); + EnterRule(_localctx, 18, RULE_typedargslist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 385; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case MATCH: + case UNDERSCORE: + case NAME: + { + State = 304; + tfpdef(); + State = 307; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 305; + Match(ASSIGN); + State = 306; + test(); + } + } + + State = 317; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,12,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 309; + Match(COMMA); + State = 310; + tfpdef(); + State = 313; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 311; + Match(ASSIGN); + State = 312; + test(); + } + } + + } + } + } + State = 319; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,12,Context); + } + State = 353; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 320; + Match(COMMA); + State = 351; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STAR: + { + State = 321; + Match(STAR); + State = 323; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 36284957458432L) != 0)) { + { + State = 322; + tfpdef(); + } + } + + State = 333; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,15,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 325; + Match(COMMA); + State = 326; + tfpdef(); + State = 329; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 327; + Match(ASSIGN); + State = 328; + test(); + } + } + + } + } + } + State = 335; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,15,Context); + } + State = 344; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 336; + Match(COMMA); + State = 342; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==POWER) { + { + State = 337; + Match(POWER); + State = 338; + tfpdef(); + State = 340; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 339; + Match(COMMA); + } + } + + } + } + + } + } + + } + break; + case POWER: + { + State = 346; + Match(POWER); + State = 347; + tfpdef(); + State = 349; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 348; + Match(COMMA); + } + } + + } + break; + case CLOSE_PAREN: + break; + default: + break; + } + } + } + + } + break; + case STAR: + { + State = 355; + Match(STAR); + State = 357; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 36284957458432L) != 0)) { + { + State = 356; + tfpdef(); + } + } + + State = 367; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,24,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 359; + Match(COMMA); + State = 360; + tfpdef(); + State = 363; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 361; + Match(ASSIGN); + State = 362; + test(); + } + } + + } + } + } + State = 369; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,24,Context); + } + State = 378; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 370; + Match(COMMA); + State = 376; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==POWER) { + { + State = 371; + Match(POWER); + State = 372; + tfpdef(); + State = 374; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 373; + Match(COMMA); + } + } + + } + } + + } + } + + } + break; + case POWER: + { + State = 380; + Match(POWER); + State = 381; + tfpdef(); + State = 383; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 382; + Match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TfpdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public TfpdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_tfpdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTfpdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TfpdefContext tfpdef() { + TfpdefContext _localctx = new TfpdefContext(Context, State); + EnterRule(_localctx, 20, RULE_tfpdef); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 387; + name(); + State = 390; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COLON) { + { + State = 388; + Match(COLON); + State = 389; + test(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VarargslistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public VfpdefContext[] vfpdef() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public VfpdefContext vfpdef(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER() { return GetToken(Python3Parser.POWER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ASSIGN() { return GetTokens(Python3Parser.ASSIGN); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN(int i) { + return GetToken(Python3Parser.ASSIGN, i); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public VarargslistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_varargslist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVarargslist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VarargslistContext varargslist() { + VarargslistContext _localctx = new VarargslistContext(Context, State); + EnterRule(_localctx, 22, RULE_varargslist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 473; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case MATCH: + case UNDERSCORE: + case NAME: + { + State = 392; + vfpdef(); + State = 395; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 393; + Match(ASSIGN); + State = 394; + test(); + } + } + + State = 405; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 397; + Match(COMMA); + State = 398; + vfpdef(); + State = 401; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 399; + Match(ASSIGN); + State = 400; + test(); + } + } + + } + } + } + State = 407; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + } + State = 441; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 408; + Match(COMMA); + State = 439; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STAR: + { + State = 409; + Match(STAR); + State = 411; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 36284957458432L) != 0)) { + { + State = 410; + vfpdef(); + } + } + + State = 421; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 413; + Match(COMMA); + State = 414; + vfpdef(); + State = 417; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 415; + Match(ASSIGN); + State = 416; + test(); + } + } + + } + } + } + State = 423; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + } + State = 432; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 424; + Match(COMMA); + State = 430; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==POWER) { + { + State = 425; + Match(POWER); + State = 426; + vfpdef(); + State = 428; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 427; + Match(COMMA); + } + } + + } + } + + } + } + + } + break; + case POWER: + { + State = 434; + Match(POWER); + State = 435; + vfpdef(); + State = 437; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 436; + Match(COMMA); + } + } + + } + break; + case COLON: + break; + default: + break; + } + } + } + + } + break; + case STAR: + { + State = 443; + Match(STAR); + State = 445; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 36284957458432L) != 0)) { + { + State = 444; + vfpdef(); + } + } + + State = 455; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,45,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 447; + Match(COMMA); + State = 448; + vfpdef(); + State = 451; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 449; + Match(ASSIGN); + State = 450; + test(); + } + } + + } + } + } + State = 457; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,45,Context); + } + State = 466; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 458; + Match(COMMA); + State = 464; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==POWER) { + { + State = 459; + Match(POWER); + State = 460; + vfpdef(); + State = 462; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 461; + Match(COMMA); + } + } + + } + } + + } + } + + } + break; + case POWER: + { + State = 468; + Match(POWER); + State = 469; + vfpdef(); + State = 471; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 470; + Match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VfpdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public VfpdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_vfpdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVfpdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VfpdefContext vfpdef() { + VfpdefContext _localctx = new VfpdefContext(Context, State); + EnterRule(_localctx, 24, RULE_vfpdef); + try { + EnterOuterAlt(_localctx, 1); + { + State = 475; + name(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class StmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Simple_stmtsContext simple_stmts() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Compound_stmtContext compound_stmt() { + return GetRuleContext(0); + } + public StmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public StmtContext stmt() { + StmtContext _localctx = new StmtContext(Context, State); + EnterRule(_localctx, 26, RULE_stmt); + try { + State = 479; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,51,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 477; + simple_stmts(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 478; + compound_stmt(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Simple_stmtsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Simple_stmtContext[] simple_stmt() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Simple_stmtContext simple_stmt(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(Python3Parser.NEWLINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] SEMI_COLON() { return GetTokens(Python3Parser.SEMI_COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SEMI_COLON(int i) { + return GetToken(Python3Parser.SEMI_COLON, i); + } + public Simple_stmtsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_simple_stmts; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSimple_stmts(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Simple_stmtsContext simple_stmts() { + Simple_stmtsContext _localctx = new Simple_stmtsContext(Context, State); + EnterRule(_localctx, 28, RULE_simple_stmts); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 481; + simple_stmt(); + State = 486; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,52,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 482; + Match(SEMI_COLON); + State = 483; + simple_stmt(); + } + } + } + State = 488; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,52,Context); + } + State = 490; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==SEMI_COLON) { + { + State = 489; + Match(SEMI_COLON); + } + } + + State = 492; + Match(NEWLINE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Simple_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Expr_stmtContext expr_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Del_stmtContext del_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Pass_stmtContext pass_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Flow_stmtContext flow_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Import_stmtContext import_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Global_stmtContext global_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Nonlocal_stmtContext nonlocal_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Assert_stmtContext assert_stmt() { + return GetRuleContext(0); + } + public Simple_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_simple_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSimple_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Simple_stmtContext simple_stmt() { + Simple_stmtContext _localctx = new Simple_stmtContext(Context, State); + EnterRule(_localctx, 30, RULE_simple_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 502; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case STAR: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 494; + expr_stmt(); + } + break; + case DEL: + { + State = 495; + del_stmt(); + } + break; + case PASS: + { + State = 496; + pass_stmt(); + } + break; + case BREAK: + case CONTINUE: + case RAISE: + case RETURN: + case YIELD: + { + State = 497; + flow_stmt(); + } + break; + case FROM: + case IMPORT: + { + State = 498; + import_stmt(); + } + break; + case GLOBAL: + { + State = 499; + global_stmt(); + } + break; + case NONLOCAL: + { + State = 500; + nonlocal_stmt(); + } + break; + case ASSERT: + { + State = 501; + assert_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Expr_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Testlist_star_exprContext[] testlist_star_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Testlist_star_exprContext testlist_star_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public AnnassignContext annassign() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AugassignContext augassign() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Yield_exprContext[] yield_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Yield_exprContext yield_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public TestlistContext testlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ASSIGN() { return GetTokens(Python3Parser.ASSIGN); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN(int i) { + return GetToken(Python3Parser.ASSIGN, i); + } + public Expr_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_expr_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitExpr_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Expr_stmtContext expr_stmt() { + Expr_stmtContext _localctx = new Expr_stmtContext(Context, State); + EnterRule(_localctx, 32, RULE_expr_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 504; + testlist_star_expr(); + State = 521; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case COLON: + { + State = 505; + annassign(); + } + break; + case ADD_ASSIGN: + case SUB_ASSIGN: + case MULT_ASSIGN: + case AT_ASSIGN: + case DIV_ASSIGN: + case MOD_ASSIGN: + case AND_ASSIGN: + case OR_ASSIGN: + case XOR_ASSIGN: + case LEFT_SHIFT_ASSIGN: + case RIGHT_SHIFT_ASSIGN: + case POWER_ASSIGN: + case IDIV_ASSIGN: + { + State = 506; + augassign(); + State = 509; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case YIELD: + { + State = 507; + yield_expr(); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 508; + testlist(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case NEWLINE: + case SEMI_COLON: + case ASSIGN: + { + State = 518; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==ASSIGN) { + { + { + State = 511; + Match(ASSIGN); + State = 514; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case YIELD: + { + State = 512; + yield_expr(); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case STAR: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 513; + testlist_star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + State = 520; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AnnassignContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(Python3Parser.ASSIGN, 0); } + public AnnassignContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_annassign; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAnnassign(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AnnassignContext annassign() { + AnnassignContext _localctx = new AnnassignContext(Context, State); + EnterRule(_localctx, 34, RULE_annassign); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 523; + Match(COLON); + State = 524; + test(); + State = 527; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASSIGN) { + { + State = 525; + Match(ASSIGN); + State = 526; + test(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Testlist_star_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext[] star_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext star_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Testlist_star_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_testlist_star_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTestlist_star_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Testlist_star_exprContext testlist_star_expr() { + Testlist_star_exprContext _localctx = new Testlist_star_exprContext(Context, State); + EnterRule(_localctx, 36, RULE_testlist_star_expr); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 531; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 529; + test(); + } + break; + case STAR: + { + State = 530; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + State = 540; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 533; + Match(COMMA); + State = 536; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 534; + test(); + } + break; + case STAR: + { + State = 535; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + State = 542; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + } + State = 544; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 543; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AugassignContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ADD_ASSIGN() { return GetToken(Python3Parser.ADD_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SUB_ASSIGN() { return GetToken(Python3Parser.SUB_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MULT_ASSIGN() { return GetToken(Python3Parser.MULT_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AT_ASSIGN() { return GetToken(Python3Parser.AT_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DIV_ASSIGN() { return GetToken(Python3Parser.DIV_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MOD_ASSIGN() { return GetToken(Python3Parser.MOD_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AND_ASSIGN() { return GetToken(Python3Parser.AND_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OR_ASSIGN() { return GetToken(Python3Parser.OR_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode XOR_ASSIGN() { return GetToken(Python3Parser.XOR_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LEFT_SHIFT_ASSIGN() { return GetToken(Python3Parser.LEFT_SHIFT_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RIGHT_SHIFT_ASSIGN() { return GetToken(Python3Parser.RIGHT_SHIFT_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER_ASSIGN() { return GetToken(Python3Parser.POWER_ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDIV_ASSIGN() { return GetToken(Python3Parser.IDIV_ASSIGN, 0); } + public AugassignContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_augassign; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAugassign(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AugassignContext augassign() { + AugassignContext _localctx = new AugassignContext(Context, State); + EnterRule(_localctx, 38, RULE_augassign); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 546; + _la = TokenStream.LA(1); + if ( !(((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & 8191L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Del_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEL() { return GetToken(Python3Parser.DEL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprlistContext exprlist() { + return GetRuleContext(0); + } + public Del_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_del_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDel_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Del_stmtContext del_stmt() { + Del_stmtContext _localctx = new Del_stmtContext(Context, State); + EnterRule(_localctx, 40, RULE_del_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 548; + Match(DEL); + State = 549; + exprlist(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Pass_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PASS() { return GetToken(Python3Parser.PASS, 0); } + public Pass_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_pass_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitPass_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Pass_stmtContext pass_stmt() { + Pass_stmtContext _localctx = new Pass_stmtContext(Context, State); + EnterRule(_localctx, 42, RULE_pass_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 551; + Match(PASS); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Flow_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Break_stmtContext break_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Continue_stmtContext continue_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Return_stmtContext return_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Raise_stmtContext raise_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Yield_stmtContext yield_stmt() { + return GetRuleContext(0); + } + public Flow_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_flow_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitFlow_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Flow_stmtContext flow_stmt() { + Flow_stmtContext _localctx = new Flow_stmtContext(Context, State); + EnterRule(_localctx, 44, RULE_flow_stmt); + try { + State = 558; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case BREAK: + EnterOuterAlt(_localctx, 1); + { + State = 553; + break_stmt(); + } + break; + case CONTINUE: + EnterOuterAlt(_localctx, 2); + { + State = 554; + continue_stmt(); + } + break; + case RETURN: + EnterOuterAlt(_localctx, 3); + { + State = 555; + return_stmt(); + } + break; + case RAISE: + EnterOuterAlt(_localctx, 4); + { + State = 556; + raise_stmt(); + } + break; + case YIELD: + EnterOuterAlt(_localctx, 5); + { + State = 557; + yield_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Break_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BREAK() { return GetToken(Python3Parser.BREAK, 0); } + public Break_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_break_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitBreak_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Break_stmtContext break_stmt() { + Break_stmtContext _localctx = new Break_stmtContext(Context, State); + EnterRule(_localctx, 46, RULE_break_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 560; + Match(BREAK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Continue_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CONTINUE() { return GetToken(Python3Parser.CONTINUE, 0); } + public Continue_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_continue_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitContinue_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Continue_stmtContext continue_stmt() { + Continue_stmtContext _localctx = new Continue_stmtContext(Context, State); + EnterRule(_localctx, 48, RULE_continue_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 562; + Match(CONTINUE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Return_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RETURN() { return GetToken(Python3Parser.RETURN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestlistContext testlist() { + return GetRuleContext(0); + } + public Return_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_return_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitReturn_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Return_stmtContext return_stmt() { + Return_stmtContext _localctx = new Return_stmtContext(Context, State); + EnterRule(_localctx, 50, RULE_return_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 564; + Match(RETURN); + State = 566; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 565; + testlist(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Yield_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Yield_exprContext yield_expr() { + return GetRuleContext(0); + } + public Yield_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_yield_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitYield_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Yield_stmtContext yield_stmt() { + Yield_stmtContext _localctx = new Yield_stmtContext(Context, State); + EnterRule(_localctx, 52, RULE_yield_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 568; + yield_expr(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Raise_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RAISE() { return GetToken(Python3Parser.RAISE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FROM() { return GetToken(Python3Parser.FROM, 0); } + public Raise_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_raise_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitRaise_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Raise_stmtContext raise_stmt() { + Raise_stmtContext _localctx = new Raise_stmtContext(Context, State); + EnterRule(_localctx, 54, RULE_raise_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 570; + Match(RAISE); + State = 576; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 571; + test(); + State = 574; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==FROM) { + { + State = 572; + Match(FROM); + State = 573; + test(); + } + } + + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Import_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Import_nameContext import_name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Import_fromContext import_from() { + return GetRuleContext(0); + } + public Import_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_import_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImport_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Import_stmtContext import_stmt() { + Import_stmtContext _localctx = new Import_stmtContext(Context, State); + EnterRule(_localctx, 56, RULE_import_stmt); + try { + State = 580; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case IMPORT: + EnterOuterAlt(_localctx, 1); + { + State = 578; + import_name(); + } + break; + case FROM: + EnterOuterAlt(_localctx, 2); + { + State = 579; + import_from(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Import_nameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IMPORT() { return GetToken(Python3Parser.IMPORT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Dotted_as_namesContext dotted_as_names() { + return GetRuleContext(0); + } + public Import_nameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_import_name; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImport_name(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Import_nameContext import_name() { + Import_nameContext _localctx = new Import_nameContext(Context, State); + EnterRule(_localctx, 58, RULE_import_name); + try { + EnterOuterAlt(_localctx, 1); + { + State = 582; + Match(IMPORT); + State = 583; + dotted_as_names(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Import_fromContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FROM() { return GetToken(Python3Parser.FROM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IMPORT() { return GetToken(Python3Parser.IMPORT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Dotted_nameContext dotted_name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Import_as_namesContext import_as_names() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DOT() { return GetTokens(Python3Parser.DOT); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOT(int i) { + return GetToken(Python3Parser.DOT, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ELLIPSIS() { return GetTokens(Python3Parser.ELLIPSIS); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELLIPSIS(int i) { + return GetToken(Python3Parser.ELLIPSIS, i); + } + public Import_fromContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_import_from; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImport_from(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Import_fromContext import_from() { + Import_fromContext _localctx = new Import_fromContext(Context, State); + EnterRule(_localctx, 60, RULE_import_from); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + { + State = 585; + Match(FROM); + State = 598; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,71,Context) ) { + case 1: + { + State = 589; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==DOT || _la==ELLIPSIS) { + { + { + State = 586; + _la = TokenStream.LA(1); + if ( !(_la==DOT || _la==ELLIPSIS) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + State = 591; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 592; + dotted_name(); + } + break; + case 2: + { + State = 594; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 593; + _la = TokenStream.LA(1); + if ( !(_la==DOT || _la==ELLIPSIS) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + State = 596; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( _la==DOT || _la==ELLIPSIS ); + } + break; + } + State = 600; + Match(IMPORT); + State = 607; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STAR: + { + State = 601; + Match(STAR); + } + break; + case OPEN_PAREN: + { + State = 602; + Match(OPEN_PAREN); + State = 603; + import_as_names(); + State = 604; + Match(CLOSE_PAREN); + } + break; + case MATCH: + case UNDERSCORE: + case NAME: + { + State = 606; + import_as_names(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Import_as_nameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext[] name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AS() { return GetToken(Python3Parser.AS, 0); } + public Import_as_nameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_import_as_name; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImport_as_name(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Import_as_nameContext import_as_name() { + Import_as_nameContext _localctx = new Import_as_nameContext(Context, State); + EnterRule(_localctx, 62, RULE_import_as_name); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 609; + name(); + State = 612; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==AS) { + { + State = 610; + Match(AS); + State = 611; + name(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Dotted_as_nameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Dotted_nameContext dotted_name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AS() { return GetToken(Python3Parser.AS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public Dotted_as_nameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dotted_as_name; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDotted_as_name(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Dotted_as_nameContext dotted_as_name() { + Dotted_as_nameContext _localctx = new Dotted_as_nameContext(Context, State); + EnterRule(_localctx, 64, RULE_dotted_as_name); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 614; + dotted_name(); + State = 617; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==AS) { + { + State = 615; + Match(AS); + State = 616; + name(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Import_as_namesContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Import_as_nameContext[] import_as_name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Import_as_nameContext import_as_name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Import_as_namesContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_import_as_names; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImport_as_names(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Import_as_namesContext import_as_names() { + Import_as_namesContext _localctx = new Import_as_namesContext(Context, State); + EnterRule(_localctx, 66, RULE_import_as_names); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 619; + import_as_name(); + State = 624; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 620; + Match(COMMA); + State = 621; + import_as_name(); + } + } + } + State = 626; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + } + State = 628; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 627; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Dotted_as_namesContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Dotted_as_nameContext[] dotted_as_name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Dotted_as_nameContext dotted_as_name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Dotted_as_namesContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dotted_as_names; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDotted_as_names(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Dotted_as_namesContext dotted_as_names() { + Dotted_as_namesContext _localctx = new Dotted_as_namesContext(Context, State); + EnterRule(_localctx, 68, RULE_dotted_as_names); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 630; + dotted_as_name(); + State = 635; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==COMMA) { + { + { + State = 631; + Match(COMMA); + State = 632; + dotted_as_name(); + } + } + State = 637; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Dotted_nameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext[] name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DOT() { return GetTokens(Python3Parser.DOT); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOT(int i) { + return GetToken(Python3Parser.DOT, i); + } + public Dotted_nameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dotted_name; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDotted_name(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Dotted_nameContext dotted_name() { + Dotted_nameContext _localctx = new Dotted_nameContext(Context, State); + EnterRule(_localctx, 70, RULE_dotted_name); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 638; + name(); + State = 643; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==DOT) { + { + { + State = 639; + Match(DOT); + State = 640; + name(); + } + } + State = 645; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Global_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode GLOBAL() { return GetToken(Python3Parser.GLOBAL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext[] name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Global_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_global_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitGlobal_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Global_stmtContext global_stmt() { + Global_stmtContext _localctx = new Global_stmtContext(Context, State); + EnterRule(_localctx, 72, RULE_global_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 646; + Match(GLOBAL); + State = 647; + name(); + State = 652; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==COMMA) { + { + { + State = 648; + Match(COMMA); + State = 649; + name(); + } + } + State = 654; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Nonlocal_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NONLOCAL() { return GetToken(Python3Parser.NONLOCAL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext[] name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Nonlocal_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nonlocal_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitNonlocal_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Nonlocal_stmtContext nonlocal_stmt() { + Nonlocal_stmtContext _localctx = new Nonlocal_stmtContext(Context, State); + EnterRule(_localctx, 74, RULE_nonlocal_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 655; + Match(NONLOCAL); + State = 656; + name(); + State = 661; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==COMMA) { + { + { + State = 657; + Match(COMMA); + State = 658; + name(); + } + } + State = 663; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Assert_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSERT() { return GetToken(Python3Parser.ASSERT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA() { return GetToken(Python3Parser.COMMA, 0); } + public Assert_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assert_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssert_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Assert_stmtContext assert_stmt() { + Assert_stmtContext _localctx = new Assert_stmtContext(Context, State); + EnterRule(_localctx, 76, RULE_assert_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 664; + Match(ASSERT); + State = 665; + test(); + State = 668; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 666; + Match(COMMA); + State = 667; + test(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Compound_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public If_stmtContext if_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public While_stmtContext while_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public For_stmtContext for_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Try_stmtContext try_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public With_stmtContext with_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FuncdefContext funcdef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassdefContext classdef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DecoratedContext decorated() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Async_stmtContext async_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Match_stmtContext match_stmt() { + return GetRuleContext(0); + } + public Compound_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_compound_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCompound_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Compound_stmtContext compound_stmt() { + Compound_stmtContext _localctx = new Compound_stmtContext(Context, State); + EnterRule(_localctx, 78, RULE_compound_stmt); + try { + State = 680; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case IF: + EnterOuterAlt(_localctx, 1); + { + State = 670; + if_stmt(); + } + break; + case WHILE: + EnterOuterAlt(_localctx, 2); + { + State = 671; + while_stmt(); + } + break; + case FOR: + EnterOuterAlt(_localctx, 3); + { + State = 672; + for_stmt(); + } + break; + case TRY: + EnterOuterAlt(_localctx, 4); + { + State = 673; + try_stmt(); + } + break; + case WITH: + EnterOuterAlt(_localctx, 5); + { + State = 674; + with_stmt(); + } + break; + case DEF: + EnterOuterAlt(_localctx, 6); + { + State = 675; + funcdef(); + } + break; + case CLASS: + EnterOuterAlt(_localctx, 7); + { + State = 676; + classdef(); + } + break; + case AT: + EnterOuterAlt(_localctx, 8); + { + State = 677; + decorated(); + } + break; + case ASYNC: + EnterOuterAlt(_localctx, 9); + { + State = 678; + async_stmt(); + } + break; + case MATCH: + EnterOuterAlt(_localctx, 10); + { + State = 679; + match_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Async_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASYNC() { return GetToken(Python3Parser.ASYNC, 0); } + [System.Diagnostics.DebuggerNonUserCode] public FuncdefContext funcdef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public With_stmtContext with_stmt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public For_stmtContext for_stmt() { + return GetRuleContext(0); + } + public Async_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_async_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAsync_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Async_stmtContext async_stmt() { + Async_stmtContext _localctx = new Async_stmtContext(Context, State); + EnterRule(_localctx, 80, RULE_async_stmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 682; + Match(ASYNC); + State = 686; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case DEF: + { + State = 683; + funcdef(); + } + break; + case WITH: + { + State = 684; + with_stmt(); + } + break; + case FOR: + { + State = 685; + for_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class If_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IF() { return GetToken(Python3Parser.IF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(Python3Parser.COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) { + return GetToken(Python3Parser.COLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext[] block() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ELIF() { return GetTokens(Python3Parser.ELIF); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELIF(int i) { + return GetToken(Python3Parser.ELIF, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(Python3Parser.ELSE, 0); } + public If_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_if_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitIf_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public If_stmtContext if_stmt() { + If_stmtContext _localctx = new If_stmtContext(Context, State); + EnterRule(_localctx, 82, RULE_if_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 688; + Match(IF); + State = 689; + test(); + State = 690; + Match(COLON); + State = 691; + block(); + State = 699; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==ELIF) { + { + { + State = 692; + Match(ELIF); + State = 693; + test(); + State = 694; + Match(COLON); + State = 695; + block(); + } + } + State = 701; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 705; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ELSE) { + { + State = 702; + Match(ELSE); + State = 703; + Match(COLON); + State = 704; + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class While_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode WHILE() { return GetToken(Python3Parser.WHILE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(Python3Parser.COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) { + return GetToken(Python3Parser.COLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext[] block() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(Python3Parser.ELSE, 0); } + public While_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_while_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitWhile_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public While_stmtContext while_stmt() { + While_stmtContext _localctx = new While_stmtContext(Context, State); + EnterRule(_localctx, 84, RULE_while_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 707; + Match(WHILE); + State = 708; + test(); + State = 709; + Match(COLON); + State = 710; + block(); + State = 714; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ELSE) { + { + State = 711; + Match(ELSE); + State = 712; + Match(COLON); + State = 713; + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class For_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FOR() { return GetToken(Python3Parser.FOR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprlistContext exprlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(Python3Parser.IN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestlistContext testlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(Python3Parser.COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) { + return GetToken(Python3Parser.COLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext[] block() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(Python3Parser.ELSE, 0); } + public For_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_for_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitFor_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public For_stmtContext for_stmt() { + For_stmtContext _localctx = new For_stmtContext(Context, State); + EnterRule(_localctx, 86, RULE_for_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 716; + Match(FOR); + State = 717; + exprlist(); + State = 718; + Match(IN); + State = 719; + testlist(); + State = 720; + Match(COLON); + State = 721; + block(); + State = 725; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ELSE) { + { + State = 722; + Match(ELSE); + State = 723; + Match(COLON); + State = 724; + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Try_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TRY() { return GetToken(Python3Parser.TRY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(Python3Parser.COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) { + return GetToken(Python3Parser.COLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext[] block() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FINALLY() { return GetToken(Python3Parser.FINALLY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Except_clauseContext[] except_clause() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Except_clauseContext except_clause(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(Python3Parser.ELSE, 0); } + public Try_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_try_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTry_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Try_stmtContext try_stmt() { + Try_stmtContext _localctx = new Try_stmtContext(Context, State); + EnterRule(_localctx, 88, RULE_try_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + { + State = 727; + Match(TRY); + State = 728; + Match(COLON); + State = 729; + block(); + State = 751; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case EXCEPT: + { + State = 734; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 730; + except_clause(); + State = 731; + Match(COLON); + State = 732; + block(); + } + } + State = 736; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( _la==EXCEPT ); + State = 741; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ELSE) { + { + State = 738; + Match(ELSE); + State = 739; + Match(COLON); + State = 740; + block(); + } + } + + State = 746; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==FINALLY) { + { + State = 743; + Match(FINALLY); + State = 744; + Match(COLON); + State = 745; + block(); + } + } + + } + break; + case FINALLY: + { + State = 748; + Match(FINALLY); + State = 749; + Match(COLON); + State = 750; + block(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class With_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode WITH() { return GetToken(Python3Parser.WITH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public With_itemContext[] with_item() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public With_itemContext with_item(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public With_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_with_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitWith_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public With_stmtContext with_stmt() { + With_stmtContext _localctx = new With_stmtContext(Context, State); + EnterRule(_localctx, 90, RULE_with_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 753; + Match(WITH); + State = 754; + with_item(); + State = 759; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==COMMA) { + { + { + State = 755; + Match(COMMA); + State = 756; + with_item(); + } + } + State = 761; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 762; + Match(COLON); + State = 763; + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class With_itemContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AS() { return GetToken(Python3Parser.AS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr() { + return GetRuleContext(0); + } + public With_itemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_with_item; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitWith_item(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public With_itemContext with_item() { + With_itemContext _localctx = new With_itemContext(Context, State); + EnterRule(_localctx, 92, RULE_with_item); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 765; + test(); + State = 768; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==AS) { + { + State = 766; + Match(AS); + State = 767; + expr(0); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Except_clauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EXCEPT() { return GetToken(Python3Parser.EXCEPT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AS() { return GetToken(Python3Parser.AS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public Except_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_except_clause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitExcept_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Except_clauseContext except_clause() { + Except_clauseContext _localctx = new Except_clauseContext(Context, State); + EnterRule(_localctx, 94, RULE_except_clause); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 770; + Match(EXCEPT); + State = 776; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 771; + test(); + State = 774; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==AS) { + { + State = 772; + Match(AS); + State = 773; + name(); + } + } + + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class BlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Simple_stmtsContext simple_stmts() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(Python3Parser.NEWLINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INDENT() { return GetToken(Python3Parser.INDENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEDENT() { return GetToken(Python3Parser.DEDENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public StmtContext[] stmt() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public StmtContext stmt(int i) { + return GetRuleContext(i); + } + public BlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_block; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public BlockContext block() { + BlockContext _localctx = new BlockContext(Context, State); + EnterRule(_localctx, 96, RULE_block); + int _la; + try { + State = 788; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case ASSERT: + case AWAIT: + case BREAK: + case CONTINUE: + case DEL: + case FALSE: + case FROM: + case GLOBAL: + case IMPORT: + case LAMBDA: + case MATCH: + case NONE: + case NONLOCAL: + case NOT: + case PASS: + case RAISE: + case RETURN: + case TRUE: + case UNDERSCORE: + case YIELD: + case NAME: + case ELLIPSIS: + case STAR: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 1); + { + State = 778; + simple_stmts(); + } + break; + case NEWLINE: + EnterOuterAlt(_localctx, 2); + { + State = 779; + Match(NEWLINE); + State = 780; + Match(INDENT); + State = 782; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 781; + stmt(); + } + } + State = 784; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 252254338105339672L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 4206977L) != 0) ); + State = 786; + Match(DEDENT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Match_stmtContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MATCH() { return GetToken(Python3Parser.MATCH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Subject_exprContext subject_expr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(Python3Parser.NEWLINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INDENT() { return GetToken(Python3Parser.INDENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEDENT() { return GetToken(Python3Parser.DEDENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Case_blockContext[] case_block() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Case_blockContext case_block(int i) { + return GetRuleContext(i); + } + public Match_stmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_match_stmt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitMatch_stmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Match_stmtContext match_stmt() { + Match_stmtContext _localctx = new Match_stmtContext(Context, State); + EnterRule(_localctx, 98, RULE_match_stmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 790; + Match(MATCH); + State = 791; + subject_expr(); + State = 792; + Match(COLON); + State = 793; + Match(NEWLINE); + State = 794; + Match(INDENT); + State = 796; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 795; + case_block(); + } + } + State = 798; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( _la==CASE ); + State = 800; + Match(DEDENT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Subject_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Star_named_expressionContext star_named_expression() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA() { return GetToken(Python3Parser.COMMA, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Star_named_expressionsContext star_named_expressions() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public Subject_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_subject_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubject_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Subject_exprContext subject_expr() { + Subject_exprContext _localctx = new Subject_exprContext(Context, State); + EnterRule(_localctx, 100, RULE_subject_expr); + int _la; + try { + State = 808; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,100,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 802; + star_named_expression(); + State = 803; + Match(COMMA); + State = 805; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 804; + star_named_expressions(); + } + } + + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 807; + test(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Star_named_expressionsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_named_expressionContext[] star_named_expression() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_named_expressionContext star_named_expression(int i) { + return GetRuleContext(i); + } + public Star_named_expressionsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_star_named_expressions; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStar_named_expressions(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Star_named_expressionsContext star_named_expressions() { + Star_named_expressionsContext _localctx = new Star_named_expressionsContext(Context, State); + EnterRule(_localctx, 102, RULE_star_named_expressions); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 810; + Match(COMMA); + State = 812; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 811; + star_named_expression(); + } + } + State = 814; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 252238150243451928L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0) ); + State = 817; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 816; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Star_named_expressionContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public Star_named_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_star_named_expression; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStar_named_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Star_named_expressionContext star_named_expression() { + Star_named_expressionContext _localctx = new Star_named_expressionContext(Context, State); + EnterRule(_localctx, 104, RULE_star_named_expression); + try { + State = 822; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STAR: + EnterOuterAlt(_localctx, 1); + { + State = 819; + Match(STAR); + State = 820; + expr(0); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 2); + { + State = 821; + test(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Case_blockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CASE() { return GetToken(Python3Parser.CASE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public PatternsContext patterns() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public GuardContext guard() { + return GetRuleContext(0); + } + public Case_blockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_case_block; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCase_block(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Case_blockContext case_block() { + Case_blockContext _localctx = new Case_blockContext(Context, State); + EnterRule(_localctx, 106, RULE_case_block); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 824; + Match(CASE); + State = 825; + patterns(); + State = 827; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==IF) { + { + State = 826; + guard(); + } + } + + State = 829; + Match(COLON); + State = 830; + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class GuardContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IF() { return GetToken(Python3Parser.IF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public GuardContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_guard; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitGuard(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public GuardContext guard() { + GuardContext _localctx = new GuardContext(Context, State); + EnterRule(_localctx, 108, RULE_guard); + try { + EnterOuterAlt(_localctx, 1); + { + State = 832; + Match(IF); + State = 833; + test(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PatternsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Open_sequence_patternContext open_sequence_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern() { + return GetRuleContext(0); + } + public PatternsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_patterns; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitPatterns(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PatternsContext patterns() { + PatternsContext _localctx = new PatternsContext(Context, State); + EnterRule(_localctx, 110, RULE_patterns); + try { + State = 837; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,105,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 835; + open_sequence_pattern(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 836; + pattern(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PatternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public As_patternContext as_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Or_patternContext or_pattern() { + return GetRuleContext(0); + } + public PatternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitPattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PatternContext pattern() { + PatternContext _localctx = new PatternContext(Context, State); + EnterRule(_localctx, 112, RULE_pattern); + try { + State = 841; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,106,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 839; + as_pattern(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 840; + or_pattern(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class As_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Or_patternContext or_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AS() { return GetToken(Python3Parser.AS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Pattern_capture_targetContext pattern_capture_target() { + return GetRuleContext(0); + } + public As_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_as_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAs_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public As_patternContext as_pattern() { + As_patternContext _localctx = new As_patternContext(Context, State); + EnterRule(_localctx, 114, RULE_as_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 843; + or_pattern(); + State = 844; + Match(AS); + State = 845; + pattern_capture_target(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Or_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Closed_patternContext[] closed_pattern() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Closed_patternContext closed_pattern(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] OR_OP() { return GetTokens(Python3Parser.OR_OP); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OR_OP(int i) { + return GetToken(Python3Parser.OR_OP, i); + } + public Or_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_or_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitOr_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Or_patternContext or_pattern() { + Or_patternContext _localctx = new Or_patternContext(Context, State); + EnterRule(_localctx, 116, RULE_or_pattern); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 847; + closed_pattern(); + State = 852; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==OR_OP) { + { + { + State = 848; + Match(OR_OP); + State = 849; + closed_pattern(); + } + } + State = 854; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Closed_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Literal_patternContext literal_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Capture_patternContext capture_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Wildcard_patternContext wildcard_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Value_patternContext value_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Group_patternContext group_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Sequence_patternContext sequence_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Mapping_patternContext mapping_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Class_patternContext class_pattern() { + return GetRuleContext(0); + } + public Closed_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_closed_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitClosed_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Closed_patternContext closed_pattern() { + Closed_patternContext _localctx = new Closed_patternContext(Context, State); + EnterRule(_localctx, 118, RULE_closed_pattern); + try { + State = 863; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,108,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 855; + literal_pattern(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 856; + capture_pattern(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 857; + wildcard_pattern(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 858; + value_pattern(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 859; + group_pattern(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 860; + sequence_pattern(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 861; + mapping_pattern(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 862; + class_pattern(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Literal_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Signed_numberContext signed_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Complex_numberContext complex_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public StringsContext strings() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NONE() { return GetToken(Python3Parser.NONE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TRUE() { return GetToken(Python3Parser.TRUE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FALSE() { return GetToken(Python3Parser.FALSE, 0); } + public Literal_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_literal_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitLiteral_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Literal_patternContext literal_pattern() { + Literal_patternContext _localctx = new Literal_patternContext(Context, State); + EnterRule(_localctx, 120, RULE_literal_pattern); + try { + State = 873; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,109,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 865; + signed_number(); + State = 866; + if (!( this.CannotBePlusMinus() )) throw new FailedPredicateException(this, " this.CannotBePlusMinus() "); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 868; + complex_number(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 869; + strings(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 870; + Match(NONE); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 871; + Match(TRUE); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 872; + Match(FALSE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Literal_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Signed_numberContext signed_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Complex_numberContext complex_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public StringsContext strings() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NONE() { return GetToken(Python3Parser.NONE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TRUE() { return GetToken(Python3Parser.TRUE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FALSE() { return GetToken(Python3Parser.FALSE, 0); } + public Literal_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_literal_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitLiteral_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Literal_exprContext literal_expr() { + Literal_exprContext _localctx = new Literal_exprContext(Context, State); + EnterRule(_localctx, 122, RULE_literal_expr); + try { + State = 883; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,110,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 875; + signed_number(); + State = 876; + if (!( this.CannotBePlusMinus() )) throw new FailedPredicateException(this, " this.CannotBePlusMinus() "); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 878; + complex_number(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 879; + strings(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 880; + Match(NONE); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 881; + Match(TRUE); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 882; + Match(FALSE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Complex_numberContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Signed_real_numberContext signed_real_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ADD() { return GetToken(Python3Parser.ADD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Imaginary_numberContext imaginary_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MINUS() { return GetToken(Python3Parser.MINUS, 0); } + public Complex_numberContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_complex_number; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComplex_number(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Complex_numberContext complex_number() { + Complex_numberContext _localctx = new Complex_numberContext(Context, State); + EnterRule(_localctx, 124, RULE_complex_number); + try { + State = 893; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,111,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 885; + signed_real_number(); + State = 886; + Match(ADD); + State = 887; + imaginary_number(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 889; + signed_real_number(); + State = 890; + Match(MINUS); + State = 891; + imaginary_number(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Signed_numberContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NUMBER() { return GetToken(Python3Parser.NUMBER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MINUS() { return GetToken(Python3Parser.MINUS, 0); } + public Signed_numberContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_signed_number; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSigned_number(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Signed_numberContext signed_number() { + Signed_numberContext _localctx = new Signed_numberContext(Context, State); + EnterRule(_localctx, 126, RULE_signed_number); + try { + State = 898; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case NUMBER: + EnterOuterAlt(_localctx, 1); + { + State = 895; + Match(NUMBER); + } + break; + case MINUS: + EnterOuterAlt(_localctx, 2); + { + State = 896; + Match(MINUS); + State = 897; + Match(NUMBER); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Signed_real_numberContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Real_numberContext real_number() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MINUS() { return GetToken(Python3Parser.MINUS, 0); } + public Signed_real_numberContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_signed_real_number; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSigned_real_number(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Signed_real_numberContext signed_real_number() { + Signed_real_numberContext _localctx = new Signed_real_numberContext(Context, State); + EnterRule(_localctx, 128, RULE_signed_real_number); + try { + State = 903; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case NUMBER: + EnterOuterAlt(_localctx, 1); + { + State = 900; + real_number(); + } + break; + case MINUS: + EnterOuterAlt(_localctx, 2); + { + State = 901; + Match(MINUS); + State = 902; + real_number(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Real_numberContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NUMBER() { return GetToken(Python3Parser.NUMBER, 0); } + public Real_numberContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_real_number; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitReal_number(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Real_numberContext real_number() { + Real_numberContext _localctx = new Real_numberContext(Context, State); + EnterRule(_localctx, 130, RULE_real_number); + try { + EnterOuterAlt(_localctx, 1); + { + State = 905; + Match(NUMBER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Imaginary_numberContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NUMBER() { return GetToken(Python3Parser.NUMBER, 0); } + public Imaginary_numberContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_imaginary_number; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitImaginary_number(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Imaginary_numberContext imaginary_number() { + Imaginary_numberContext _localctx = new Imaginary_numberContext(Context, State); + EnterRule(_localctx, 132, RULE_imaginary_number); + try { + EnterOuterAlt(_localctx, 1); + { + State = 907; + Match(NUMBER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Capture_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Pattern_capture_targetContext pattern_capture_target() { + return GetRuleContext(0); + } + public Capture_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_capture_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCapture_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Capture_patternContext capture_pattern() { + Capture_patternContext _localctx = new Capture_patternContext(Context, State); + EnterRule(_localctx, 134, RULE_capture_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 909; + pattern_capture_target(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Pattern_capture_targetContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public Pattern_capture_targetContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_pattern_capture_target; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitPattern_capture_target(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Pattern_capture_targetContext pattern_capture_target() { + Pattern_capture_targetContext _localctx = new Pattern_capture_targetContext(Context, State); + EnterRule(_localctx, 136, RULE_pattern_capture_target); + try { + EnterOuterAlt(_localctx, 1); + { + State = 911; + name(); + State = 912; + if (!( this.CannotBeDotLpEq() )) throw new FailedPredicateException(this, " this.CannotBeDotLpEq() "); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Wildcard_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNDERSCORE() { return GetToken(Python3Parser.UNDERSCORE, 0); } + public Wildcard_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_wildcard_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitWildcard_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Wildcard_patternContext wildcard_pattern() { + Wildcard_patternContext _localctx = new Wildcard_patternContext(Context, State); + EnterRule(_localctx, 138, RULE_wildcard_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 914; + Match(UNDERSCORE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Value_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AttrContext attr() { + return GetRuleContext(0); + } + public Value_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_value_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitValue_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Value_patternContext value_pattern() { + Value_patternContext _localctx = new Value_patternContext(Context, State); + EnterRule(_localctx, 140, RULE_value_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 916; + attr(); + State = 917; + if (!( this.CannotBeDotLpEq() )) throw new FailedPredicateException(this, " this.CannotBeDotLpEq() "); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext[] name() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DOT() { return GetTokens(Python3Parser.DOT); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOT(int i) { + return GetToken(Python3Parser.DOT, i); + } + public AttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_attr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AttrContext attr() { + AttrContext _localctx = new AttrContext(Context, State); + EnterRule(_localctx, 142, RULE_attr); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 919; + name(); + State = 922; + ErrorHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 920; + Match(DOT); + State = 921; + name(); + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 924; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,114,Context); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Name_or_attrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AttrContext attr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public Name_or_attrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_name_or_attr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitName_or_attr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Name_or_attrContext name_or_attr() { + Name_or_attrContext _localctx = new Name_or_attrContext(Context, State); + EnterRule(_localctx, 144, RULE_name_or_attr); + try { + State = 928; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,115,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 926; + attr(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 927; + name(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Group_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + public Group_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_group_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitGroup_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Group_patternContext group_pattern() { + Group_patternContext _localctx = new Group_patternContext(Context, State); + EnterRule(_localctx, 146, RULE_group_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 930; + Match(OPEN_PAREN); + State = 931; + pattern(); + State = 932; + Match(CLOSE_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Sequence_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_BRACK() { return GetToken(Python3Parser.OPEN_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_BRACK() { return GetToken(Python3Parser.CLOSE_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Maybe_sequence_patternContext maybe_sequence_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Open_sequence_patternContext open_sequence_pattern() { + return GetRuleContext(0); + } + public Sequence_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sequence_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSequence_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Sequence_patternContext sequence_pattern() { + Sequence_patternContext _localctx = new Sequence_patternContext(Context, State); + EnterRule(_localctx, 148, RULE_sequence_pattern); + int _la; + try { + State = 944; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case OPEN_BRACK: + EnterOuterAlt(_localctx, 1); + { + State = 934; + Match(OPEN_BRACK); + State = 936; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 216209344097681432L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 8449L) != 0)) { + { + State = 935; + maybe_sequence_pattern(); + } + } + + State = 938; + Match(CLOSE_BRACK); + } + break; + case OPEN_PAREN: + EnterOuterAlt(_localctx, 2); + { + State = 939; + Match(OPEN_PAREN); + State = 941; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 216209344097681432L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 8449L) != 0)) { + { + State = 940; + open_sequence_pattern(); + } + } + + State = 943; + Match(CLOSE_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Open_sequence_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Maybe_star_patternContext maybe_star_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA() { return GetToken(Python3Parser.COMMA, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Maybe_sequence_patternContext maybe_sequence_pattern() { + return GetRuleContext(0); + } + public Open_sequence_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_open_sequence_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitOpen_sequence_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Open_sequence_patternContext open_sequence_pattern() { + Open_sequence_patternContext _localctx = new Open_sequence_patternContext(Context, State); + EnterRule(_localctx, 150, RULE_open_sequence_pattern); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 946; + maybe_star_pattern(); + State = 947; + Match(COMMA); + State = 949; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 216209344097681432L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 8449L) != 0)) { + { + State = 948; + maybe_sequence_pattern(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Maybe_sequence_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Maybe_star_patternContext[] maybe_star_pattern() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Maybe_star_patternContext maybe_star_pattern(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Maybe_sequence_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_maybe_sequence_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitMaybe_sequence_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Maybe_sequence_patternContext maybe_sequence_pattern() { + Maybe_sequence_patternContext _localctx = new Maybe_sequence_patternContext(Context, State); + EnterRule(_localctx, 152, RULE_maybe_sequence_pattern); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 951; + maybe_star_pattern(); + State = 956; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,120,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 952; + Match(COMMA); + State = 953; + maybe_star_pattern(); + } + } + } + State = 958; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,120,Context); + } + State = 960; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 959; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Maybe_star_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Star_patternContext star_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern() { + return GetRuleContext(0); + } + public Maybe_star_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_maybe_star_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitMaybe_star_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Maybe_star_patternContext maybe_star_pattern() { + Maybe_star_patternContext _localctx = new Maybe_star_patternContext(Context, State); + EnterRule(_localctx, 154, RULE_maybe_star_pattern); + try { + State = 964; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STAR: + EnterOuterAlt(_localctx, 1); + { + State = 962; + star_pattern(); + } + break; + case STRING: + case NUMBER: + case FALSE: + case MATCH: + case NONE: + case TRUE: + case UNDERSCORE: + case NAME: + case OPEN_PAREN: + case OPEN_BRACK: + case MINUS: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 2); + { + State = 963; + pattern(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Star_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Pattern_capture_targetContext pattern_capture_target() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Wildcard_patternContext wildcard_pattern() { + return GetRuleContext(0); + } + public Star_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_star_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStar_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Star_patternContext star_pattern() { + Star_patternContext _localctx = new Star_patternContext(Context, State); + EnterRule(_localctx, 156, RULE_star_pattern); + try { + State = 970; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,123,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 966; + Match(STAR); + State = 967; + pattern_capture_target(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 968; + Match(STAR); + State = 969; + wildcard_pattern(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Mapping_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_BRACE() { return GetToken(Python3Parser.OPEN_BRACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_BRACE() { return GetToken(Python3Parser.CLOSE_BRACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Double_star_patternContext double_star_pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + [System.Diagnostics.DebuggerNonUserCode] public Items_patternContext items_pattern() { + return GetRuleContext(0); + } + public Mapping_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_mapping_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitMapping_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Mapping_patternContext mapping_pattern() { + Mapping_patternContext _localctx = new Mapping_patternContext(Context, State); + EnterRule(_localctx, 158, RULE_mapping_pattern); + int _la; + try { + State = 997; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,127,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 972; + Match(OPEN_BRACE); + State = 973; + Match(CLOSE_BRACE); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 974; + Match(OPEN_BRACE); + State = 975; + double_star_pattern(); + State = 977; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 976; + Match(COMMA); + } + } + + State = 979; + Match(CLOSE_BRACE); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 981; + Match(OPEN_BRACE); + State = 982; + items_pattern(); + State = 983; + Match(COMMA); + State = 984; + double_star_pattern(); + State = 986; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 985; + Match(COMMA); + } + } + + State = 988; + Match(CLOSE_BRACE); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 990; + Match(OPEN_BRACE); + State = 991; + items_pattern(); + State = 993; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 992; + Match(COMMA); + } + } + + State = 995; + Match(CLOSE_BRACE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Items_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Key_value_patternContext[] key_value_pattern() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Key_value_patternContext key_value_pattern(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Items_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_items_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitItems_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Items_patternContext items_pattern() { + Items_patternContext _localctx = new Items_patternContext(Context, State); + EnterRule(_localctx, 160, RULE_items_pattern); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 999; + key_value_pattern(); + State = 1004; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,128,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1000; + Match(COMMA); + State = 1001; + key_value_pattern(); + } + } + } + State = 1006; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,128,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Key_value_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Literal_exprContext literal_expr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AttrContext attr() { + return GetRuleContext(0); + } + public Key_value_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_key_value_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitKey_value_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Key_value_patternContext key_value_pattern() { + Key_value_patternContext _localctx = new Key_value_patternContext(Context, State); + EnterRule(_localctx, 162, RULE_key_value_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1009; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case FALSE: + case NONE: + case TRUE: + case MINUS: + { + State = 1007; + literal_expr(); + } + break; + case MATCH: + case UNDERSCORE: + case NAME: + { + State = 1008; + attr(); + } + break; + default: + throw new NoViableAltException(this); + } + State = 1011; + Match(COLON); + State = 1012; + pattern(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Double_star_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER() { return GetToken(Python3Parser.POWER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Pattern_capture_targetContext pattern_capture_target() { + return GetRuleContext(0); + } + public Double_star_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_double_star_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDouble_star_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Double_star_patternContext double_star_pattern() { + Double_star_patternContext _localctx = new Double_star_patternContext(Context, State); + EnterRule(_localctx, 164, RULE_double_star_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1014; + Match(POWER); + State = 1015; + pattern_capture_target(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Class_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Name_or_attrContext name_or_attr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Positional_patternsContext positional_patterns() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + [System.Diagnostics.DebuggerNonUserCode] public Keyword_patternsContext keyword_patterns() { + return GetRuleContext(0); + } + public Class_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_class_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitClass_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Class_patternContext class_pattern() { + Class_patternContext _localctx = new Class_patternContext(Context, State); + EnterRule(_localctx, 166, RULE_class_pattern); + int _la; + try { + State = 1047; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,133,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1017; + name_or_attr(); + State = 1018; + Match(OPEN_PAREN); + State = 1019; + Match(CLOSE_PAREN); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1021; + name_or_attr(); + State = 1022; + Match(OPEN_PAREN); + State = 1023; + positional_patterns(); + State = 1025; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1024; + Match(COMMA); + } + } + + State = 1027; + Match(CLOSE_PAREN); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1029; + name_or_attr(); + State = 1030; + Match(OPEN_PAREN); + State = 1031; + keyword_patterns(); + State = 1033; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1032; + Match(COMMA); + } + } + + State = 1035; + Match(CLOSE_PAREN); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1037; + name_or_attr(); + State = 1038; + Match(OPEN_PAREN); + State = 1039; + positional_patterns(); + State = 1040; + Match(COMMA); + State = 1041; + keyword_patterns(); + State = 1043; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1042; + Match(COMMA); + } + } + + State = 1045; + Match(CLOSE_PAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Positional_patternsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public PatternContext[] pattern() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Positional_patternsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_positional_patterns; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitPositional_patterns(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Positional_patternsContext positional_patterns() { + Positional_patternsContext _localctx = new Positional_patternsContext(Context, State); + EnterRule(_localctx, 168, RULE_positional_patterns); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1049; + pattern(); + State = 1054; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,134,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1050; + Match(COMMA); + State = 1051; + pattern(); + } + } + } + State = 1056; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,134,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Keyword_patternsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Keyword_patternContext[] keyword_pattern() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Keyword_patternContext keyword_pattern(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Keyword_patternsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_keyword_patterns; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitKeyword_patterns(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Keyword_patternsContext keyword_patterns() { + Keyword_patternsContext _localctx = new Keyword_patternsContext(Context, State); + EnterRule(_localctx, 170, RULE_keyword_patterns); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1057; + keyword_pattern(); + State = 1062; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,135,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1058; + Match(COMMA); + State = 1059; + keyword_pattern(); + } + } + } + State = 1064; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,135,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Keyword_patternContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(Python3Parser.ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public PatternContext pattern() { + return GetRuleContext(0); + } + public Keyword_patternContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_keyword_pattern; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitKeyword_pattern(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Keyword_patternContext keyword_pattern() { + Keyword_patternContext _localctx = new Keyword_patternContext(Context, State); + EnterRule(_localctx, 172, RULE_keyword_pattern); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1065; + name(); + State = 1066; + Match(ASSIGN); + State = 1067; + pattern(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TestContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Or_testContext[] or_test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Or_testContext or_test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IF() { return GetToken(Python3Parser.IF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(Python3Parser.ELSE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LambdefContext lambdef() { + return GetRuleContext(0); + } + public TestContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_test; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTest(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TestContext test() { + TestContext _localctx = new TestContext(Context, State); + EnterRule(_localctx, 174, RULE_test); + int _la; + try { + State = 1078; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 1); + { + State = 1069; + or_test(); + State = 1075; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==IF) { + { + State = 1070; + Match(IF); + State = 1071; + or_test(); + State = 1072; + Match(ELSE); + State = 1073; + test(); + } + } + + } + break; + case LAMBDA: + EnterOuterAlt(_localctx, 2); + { + State = 1077; + lambdef(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Test_nocondContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Or_testContext or_test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Lambdef_nocondContext lambdef_nocond() { + return GetRuleContext(0); + } + public Test_nocondContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_test_nocond; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTest_nocond(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Test_nocondContext test_nocond() { + Test_nocondContext _localctx = new Test_nocondContext(Context, State); + EnterRule(_localctx, 176, RULE_test_nocond); + try { + State = 1082; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 1); + { + State = 1080; + or_test(); + } + break; + case LAMBDA: + EnterOuterAlt(_localctx, 2); + { + State = 1081; + lambdef_nocond(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class LambdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LAMBDA() { return GetToken(Python3Parser.LAMBDA, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public VarargslistContext varargslist() { + return GetRuleContext(0); + } + public LambdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_lambdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitLambdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public LambdefContext lambdef() { + LambdefContext _localctx = new LambdefContext(Context, State); + EnterRule(_localctx, 178, RULE_lambdef); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1084; + Match(LAMBDA); + State = 1086; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4683779897422774272L) != 0)) { + { + State = 1085; + varargslist(); + } + } + + State = 1088; + Match(COLON); + State = 1089; + test(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Lambdef_nocondContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LAMBDA() { return GetToken(Python3Parser.LAMBDA, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Test_nocondContext test_nocond() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public VarargslistContext varargslist() { + return GetRuleContext(0); + } + public Lambdef_nocondContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_lambdef_nocond; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitLambdef_nocond(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Lambdef_nocondContext lambdef_nocond() { + Lambdef_nocondContext _localctx = new Lambdef_nocondContext(Context, State); + EnterRule(_localctx, 180, RULE_lambdef_nocond); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1091; + Match(LAMBDA); + State = 1093; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4683779897422774272L) != 0)) { + { + State = 1092; + varargslist(); + } + } + + State = 1095; + Match(COLON); + State = 1096; + test_nocond(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Or_testContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public And_testContext[] and_test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public And_testContext and_test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] OR() { return GetTokens(Python3Parser.OR); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OR(int i) { + return GetToken(Python3Parser.OR, i); + } + public Or_testContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_or_test; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitOr_test(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Or_testContext or_test() { + Or_testContext _localctx = new Or_testContext(Context, State); + EnterRule(_localctx, 182, RULE_or_test); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1098; + and_test(); + State = 1103; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==OR) { + { + { + State = 1099; + Match(OR); + State = 1100; + and_test(); + } + } + State = 1105; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class And_testContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Not_testContext[] not_test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Not_testContext not_test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] AND() { return GetTokens(Python3Parser.AND); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AND(int i) { + return GetToken(Python3Parser.AND, i); + } + public And_testContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_and_test; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAnd_test(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public And_testContext and_test() { + And_testContext _localctx = new And_testContext(Context, State); + EnterRule(_localctx, 184, RULE_and_test); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1106; + not_test(); + State = 1111; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==AND) { + { + { + State = 1107; + Match(AND); + State = 1108; + not_test(); + } + } + State = 1113; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Not_testContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NOT() { return GetToken(Python3Parser.NOT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Not_testContext not_test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ComparisonContext comparison() { + return GetRuleContext(0); + } + public Not_testContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_not_test; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitNot_test(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Not_testContext not_test() { + Not_testContext _localctx = new Not_testContext(Context, State); + EnterRule(_localctx, 186, RULE_not_test); + try { + State = 1117; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case NOT: + EnterOuterAlt(_localctx, 1); + { + State = 1114; + Match(NOT); + State = 1115; + not_test(); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 2); + { + State = 1116; + comparison(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ComparisonContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ExprContext[] expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_opContext[] comp_op() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_opContext comp_op(int i) { + return GetRuleContext(i); + } + public ComparisonContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comparison; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComparison(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ComparisonContext comparison() { + ComparisonContext _localctx = new ComparisonContext(Context, State); + EnterRule(_localctx, 188, RULE_comparison); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1119; + expr(0); + State = 1125; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,144,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1120; + comp_op(); + State = 1121; + expr(0); + } + } + } + State = 1127; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,144,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Comp_opContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LESS_THAN() { return GetToken(Python3Parser.LESS_THAN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode GREATER_THAN() { return GetToken(Python3Parser.GREATER_THAN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EQUALS() { return GetToken(Python3Parser.EQUALS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode GT_EQ() { return GetToken(Python3Parser.GT_EQ, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LT_EQ() { return GetToken(Python3Parser.LT_EQ, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NOT_EQ_1() { return GetToken(Python3Parser.NOT_EQ_1, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NOT_EQ_2() { return GetToken(Python3Parser.NOT_EQ_2, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(Python3Parser.IN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NOT() { return GetToken(Python3Parser.NOT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IS() { return GetToken(Python3Parser.IS, 0); } + public Comp_opContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comp_op; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComp_op(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Comp_opContext comp_op() { + Comp_opContext _localctx = new Comp_opContext(Context, State); + EnterRule(_localctx, 190, RULE_comp_op); + try { + State = 1141; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,145,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1128; + Match(LESS_THAN); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1129; + Match(GREATER_THAN); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1130; + Match(EQUALS); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1131; + Match(GT_EQ); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1132; + Match(LT_EQ); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1133; + Match(NOT_EQ_1); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1134; + Match(NOT_EQ_2); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1135; + Match(IN); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1136; + Match(NOT); + State = 1137; + Match(IN); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 1138; + Match(IS); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 1139; + Match(IS); + State = 1140; + Match(NOT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Star_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr() { + return GetRuleContext(0); + } + public Star_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_star_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStar_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Star_exprContext star_expr() { + Star_exprContext _localctx = new Star_exprContext(Context, State); + EnterRule(_localctx, 192, RULE_star_expr); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1143; + Match(STAR); + State = 1144; + expr(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Atom_exprContext atom_expr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext[] expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ADD() { return GetTokens(Python3Parser.ADD); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ADD(int i) { + return GetToken(Python3Parser.ADD, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] MINUS() { return GetTokens(Python3Parser.MINUS); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MINUS(int i) { + return GetToken(Python3Parser.MINUS, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] NOT_OP() { return GetTokens(Python3Parser.NOT_OP); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NOT_OP(int i) { + return GetToken(Python3Parser.NOT_OP, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER() { return GetToken(Python3Parser.POWER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AT() { return GetToken(Python3Parser.AT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DIV() { return GetToken(Python3Parser.DIV, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MOD() { return GetToken(Python3Parser.MOD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDIV() { return GetToken(Python3Parser.IDIV, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LEFT_SHIFT() { return GetToken(Python3Parser.LEFT_SHIFT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RIGHT_SHIFT() { return GetToken(Python3Parser.RIGHT_SHIFT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AND_OP() { return GetToken(Python3Parser.AND_OP, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode XOR() { return GetToken(Python3Parser.XOR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OR_OP() { return GetToken(Python3Parser.OR_OP, 0); } + public ExprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitExpr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExprContext expr() { + return expr(0); + } + + private ExprContext expr(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + ExprContext _localctx = new ExprContext(Context, _parentState); + ExprContext _prevctx = _localctx; + int _startState = 194; + EnterRecursionRule(_localctx, 194, RULE_expr, _p); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1154; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case OPEN_BRACE: + { + State = 1147; + atom_expr(); + } + break; + case ADD: + case MINUS: + case NOT_OP: + { + State = 1149; + ErrorHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 1148; + _la = TokenStream.LA(1); + if ( !(((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & 35L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 1151; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,146,Context); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); + State = 1153; + expr(7); + } + break; + default: + throw new NoViableAltException(this); + } + Context.Stop = TokenStream.LT(-1); + State = 1179; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,149,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 1177; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,148,Context) ) { + case 1: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1156; + if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); + State = 1157; + Match(POWER); + State = 1158; + expr(9); + } + break; + case 2: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1159; + if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); + State = 1160; + _la = TokenStream.LA(1); + if ( !(((((_la - 56)) & ~0x3f) == 0 && ((1L << (_la - 56)) & 1074659329L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + State = 1161; + expr(7); + } + break; + case 3: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1162; + if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); + State = 1163; + _la = TokenStream.LA(1); + if ( !(_la==ADD || _la==MINUS) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + State = 1164; + expr(6); + } + break; + case 4: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1165; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 1166; + _la = TokenStream.LA(1); + if ( !(_la==LEFT_SHIFT || _la==RIGHT_SHIFT) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + State = 1167; + expr(5); + } + break; + case 5: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1168; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 1169; + Match(AND_OP); + State = 1170; + expr(4); + } + break; + case 6: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1171; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 1172; + Match(XOR); + State = 1173; + expr(3); + } + break; + case 7: + { + _localctx = new ExprContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_expr); + State = 1174; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 1175; + Match(OR_OP); + State = 1176; + expr(2); + } + break; + } + } + } + State = 1181; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,149,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Atom_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AtomContext atom() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AWAIT() { return GetToken(Python3Parser.AWAIT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TrailerContext[] trailer() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TrailerContext trailer(int i) { + return GetRuleContext(i); + } + public Atom_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_atom_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAtom_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Atom_exprContext atom_expr() { + Atom_exprContext _localctx = new Atom_exprContext(Context, State); + EnterRule(_localctx, 196, RULE_atom_expr); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1183; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==AWAIT) { + { + State = 1182; + Match(AWAIT); + } + } + + State = 1185; + atom(); + State = 1189; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,151,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1186; + trailer(); + } + } + } + State = 1191; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,151,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AtomContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Yield_exprContext yield_expr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Testlist_compContext testlist_comp() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_BRACK() { return GetToken(Python3Parser.OPEN_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_BRACK() { return GetToken(Python3Parser.CLOSE_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_BRACE() { return GetToken(Python3Parser.OPEN_BRACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_BRACE() { return GetToken(Python3Parser.CLOSE_BRACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DictorsetmakerContext dictorsetmaker() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NUMBER() { return GetToken(Python3Parser.NUMBER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] STRING() { return GetTokens(Python3Parser.STRING); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING(int i) { + return GetToken(Python3Parser.STRING, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELLIPSIS() { return GetToken(Python3Parser.ELLIPSIS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NONE() { return GetToken(Python3Parser.NONE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TRUE() { return GetToken(Python3Parser.TRUE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FALSE() { return GetToken(Python3Parser.FALSE, 0); } + public AtomContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_atom; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAtom(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AtomContext atom() { + AtomContext _localctx = new AtomContext(Context, State); + EnterRule(_localctx, 198, RULE_atom); + int _la; + try { + int _alt; + State = 1219; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case OPEN_PAREN: + EnterOuterAlt(_localctx, 1); + { + State = 1192; + Match(OPEN_PAREN); + State = 1195; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case YIELD: + { + State = 1193; + yield_expr(); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case STAR: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1194; + testlist_comp(); + } + break; + case CLOSE_PAREN: + break; + default: + break; + } + State = 1197; + Match(CLOSE_PAREN); + } + break; + case OPEN_BRACK: + EnterOuterAlt(_localctx, 2); + { + State = 1198; + Match(OPEN_BRACK); + State = 1200; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 252238150243451928L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1199; + testlist_comp(); + } + } + + State = 1202; + Match(CLOSE_BRACK); + } + break; + case OPEN_BRACE: + EnterOuterAlt(_localctx, 3); + { + State = 1203; + Match(OPEN_BRACE); + State = 1205; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4863924168670839832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1204; + dictorsetmaker(); + } + } + + State = 1207; + Match(CLOSE_BRACE); + } + break; + case MATCH: + case UNDERSCORE: + case NAME: + EnterOuterAlt(_localctx, 4); + { + State = 1208; + name(); + } + break; + case NUMBER: + EnterOuterAlt(_localctx, 5); + { + State = 1209; + Match(NUMBER); + } + break; + case STRING: + EnterOuterAlt(_localctx, 6); + { + State = 1211; + ErrorHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 1210; + Match(STRING); + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 1213; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,155,Context); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case ELLIPSIS: + EnterOuterAlt(_localctx, 7); + { + State = 1215; + Match(ELLIPSIS); + } + break; + case NONE: + EnterOuterAlt(_localctx, 8); + { + State = 1216; + Match(NONE); + } + break; + case TRUE: + EnterOuterAlt(_localctx, 9); + { + State = 1217; + Match(TRUE); + } + break; + case FALSE: + EnterOuterAlt(_localctx, 10); + { + State = 1218; + Match(FALSE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NAME() { return GetToken(Python3Parser.NAME, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNDERSCORE() { return GetToken(Python3Parser.UNDERSCORE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MATCH() { return GetToken(Python3Parser.MATCH, 0); } + public NameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_name; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NameContext name() { + NameContext _localctx = new NameContext(Context, State); + EnterRule(_localctx, 200, RULE_name); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1221; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 36284957458432L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Testlist_compContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext[] star_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext star_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_forContext comp_for() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public Testlist_compContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_testlist_comp; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTestlist_comp(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Testlist_compContext testlist_comp() { + Testlist_compContext _localctx = new Testlist_compContext(Context, State); + EnterRule(_localctx, 202, RULE_testlist_comp); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1225; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1223; + test(); + } + break; + case STAR: + { + State = 1224; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + State = 1241; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case ASYNC: + case FOR: + { + State = 1227; + comp_for(); + } + break; + case CLOSE_PAREN: + case COMMA: + case CLOSE_BRACK: + { + State = 1235; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,159,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1228; + Match(COMMA); + State = 1231; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1229; + test(); + } + break; + case STAR: + { + State = 1230; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + State = 1237; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,159,Context); + } + State = 1239; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1238; + Match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TrailerContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ArglistContext arglist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_BRACK() { return GetToken(Python3Parser.OPEN_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SubscriptlistContext subscriptlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_BRACK() { return GetToken(Python3Parser.CLOSE_BRACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOT() { return GetToken(Python3Parser.DOT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public TrailerContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_trailer; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTrailer(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TrailerContext trailer() { + TrailerContext _localctx = new TrailerContext(Context, State); + EnterRule(_localctx, 204, RULE_trailer); + int _la; + try { + State = 1254; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case OPEN_PAREN: + EnterOuterAlt(_localctx, 1); + { + State = 1243; + Match(OPEN_PAREN); + State = 1245; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4863924168670839832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1244; + arglist(); + } + } + + State = 1247; + Match(CLOSE_PAREN); + } + break; + case OPEN_BRACK: + EnterOuterAlt(_localctx, 2); + { + State = 1248; + Match(OPEN_BRACK); + State = 1249; + subscriptlist(); + State = 1250; + Match(CLOSE_BRACK); + } + break; + case DOT: + EnterOuterAlt(_localctx, 3); + { + State = 1252; + Match(DOT); + State = 1253; + name(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SubscriptlistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Subscript_Context[] subscript_() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Subscript_Context subscript_(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public SubscriptlistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_subscriptlist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubscriptlist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SubscriptlistContext subscriptlist() { + SubscriptlistContext _localctx = new SubscriptlistContext(Context, State); + EnterRule(_localctx, 206, RULE_subscriptlist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1256; + subscript_(); + State = 1261; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,164,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1257; + Match(COMMA); + State = 1258; + subscript_(); + } + } + } + State = 1263; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,164,Context); + } + State = 1265; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1264; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Subscript_Context : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SliceopContext sliceop() { + return GetRuleContext(0); + } + public Subscript_Context(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_subscript_; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubscript_(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Subscript_Context subscript_() { + Subscript_Context _localctx = new Subscript_Context(Context, State); + EnterRule(_localctx, 208, RULE_subscript_); + int _la; + try { + State = 1278; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,169,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1267; + test(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1269; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1268; + test(); + } + } + + State = 1271; + Match(COLON); + State = 1273; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1272; + test(); + } + } + + State = 1276; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COLON) { + { + State = 1275; + sliceop(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SliceopContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + public SliceopContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sliceop; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSliceop(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SliceopContext sliceop() { + SliceopContext _localctx = new SliceopContext(Context, State); + EnterRule(_localctx, 210, RULE_sliceop); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1280; + Match(COLON); + State = 1282; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556205523992L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1281; + test(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExprlistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ExprContext[] expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext[] star_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext star_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public ExprlistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exprlist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitExprlist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExprlistContext exprlist() { + ExprlistContext _localctx = new ExprlistContext(Context, State); + EnterRule(_localctx, 212, RULE_exprlist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1286; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1284; + expr(0); + } + break; + case STAR: + { + State = 1285; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + State = 1295; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,173,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1288; + Match(COMMA); + State = 1291; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case MATCH: + case NONE: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1289; + expr(0); + } + break; + case STAR: + { + State = 1290; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + State = 1297; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,173,Context); + } + State = 1299; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1298; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TestlistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public TestlistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_testlist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitTestlist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TestlistContext testlist() { + TestlistContext _localctx = new TestlistContext(Context, State); + EnterRule(_localctx, 214, RULE_testlist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1301; + test(); + State = 1306; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,175,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1302; + Match(COMMA); + State = 1303; + test(); + } + } + } + State = 1308; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,175,Context); + } + State = 1310; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1309; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DictorsetmakerContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(Python3Parser.COLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) { + return GetToken(Python3Parser.COLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] POWER() { return GetTokens(Python3Parser.POWER); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER(int i) { + return GetToken(Python3Parser.POWER, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext[] expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExprContext expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_forContext comp_for() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext[] star_expr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Star_exprContext star_expr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public DictorsetmakerContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dictorsetmaker; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitDictorsetmaker(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DictorsetmakerContext dictorsetmaker() { + DictorsetmakerContext _localctx = new DictorsetmakerContext(Context, State); + EnterRule(_localctx, 216, RULE_dictorsetmaker); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1360; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,187,Context) ) { + case 1: + { + { + State = 1318; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1312; + test(); + State = 1313; + Match(COLON); + State = 1314; + test(); + } + break; + case POWER: + { + State = 1316; + Match(POWER); + State = 1317; + expr(0); + } + break; + default: + throw new NoViableAltException(this); + } + State = 1338; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case ASYNC: + case FOR: + { + State = 1320; + comp_for(); + } + break; + case COMMA: + case CLOSE_BRACE: + { + State = 1332; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,179,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1321; + Match(COMMA); + State = 1328; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1322; + test(); + State = 1323; + Match(COLON); + State = 1324; + test(); + } + break; + case POWER: + { + State = 1326; + Match(POWER); + State = 1327; + expr(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + State = 1334; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,179,Context); + } + State = 1336; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1335; + Match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + break; + case 2: + { + { + State = 1342; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1340; + test(); + } + break; + case STAR: + { + State = 1341; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + State = 1358; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case ASYNC: + case FOR: + { + State = 1344; + comp_for(); + } + break; + case COMMA: + case CLOSE_BRACE: + { + State = 1352; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,184,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1345; + Match(COMMA); + State = 1348; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + State = 1346; + test(); + } + break; + case STAR: + { + State = 1347; + star_expr(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + State = 1354; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,184,Context); + } + State = 1356; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1355; + Match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassdefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLASS() { return GetToken(Python3Parser.CLASS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(Python3Parser.COLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OPEN_PAREN() { return GetToken(Python3Parser.OPEN_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLOSE_PAREN() { return GetToken(Python3Parser.CLOSE_PAREN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ArglistContext arglist() { + return GetRuleContext(0); + } + public ClassdefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classdef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassdef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassdefContext classdef() { + ClassdefContext _localctx = new ClassdefContext(Context, State); + EnterRule(_localctx, 218, RULE_classdef); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1362; + Match(CLASS); + State = 1363; + name(); + State = 1369; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==OPEN_PAREN) { + { + State = 1364; + Match(OPEN_PAREN); + State = 1366; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4863924168670839832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1365; + arglist(); + } + } + + State = 1368; + Match(CLOSE_PAREN); + } + } + + State = 1371; + Match(COLON); + State = 1372; + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ArglistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ArgumentContext[] argument() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ArgumentContext argument(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(Python3Parser.COMMA); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) { + return GetToken(Python3Parser.COMMA, i); + } + public ArglistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_arglist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitArglist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ArglistContext arglist() { + ArglistContext _localctx = new ArglistContext(Context, State); + EnterRule(_localctx, 220, RULE_arglist); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1374; + argument(); + State = 1379; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,190,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1375; + Match(COMMA); + State = 1376; + argument(); + } + } + } + State = 1381; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,190,Context); + } + State = 1383; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==COMMA) { + { + State = 1382; + Match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ArgumentContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TestContext[] test() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(Python3Parser.ASSIGN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode POWER() { return GetToken(Python3Parser.POWER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STAR() { return GetToken(Python3Parser.STAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Comp_forContext comp_for() { + return GetRuleContext(0); + } + public ArgumentContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_argument; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitArgument(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ArgumentContext argument() { + ArgumentContext _localctx = new ArgumentContext(Context, State); + EnterRule(_localctx, 222, RULE_argument); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1397; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,193,Context) ) { + case 1: + { + State = 1385; + test(); + State = 1387; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASYNC || _la==FOR) { + { + State = 1386; + comp_for(); + } + } + + } + break; + case 2: + { + State = 1389; + test(); + State = 1390; + Match(ASSIGN); + State = 1391; + test(); + } + break; + case 3: + { + State = 1393; + Match(POWER); + State = 1394; + test(); + } + break; + case 4: + { + State = 1395; + Match(STAR); + State = 1396; + test(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Comp_iterContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Comp_forContext comp_for() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_ifContext comp_if() { + return GetRuleContext(0); + } + public Comp_iterContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comp_iter; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComp_iter(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Comp_iterContext comp_iter() { + Comp_iterContext _localctx = new Comp_iterContext(Context, State); + EnterRule(_localctx, 224, RULE_comp_iter); + try { + State = 1401; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case ASYNC: + case FOR: + EnterOuterAlt(_localctx, 1); + { + State = 1399; + comp_for(); + } + break; + case IF: + EnterOuterAlt(_localctx, 2); + { + State = 1400; + comp_if(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Comp_forContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FOR() { return GetToken(Python3Parser.FOR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ExprlistContext exprlist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(Python3Parser.IN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Or_testContext or_test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASYNC() { return GetToken(Python3Parser.ASYNC, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Comp_iterContext comp_iter() { + return GetRuleContext(0); + } + public Comp_forContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comp_for; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComp_for(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Comp_forContext comp_for() { + Comp_forContext _localctx = new Comp_forContext(Context, State); + EnterRule(_localctx, 226, RULE_comp_for); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1404; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ASYNC) { + { + State = 1403; + Match(ASYNC); + } + } + + State = 1406; + Match(FOR); + State = 1407; + exprlist(); + State = 1408; + Match(IN); + State = 1409; + or_test(); + State = 1411; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37749248L) != 0)) { + { + State = 1410; + comp_iter(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Comp_ifContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IF() { return GetToken(Python3Parser.IF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Test_nocondContext test_nocond() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Comp_iterContext comp_iter() { + return GetRuleContext(0); + } + public Comp_ifContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comp_if; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComp_if(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Comp_ifContext comp_if() { + Comp_ifContext _localctx = new Comp_ifContext(Context, State); + EnterRule(_localctx, 228, RULE_comp_if); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1413; + Match(IF); + State = 1414; + test_nocond(); + State = 1416; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37749248L) != 0)) { + { + State = 1415; + comp_iter(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Encoding_declContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameContext name() { + return GetRuleContext(0); + } + public Encoding_declContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_encoding_decl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitEncoding_decl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Encoding_declContext encoding_decl() { + Encoding_declContext _localctx = new Encoding_declContext(Context, State); + EnterRule(_localctx, 230, RULE_encoding_decl); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1418; + name(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Yield_exprContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode YIELD() { return GetToken(Python3Parser.YIELD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Yield_argContext yield_arg() { + return GetRuleContext(0); + } + public Yield_exprContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_yield_expr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitYield_expr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Yield_exprContext yield_expr() { + Yield_exprContext _localctx = new Yield_exprContext(Context, State); + EnterRule(_localctx, 232, RULE_yield_expr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1420; + Match(YIELD); + State = 1422; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 180180556213912600L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 12673L) != 0)) { + { + State = 1421; + yield_arg(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Yield_argContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FROM() { return GetToken(Python3Parser.FROM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TestContext test() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TestlistContext testlist() { + return GetRuleContext(0); + } + public Yield_argContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_yield_arg; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitYield_arg(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Yield_argContext yield_arg() { + Yield_argContext _localctx = new Yield_argContext(Context, State); + EnterRule(_localctx, 234, RULE_yield_arg); + try { + State = 1427; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case FROM: + EnterOuterAlt(_localctx, 1); + { + State = 1424; + Match(FROM); + State = 1425; + test(); + } + break; + case STRING: + case NUMBER: + case AWAIT: + case FALSE: + case LAMBDA: + case MATCH: + case NONE: + case NOT: + case TRUE: + case UNDERSCORE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + EnterOuterAlt(_localctx, 2); + { + State = 1426; + testlist(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class StringsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] STRING() { return GetTokens(Python3Parser.STRING); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING(int i) { + return GetToken(Python3Parser.STRING, i); + } + public StringsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_strings; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + IPython3ParserVisitor typedVisitor = visitor as IPython3ParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitStrings(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public StringsContext strings() { + StringsContext _localctx = new StringsContext(Context, State); + EnterRule(_localctx, 236, RULE_strings); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1430; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 1429; + Match(STRING); + } + } + State = 1432; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( _la==STRING ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 60: return literal_pattern_sempred((Literal_patternContext)_localctx, predIndex); + case 61: return literal_expr_sempred((Literal_exprContext)_localctx, predIndex); + case 68: return pattern_capture_target_sempred((Pattern_capture_targetContext)_localctx, predIndex); + case 70: return value_pattern_sempred((Value_patternContext)_localctx, predIndex); + case 97: return expr_sempred((ExprContext)_localctx, predIndex); + } + return true; + } + private bool literal_pattern_sempred(Literal_patternContext _localctx, int predIndex) { + switch (predIndex) { + case 0: return this.CannotBePlusMinus() ; + } + return true; + } + private bool literal_expr_sempred(Literal_exprContext _localctx, int predIndex) { + switch (predIndex) { + case 1: return this.CannotBePlusMinus() ; + } + return true; + } + private bool pattern_capture_target_sempred(Pattern_capture_targetContext _localctx, int predIndex) { + switch (predIndex) { + case 2: return this.CannotBeDotLpEq() ; + } + return true; + } + private bool value_pattern_sempred(Value_patternContext _localctx, int predIndex) { + switch (predIndex) { + case 3: return this.CannotBeDotLpEq() ; + } + return true; + } + private bool expr_sempred(ExprContext _localctx, int predIndex) { + switch (predIndex) { + case 4: return Precpred(Context, 8); + case 5: return Precpred(Context, 6); + case 6: return Precpred(Context, 5); + case 7: return Precpred(Context, 4); + case 8: return Precpred(Context, 3); + case 9: return Precpred(Context, 2); + case 10: return Precpred(Context, 1); + } + return true; + } + + private static int[] _serializedATN = { + 4,1,102,1435,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, + 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, + 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28, + 2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35, + 2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42, + 2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49, + 2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56, + 2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63, + 2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70, + 2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77, + 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84, + 2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91, + 2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98, + 2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104, + 2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110, + 2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116, + 2,117,7,117,2,118,7,118,1,0,1,0,1,0,1,0,1,0,3,0,244,8,0,1,1,1,1,5,1,248, + 8,1,10,1,12,1,251,9,1,1,1,1,1,1,2,1,2,5,2,257,8,2,10,2,12,2,260,9,2,1, + 2,1,2,1,3,1,3,1,3,1,3,3,3,268,8,3,1,3,3,3,271,8,3,1,3,1,3,1,4,4,4,276, + 8,4,11,4,12,4,277,1,5,1,5,1,5,1,5,3,5,284,8,5,1,6,1,6,1,6,1,7,1,7,1,7, + 1,7,1,7,3,7,294,8,7,1,7,1,7,1,7,1,8,1,8,3,8,301,8,8,1,8,1,8,1,9,1,9,1, + 9,3,9,308,8,9,1,9,1,9,1,9,1,9,3,9,314,8,9,5,9,316,8,9,10,9,12,9,319,9, + 9,1,9,1,9,1,9,3,9,324,8,9,1,9,1,9,1,9,1,9,3,9,330,8,9,5,9,332,8,9,10,9, + 12,9,335,9,9,1,9,1,9,1,9,1,9,3,9,341,8,9,3,9,343,8,9,3,9,345,8,9,1,9,1, + 9,1,9,3,9,350,8,9,3,9,352,8,9,3,9,354,8,9,1,9,1,9,3,9,358,8,9,1,9,1,9, + 1,9,1,9,3,9,364,8,9,5,9,366,8,9,10,9,12,9,369,9,9,1,9,1,9,1,9,1,9,3,9, + 375,8,9,3,9,377,8,9,3,9,379,8,9,1,9,1,9,1,9,3,9,384,8,9,3,9,386,8,9,1, + 10,1,10,1,10,3,10,391,8,10,1,11,1,11,1,11,3,11,396,8,11,1,11,1,11,1,11, + 1,11,3,11,402,8,11,5,11,404,8,11,10,11,12,11,407,9,11,1,11,1,11,1,11,3, + 11,412,8,11,1,11,1,11,1,11,1,11,3,11,418,8,11,5,11,420,8,11,10,11,12,11, + 423,9,11,1,11,1,11,1,11,1,11,3,11,429,8,11,3,11,431,8,11,3,11,433,8,11, + 1,11,1,11,1,11,3,11,438,8,11,3,11,440,8,11,3,11,442,8,11,1,11,1,11,3,11, + 446,8,11,1,11,1,11,1,11,1,11,3,11,452,8,11,5,11,454,8,11,10,11,12,11,457, + 9,11,1,11,1,11,1,11,1,11,3,11,463,8,11,3,11,465,8,11,3,11,467,8,11,1,11, + 1,11,1,11,3,11,472,8,11,3,11,474,8,11,1,12,1,12,1,13,1,13,3,13,480,8,13, + 1,14,1,14,1,14,5,14,485,8,14,10,14,12,14,488,9,14,1,14,3,14,491,8,14,1, + 14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,503,8,15,1,16,1,16, + 1,16,1,16,1,16,3,16,510,8,16,1,16,1,16,1,16,3,16,515,8,16,5,16,517,8,16, + 10,16,12,16,520,9,16,3,16,522,8,16,1,17,1,17,1,17,1,17,3,17,528,8,17,1, + 18,1,18,3,18,532,8,18,1,18,1,18,1,18,3,18,537,8,18,5,18,539,8,18,10,18, + 12,18,542,9,18,1,18,3,18,545,8,18,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1, + 22,1,22,1,22,1,22,1,22,3,22,559,8,22,1,23,1,23,1,24,1,24,1,25,1,25,3,25, + 567,8,25,1,26,1,26,1,27,1,27,1,27,1,27,3,27,575,8,27,3,27,577,8,27,1,28, + 1,28,3,28,581,8,28,1,29,1,29,1,29,1,30,1,30,5,30,588,8,30,10,30,12,30, + 591,9,30,1,30,1,30,4,30,595,8,30,11,30,12,30,596,3,30,599,8,30,1,30,1, + 30,1,30,1,30,1,30,1,30,1,30,3,30,608,8,30,1,31,1,31,1,31,3,31,613,8,31, + 1,32,1,32,1,32,3,32,618,8,32,1,33,1,33,1,33,5,33,623,8,33,10,33,12,33, + 626,9,33,1,33,3,33,629,8,33,1,34,1,34,1,34,5,34,634,8,34,10,34,12,34,637, + 9,34,1,35,1,35,1,35,5,35,642,8,35,10,35,12,35,645,9,35,1,36,1,36,1,36, + 1,36,5,36,651,8,36,10,36,12,36,654,9,36,1,37,1,37,1,37,1,37,5,37,660,8, + 37,10,37,12,37,663,9,37,1,38,1,38,1,38,1,38,3,38,669,8,38,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,681,8,39,1,40,1,40,1,40,1,40, + 3,40,687,8,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,5,41,698,8, + 41,10,41,12,41,701,9,41,1,41,1,41,1,41,3,41,706,8,41,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,3,42,715,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, + 1,43,3,43,726,8,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,4,44,735,8,44,11, + 44,12,44,736,1,44,1,44,1,44,3,44,742,8,44,1,44,1,44,1,44,3,44,747,8,44, + 1,44,1,44,1,44,3,44,752,8,44,1,45,1,45,1,45,1,45,5,45,758,8,45,10,45,12, + 45,761,9,45,1,45,1,45,1,45,1,46,1,46,1,46,3,46,769,8,46,1,47,1,47,1,47, + 1,47,3,47,775,8,47,3,47,777,8,47,1,48,1,48,1,48,1,48,4,48,783,8,48,11, + 48,12,48,784,1,48,1,48,3,48,789,8,48,1,49,1,49,1,49,1,49,1,49,1,49,4,49, + 797,8,49,11,49,12,49,798,1,49,1,49,1,50,1,50,1,50,3,50,806,8,50,1,50,3, + 50,809,8,50,1,51,1,51,4,51,813,8,51,11,51,12,51,814,1,51,3,51,818,8,51, + 1,52,1,52,1,52,3,52,823,8,52,1,53,1,53,1,53,3,53,828,8,53,1,53,1,53,1, + 53,1,54,1,54,1,54,1,55,1,55,3,55,838,8,55,1,56,1,56,3,56,842,8,56,1,57, + 1,57,1,57,1,57,1,58,1,58,1,58,5,58,851,8,58,10,58,12,58,854,9,58,1,59, + 1,59,1,59,1,59,1,59,1,59,1,59,1,59,3,59,864,8,59,1,60,1,60,1,60,1,60,1, + 60,1,60,1,60,1,60,3,60,874,8,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 3,61,884,8,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,3,62,894,8,62,1, + 63,1,63,1,63,3,63,899,8,63,1,64,1,64,1,64,3,64,904,8,64,1,65,1,65,1,66, + 1,66,1,67,1,67,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,71,1,71,1,71, + 4,71,923,8,71,11,71,12,71,924,1,72,1,72,3,72,929,8,72,1,73,1,73,1,73,1, + 73,1,74,1,74,3,74,937,8,74,1,74,1,74,1,74,3,74,942,8,74,1,74,3,74,945, + 8,74,1,75,1,75,1,75,3,75,950,8,75,1,76,1,76,1,76,5,76,955,8,76,10,76,12, + 76,958,9,76,1,76,3,76,961,8,76,1,77,1,77,3,77,965,8,77,1,78,1,78,1,78, + 1,78,3,78,971,8,78,1,79,1,79,1,79,1,79,1,79,3,79,978,8,79,1,79,1,79,1, + 79,1,79,1,79,1,79,1,79,3,79,987,8,79,1,79,1,79,1,79,1,79,1,79,3,79,994, + 8,79,1,79,1,79,3,79,998,8,79,1,80,1,80,1,80,5,80,1003,8,80,10,80,12,80, + 1006,9,80,1,81,1,81,3,81,1010,8,81,1,81,1,81,1,81,1,82,1,82,1,82,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,3,83,1026,8,83,1,83,1,83,1,83,1,83, + 1,83,1,83,3,83,1034,8,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,3,83, + 1044,8,83,1,83,1,83,3,83,1048,8,83,1,84,1,84,1,84,5,84,1053,8,84,10,84, + 12,84,1056,9,84,1,85,1,85,1,85,5,85,1061,8,85,10,85,12,85,1064,9,85,1, + 86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,3,87,1076,8,87,1,87,3, + 87,1079,8,87,1,88,1,88,3,88,1083,8,88,1,89,1,89,3,89,1087,8,89,1,89,1, + 89,1,89,1,90,1,90,3,90,1094,8,90,1,90,1,90,1,90,1,91,1,91,1,91,5,91,1102, + 8,91,10,91,12,91,1105,9,91,1,92,1,92,1,92,5,92,1110,8,92,10,92,12,92,1113, + 9,92,1,93,1,93,1,93,3,93,1118,8,93,1,94,1,94,1,94,1,94,5,94,1124,8,94, + 10,94,12,94,1127,9,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95, + 1,95,1,95,1,95,3,95,1142,8,95,1,96,1,96,1,96,1,97,1,97,1,97,4,97,1150, + 8,97,11,97,12,97,1151,1,97,3,97,1155,8,97,1,97,1,97,1,97,1,97,1,97,1,97, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97, + 1,97,5,97,1178,8,97,10,97,12,97,1181,9,97,1,98,3,98,1184,8,98,1,98,1,98, + 5,98,1188,8,98,10,98,12,98,1191,9,98,1,99,1,99,1,99,3,99,1196,8,99,1,99, + 1,99,1,99,3,99,1201,8,99,1,99,1,99,1,99,3,99,1206,8,99,1,99,1,99,1,99, + 1,99,4,99,1212,8,99,11,99,12,99,1213,1,99,1,99,1,99,1,99,3,99,1220,8,99, + 1,100,1,100,1,101,1,101,3,101,1226,8,101,1,101,1,101,1,101,1,101,3,101, + 1232,8,101,5,101,1234,8,101,10,101,12,101,1237,9,101,1,101,3,101,1240, + 8,101,3,101,1242,8,101,1,102,1,102,3,102,1246,8,102,1,102,1,102,1,102, + 1,102,1,102,1,102,1,102,3,102,1255,8,102,1,103,1,103,1,103,5,103,1260, + 8,103,10,103,12,103,1263,9,103,1,103,3,103,1266,8,103,1,104,1,104,3,104, + 1270,8,104,1,104,1,104,3,104,1274,8,104,1,104,3,104,1277,8,104,3,104,1279, + 8,104,1,105,1,105,3,105,1283,8,105,1,106,1,106,3,106,1287,8,106,1,106, + 1,106,1,106,3,106,1292,8,106,5,106,1294,8,106,10,106,12,106,1297,9,106, + 1,106,3,106,1300,8,106,1,107,1,107,1,107,5,107,1305,8,107,10,107,12,107, + 1308,9,107,1,107,3,107,1311,8,107,1,108,1,108,1,108,1,108,1,108,1,108, + 3,108,1319,8,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108, + 1329,8,108,5,108,1331,8,108,10,108,12,108,1334,9,108,1,108,3,108,1337, + 8,108,3,108,1339,8,108,1,108,1,108,3,108,1343,8,108,1,108,1,108,1,108, + 1,108,3,108,1349,8,108,5,108,1351,8,108,10,108,12,108,1354,9,108,1,108, + 3,108,1357,8,108,3,108,1359,8,108,3,108,1361,8,108,1,109,1,109,1,109,1, + 109,3,109,1367,8,109,1,109,3,109,1370,8,109,1,109,1,109,1,109,1,110,1, + 110,1,110,5,110,1378,8,110,10,110,12,110,1381,9,110,1,110,3,110,1384,8, + 110,1,111,1,111,3,111,1388,8,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,3,111,1398,8,111,1,112,1,112,3,112,1402,8,112,1,113,3,113,1405, + 8,113,1,113,1,113,1,113,1,113,1,113,3,113,1412,8,113,1,114,1,114,1,114, + 3,114,1417,8,114,1,115,1,115,1,116,1,116,3,116,1423,8,116,1,117,1,117, + 1,117,3,117,1428,8,117,1,118,4,118,1431,8,118,11,118,12,118,1432,1,118, + 0,1,194,119,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40, + 42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, + 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, + 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, + 164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198, + 200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234, + 236,0,7,1,0,88,100,1,0,54,55,2,0,71,72,76,76,3,0,56,56,73,75,86,86,1,0, + 71,72,1,0,69,70,3,0,30,30,40,40,45,45,1586,0,243,1,0,0,0,2,249,1,0,0,0, + 4,254,1,0,0,0,6,263,1,0,0,0,8,275,1,0,0,0,10,279,1,0,0,0,12,285,1,0,0, + 0,14,288,1,0,0,0,16,298,1,0,0,0,18,385,1,0,0,0,20,387,1,0,0,0,22,473,1, + 0,0,0,24,475,1,0,0,0,26,479,1,0,0,0,28,481,1,0,0,0,30,502,1,0,0,0,32,504, + 1,0,0,0,34,523,1,0,0,0,36,531,1,0,0,0,38,546,1,0,0,0,40,548,1,0,0,0,42, + 551,1,0,0,0,44,558,1,0,0,0,46,560,1,0,0,0,48,562,1,0,0,0,50,564,1,0,0, + 0,52,568,1,0,0,0,54,570,1,0,0,0,56,580,1,0,0,0,58,582,1,0,0,0,60,585,1, + 0,0,0,62,609,1,0,0,0,64,614,1,0,0,0,66,619,1,0,0,0,68,630,1,0,0,0,70,638, + 1,0,0,0,72,646,1,0,0,0,74,655,1,0,0,0,76,664,1,0,0,0,78,680,1,0,0,0,80, + 682,1,0,0,0,82,688,1,0,0,0,84,707,1,0,0,0,86,716,1,0,0,0,88,727,1,0,0, + 0,90,753,1,0,0,0,92,765,1,0,0,0,94,770,1,0,0,0,96,788,1,0,0,0,98,790,1, + 0,0,0,100,808,1,0,0,0,102,810,1,0,0,0,104,822,1,0,0,0,106,824,1,0,0,0, + 108,832,1,0,0,0,110,837,1,0,0,0,112,841,1,0,0,0,114,843,1,0,0,0,116,847, + 1,0,0,0,118,863,1,0,0,0,120,873,1,0,0,0,122,883,1,0,0,0,124,893,1,0,0, + 0,126,898,1,0,0,0,128,903,1,0,0,0,130,905,1,0,0,0,132,907,1,0,0,0,134, + 909,1,0,0,0,136,911,1,0,0,0,138,914,1,0,0,0,140,916,1,0,0,0,142,919,1, + 0,0,0,144,928,1,0,0,0,146,930,1,0,0,0,148,944,1,0,0,0,150,946,1,0,0,0, + 152,951,1,0,0,0,154,964,1,0,0,0,156,970,1,0,0,0,158,997,1,0,0,0,160,999, + 1,0,0,0,162,1009,1,0,0,0,164,1014,1,0,0,0,166,1047,1,0,0,0,168,1049,1, + 0,0,0,170,1057,1,0,0,0,172,1065,1,0,0,0,174,1078,1,0,0,0,176,1082,1,0, + 0,0,178,1084,1,0,0,0,180,1091,1,0,0,0,182,1098,1,0,0,0,184,1106,1,0,0, + 0,186,1117,1,0,0,0,188,1119,1,0,0,0,190,1141,1,0,0,0,192,1143,1,0,0,0, + 194,1154,1,0,0,0,196,1183,1,0,0,0,198,1219,1,0,0,0,200,1221,1,0,0,0,202, + 1225,1,0,0,0,204,1254,1,0,0,0,206,1256,1,0,0,0,208,1278,1,0,0,0,210,1280, + 1,0,0,0,212,1286,1,0,0,0,214,1301,1,0,0,0,216,1360,1,0,0,0,218,1362,1, + 0,0,0,220,1374,1,0,0,0,222,1397,1,0,0,0,224,1401,1,0,0,0,226,1404,1,0, + 0,0,228,1413,1,0,0,0,230,1418,1,0,0,0,232,1420,1,0,0,0,234,1427,1,0,0, + 0,236,1430,1,0,0,0,238,244,5,44,0,0,239,244,3,28,14,0,240,241,3,78,39, + 0,241,242,5,44,0,0,242,244,1,0,0,0,243,238,1,0,0,0,243,239,1,0,0,0,243, + 240,1,0,0,0,244,1,1,0,0,0,245,248,5,44,0,0,246,248,3,26,13,0,247,245,1, + 0,0,0,247,246,1,0,0,0,248,251,1,0,0,0,249,247,1,0,0,0,249,250,1,0,0,0, + 250,252,1,0,0,0,251,249,1,0,0,0,252,253,5,0,0,1,253,3,1,0,0,0,254,258, + 3,214,107,0,255,257,5,44,0,0,256,255,1,0,0,0,257,260,1,0,0,0,258,256,1, + 0,0,0,258,259,1,0,0,0,259,261,1,0,0,0,260,258,1,0,0,0,261,262,5,0,0,1, + 262,5,1,0,0,0,263,264,5,86,0,0,264,270,3,70,35,0,265,267,5,57,0,0,266, + 268,3,220,110,0,267,266,1,0,0,0,267,268,1,0,0,0,268,269,1,0,0,0,269,271, + 5,58,0,0,270,265,1,0,0,0,270,271,1,0,0,0,271,272,1,0,0,0,272,273,5,44, + 0,0,273,7,1,0,0,0,274,276,3,6,3,0,275,274,1,0,0,0,276,277,1,0,0,0,277, + 275,1,0,0,0,277,278,1,0,0,0,278,9,1,0,0,0,279,283,3,8,4,0,280,284,3,218, + 109,0,281,284,3,14,7,0,282,284,3,12,6,0,283,280,1,0,0,0,283,281,1,0,0, + 0,283,282,1,0,0,0,284,11,1,0,0,0,285,286,5,9,0,0,286,287,3,14,7,0,287, + 13,1,0,0,0,288,289,5,15,0,0,289,290,3,200,100,0,290,293,3,16,8,0,291,292, + 5,87,0,0,292,294,3,174,87,0,293,291,1,0,0,0,293,294,1,0,0,0,294,295,1, + 0,0,0,295,296,5,60,0,0,296,297,3,96,48,0,297,15,1,0,0,0,298,300,5,57,0, + 0,299,301,3,18,9,0,300,299,1,0,0,0,300,301,1,0,0,0,301,302,1,0,0,0,302, + 303,5,58,0,0,303,17,1,0,0,0,304,307,3,20,10,0,305,306,5,63,0,0,306,308, + 3,174,87,0,307,305,1,0,0,0,307,308,1,0,0,0,308,317,1,0,0,0,309,310,5,59, + 0,0,310,313,3,20,10,0,311,312,5,63,0,0,312,314,3,174,87,0,313,311,1,0, + 0,0,313,314,1,0,0,0,314,316,1,0,0,0,315,309,1,0,0,0,316,319,1,0,0,0,317, + 315,1,0,0,0,317,318,1,0,0,0,318,353,1,0,0,0,319,317,1,0,0,0,320,351,5, + 59,0,0,321,323,5,56,0,0,322,324,3,20,10,0,323,322,1,0,0,0,323,324,1,0, + 0,0,324,333,1,0,0,0,325,326,5,59,0,0,326,329,3,20,10,0,327,328,5,63,0, + 0,328,330,3,174,87,0,329,327,1,0,0,0,329,330,1,0,0,0,330,332,1,0,0,0,331, + 325,1,0,0,0,332,335,1,0,0,0,333,331,1,0,0,0,333,334,1,0,0,0,334,344,1, + 0,0,0,335,333,1,0,0,0,336,342,5,59,0,0,337,338,5,62,0,0,338,340,3,20,10, + 0,339,341,5,59,0,0,340,339,1,0,0,0,340,341,1,0,0,0,341,343,1,0,0,0,342, + 337,1,0,0,0,342,343,1,0,0,0,343,345,1,0,0,0,344,336,1,0,0,0,344,345,1, + 0,0,0,345,352,1,0,0,0,346,347,5,62,0,0,347,349,3,20,10,0,348,350,5,59, + 0,0,349,348,1,0,0,0,349,350,1,0,0,0,350,352,1,0,0,0,351,321,1,0,0,0,351, + 346,1,0,0,0,351,352,1,0,0,0,352,354,1,0,0,0,353,320,1,0,0,0,353,354,1, + 0,0,0,354,386,1,0,0,0,355,357,5,56,0,0,356,358,3,20,10,0,357,356,1,0,0, + 0,357,358,1,0,0,0,358,367,1,0,0,0,359,360,5,59,0,0,360,363,3,20,10,0,361, + 362,5,63,0,0,362,364,3,174,87,0,363,361,1,0,0,0,363,364,1,0,0,0,364,366, + 1,0,0,0,365,359,1,0,0,0,366,369,1,0,0,0,367,365,1,0,0,0,367,368,1,0,0, + 0,368,378,1,0,0,0,369,367,1,0,0,0,370,376,5,59,0,0,371,372,5,62,0,0,372, + 374,3,20,10,0,373,375,5,59,0,0,374,373,1,0,0,0,374,375,1,0,0,0,375,377, + 1,0,0,0,376,371,1,0,0,0,376,377,1,0,0,0,377,379,1,0,0,0,378,370,1,0,0, + 0,378,379,1,0,0,0,379,386,1,0,0,0,380,381,5,62,0,0,381,383,3,20,10,0,382, + 384,5,59,0,0,383,382,1,0,0,0,383,384,1,0,0,0,384,386,1,0,0,0,385,304,1, + 0,0,0,385,355,1,0,0,0,385,380,1,0,0,0,386,19,1,0,0,0,387,390,3,200,100, + 0,388,389,5,60,0,0,389,391,3,174,87,0,390,388,1,0,0,0,390,391,1,0,0,0, + 391,21,1,0,0,0,392,395,3,24,12,0,393,394,5,63,0,0,394,396,3,174,87,0,395, + 393,1,0,0,0,395,396,1,0,0,0,396,405,1,0,0,0,397,398,5,59,0,0,398,401,3, + 24,12,0,399,400,5,63,0,0,400,402,3,174,87,0,401,399,1,0,0,0,401,402,1, + 0,0,0,402,404,1,0,0,0,403,397,1,0,0,0,404,407,1,0,0,0,405,403,1,0,0,0, + 405,406,1,0,0,0,406,441,1,0,0,0,407,405,1,0,0,0,408,439,5,59,0,0,409,411, + 5,56,0,0,410,412,3,24,12,0,411,410,1,0,0,0,411,412,1,0,0,0,412,421,1,0, + 0,0,413,414,5,59,0,0,414,417,3,24,12,0,415,416,5,63,0,0,416,418,3,174, + 87,0,417,415,1,0,0,0,417,418,1,0,0,0,418,420,1,0,0,0,419,413,1,0,0,0,420, + 423,1,0,0,0,421,419,1,0,0,0,421,422,1,0,0,0,422,432,1,0,0,0,423,421,1, + 0,0,0,424,430,5,59,0,0,425,426,5,62,0,0,426,428,3,24,12,0,427,429,5,59, + 0,0,428,427,1,0,0,0,428,429,1,0,0,0,429,431,1,0,0,0,430,425,1,0,0,0,430, + 431,1,0,0,0,431,433,1,0,0,0,432,424,1,0,0,0,432,433,1,0,0,0,433,440,1, + 0,0,0,434,435,5,62,0,0,435,437,3,24,12,0,436,438,5,59,0,0,437,436,1,0, + 0,0,437,438,1,0,0,0,438,440,1,0,0,0,439,409,1,0,0,0,439,434,1,0,0,0,439, + 440,1,0,0,0,440,442,1,0,0,0,441,408,1,0,0,0,441,442,1,0,0,0,442,474,1, + 0,0,0,443,445,5,56,0,0,444,446,3,24,12,0,445,444,1,0,0,0,445,446,1,0,0, + 0,446,455,1,0,0,0,447,448,5,59,0,0,448,451,3,24,12,0,449,450,5,63,0,0, + 450,452,3,174,87,0,451,449,1,0,0,0,451,452,1,0,0,0,452,454,1,0,0,0,453, + 447,1,0,0,0,454,457,1,0,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,466,1, + 0,0,0,457,455,1,0,0,0,458,464,5,59,0,0,459,460,5,62,0,0,460,462,3,24,12, + 0,461,463,5,59,0,0,462,461,1,0,0,0,462,463,1,0,0,0,463,465,1,0,0,0,464, + 459,1,0,0,0,464,465,1,0,0,0,465,467,1,0,0,0,466,458,1,0,0,0,466,467,1, + 0,0,0,467,474,1,0,0,0,468,469,5,62,0,0,469,471,3,24,12,0,470,472,5,59, + 0,0,471,470,1,0,0,0,471,472,1,0,0,0,472,474,1,0,0,0,473,392,1,0,0,0,473, + 443,1,0,0,0,473,468,1,0,0,0,474,23,1,0,0,0,475,476,3,200,100,0,476,25, + 1,0,0,0,477,480,3,28,14,0,478,480,3,78,39,0,479,477,1,0,0,0,479,478,1, + 0,0,0,480,27,1,0,0,0,481,486,3,30,15,0,482,483,5,61,0,0,483,485,3,30,15, + 0,484,482,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487, + 490,1,0,0,0,488,486,1,0,0,0,489,491,5,61,0,0,490,489,1,0,0,0,490,491,1, + 0,0,0,491,492,1,0,0,0,492,493,5,44,0,0,493,29,1,0,0,0,494,503,3,32,16, + 0,495,503,3,40,20,0,496,503,3,42,21,0,497,503,3,44,22,0,498,503,3,56,28, + 0,499,503,3,72,36,0,500,503,3,74,37,0,501,503,3,76,38,0,502,494,1,0,0, + 0,502,495,1,0,0,0,502,496,1,0,0,0,502,497,1,0,0,0,502,498,1,0,0,0,502, + 499,1,0,0,0,502,500,1,0,0,0,502,501,1,0,0,0,503,31,1,0,0,0,504,521,3,36, + 18,0,505,522,3,34,17,0,506,509,3,38,19,0,507,510,3,232,116,0,508,510,3, + 214,107,0,509,507,1,0,0,0,509,508,1,0,0,0,510,522,1,0,0,0,511,514,5,63, + 0,0,512,515,3,232,116,0,513,515,3,36,18,0,514,512,1,0,0,0,514,513,1,0, + 0,0,515,517,1,0,0,0,516,511,1,0,0,0,517,520,1,0,0,0,518,516,1,0,0,0,518, + 519,1,0,0,0,519,522,1,0,0,0,520,518,1,0,0,0,521,505,1,0,0,0,521,506,1, + 0,0,0,521,518,1,0,0,0,522,33,1,0,0,0,523,524,5,60,0,0,524,527,3,174,87, + 0,525,526,5,63,0,0,526,528,3,174,87,0,527,525,1,0,0,0,527,528,1,0,0,0, + 528,35,1,0,0,0,529,532,3,174,87,0,530,532,3,192,96,0,531,529,1,0,0,0,531, + 530,1,0,0,0,532,540,1,0,0,0,533,536,5,59,0,0,534,537,3,174,87,0,535,537, + 3,192,96,0,536,534,1,0,0,0,536,535,1,0,0,0,537,539,1,0,0,0,538,533,1,0, + 0,0,539,542,1,0,0,0,540,538,1,0,0,0,540,541,1,0,0,0,541,544,1,0,0,0,542, + 540,1,0,0,0,543,545,5,59,0,0,544,543,1,0,0,0,544,545,1,0,0,0,545,37,1, + 0,0,0,546,547,7,0,0,0,547,39,1,0,0,0,548,549,5,16,0,0,549,550,3,212,106, + 0,550,41,1,0,0,0,551,552,5,35,0,0,552,43,1,0,0,0,553,559,3,46,23,0,554, + 559,3,48,24,0,555,559,3,50,25,0,556,559,3,54,27,0,557,559,3,52,26,0,558, + 553,1,0,0,0,558,554,1,0,0,0,558,555,1,0,0,0,558,556,1,0,0,0,558,557,1, + 0,0,0,559,45,1,0,0,0,560,561,5,11,0,0,561,47,1,0,0,0,562,563,5,14,0,0, + 563,49,1,0,0,0,564,566,5,37,0,0,565,567,3,214,107,0,566,565,1,0,0,0,566, + 567,1,0,0,0,567,51,1,0,0,0,568,569,3,232,116,0,569,53,1,0,0,0,570,576, + 5,36,0,0,571,574,3,174,87,0,572,573,5,23,0,0,573,575,3,174,87,0,574,572, + 1,0,0,0,574,575,1,0,0,0,575,577,1,0,0,0,576,571,1,0,0,0,576,577,1,0,0, + 0,577,55,1,0,0,0,578,581,3,58,29,0,579,581,3,60,30,0,580,578,1,0,0,0,580, + 579,1,0,0,0,581,57,1,0,0,0,582,583,5,26,0,0,583,584,3,68,34,0,584,59,1, + 0,0,0,585,598,5,23,0,0,586,588,7,1,0,0,587,586,1,0,0,0,588,591,1,0,0,0, + 589,587,1,0,0,0,589,590,1,0,0,0,590,592,1,0,0,0,591,589,1,0,0,0,592,599, + 3,70,35,0,593,595,7,1,0,0,594,593,1,0,0,0,595,596,1,0,0,0,596,594,1,0, + 0,0,596,597,1,0,0,0,597,599,1,0,0,0,598,589,1,0,0,0,598,594,1,0,0,0,599, + 600,1,0,0,0,600,607,5,26,0,0,601,608,5,56,0,0,602,603,5,57,0,0,603,604, + 3,66,33,0,604,605,5,58,0,0,605,608,1,0,0,0,606,608,3,66,33,0,607,601,1, + 0,0,0,607,602,1,0,0,0,607,606,1,0,0,0,608,61,1,0,0,0,609,612,3,200,100, + 0,610,611,5,7,0,0,611,613,3,200,100,0,612,610,1,0,0,0,612,613,1,0,0,0, + 613,63,1,0,0,0,614,617,3,70,35,0,615,616,5,7,0,0,616,618,3,200,100,0,617, + 615,1,0,0,0,617,618,1,0,0,0,618,65,1,0,0,0,619,624,3,62,31,0,620,621,5, + 59,0,0,621,623,3,62,31,0,622,620,1,0,0,0,623,626,1,0,0,0,624,622,1,0,0, + 0,624,625,1,0,0,0,625,628,1,0,0,0,626,624,1,0,0,0,627,629,5,59,0,0,628, + 627,1,0,0,0,628,629,1,0,0,0,629,67,1,0,0,0,630,635,3,64,32,0,631,632,5, + 59,0,0,632,634,3,64,32,0,633,631,1,0,0,0,634,637,1,0,0,0,635,633,1,0,0, + 0,635,636,1,0,0,0,636,69,1,0,0,0,637,635,1,0,0,0,638,643,3,200,100,0,639, + 640,5,54,0,0,640,642,3,200,100,0,641,639,1,0,0,0,642,645,1,0,0,0,643,641, + 1,0,0,0,643,644,1,0,0,0,644,71,1,0,0,0,645,643,1,0,0,0,646,647,5,24,0, + 0,647,652,3,200,100,0,648,649,5,59,0,0,649,651,3,200,100,0,650,648,1,0, + 0,0,651,654,1,0,0,0,652,650,1,0,0,0,652,653,1,0,0,0,653,73,1,0,0,0,654, + 652,1,0,0,0,655,656,5,32,0,0,656,661,3,200,100,0,657,658,5,59,0,0,658, + 660,3,200,100,0,659,657,1,0,0,0,660,663,1,0,0,0,661,659,1,0,0,0,661,662, + 1,0,0,0,662,75,1,0,0,0,663,661,1,0,0,0,664,665,5,8,0,0,665,668,3,174,87, + 0,666,667,5,59,0,0,667,669,3,174,87,0,668,666,1,0,0,0,668,669,1,0,0,0, + 669,77,1,0,0,0,670,681,3,82,41,0,671,681,3,84,42,0,672,681,3,86,43,0,673, + 681,3,88,44,0,674,681,3,90,45,0,675,681,3,14,7,0,676,681,3,218,109,0,677, + 681,3,10,5,0,678,681,3,80,40,0,679,681,3,98,49,0,680,670,1,0,0,0,680,671, + 1,0,0,0,680,672,1,0,0,0,680,673,1,0,0,0,680,674,1,0,0,0,680,675,1,0,0, + 0,680,676,1,0,0,0,680,677,1,0,0,0,680,678,1,0,0,0,680,679,1,0,0,0,681, + 79,1,0,0,0,682,686,5,9,0,0,683,687,3,14,7,0,684,687,3,90,45,0,685,687, + 3,86,43,0,686,683,1,0,0,0,686,684,1,0,0,0,686,685,1,0,0,0,687,81,1,0,0, + 0,688,689,5,25,0,0,689,690,3,174,87,0,690,691,5,60,0,0,691,699,3,96,48, + 0,692,693,5,17,0,0,693,694,3,174,87,0,694,695,5,60,0,0,695,696,3,96,48, + 0,696,698,1,0,0,0,697,692,1,0,0,0,698,701,1,0,0,0,699,697,1,0,0,0,699, + 700,1,0,0,0,700,705,1,0,0,0,701,699,1,0,0,0,702,703,5,18,0,0,703,704,5, + 60,0,0,704,706,3,96,48,0,705,702,1,0,0,0,705,706,1,0,0,0,706,83,1,0,0, + 0,707,708,5,41,0,0,708,709,3,174,87,0,709,710,5,60,0,0,710,714,3,96,48, + 0,711,712,5,18,0,0,712,713,5,60,0,0,713,715,3,96,48,0,714,711,1,0,0,0, + 714,715,1,0,0,0,715,85,1,0,0,0,716,717,5,22,0,0,717,718,3,212,106,0,718, + 719,5,27,0,0,719,720,3,214,107,0,720,721,5,60,0,0,721,725,3,96,48,0,722, + 723,5,18,0,0,723,724,5,60,0,0,724,726,3,96,48,0,725,722,1,0,0,0,725,726, + 1,0,0,0,726,87,1,0,0,0,727,728,5,39,0,0,728,729,5,60,0,0,729,751,3,96, + 48,0,730,731,3,94,47,0,731,732,5,60,0,0,732,733,3,96,48,0,733,735,1,0, + 0,0,734,730,1,0,0,0,735,736,1,0,0,0,736,734,1,0,0,0,736,737,1,0,0,0,737, + 741,1,0,0,0,738,739,5,18,0,0,739,740,5,60,0,0,740,742,3,96,48,0,741,738, + 1,0,0,0,741,742,1,0,0,0,742,746,1,0,0,0,743,744,5,21,0,0,744,745,5,60, + 0,0,745,747,3,96,48,0,746,743,1,0,0,0,746,747,1,0,0,0,747,752,1,0,0,0, + 748,749,5,21,0,0,749,750,5,60,0,0,750,752,3,96,48,0,751,734,1,0,0,0,751, + 748,1,0,0,0,752,89,1,0,0,0,753,754,5,42,0,0,754,759,3,92,46,0,755,756, + 5,59,0,0,756,758,3,92,46,0,757,755,1,0,0,0,758,761,1,0,0,0,759,757,1,0, + 0,0,759,760,1,0,0,0,760,762,1,0,0,0,761,759,1,0,0,0,762,763,5,60,0,0,763, + 764,3,96,48,0,764,91,1,0,0,0,765,768,3,174,87,0,766,767,5,7,0,0,767,769, + 3,194,97,0,768,766,1,0,0,0,768,769,1,0,0,0,769,93,1,0,0,0,770,776,5,19, + 0,0,771,774,3,174,87,0,772,773,5,7,0,0,773,775,3,200,100,0,774,772,1,0, + 0,0,774,775,1,0,0,0,775,777,1,0,0,0,776,771,1,0,0,0,776,777,1,0,0,0,777, + 95,1,0,0,0,778,789,3,28,14,0,779,780,5,44,0,0,780,782,5,1,0,0,781,783, + 3,26,13,0,782,781,1,0,0,0,783,784,1,0,0,0,784,782,1,0,0,0,784,785,1,0, + 0,0,785,786,1,0,0,0,786,787,5,2,0,0,787,789,1,0,0,0,788,778,1,0,0,0,788, + 779,1,0,0,0,789,97,1,0,0,0,790,791,5,30,0,0,791,792,3,100,50,0,792,793, + 5,60,0,0,793,794,5,44,0,0,794,796,5,1,0,0,795,797,3,106,53,0,796,795,1, + 0,0,0,797,798,1,0,0,0,798,796,1,0,0,0,798,799,1,0,0,0,799,800,1,0,0,0, + 800,801,5,2,0,0,801,99,1,0,0,0,802,803,3,104,52,0,803,805,5,59,0,0,804, + 806,3,102,51,0,805,804,1,0,0,0,805,806,1,0,0,0,806,809,1,0,0,0,807,809, + 3,174,87,0,808,802,1,0,0,0,808,807,1,0,0,0,809,101,1,0,0,0,810,812,5,59, + 0,0,811,813,3,104,52,0,812,811,1,0,0,0,813,814,1,0,0,0,814,812,1,0,0,0, + 814,815,1,0,0,0,815,817,1,0,0,0,816,818,5,59,0,0,817,816,1,0,0,0,817,818, + 1,0,0,0,818,103,1,0,0,0,819,820,5,56,0,0,820,823,3,194,97,0,821,823,3, + 174,87,0,822,819,1,0,0,0,822,821,1,0,0,0,823,105,1,0,0,0,824,825,5,12, + 0,0,825,827,3,110,55,0,826,828,3,108,54,0,827,826,1,0,0,0,827,828,1,0, + 0,0,828,829,1,0,0,0,829,830,5,60,0,0,830,831,3,96,48,0,831,107,1,0,0,0, + 832,833,5,25,0,0,833,834,3,174,87,0,834,109,1,0,0,0,835,838,3,150,75,0, + 836,838,3,112,56,0,837,835,1,0,0,0,837,836,1,0,0,0,838,111,1,0,0,0,839, + 842,3,114,57,0,840,842,3,116,58,0,841,839,1,0,0,0,841,840,1,0,0,0,842, + 113,1,0,0,0,843,844,3,116,58,0,844,845,5,7,0,0,845,846,3,136,68,0,846, + 115,1,0,0,0,847,852,3,118,59,0,848,849,5,66,0,0,849,851,3,118,59,0,850, + 848,1,0,0,0,851,854,1,0,0,0,852,850,1,0,0,0,852,853,1,0,0,0,853,117,1, + 0,0,0,854,852,1,0,0,0,855,864,3,120,60,0,856,864,3,134,67,0,857,864,3, + 138,69,0,858,864,3,140,70,0,859,864,3,146,73,0,860,864,3,148,74,0,861, + 864,3,158,79,0,862,864,3,166,83,0,863,855,1,0,0,0,863,856,1,0,0,0,863, + 857,1,0,0,0,863,858,1,0,0,0,863,859,1,0,0,0,863,860,1,0,0,0,863,861,1, + 0,0,0,863,862,1,0,0,0,864,119,1,0,0,0,865,866,3,126,63,0,866,867,4,60, + 0,0,867,874,1,0,0,0,868,874,3,124,62,0,869,874,3,236,118,0,870,874,5,31, + 0,0,871,874,5,38,0,0,872,874,5,20,0,0,873,865,1,0,0,0,873,868,1,0,0,0, + 873,869,1,0,0,0,873,870,1,0,0,0,873,871,1,0,0,0,873,872,1,0,0,0,874,121, + 1,0,0,0,875,876,3,126,63,0,876,877,4,61,1,0,877,884,1,0,0,0,878,884,3, + 124,62,0,879,884,3,236,118,0,880,884,5,31,0,0,881,884,5,38,0,0,882,884, + 5,20,0,0,883,875,1,0,0,0,883,878,1,0,0,0,883,879,1,0,0,0,883,880,1,0,0, + 0,883,881,1,0,0,0,883,882,1,0,0,0,884,123,1,0,0,0,885,886,3,128,64,0,886, + 887,5,71,0,0,887,888,3,132,66,0,888,894,1,0,0,0,889,890,3,128,64,0,890, + 891,5,72,0,0,891,892,3,132,66,0,892,894,1,0,0,0,893,885,1,0,0,0,893,889, + 1,0,0,0,894,125,1,0,0,0,895,899,5,4,0,0,896,897,5,72,0,0,897,899,5,4,0, + 0,898,895,1,0,0,0,898,896,1,0,0,0,899,127,1,0,0,0,900,904,3,130,65,0,901, + 902,5,72,0,0,902,904,3,130,65,0,903,900,1,0,0,0,903,901,1,0,0,0,904,129, + 1,0,0,0,905,906,5,4,0,0,906,131,1,0,0,0,907,908,5,4,0,0,908,133,1,0,0, + 0,909,910,3,136,68,0,910,135,1,0,0,0,911,912,3,200,100,0,912,913,4,68, + 2,0,913,137,1,0,0,0,914,915,5,40,0,0,915,139,1,0,0,0,916,917,3,142,71, + 0,917,918,4,70,3,0,918,141,1,0,0,0,919,922,3,200,100,0,920,921,5,54,0, + 0,921,923,3,200,100,0,922,920,1,0,0,0,923,924,1,0,0,0,924,922,1,0,0,0, + 924,925,1,0,0,0,925,143,1,0,0,0,926,929,3,142,71,0,927,929,3,200,100,0, + 928,926,1,0,0,0,928,927,1,0,0,0,929,145,1,0,0,0,930,931,5,57,0,0,931,932, + 3,112,56,0,932,933,5,58,0,0,933,147,1,0,0,0,934,936,5,64,0,0,935,937,3, + 152,76,0,936,935,1,0,0,0,936,937,1,0,0,0,937,938,1,0,0,0,938,945,5,65, + 0,0,939,941,5,57,0,0,940,942,3,150,75,0,941,940,1,0,0,0,941,942,1,0,0, + 0,942,943,1,0,0,0,943,945,5,58,0,0,944,934,1,0,0,0,944,939,1,0,0,0,945, + 149,1,0,0,0,946,947,3,154,77,0,947,949,5,59,0,0,948,950,3,152,76,0,949, + 948,1,0,0,0,949,950,1,0,0,0,950,151,1,0,0,0,951,956,3,154,77,0,952,953, + 5,59,0,0,953,955,3,154,77,0,954,952,1,0,0,0,955,958,1,0,0,0,956,954,1, + 0,0,0,956,957,1,0,0,0,957,960,1,0,0,0,958,956,1,0,0,0,959,961,5,59,0,0, + 960,959,1,0,0,0,960,961,1,0,0,0,961,153,1,0,0,0,962,965,3,156,78,0,963, + 965,3,112,56,0,964,962,1,0,0,0,964,963,1,0,0,0,965,155,1,0,0,0,966,967, + 5,56,0,0,967,971,3,136,68,0,968,969,5,56,0,0,969,971,3,138,69,0,970,966, + 1,0,0,0,970,968,1,0,0,0,971,157,1,0,0,0,972,973,5,77,0,0,973,998,5,78, + 0,0,974,975,5,77,0,0,975,977,3,164,82,0,976,978,5,59,0,0,977,976,1,0,0, + 0,977,978,1,0,0,0,978,979,1,0,0,0,979,980,5,78,0,0,980,998,1,0,0,0,981, + 982,5,77,0,0,982,983,3,160,80,0,983,984,5,59,0,0,984,986,3,164,82,0,985, + 987,5,59,0,0,986,985,1,0,0,0,986,987,1,0,0,0,987,988,1,0,0,0,988,989,5, + 78,0,0,989,998,1,0,0,0,990,991,5,77,0,0,991,993,3,160,80,0,992,994,5,59, + 0,0,993,992,1,0,0,0,993,994,1,0,0,0,994,995,1,0,0,0,995,996,5,78,0,0,996, + 998,1,0,0,0,997,972,1,0,0,0,997,974,1,0,0,0,997,981,1,0,0,0,997,990,1, + 0,0,0,998,159,1,0,0,0,999,1004,3,162,81,0,1000,1001,5,59,0,0,1001,1003, + 3,162,81,0,1002,1000,1,0,0,0,1003,1006,1,0,0,0,1004,1002,1,0,0,0,1004, + 1005,1,0,0,0,1005,161,1,0,0,0,1006,1004,1,0,0,0,1007,1010,3,122,61,0,1008, + 1010,3,142,71,0,1009,1007,1,0,0,0,1009,1008,1,0,0,0,1010,1011,1,0,0,0, + 1011,1012,5,60,0,0,1012,1013,3,112,56,0,1013,163,1,0,0,0,1014,1015,5,62, + 0,0,1015,1016,3,136,68,0,1016,165,1,0,0,0,1017,1018,3,144,72,0,1018,1019, + 5,57,0,0,1019,1020,5,58,0,0,1020,1048,1,0,0,0,1021,1022,3,144,72,0,1022, + 1023,5,57,0,0,1023,1025,3,168,84,0,1024,1026,5,59,0,0,1025,1024,1,0,0, + 0,1025,1026,1,0,0,0,1026,1027,1,0,0,0,1027,1028,5,58,0,0,1028,1048,1,0, + 0,0,1029,1030,3,144,72,0,1030,1031,5,57,0,0,1031,1033,3,170,85,0,1032, + 1034,5,59,0,0,1033,1032,1,0,0,0,1033,1034,1,0,0,0,1034,1035,1,0,0,0,1035, + 1036,5,58,0,0,1036,1048,1,0,0,0,1037,1038,3,144,72,0,1038,1039,5,57,0, + 0,1039,1040,3,168,84,0,1040,1041,5,59,0,0,1041,1043,3,170,85,0,1042,1044, + 5,59,0,0,1043,1042,1,0,0,0,1043,1044,1,0,0,0,1044,1045,1,0,0,0,1045,1046, + 5,58,0,0,1046,1048,1,0,0,0,1047,1017,1,0,0,0,1047,1021,1,0,0,0,1047,1029, + 1,0,0,0,1047,1037,1,0,0,0,1048,167,1,0,0,0,1049,1054,3,112,56,0,1050,1051, + 5,59,0,0,1051,1053,3,112,56,0,1052,1050,1,0,0,0,1053,1056,1,0,0,0,1054, + 1052,1,0,0,0,1054,1055,1,0,0,0,1055,169,1,0,0,0,1056,1054,1,0,0,0,1057, + 1062,3,172,86,0,1058,1059,5,59,0,0,1059,1061,3,172,86,0,1060,1058,1,0, + 0,0,1061,1064,1,0,0,0,1062,1060,1,0,0,0,1062,1063,1,0,0,0,1063,171,1,0, + 0,0,1064,1062,1,0,0,0,1065,1066,3,200,100,0,1066,1067,5,63,0,0,1067,1068, + 3,112,56,0,1068,173,1,0,0,0,1069,1075,3,182,91,0,1070,1071,5,25,0,0,1071, + 1072,3,182,91,0,1072,1073,5,18,0,0,1073,1074,3,174,87,0,1074,1076,1,0, + 0,0,1075,1070,1,0,0,0,1075,1076,1,0,0,0,1076,1079,1,0,0,0,1077,1079,3, + 178,89,0,1078,1069,1,0,0,0,1078,1077,1,0,0,0,1079,175,1,0,0,0,1080,1083, + 3,182,91,0,1081,1083,3,180,90,0,1082,1080,1,0,0,0,1082,1081,1,0,0,0,1083, + 177,1,0,0,0,1084,1086,5,29,0,0,1085,1087,3,22,11,0,1086,1085,1,0,0,0,1086, + 1087,1,0,0,0,1087,1088,1,0,0,0,1088,1089,5,60,0,0,1089,1090,3,174,87,0, + 1090,179,1,0,0,0,1091,1093,5,29,0,0,1092,1094,3,22,11,0,1093,1092,1,0, + 0,0,1093,1094,1,0,0,0,1094,1095,1,0,0,0,1095,1096,5,60,0,0,1096,1097,3, + 176,88,0,1097,181,1,0,0,0,1098,1103,3,184,92,0,1099,1100,5,34,0,0,1100, + 1102,3,184,92,0,1101,1099,1,0,0,0,1102,1105,1,0,0,0,1103,1101,1,0,0,0, + 1103,1104,1,0,0,0,1104,183,1,0,0,0,1105,1103,1,0,0,0,1106,1111,3,186,93, + 0,1107,1108,5,6,0,0,1108,1110,3,186,93,0,1109,1107,1,0,0,0,1110,1113,1, + 0,0,0,1111,1109,1,0,0,0,1111,1112,1,0,0,0,1112,185,1,0,0,0,1113,1111,1, + 0,0,0,1114,1115,5,33,0,0,1115,1118,3,186,93,0,1116,1118,3,188,94,0,1117, + 1114,1,0,0,0,1117,1116,1,0,0,0,1118,187,1,0,0,0,1119,1125,3,194,97,0,1120, + 1121,3,190,95,0,1121,1122,3,194,97,0,1122,1124,1,0,0,0,1123,1120,1,0,0, + 0,1124,1127,1,0,0,0,1125,1123,1,0,0,0,1125,1126,1,0,0,0,1126,189,1,0,0, + 0,1127,1125,1,0,0,0,1128,1142,5,79,0,0,1129,1142,5,80,0,0,1130,1142,5, + 81,0,0,1131,1142,5,82,0,0,1132,1142,5,83,0,0,1133,1142,5,84,0,0,1134,1142, + 5,85,0,0,1135,1142,5,27,0,0,1136,1137,5,33,0,0,1137,1142,5,27,0,0,1138, + 1142,5,28,0,0,1139,1140,5,28,0,0,1140,1142,5,33,0,0,1141,1128,1,0,0,0, + 1141,1129,1,0,0,0,1141,1130,1,0,0,0,1141,1131,1,0,0,0,1141,1132,1,0,0, + 0,1141,1133,1,0,0,0,1141,1134,1,0,0,0,1141,1135,1,0,0,0,1141,1136,1,0, + 0,0,1141,1138,1,0,0,0,1141,1139,1,0,0,0,1142,191,1,0,0,0,1143,1144,5,56, + 0,0,1144,1145,3,194,97,0,1145,193,1,0,0,0,1146,1147,6,97,-1,0,1147,1155, + 3,196,98,0,1148,1150,7,2,0,0,1149,1148,1,0,0,0,1150,1151,1,0,0,0,1151, + 1149,1,0,0,0,1151,1152,1,0,0,0,1152,1153,1,0,0,0,1153,1155,3,194,97,7, + 1154,1146,1,0,0,0,1154,1149,1,0,0,0,1155,1179,1,0,0,0,1156,1157,10,8,0, + 0,1157,1158,5,62,0,0,1158,1178,3,194,97,9,1159,1160,10,6,0,0,1160,1161, + 7,3,0,0,1161,1178,3,194,97,7,1162,1163,10,5,0,0,1163,1164,7,4,0,0,1164, + 1178,3,194,97,6,1165,1166,10,4,0,0,1166,1167,7,5,0,0,1167,1178,3,194,97, + 5,1168,1169,10,3,0,0,1169,1170,5,68,0,0,1170,1178,3,194,97,4,1171,1172, + 10,2,0,0,1172,1173,5,67,0,0,1173,1178,3,194,97,3,1174,1175,10,1,0,0,1175, + 1176,5,66,0,0,1176,1178,3,194,97,2,1177,1156,1,0,0,0,1177,1159,1,0,0,0, + 1177,1162,1,0,0,0,1177,1165,1,0,0,0,1177,1168,1,0,0,0,1177,1171,1,0,0, + 0,1177,1174,1,0,0,0,1178,1181,1,0,0,0,1179,1177,1,0,0,0,1179,1180,1,0, + 0,0,1180,195,1,0,0,0,1181,1179,1,0,0,0,1182,1184,5,10,0,0,1183,1182,1, + 0,0,0,1183,1184,1,0,0,0,1184,1185,1,0,0,0,1185,1189,3,198,99,0,1186,1188, + 3,204,102,0,1187,1186,1,0,0,0,1188,1191,1,0,0,0,1189,1187,1,0,0,0,1189, + 1190,1,0,0,0,1190,197,1,0,0,0,1191,1189,1,0,0,0,1192,1195,5,57,0,0,1193, + 1196,3,232,116,0,1194,1196,3,202,101,0,1195,1193,1,0,0,0,1195,1194,1,0, + 0,0,1195,1196,1,0,0,0,1196,1197,1,0,0,0,1197,1220,5,58,0,0,1198,1200,5, + 64,0,0,1199,1201,3,202,101,0,1200,1199,1,0,0,0,1200,1201,1,0,0,0,1201, + 1202,1,0,0,0,1202,1220,5,65,0,0,1203,1205,5,77,0,0,1204,1206,3,216,108, + 0,1205,1204,1,0,0,0,1205,1206,1,0,0,0,1206,1207,1,0,0,0,1207,1220,5,78, + 0,0,1208,1220,3,200,100,0,1209,1220,5,4,0,0,1210,1212,5,3,0,0,1211,1210, + 1,0,0,0,1212,1213,1,0,0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,1220, + 1,0,0,0,1215,1220,5,55,0,0,1216,1220,5,31,0,0,1217,1220,5,38,0,0,1218, + 1220,5,20,0,0,1219,1192,1,0,0,0,1219,1198,1,0,0,0,1219,1203,1,0,0,0,1219, + 1208,1,0,0,0,1219,1209,1,0,0,0,1219,1211,1,0,0,0,1219,1215,1,0,0,0,1219, + 1216,1,0,0,0,1219,1217,1,0,0,0,1219,1218,1,0,0,0,1220,199,1,0,0,0,1221, + 1222,7,6,0,0,1222,201,1,0,0,0,1223,1226,3,174,87,0,1224,1226,3,192,96, + 0,1225,1223,1,0,0,0,1225,1224,1,0,0,0,1226,1241,1,0,0,0,1227,1242,3,226, + 113,0,1228,1231,5,59,0,0,1229,1232,3,174,87,0,1230,1232,3,192,96,0,1231, + 1229,1,0,0,0,1231,1230,1,0,0,0,1232,1234,1,0,0,0,1233,1228,1,0,0,0,1234, + 1237,1,0,0,0,1235,1233,1,0,0,0,1235,1236,1,0,0,0,1236,1239,1,0,0,0,1237, + 1235,1,0,0,0,1238,1240,5,59,0,0,1239,1238,1,0,0,0,1239,1240,1,0,0,0,1240, + 1242,1,0,0,0,1241,1227,1,0,0,0,1241,1235,1,0,0,0,1242,203,1,0,0,0,1243, + 1245,5,57,0,0,1244,1246,3,220,110,0,1245,1244,1,0,0,0,1245,1246,1,0,0, + 0,1246,1247,1,0,0,0,1247,1255,5,58,0,0,1248,1249,5,64,0,0,1249,1250,3, + 206,103,0,1250,1251,5,65,0,0,1251,1255,1,0,0,0,1252,1253,5,54,0,0,1253, + 1255,3,200,100,0,1254,1243,1,0,0,0,1254,1248,1,0,0,0,1254,1252,1,0,0,0, + 1255,205,1,0,0,0,1256,1261,3,208,104,0,1257,1258,5,59,0,0,1258,1260,3, + 208,104,0,1259,1257,1,0,0,0,1260,1263,1,0,0,0,1261,1259,1,0,0,0,1261,1262, + 1,0,0,0,1262,1265,1,0,0,0,1263,1261,1,0,0,0,1264,1266,5,59,0,0,1265,1264, + 1,0,0,0,1265,1266,1,0,0,0,1266,207,1,0,0,0,1267,1279,3,174,87,0,1268,1270, + 3,174,87,0,1269,1268,1,0,0,0,1269,1270,1,0,0,0,1270,1271,1,0,0,0,1271, + 1273,5,60,0,0,1272,1274,3,174,87,0,1273,1272,1,0,0,0,1273,1274,1,0,0,0, + 1274,1276,1,0,0,0,1275,1277,3,210,105,0,1276,1275,1,0,0,0,1276,1277,1, + 0,0,0,1277,1279,1,0,0,0,1278,1267,1,0,0,0,1278,1269,1,0,0,0,1279,209,1, + 0,0,0,1280,1282,5,60,0,0,1281,1283,3,174,87,0,1282,1281,1,0,0,0,1282,1283, + 1,0,0,0,1283,211,1,0,0,0,1284,1287,3,194,97,0,1285,1287,3,192,96,0,1286, + 1284,1,0,0,0,1286,1285,1,0,0,0,1287,1295,1,0,0,0,1288,1291,5,59,0,0,1289, + 1292,3,194,97,0,1290,1292,3,192,96,0,1291,1289,1,0,0,0,1291,1290,1,0,0, + 0,1292,1294,1,0,0,0,1293,1288,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0, + 0,0,1295,1296,1,0,0,0,1296,1299,1,0,0,0,1297,1295,1,0,0,0,1298,1300,5, + 59,0,0,1299,1298,1,0,0,0,1299,1300,1,0,0,0,1300,213,1,0,0,0,1301,1306, + 3,174,87,0,1302,1303,5,59,0,0,1303,1305,3,174,87,0,1304,1302,1,0,0,0,1305, + 1308,1,0,0,0,1306,1304,1,0,0,0,1306,1307,1,0,0,0,1307,1310,1,0,0,0,1308, + 1306,1,0,0,0,1309,1311,5,59,0,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311, + 215,1,0,0,0,1312,1313,3,174,87,0,1313,1314,5,60,0,0,1314,1315,3,174,87, + 0,1315,1319,1,0,0,0,1316,1317,5,62,0,0,1317,1319,3,194,97,0,1318,1312, + 1,0,0,0,1318,1316,1,0,0,0,1319,1338,1,0,0,0,1320,1339,3,226,113,0,1321, + 1328,5,59,0,0,1322,1323,3,174,87,0,1323,1324,5,60,0,0,1324,1325,3,174, + 87,0,1325,1329,1,0,0,0,1326,1327,5,62,0,0,1327,1329,3,194,97,0,1328,1322, + 1,0,0,0,1328,1326,1,0,0,0,1329,1331,1,0,0,0,1330,1321,1,0,0,0,1331,1334, + 1,0,0,0,1332,1330,1,0,0,0,1332,1333,1,0,0,0,1333,1336,1,0,0,0,1334,1332, + 1,0,0,0,1335,1337,5,59,0,0,1336,1335,1,0,0,0,1336,1337,1,0,0,0,1337,1339, + 1,0,0,0,1338,1320,1,0,0,0,1338,1332,1,0,0,0,1339,1361,1,0,0,0,1340,1343, + 3,174,87,0,1341,1343,3,192,96,0,1342,1340,1,0,0,0,1342,1341,1,0,0,0,1343, + 1358,1,0,0,0,1344,1359,3,226,113,0,1345,1348,5,59,0,0,1346,1349,3,174, + 87,0,1347,1349,3,192,96,0,1348,1346,1,0,0,0,1348,1347,1,0,0,0,1349,1351, + 1,0,0,0,1350,1345,1,0,0,0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353, + 1,0,0,0,1353,1356,1,0,0,0,1354,1352,1,0,0,0,1355,1357,5,59,0,0,1356,1355, + 1,0,0,0,1356,1357,1,0,0,0,1357,1359,1,0,0,0,1358,1344,1,0,0,0,1358,1352, + 1,0,0,0,1359,1361,1,0,0,0,1360,1318,1,0,0,0,1360,1342,1,0,0,0,1361,217, + 1,0,0,0,1362,1363,5,13,0,0,1363,1369,3,200,100,0,1364,1366,5,57,0,0,1365, + 1367,3,220,110,0,1366,1365,1,0,0,0,1366,1367,1,0,0,0,1367,1368,1,0,0,0, + 1368,1370,5,58,0,0,1369,1364,1,0,0,0,1369,1370,1,0,0,0,1370,1371,1,0,0, + 0,1371,1372,5,60,0,0,1372,1373,3,96,48,0,1373,219,1,0,0,0,1374,1379,3, + 222,111,0,1375,1376,5,59,0,0,1376,1378,3,222,111,0,1377,1375,1,0,0,0,1378, + 1381,1,0,0,0,1379,1377,1,0,0,0,1379,1380,1,0,0,0,1380,1383,1,0,0,0,1381, + 1379,1,0,0,0,1382,1384,5,59,0,0,1383,1382,1,0,0,0,1383,1384,1,0,0,0,1384, + 221,1,0,0,0,1385,1387,3,174,87,0,1386,1388,3,226,113,0,1387,1386,1,0,0, + 0,1387,1388,1,0,0,0,1388,1398,1,0,0,0,1389,1390,3,174,87,0,1390,1391,5, + 63,0,0,1391,1392,3,174,87,0,1392,1398,1,0,0,0,1393,1394,5,62,0,0,1394, + 1398,3,174,87,0,1395,1396,5,56,0,0,1396,1398,3,174,87,0,1397,1385,1,0, + 0,0,1397,1389,1,0,0,0,1397,1393,1,0,0,0,1397,1395,1,0,0,0,1398,223,1,0, + 0,0,1399,1402,3,226,113,0,1400,1402,3,228,114,0,1401,1399,1,0,0,0,1401, + 1400,1,0,0,0,1402,225,1,0,0,0,1403,1405,5,9,0,0,1404,1403,1,0,0,0,1404, + 1405,1,0,0,0,1405,1406,1,0,0,0,1406,1407,5,22,0,0,1407,1408,3,212,106, + 0,1408,1409,5,27,0,0,1409,1411,3,182,91,0,1410,1412,3,224,112,0,1411,1410, + 1,0,0,0,1411,1412,1,0,0,0,1412,227,1,0,0,0,1413,1414,5,25,0,0,1414,1416, + 3,176,88,0,1415,1417,3,224,112,0,1416,1415,1,0,0,0,1416,1417,1,0,0,0,1417, + 229,1,0,0,0,1418,1419,3,200,100,0,1419,231,1,0,0,0,1420,1422,5,43,0,0, + 1421,1423,3,234,117,0,1422,1421,1,0,0,0,1422,1423,1,0,0,0,1423,233,1,0, + 0,0,1424,1425,5,23,0,0,1425,1428,3,174,87,0,1426,1428,3,214,107,0,1427, + 1424,1,0,0,0,1427,1426,1,0,0,0,1428,235,1,0,0,0,1429,1431,5,3,0,0,1430, + 1429,1,0,0,0,1431,1432,1,0,0,0,1432,1430,1,0,0,0,1432,1433,1,0,0,0,1433, + 237,1,0,0,0,201,243,247,249,258,267,270,277,283,293,300,307,313,317,323, + 329,333,340,342,344,349,351,353,357,363,367,374,376,378,383,385,390,395, + 401,405,411,417,421,428,430,432,437,439,441,445,451,455,462,464,466,471, + 473,479,486,490,502,509,514,518,521,527,531,536,540,544,558,566,574,576, + 580,589,596,598,607,612,617,624,628,635,643,652,661,668,680,686,699,705, + 714,725,736,741,746,751,759,768,774,776,784,788,798,805,808,814,817,822, + 827,837,841,852,863,873,883,893,898,903,924,928,936,941,944,949,956,960, + 964,970,977,986,993,997,1004,1009,1025,1033,1043,1047,1054,1062,1075,1078, + 1082,1086,1093,1103,1111,1117,1125,1141,1151,1154,1177,1179,1183,1189, + 1195,1200,1205,1213,1219,1225,1231,1235,1239,1241,1245,1254,1261,1265, + 1269,1273,1276,1278,1282,1286,1291,1295,1299,1306,1310,1318,1328,1332, + 1336,1338,1342,1348,1352,1356,1358,1360,1366,1369,1379,1383,1387,1397, + 1401,1404,1411,1416,1422,1427,1432 + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); + + +} + diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.interp b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.interp new file mode 100644 index 0000000..e6c150f --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.interp @@ -0,0 +1,334 @@ +token literal names: +null +null +null +null +null +null +'and' +'as' +'assert' +'async' +'await' +'break' +'case' +'class' +'continue' +'def' +'del' +'elif' +'else' +'except' +'False' +'finally' +'for' +'from' +'global' +'if' +'import' +'in' +'is' +'lambda' +'match' +'None' +'nonlocal' +'not' +'or' +'pass' +'raise' +'return' +'True' +'try' +'_' +'while' +'with' +'yield' +null +null +null +null +null +null +null +null +null +null +'.' +'...' +'*' +'(' +')' +',' +':' +';' +'**' +'=' +'[' +']' +'|' +'^' +'&' +'<<' +'>>' +'+' +'-' +'/' +'%' +'//' +'~' +'{' +'}' +'<' +'>' +'==' +'>=' +'<=' +'<>' +'!=' +'@' +'->' +'+=' +'-=' +'*=' +'@=' +'/=' +'%=' +'&=' +'|=' +'^=' +'<<=' +'>>=' +'**=' +'//=' +null +null + +token symbolic names: +null +INDENT +DEDENT +STRING +NUMBER +INTEGER +AND +AS +ASSERT +ASYNC +AWAIT +BREAK +CASE +CLASS +CONTINUE +DEF +DEL +ELIF +ELSE +EXCEPT +FALSE +FINALLY +FOR +FROM +GLOBAL +IF +IMPORT +IN +IS +LAMBDA +MATCH +NONE +NONLOCAL +NOT +OR +PASS +RAISE +RETURN +TRUE +TRY +UNDERSCORE +WHILE +WITH +YIELD +NEWLINE +NAME +STRING_LITERAL +BYTES_LITERAL +DECIMAL_INTEGER +OCT_INTEGER +HEX_INTEGER +BIN_INTEGER +FLOAT_NUMBER +IMAG_NUMBER +DOT +ELLIPSIS +STAR +OPEN_PAREN +CLOSE_PAREN +COMMA +COLON +SEMI_COLON +POWER +ASSIGN +OPEN_BRACK +CLOSE_BRACK +OR_OP +XOR +AND_OP +LEFT_SHIFT +RIGHT_SHIFT +ADD +MINUS +DIV +MOD +IDIV +NOT_OP +OPEN_BRACE +CLOSE_BRACE +LESS_THAN +GREATER_THAN +EQUALS +GT_EQ +LT_EQ +NOT_EQ_1 +NOT_EQ_2 +AT +ARROW +ADD_ASSIGN +SUB_ASSIGN +MULT_ASSIGN +AT_ASSIGN +DIV_ASSIGN +MOD_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +LEFT_SHIFT_ASSIGN +RIGHT_SHIFT_ASSIGN +POWER_ASSIGN +IDIV_ASSIGN +SKIP_ +UNKNOWN_CHAR + +rule names: +single_input +file_input +eval_input +decorator +decorators +decorated +async_funcdef +funcdef +parameters +typedargslist +tfpdef +varargslist +vfpdef +stmt +simple_stmts +simple_stmt +expr_stmt +annassign +testlist_star_expr +augassign +del_stmt +pass_stmt +flow_stmt +break_stmt +continue_stmt +return_stmt +yield_stmt +raise_stmt +import_stmt +import_name +import_from +import_as_name +dotted_as_name +import_as_names +dotted_as_names +dotted_name +global_stmt +nonlocal_stmt +assert_stmt +compound_stmt +async_stmt +if_stmt +while_stmt +for_stmt +try_stmt +with_stmt +with_item +except_clause +block +match_stmt +subject_expr +star_named_expressions +star_named_expression +case_block +guard +patterns +pattern +as_pattern +or_pattern +closed_pattern +literal_pattern +literal_expr +complex_number +signed_number +signed_real_number +real_number +imaginary_number +capture_pattern +pattern_capture_target +wildcard_pattern +value_pattern +attr +name_or_attr +group_pattern +sequence_pattern +open_sequence_pattern +maybe_sequence_pattern +maybe_star_pattern +star_pattern +mapping_pattern +items_pattern +key_value_pattern +double_star_pattern +class_pattern +positional_patterns +keyword_patterns +keyword_pattern +test +test_nocond +lambdef +lambdef_nocond +or_test +and_test +not_test +comparison +comp_op +star_expr +expr +atom_expr +atom +name +testlist_comp +trailer +subscriptlist +subscript_ +sliceop +exprlist +testlist +dictorsetmaker +classdef +arglist +argument +comp_iter +comp_for +comp_if +encoding_decl +yield_expr +yield_arg +strings + + +atn: +[4, 1, 102, 1435, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 244, 8, 0, 1, 1, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 5, 2, 257, 8, 2, 10, 2, 12, 2, 260, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 268, 8, 3, 1, 3, 3, 3, 271, 8, 3, 1, 3, 1, 3, 1, 4, 4, 4, 276, 8, 4, 11, 4, 12, 4, 277, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 284, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 294, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 301, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 308, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 314, 8, 9, 5, 9, 316, 8, 9, 10, 9, 12, 9, 319, 9, 9, 1, 9, 1, 9, 1, 9, 3, 9, 324, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 330, 8, 9, 5, 9, 332, 8, 9, 10, 9, 12, 9, 335, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 341, 8, 9, 3, 9, 343, 8, 9, 3, 9, 345, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 350, 8, 9, 3, 9, 352, 8, 9, 3, 9, 354, 8, 9, 1, 9, 1, 9, 3, 9, 358, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 364, 8, 9, 5, 9, 366, 8, 9, 10, 9, 12, 9, 369, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 375, 8, 9, 3, 9, 377, 8, 9, 3, 9, 379, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 384, 8, 9, 3, 9, 386, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 391, 8, 10, 1, 11, 1, 11, 1, 11, 3, 11, 396, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 402, 8, 11, 5, 11, 404, 8, 11, 10, 11, 12, 11, 407, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 412, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 418, 8, 11, 5, 11, 420, 8, 11, 10, 11, 12, 11, 423, 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 429, 8, 11, 3, 11, 431, 8, 11, 3, 11, 433, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 438, 8, 11, 3, 11, 440, 8, 11, 3, 11, 442, 8, 11, 1, 11, 1, 11, 3, 11, 446, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 452, 8, 11, 5, 11, 454, 8, 11, 10, 11, 12, 11, 457, 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 463, 8, 11, 3, 11, 465, 8, 11, 3, 11, 467, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 3, 11, 474, 8, 11, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 480, 8, 13, 1, 14, 1, 14, 1, 14, 5, 14, 485, 8, 14, 10, 14, 12, 14, 488, 9, 14, 1, 14, 3, 14, 491, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 503, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 515, 8, 16, 5, 16, 517, 8, 16, 10, 16, 12, 16, 520, 9, 16, 3, 16, 522, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 528, 8, 17, 1, 18, 1, 18, 3, 18, 532, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 537, 8, 18, 5, 18, 539, 8, 18, 10, 18, 12, 18, 542, 9, 18, 1, 18, 3, 18, 545, 8, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 559, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 567, 8, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 575, 8, 27, 3, 27, 577, 8, 27, 1, 28, 1, 28, 3, 28, 581, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 5, 30, 588, 8, 30, 10, 30, 12, 30, 591, 9, 30, 1, 30, 1, 30, 4, 30, 595, 8, 30, 11, 30, 12, 30, 596, 3, 30, 599, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 608, 8, 30, 1, 31, 1, 31, 1, 31, 3, 31, 613, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 618, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 623, 8, 33, 10, 33, 12, 33, 626, 9, 33, 1, 33, 3, 33, 629, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 634, 8, 34, 10, 34, 12, 34, 637, 9, 34, 1, 35, 1, 35, 1, 35, 5, 35, 642, 8, 35, 10, 35, 12, 35, 645, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 651, 8, 36, 10, 36, 12, 36, 654, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 660, 8, 37, 10, 37, 12, 37, 663, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 669, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 681, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 687, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 698, 8, 41, 10, 41, 12, 41, 701, 9, 41, 1, 41, 1, 41, 1, 41, 3, 41, 706, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 715, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 726, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 735, 8, 44, 11, 44, 12, 44, 736, 1, 44, 1, 44, 1, 44, 3, 44, 742, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 747, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 752, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 758, 8, 45, 10, 45, 12, 45, 761, 9, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 769, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 775, 8, 47, 3, 47, 777, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 4, 48, 783, 8, 48, 11, 48, 12, 48, 784, 1, 48, 1, 48, 3, 48, 789, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 797, 8, 49, 11, 49, 12, 49, 798, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 806, 8, 50, 1, 50, 3, 50, 809, 8, 50, 1, 51, 1, 51, 4, 51, 813, 8, 51, 11, 51, 12, 51, 814, 1, 51, 3, 51, 818, 8, 51, 1, 52, 1, 52, 1, 52, 3, 52, 823, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 828, 8, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 838, 8, 55, 1, 56, 1, 56, 3, 56, 842, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 851, 8, 58, 10, 58, 12, 58, 854, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 864, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 874, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 884, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 894, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 899, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 904, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 4, 71, 923, 8, 71, 11, 71, 12, 71, 924, 1, 72, 1, 72, 3, 72, 929, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 937, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 942, 8, 74, 1, 74, 3, 74, 945, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 950, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 955, 8, 76, 10, 76, 12, 76, 958, 9, 76, 1, 76, 3, 76, 961, 8, 76, 1, 77, 1, 77, 3, 77, 965, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 971, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 978, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 987, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 994, 8, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 5, 80, 1003, 8, 80, 10, 80, 12, 80, 1006, 9, 80, 1, 81, 1, 81, 3, 81, 1010, 8, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1026, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1034, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1044, 8, 83, 1, 83, 1, 83, 3, 83, 1048, 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1053, 8, 84, 10, 84, 12, 84, 1056, 9, 84, 1, 85, 1, 85, 1, 85, 5, 85, 1061, 8, 85, 10, 85, 12, 85, 1064, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1076, 8, 87, 1, 87, 3, 87, 1079, 8, 87, 1, 88, 1, 88, 3, 88, 1083, 8, 88, 1, 89, 1, 89, 3, 89, 1087, 8, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 3, 90, 1094, 8, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 5, 91, 1102, 8, 91, 10, 91, 12, 91, 1105, 9, 91, 1, 92, 1, 92, 1, 92, 5, 92, 1110, 8, 92, 10, 92, 12, 92, 1113, 9, 92, 1, 93, 1, 93, 1, 93, 3, 93, 1118, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5, 94, 1124, 8, 94, 10, 94, 12, 94, 1127, 9, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1142, 8, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 4, 97, 1150, 8, 97, 11, 97, 12, 97, 1151, 1, 97, 3, 97, 1155, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1178, 8, 97, 10, 97, 12, 97, 1181, 9, 97, 1, 98, 3, 98, 1184, 8, 98, 1, 98, 1, 98, 5, 98, 1188, 8, 98, 10, 98, 12, 98, 1191, 9, 98, 1, 99, 1, 99, 1, 99, 3, 99, 1196, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1201, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1206, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 4, 99, 1212, 8, 99, 11, 99, 12, 99, 1213, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1220, 8, 99, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1226, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1232, 8, 101, 5, 101, 1234, 8, 101, 10, 101, 12, 101, 1237, 9, 101, 1, 101, 3, 101, 1240, 8, 101, 3, 101, 1242, 8, 101, 1, 102, 1, 102, 3, 102, 1246, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1255, 8, 102, 1, 103, 1, 103, 1, 103, 5, 103, 1260, 8, 103, 10, 103, 12, 103, 1263, 9, 103, 1, 103, 3, 103, 1266, 8, 103, 1, 104, 1, 104, 3, 104, 1270, 8, 104, 1, 104, 1, 104, 3, 104, 1274, 8, 104, 1, 104, 3, 104, 1277, 8, 104, 3, 104, 1279, 8, 104, 1, 105, 1, 105, 3, 105, 1283, 8, 105, 1, 106, 1, 106, 3, 106, 1287, 8, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1292, 8, 106, 5, 106, 1294, 8, 106, 10, 106, 12, 106, 1297, 9, 106, 1, 106, 3, 106, 1300, 8, 106, 1, 107, 1, 107, 1, 107, 5, 107, 1305, 8, 107, 10, 107, 12, 107, 1308, 9, 107, 1, 107, 3, 107, 1311, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1319, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1329, 8, 108, 5, 108, 1331, 8, 108, 10, 108, 12, 108, 1334, 9, 108, 1, 108, 3, 108, 1337, 8, 108, 3, 108, 1339, 8, 108, 1, 108, 1, 108, 3, 108, 1343, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1349, 8, 108, 5, 108, 1351, 8, 108, 10, 108, 12, 108, 1354, 9, 108, 1, 108, 3, 108, 1357, 8, 108, 3, 108, 1359, 8, 108, 3, 108, 1361, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1367, 8, 109, 1, 109, 3, 109, 1370, 8, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1378, 8, 110, 10, 110, 12, 110, 1381, 9, 110, 1, 110, 3, 110, 1384, 8, 110, 1, 111, 1, 111, 3, 111, 1388, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1398, 8, 111, 1, 112, 1, 112, 3, 112, 1402, 8, 112, 1, 113, 3, 113, 1405, 8, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1412, 8, 113, 1, 114, 1, 114, 1, 114, 3, 114, 1417, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 3, 116, 1423, 8, 116, 1, 117, 1, 117, 1, 117, 3, 117, 1428, 8, 117, 1, 118, 4, 118, 1431, 8, 118, 11, 118, 12, 118, 1432, 1, 118, 0, 1, 194, 119, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 0, 7, 1, 0, 88, 100, 1, 0, 54, 55, 2, 0, 71, 72, 76, 76, 3, 0, 56, 56, 73, 75, 86, 86, 1, 0, 71, 72, 1, 0, 69, 70, 3, 0, 30, 30, 40, 40, 45, 45, 1586, 0, 243, 1, 0, 0, 0, 2, 249, 1, 0, 0, 0, 4, 254, 1, 0, 0, 0, 6, 263, 1, 0, 0, 0, 8, 275, 1, 0, 0, 0, 10, 279, 1, 0, 0, 0, 12, 285, 1, 0, 0, 0, 14, 288, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 385, 1, 0, 0, 0, 20, 387, 1, 0, 0, 0, 22, 473, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 481, 1, 0, 0, 0, 30, 502, 1, 0, 0, 0, 32, 504, 1, 0, 0, 0, 34, 523, 1, 0, 0, 0, 36, 531, 1, 0, 0, 0, 38, 546, 1, 0, 0, 0, 40, 548, 1, 0, 0, 0, 42, 551, 1, 0, 0, 0, 44, 558, 1, 0, 0, 0, 46, 560, 1, 0, 0, 0, 48, 562, 1, 0, 0, 0, 50, 564, 1, 0, 0, 0, 52, 568, 1, 0, 0, 0, 54, 570, 1, 0, 0, 0, 56, 580, 1, 0, 0, 0, 58, 582, 1, 0, 0, 0, 60, 585, 1, 0, 0, 0, 62, 609, 1, 0, 0, 0, 64, 614, 1, 0, 0, 0, 66, 619, 1, 0, 0, 0, 68, 630, 1, 0, 0, 0, 70, 638, 1, 0, 0, 0, 72, 646, 1, 0, 0, 0, 74, 655, 1, 0, 0, 0, 76, 664, 1, 0, 0, 0, 78, 680, 1, 0, 0, 0, 80, 682, 1, 0, 0, 0, 82, 688, 1, 0, 0, 0, 84, 707, 1, 0, 0, 0, 86, 716, 1, 0, 0, 0, 88, 727, 1, 0, 0, 0, 90, 753, 1, 0, 0, 0, 92, 765, 1, 0, 0, 0, 94, 770, 1, 0, 0, 0, 96, 788, 1, 0, 0, 0, 98, 790, 1, 0, 0, 0, 100, 808, 1, 0, 0, 0, 102, 810, 1, 0, 0, 0, 104, 822, 1, 0, 0, 0, 106, 824, 1, 0, 0, 0, 108, 832, 1, 0, 0, 0, 110, 837, 1, 0, 0, 0, 112, 841, 1, 0, 0, 0, 114, 843, 1, 0, 0, 0, 116, 847, 1, 0, 0, 0, 118, 863, 1, 0, 0, 0, 120, 873, 1, 0, 0, 0, 122, 883, 1, 0, 0, 0, 124, 893, 1, 0, 0, 0, 126, 898, 1, 0, 0, 0, 128, 903, 1, 0, 0, 0, 130, 905, 1, 0, 0, 0, 132, 907, 1, 0, 0, 0, 134, 909, 1, 0, 0, 0, 136, 911, 1, 0, 0, 0, 138, 914, 1, 0, 0, 0, 140, 916, 1, 0, 0, 0, 142, 919, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 930, 1, 0, 0, 0, 148, 944, 1, 0, 0, 0, 150, 946, 1, 0, 0, 0, 152, 951, 1, 0, 0, 0, 154, 964, 1, 0, 0, 0, 156, 970, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1009, 1, 0, 0, 0, 164, 1014, 1, 0, 0, 0, 166, 1047, 1, 0, 0, 0, 168, 1049, 1, 0, 0, 0, 170, 1057, 1, 0, 0, 0, 172, 1065, 1, 0, 0, 0, 174, 1078, 1, 0, 0, 0, 176, 1082, 1, 0, 0, 0, 178, 1084, 1, 0, 0, 0, 180, 1091, 1, 0, 0, 0, 182, 1098, 1, 0, 0, 0, 184, 1106, 1, 0, 0, 0, 186, 1117, 1, 0, 0, 0, 188, 1119, 1, 0, 0, 0, 190, 1141, 1, 0, 0, 0, 192, 1143, 1, 0, 0, 0, 194, 1154, 1, 0, 0, 0, 196, 1183, 1, 0, 0, 0, 198, 1219, 1, 0, 0, 0, 200, 1221, 1, 0, 0, 0, 202, 1225, 1, 0, 0, 0, 204, 1254, 1, 0, 0, 0, 206, 1256, 1, 0, 0, 0, 208, 1278, 1, 0, 0, 0, 210, 1280, 1, 0, 0, 0, 212, 1286, 1, 0, 0, 0, 214, 1301, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1362, 1, 0, 0, 0, 220, 1374, 1, 0, 0, 0, 222, 1397, 1, 0, 0, 0, 224, 1401, 1, 0, 0, 0, 226, 1404, 1, 0, 0, 0, 228, 1413, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1427, 1, 0, 0, 0, 236, 1430, 1, 0, 0, 0, 238, 244, 5, 44, 0, 0, 239, 244, 3, 28, 14, 0, 240, 241, 3, 78, 39, 0, 241, 242, 5, 44, 0, 0, 242, 244, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243, 239, 1, 0, 0, 0, 243, 240, 1, 0, 0, 0, 244, 1, 1, 0, 0, 0, 245, 248, 5, 44, 0, 0, 246, 248, 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 253, 5, 0, 0, 1, 253, 3, 1, 0, 0, 0, 254, 258, 3, 214, 107, 0, 255, 257, 5, 44, 0, 0, 256, 255, 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 261, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 5, 0, 0, 1, 262, 5, 1, 0, 0, 0, 263, 264, 5, 86, 0, 0, 264, 270, 3, 70, 35, 0, 265, 267, 5, 57, 0, 0, 266, 268, 3, 220, 110, 0, 267, 266, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 5, 58, 0, 0, 270, 265, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 5, 44, 0, 0, 273, 7, 1, 0, 0, 0, 274, 276, 3, 6, 3, 0, 275, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 9, 1, 0, 0, 0, 279, 283, 3, 8, 4, 0, 280, 284, 3, 218, 109, 0, 281, 284, 3, 14, 7, 0, 282, 284, 3, 12, 6, 0, 283, 280, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 11, 1, 0, 0, 0, 285, 286, 5, 9, 0, 0, 286, 287, 3, 14, 7, 0, 287, 13, 1, 0, 0, 0, 288, 289, 5, 15, 0, 0, 289, 290, 3, 200, 100, 0, 290, 293, 3, 16, 8, 0, 291, 292, 5, 87, 0, 0, 292, 294, 3, 174, 87, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 296, 5, 60, 0, 0, 296, 297, 3, 96, 48, 0, 297, 15, 1, 0, 0, 0, 298, 300, 5, 57, 0, 0, 299, 301, 3, 18, 9, 0, 300, 299, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 5, 58, 0, 0, 303, 17, 1, 0, 0, 0, 304, 307, 3, 20, 10, 0, 305, 306, 5, 63, 0, 0, 306, 308, 3, 174, 87, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 317, 1, 0, 0, 0, 309, 310, 5, 59, 0, 0, 310, 313, 3, 20, 10, 0, 311, 312, 5, 63, 0, 0, 312, 314, 3, 174, 87, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 353, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 351, 5, 59, 0, 0, 321, 323, 5, 56, 0, 0, 322, 324, 3, 20, 10, 0, 323, 322, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 333, 1, 0, 0, 0, 325, 326, 5, 59, 0, 0, 326, 329, 3, 20, 10, 0, 327, 328, 5, 63, 0, 0, 328, 330, 3, 174, 87, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 325, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 344, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 342, 5, 59, 0, 0, 337, 338, 5, 62, 0, 0, 338, 340, 3, 20, 10, 0, 339, 341, 5, 59, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 337, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 352, 1, 0, 0, 0, 346, 347, 5, 62, 0, 0, 347, 349, 3, 20, 10, 0, 348, 350, 5, 59, 0, 0, 349, 348, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 321, 1, 0, 0, 0, 351, 346, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 320, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 386, 1, 0, 0, 0, 355, 357, 5, 56, 0, 0, 356, 358, 3, 20, 10, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 367, 1, 0, 0, 0, 359, 360, 5, 59, 0, 0, 360, 363, 3, 20, 10, 0, 361, 362, 5, 63, 0, 0, 362, 364, 3, 174, 87, 0, 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 359, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 378, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 376, 5, 59, 0, 0, 371, 372, 5, 62, 0, 0, 372, 374, 3, 20, 10, 0, 373, 375, 5, 59, 0, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 371, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 379, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 386, 1, 0, 0, 0, 380, 381, 5, 62, 0, 0, 381, 383, 3, 20, 10, 0, 382, 384, 5, 59, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 304, 1, 0, 0, 0, 385, 355, 1, 0, 0, 0, 385, 380, 1, 0, 0, 0, 386, 19, 1, 0, 0, 0, 387, 390, 3, 200, 100, 0, 388, 389, 5, 60, 0, 0, 389, 391, 3, 174, 87, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 21, 1, 0, 0, 0, 392, 395, 3, 24, 12, 0, 393, 394, 5, 63, 0, 0, 394, 396, 3, 174, 87, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 405, 1, 0, 0, 0, 397, 398, 5, 59, 0, 0, 398, 401, 3, 24, 12, 0, 399, 400, 5, 63, 0, 0, 400, 402, 3, 174, 87, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 397, 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 441, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 439, 5, 59, 0, 0, 409, 411, 5, 56, 0, 0, 410, 412, 3, 24, 12, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 421, 1, 0, 0, 0, 413, 414, 5, 59, 0, 0, 414, 417, 3, 24, 12, 0, 415, 416, 5, 63, 0, 0, 416, 418, 3, 174, 87, 0, 417, 415, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 413, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 432, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 430, 5, 59, 0, 0, 425, 426, 5, 62, 0, 0, 426, 428, 3, 24, 12, 0, 427, 429, 5, 59, 0, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430, 425, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 1, 0, 0, 0, 432, 424, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 440, 1, 0, 0, 0, 434, 435, 5, 62, 0, 0, 435, 437, 3, 24, 12, 0, 436, 438, 5, 59, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439, 409, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441, 408, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 474, 1, 0, 0, 0, 443, 445, 5, 56, 0, 0, 444, 446, 3, 24, 12, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 455, 1, 0, 0, 0, 447, 448, 5, 59, 0, 0, 448, 451, 3, 24, 12, 0, 449, 450, 5, 63, 0, 0, 450, 452, 3, 174, 87, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 447, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 466, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 464, 5, 59, 0, 0, 459, 460, 5, 62, 0, 0, 460, 462, 3, 24, 12, 0, 461, 463, 5, 59, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 1, 0, 0, 0, 464, 459, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 1, 0, 0, 0, 466, 458, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 474, 1, 0, 0, 0, 468, 469, 5, 62, 0, 0, 469, 471, 3, 24, 12, 0, 470, 472, 5, 59, 0, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 1, 0, 0, 0, 473, 392, 1, 0, 0, 0, 473, 443, 1, 0, 0, 0, 473, 468, 1, 0, 0, 0, 474, 23, 1, 0, 0, 0, 475, 476, 3, 200, 100, 0, 476, 25, 1, 0, 0, 0, 477, 480, 3, 28, 14, 0, 478, 480, 3, 78, 39, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 486, 3, 30, 15, 0, 482, 483, 5, 61, 0, 0, 483, 485, 3, 30, 15, 0, 484, 482, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 491, 5, 61, 0, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 5, 44, 0, 0, 493, 29, 1, 0, 0, 0, 494, 503, 3, 32, 16, 0, 495, 503, 3, 40, 20, 0, 496, 503, 3, 42, 21, 0, 497, 503, 3, 44, 22, 0, 498, 503, 3, 56, 28, 0, 499, 503, 3, 72, 36, 0, 500, 503, 3, 74, 37, 0, 501, 503, 3, 76, 38, 0, 502, 494, 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 502, 496, 1, 0, 0, 0, 502, 497, 1, 0, 0, 0, 502, 498, 1, 0, 0, 0, 502, 499, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 501, 1, 0, 0, 0, 503, 31, 1, 0, 0, 0, 504, 521, 3, 36, 18, 0, 505, 522, 3, 34, 17, 0, 506, 509, 3, 38, 19, 0, 507, 510, 3, 232, 116, 0, 508, 510, 3, 214, 107, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 522, 1, 0, 0, 0, 511, 514, 5, 63, 0, 0, 512, 515, 3, 232, 116, 0, 513, 515, 3, 36, 18, 0, 514, 512, 1, 0, 0, 0, 514, 513, 1, 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 511, 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 505, 1, 0, 0, 0, 521, 506, 1, 0, 0, 0, 521, 518, 1, 0, 0, 0, 522, 33, 1, 0, 0, 0, 523, 524, 5, 60, 0, 0, 524, 527, 3, 174, 87, 0, 525, 526, 5, 63, 0, 0, 526, 528, 3, 174, 87, 0, 527, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 35, 1, 0, 0, 0, 529, 532, 3, 174, 87, 0, 530, 532, 3, 192, 96, 0, 531, 529, 1, 0, 0, 0, 531, 530, 1, 0, 0, 0, 532, 540, 1, 0, 0, 0, 533, 536, 5, 59, 0, 0, 534, 537, 3, 174, 87, 0, 535, 537, 3, 192, 96, 0, 536, 534, 1, 0, 0, 0, 536, 535, 1, 0, 0, 0, 537, 539, 1, 0, 0, 0, 538, 533, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 5, 59, 0, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 37, 1, 0, 0, 0, 546, 547, 7, 0, 0, 0, 547, 39, 1, 0, 0, 0, 548, 549, 5, 16, 0, 0, 549, 550, 3, 212, 106, 0, 550, 41, 1, 0, 0, 0, 551, 552, 5, 35, 0, 0, 552, 43, 1, 0, 0, 0, 553, 559, 3, 46, 23, 0, 554, 559, 3, 48, 24, 0, 555, 559, 3, 50, 25, 0, 556, 559, 3, 54, 27, 0, 557, 559, 3, 52, 26, 0, 558, 553, 1, 0, 0, 0, 558, 554, 1, 0, 0, 0, 558, 555, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, 45, 1, 0, 0, 0, 560, 561, 5, 11, 0, 0, 561, 47, 1, 0, 0, 0, 562, 563, 5, 14, 0, 0, 563, 49, 1, 0, 0, 0, 564, 566, 5, 37, 0, 0, 565, 567, 3, 214, 107, 0, 566, 565, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 51, 1, 0, 0, 0, 568, 569, 3, 232, 116, 0, 569, 53, 1, 0, 0, 0, 570, 576, 5, 36, 0, 0, 571, 574, 3, 174, 87, 0, 572, 573, 5, 23, 0, 0, 573, 575, 3, 174, 87, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 571, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 55, 1, 0, 0, 0, 578, 581, 3, 58, 29, 0, 579, 581, 3, 60, 30, 0, 580, 578, 1, 0, 0, 0, 580, 579, 1, 0, 0, 0, 581, 57, 1, 0, 0, 0, 582, 583, 5, 26, 0, 0, 583, 584, 3, 68, 34, 0, 584, 59, 1, 0, 0, 0, 585, 598, 5, 23, 0, 0, 586, 588, 7, 1, 0, 0, 587, 586, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 599, 3, 70, 35, 0, 593, 595, 7, 1, 0, 0, 594, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 589, 1, 0, 0, 0, 598, 594, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 607, 5, 26, 0, 0, 601, 608, 5, 56, 0, 0, 602, 603, 5, 57, 0, 0, 603, 604, 3, 66, 33, 0, 604, 605, 5, 58, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 66, 33, 0, 607, 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 61, 1, 0, 0, 0, 609, 612, 3, 200, 100, 0, 610, 611, 5, 7, 0, 0, 611, 613, 3, 200, 100, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 63, 1, 0, 0, 0, 614, 617, 3, 70, 35, 0, 615, 616, 5, 7, 0, 0, 616, 618, 3, 200, 100, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 65, 1, 0, 0, 0, 619, 624, 3, 62, 31, 0, 620, 621, 5, 59, 0, 0, 621, 623, 3, 62, 31, 0, 622, 620, 1, 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 628, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 629, 5, 59, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 67, 1, 0, 0, 0, 630, 635, 3, 64, 32, 0, 631, 632, 5, 59, 0, 0, 632, 634, 3, 64, 32, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 69, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 643, 3, 200, 100, 0, 639, 640, 5, 54, 0, 0, 640, 642, 3, 200, 100, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 71, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, 5, 24, 0, 0, 647, 652, 3, 200, 100, 0, 648, 649, 5, 59, 0, 0, 649, 651, 3, 200, 100, 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 73, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 655, 656, 5, 32, 0, 0, 656, 661, 3, 200, 100, 0, 657, 658, 5, 59, 0, 0, 658, 660, 3, 200, 100, 0, 659, 657, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 75, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 665, 5, 8, 0, 0, 665, 668, 3, 174, 87, 0, 666, 667, 5, 59, 0, 0, 667, 669, 3, 174, 87, 0, 668, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 77, 1, 0, 0, 0, 670, 681, 3, 82, 41, 0, 671, 681, 3, 84, 42, 0, 672, 681, 3, 86, 43, 0, 673, 681, 3, 88, 44, 0, 674, 681, 3, 90, 45, 0, 675, 681, 3, 14, 7, 0, 676, 681, 3, 218, 109, 0, 677, 681, 3, 10, 5, 0, 678, 681, 3, 80, 40, 0, 679, 681, 3, 98, 49, 0, 680, 670, 1, 0, 0, 0, 680, 671, 1, 0, 0, 0, 680, 672, 1, 0, 0, 0, 680, 673, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 675, 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 680, 677, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679, 1, 0, 0, 0, 681, 79, 1, 0, 0, 0, 682, 686, 5, 9, 0, 0, 683, 687, 3, 14, 7, 0, 684, 687, 3, 90, 45, 0, 685, 687, 3, 86, 43, 0, 686, 683, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 686, 685, 1, 0, 0, 0, 687, 81, 1, 0, 0, 0, 688, 689, 5, 25, 0, 0, 689, 690, 3, 174, 87, 0, 690, 691, 5, 60, 0, 0, 691, 699, 3, 96, 48, 0, 692, 693, 5, 17, 0, 0, 693, 694, 3, 174, 87, 0, 694, 695, 5, 60, 0, 0, 695, 696, 3, 96, 48, 0, 696, 698, 1, 0, 0, 0, 697, 692, 1, 0, 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 705, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 18, 0, 0, 703, 704, 5, 60, 0, 0, 704, 706, 3, 96, 48, 0, 705, 702, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 83, 1, 0, 0, 0, 707, 708, 5, 41, 0, 0, 708, 709, 3, 174, 87, 0, 709, 710, 5, 60, 0, 0, 710, 714, 3, 96, 48, 0, 711, 712, 5, 18, 0, 0, 712, 713, 5, 60, 0, 0, 713, 715, 3, 96, 48, 0, 714, 711, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 85, 1, 0, 0, 0, 716, 717, 5, 22, 0, 0, 717, 718, 3, 212, 106, 0, 718, 719, 5, 27, 0, 0, 719, 720, 3, 214, 107, 0, 720, 721, 5, 60, 0, 0, 721, 725, 3, 96, 48, 0, 722, 723, 5, 18, 0, 0, 723, 724, 5, 60, 0, 0, 724, 726, 3, 96, 48, 0, 725, 722, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 87, 1, 0, 0, 0, 727, 728, 5, 39, 0, 0, 728, 729, 5, 60, 0, 0, 729, 751, 3, 96, 48, 0, 730, 731, 3, 94, 47, 0, 731, 732, 5, 60, 0, 0, 732, 733, 3, 96, 48, 0, 733, 735, 1, 0, 0, 0, 734, 730, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 741, 1, 0, 0, 0, 738, 739, 5, 18, 0, 0, 739, 740, 5, 60, 0, 0, 740, 742, 3, 96, 48, 0, 741, 738, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 746, 1, 0, 0, 0, 743, 744, 5, 21, 0, 0, 744, 745, 5, 60, 0, 0, 745, 747, 3, 96, 48, 0, 746, 743, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 752, 1, 0, 0, 0, 748, 749, 5, 21, 0, 0, 749, 750, 5, 60, 0, 0, 750, 752, 3, 96, 48, 0, 751, 734, 1, 0, 0, 0, 751, 748, 1, 0, 0, 0, 752, 89, 1, 0, 0, 0, 753, 754, 5, 42, 0, 0, 754, 759, 3, 92, 46, 0, 755, 756, 5, 59, 0, 0, 756, 758, 3, 92, 46, 0, 757, 755, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762, 763, 5, 60, 0, 0, 763, 764, 3, 96, 48, 0, 764, 91, 1, 0, 0, 0, 765, 768, 3, 174, 87, 0, 766, 767, 5, 7, 0, 0, 767, 769, 3, 194, 97, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 93, 1, 0, 0, 0, 770, 776, 5, 19, 0, 0, 771, 774, 3, 174, 87, 0, 772, 773, 5, 7, 0, 0, 773, 775, 3, 200, 100, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 771, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 95, 1, 0, 0, 0, 778, 789, 3, 28, 14, 0, 779, 780, 5, 44, 0, 0, 780, 782, 5, 1, 0, 0, 781, 783, 3, 26, 13, 0, 782, 781, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 787, 5, 2, 0, 0, 787, 789, 1, 0, 0, 0, 788, 778, 1, 0, 0, 0, 788, 779, 1, 0, 0, 0, 789, 97, 1, 0, 0, 0, 790, 791, 5, 30, 0, 0, 791, 792, 3, 100, 50, 0, 792, 793, 5, 60, 0, 0, 793, 794, 5, 44, 0, 0, 794, 796, 5, 1, 0, 0, 795, 797, 3, 106, 53, 0, 796, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 801, 5, 2, 0, 0, 801, 99, 1, 0, 0, 0, 802, 803, 3, 104, 52, 0, 803, 805, 5, 59, 0, 0, 804, 806, 3, 102, 51, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 809, 1, 0, 0, 0, 807, 809, 3, 174, 87, 0, 808, 802, 1, 0, 0, 0, 808, 807, 1, 0, 0, 0, 809, 101, 1, 0, 0, 0, 810, 812, 5, 59, 0, 0, 811, 813, 3, 104, 52, 0, 812, 811, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 5, 59, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 103, 1, 0, 0, 0, 819, 820, 5, 56, 0, 0, 820, 823, 3, 194, 97, 0, 821, 823, 3, 174, 87, 0, 822, 819, 1, 0, 0, 0, 822, 821, 1, 0, 0, 0, 823, 105, 1, 0, 0, 0, 824, 825, 5, 12, 0, 0, 825, 827, 3, 110, 55, 0, 826, 828, 3, 108, 54, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 5, 60, 0, 0, 830, 831, 3, 96, 48, 0, 831, 107, 1, 0, 0, 0, 832, 833, 5, 25, 0, 0, 833, 834, 3, 174, 87, 0, 834, 109, 1, 0, 0, 0, 835, 838, 3, 150, 75, 0, 836, 838, 3, 112, 56, 0, 837, 835, 1, 0, 0, 0, 837, 836, 1, 0, 0, 0, 838, 111, 1, 0, 0, 0, 839, 842, 3, 114, 57, 0, 840, 842, 3, 116, 58, 0, 841, 839, 1, 0, 0, 0, 841, 840, 1, 0, 0, 0, 842, 113, 1, 0, 0, 0, 843, 844, 3, 116, 58, 0, 844, 845, 5, 7, 0, 0, 845, 846, 3, 136, 68, 0, 846, 115, 1, 0, 0, 0, 847, 852, 3, 118, 59, 0, 848, 849, 5, 66, 0, 0, 849, 851, 3, 118, 59, 0, 850, 848, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 117, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 855, 864, 3, 120, 60, 0, 856, 864, 3, 134, 67, 0, 857, 864, 3, 138, 69, 0, 858, 864, 3, 140, 70, 0, 859, 864, 3, 146, 73, 0, 860, 864, 3, 148, 74, 0, 861, 864, 3, 158, 79, 0, 862, 864, 3, 166, 83, 0, 863, 855, 1, 0, 0, 0, 863, 856, 1, 0, 0, 0, 863, 857, 1, 0, 0, 0, 863, 858, 1, 0, 0, 0, 863, 859, 1, 0, 0, 0, 863, 860, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 863, 862, 1, 0, 0, 0, 864, 119, 1, 0, 0, 0, 865, 866, 3, 126, 63, 0, 866, 867, 4, 60, 0, 0, 867, 874, 1, 0, 0, 0, 868, 874, 3, 124, 62, 0, 869, 874, 3, 236, 118, 0, 870, 874, 5, 31, 0, 0, 871, 874, 5, 38, 0, 0, 872, 874, 5, 20, 0, 0, 873, 865, 1, 0, 0, 0, 873, 868, 1, 0, 0, 0, 873, 869, 1, 0, 0, 0, 873, 870, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 872, 1, 0, 0, 0, 874, 121, 1, 0, 0, 0, 875, 876, 3, 126, 63, 0, 876, 877, 4, 61, 1, 0, 877, 884, 1, 0, 0, 0, 878, 884, 3, 124, 62, 0, 879, 884, 3, 236, 118, 0, 880, 884, 5, 31, 0, 0, 881, 884, 5, 38, 0, 0, 882, 884, 5, 20, 0, 0, 883, 875, 1, 0, 0, 0, 883, 878, 1, 0, 0, 0, 883, 879, 1, 0, 0, 0, 883, 880, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 123, 1, 0, 0, 0, 885, 886, 3, 128, 64, 0, 886, 887, 5, 71, 0, 0, 887, 888, 3, 132, 66, 0, 888, 894, 1, 0, 0, 0, 889, 890, 3, 128, 64, 0, 890, 891, 5, 72, 0, 0, 891, 892, 3, 132, 66, 0, 892, 894, 1, 0, 0, 0, 893, 885, 1, 0, 0, 0, 893, 889, 1, 0, 0, 0, 894, 125, 1, 0, 0, 0, 895, 899, 5, 4, 0, 0, 896, 897, 5, 72, 0, 0, 897, 899, 5, 4, 0, 0, 898, 895, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 127, 1, 0, 0, 0, 900, 904, 3, 130, 65, 0, 901, 902, 5, 72, 0, 0, 902, 904, 3, 130, 65, 0, 903, 900, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 904, 129, 1, 0, 0, 0, 905, 906, 5, 4, 0, 0, 906, 131, 1, 0, 0, 0, 907, 908, 5, 4, 0, 0, 908, 133, 1, 0, 0, 0, 909, 910, 3, 136, 68, 0, 910, 135, 1, 0, 0, 0, 911, 912, 3, 200, 100, 0, 912, 913, 4, 68, 2, 0, 913, 137, 1, 0, 0, 0, 914, 915, 5, 40, 0, 0, 915, 139, 1, 0, 0, 0, 916, 917, 3, 142, 71, 0, 917, 918, 4, 70, 3, 0, 918, 141, 1, 0, 0, 0, 919, 922, 3, 200, 100, 0, 920, 921, 5, 54, 0, 0, 921, 923, 3, 200, 100, 0, 922, 920, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 143, 1, 0, 0, 0, 926, 929, 3, 142, 71, 0, 927, 929, 3, 200, 100, 0, 928, 926, 1, 0, 0, 0, 928, 927, 1, 0, 0, 0, 929, 145, 1, 0, 0, 0, 930, 931, 5, 57, 0, 0, 931, 932, 3, 112, 56, 0, 932, 933, 5, 58, 0, 0, 933, 147, 1, 0, 0, 0, 934, 936, 5, 64, 0, 0, 935, 937, 3, 152, 76, 0, 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 945, 5, 65, 0, 0, 939, 941, 5, 57, 0, 0, 940, 942, 3, 150, 75, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 945, 5, 58, 0, 0, 944, 934, 1, 0, 0, 0, 944, 939, 1, 0, 0, 0, 945, 149, 1, 0, 0, 0, 946, 947, 3, 154, 77, 0, 947, 949, 5, 59, 0, 0, 948, 950, 3, 152, 76, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 151, 1, 0, 0, 0, 951, 956, 3, 154, 77, 0, 952, 953, 5, 59, 0, 0, 953, 955, 3, 154, 77, 0, 954, 952, 1, 0, 0, 0, 955, 958, 1, 0, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 959, 961, 5, 59, 0, 0, 960, 959, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 153, 1, 0, 0, 0, 962, 965, 3, 156, 78, 0, 963, 965, 3, 112, 56, 0, 964, 962, 1, 0, 0, 0, 964, 963, 1, 0, 0, 0, 965, 155, 1, 0, 0, 0, 966, 967, 5, 56, 0, 0, 967, 971, 3, 136, 68, 0, 968, 969, 5, 56, 0, 0, 969, 971, 3, 138, 69, 0, 970, 966, 1, 0, 0, 0, 970, 968, 1, 0, 0, 0, 971, 157, 1, 0, 0, 0, 972, 973, 5, 77, 0, 0, 973, 998, 5, 78, 0, 0, 974, 975, 5, 77, 0, 0, 975, 977, 3, 164, 82, 0, 976, 978, 5, 59, 0, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 5, 78, 0, 0, 980, 998, 1, 0, 0, 0, 981, 982, 5, 77, 0, 0, 982, 983, 3, 160, 80, 0, 983, 984, 5, 59, 0, 0, 984, 986, 3, 164, 82, 0, 985, 987, 5, 59, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 989, 5, 78, 0, 0, 989, 998, 1, 0, 0, 0, 990, 991, 5, 77, 0, 0, 991, 993, 3, 160, 80, 0, 992, 994, 5, 59, 0, 0, 993, 992, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 5, 78, 0, 0, 996, 998, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 974, 1, 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1004, 3, 162, 81, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 162, 81, 0, 1002, 1000, 1, 0, 0, 0, 1003, 1006, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 161, 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1007, 1010, 3, 122, 61, 0, 1008, 1010, 3, 142, 71, 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012, 5, 60, 0, 0, 1012, 1013, 3, 112, 56, 0, 1013, 163, 1, 0, 0, 0, 1014, 1015, 5, 62, 0, 0, 1015, 1016, 3, 136, 68, 0, 1016, 165, 1, 0, 0, 0, 1017, 1018, 3, 144, 72, 0, 1018, 1019, 5, 57, 0, 0, 1019, 1020, 5, 58, 0, 0, 1020, 1048, 1, 0, 0, 0, 1021, 1022, 3, 144, 72, 0, 1022, 1023, 5, 57, 0, 0, 1023, 1025, 3, 168, 84, 0, 1024, 1026, 5, 59, 0, 0, 1025, 1024, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 5, 58, 0, 0, 1028, 1048, 1, 0, 0, 0, 1029, 1030, 3, 144, 72, 0, 1030, 1031, 5, 57, 0, 0, 1031, 1033, 3, 170, 85, 0, 1032, 1034, 5, 59, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 5, 58, 0, 0, 1036, 1048, 1, 0, 0, 0, 1037, 1038, 3, 144, 72, 0, 1038, 1039, 5, 57, 0, 0, 1039, 1040, 3, 168, 84, 0, 1040, 1041, 5, 59, 0, 0, 1041, 1043, 3, 170, 85, 0, 1042, 1044, 5, 59, 0, 0, 1043, 1042, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1046, 5, 58, 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1017, 1, 0, 0, 0, 1047, 1021, 1, 0, 0, 0, 1047, 1029, 1, 0, 0, 0, 1047, 1037, 1, 0, 0, 0, 1048, 167, 1, 0, 0, 0, 1049, 1054, 3, 112, 56, 0, 1050, 1051, 5, 59, 0, 0, 1051, 1053, 3, 112, 56, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1056, 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 169, 1, 0, 0, 0, 1056, 1054, 1, 0, 0, 0, 1057, 1062, 3, 172, 86, 0, 1058, 1059, 5, 59, 0, 0, 1059, 1061, 3, 172, 86, 0, 1060, 1058, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 171, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 3, 200, 100, 0, 1066, 1067, 5, 63, 0, 0, 1067, 1068, 3, 112, 56, 0, 1068, 173, 1, 0, 0, 0, 1069, 1075, 3, 182, 91, 0, 1070, 1071, 5, 25, 0, 0, 1071, 1072, 3, 182, 91, 0, 1072, 1073, 5, 18, 0, 0, 1073, 1074, 3, 174, 87, 0, 1074, 1076, 1, 0, 0, 0, 1075, 1070, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1079, 1, 0, 0, 0, 1077, 1079, 3, 178, 89, 0, 1078, 1069, 1, 0, 0, 0, 1078, 1077, 1, 0, 0, 0, 1079, 175, 1, 0, 0, 0, 1080, 1083, 3, 182, 91, 0, 1081, 1083, 3, 180, 90, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083, 177, 1, 0, 0, 0, 1084, 1086, 5, 29, 0, 0, 1085, 1087, 3, 22, 11, 0, 1086, 1085, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 60, 0, 0, 1089, 1090, 3, 174, 87, 0, 1090, 179, 1, 0, 0, 0, 1091, 1093, 5, 29, 0, 0, 1092, 1094, 3, 22, 11, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1096, 5, 60, 0, 0, 1096, 1097, 3, 176, 88, 0, 1097, 181, 1, 0, 0, 0, 1098, 1103, 3, 184, 92, 0, 1099, 1100, 5, 34, 0, 0, 1100, 1102, 3, 184, 92, 0, 1101, 1099, 1, 0, 0, 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 183, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1111, 3, 186, 93, 0, 1107, 1108, 5, 6, 0, 0, 1108, 1110, 3, 186, 93, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 185, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1115, 5, 33, 0, 0, 1115, 1118, 3, 186, 93, 0, 1116, 1118, 3, 188, 94, 0, 1117, 1114, 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 187, 1, 0, 0, 0, 1119, 1125, 3, 194, 97, 0, 1120, 1121, 3, 190, 95, 0, 1121, 1122, 3, 194, 97, 0, 1122, 1124, 1, 0, 0, 0, 1123, 1120, 1, 0, 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 189, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1142, 5, 79, 0, 0, 1129, 1142, 5, 80, 0, 0, 1130, 1142, 5, 81, 0, 0, 1131, 1142, 5, 82, 0, 0, 1132, 1142, 5, 83, 0, 0, 1133, 1142, 5, 84, 0, 0, 1134, 1142, 5, 85, 0, 0, 1135, 1142, 5, 27, 0, 0, 1136, 1137, 5, 33, 0, 0, 1137, 1142, 5, 27, 0, 0, 1138, 1142, 5, 28, 0, 0, 1139, 1140, 5, 28, 0, 0, 1140, 1142, 5, 33, 0, 0, 1141, 1128, 1, 0, 0, 0, 1141, 1129, 1, 0, 0, 0, 1141, 1130, 1, 0, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1132, 1, 0, 0, 0, 1141, 1133, 1, 0, 0, 0, 1141, 1134, 1, 0, 0, 0, 1141, 1135, 1, 0, 0, 0, 1141, 1136, 1, 0, 0, 0, 1141, 1138, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 191, 1, 0, 0, 0, 1143, 1144, 5, 56, 0, 0, 1144, 1145, 3, 194, 97, 0, 1145, 193, 1, 0, 0, 0, 1146, 1147, 6, 97, -1, 0, 1147, 1155, 3, 196, 98, 0, 1148, 1150, 7, 2, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1155, 3, 194, 97, 7, 1154, 1146, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1155, 1179, 1, 0, 0, 0, 1156, 1157, 10, 8, 0, 0, 1157, 1158, 5, 62, 0, 0, 1158, 1178, 3, 194, 97, 9, 1159, 1160, 10, 6, 0, 0, 1160, 1161, 7, 3, 0, 0, 1161, 1178, 3, 194, 97, 7, 1162, 1163, 10, 5, 0, 0, 1163, 1164, 7, 4, 0, 0, 1164, 1178, 3, 194, 97, 6, 1165, 1166, 10, 4, 0, 0, 1166, 1167, 7, 5, 0, 0, 1167, 1178, 3, 194, 97, 5, 1168, 1169, 10, 3, 0, 0, 1169, 1170, 5, 68, 0, 0, 1170, 1178, 3, 194, 97, 4, 1171, 1172, 10, 2, 0, 0, 1172, 1173, 5, 67, 0, 0, 1173, 1178, 3, 194, 97, 3, 1174, 1175, 10, 1, 0, 0, 1175, 1176, 5, 66, 0, 0, 1176, 1178, 3, 194, 97, 2, 1177, 1156, 1, 0, 0, 0, 1177, 1159, 1, 0, 0, 0, 1177, 1162, 1, 0, 0, 0, 1177, 1165, 1, 0, 0, 0, 1177, 1168, 1, 0, 0, 0, 1177, 1171, 1, 0, 0, 0, 1177, 1174, 1, 0, 0, 0, 1178, 1181, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 195, 1, 0, 0, 0, 1181, 1179, 1, 0, 0, 0, 1182, 1184, 5, 10, 0, 0, 1183, 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1189, 3, 198, 99, 0, 1186, 1188, 3, 204, 102, 0, 1187, 1186, 1, 0, 0, 0, 1188, 1191, 1, 0, 0, 0, 1189, 1187, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 197, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1192, 1195, 5, 57, 0, 0, 1193, 1196, 3, 232, 116, 0, 1194, 1196, 3, 202, 101, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1220, 5, 58, 0, 0, 1198, 1200, 5, 64, 0, 0, 1199, 1201, 3, 202, 101, 0, 1200, 1199, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1220, 5, 65, 0, 0, 1203, 1205, 5, 77, 0, 0, 1204, 1206, 3, 216, 108, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1220, 5, 78, 0, 0, 1208, 1220, 3, 200, 100, 0, 1209, 1220, 5, 4, 0, 0, 1210, 1212, 5, 3, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1220, 1, 0, 0, 0, 1215, 1220, 5, 55, 0, 0, 1216, 1220, 5, 31, 0, 0, 1217, 1220, 5, 38, 0, 0, 1218, 1220, 5, 20, 0, 0, 1219, 1192, 1, 0, 0, 0, 1219, 1198, 1, 0, 0, 0, 1219, 1203, 1, 0, 0, 0, 1219, 1208, 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1211, 1, 0, 0, 0, 1219, 1215, 1, 0, 0, 0, 1219, 1216, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1219, 1218, 1, 0, 0, 0, 1220, 199, 1, 0, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 201, 1, 0, 0, 0, 1223, 1226, 3, 174, 87, 0, 1224, 1226, 3, 192, 96, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 1241, 1, 0, 0, 0, 1227, 1242, 3, 226, 113, 0, 1228, 1231, 5, 59, 0, 0, 1229, 1232, 3, 174, 87, 0, 1230, 1232, 3, 192, 96, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1230, 1, 0, 0, 0, 1232, 1234, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 1237, 1, 0, 0, 0, 1235, 1233, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1239, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1238, 1240, 5, 59, 0, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1227, 1, 0, 0, 0, 1241, 1235, 1, 0, 0, 0, 1242, 203, 1, 0, 0, 0, 1243, 1245, 5, 57, 0, 0, 1244, 1246, 3, 220, 110, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1255, 5, 58, 0, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1250, 3, 206, 103, 0, 1250, 1251, 5, 65, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1253, 5, 54, 0, 0, 1253, 1255, 3, 200, 100, 0, 1254, 1243, 1, 0, 0, 0, 1254, 1248, 1, 0, 0, 0, 1254, 1252, 1, 0, 0, 0, 1255, 205, 1, 0, 0, 0, 1256, 1261, 3, 208, 104, 0, 1257, 1258, 5, 59, 0, 0, 1258, 1260, 3, 208, 104, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264, 1266, 5, 59, 0, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 207, 1, 0, 0, 0, 1267, 1279, 3, 174, 87, 0, 1268, 1270, 3, 174, 87, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 5, 60, 0, 0, 1272, 1274, 3, 174, 87, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 3, 210, 105, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, 0, 0, 0, 1278, 1267, 1, 0, 0, 0, 1278, 1269, 1, 0, 0, 0, 1279, 209, 1, 0, 0, 0, 1280, 1282, 5, 60, 0, 0, 1281, 1283, 3, 174, 87, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 211, 1, 0, 0, 0, 1284, 1287, 3, 194, 97, 0, 1285, 1287, 3, 192, 96, 0, 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1295, 1, 0, 0, 0, 1288, 1291, 5, 59, 0, 0, 1289, 1292, 3, 194, 97, 0, 1290, 1292, 3, 192, 96, 0, 1291, 1289, 1, 0, 0, 0, 1291, 1290, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1288, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1300, 5, 59, 0, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 213, 1, 0, 0, 0, 1301, 1306, 3, 174, 87, 0, 1302, 1303, 5, 59, 0, 0, 1303, 1305, 3, 174, 87, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1310, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1311, 5, 59, 0, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 215, 1, 0, 0, 0, 1312, 1313, 3, 174, 87, 0, 1313, 1314, 5, 60, 0, 0, 1314, 1315, 3, 174, 87, 0, 1315, 1319, 1, 0, 0, 0, 1316, 1317, 5, 62, 0, 0, 1317, 1319, 3, 194, 97, 0, 1318, 1312, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1319, 1338, 1, 0, 0, 0, 1320, 1339, 3, 226, 113, 0, 1321, 1328, 5, 59, 0, 0, 1322, 1323, 3, 174, 87, 0, 1323, 1324, 5, 60, 0, 0, 1324, 1325, 3, 174, 87, 0, 1325, 1329, 1, 0, 0, 0, 1326, 1327, 5, 62, 0, 0, 1327, 1329, 3, 194, 97, 0, 1328, 1322, 1, 0, 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, 1321, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1337, 5, 59, 0, 0, 1336, 1335, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 1, 0, 0, 0, 1338, 1320, 1, 0, 0, 0, 1338, 1332, 1, 0, 0, 0, 1339, 1361, 1, 0, 0, 0, 1340, 1343, 3, 174, 87, 0, 1341, 1343, 3, 192, 96, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344, 1359, 3, 226, 113, 0, 1345, 1348, 5, 59, 0, 0, 1346, 1349, 3, 174, 87, 0, 1347, 1349, 3, 192, 96, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1347, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1345, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1357, 5, 59, 0, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1344, 1, 0, 0, 0, 1358, 1352, 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1318, 1, 0, 0, 0, 1360, 1342, 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1363, 5, 13, 0, 0, 1363, 1369, 3, 200, 100, 0, 1364, 1366, 5, 57, 0, 0, 1365, 1367, 3, 220, 110, 0, 1366, 1365, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 58, 0, 0, 1369, 1364, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 60, 0, 0, 1372, 1373, 3, 96, 48, 0, 1373, 219, 1, 0, 0, 0, 1374, 1379, 3, 222, 111, 0, 1375, 1376, 5, 59, 0, 0, 1376, 1378, 3, 222, 111, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1381, 1, 0, 0, 0, 1379, 1377, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1379, 1, 0, 0, 0, 1382, 1384, 5, 59, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 221, 1, 0, 0, 0, 1385, 1387, 3, 174, 87, 0, 1386, 1388, 3, 226, 113, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1398, 1, 0, 0, 0, 1389, 1390, 3, 174, 87, 0, 1390, 1391, 5, 63, 0, 0, 1391, 1392, 3, 174, 87, 0, 1392, 1398, 1, 0, 0, 0, 1393, 1394, 5, 62, 0, 0, 1394, 1398, 3, 174, 87, 0, 1395, 1396, 5, 56, 0, 0, 1396, 1398, 3, 174, 87, 0, 1397, 1385, 1, 0, 0, 0, 1397, 1389, 1, 0, 0, 0, 1397, 1393, 1, 0, 0, 0, 1397, 1395, 1, 0, 0, 0, 1398, 223, 1, 0, 0, 0, 1399, 1402, 3, 226, 113, 0, 1400, 1402, 3, 228, 114, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1400, 1, 0, 0, 0, 1402, 225, 1, 0, 0, 0, 1403, 1405, 5, 9, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1407, 5, 22, 0, 0, 1407, 1408, 3, 212, 106, 0, 1408, 1409, 5, 27, 0, 0, 1409, 1411, 3, 182, 91, 0, 1410, 1412, 3, 224, 112, 0, 1411, 1410, 1, 0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 227, 1, 0, 0, 0, 1413, 1414, 5, 25, 0, 0, 1414, 1416, 3, 176, 88, 0, 1415, 1417, 3, 224, 112, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 229, 1, 0, 0, 0, 1418, 1419, 3, 200, 100, 0, 1419, 231, 1, 0, 0, 0, 1420, 1422, 5, 43, 0, 0, 1421, 1423, 3, 234, 117, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 233, 1, 0, 0, 0, 1424, 1425, 5, 23, 0, 0, 1425, 1428, 3, 174, 87, 0, 1426, 1428, 3, 214, 107, 0, 1427, 1424, 1, 0, 0, 0, 1427, 1426, 1, 0, 0, 0, 1428, 235, 1, 0, 0, 0, 1429, 1431, 5, 3, 0, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 237, 1, 0, 0, 0, 201, 243, 247, 249, 258, 267, 270, 277, 283, 293, 300, 307, 313, 317, 323, 329, 333, 340, 342, 344, 349, 351, 353, 357, 363, 367, 374, 376, 378, 383, 385, 390, 395, 401, 405, 411, 417, 421, 428, 430, 432, 437, 439, 441, 445, 451, 455, 462, 464, 466, 471, 473, 479, 486, 490, 502, 509, 514, 518, 521, 527, 531, 536, 540, 544, 558, 566, 574, 576, 580, 589, 596, 598, 607, 612, 617, 624, 628, 635, 643, 652, 661, 668, 680, 686, 699, 705, 714, 725, 736, 741, 746, 751, 759, 768, 774, 776, 784, 788, 798, 805, 808, 814, 817, 822, 827, 837, 841, 852, 863, 873, 883, 893, 898, 903, 924, 928, 936, 941, 944, 949, 956, 960, 964, 970, 977, 986, 993, 997, 1004, 1009, 1025, 1033, 1043, 1047, 1054, 1062, 1075, 1078, 1082, 1086, 1093, 1103, 1111, 1117, 1125, 1141, 1151, 1154, 1177, 1179, 1183, 1189, 1195, 1200, 1205, 1213, 1219, 1225, 1231, 1235, 1239, 1241, 1245, 1254, 1261, 1265, 1269, 1273, 1276, 1278, 1282, 1286, 1291, 1295, 1299, 1306, 1310, 1318, 1328, 1332, 1336, 1338, 1342, 1348, 1352, 1356, 1358, 1360, 1366, 1369, 1379, 1383, 1387, 1397, 1401, 1404, 1411, 1416, 1422, 1427, 1432] \ No newline at end of file diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.tokens b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.tokens new file mode 100644 index 0000000..3e1c535 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.tokens @@ -0,0 +1,187 @@ +INDENT=1 +DEDENT=2 +STRING=3 +NUMBER=4 +INTEGER=5 +AND=6 +AS=7 +ASSERT=8 +ASYNC=9 +AWAIT=10 +BREAK=11 +CASE=12 +CLASS=13 +CONTINUE=14 +DEF=15 +DEL=16 +ELIF=17 +ELSE=18 +EXCEPT=19 +FALSE=20 +FINALLY=21 +FOR=22 +FROM=23 +GLOBAL=24 +IF=25 +IMPORT=26 +IN=27 +IS=28 +LAMBDA=29 +MATCH=30 +NONE=31 +NONLOCAL=32 +NOT=33 +OR=34 +PASS=35 +RAISE=36 +RETURN=37 +TRUE=38 +TRY=39 +UNDERSCORE=40 +WHILE=41 +WITH=42 +YIELD=43 +NEWLINE=44 +NAME=45 +STRING_LITERAL=46 +BYTES_LITERAL=47 +DECIMAL_INTEGER=48 +OCT_INTEGER=49 +HEX_INTEGER=50 +BIN_INTEGER=51 +FLOAT_NUMBER=52 +IMAG_NUMBER=53 +DOT=54 +ELLIPSIS=55 +STAR=56 +OPEN_PAREN=57 +CLOSE_PAREN=58 +COMMA=59 +COLON=60 +SEMI_COLON=61 +POWER=62 +ASSIGN=63 +OPEN_BRACK=64 +CLOSE_BRACK=65 +OR_OP=66 +XOR=67 +AND_OP=68 +LEFT_SHIFT=69 +RIGHT_SHIFT=70 +ADD=71 +MINUS=72 +DIV=73 +MOD=74 +IDIV=75 +NOT_OP=76 +OPEN_BRACE=77 +CLOSE_BRACE=78 +LESS_THAN=79 +GREATER_THAN=80 +EQUALS=81 +GT_EQ=82 +LT_EQ=83 +NOT_EQ_1=84 +NOT_EQ_2=85 +AT=86 +ARROW=87 +ADD_ASSIGN=88 +SUB_ASSIGN=89 +MULT_ASSIGN=90 +AT_ASSIGN=91 +DIV_ASSIGN=92 +MOD_ASSIGN=93 +AND_ASSIGN=94 +OR_ASSIGN=95 +XOR_ASSIGN=96 +LEFT_SHIFT_ASSIGN=97 +RIGHT_SHIFT_ASSIGN=98 +POWER_ASSIGN=99 +IDIV_ASSIGN=100 +SKIP_=101 +UNKNOWN_CHAR=102 +'and'=6 +'as'=7 +'assert'=8 +'async'=9 +'await'=10 +'break'=11 +'case'=12 +'class'=13 +'continue'=14 +'def'=15 +'del'=16 +'elif'=17 +'else'=18 +'except'=19 +'False'=20 +'finally'=21 +'for'=22 +'from'=23 +'global'=24 +'if'=25 +'import'=26 +'in'=27 +'is'=28 +'lambda'=29 +'match'=30 +'None'=31 +'nonlocal'=32 +'not'=33 +'or'=34 +'pass'=35 +'raise'=36 +'return'=37 +'True'=38 +'try'=39 +'_'=40 +'while'=41 +'with'=42 +'yield'=43 +'.'=54 +'...'=55 +'*'=56 +'('=57 +')'=58 +','=59 +':'=60 +';'=61 +'**'=62 +'='=63 +'['=64 +']'=65 +'|'=66 +'^'=67 +'&'=68 +'<<'=69 +'>>'=70 +'+'=71 +'-'=72 +'/'=73 +'%'=74 +'//'=75 +'~'=76 +'{'=77 +'}'=78 +'<'=79 +'>'=80 +'=='=81 +'>='=82 +'<='=83 +'<>'=84 +'!='=85 +'@'=86 +'->'=87 +'+='=88 +'-='=89 +'*='=90 +'@='=91 +'/='=92 +'%='=93 +'&='=94 +'|='=95 +'^='=96 +'<<='=97 +'>>='=98 +'**='=99 +'//='=100 diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs new file mode 100644 index 0000000..51af6c3 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs @@ -0,0 +1,1228 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.2 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from Python3Parser.g4 by ANTLR 4.13.2 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; + +/// +/// This class provides an empty implementation of , +/// which can be extended to create a visitor which only needs to handle a subset +/// of the available methods. +/// +/// The return type of the visit operation. +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")] +[System.Diagnostics.DebuggerNonUserCode] +[System.CLSCompliant(false)] +public partial class Python3ParserBaseVisitor : AbstractParseTreeVisitor, IPython3ParserVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSingle_input([NotNull] Python3Parser.Single_inputContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFile_input([NotNull] Python3Parser.File_inputContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEval_input([NotNull] Python3Parser.Eval_inputContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDecorator([NotNull] Python3Parser.DecoratorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDecorators([NotNull] Python3Parser.DecoratorsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDecorated([NotNull] Python3Parser.DecoratedContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAsync_funcdef([NotNull] Python3Parser.Async_funcdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFuncdef([NotNull] Python3Parser.FuncdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitParameters([NotNull] Python3Parser.ParametersContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypedargslist([NotNull] Python3Parser.TypedargslistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTfpdef([NotNull] Python3Parser.TfpdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVarargslist([NotNull] Python3Parser.VarargslistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVfpdef([NotNull] Python3Parser.VfpdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStmt([NotNull] Python3Parser.StmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSimple_stmts([NotNull] Python3Parser.Simple_stmtsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSimple_stmt([NotNull] Python3Parser.Simple_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExpr_stmt([NotNull] Python3Parser.Expr_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAnnassign([NotNull] Python3Parser.AnnassignContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTestlist_star_expr([NotNull] Python3Parser.Testlist_star_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAugassign([NotNull] Python3Parser.AugassignContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDel_stmt([NotNull] Python3Parser.Del_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPass_stmt([NotNull] Python3Parser.Pass_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFlow_stmt([NotNull] Python3Parser.Flow_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBreak_stmt([NotNull] Python3Parser.Break_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitContinue_stmt([NotNull] Python3Parser.Continue_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitReturn_stmt([NotNull] Python3Parser.Return_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitYield_stmt([NotNull] Python3Parser.Yield_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitRaise_stmt([NotNull] Python3Parser.Raise_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImport_stmt([NotNull] Python3Parser.Import_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImport_name([NotNull] Python3Parser.Import_nameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImport_from([NotNull] Python3Parser.Import_fromContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImport_as_name([NotNull] Python3Parser.Import_as_nameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDotted_as_name([NotNull] Python3Parser.Dotted_as_nameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImport_as_names([NotNull] Python3Parser.Import_as_namesContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDotted_as_names([NotNull] Python3Parser.Dotted_as_namesContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDotted_name([NotNull] Python3Parser.Dotted_nameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGlobal_stmt([NotNull] Python3Parser.Global_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNonlocal_stmt([NotNull] Python3Parser.Nonlocal_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssert_stmt([NotNull] Python3Parser.Assert_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCompound_stmt([NotNull] Python3Parser.Compound_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAsync_stmt([NotNull] Python3Parser.Async_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitIf_stmt([NotNull] Python3Parser.If_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitWhile_stmt([NotNull] Python3Parser.While_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFor_stmt([NotNull] Python3Parser.For_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTry_stmt([NotNull] Python3Parser.Try_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitWith_stmt([NotNull] Python3Parser.With_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitWith_item([NotNull] Python3Parser.With_itemContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExcept_clause([NotNull] Python3Parser.Except_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBlock([NotNull] Python3Parser.BlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMatch_stmt([NotNull] Python3Parser.Match_stmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubject_expr([NotNull] Python3Parser.Subject_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStar_named_expressions([NotNull] Python3Parser.Star_named_expressionsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStar_named_expression([NotNull] Python3Parser.Star_named_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCase_block([NotNull] Python3Parser.Case_blockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGuard([NotNull] Python3Parser.GuardContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPatterns([NotNull] Python3Parser.PatternsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPattern([NotNull] Python3Parser.PatternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAs_pattern([NotNull] Python3Parser.As_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOr_pattern([NotNull] Python3Parser.Or_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClosed_pattern([NotNull] Python3Parser.Closed_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLiteral_pattern([NotNull] Python3Parser.Literal_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLiteral_expr([NotNull] Python3Parser.Literal_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComplex_number([NotNull] Python3Parser.Complex_numberContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSigned_number([NotNull] Python3Parser.Signed_numberContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSigned_real_number([NotNull] Python3Parser.Signed_real_numberContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitReal_number([NotNull] Python3Parser.Real_numberContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImaginary_number([NotNull] Python3Parser.Imaginary_numberContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCapture_pattern([NotNull] Python3Parser.Capture_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPattern_capture_target([NotNull] Python3Parser.Pattern_capture_targetContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitWildcard_pattern([NotNull] Python3Parser.Wildcard_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitValue_pattern([NotNull] Python3Parser.Value_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAttr([NotNull] Python3Parser.AttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitName_or_attr([NotNull] Python3Parser.Name_or_attrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGroup_pattern([NotNull] Python3Parser.Group_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSequence_pattern([NotNull] Python3Parser.Sequence_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOpen_sequence_pattern([NotNull] Python3Parser.Open_sequence_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMaybe_sequence_pattern([NotNull] Python3Parser.Maybe_sequence_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMaybe_star_pattern([NotNull] Python3Parser.Maybe_star_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStar_pattern([NotNull] Python3Parser.Star_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMapping_pattern([NotNull] Python3Parser.Mapping_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitItems_pattern([NotNull] Python3Parser.Items_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitKey_value_pattern([NotNull] Python3Parser.Key_value_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDouble_star_pattern([NotNull] Python3Parser.Double_star_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClass_pattern([NotNull] Python3Parser.Class_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPositional_patterns([NotNull] Python3Parser.Positional_patternsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitKeyword_patterns([NotNull] Python3Parser.Keyword_patternsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitKeyword_pattern([NotNull] Python3Parser.Keyword_patternContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTest([NotNull] Python3Parser.TestContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTest_nocond([NotNull] Python3Parser.Test_nocondContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLambdef([NotNull] Python3Parser.LambdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLambdef_nocond([NotNull] Python3Parser.Lambdef_nocondContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOr_test([NotNull] Python3Parser.Or_testContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAnd_test([NotNull] Python3Parser.And_testContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNot_test([NotNull] Python3Parser.Not_testContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComparison([NotNull] Python3Parser.ComparisonContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComp_op([NotNull] Python3Parser.Comp_opContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStar_expr([NotNull] Python3Parser.Star_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExpr([NotNull] Python3Parser.ExprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAtom_expr([NotNull] Python3Parser.Atom_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAtom([NotNull] Python3Parser.AtomContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitName([NotNull] Python3Parser.NameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTestlist_comp([NotNull] Python3Parser.Testlist_compContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTrailer([NotNull] Python3Parser.TrailerContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubscriptlist([NotNull] Python3Parser.SubscriptlistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubscript_([NotNull] Python3Parser.Subscript_Context context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSliceop([NotNull] Python3Parser.SliceopContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExprlist([NotNull] Python3Parser.ExprlistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTestlist([NotNull] Python3Parser.TestlistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDictorsetmaker([NotNull] Python3Parser.DictorsetmakerContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassdef([NotNull] Python3Parser.ClassdefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArglist([NotNull] Python3Parser.ArglistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArgument([NotNull] Python3Parser.ArgumentContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComp_iter([NotNull] Python3Parser.Comp_iterContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComp_for([NotNull] Python3Parser.Comp_forContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComp_if([NotNull] Python3Parser.Comp_ifContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEncoding_decl([NotNull] Python3Parser.Encoding_declContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitYield_expr([NotNull] Python3Parser.Yield_exprContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitYield_arg([NotNull] Python3Parser.Yield_argContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStrings([NotNull] Python3Parser.StringsContext context) { return VisitChildren(context); } +} + diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs new file mode 100644 index 0000000..7a9aa3c --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs @@ -0,0 +1,749 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.2 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from Python3Parser.g4 by ANTLR 4.13.2 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; + +/// +/// This interface defines a complete generic visitor for a parse tree produced +/// by . +/// +/// The return type of the visit operation. +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")] +[System.CLSCompliant(false)] +public interface IPython3ParserVisitor : IParseTreeVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSingle_input([NotNull] Python3Parser.Single_inputContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFile_input([NotNull] Python3Parser.File_inputContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEval_input([NotNull] Python3Parser.Eval_inputContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDecorator([NotNull] Python3Parser.DecoratorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDecorators([NotNull] Python3Parser.DecoratorsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDecorated([NotNull] Python3Parser.DecoratedContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAsync_funcdef([NotNull] Python3Parser.Async_funcdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFuncdef([NotNull] Python3Parser.FuncdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitParameters([NotNull] Python3Parser.ParametersContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypedargslist([NotNull] Python3Parser.TypedargslistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTfpdef([NotNull] Python3Parser.TfpdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVarargslist([NotNull] Python3Parser.VarargslistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVfpdef([NotNull] Python3Parser.VfpdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStmt([NotNull] Python3Parser.StmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSimple_stmts([NotNull] Python3Parser.Simple_stmtsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSimple_stmt([NotNull] Python3Parser.Simple_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExpr_stmt([NotNull] Python3Parser.Expr_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAnnassign([NotNull] Python3Parser.AnnassignContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTestlist_star_expr([NotNull] Python3Parser.Testlist_star_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAugassign([NotNull] Python3Parser.AugassignContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDel_stmt([NotNull] Python3Parser.Del_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPass_stmt([NotNull] Python3Parser.Pass_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFlow_stmt([NotNull] Python3Parser.Flow_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBreak_stmt([NotNull] Python3Parser.Break_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitContinue_stmt([NotNull] Python3Parser.Continue_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitReturn_stmt([NotNull] Python3Parser.Return_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitYield_stmt([NotNull] Python3Parser.Yield_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitRaise_stmt([NotNull] Python3Parser.Raise_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImport_stmt([NotNull] Python3Parser.Import_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImport_name([NotNull] Python3Parser.Import_nameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImport_from([NotNull] Python3Parser.Import_fromContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImport_as_name([NotNull] Python3Parser.Import_as_nameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDotted_as_name([NotNull] Python3Parser.Dotted_as_nameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImport_as_names([NotNull] Python3Parser.Import_as_namesContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDotted_as_names([NotNull] Python3Parser.Dotted_as_namesContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDotted_name([NotNull] Python3Parser.Dotted_nameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGlobal_stmt([NotNull] Python3Parser.Global_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNonlocal_stmt([NotNull] Python3Parser.Nonlocal_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssert_stmt([NotNull] Python3Parser.Assert_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCompound_stmt([NotNull] Python3Parser.Compound_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAsync_stmt([NotNull] Python3Parser.Async_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitIf_stmt([NotNull] Python3Parser.If_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitWhile_stmt([NotNull] Python3Parser.While_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFor_stmt([NotNull] Python3Parser.For_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTry_stmt([NotNull] Python3Parser.Try_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitWith_stmt([NotNull] Python3Parser.With_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitWith_item([NotNull] Python3Parser.With_itemContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExcept_clause([NotNull] Python3Parser.Except_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBlock([NotNull] Python3Parser.BlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMatch_stmt([NotNull] Python3Parser.Match_stmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubject_expr([NotNull] Python3Parser.Subject_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStar_named_expressions([NotNull] Python3Parser.Star_named_expressionsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStar_named_expression([NotNull] Python3Parser.Star_named_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCase_block([NotNull] Python3Parser.Case_blockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGuard([NotNull] Python3Parser.GuardContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPatterns([NotNull] Python3Parser.PatternsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPattern([NotNull] Python3Parser.PatternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAs_pattern([NotNull] Python3Parser.As_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOr_pattern([NotNull] Python3Parser.Or_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClosed_pattern([NotNull] Python3Parser.Closed_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLiteral_pattern([NotNull] Python3Parser.Literal_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLiteral_expr([NotNull] Python3Parser.Literal_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComplex_number([NotNull] Python3Parser.Complex_numberContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSigned_number([NotNull] Python3Parser.Signed_numberContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSigned_real_number([NotNull] Python3Parser.Signed_real_numberContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitReal_number([NotNull] Python3Parser.Real_numberContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImaginary_number([NotNull] Python3Parser.Imaginary_numberContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCapture_pattern([NotNull] Python3Parser.Capture_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPattern_capture_target([NotNull] Python3Parser.Pattern_capture_targetContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitWildcard_pattern([NotNull] Python3Parser.Wildcard_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitValue_pattern([NotNull] Python3Parser.Value_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAttr([NotNull] Python3Parser.AttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitName_or_attr([NotNull] Python3Parser.Name_or_attrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGroup_pattern([NotNull] Python3Parser.Group_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSequence_pattern([NotNull] Python3Parser.Sequence_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOpen_sequence_pattern([NotNull] Python3Parser.Open_sequence_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMaybe_sequence_pattern([NotNull] Python3Parser.Maybe_sequence_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMaybe_star_pattern([NotNull] Python3Parser.Maybe_star_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStar_pattern([NotNull] Python3Parser.Star_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMapping_pattern([NotNull] Python3Parser.Mapping_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitItems_pattern([NotNull] Python3Parser.Items_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitKey_value_pattern([NotNull] Python3Parser.Key_value_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDouble_star_pattern([NotNull] Python3Parser.Double_star_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClass_pattern([NotNull] Python3Parser.Class_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPositional_patterns([NotNull] Python3Parser.Positional_patternsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitKeyword_patterns([NotNull] Python3Parser.Keyword_patternsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitKeyword_pattern([NotNull] Python3Parser.Keyword_patternContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTest([NotNull] Python3Parser.TestContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTest_nocond([NotNull] Python3Parser.Test_nocondContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLambdef([NotNull] Python3Parser.LambdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLambdef_nocond([NotNull] Python3Parser.Lambdef_nocondContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOr_test([NotNull] Python3Parser.Or_testContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAnd_test([NotNull] Python3Parser.And_testContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNot_test([NotNull] Python3Parser.Not_testContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComparison([NotNull] Python3Parser.ComparisonContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComp_op([NotNull] Python3Parser.Comp_opContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStar_expr([NotNull] Python3Parser.Star_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExpr([NotNull] Python3Parser.ExprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAtom_expr([NotNull] Python3Parser.Atom_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAtom([NotNull] Python3Parser.AtomContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitName([NotNull] Python3Parser.NameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTestlist_comp([NotNull] Python3Parser.Testlist_compContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTrailer([NotNull] Python3Parser.TrailerContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubscriptlist([NotNull] Python3Parser.SubscriptlistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubscript_([NotNull] Python3Parser.Subscript_Context context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSliceop([NotNull] Python3Parser.SliceopContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExprlist([NotNull] Python3Parser.ExprlistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTestlist([NotNull] Python3Parser.TestlistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDictorsetmaker([NotNull] Python3Parser.DictorsetmakerContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassdef([NotNull] Python3Parser.ClassdefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitArglist([NotNull] Python3Parser.ArglistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitArgument([NotNull] Python3Parser.ArgumentContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComp_iter([NotNull] Python3Parser.Comp_iterContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComp_for([NotNull] Python3Parser.Comp_forContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComp_if([NotNull] Python3Parser.Comp_ifContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEncoding_decl([NotNull] Python3Parser.Encoding_declContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitYield_expr([NotNull] Python3Parser.Yield_exprContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitYield_arg([NotNull] Python3Parser.Yield_argContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStrings([NotNull] Python3Parser.StringsContext context); +} + From 47c87e716a80ff73821cff91a9d2cf742dbfa0c3 Mon Sep 17 00:00:00 2001 From: Svetozar Ikovic Date: Tue, 31 Mar 2026 08:40:13 +0200 Subject: [PATCH 3/5] Wrap Linvast Python files with #nullable disable --- LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs | 3 +++ LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs | 3 +++ LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs | 3 +++ LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs | 3 +++ .../Builders/Python/ANTLR/Python3ParserBaseVisitor.cs | 3 +++ .../Builders/Python/ANTLR/Python3ParserVisitor.cs | 3 +++ 6 files changed, 18 insertions(+) diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs index 96dfc88..7395ea6 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -695,3 +697,4 @@ private bool NEWLINE_sempred(RuleContext _localctx, int predIndex) { } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs index 83e853a..ad3cacd 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { using Antlr4.Runtime; using System.Collections.Generic; using System; @@ -172,3 +174,4 @@ public override void Reset() base.Reset(); } } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs index 0cc42c3..bbf3a0a 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -10332,3 +10334,4 @@ private bool expr_sempred(ExprContext _localctx, int predIndex) { } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs index 1d814e3..4855ffb 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBase.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { using System; using System.Collections.Generic; using System.IO; @@ -26,3 +28,4 @@ public bool CannotBeDotLpEq() } } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs index 51af6c3..37187d9 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserBaseVisitor.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -1226,3 +1228,4 @@ public partial class Python3ParserBaseVisitor : AbstractParseTreeVisitor public virtual Result VisitStrings([NotNull] Python3Parser.StringsContext context) { return VisitChildren(context); } } +} diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs index 7a9aa3c..1c83bcc 100644 --- a/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs +++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3ParserVisitor.cs @@ -1,3 +1,5 @@ +#nullable disable +namespace LINVAST.Imperative.Builders.Python { //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -747,3 +749,4 @@ public interface IPython3ParserVisitor : IParseTreeVisitor { Result VisitStrings([NotNull] Python3Parser.StringsContext context); } +} From 0ff6ea568d6d3fff48fbf0bff7b0588104f4271a Mon Sep 17 00:00:00 2001 From: Svetozar Ikovic Date: Tue, 31 Mar 2026 08:49:47 +0200 Subject: [PATCH 4/5] Implement PythonASTBuilder using GoASTBuilder as template --- .../Builders/Python/PythonASTBuilder.cs | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.cs diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.cs new file mode 100644 index 0000000..cffa30b --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.cs @@ -0,0 +1,67 @@ +using System; +using System.Linq; +using Antlr4.Runtime; +using Antlr4.Runtime.Tree; +using LINVAST.Builders; +using LINVAST.Exceptions; +using LINVAST.Imperative.Nodes; +using LINVAST.Logging; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + [ASTBuilder(".py")] + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + public ASTNode BuildFromSource(string code) => this.Visit(this.CreateParser(code).file_input()); + + public Python3Parser CreateParser(string code) + { + ICharStream stream = CharStreams.fromstring(code); + var lexer = new Python3Lexer(stream); + lexer.AddErrorListener(new ThrowExceptionErrorListener()); + ITokenStream tokens = new CommonTokenStream(lexer); + var parser = new Python3Parser(tokens); + parser.RemoveErrorListeners(); + parser.AddErrorListener(new ThrowExceptionErrorListener()); + return parser; + } + + public ASTNode BuildFromSource(string code, Func entryProvider) => + this.Visit(entryProvider(this.CreateParser(code))); + + public override ASTNode Visit(IParseTree tree) + { + LogObj.Visit(tree as ParserRuleContext); + try { + return base.Visit(tree); + } catch (NullReferenceException e) { + throw new SyntaxErrorException("Source file contained unexpected content", e); + } + } + + public override ASTNode VisitFile_input(Python3Parser.File_inputContext ctx) + { + var children = ctx.stmt().Select(this.Visit); + return new SourceNode(children); + } + + public override ASTNode VisitStmt(Python3Parser.StmtContext ctx) + { + if (ctx.simple_stmts() is not null) + return this.Visit(ctx.simple_stmts()); + return this.Visit(ctx.compound_stmt()); + } + + public override ASTNode VisitSimple_stmts(Python3Parser.Simple_stmtsContext ctx) + { + var stmts = ctx.simple_stmt().Select(this.Visit).ToArray(); + if (stmts.Length == 1) + return stmts[0]; + return new BlockStatNode(ctx.Start.Line, stmts); + } + + public override ASTNode VisitSimple_stmt(Python3Parser.Simple_stmtContext ctx) => + this.Visit(ctx.children.Single(c => c is ParserRuleContext)); + } +} From 27ef4fd65fb2d3f61510f15f41a25c4655eba698 Mon Sep 17 00:00:00 2001 From: Svetozar Ikovic Date: Tue, 31 Mar 2026 08:58:37 +0200 Subject: [PATCH 5/5] Add stubs for all PythonASTBuilder methods --- .../Python/PythonASTBuilder.Declarations.cs | 66 +++++ .../Python/PythonASTBuilder.Expressions.cs | 126 ++++++++++ .../Python/PythonASTBuilder.Functions.cs | 58 +++++ .../Python/PythonASTBuilder.Statements.cs | 234 ++++++++++++++++++ .../Builders/Python/PythonASTBuilder.Types.cs | 14 ++ 5 files changed, 498 insertions(+) create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.Declarations.cs create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.Expressions.cs create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.Functions.cs create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.Statements.cs create mode 100644 LINVAST.Imperative/Builders/Python/PythonASTBuilder.Types.cs diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Declarations.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Declarations.cs new file mode 100644 index 0000000..b455271 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Declarations.cs @@ -0,0 +1,66 @@ +using System; +using LINVAST.Builders; +using LINVAST.Imperative.Nodes; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + // import_stmt: import_name | import_from + public override ASTNode VisitImport_stmt(Python3Parser.Import_stmtContext ctx) => + throw new NotImplementedException("import_stmt"); + + // import_name: 'import' dotted_as_names + public override ASTNode VisitImport_name(Python3Parser.Import_nameContext ctx) => + throw new NotImplementedException("import_name"); + + // import_from: 'from' ... 'import' ... + public override ASTNode VisitImport_from(Python3Parser.Import_fromContext ctx) => + throw new NotImplementedException("import_from"); + + // import_as_name: name ('as' name)? + public override ASTNode VisitImport_as_name(Python3Parser.Import_as_nameContext ctx) => + throw new NotImplementedException("import_as_name"); + + // dotted_as_name: dotted_name ('as' name)? + public override ASTNode VisitDotted_as_name(Python3Parser.Dotted_as_nameContext ctx) => + throw new NotImplementedException("dotted_as_name"); + + // import_as_names: import_as_name (',' import_as_name)* ','? + public override ASTNode VisitImport_as_names(Python3Parser.Import_as_namesContext ctx) => + throw new NotImplementedException("import_as_names"); + + // dotted_as_names: dotted_as_name (',' dotted_as_name)* + public override ASTNode VisitDotted_as_names(Python3Parser.Dotted_as_namesContext ctx) => + throw new NotImplementedException("dotted_as_names"); + + // dotted_name: name ('.' name)* + public override ASTNode VisitDotted_name(Python3Parser.Dotted_nameContext ctx) => + throw new NotImplementedException("dotted_name"); + + // expr_stmt: testlist_star_expr (annassign | augassign ... | ('=' ...)*) + public override ASTNode VisitExpr_stmt(Python3Parser.Expr_stmtContext ctx) => + throw new NotImplementedException("expr_stmt"); + + // annassign: ':' test ('=' test)? + public override ASTNode VisitAnnassign(Python3Parser.AnnassignContext ctx) => + throw new NotImplementedException("annassign"); + + // augassign: '+=' | '-=' | '*=' | ... + public override ASTNode VisitAugassign(Python3Parser.AugassignContext ctx) => + throw new NotImplementedException("augassign"); + + // del_stmt: 'del' exprlist + public override ASTNode VisitDel_stmt(Python3Parser.Del_stmtContext ctx) => + throw new NotImplementedException("del_stmt"); + + // global_stmt: 'global' name (',' name)* + public override ASTNode VisitGlobal_stmt(Python3Parser.Global_stmtContext ctx) => + throw new NotImplementedException("global_stmt"); + + // nonlocal_stmt: 'nonlocal' name (',' name)* + public override ASTNode VisitNonlocal_stmt(Python3Parser.Nonlocal_stmtContext ctx) => + throw new NotImplementedException("nonlocal_stmt"); + } +} diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Expressions.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Expressions.cs new file mode 100644 index 0000000..5cc13f1 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Expressions.cs @@ -0,0 +1,126 @@ +using System; +using LINVAST.Builders; +using LINVAST.Imperative.Nodes; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + // test: or_test ('if' or_test 'else' test)? | lambdef + public override ASTNode VisitTest(Python3Parser.TestContext ctx) => + throw new NotImplementedException("test"); + + // test_nocond: or_test | lambdef_nocond + public override ASTNode VisitTest_nocond(Python3Parser.Test_nocondContext ctx) => + throw new NotImplementedException("test_nocond"); + + // or_test: and_test ('or' and_test)* + public override ASTNode VisitOr_test(Python3Parser.Or_testContext ctx) => + throw new NotImplementedException("or_test"); + + // and_test: not_test ('and' not_test)* + public override ASTNode VisitAnd_test(Python3Parser.And_testContext ctx) => + throw new NotImplementedException("and_test"); + + // not_test: 'not' not_test | comparison + public override ASTNode VisitNot_test(Python3Parser.Not_testContext ctx) => + throw new NotImplementedException("not_test"); + + // comparison: expr (comp_op expr)* + public override ASTNode VisitComparison(Python3Parser.ComparisonContext ctx) => + throw new NotImplementedException("comparison"); + + // comp_op: '<' | '>' | '==' | '>=' | '<=' | '!=' | 'in' | 'not' 'in' | 'is' | 'is' 'not' + public override ASTNode VisitComp_op(Python3Parser.Comp_opContext ctx) => + throw new NotImplementedException("comp_op"); + + // expr: atom_expr | expr op expr | unary expr + public override ASTNode VisitExpr(Python3Parser.ExprContext ctx) => + throw new NotImplementedException("expr"); + + // star_expr: '*' expr + public override ASTNode VisitStar_expr(Python3Parser.Star_exprContext ctx) => + throw new NotImplementedException("star_expr"); + + // atom_expr: AWAIT? atom trailer* + public override ASTNode VisitAtom_expr(Python3Parser.Atom_exprContext ctx) => + throw new NotImplementedException("atom_expr"); + + // atom: '(' ... ')' | '[' ... ']' | '{' ... '}' | name | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False' + public override ASTNode VisitAtom(Python3Parser.AtomContext ctx) => + throw new NotImplementedException("atom"); + + // name: NAME | '_' | 'match' + public override ASTNode VisitName(Python3Parser.NameContext ctx) => + throw new NotImplementedException("name"); + + // trailer: '(' arglist? ')' | '[' subscriptlist ']' | '.' name + public override ASTNode VisitTrailer(Python3Parser.TrailerContext ctx) => + throw new NotImplementedException("trailer"); + + // subscriptlist: subscript_ (',' subscript_)* ','? + public override ASTNode VisitSubscriptlist(Python3Parser.SubscriptlistContext ctx) => + throw new NotImplementedException("subscriptlist"); + + // subscript_: test | test? ':' test? sliceop? + public override ASTNode VisitSubscript_(Python3Parser.Subscript_Context ctx) => + throw new NotImplementedException("subscript_"); + + // sliceop: ':' test? + public override ASTNode VisitSliceop(Python3Parser.SliceopContext ctx) => + throw new NotImplementedException("sliceop"); + + // testlist_star_expr: (test | star_expr) (',' (test | star_expr))* ','? + public override ASTNode VisitTestlist_star_expr(Python3Parser.Testlist_star_exprContext ctx) => + throw new NotImplementedException("testlist_star_expr"); + + // testlist: test (',' test)* ','? + public override ASTNode VisitTestlist(Python3Parser.TestlistContext ctx) => + throw new NotImplementedException("testlist"); + + // exprlist: (expr | star_expr) (',' (expr | star_expr))* ','? + public override ASTNode VisitExprlist(Python3Parser.ExprlistContext ctx) => + throw new NotImplementedException("exprlist"); + + // testlist_comp: (test | star_expr) (comp_for | (',' (test | star_expr))* ','?) + public override ASTNode VisitTestlist_comp(Python3Parser.Testlist_compContext ctx) => + throw new NotImplementedException("testlist_comp"); + + // dictorsetmaker: ... + public override ASTNode VisitDictorsetmaker(Python3Parser.DictorsetmakerContext ctx) => + throw new NotImplementedException("dictorsetmaker"); + + // arglist: argument (',' argument)* ','? + public override ASTNode VisitArglist(Python3Parser.ArglistContext ctx) => + throw new NotImplementedException("arglist"); + + // argument: test comp_for? | test '=' test | '**' test | '*' test + public override ASTNode VisitArgument(Python3Parser.ArgumentContext ctx) => + throw new NotImplementedException("argument"); + + // comp_iter: comp_for | comp_if + public override ASTNode VisitComp_iter(Python3Parser.Comp_iterContext ctx) => + throw new NotImplementedException("comp_iter"); + + // comp_for: ASYNC? 'for' exprlist 'in' or_test comp_iter? + public override ASTNode VisitComp_for(Python3Parser.Comp_forContext ctx) => + throw new NotImplementedException("comp_for"); + + // comp_if: 'if' test_nocond comp_iter? + public override ASTNode VisitComp_if(Python3Parser.Comp_ifContext ctx) => + throw new NotImplementedException("comp_if"); + + // yield_expr: 'yield' yield_arg? + public override ASTNode VisitYield_expr(Python3Parser.Yield_exprContext ctx) => + throw new NotImplementedException("yield_expr"); + + // yield_arg: 'from' test | testlist + public override ASTNode VisitYield_arg(Python3Parser.Yield_argContext ctx) => + throw new NotImplementedException("yield_arg"); + + // strings: STRING+ + public override ASTNode VisitStrings(Python3Parser.StringsContext ctx) => + throw new NotImplementedException("strings"); + } +} diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Functions.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Functions.cs new file mode 100644 index 0000000..3df8a9d --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Functions.cs @@ -0,0 +1,58 @@ +using System; +using LINVAST.Builders; +using LINVAST.Imperative.Nodes; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + // funcdef: 'def' name parameters ('->' test)? ':' block + public override ASTNode VisitFuncdef(Python3Parser.FuncdefContext ctx) => + throw new NotImplementedException("funcdef"); + + // async_funcdef: ASYNC funcdef + public override ASTNode VisitAsync_funcdef(Python3Parser.Async_funcdefContext ctx) => + throw new NotImplementedException("async_funcdef"); + + // parameters: '(' typedargslist? ')' + public override ASTNode VisitParameters(Python3Parser.ParametersContext ctx) => + throw new NotImplementedException("parameters"); + + // typedargslist: tfpdef ('=' test)? ... | '*' tfpdef? ... | '**' tfpdef + public override ASTNode VisitTypedargslist(Python3Parser.TypedargslistContext ctx) => + throw new NotImplementedException("typedargslist"); + + // tfpdef: name (':' test)? + public override ASTNode VisitTfpdef(Python3Parser.TfpdefContext ctx) => + throw new NotImplementedException("tfpdef"); + + // varargslist: vfpdef ('=' test)? ... | '*' vfpdef? ... | '**' vfpdef + public override ASTNode VisitVarargslist(Python3Parser.VarargslistContext ctx) => + throw new NotImplementedException("varargslist"); + + // vfpdef: name + public override ASTNode VisitVfpdef(Python3Parser.VfpdefContext ctx) => + throw new NotImplementedException("vfpdef"); + + // lambdef: 'lambda' varargslist? ':' test + public override ASTNode VisitLambdef(Python3Parser.LambdefContext ctx) => + throw new NotImplementedException("lambdef"); + + // lambdef_nocond: 'lambda' varargslist? ':' test_nocond + public override ASTNode VisitLambdef_nocond(Python3Parser.Lambdef_nocondContext ctx) => + throw new NotImplementedException("lambdef_nocond"); + + // decorator: '@' dotted_name ('(' arglist? ')')? NEWLINE + public override ASTNode VisitDecorator(Python3Parser.DecoratorContext ctx) => + throw new NotImplementedException("decorator"); + + // decorators: decorator+ + public override ASTNode VisitDecorators(Python3Parser.DecoratorsContext ctx) => + throw new NotImplementedException("decorators"); + + // decorated: decorators (classdef | funcdef | async_funcdef) + public override ASTNode VisitDecorated(Python3Parser.DecoratedContext ctx) => + throw new NotImplementedException("decorated"); + } +} diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Statements.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Statements.cs new file mode 100644 index 0000000..f923483 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Statements.cs @@ -0,0 +1,234 @@ +using System; +using LINVAST.Builders; +using LINVAST.Imperative.Nodes; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + // compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt | match_stmt + public override ASTNode VisitCompound_stmt(Python3Parser.Compound_stmtContext ctx) => + throw new NotImplementedException("compound_stmt"); + + // block: simple_stmts | NEWLINE INDENT stmt+ DEDENT + public override ASTNode VisitBlock(Python3Parser.BlockContext ctx) => + throw new NotImplementedException("block"); + + // if_stmt: 'if' test ':' block ('elif' test ':' block)* ('else' ':' block)? + public override ASTNode VisitIf_stmt(Python3Parser.If_stmtContext ctx) => + throw new NotImplementedException("if_stmt"); + + // while_stmt: 'while' test ':' block ('else' ':' block)? + public override ASTNode VisitWhile_stmt(Python3Parser.While_stmtContext ctx) => + throw new NotImplementedException("while_stmt"); + + // for_stmt: 'for' exprlist 'in' testlist ':' block ('else' ':' block)? + public override ASTNode VisitFor_stmt(Python3Parser.For_stmtContext ctx) => + throw new NotImplementedException("for_stmt"); + + // try_stmt: 'try' ':' block ((except_clause ':' block)+ ... | 'finally' ':' block) + public override ASTNode VisitTry_stmt(Python3Parser.Try_stmtContext ctx) => + throw new NotImplementedException("try_stmt"); + + // with_stmt: 'with' with_item (',' with_item)* ':' block + public override ASTNode VisitWith_stmt(Python3Parser.With_stmtContext ctx) => + throw new NotImplementedException("with_stmt"); + + // with_item: test ('as' expr)? + public override ASTNode VisitWith_item(Python3Parser.With_itemContext ctx) => + throw new NotImplementedException("with_item"); + + // except_clause: 'except' (test ('as' name)?)? + public override ASTNode VisitExcept_clause(Python3Parser.Except_clauseContext ctx) => + throw new NotImplementedException("except_clause"); + + // async_stmt: ASYNC (funcdef | with_stmt | for_stmt) + public override ASTNode VisitAsync_stmt(Python3Parser.Async_stmtContext ctx) => + throw new NotImplementedException("async_stmt"); + + // flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt + public override ASTNode VisitFlow_stmt(Python3Parser.Flow_stmtContext ctx) => + throw new NotImplementedException("flow_stmt"); + + // pass_stmt: 'pass' + public override ASTNode VisitPass_stmt(Python3Parser.Pass_stmtContext ctx) => + throw new NotImplementedException("pass_stmt"); + + // break_stmt: 'break' + public override ASTNode VisitBreak_stmt(Python3Parser.Break_stmtContext ctx) => + throw new NotImplementedException("break_stmt"); + + // continue_stmt: 'continue' + public override ASTNode VisitContinue_stmt(Python3Parser.Continue_stmtContext ctx) => + throw new NotImplementedException("continue_stmt"); + + // return_stmt: 'return' testlist? + public override ASTNode VisitReturn_stmt(Python3Parser.Return_stmtContext ctx) => + throw new NotImplementedException("return_stmt"); + + // raise_stmt: 'raise' (test ('from' test)?)? + public override ASTNode VisitRaise_stmt(Python3Parser.Raise_stmtContext ctx) => + throw new NotImplementedException("raise_stmt"); + + // yield_stmt: yield_expr + public override ASTNode VisitYield_stmt(Python3Parser.Yield_stmtContext ctx) => + throw new NotImplementedException("yield_stmt"); + + // assert_stmt: 'assert' test (',' test)? + public override ASTNode VisitAssert_stmt(Python3Parser.Assert_stmtContext ctx) => + throw new NotImplementedException("assert_stmt"); + + // match_stmt: 'match' subject_expr ':' NEWLINE INDENT case_block+ DEDENT + public override ASTNode VisitMatch_stmt(Python3Parser.Match_stmtContext ctx) => + throw new NotImplementedException("match_stmt"); + + // case_block: 'case' patterns guard? ':' block + public override ASTNode VisitCase_block(Python3Parser.Case_blockContext ctx) => + throw new NotImplementedException("case_block"); + + // subject_expr: star_named_expression ',' star_named_expressions? | test + public override ASTNode VisitSubject_expr(Python3Parser.Subject_exprContext ctx) => + throw new NotImplementedException("subject_expr"); + + // star_named_expressions: ',' star_named_expression+ ','? + public override ASTNode VisitStar_named_expressions(Python3Parser.Star_named_expressionsContext ctx) => + throw new NotImplementedException("star_named_expressions"); + + // star_named_expression: '*' expr | test + public override ASTNode VisitStar_named_expression(Python3Parser.Star_named_expressionContext ctx) => + throw new NotImplementedException("star_named_expression"); + + // guard: 'if' test + public override ASTNode VisitGuard(Python3Parser.GuardContext ctx) => + throw new NotImplementedException("guard"); + + // patterns: open_sequence_pattern | pattern + public override ASTNode VisitPatterns(Python3Parser.PatternsContext ctx) => + throw new NotImplementedException("patterns"); + + // pattern: as_pattern | or_pattern + public override ASTNode VisitPattern(Python3Parser.PatternContext ctx) => + throw new NotImplementedException("pattern"); + + // as_pattern: or_pattern 'as' pattern_capture_target + public override ASTNode VisitAs_pattern(Python3Parser.As_patternContext ctx) => + throw new NotImplementedException("as_pattern"); + + // or_pattern: closed_pattern ('|' closed_pattern)* + public override ASTNode VisitOr_pattern(Python3Parser.Or_patternContext ctx) => + throw new NotImplementedException("or_pattern"); + + // closed_pattern: literal_pattern | capture_pattern | wildcard_pattern | value_pattern | group_pattern | sequence_pattern | mapping_pattern | class_pattern + public override ASTNode VisitClosed_pattern(Python3Parser.Closed_patternContext ctx) => + throw new NotImplementedException("closed_pattern"); + + // literal_pattern: signed_number | complex_number | strings | 'None' | 'True' | 'False' + public override ASTNode VisitLiteral_pattern(Python3Parser.Literal_patternContext ctx) => + throw new NotImplementedException("literal_pattern"); + + // literal_expr: signed_number | complex_number | strings | 'None' | 'True' | 'False' + public override ASTNode VisitLiteral_expr(Python3Parser.Literal_exprContext ctx) => + throw new NotImplementedException("literal_expr"); + + // complex_number: signed_real_number ('+' | '-') imaginary_number + public override ASTNode VisitComplex_number(Python3Parser.Complex_numberContext ctx) => + throw new NotImplementedException("complex_number"); + + // signed_number: NUMBER | '-' NUMBER + public override ASTNode VisitSigned_number(Python3Parser.Signed_numberContext ctx) => + throw new NotImplementedException("signed_number"); + + // signed_real_number: real_number | '-' real_number + public override ASTNode VisitSigned_real_number(Python3Parser.Signed_real_numberContext ctx) => + throw new NotImplementedException("signed_real_number"); + + // real_number: NUMBER + public override ASTNode VisitReal_number(Python3Parser.Real_numberContext ctx) => + throw new NotImplementedException("real_number"); + + // imaginary_number: NUMBER + public override ASTNode VisitImaginary_number(Python3Parser.Imaginary_numberContext ctx) => + throw new NotImplementedException("imaginary_number"); + + // capture_pattern: pattern_capture_target + public override ASTNode VisitCapture_pattern(Python3Parser.Capture_patternContext ctx) => + throw new NotImplementedException("capture_pattern"); + + // pattern_capture_target: name + public override ASTNode VisitPattern_capture_target(Python3Parser.Pattern_capture_targetContext ctx) => + throw new NotImplementedException("pattern_capture_target"); + + // wildcard_pattern: '_' + public override ASTNode VisitWildcard_pattern(Python3Parser.Wildcard_patternContext ctx) => + throw new NotImplementedException("wildcard_pattern"); + + // value_pattern: attr + public override ASTNode VisitValue_pattern(Python3Parser.Value_patternContext ctx) => + throw new NotImplementedException("value_pattern"); + + // attr: name ('.' name)+ + public override ASTNode VisitAttr(Python3Parser.AttrContext ctx) => + throw new NotImplementedException("attr"); + + // name_or_attr: attr | name + public override ASTNode VisitName_or_attr(Python3Parser.Name_or_attrContext ctx) => + throw new NotImplementedException("name_or_attr"); + + // group_pattern: '(' pattern ')' + public override ASTNode VisitGroup_pattern(Python3Parser.Group_patternContext ctx) => + throw new NotImplementedException("group_pattern"); + + // sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')' + public override ASTNode VisitSequence_pattern(Python3Parser.Sequence_patternContext ctx) => + throw new NotImplementedException("sequence_pattern"); + + // open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern? + public override ASTNode VisitOpen_sequence_pattern(Python3Parser.Open_sequence_patternContext ctx) => + throw new NotImplementedException("open_sequence_pattern"); + + // maybe_sequence_pattern: maybe_star_pattern (',' maybe_star_pattern)* ','? + public override ASTNode VisitMaybe_sequence_pattern(Python3Parser.Maybe_sequence_patternContext ctx) => + throw new NotImplementedException("maybe_sequence_pattern"); + + // maybe_star_pattern: star_pattern | pattern + public override ASTNode VisitMaybe_star_pattern(Python3Parser.Maybe_star_patternContext ctx) => + throw new NotImplementedException("maybe_star_pattern"); + + // star_pattern: '*' pattern_capture_target | '*' wildcard_pattern + public override ASTNode VisitStar_pattern(Python3Parser.Star_patternContext ctx) => + throw new NotImplementedException("star_pattern"); + + // mapping_pattern: '{' ... '}' + public override ASTNode VisitMapping_pattern(Python3Parser.Mapping_patternContext ctx) => + throw new NotImplementedException("mapping_pattern"); + + // items_pattern: key_value_pattern (',' key_value_pattern)* + public override ASTNode VisitItems_pattern(Python3Parser.Items_patternContext ctx) => + throw new NotImplementedException("items_pattern"); + + // key_value_pattern: (literal_expr | attr) ':' pattern + public override ASTNode VisitKey_value_pattern(Python3Parser.Key_value_patternContext ctx) => + throw new NotImplementedException("key_value_pattern"); + + // double_star_pattern: '**' pattern_capture_target + public override ASTNode VisitDouble_star_pattern(Python3Parser.Double_star_patternContext ctx) => + throw new NotImplementedException("double_star_pattern"); + + // class_pattern: name_or_attr '(' ... ')' + public override ASTNode VisitClass_pattern(Python3Parser.Class_patternContext ctx) => + throw new NotImplementedException("class_pattern"); + + // positional_patterns: pattern (',' pattern)* + public override ASTNode VisitPositional_patterns(Python3Parser.Positional_patternsContext ctx) => + throw new NotImplementedException("positional_patterns"); + + // keyword_patterns: keyword_pattern (',' keyword_pattern)* + public override ASTNode VisitKeyword_patterns(Python3Parser.Keyword_patternsContext ctx) => + throw new NotImplementedException("keyword_patterns"); + + // keyword_pattern: name '=' pattern + public override ASTNode VisitKeyword_pattern(Python3Parser.Keyword_patternContext ctx) => + throw new NotImplementedException("keyword_pattern"); + } +} diff --git a/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Types.cs b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Types.cs new file mode 100644 index 0000000..2411509 --- /dev/null +++ b/LINVAST.Imperative/Builders/Python/PythonASTBuilder.Types.cs @@ -0,0 +1,14 @@ +using System; +using LINVAST.Builders; +using LINVAST.Imperative.Nodes; +using LINVAST.Nodes; + +namespace LINVAST.Imperative.Builders.Python +{ + public sealed partial class PythonASTBuilder : Python3ParserBaseVisitor, IASTBuilder + { + // classdef: 'class' name ('(' arglist? ')')? ':' block + public override ASTNode VisitClassdef(Python3Parser.ClassdefContext ctx) => + throw new NotImplementedException("classdef"); + } +}