diff --git a/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs
new file mode 100644
index 0000000..7395ea6
--- /dev/null
+++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Lexer.cs
@@ -0,0 +1,700 @@
+#nullable disable
+namespace LINVAST.Imperative.Builders.Python {
+//------------------------------------------------------------------------------
+//
+// 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.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/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/Python3LexerBase.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs
new file mode 100644
index 0000000..ad3cacd
--- /dev/null
+++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3LexerBase.cs
@@ -0,0 +1,177 @@
+#nullable disable
+namespace LINVAST.Imperative.Builders.Python {
+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.cs b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs
new file mode 100644
index 0000000..bbf3a0a
--- /dev/null
+++ b/LINVAST.Imperative/Builders/Python/ANTLR/Python3Parser.cs
@@ -0,0 +1,10337 @@
+#nullable disable
+namespace LINVAST.Imperative.Builders.Python {
+//------------------------------------------------------------------------------
+//
+// 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