diff --git a/Analysis/bounds_checks.py b/Analysis/old/bounds_checks.py similarity index 100% rename from Analysis/bounds_checks.py rename to Analysis/old/bounds_checks.py diff --git a/Analysis/disasm.py b/Analysis/old/disasm.py similarity index 100% rename from Analysis/disasm.py rename to Analysis/old/disasm.py diff --git a/Analysis/vb_parser/README.md b/Analysis/vb_parser/README.md new file mode 100644 index 000000000..64e20134c --- /dev/null +++ b/Analysis/vb_parser/README.md @@ -0,0 +1,2 @@ +Note: The VisualBasic6*.py files are generated by antlr4 based on the grammar here: +https://github.com/antlr/grammars-v4/tree/c97930352248dacee87787dc6f1684b1a17d5f31/vb6 diff --git a/Analysis/vb_parser/VisualBasic6Lexer.py b/Analysis/vb_parser/VisualBasic6Lexer.py new file mode 100644 index 000000000..39c03d743 --- /dev/null +++ b/Analysis/vb_parser/VisualBasic6Lexer.py @@ -0,0 +1,1113 @@ +# Generated from VisualBasic6Lexer.g4 by ANTLR 4.13.1 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +def serializedATN(): + return [ + 4,0,222,1982,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,2,129,7,129,2,130,7,130, + 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, + 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, + 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, + 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, + 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, + 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, + 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, + 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, + 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, + 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, + 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, + 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, + 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, + 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, + 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, + 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, + 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,1,0, + 1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,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,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,9, + 1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,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,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13, + 1,14,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,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18, + 1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20, + 1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24, + 1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26, + 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,27,1,27,1,28,1,28,1,28,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,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31, + 1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33, + 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,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36, + 1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39, + 1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42, + 1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44, + 1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47, + 1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49, + 1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51, + 1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52, + 1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54, + 1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56, + 1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58, + 1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60, + 1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62, + 1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63, + 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64, + 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65, + 1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67, + 1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69, + 1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71, + 1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73, + 1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78, + 1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81, + 1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83, + 1,83,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,86,1,86, + 1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,89,1,89,1,89, + 1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90, + 1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93, + 1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,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,96,1,96, + 1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98, + 1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,101,1,101, + 1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,103,1,103,1,103, + 1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105, + 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109, + 1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113, + 1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115, + 1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, + 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117, + 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119, + 1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121, + 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122, + 1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132, + 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133, + 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134, + 1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,136, + 1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138, + 1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141, + 1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143, + 1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145, + 1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146, + 1,146,1,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148, + 1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,152, + 1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153, + 1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,158,1,158, + 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160, + 1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,163, + 1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166, + 1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168, + 1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169, + 1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171, + 1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173, + 1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174, + 1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,176,1,176, + 1,176,1,176,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,180,1,180, + 1,181,1,181,1,182,1,182,1,183,1,183,1,184,1,184,1,185,1,185,1,186, + 1,186,1,187,1,187,1,188,1,188,1,188,1,189,1,189,1,190,1,190,1,191, + 1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196, + 1,196,1,196,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,200,1,200, + 1,201,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205, + 1,206,1,206,1,207,1,207,1,208,1,208,1,208,1,208,5,208,1789,8,208, + 10,208,12,208,1792,9,208,1,208,1,208,1,209,1,209,5,209,1798,8,209, + 10,209,12,209,1801,9,209,1,209,1,209,1,210,1,210,1,210,1,210,4,210, + 1809,8,210,11,210,12,210,1810,1,210,3,210,1814,8,210,1,211,4,211, + 1817,8,211,11,211,12,211,1818,1,211,1,211,5,211,1823,8,211,10,211, + 12,211,1826,9,211,1,211,1,211,1,211,1,211,3,211,1832,8,211,1,212, + 5,212,1835,8,212,10,212,12,212,1838,9,212,1,212,1,212,4,212,1842, + 8,212,11,212,12,212,1843,1,212,1,212,1,212,3,212,1849,8,212,1,212, + 4,212,1852,8,212,11,212,12,212,1853,5,212,1856,8,212,10,212,12,212, + 1859,9,212,1,212,1,212,1,212,1,212,3,212,1865,8,212,1,213,1,213, + 4,213,1869,8,213,11,213,12,213,1870,1,214,1,214,1,214,1,214,4,214, + 1877,8,214,11,214,12,214,1878,1,214,3,214,1882,8,214,1,215,1,215, + 4,215,1886,8,215,11,215,12,215,1887,1,216,1,216,4,216,1892,8,216, + 11,216,12,216,1893,1,216,1,216,4,216,1898,8,216,11,216,12,216,1899, + 1,216,1,216,4,216,1904,8,216,11,216,12,216,1905,1,216,1,216,4,216, + 1910,8,216,11,216,12,216,1911,1,216,1,216,4,216,1916,8,216,11,216, + 12,216,1917,1,216,1,216,1,217,1,217,5,217,1924,8,217,10,217,12,217, + 1927,9,217,1,218,1,218,1,218,3,218,1932,8,218,1,218,1,218,1,218, + 1,218,1,219,3,219,1939,8,219,1,219,3,219,1942,8,219,1,219,1,219, + 1,219,1,219,3,219,1948,8,219,1,219,3,219,1951,8,219,1,220,3,220, + 1954,8,220,1,220,1,220,3,220,1958,8,220,1,220,1,220,1,220,3,220, + 1963,8,220,1,220,1,220,5,220,1967,8,220,10,220,12,220,1970,9,220, + 1,220,1,220,1,221,4,221,1975,8,221,11,221,12,221,1976,1,222,1,222, + 1,223,1,223,0,0,224,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10, + 21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21, + 43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32, + 65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43, + 87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107, + 54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63, + 127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145, + 73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82, + 165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183, + 92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201, + 101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217, + 109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233, + 117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249, + 125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265, + 133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281, + 141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297, + 149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313, + 157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329, + 165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345, + 173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361, + 181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377, + 189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393, + 197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409, + 205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425, + 213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441, + 221,443,222,445,0,447,0,1,0,35,2,0,65,65,97,97,2,0,67,67,99,99,2, + 0,69,69,101,101,2,0,83,83,115,115,2,0,68,68,100,100,2,0,82,82,114, + 114,2,0,79,79,111,111,2,0,70,70,102,102,2,0,76,76,108,108,2,0,73, + 73,105,105,2,0,78,78,110,110,2,0,84,84,116,116,2,0,66,66,98,98,2, + 0,85,85,117,117,2,0,80,80,112,112,2,0,86,86,118,118,2,0,71,71,103, + 103,2,0,89,89,121,121,2,0,72,72,104,104,2,0,74,74,106,106,2,0,77, + 77,109,109,2,0,87,87,119,119,2,0,81,81,113,113,2,0,88,88,120,120, + 2,0,75,75,107,107,2,0,90,90,122,122,3,0,10,10,13,13,34,34,3,0,10, + 10,13,13,35,35,3,0,48,57,65,70,97,102,1,0,48,57,1,0,48,55,2,0,10, + 10,13,13,2,0,9,9,32,32,16,0,65,90,95,95,97,122,192,196,199,202,204, + 206,210,214,217,220,224,228,231,234,236,238,242,246,249,252,296, + 297,360,361,7868,7869,17,0,48,57,65,90,95,95,97,122,192,196,199, + 202,204,206,210,214,217,220,224,228,231,234,236,238,242,246,249, + 252,296,297,360,361,7868,7869,2021,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,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, + 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, + 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, + 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, + 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, + 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, + 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, + 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, + 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, + 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, + 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, + 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, + 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, + 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, + 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, + 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, + 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, + 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, + 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, + 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, + 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, + 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, + 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, + 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, + 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, + 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, + 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,1,449,1, + 0,0,0,3,456,1,0,0,0,5,466,1,0,0,0,7,472,1,0,0,0,9,476,1,0,0,0,11, + 486,1,0,0,0,13,498,1,0,0,0,15,505,1,0,0,0,17,508,1,0,0,0,19,513, + 1,0,0,0,21,519,1,0,0,0,23,533,1,0,0,0,25,540,1,0,0,0,27,548,1,0, + 0,0,29,554,1,0,0,0,31,560,1,0,0,0,33,565,1,0,0,0,35,570,1,0,0,0, + 37,575,1,0,0,0,39,581,1,0,0,0,41,589,1,0,0,0,43,595,1,0,0,0,45,601, + 1,0,0,0,47,612,1,0,0,0,49,618,1,0,0,0,51,623,1,0,0,0,53,631,1,0, + 0,0,55,639,1,0,0,0,57,647,1,0,0,0,59,655,1,0,0,0,61,662,1,0,0,0, + 63,669,1,0,0,0,65,676,1,0,0,0,67,683,1,0,0,0,69,690,1,0,0,0,71,697, + 1,0,0,0,73,704,1,0,0,0,75,711,1,0,0,0,77,718,1,0,0,0,79,732,1,0, + 0,0,81,736,1,0,0,0,83,739,1,0,0,0,85,746,1,0,0,0,87,751,1,0,0,0, + 89,756,1,0,0,0,91,763,1,0,0,0,93,772,1,0,0,0,95,785,1,0,0,0,97,792, + 1,0,0,0,99,805,1,0,0,0,101,816,1,0,0,0,103,824,1,0,0,0,105,833,1, + 0,0,0,107,842,1,0,0,0,109,846,1,0,0,0,111,858,1,0,0,0,113,863,1, + 0,0,0,115,867,1,0,0,0,117,873,1,0,0,0,119,879,1,0,0,0,121,885,1, + 0,0,0,123,893,1,0,0,0,125,902,1,0,0,0,127,916,1,0,0,0,129,930,1, + 0,0,0,131,939,1,0,0,0,133,945,1,0,0,0,135,954,1,0,0,0,137,961,1, + 0,0,0,139,965,1,0,0,0,141,974,1,0,0,0,143,978,1,0,0,0,145,985,1, + 0,0,0,147,991,1,0,0,0,149,996,1,0,0,0,151,999,1,0,0,0,153,1003,1, + 0,0,0,155,1014,1,0,0,0,157,1017,1,0,0,0,159,1023,1,0,0,0,161,1026, + 1,0,0,0,163,1034,1,0,0,0,165,1039,1,0,0,0,167,1044,1,0,0,0,169,1049, + 1,0,0,0,171,1054,1,0,0,0,173,1059,1,0,0,0,175,1063,1,0,0,0,177,1067, + 1,0,0,0,179,1071,1,0,0,0,181,1076,1,0,0,0,183,1087,1,0,0,0,185,1097, + 1,0,0,0,187,1108,1,0,0,0,189,1124,1,0,0,0,191,1129,1,0,0,0,193,1133, + 1,0,0,0,195,1141,1,0,0,0,197,1147,1,0,0,0,199,1155,1,0,0,0,201,1158, + 1,0,0,0,203,1162,1,0,0,0,205,1168,1,0,0,0,207,1172,1,0,0,0,209,1177, + 1,0,0,0,211,1182,1,0,0,0,213,1186,1,0,0,0,215,1190,1,0,0,0,217,1198, + 1,0,0,0,219,1203,1,0,0,0,221,1210,1,0,0,0,223,1213,1,0,0,0,225,1222, + 1,0,0,0,227,1237,1,0,0,0,229,1242,1,0,0,0,231,1251,1,0,0,0,233,1263, + 1,0,0,0,235,1279,1,0,0,0,237,1294,1,0,0,0,239,1316,1,0,0,0,241,1319, + 1,0,0,0,243,1326,1,0,0,0,245,1337,1,0,0,0,247,1346,1,0,0,0,249,1352, + 1,0,0,0,251,1360,1,0,0,0,253,1373,1,0,0,0,255,1386,1,0,0,0,257,1399, + 1,0,0,0,259,1406,1,0,0,0,261,1410,1,0,0,0,263,1417,1,0,0,0,265,1427, + 1,0,0,0,267,1438,1,0,0,0,269,1443,1,0,0,0,271,1454,1,0,0,0,273,1460, + 1,0,0,0,275,1464,1,0,0,0,277,1470,1,0,0,0,279,1477,1,0,0,0,281,1484, + 1,0,0,0,283,1490,1,0,0,0,285,1495,1,0,0,0,287,1507,1,0,0,0,289,1519, + 1,0,0,0,291,1524,1,0,0,0,293,1531,1,0,0,0,295,1540,1,0,0,0,297,1544, + 1,0,0,0,299,1552,1,0,0,0,301,1559,1,0,0,0,303,1566,1,0,0,0,305,1570, + 1,0,0,0,307,1577,1,0,0,0,309,1582,1,0,0,0,311,1587,1,0,0,0,313,1594, + 1,0,0,0,315,1598,1,0,0,0,317,1602,1,0,0,0,319,1607,1,0,0,0,321,1612, + 1,0,0,0,323,1617,1,0,0,0,325,1620,1,0,0,0,327,1625,1,0,0,0,329,1630, + 1,0,0,0,331,1637,1,0,0,0,333,1644,1,0,0,0,335,1651,1,0,0,0,337,1657, + 1,0,0,0,339,1665,1,0,0,0,341,1673,1,0,0,0,343,1678,1,0,0,0,345,1684, + 1,0,0,0,347,1690,1,0,0,0,349,1695,1,0,0,0,351,1706,1,0,0,0,353,1712, + 1,0,0,0,355,1716,1,0,0,0,357,1718,1,0,0,0,359,1721,1,0,0,0,361,1723, + 1,0,0,0,363,1725,1,0,0,0,365,1727,1,0,0,0,367,1729,1,0,0,0,369,1731, + 1,0,0,0,371,1733,1,0,0,0,373,1735,1,0,0,0,375,1737,1,0,0,0,377,1739, + 1,0,0,0,379,1742,1,0,0,0,381,1744,1,0,0,0,383,1746,1,0,0,0,385,1749, + 1,0,0,0,387,1751,1,0,0,0,389,1753,1,0,0,0,391,1755,1,0,0,0,393,1757, + 1,0,0,0,395,1760,1,0,0,0,397,1762,1,0,0,0,399,1765,1,0,0,0,401,1767, + 1,0,0,0,403,1769,1,0,0,0,405,1772,1,0,0,0,407,1774,1,0,0,0,409,1776, + 1,0,0,0,411,1778,1,0,0,0,413,1780,1,0,0,0,415,1782,1,0,0,0,417,1784, + 1,0,0,0,419,1795,1,0,0,0,421,1804,1,0,0,0,423,1816,1,0,0,0,425,1836, + 1,0,0,0,427,1866,1,0,0,0,429,1872,1,0,0,0,431,1883,1,0,0,0,433,1889, + 1,0,0,0,435,1921,1,0,0,0,437,1928,1,0,0,0,439,1938,1,0,0,0,441,1953, + 1,0,0,0,443,1974,1,0,0,0,445,1978,1,0,0,0,447,1980,1,0,0,0,449,450, + 7,0,0,0,450,451,7,1,0,0,451,452,7,1,0,0,452,453,7,2,0,0,453,454, + 7,3,0,0,454,455,7,3,0,0,455,2,1,0,0,0,456,457,7,0,0,0,457,458,7, + 4,0,0,458,459,7,4,0,0,459,460,7,5,0,0,460,461,7,2,0,0,461,462,7, + 3,0,0,462,463,7,3,0,0,463,464,7,6,0,0,464,465,7,7,0,0,465,4,1,0, + 0,0,466,467,7,0,0,0,467,468,7,8,0,0,468,469,7,9,0,0,469,470,7,0, + 0,0,470,471,7,3,0,0,471,6,1,0,0,0,472,473,7,0,0,0,473,474,7,10,0, + 0,474,475,7,4,0,0,475,8,1,0,0,0,476,477,7,0,0,0,477,478,7,11,0,0, + 478,479,7,11,0,0,479,480,7,5,0,0,480,481,7,9,0,0,481,482,7,12,0, + 0,482,483,7,13,0,0,483,484,7,11,0,0,484,485,7,2,0,0,485,10,1,0,0, + 0,486,487,7,0,0,0,487,488,7,14,0,0,488,489,7,14,0,0,489,490,7,0, + 0,0,490,491,7,1,0,0,491,492,7,11,0,0,492,493,7,9,0,0,493,494,7,15, + 0,0,494,495,7,0,0,0,495,496,7,11,0,0,496,497,7,2,0,0,497,12,1,0, + 0,0,498,499,7,0,0,0,499,500,7,14,0,0,500,501,7,14,0,0,501,502,7, + 2,0,0,502,503,7,10,0,0,503,504,7,4,0,0,504,14,1,0,0,0,505,506,7, + 0,0,0,506,507,7,3,0,0,507,16,1,0,0,0,508,509,7,12,0,0,509,510,7, + 2,0,0,510,511,7,2,0,0,511,512,7,14,0,0,512,18,1,0,0,0,513,514,7, + 12,0,0,514,515,7,2,0,0,515,516,7,16,0,0,516,517,7,9,0,0,517,518, + 7,10,0,0,518,20,1,0,0,0,519,520,7,12,0,0,520,521,7,2,0,0,521,522, + 7,16,0,0,522,523,7,9,0,0,523,524,7,10,0,0,524,525,7,14,0,0,525,526, + 7,5,0,0,526,527,7,6,0,0,527,528,7,14,0,0,528,529,7,2,0,0,529,530, + 7,5,0,0,530,531,7,11,0,0,531,532,7,17,0,0,532,22,1,0,0,0,533,534, + 7,12,0,0,534,535,7,9,0,0,535,536,7,10,0,0,536,537,7,0,0,0,537,538, + 7,5,0,0,538,539,7,17,0,0,539,24,1,0,0,0,540,541,7,12,0,0,541,542, + 7,6,0,0,542,543,7,6,0,0,543,544,7,8,0,0,544,545,7,2,0,0,545,546, + 7,0,0,0,546,547,7,10,0,0,547,26,1,0,0,0,548,549,7,12,0,0,549,550, + 7,17,0,0,550,551,7,15,0,0,551,552,7,0,0,0,552,553,7,8,0,0,553,28, + 1,0,0,0,554,555,7,12,0,0,555,556,7,17,0,0,556,557,7,5,0,0,557,558, + 7,2,0,0,558,559,7,7,0,0,559,30,1,0,0,0,560,561,7,12,0,0,561,562, + 7,17,0,0,562,563,7,11,0,0,563,564,7,2,0,0,564,32,1,0,0,0,565,566, + 7,1,0,0,566,567,7,0,0,0,567,568,7,8,0,0,568,569,7,8,0,0,569,34,1, + 0,0,0,570,571,7,1,0,0,571,572,7,0,0,0,572,573,7,3,0,0,573,574,7, + 2,0,0,574,36,1,0,0,0,575,576,7,1,0,0,576,577,7,18,0,0,577,578,7, + 4,0,0,578,579,7,9,0,0,579,580,7,5,0,0,580,38,1,0,0,0,581,582,7,1, + 0,0,582,583,7,18,0,0,583,584,7,4,0,0,584,585,7,5,0,0,585,586,7,9, + 0,0,586,587,7,15,0,0,587,588,7,2,0,0,588,40,1,0,0,0,589,590,7,1, + 0,0,590,591,7,8,0,0,591,592,7,0,0,0,592,593,7,3,0,0,593,594,7,3, + 0,0,594,42,1,0,0,0,595,596,7,1,0,0,596,597,7,8,0,0,597,598,7,6,0, + 0,598,599,7,3,0,0,599,600,7,2,0,0,600,44,1,0,0,0,601,602,7,1,0,0, + 602,603,7,6,0,0,603,604,7,8,0,0,604,605,7,8,0,0,605,606,7,2,0,0, + 606,607,7,1,0,0,607,608,7,11,0,0,608,609,7,9,0,0,609,610,7,6,0,0, + 610,611,7,10,0,0,611,46,1,0,0,0,612,613,7,1,0,0,613,614,7,6,0,0, + 614,615,7,10,0,0,615,616,7,3,0,0,616,617,7,11,0,0,617,48,1,0,0,0, + 618,619,7,4,0,0,619,620,7,0,0,0,620,621,7,11,0,0,621,622,7,2,0,0, + 622,50,1,0,0,0,623,624,7,4,0,0,624,625,7,2,0,0,625,626,7,1,0,0,626, + 627,7,8,0,0,627,628,7,0,0,0,628,629,7,5,0,0,629,630,7,2,0,0,630, + 52,1,0,0,0,631,632,7,4,0,0,632,633,7,2,0,0,633,634,7,7,0,0,634,635, + 7,12,0,0,635,636,7,6,0,0,636,637,7,6,0,0,637,638,7,8,0,0,638,54, + 1,0,0,0,639,640,7,4,0,0,640,641,7,2,0,0,641,642,7,7,0,0,642,643, + 7,12,0,0,643,644,7,17,0,0,644,645,7,11,0,0,645,646,7,2,0,0,646,56, + 1,0,0,0,647,648,7,4,0,0,648,649,7,2,0,0,649,650,7,7,0,0,650,651, + 7,4,0,0,651,652,7,0,0,0,652,653,7,11,0,0,653,654,7,2,0,0,654,58, + 1,0,0,0,655,656,7,4,0,0,656,657,7,2,0,0,657,658,7,7,0,0,658,659, + 7,4,0,0,659,660,7,12,0,0,660,661,7,8,0,0,661,60,1,0,0,0,662,663, + 7,4,0,0,663,664,7,2,0,0,664,665,7,7,0,0,665,666,7,4,0,0,666,667, + 7,2,0,0,667,668,7,1,0,0,668,62,1,0,0,0,669,670,7,4,0,0,670,671,7, + 2,0,0,671,672,7,7,0,0,672,673,7,1,0,0,673,674,7,13,0,0,674,675,7, + 5,0,0,675,64,1,0,0,0,676,677,7,4,0,0,677,678,7,2,0,0,678,679,7,7, + 0,0,679,680,7,9,0,0,680,681,7,10,0,0,681,682,7,11,0,0,682,66,1,0, + 0,0,683,684,7,4,0,0,684,685,7,2,0,0,685,686,7,7,0,0,686,687,7,8, + 0,0,687,688,7,10,0,0,688,689,7,16,0,0,689,68,1,0,0,0,690,691,7,4, + 0,0,691,692,7,2,0,0,692,693,7,7,0,0,693,694,7,6,0,0,694,695,7,12, + 0,0,695,696,7,19,0,0,696,70,1,0,0,0,697,698,7,4,0,0,698,699,7,2, + 0,0,699,700,7,7,0,0,700,701,7,3,0,0,701,702,7,10,0,0,702,703,7,16, + 0,0,703,72,1,0,0,0,704,705,7,4,0,0,705,706,7,2,0,0,706,707,7,7,0, + 0,707,708,7,3,0,0,708,709,7,11,0,0,709,710,7,5,0,0,710,74,1,0,0, + 0,711,712,7,4,0,0,712,713,7,2,0,0,713,714,7,7,0,0,714,715,7,15,0, + 0,715,716,7,0,0,0,716,717,7,5,0,0,717,76,1,0,0,0,718,719,7,4,0,0, + 719,720,7,2,0,0,720,721,7,8,0,0,721,722,7,2,0,0,722,723,7,11,0,0, + 723,724,7,2,0,0,724,725,7,3,0,0,725,726,7,2,0,0,726,727,7,11,0,0, + 727,728,7,11,0,0,728,729,7,9,0,0,729,730,7,10,0,0,730,731,7,16,0, + 0,731,78,1,0,0,0,732,733,7,4,0,0,733,734,7,9,0,0,734,735,7,20,0, + 0,735,80,1,0,0,0,736,737,7,4,0,0,737,738,7,6,0,0,738,82,1,0,0,0, + 739,740,7,4,0,0,740,741,7,6,0,0,741,742,7,13,0,0,742,743,7,12,0, + 0,743,744,7,8,0,0,744,745,7,2,0,0,745,84,1,0,0,0,746,747,7,2,0,0, + 747,748,7,0,0,0,748,749,7,1,0,0,749,750,7,18,0,0,750,86,1,0,0,0, + 751,752,7,2,0,0,752,753,7,8,0,0,753,754,7,3,0,0,754,755,7,2,0,0, + 755,88,1,0,0,0,756,757,7,2,0,0,757,758,7,8,0,0,758,759,7,3,0,0,759, + 760,7,2,0,0,760,761,7,9,0,0,761,762,7,7,0,0,762,90,1,0,0,0,763,764, + 7,2,0,0,764,765,7,10,0,0,765,766,7,4,0,0,766,767,5,32,0,0,767,768, + 7,2,0,0,768,769,7,10,0,0,769,770,7,13,0,0,770,771,7,20,0,0,771,92, + 1,0,0,0,772,773,7,2,0,0,773,774,7,10,0,0,774,775,7,4,0,0,775,776, + 5,32,0,0,776,777,7,7,0,0,777,778,7,13,0,0,778,779,7,10,0,0,779,780, + 7,1,0,0,780,781,7,11,0,0,781,782,7,9,0,0,782,783,7,6,0,0,783,784, + 7,10,0,0,784,94,1,0,0,0,785,786,7,2,0,0,786,787,7,10,0,0,787,788, + 7,4,0,0,788,789,5,32,0,0,789,790,7,9,0,0,790,791,7,7,0,0,791,96, + 1,0,0,0,792,793,7,2,0,0,793,794,7,10,0,0,794,795,7,4,0,0,795,796, + 5,32,0,0,796,797,7,14,0,0,797,798,7,5,0,0,798,799,7,6,0,0,799,800, + 7,14,0,0,800,801,7,2,0,0,801,802,7,5,0,0,802,803,7,11,0,0,803,804, + 7,17,0,0,804,98,1,0,0,0,805,806,7,2,0,0,806,807,7,10,0,0,807,808, + 7,4,0,0,808,809,5,32,0,0,809,810,7,3,0,0,810,811,7,2,0,0,811,812, + 7,8,0,0,812,813,7,2,0,0,813,814,7,1,0,0,814,815,7,11,0,0,815,100, + 1,0,0,0,816,817,7,2,0,0,817,818,7,10,0,0,818,819,7,4,0,0,819,820, + 5,32,0,0,820,821,7,3,0,0,821,822,7,13,0,0,822,823,7,12,0,0,823,102, + 1,0,0,0,824,825,7,2,0,0,825,826,7,10,0,0,826,827,7,4,0,0,827,828, + 5,32,0,0,828,829,7,11,0,0,829,830,7,17,0,0,830,831,7,14,0,0,831, + 832,7,2,0,0,832,104,1,0,0,0,833,834,7,2,0,0,834,835,7,10,0,0,835, + 836,7,4,0,0,836,837,5,32,0,0,837,838,7,21,0,0,838,839,7,9,0,0,839, + 840,7,11,0,0,840,841,7,18,0,0,841,106,1,0,0,0,842,843,7,2,0,0,843, + 844,7,10,0,0,844,845,7,4,0,0,845,108,1,0,0,0,846,847,7,2,0,0,847, + 848,7,10,0,0,848,849,7,4,0,0,849,850,7,14,0,0,850,851,7,5,0,0,851, + 852,7,6,0,0,852,853,7,14,0,0,853,854,7,2,0,0,854,855,7,5,0,0,855, + 856,7,11,0,0,856,857,7,17,0,0,857,110,1,0,0,0,858,859,7,2,0,0,859, + 860,7,10,0,0,860,861,7,13,0,0,861,862,7,20,0,0,862,112,1,0,0,0,863, + 864,7,2,0,0,864,865,7,22,0,0,865,866,7,15,0,0,866,114,1,0,0,0,867, + 868,7,2,0,0,868,869,7,5,0,0,869,870,7,0,0,0,870,871,7,3,0,0,871, + 872,7,2,0,0,872,116,1,0,0,0,873,874,7,2,0,0,874,875,7,5,0,0,875, + 876,7,5,0,0,876,877,7,6,0,0,877,878,7,5,0,0,878,118,1,0,0,0,879, + 880,7,2,0,0,880,881,7,15,0,0,881,882,7,2,0,0,882,883,7,10,0,0,883, + 884,7,11,0,0,884,120,1,0,0,0,885,886,7,2,0,0,886,887,7,23,0,0,887, + 888,7,9,0,0,888,889,7,11,0,0,889,890,5,32,0,0,890,891,7,4,0,0,891, + 892,7,6,0,0,892,122,1,0,0,0,893,894,7,2,0,0,894,895,7,23,0,0,895, + 896,7,9,0,0,896,897,7,11,0,0,897,898,5,32,0,0,898,899,7,7,0,0,899, + 900,7,6,0,0,900,901,7,5,0,0,901,124,1,0,0,0,902,903,7,2,0,0,903, + 904,7,23,0,0,904,905,7,9,0,0,905,906,7,11,0,0,906,907,5,32,0,0,907, + 908,7,7,0,0,908,909,7,13,0,0,909,910,7,10,0,0,910,911,7,1,0,0,911, + 912,7,11,0,0,912,913,7,9,0,0,913,914,7,6,0,0,914,915,7,10,0,0,915, + 126,1,0,0,0,916,917,7,2,0,0,917,918,7,23,0,0,918,919,7,9,0,0,919, + 920,7,11,0,0,920,921,5,32,0,0,921,922,7,14,0,0,922,923,7,5,0,0,923, + 924,7,6,0,0,924,925,7,14,0,0,925,926,7,2,0,0,926,927,7,5,0,0,927, + 928,7,11,0,0,928,929,7,17,0,0,929,128,1,0,0,0,930,931,7,2,0,0,931, + 932,7,23,0,0,932,933,7,9,0,0,933,934,7,11,0,0,934,935,5,32,0,0,935, + 936,7,3,0,0,936,937,7,13,0,0,937,938,7,12,0,0,938,130,1,0,0,0,939, + 940,7,7,0,0,940,941,7,0,0,0,941,942,7,8,0,0,942,943,7,3,0,0,943, + 944,7,2,0,0,944,132,1,0,0,0,945,946,7,7,0,0,946,947,7,9,0,0,947, + 948,7,8,0,0,948,949,7,2,0,0,949,950,7,1,0,0,950,951,7,6,0,0,951, + 952,7,14,0,0,952,953,7,17,0,0,953,134,1,0,0,0,954,955,7,7,0,0,955, + 956,7,5,0,0,956,957,7,9,0,0,957,958,7,2,0,0,958,959,7,10,0,0,959, + 960,7,4,0,0,960,136,1,0,0,0,961,962,7,7,0,0,962,963,7,6,0,0,963, + 964,7,5,0,0,964,138,1,0,0,0,965,966,7,7,0,0,966,967,7,13,0,0,967, + 968,7,10,0,0,968,969,7,1,0,0,969,970,7,11,0,0,970,971,7,9,0,0,971, + 972,7,6,0,0,972,973,7,10,0,0,973,140,1,0,0,0,974,975,7,16,0,0,975, + 976,7,2,0,0,976,977,7,11,0,0,977,142,1,0,0,0,978,979,7,16,0,0,979, + 980,7,8,0,0,980,981,7,6,0,0,981,982,7,12,0,0,982,983,7,0,0,0,983, + 984,7,8,0,0,984,144,1,0,0,0,985,986,7,16,0,0,986,987,7,6,0,0,987, + 988,7,3,0,0,988,989,7,13,0,0,989,990,7,12,0,0,990,146,1,0,0,0,991, + 992,7,16,0,0,992,993,7,6,0,0,993,994,7,11,0,0,994,995,7,6,0,0,995, + 148,1,0,0,0,996,997,7,9,0,0,997,998,7,7,0,0,998,150,1,0,0,0,999, + 1000,7,9,0,0,1000,1001,7,20,0,0,1001,1002,7,14,0,0,1002,152,1,0, + 0,0,1003,1004,7,9,0,0,1004,1005,7,20,0,0,1005,1006,7,14,0,0,1006, + 1007,7,8,0,0,1007,1008,7,2,0,0,1008,1009,7,20,0,0,1009,1010,7,2, + 0,0,1010,1011,7,10,0,0,1011,1012,7,11,0,0,1012,1013,7,3,0,0,1013, + 154,1,0,0,0,1014,1015,7,9,0,0,1015,1016,7,10,0,0,1016,156,1,0,0, + 0,1017,1018,7,9,0,0,1018,1019,7,10,0,0,1019,1020,7,14,0,0,1020,1021, + 7,13,0,0,1021,1022,7,11,0,0,1022,158,1,0,0,0,1023,1024,7,9,0,0,1024, + 1025,7,3,0,0,1025,160,1,0,0,0,1026,1027,7,9,0,0,1027,1028,7,10,0, + 0,1028,1029,7,11,0,0,1029,1030,7,2,0,0,1030,1031,7,16,0,0,1031,1032, + 7,2,0,0,1032,1033,7,5,0,0,1033,162,1,0,0,0,1034,1035,7,24,0,0,1035, + 1036,7,9,0,0,1036,1037,7,8,0,0,1037,1038,7,8,0,0,1038,164,1,0,0, + 0,1039,1040,7,8,0,0,1040,1041,7,6,0,0,1041,1042,7,0,0,0,1042,1043, + 7,4,0,0,1043,166,1,0,0,0,1044,1045,7,8,0,0,1045,1046,7,6,0,0,1046, + 1047,7,1,0,0,1047,1048,7,24,0,0,1048,168,1,0,0,0,1049,1050,7,8,0, + 0,1050,1051,7,6,0,0,1051,1052,7,10,0,0,1052,1053,7,16,0,0,1053,170, + 1,0,0,0,1054,1055,7,8,0,0,1055,1056,7,6,0,0,1056,1057,7,6,0,0,1057, + 1058,7,14,0,0,1058,172,1,0,0,0,1059,1060,7,8,0,0,1060,1061,7,2,0, + 0,1061,1062,7,10,0,0,1062,174,1,0,0,0,1063,1064,7,8,0,0,1064,1065, + 7,2,0,0,1065,1066,7,11,0,0,1066,176,1,0,0,0,1067,1068,7,8,0,0,1068, + 1069,7,9,0,0,1069,1070,7,12,0,0,1070,178,1,0,0,0,1071,1072,7,8,0, + 0,1072,1073,7,9,0,0,1073,1074,7,24,0,0,1074,1075,7,2,0,0,1075,180, + 1,0,0,0,1076,1077,7,8,0,0,1077,1078,7,9,0,0,1078,1079,7,10,0,0,1079, + 1080,7,2,0,0,1080,1081,5,32,0,0,1081,1082,7,9,0,0,1082,1083,7,10, + 0,0,1083,1084,7,14,0,0,1084,1085,7,13,0,0,1085,1086,7,11,0,0,1086, + 182,1,0,0,0,1087,1088,7,8,0,0,1088,1089,7,6,0,0,1089,1090,7,1,0, + 0,1090,1091,7,24,0,0,1091,1092,5,32,0,0,1092,1093,7,5,0,0,1093,1094, + 7,2,0,0,1094,1095,7,0,0,0,1095,1096,7,4,0,0,1096,184,1,0,0,0,1097, + 1098,7,8,0,0,1098,1099,7,6,0,0,1099,1100,7,1,0,0,1100,1101,7,24, + 0,0,1101,1102,5,32,0,0,1102,1103,7,21,0,0,1103,1104,7,5,0,0,1104, + 1105,7,9,0,0,1105,1106,7,11,0,0,1106,1107,7,2,0,0,1107,186,1,0,0, + 0,1108,1109,7,8,0,0,1109,1110,7,6,0,0,1110,1111,7,1,0,0,1111,1112, + 7,24,0,0,1112,1113,5,32,0,0,1113,1114,7,5,0,0,1114,1115,7,2,0,0, + 1115,1116,7,0,0,0,1116,1117,7,4,0,0,1117,1118,5,32,0,0,1118,1119, + 7,21,0,0,1119,1120,7,5,0,0,1120,1121,7,9,0,0,1121,1122,7,11,0,0, + 1122,1123,7,2,0,0,1123,188,1,0,0,0,1124,1125,7,8,0,0,1125,1126,7, + 3,0,0,1126,1127,7,2,0,0,1127,1128,7,11,0,0,1128,190,1,0,0,0,1129, + 1130,3,381,190,0,1130,1131,7,9,0,0,1131,1132,7,7,0,0,1132,192,1, + 0,0,0,1133,1134,3,381,190,0,1134,1135,7,2,0,0,1135,1136,7,8,0,0, + 1136,1137,7,3,0,0,1137,1138,7,2,0,0,1138,1139,7,9,0,0,1139,1140, + 7,7,0,0,1140,194,1,0,0,0,1141,1142,3,381,190,0,1142,1143,7,2,0,0, + 1143,1144,7,8,0,0,1144,1145,7,3,0,0,1145,1146,7,2,0,0,1146,196,1, + 0,0,0,1147,1148,3,381,190,0,1148,1149,7,2,0,0,1149,1150,7,10,0,0, + 1150,1151,7,4,0,0,1151,1152,5,32,0,0,1152,1153,7,9,0,0,1153,1154, + 7,7,0,0,1154,198,1,0,0,0,1155,1156,7,20,0,0,1156,1157,7,2,0,0,1157, + 200,1,0,0,0,1158,1159,7,20,0,0,1159,1160,7,9,0,0,1160,1161,7,4,0, + 0,1161,202,1,0,0,0,1162,1163,7,20,0,0,1163,1164,7,24,0,0,1164,1165, + 7,4,0,0,1165,1166,7,9,0,0,1166,1167,7,5,0,0,1167,204,1,0,0,0,1168, + 1169,7,20,0,0,1169,1170,7,6,0,0,1170,1171,7,4,0,0,1171,206,1,0,0, + 0,1172,1173,7,10,0,0,1173,1174,7,0,0,0,1174,1175,7,20,0,0,1175,1176, + 7,2,0,0,1176,208,1,0,0,0,1177,1178,7,10,0,0,1178,1179,7,2,0,0,1179, + 1180,7,23,0,0,1180,1181,7,11,0,0,1181,210,1,0,0,0,1182,1183,7,10, + 0,0,1183,1184,7,2,0,0,1184,1185,7,21,0,0,1185,212,1,0,0,0,1186,1187, + 7,10,0,0,1187,1188,7,6,0,0,1188,1189,7,11,0,0,1189,214,1,0,0,0,1190, + 1191,7,10,0,0,1191,1192,7,6,0,0,1192,1193,7,11,0,0,1193,1194,7,18, + 0,0,1194,1195,7,9,0,0,1195,1196,7,10,0,0,1196,1197,7,16,0,0,1197, + 216,1,0,0,0,1198,1199,7,10,0,0,1199,1200,7,13,0,0,1200,1201,7,8, + 0,0,1201,1202,7,8,0,0,1202,218,1,0,0,0,1203,1204,7,6,0,0,1204,1205, + 7,12,0,0,1205,1206,7,19,0,0,1206,1207,7,2,0,0,1207,1208,7,1,0,0, + 1208,1209,7,11,0,0,1209,220,1,0,0,0,1210,1211,7,6,0,0,1211,1212, + 7,10,0,0,1212,222,1,0,0,0,1213,1214,7,6,0,0,1214,1215,7,10,0,0,1215, + 1216,5,32,0,0,1216,1217,7,2,0,0,1217,1218,7,5,0,0,1218,1219,7,5, + 0,0,1219,1220,7,6,0,0,1220,1221,7,5,0,0,1221,224,1,0,0,0,1222,1223, + 7,6,0,0,1223,1224,7,10,0,0,1224,1225,5,32,0,0,1225,1226,7,8,0,0, + 1226,1227,7,6,0,0,1227,1228,7,1,0,0,1228,1229,7,0,0,0,1229,1230, + 7,8,0,0,1230,1231,5,32,0,0,1231,1232,7,2,0,0,1232,1233,7,5,0,0,1233, + 1234,7,5,0,0,1234,1235,7,6,0,0,1235,1236,7,5,0,0,1236,226,1,0,0, + 0,1237,1238,7,6,0,0,1238,1239,7,14,0,0,1239,1240,7,2,0,0,1240,1241, + 7,10,0,0,1241,228,1,0,0,0,1242,1243,7,6,0,0,1243,1244,7,14,0,0,1244, + 1245,7,11,0,0,1245,1246,7,9,0,0,1246,1247,7,6,0,0,1247,1248,7,10, + 0,0,1248,1249,7,0,0,0,1249,1250,7,8,0,0,1250,230,1,0,0,0,1251,1252, + 7,6,0,0,1252,1253,7,14,0,0,1253,1254,7,11,0,0,1254,1255,7,9,0,0, + 1255,1256,7,6,0,0,1256,1257,7,10,0,0,1257,1258,5,32,0,0,1258,1259, + 7,12,0,0,1259,1260,7,0,0,0,1260,1261,7,3,0,0,1261,1262,7,2,0,0,1262, + 232,1,0,0,0,1263,1264,7,6,0,0,1264,1265,7,14,0,0,1265,1266,7,11, + 0,0,1266,1267,7,9,0,0,1267,1268,7,6,0,0,1268,1269,7,10,0,0,1269, + 1270,5,32,0,0,1270,1271,7,2,0,0,1271,1272,7,23,0,0,1272,1273,7,14, + 0,0,1273,1274,7,8,0,0,1274,1275,7,9,0,0,1275,1276,7,1,0,0,1276,1277, + 7,9,0,0,1277,1278,7,11,0,0,1278,234,1,0,0,0,1279,1280,7,6,0,0,1280, + 1281,7,14,0,0,1281,1282,7,11,0,0,1282,1283,7,9,0,0,1283,1284,7,6, + 0,0,1284,1285,7,10,0,0,1285,1286,5,32,0,0,1286,1287,7,1,0,0,1287, + 1288,7,6,0,0,1288,1289,7,20,0,0,1289,1290,7,14,0,0,1290,1291,7,0, + 0,0,1291,1292,7,5,0,0,1292,1293,7,2,0,0,1293,236,1,0,0,0,1294,1295, + 7,6,0,0,1295,1296,7,14,0,0,1296,1297,7,11,0,0,1297,1298,7,9,0,0, + 1298,1299,7,6,0,0,1299,1300,7,10,0,0,1300,1301,5,32,0,0,1301,1302, + 7,14,0,0,1302,1303,7,5,0,0,1303,1304,7,9,0,0,1304,1305,7,15,0,0, + 1305,1306,7,0,0,0,1306,1307,7,11,0,0,1307,1308,7,2,0,0,1308,1309, + 5,32,0,0,1309,1310,7,20,0,0,1310,1311,7,6,0,0,1311,1312,7,4,0,0, + 1312,1313,7,13,0,0,1313,1314,7,8,0,0,1314,1315,7,2,0,0,1315,238, + 1,0,0,0,1316,1317,7,6,0,0,1317,1318,7,5,0,0,1318,240,1,0,0,0,1319, + 1320,7,6,0,0,1320,1321,7,13,0,0,1321,1322,7,11,0,0,1322,1323,7,14, + 0,0,1323,1324,7,13,0,0,1324,1325,7,11,0,0,1325,242,1,0,0,0,1326, + 1327,7,14,0,0,1327,1328,7,0,0,0,1328,1329,7,5,0,0,1329,1330,7,0, + 0,0,1330,1331,7,20,0,0,1331,1332,7,0,0,0,1332,1333,7,5,0,0,1333, + 1334,7,5,0,0,1334,1335,7,0,0,0,1335,1336,7,17,0,0,1336,244,1,0,0, + 0,1337,1338,7,14,0,0,1338,1339,7,5,0,0,1339,1340,7,2,0,0,1340,1341, + 7,3,0,0,1341,1342,7,2,0,0,1342,1343,7,5,0,0,1343,1344,7,15,0,0,1344, + 1345,7,2,0,0,1345,246,1,0,0,0,1346,1347,7,14,0,0,1347,1348,7,5,0, + 0,1348,1349,7,9,0,0,1349,1350,7,10,0,0,1350,1351,7,11,0,0,1351,248, + 1,0,0,0,1352,1353,7,14,0,0,1353,1354,7,5,0,0,1354,1355,7,9,0,0,1355, + 1356,7,15,0,0,1356,1357,7,0,0,0,1357,1358,7,11,0,0,1358,1359,7,2, + 0,0,1359,250,1,0,0,0,1360,1361,7,14,0,0,1361,1362,7,5,0,0,1362,1363, + 7,6,0,0,1363,1364,7,14,0,0,1364,1365,7,2,0,0,1365,1366,7,5,0,0,1366, + 1367,7,11,0,0,1367,1368,7,17,0,0,1368,1369,5,32,0,0,1369,1370,7, + 16,0,0,1370,1371,7,2,0,0,1371,1372,7,11,0,0,1372,252,1,0,0,0,1373, + 1374,7,14,0,0,1374,1375,7,5,0,0,1375,1376,7,6,0,0,1376,1377,7,14, + 0,0,1377,1378,7,2,0,0,1378,1379,7,5,0,0,1379,1380,7,11,0,0,1380, + 1381,7,17,0,0,1381,1382,5,32,0,0,1382,1383,7,8,0,0,1383,1384,7,2, + 0,0,1384,1385,7,11,0,0,1385,254,1,0,0,0,1386,1387,7,14,0,0,1387, + 1388,7,5,0,0,1388,1389,7,6,0,0,1389,1390,7,14,0,0,1390,1391,7,2, + 0,0,1391,1392,7,5,0,0,1392,1393,7,11,0,0,1393,1394,7,17,0,0,1394, + 1395,5,32,0,0,1395,1396,7,3,0,0,1396,1397,7,2,0,0,1397,1398,7,11, + 0,0,1398,256,1,0,0,0,1399,1400,7,14,0,0,1400,1401,7,13,0,0,1401, + 1402,7,12,0,0,1402,1403,7,8,0,0,1403,1404,7,9,0,0,1404,1405,7,1, + 0,0,1405,258,1,0,0,0,1406,1407,7,14,0,0,1407,1408,7,13,0,0,1408, + 1409,7,11,0,0,1409,260,1,0,0,0,1410,1411,7,5,0,0,1411,1412,7,0,0, + 0,1412,1413,7,10,0,0,1413,1414,7,4,0,0,1414,1415,7,6,0,0,1415,1416, + 7,20,0,0,1416,262,1,0,0,0,1417,1418,7,5,0,0,1418,1419,7,0,0,0,1419, + 1420,7,10,0,0,1420,1421,7,4,0,0,1421,1422,7,6,0,0,1422,1423,7,20, + 0,0,1423,1424,7,9,0,0,1424,1425,7,25,0,0,1425,1426,7,2,0,0,1426, + 264,1,0,0,0,1427,1428,7,5,0,0,1428,1429,7,0,0,0,1429,1430,7,9,0, + 0,1430,1431,7,3,0,0,1431,1432,7,2,0,0,1432,1433,7,2,0,0,1433,1434, + 7,15,0,0,1434,1435,7,2,0,0,1435,1436,7,10,0,0,1436,1437,7,11,0,0, + 1437,266,1,0,0,0,1438,1439,7,5,0,0,1439,1440,7,2,0,0,1440,1441,7, + 0,0,0,1441,1442,7,4,0,0,1442,268,1,0,0,0,1443,1444,7,5,0,0,1444, + 1445,7,2,0,0,1445,1446,7,0,0,0,1446,1447,7,4,0,0,1447,1448,5,32, + 0,0,1448,1449,7,21,0,0,1449,1450,7,5,0,0,1450,1451,7,9,0,0,1451, + 1452,7,11,0,0,1452,1453,7,2,0,0,1453,270,1,0,0,0,1454,1455,7,5,0, + 0,1455,1456,7,2,0,0,1456,1457,7,4,0,0,1457,1458,7,9,0,0,1458,1459, + 7,20,0,0,1459,272,1,0,0,0,1460,1461,7,5,0,0,1461,1462,7,2,0,0,1462, + 1463,7,20,0,0,1463,274,1,0,0,0,1464,1465,7,5,0,0,1465,1466,7,2,0, + 0,1466,1467,7,3,0,0,1467,1468,7,2,0,0,1468,1469,7,11,0,0,1469,276, + 1,0,0,0,1470,1471,7,5,0,0,1471,1472,7,2,0,0,1472,1473,7,3,0,0,1473, + 1474,7,13,0,0,1474,1475,7,20,0,0,1475,1476,7,2,0,0,1476,278,1,0, + 0,0,1477,1478,7,5,0,0,1478,1479,7,2,0,0,1479,1480,7,11,0,0,1480, + 1481,7,13,0,0,1481,1482,7,5,0,0,1482,1483,7,10,0,0,1483,280,1,0, + 0,0,1484,1485,7,5,0,0,1485,1486,7,20,0,0,1486,1487,7,4,0,0,1487, + 1488,7,9,0,0,1488,1489,7,5,0,0,1489,282,1,0,0,0,1490,1491,7,5,0, + 0,1491,1492,7,3,0,0,1492,1493,7,2,0,0,1493,1494,7,11,0,0,1494,284, + 1,0,0,0,1495,1496,7,3,0,0,1496,1497,7,0,0,0,1497,1498,7,15,0,0,1498, + 1499,7,2,0,0,1499,1500,7,14,0,0,1500,1501,7,9,0,0,1501,1502,7,1, + 0,0,1502,1503,7,11,0,0,1503,1504,7,13,0,0,1504,1505,7,5,0,0,1505, + 1506,7,2,0,0,1506,286,1,0,0,0,1507,1508,7,3,0,0,1508,1509,7,0,0, + 0,1509,1510,7,15,0,0,1510,1511,7,2,0,0,1511,1512,7,3,0,0,1512,1513, + 7,2,0,0,1513,1514,7,11,0,0,1514,1515,7,11,0,0,1515,1516,7,9,0,0, + 1516,1517,7,10,0,0,1517,1518,7,16,0,0,1518,288,1,0,0,0,1519,1520, + 7,3,0,0,1520,1521,7,2,0,0,1521,1522,7,2,0,0,1522,1523,7,24,0,0,1523, + 290,1,0,0,0,1524,1525,7,3,0,0,1525,1526,7,2,0,0,1526,1527,7,8,0, + 0,1527,1528,7,2,0,0,1528,1529,7,1,0,0,1529,1530,7,11,0,0,1530,292, + 1,0,0,0,1531,1532,7,3,0,0,1532,1533,7,2,0,0,1533,1534,7,10,0,0,1534, + 1535,7,4,0,0,1535,1536,7,24,0,0,1536,1537,7,2,0,0,1537,1538,7,17, + 0,0,1538,1539,7,3,0,0,1539,294,1,0,0,0,1540,1541,7,3,0,0,1541,1542, + 7,2,0,0,1542,1543,7,11,0,0,1543,296,1,0,0,0,1544,1545,7,3,0,0,1545, + 1546,7,2,0,0,1546,1547,7,11,0,0,1547,1548,7,0,0,0,1548,1549,7,11, + 0,0,1549,1550,7,11,0,0,1550,1551,7,5,0,0,1551,298,1,0,0,0,1552,1553, + 7,3,0,0,1553,1554,7,18,0,0,1554,1555,7,0,0,0,1555,1556,7,5,0,0,1556, + 1557,7,2,0,0,1557,1558,7,4,0,0,1558,300,1,0,0,0,1559,1560,7,3,0, + 0,1560,1561,7,9,0,0,1561,1562,7,10,0,0,1562,1563,7,16,0,0,1563,1564, + 7,8,0,0,1564,1565,7,2,0,0,1565,302,1,0,0,0,1566,1567,7,3,0,0,1567, + 1568,7,14,0,0,1568,1569,7,1,0,0,1569,304,1,0,0,0,1570,1571,7,3,0, + 0,1571,1572,7,11,0,0,1572,1573,7,0,0,0,1573,1574,7,11,0,0,1574,1575, + 7,9,0,0,1575,1576,7,1,0,0,1576,306,1,0,0,0,1577,1578,7,3,0,0,1578, + 1579,7,11,0,0,1579,1580,7,2,0,0,1580,1581,7,14,0,0,1581,308,1,0, + 0,0,1582,1583,7,3,0,0,1583,1584,7,11,0,0,1584,1585,7,6,0,0,1585, + 1586,7,14,0,0,1586,310,1,0,0,0,1587,1588,7,3,0,0,1588,1589,7,11, + 0,0,1589,1590,7,5,0,0,1590,1591,7,9,0,0,1591,1592,7,10,0,0,1592, + 1593,7,16,0,0,1593,312,1,0,0,0,1594,1595,7,3,0,0,1595,1596,7,13, + 0,0,1596,1597,7,12,0,0,1597,314,1,0,0,0,1598,1599,7,11,0,0,1599, + 1600,7,0,0,0,1600,1601,7,12,0,0,1601,316,1,0,0,0,1602,1603,7,11, + 0,0,1603,1604,7,2,0,0,1604,1605,7,23,0,0,1605,1606,7,11,0,0,1606, + 318,1,0,0,0,1607,1608,7,11,0,0,1608,1609,7,18,0,0,1609,1610,7,2, + 0,0,1610,1611,7,10,0,0,1611,320,1,0,0,0,1612,1613,7,11,0,0,1613, + 1614,7,9,0,0,1614,1615,7,20,0,0,1615,1616,7,2,0,0,1616,322,1,0,0, + 0,1617,1618,7,11,0,0,1618,1619,7,6,0,0,1619,324,1,0,0,0,1620,1621, + 7,11,0,0,1621,1622,7,5,0,0,1622,1623,7,13,0,0,1623,1624,7,2,0,0, + 1624,326,1,0,0,0,1625,1626,7,11,0,0,1626,1627,7,17,0,0,1627,1628, + 7,14,0,0,1628,1629,7,2,0,0,1629,328,1,0,0,0,1630,1631,7,11,0,0,1631, + 1632,7,17,0,0,1632,1633,7,14,0,0,1633,1634,7,2,0,0,1634,1635,7,6, + 0,0,1635,1636,7,7,0,0,1636,330,1,0,0,0,1637,1638,7,13,0,0,1638,1639, + 7,10,0,0,1639,1640,7,8,0,0,1640,1641,7,6,0,0,1641,1642,7,0,0,0,1642, + 1643,7,4,0,0,1643,332,1,0,0,0,1644,1645,7,13,0,0,1645,1646,7,10, + 0,0,1646,1647,7,8,0,0,1647,1648,7,6,0,0,1648,1649,7,1,0,0,1649,1650, + 7,24,0,0,1650,334,1,0,0,0,1651,1652,7,13,0,0,1652,1653,7,10,0,0, + 1653,1654,7,11,0,0,1654,1655,7,9,0,0,1655,1656,7,8,0,0,1656,336, + 1,0,0,0,1657,1658,7,15,0,0,1658,1659,7,0,0,0,1659,1660,7,5,0,0,1660, + 1661,7,9,0,0,1661,1662,7,0,0,0,1662,1663,7,10,0,0,1663,1664,7,11, + 0,0,1664,338,1,0,0,0,1665,1666,7,15,0,0,1666,1667,7,2,0,0,1667,1668, + 7,5,0,0,1668,1669,7,3,0,0,1669,1670,7,9,0,0,1670,1671,7,6,0,0,1671, + 1672,7,10,0,0,1672,340,1,0,0,0,1673,1674,7,21,0,0,1674,1675,7,2, + 0,0,1675,1676,7,10,0,0,1676,1677,7,4,0,0,1677,342,1,0,0,0,1678,1679, + 7,21,0,0,1679,1680,7,18,0,0,1680,1681,7,9,0,0,1681,1682,7,8,0,0, + 1682,1683,7,2,0,0,1683,344,1,0,0,0,1684,1685,7,21,0,0,1685,1686, + 7,9,0,0,1686,1687,7,4,0,0,1687,1688,7,11,0,0,1688,1689,7,18,0,0, + 1689,346,1,0,0,0,1690,1691,7,21,0,0,1691,1692,7,9,0,0,1692,1693, + 7,11,0,0,1693,1694,7,18,0,0,1694,348,1,0,0,0,1695,1696,7,21,0,0, + 1696,1697,7,9,0,0,1697,1698,7,11,0,0,1698,1699,7,18,0,0,1699,1700, + 7,2,0,0,1700,1701,7,15,0,0,1701,1702,7,2,0,0,1702,1703,7,10,0,0, + 1703,1704,7,11,0,0,1704,1705,7,3,0,0,1705,350,1,0,0,0,1706,1707, + 7,21,0,0,1707,1708,7,5,0,0,1708,1709,7,9,0,0,1709,1710,7,11,0,0, + 1710,1711,7,2,0,0,1711,352,1,0,0,0,1712,1713,7,23,0,0,1713,1714, + 7,6,0,0,1714,1715,7,5,0,0,1715,354,1,0,0,0,1716,1717,5,38,0,0,1717, + 356,1,0,0,0,1718,1719,5,58,0,0,1719,1720,5,61,0,0,1720,358,1,0,0, + 0,1721,1722,5,64,0,0,1722,360,1,0,0,0,1723,1724,5,58,0,0,1724,362, + 1,0,0,0,1725,1726,5,44,0,0,1726,364,1,0,0,0,1727,1728,5,92,0,0,1728, + 366,1,0,0,0,1729,1730,5,47,0,0,1730,368,1,0,0,0,1731,1732,5,36,0, + 0,1732,370,1,0,0,0,1733,1734,5,46,0,0,1734,372,1,0,0,0,1735,1736, + 5,61,0,0,1736,374,1,0,0,0,1737,1738,5,33,0,0,1738,376,1,0,0,0,1739, + 1740,5,62,0,0,1740,1741,5,61,0,0,1741,378,1,0,0,0,1742,1743,5,62, + 0,0,1743,380,1,0,0,0,1744,1745,5,35,0,0,1745,382,1,0,0,0,1746,1747, + 5,60,0,0,1747,1748,5,61,0,0,1748,384,1,0,0,0,1749,1750,5,123,0,0, + 1750,386,1,0,0,0,1751,1752,5,40,0,0,1752,388,1,0,0,0,1753,1754,5, + 60,0,0,1754,390,1,0,0,0,1755,1756,5,45,0,0,1756,392,1,0,0,0,1757, + 1758,5,45,0,0,1758,1759,5,61,0,0,1759,394,1,0,0,0,1760,1761,5,42, + 0,0,1761,396,1,0,0,0,1762,1763,5,60,0,0,1763,1764,5,62,0,0,1764, + 398,1,0,0,0,1765,1766,5,37,0,0,1766,400,1,0,0,0,1767,1768,5,43,0, + 0,1768,402,1,0,0,0,1769,1770,5,43,0,0,1770,1771,5,61,0,0,1771,404, + 1,0,0,0,1772,1773,5,94,0,0,1773,406,1,0,0,0,1774,1775,5,125,0,0, + 1775,408,1,0,0,0,1776,1777,5,41,0,0,1777,410,1,0,0,0,1778,1779,5, + 59,0,0,1779,412,1,0,0,0,1780,1781,5,91,0,0,1781,414,1,0,0,0,1782, + 1783,5,93,0,0,1783,416,1,0,0,0,1784,1790,5,34,0,0,1785,1789,8,26, + 0,0,1786,1787,5,34,0,0,1787,1789,5,34,0,0,1788,1785,1,0,0,0,1788, + 1786,1,0,0,0,1789,1792,1,0,0,0,1790,1788,1,0,0,0,1790,1791,1,0,0, + 0,1791,1793,1,0,0,0,1792,1790,1,0,0,0,1793,1794,5,34,0,0,1794,418, + 1,0,0,0,1795,1799,3,381,190,0,1796,1798,8,27,0,0,1797,1796,1,0,0, + 0,1798,1801,1,0,0,0,1799,1797,1,0,0,0,1799,1800,1,0,0,0,1800,1802, + 1,0,0,0,1801,1799,1,0,0,0,1802,1803,3,381,190,0,1803,420,1,0,0,0, + 1804,1805,5,38,0,0,1805,1806,7,18,0,0,1806,1808,1,0,0,0,1807,1809, + 7,28,0,0,1808,1807,1,0,0,0,1809,1810,1,0,0,0,1810,1808,1,0,0,0,1810, + 1811,1,0,0,0,1811,1813,1,0,0,0,1812,1814,3,355,177,0,1813,1812,1, + 0,0,0,1813,1814,1,0,0,0,1814,422,1,0,0,0,1815,1817,7,29,0,0,1816, + 1815,1,0,0,0,1817,1818,1,0,0,0,1818,1816,1,0,0,0,1818,1819,1,0,0, + 0,1819,1824,1,0,0,0,1820,1821,7,2,0,0,1821,1823,3,423,211,0,1822, + 1820,1,0,0,0,1823,1826,1,0,0,0,1824,1822,1,0,0,0,1824,1825,1,0,0, + 0,1825,1831,1,0,0,0,1826,1824,1,0,0,0,1827,1832,3,381,190,0,1828, + 1832,3,355,177,0,1829,1832,3,375,187,0,1830,1832,3,359,179,0,1831, + 1827,1,0,0,0,1831,1828,1,0,0,0,1831,1829,1,0,0,0,1831,1830,1,0,0, + 0,1831,1832,1,0,0,0,1832,424,1,0,0,0,1833,1835,7,29,0,0,1834,1833, + 1,0,0,0,1835,1838,1,0,0,0,1836,1834,1,0,0,0,1836,1837,1,0,0,0,1837, + 1839,1,0,0,0,1838,1836,1,0,0,0,1839,1841,3,371,185,0,1840,1842,7, + 29,0,0,1841,1840,1,0,0,0,1842,1843,1,0,0,0,1843,1841,1,0,0,0,1843, + 1844,1,0,0,0,1844,1857,1,0,0,0,1845,1848,7,2,0,0,1846,1849,3,401, + 200,0,1847,1849,3,391,195,0,1848,1846,1,0,0,0,1848,1847,1,0,0,0, + 1848,1849,1,0,0,0,1849,1851,1,0,0,0,1850,1852,7,29,0,0,1851,1850, + 1,0,0,0,1852,1853,1,0,0,0,1853,1851,1,0,0,0,1853,1854,1,0,0,0,1854, + 1856,1,0,0,0,1855,1845,1,0,0,0,1856,1859,1,0,0,0,1857,1855,1,0,0, + 0,1857,1858,1,0,0,0,1858,1864,1,0,0,0,1859,1857,1,0,0,0,1860,1865, + 3,381,190,0,1861,1865,3,355,177,0,1862,1865,3,375,187,0,1863,1865, + 3,359,179,0,1864,1860,1,0,0,0,1864,1861,1,0,0,0,1864,1862,1,0,0, + 0,1864,1863,1,0,0,0,1864,1865,1,0,0,0,1865,426,1,0,0,0,1866,1868, + 3,381,190,0,1867,1869,3,447,223,0,1868,1867,1,0,0,0,1869,1870,1, + 0,0,0,1870,1868,1,0,0,0,1870,1871,1,0,0,0,1871,428,1,0,0,0,1872, + 1873,5,38,0,0,1873,1874,7,6,0,0,1874,1876,1,0,0,0,1875,1877,7,30, + 0,0,1876,1875,1,0,0,0,1877,1878,1,0,0,0,1878,1876,1,0,0,0,1878,1879, + 1,0,0,0,1879,1881,1,0,0,0,1880,1882,3,355,177,0,1881,1880,1,0,0, + 0,1881,1882,1,0,0,0,1882,430,1,0,0,0,1883,1885,3,361,180,0,1884, + 1886,7,28,0,0,1885,1884,1,0,0,0,1886,1887,1,0,0,0,1887,1885,1,0, + 0,0,1887,1888,1,0,0,0,1888,432,1,0,0,0,1889,1891,3,385,192,0,1890, + 1892,7,28,0,0,1891,1890,1,0,0,0,1892,1893,1,0,0,0,1893,1891,1,0, + 0,0,1893,1894,1,0,0,0,1894,1895,1,0,0,0,1895,1897,3,391,195,0,1896, + 1898,7,28,0,0,1897,1896,1,0,0,0,1898,1899,1,0,0,0,1899,1897,1,0, + 0,0,1899,1900,1,0,0,0,1900,1901,1,0,0,0,1901,1903,3,391,195,0,1902, + 1904,7,28,0,0,1903,1902,1,0,0,0,1904,1905,1,0,0,0,1905,1903,1,0, + 0,0,1905,1906,1,0,0,0,1906,1907,1,0,0,0,1907,1909,3,391,195,0,1908, + 1910,7,28,0,0,1909,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1909,1,0, + 0,0,1911,1912,1,0,0,0,1912,1913,1,0,0,0,1913,1915,3,391,195,0,1914, + 1916,7,28,0,0,1915,1914,1,0,0,0,1916,1917,1,0,0,0,1917,1915,1,0, + 0,0,1917,1918,1,0,0,0,1918,1919,1,0,0,0,1919,1920,3,407,203,0,1920, + 434,1,0,0,0,1921,1925,3,445,222,0,1922,1924,3,447,223,0,1923,1922, + 1,0,0,0,1924,1927,1,0,0,0,1925,1923,1,0,0,0,1925,1926,1,0,0,0,1926, + 436,1,0,0,0,1927,1925,1,0,0,0,1928,1929,5,32,0,0,1929,1931,5,95, + 0,0,1930,1932,5,13,0,0,1931,1930,1,0,0,0,1931,1932,1,0,0,0,1932, + 1933,1,0,0,0,1933,1934,5,10,0,0,1934,1935,1,0,0,0,1935,1936,6,218, + 0,0,1936,438,1,0,0,0,1937,1939,3,443,221,0,1938,1937,1,0,0,0,1938, + 1939,1,0,0,0,1939,1947,1,0,0,0,1940,1942,5,13,0,0,1941,1940,1,0, + 0,0,1941,1942,1,0,0,0,1942,1943,1,0,0,0,1943,1948,5,10,0,0,1944, + 1945,3,361,180,0,1945,1946,5,32,0,0,1946,1948,1,0,0,0,1947,1941, + 1,0,0,0,1947,1944,1,0,0,0,1948,1950,1,0,0,0,1949,1951,3,443,221, + 0,1950,1949,1,0,0,0,1950,1951,1,0,0,0,1951,440,1,0,0,0,1952,1954, + 3,443,221,0,1953,1952,1,0,0,0,1953,1954,1,0,0,0,1954,1962,1,0,0, + 0,1955,1963,5,39,0,0,1956,1958,3,361,180,0,1957,1956,1,0,0,0,1957, + 1958,1,0,0,0,1958,1959,1,0,0,0,1959,1960,3,273,136,0,1960,1961,5, + 32,0,0,1961,1963,1,0,0,0,1962,1955,1,0,0,0,1962,1957,1,0,0,0,1963, + 1968,1,0,0,0,1964,1967,3,437,218,0,1965,1967,8,31,0,0,1966,1964, + 1,0,0,0,1966,1965,1,0,0,0,1967,1970,1,0,0,0,1968,1966,1,0,0,0,1968, + 1969,1,0,0,0,1969,1971,1,0,0,0,1970,1968,1,0,0,0,1971,1972,6,220, + 1,0,1972,442,1,0,0,0,1973,1975,7,32,0,0,1974,1973,1,0,0,0,1975,1976, + 1,0,0,0,1976,1974,1,0,0,0,1976,1977,1,0,0,0,1977,444,1,0,0,0,1978, + 1979,7,33,0,0,1979,446,1,0,0,0,1980,1981,7,34,0,0,1981,448,1,0,0, + 0,36,0,1788,1790,1799,1810,1813,1818,1824,1831,1836,1843,1848,1853, + 1857,1864,1870,1878,1881,1887,1893,1899,1905,1911,1917,1925,1931, + 1938,1941,1947,1950,1953,1957,1962,1966,1968,1976,2,6,0,0,0,1,0 + ] + +class VisualBasic6Lexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + ACCESS = 1 + ADDRESSOF = 2 + ALIAS = 3 + AND = 4 + ATTRIBUTE = 5 + APPACTIVATE = 6 + APPEND = 7 + AS = 8 + BEEP = 9 + BEGIN = 10 + BEGINPROPERTY = 11 + BINARY = 12 + BOOLEAN = 13 + BYVAL = 14 + BYREF = 15 + BYTE = 16 + CALL = 17 + CASE = 18 + CHDIR = 19 + CHDRIVE = 20 + CLASS = 21 + CLOSE = 22 + COLLECTION = 23 + CONST = 24 + DATE = 25 + DECLARE = 26 + DEFBOOL = 27 + DEFBYTE = 28 + DEFDATE = 29 + DEFDBL = 30 + DEFDEC = 31 + DEFCUR = 32 + DEFINT = 33 + DEFLNG = 34 + DEFOBJ = 35 + DEFSNG = 36 + DEFSTR = 37 + DEFVAR = 38 + DELETESETTING = 39 + DIM = 40 + DO = 41 + DOUBLE = 42 + EACH = 43 + ELSE = 44 + ELSEIF = 45 + END_ENUM = 46 + END_FUNCTION = 47 + END_IF = 48 + END_PROPERTY = 49 + END_SELECT = 50 + END_SUB = 51 + END_TYPE = 52 + END_WITH = 53 + END = 54 + ENDPROPERTY = 55 + ENUM = 56 + EQV = 57 + ERASE = 58 + ERROR = 59 + EVENT = 60 + EXIT_DO = 61 + EXIT_FOR = 62 + EXIT_FUNCTION = 63 + EXIT_PROPERTY = 64 + EXIT_SUB = 65 + FALSE = 66 + FILECOPY = 67 + FRIEND = 68 + FOR = 69 + FUNCTION = 70 + GET = 71 + GLOBAL = 72 + GOSUB = 73 + GOTO = 74 + IF = 75 + IMP = 76 + IMPLEMENTS = 77 + IN = 78 + INPUT = 79 + IS = 80 + INTEGER = 81 + KILL = 82 + LOAD = 83 + LOCK = 84 + LONG = 85 + LOOP = 86 + LEN = 87 + LET = 88 + LIB = 89 + LIKE = 90 + LINE_INPUT = 91 + LOCK_READ = 92 + LOCK_WRITE = 93 + LOCK_READ_WRITE = 94 + LSET = 95 + MACRO_IF = 96 + MACRO_ELSEIF = 97 + MACRO_ELSE = 98 + MACRO_END_IF = 99 + ME = 100 + MID = 101 + MKDIR = 102 + MOD = 103 + NAME = 104 + NEXT = 105 + NEW = 106 + NOT = 107 + NOTHING = 108 + NULL_ = 109 + OBJECT = 110 + ON = 111 + ON_ERROR = 112 + ON_LOCAL_ERROR = 113 + OPEN = 114 + OPTIONAL = 115 + OPTION_BASE = 116 + OPTION_EXPLICIT = 117 + OPTION_COMPARE = 118 + OPTION_PRIVATE_MODULE = 119 + OR = 120 + OUTPUT = 121 + PARAMARRAY = 122 + PRESERVE = 123 + PRINT = 124 + PRIVATE = 125 + PROPERTY_GET = 126 + PROPERTY_LET = 127 + PROPERTY_SET = 128 + PUBLIC = 129 + PUT = 130 + RANDOM = 131 + RANDOMIZE = 132 + RAISEEVENT = 133 + READ = 134 + READ_WRITE = 135 + REDIM = 136 + REM = 137 + RESET = 138 + RESUME = 139 + RETURN = 140 + RMDIR = 141 + RSET = 142 + SAVEPICTURE = 143 + SAVESETTING = 144 + SEEK = 145 + SELECT = 146 + SENDKEYS = 147 + SET = 148 + SETATTR = 149 + SHARED = 150 + SINGLE = 151 + SPC = 152 + STATIC = 153 + STEP = 154 + STOP = 155 + STRING = 156 + SUB = 157 + TAB = 158 + TEXT = 159 + THEN = 160 + TIME = 161 + TO = 162 + TRUE = 163 + TYPE = 164 + TYPEOF = 165 + UNLOAD = 166 + UNLOCK = 167 + UNTIL = 168 + VARIANT = 169 + VERSION = 170 + WEND = 171 + WHILE = 172 + WIDTH = 173 + WITH = 174 + WITHEVENTS = 175 + WRITE = 176 + XOR = 177 + AMPERSAND = 178 + ASSIGN = 179 + AT = 180 + COLON = 181 + COMMA = 182 + IDIV = 183 + DIV = 184 + DOLLAR = 185 + DOT = 186 + EQ = 187 + EXCLAMATIONMARK = 188 + GEQ = 189 + GT = 190 + HASH = 191 + LEQ = 192 + LBRACE = 193 + LPAREN = 194 + LT = 195 + MINUS = 196 + MINUS_EQ = 197 + MULT = 198 + NEQ = 199 + PERCENT = 200 + PLUS = 201 + PLUS_EQ = 202 + POW = 203 + RBRACE = 204 + RPAREN = 205 + SEMICOLON = 206 + L_SQUARE_BRACKET = 207 + R_SQUARE_BRACKET = 208 + STRINGLITERAL = 209 + DATELITERAL = 210 + COLORLITERAL = 211 + INTEGERLITERAL = 212 + DOUBLELITERAL = 213 + FILENUMBER = 214 + OCTALLITERAL = 215 + FRX_OFFSET = 216 + GUID = 217 + IDENTIFIER = 218 + LINE_CONTINUATION = 219 + NEWLINE = 220 + COMMENT = 221 + WS = 222 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'ACCESS'", "'ADDRESSOF'", "'ALIAS'", "'AND'", "'ATTRIBUTE'", + "'APPACTIVATE'", "'APPEND'", "'AS'", "'BEEP'", "'BEGIN'", "'BEGINPROPERTY'", + "'BINARY'", "'BOOLEAN'", "'BYVAL'", "'BYREF'", "'BYTE'", "'CALL'", + "'CASE'", "'CHDIR'", "'CHDRIVE'", "'CLASS'", "'CLOSE'", "'COLLECTION'", + "'CONST'", "'DATE'", "'DECLARE'", "'DEFBOOL'", "'DEFBYTE'", + "'DEFDATE'", "'DEFDBL'", "'DEFDEC'", "'DEFCUR'", "'DEFINT'", + "'DEFLNG'", "'DEFOBJ'", "'DEFSNG'", "'DEFSTR'", "'DEFVAR'", + "'DELETESETTING'", "'DIM'", "'DO'", "'DOUBLE'", "'EACH'", "'ELSE'", + "'ELSEIF'", "'END ENUM'", "'END FUNCTION'", "'END IF'", "'END PROPERTY'", + "'END SELECT'", "'END SUB'", "'END TYPE'", "'END WITH'", "'END'", + "'ENDPROPERTY'", "'ENUM'", "'EQV'", "'ERASE'", "'ERROR'", "'EVENT'", + "'EXIT DO'", "'EXIT FOR'", "'EXIT FUNCTION'", "'EXIT PROPERTY'", + "'EXIT SUB'", "'FALSE'", "'FILECOPY'", "'FRIEND'", "'FOR'", + "'FUNCTION'", "'GET'", "'GLOBAL'", "'GOSUB'", "'GOTO'", "'IF'", + "'IMP'", "'IMPLEMENTS'", "'IN'", "'INPUT'", "'IS'", "'INTEGER'", + "'KILL'", "'LOAD'", "'LOCK'", "'LONG'", "'LOOP'", "'LEN'", "'LET'", + "'LIB'", "'LIKE'", "'LINE INPUT'", "'LOCK READ'", "'LOCK WRITE'", + "'LOCK READ WRITE'", "'LSET'", "'ME'", "'MID'", "'MKDIR'", "'MOD'", + "'NAME'", "'NEXT'", "'NEW'", "'NOT'", "'NOTHING'", "'NULL'", + "'OBJECT'", "'ON'", "'ON ERROR'", "'ON LOCAL ERROR'", "'OPEN'", + "'OPTIONAL'", "'OPTION BASE'", "'OPTION EXPLICIT'", "'OPTION COMPARE'", + "'OPTION PRIVATE MODULE'", "'OR'", "'OUTPUT'", "'PARAMARRAY'", + "'PRESERVE'", "'PRINT'", "'PRIVATE'", "'PROPERTY GET'", "'PROPERTY LET'", + "'PROPERTY SET'", "'PUBLIC'", "'PUT'", "'RANDOM'", "'RANDOMIZE'", + "'RAISEEVENT'", "'READ'", "'READ WRITE'", "'REDIM'", "'REM'", + "'RESET'", "'RESUME'", "'RETURN'", "'RMDIR'", "'RSET'", "'SAVEPICTURE'", + "'SAVESETTING'", "'SEEK'", "'SELECT'", "'SENDKEYS'", "'SET'", + "'SETATTR'", "'SHARED'", "'SINGLE'", "'SPC'", "'STATIC'", "'STEP'", + "'STOP'", "'STRING'", "'SUB'", "'TAB'", "'TEXT'", "'THEN'", + "'TIME'", "'TO'", "'TRUE'", "'TYPE'", "'TYPEOF'", "'UNLOAD'", + "'UNLOCK'", "'UNTIL'", "'VARIANT'", "'VERSION'", "'WEND'", "'WHILE'", + "'WIDTH'", "'WITH'", "'WITHEVENTS'", "'WRITE'", "'XOR'", "'&'", + "':='", "'@'", "':'", "','", "'\\'", "'/'", "'$'", "'.'", "'='", + "'!'", "'>='", "'>'", "'#'", "'<='", "'{'", "'('", "'<'", "'-'", + "'-='", "'*'", "'<>'", "'%'", "'+'", "'+='", "'^'", "'}'", "')'", + "';'", "'['", "']'" ] + + symbolicNames = [ "", + "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPACTIVATE", + "APPEND", "AS", "BEEP", "BEGIN", "BEGINPROPERTY", "BINARY", + "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CHDIR", + "CHDRIVE", "CLASS", "CLOSE", "COLLECTION", "CONST", "DATE", + "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFDEC", + "DEFCUR", "DEFINT", "DEFLNG", "DEFOBJ", "DEFSNG", "DEFSTR", + "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", "EACH", "ELSE", + "ELSEIF", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", + "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", "ENDPROPERTY", + "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", + "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FILECOPY", + "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", + "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "KILL", + "LOAD", "LOCK", "LONG", "LOOP", "LEN", "LET", "LIB", "LIKE", + "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", + "LSET", "MACRO_IF", "MACRO_ELSEIF", "MACRO_ELSE", "MACRO_END_IF", + "ME", "MID", "MKDIR", "MOD", "NAME", "NEXT", "NEW", "NOT", "NOTHING", + "NULL_", "OBJECT", "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", + "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", "OPTION_COMPARE", + "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", + "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", + "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RMDIR", + "RSET", "SAVEPICTURE", "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", + "SET", "SETATTR", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", + "STOP", "STRING", "SUB", "TAB", "TEXT", "THEN", "TIME", "TO", + "TRUE", "TYPE", "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", "VARIANT", + "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", "WRITE", + "XOR", "AMPERSAND", "ASSIGN", "AT", "COLON", "COMMA", "IDIV", + "DIV", "DOLLAR", "DOT", "EQ", "EXCLAMATIONMARK", "GEQ", "GT", + "HASH", "LEQ", "LBRACE", "LPAREN", "LT", "MINUS", "MINUS_EQ", + "MULT", "NEQ", "PERCENT", "PLUS", "PLUS_EQ", "POW", "RBRACE", + "RPAREN", "SEMICOLON", "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", + "STRINGLITERAL", "DATELITERAL", "COLORLITERAL", "INTEGERLITERAL", + "DOUBLELITERAL", "FILENUMBER", "OCTALLITERAL", "FRX_OFFSET", + "GUID", "IDENTIFIER", "LINE_CONTINUATION", "NEWLINE", "COMMENT", + "WS" ] + + ruleNames = [ "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPACTIVATE", + "APPEND", "AS", "BEEP", "BEGIN", "BEGINPROPERTY", "BINARY", + "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CHDIR", + "CHDRIVE", "CLASS", "CLOSE", "COLLECTION", "CONST", "DATE", + "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", + "DEFDEC", "DEFCUR", "DEFINT", "DEFLNG", "DEFOBJ", "DEFSNG", + "DEFSTR", "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", + "EACH", "ELSE", "ELSEIF", "END_ENUM", "END_FUNCTION", + "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", + "END_WITH", "END", "ENDPROPERTY", "ENUM", "EQV", "ERASE", + "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", + "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FILECOPY", "FRIEND", + "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", "IF", + "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "KILL", + "LOAD", "LOCK", "LONG", "LOOP", "LEN", "LET", "LIB", "LIKE", + "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", + "LSET", "MACRO_IF", "MACRO_ELSEIF", "MACRO_ELSE", "MACRO_END_IF", + "ME", "MID", "MKDIR", "MOD", "NAME", "NEXT", "NEW", "NOT", + "NOTHING", "NULL_", "OBJECT", "ON", "ON_ERROR", "ON_LOCAL_ERROR", + "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", + "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", + "PROPERTY_LET", "PROPERTY_SET", "PUBLIC", "PUT", "RANDOM", + "RANDOMIZE", "RAISEEVENT", "READ", "READ_WRITE", "REDIM", + "REM", "RESET", "RESUME", "RETURN", "RMDIR", "RSET", "SAVEPICTURE", + "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", "SET", "SETATTR", + "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", + "SUB", "TAB", "TEXT", "THEN", "TIME", "TO", "TRUE", "TYPE", + "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", "VARIANT", "VERSION", + "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", "WRITE", + "XOR", "AMPERSAND", "ASSIGN", "AT", "COLON", "COMMA", + "IDIV", "DIV", "DOLLAR", "DOT", "EQ", "EXCLAMATIONMARK", + "GEQ", "GT", "HASH", "LEQ", "LBRACE", "LPAREN", "LT", + "MINUS", "MINUS_EQ", "MULT", "NEQ", "PERCENT", "PLUS", + "PLUS_EQ", "POW", "RBRACE", "RPAREN", "SEMICOLON", "L_SQUARE_BRACKET", + "R_SQUARE_BRACKET", "STRINGLITERAL", "DATELITERAL", "COLORLITERAL", + "INTEGERLITERAL", "DOUBLELITERAL", "FILENUMBER", "OCTALLITERAL", + "FRX_OFFSET", "GUID", "IDENTIFIER", "LINE_CONTINUATION", + "NEWLINE", "COMMENT", "WS", "LETTER", "LETTERORDIGIT" ] + + grammarFileName = "VisualBasic6Lexer.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/Analysis/vb_parser/VisualBasic6Parser.py b/Analysis/vb_parser/VisualBasic6Parser.py new file mode 100644 index 000000000..71472886c --- /dev/null +++ b/Analysis/vb_parser/VisualBasic6Parser.py @@ -0,0 +1,18990 @@ +# Generated from VisualBasic6Parser.g4 by ANTLR 4.13.1 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + +def serializedATN(): + return [ + 4,1,222,2862,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,2,129,7,129,2,130,7,130,2,131, + 7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136, + 2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142, + 7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147, + 2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153, + 7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,1,0,1,0,1, + 0,1,1,3,1,321,8,1,1,1,5,1,324,8,1,10,1,12,1,327,9,1,1,1,1,1,4,1, + 331,8,1,11,1,12,1,332,3,1,335,8,1,1,1,3,1,338,8,1,1,1,5,1,341,8, + 1,10,1,12,1,344,9,1,1,1,3,1,347,8,1,1,1,5,1,350,8,1,10,1,12,1,353, + 9,1,1,1,3,1,356,8,1,1,1,5,1,359,8,1,10,1,12,1,362,9,1,1,1,3,1,365, + 8,1,1,1,5,1,368,8,1,10,1,12,1,371,9,1,1,1,3,1,374,8,1,1,1,5,1,377, + 8,1,10,1,12,1,380,9,1,1,1,3,1,383,8,1,1,1,5,1,386,8,1,10,1,12,1, + 389,9,1,1,1,3,1,392,8,1,1,2,4,2,395,8,2,11,2,12,2,396,1,3,1,3,3, + 3,401,8,3,1,3,1,3,3,3,405,8,3,1,3,1,3,1,3,3,3,410,8,3,1,3,3,3,413, + 8,3,1,3,5,3,416,8,3,10,3,12,3,419,9,3,1,4,1,4,1,5,1,5,1,6,1,6,1, + 6,1,6,1,6,3,6,430,8,6,1,7,1,7,4,7,434,8,7,11,7,12,7,435,1,7,4,7, + 439,8,7,11,7,12,7,440,1,7,1,7,4,7,445,8,7,11,7,12,7,446,1,8,1,8, + 3,8,451,8,8,1,8,1,8,3,8,455,8,8,1,8,1,8,1,8,1,9,1,9,4,9,462,8,9, + 11,9,12,9,463,4,9,466,8,9,11,9,12,9,467,1,10,1,10,4,10,472,8,10, + 11,10,12,10,473,4,10,476,8,10,11,10,12,10,477,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,3,11,488,8,11,1,12,1,12,4,12,492,8,12,11,12, + 12,12,493,1,12,5,12,497,8,12,10,12,12,12,500,9,12,1,13,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,514,8,13,1,14, + 3,14,517,8,14,1,14,1,14,1,14,1,14,1,14,1,14,3,14,525,8,14,1,14,4, + 14,528,8,14,11,14,12,14,529,1,14,4,14,533,8,14,11,14,12,14,534,1, + 14,1,14,5,14,539,8,14,10,14,12,14,542,9,14,1,15,1,15,1,15,3,15,547, + 8,15,1,16,3,16,550,8,16,1,16,1,16,3,16,554,8,16,1,16,1,16,3,16,558, + 8,16,1,16,3,16,561,8,16,1,16,1,16,3,16,565,8,16,1,16,4,16,568,8, + 16,11,16,12,16,569,1,17,1,17,3,17,574,8,17,1,17,1,17,1,17,1,17,1, + 17,3,17,581,8,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,589,8,17,5,17, + 591,8,17,10,17,12,17,594,9,17,1,18,3,18,597,8,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,3,18,606,8,18,1,19,3,19,609,8,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,3,19,618,8,19,1,19,1,19,3,19,622,8,19,1,19, + 4,19,625,8,19,11,19,12,19,626,1,19,4,19,630,8,19,11,19,12,19,631, + 3,19,634,8,19,1,19,1,19,4,19,638,8,19,11,19,12,19,639,1,20,1,20, + 1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,3,23,652,8,23,1,23,1,23, + 3,23,656,8,23,1,23,1,23,3,23,660,8,23,1,23,1,23,3,23,664,8,23,1, + 23,5,23,667,8,23,10,23,12,23,670,9,23,1,24,1,24,4,24,674,8,24,11, + 24,12,24,675,1,24,3,24,679,8,24,1,24,5,24,682,8,24,10,24,12,24,685, + 9,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,3,25,754,8,25,1,26,1,26,1,26,1,26,3,26,760,8,26,1, + 26,1,26,3,26,764,8,26,1,26,3,26,767,8,26,1,27,1,27,1,28,1,28,1,28, + 1,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,3,30,783,8,30,1,30, + 1,30,3,30,787,8,30,1,30,5,30,790,8,30,10,30,12,30,793,9,30,3,30, + 795,8,30,1,31,1,31,1,31,3,31,800,8,31,1,31,1,31,1,31,1,31,3,31,806, + 8,31,1,31,1,31,3,31,810,8,31,1,31,5,31,813,8,31,10,31,12,31,816, + 9,31,1,32,1,32,3,32,820,8,32,1,32,1,32,3,32,824,8,32,1,32,3,32,827, + 8,32,1,32,1,32,3,32,831,8,32,1,32,1,32,1,33,1,33,3,33,837,8,33,1, + 33,1,33,3,33,841,8,33,1,33,1,33,1,34,1,34,1,34,3,34,848,8,34,1,34, + 1,34,1,34,1,34,3,34,854,8,34,1,34,3,34,857,8,34,1,34,1,34,1,34,3, + 34,862,8,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,872,8,34, + 1,34,3,34,875,8,34,1,34,3,34,878,8,34,1,34,1,34,3,34,882,8,34,1, + 35,1,35,1,35,1,35,3,35,888,8,35,1,35,1,35,3,35,892,8,35,1,35,5,35, + 895,8,35,10,35,12,35,898,9,35,1,36,1,36,1,36,1,36,3,36,904,8,36, + 1,36,1,36,3,36,908,8,36,1,36,1,36,3,36,912,8,36,1,36,1,36,3,36,916, + 8,36,1,36,3,36,919,8,36,1,37,1,37,4,37,923,8,37,11,37,12,37,924, + 1,37,1,37,4,37,929,8,37,11,37,12,37,930,3,37,933,8,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,4,37,942,8,37,11,37,12,37,943,1,37,1,37, + 4,37,948,8,37,11,37,12,37,949,3,37,952,8,37,1,37,1,37,1,37,1,37, + 4,37,958,8,37,11,37,12,37,959,1,37,1,37,4,37,964,8,37,11,37,12,37, + 965,3,37,968,8,37,1,37,1,37,1,37,1,37,1,37,3,37,975,8,37,1,38,1, + 38,1,39,1,39,1,39,3,39,982,8,39,1,39,1,39,1,39,1,39,4,39,988,8,39, + 11,39,12,39,989,1,39,5,39,993,8,39,10,39,12,39,996,9,39,1,39,1,39, + 1,40,1,40,3,40,1002,8,40,1,40,1,40,3,40,1006,8,40,1,40,3,40,1009, + 8,40,1,40,4,40,1012,8,40,11,40,12,40,1013,1,41,1,41,1,41,1,41,3, + 41,1020,8,41,1,41,1,41,3,41,1024,8,41,1,41,5,41,1027,8,41,10,41, + 12,41,1030,9,41,1,42,1,42,1,42,1,42,1,43,1,43,1,43,3,43,1039,8,43, + 1,43,1,43,1,43,1,43,3,43,1045,8,43,1,43,1,43,1,44,1,44,1,45,1,45, + 1,45,1,45,3,45,1055,8,45,1,45,1,45,3,45,1059,8,45,1,45,1,45,1,46, + 1,46,1,46,1,46,1,46,1,46,3,46,1069,8,46,1,46,1,46,1,46,1,46,1,46, + 4,46,1076,8,46,11,46,12,46,1077,1,46,1,46,4,46,1082,8,46,11,46,12, + 46,1083,3,46,1086,8,46,1,46,1,46,1,46,3,46,1091,8,46,1,47,1,47,1, + 47,1,47,3,47,1097,8,47,1,47,1,47,3,47,1101,8,47,1,47,3,47,1104,8, + 47,1,47,1,47,3,47,1108,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,3,47,1119,8,47,1,47,4,47,1122,8,47,11,47,12,47,1123,1,47, + 1,47,4,47,1128,8,47,11,47,12,47,1129,3,47,1132,8,47,1,47,1,47,1, + 47,1,47,3,47,1138,8,47,3,47,1140,8,47,1,48,1,48,1,48,3,48,1145,8, + 48,1,48,1,48,3,48,1149,8,48,1,48,1,48,1,48,1,48,3,48,1155,8,48,1, + 48,3,48,1158,8,48,1,48,1,48,3,48,1162,8,48,1,48,4,48,1165,8,48,11, + 48,12,48,1166,1,48,1,48,4,48,1171,8,48,11,48,12,48,1172,3,48,1175, + 8,48,1,48,1,48,1,49,1,49,1,49,1,49,3,49,1183,8,49,1,49,1,49,3,49, + 1187,8,49,1,49,3,49,1190,8,49,1,49,3,49,1193,8,49,1,49,1,49,3,49, + 1197,8,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,52, + 1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1220,8,52, + 1,52,1,52,5,52,1224,8,52,10,52,12,52,1227,9,52,1,52,3,52,1230,8, + 52,1,52,1,52,3,52,1234,8,52,1,53,1,53,1,53,1,53,1,53,1,53,4,53,1242, + 8,53,11,53,12,53,1243,1,53,1,53,4,53,1248,8,53,11,53,12,53,1249, + 3,53,1252,8,53,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,4,55,1262, + 8,55,11,55,12,55,1263,1,55,1,55,4,55,1268,8,55,11,55,12,55,1269, + 3,55,1272,8,55,1,56,1,56,4,56,1276,8,56,11,56,12,56,1277,1,56,1, + 56,4,56,1282,8,56,11,56,12,56,1283,3,56,1286,8,56,1,57,1,57,1,57, + 1,57,1,58,1,58,1,58,1,58,3,58,1296,8,58,1,58,1,58,3,58,1300,8,58, + 1,58,4,58,1303,8,58,11,58,12,58,1304,1,59,1,59,1,59,1,59,1,60,1, + 60,3,60,1313,8,60,1,60,1,60,3,60,1317,8,60,1,60,1,60,3,60,1321,8, + 60,1,60,1,60,1,61,1,61,1,61,1,61,3,61,1329,8,61,1,61,1,61,3,61,1333, + 8,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,3,63,1345, + 8,63,1,63,1,63,3,63,1349,8,63,1,63,1,63,1,63,1,63,1,63,3,63,1356, + 8,63,3,63,1358,8,63,1,64,1,64,1,64,1,64,3,64,1364,8,64,1,64,1,64, + 3,64,1368,8,64,1,64,1,64,1,65,1,65,5,65,1374,8,65,10,65,12,65,1377, + 9,65,1,65,3,65,1380,8,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66, + 4,66,1390,8,66,11,66,12,66,1391,1,66,1,66,4,66,1396,8,66,11,66,12, + 66,1397,3,66,1400,8,66,1,67,1,67,1,67,1,67,1,67,1,67,4,67,1408,8, + 67,11,67,12,67,1409,1,67,1,67,4,67,1414,8,67,11,67,12,67,1415,3, + 67,1418,8,67,1,68,1,68,4,68,1422,8,68,11,68,12,68,1423,1,68,1,68, + 4,68,1428,8,68,11,68,12,68,1429,3,68,1432,8,68,1,69,1,69,3,69,1436, + 8,69,1,69,1,69,3,69,1440,8,69,1,69,1,69,3,69,1444,8,69,1,69,1,69, + 1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72, + 1,72,1,72,1,72,1,72,1,72,3,72,1466,8,72,1,72,1,72,1,72,3,72,1471, + 8,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1481,8,73,1,73, + 1,73,3,73,1485,8,73,1,73,5,73,1488,8,73,10,73,12,73,1491,9,73,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,1501,8,74,1,74,1,74,3, + 74,1505,8,74,1,74,5,74,1508,8,74,10,74,12,74,1511,9,74,1,75,1,75, + 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,1524,8,75,1,75, + 1,75,3,75,1528,8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,1537, + 8,75,1,75,1,75,3,75,1541,8,75,1,75,3,75,1544,8,75,1,76,1,76,3,76, + 1548,8,76,1,76,1,76,3,76,1552,8,76,1,76,3,76,1555,8,76,5,76,1557, + 8,76,10,76,12,76,1560,9,76,1,76,3,76,1563,8,76,1,76,3,76,1566,8, + 76,1,76,1,76,3,76,1570,8,76,1,76,3,76,1573,8,76,4,76,1575,8,76,11, + 76,12,76,1576,3,76,1579,8,76,1,77,1,77,3,77,1583,8,77,1,77,1,77, + 3,77,1587,8,77,1,77,1,77,3,77,1591,8,77,1,77,1,77,3,77,1595,8,77, + 1,77,3,77,1598,8,77,1,78,1,78,1,78,1,78,3,78,1604,8,78,1,78,1,78, + 3,78,1608,8,78,1,78,3,78,1611,8,78,1,79,1,79,1,79,3,79,1616,8,79, + 1,79,1,79,3,79,1620,8,79,1,79,1,79,1,79,1,79,3,79,1626,8,79,1,79, + 3,79,1629,8,79,1,79,3,79,1632,8,79,1,79,1,79,3,79,1636,8,79,1,79, + 4,79,1639,8,79,11,79,12,79,1640,1,79,1,79,4,79,1645,8,79,11,79,12, + 79,1646,3,79,1649,8,79,1,79,1,79,1,80,1,80,1,80,3,80,1656,8,80,1, + 80,1,80,3,80,1660,8,80,1,80,1,80,1,80,1,80,3,80,1666,8,80,1,80,3, + 80,1669,8,80,1,80,4,80,1672,8,80,11,80,12,80,1673,1,80,1,80,4,80, + 1678,8,80,11,80,12,80,1679,3,80,1682,8,80,1,80,1,80,1,81,1,81,1, + 81,3,81,1689,8,81,1,81,1,81,3,81,1693,8,81,1,81,1,81,1,81,1,81,3, + 81,1699,8,81,1,81,3,81,1702,8,81,1,81,4,81,1705,8,81,11,81,12,81, + 1706,1,81,1,81,4,81,1711,8,81,11,81,12,81,1712,3,81,1715,8,81,1, + 81,1,81,1,82,1,82,1,82,1,82,3,82,1723,8,82,1,82,1,82,3,82,1727,8, + 82,1,82,3,82,1730,8,82,1,82,3,82,1733,8,82,1,82,1,82,3,82,1737,8, + 82,1,82,1,82,1,83,1,83,1,83,1,83,3,83,1745,8,83,1,83,1,83,3,83,1749, + 8,83,1,83,1,83,3,83,1753,8,83,3,83,1755,8,83,1,83,3,83,1758,8,83, + 1,84,1,84,1,84,3,84,1763,8,84,1,85,1,85,1,85,1,85,3,85,1769,8,85, + 1,85,1,85,3,85,1773,8,85,1,85,1,85,3,85,1777,8,85,1,85,5,85,1780, + 8,85,10,85,12,85,1783,9,85,1,86,1,86,3,86,1787,8,86,1,86,1,86,3, + 86,1791,8,86,1,86,1,86,3,86,1795,8,86,1,86,1,86,1,86,3,86,1800,8, + 86,1,87,1,87,1,88,1,88,1,88,1,88,3,88,1808,8,88,3,88,1810,8,88,1, + 89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,3,91,1822,8,91,1, + 91,1,91,3,91,1826,8,91,1,91,1,91,1,92,1,92,1,92,1,92,3,92,1834,8, + 92,1,92,1,92,3,92,1838,8,92,1,92,1,92,1,93,1,93,1,93,1,93,3,93,1846, + 8,93,1,93,1,93,3,93,1850,8,93,1,93,1,93,3,93,1854,8,93,1,93,1,93, + 3,93,1858,8,93,1,93,1,93,3,93,1862,8,93,1,93,1,93,3,93,1866,8,93, + 1,93,1,93,1,94,1,94,1,94,1,94,3,94,1874,8,94,1,94,1,94,3,94,1878, + 8,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,4,95,1888,8,95,11,95, + 12,95,1889,1,95,5,95,1893,8,95,10,95,12,95,1896,9,95,1,95,3,95,1899, + 8,95,1,95,1,95,1,96,1,96,1,96,1,96,3,96,1907,8,96,1,96,3,96,1910, + 8,96,1,96,5,96,1913,8,96,10,96,12,96,1916,9,96,1,96,4,96,1919,8, + 96,11,96,12,96,1920,3,96,1923,8,96,1,96,1,96,4,96,1927,8,96,11,96, + 12,96,1928,3,96,1931,8,96,1,97,1,97,1,97,3,97,1936,8,97,1,97,1,97, + 3,97,1940,8,97,1,97,5,97,1943,8,97,10,97,12,97,1946,9,97,3,97,1948, + 8,97,1,98,1,98,3,98,1952,8,98,1,98,1,98,3,98,1956,8,98,1,98,1,98, + 1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,1967,8,98,1,99,1,99,1,99, + 1,99,3,99,1973,8,99,1,99,1,99,3,99,1977,8,99,1,99,3,99,1980,8,99, + 1,100,1,100,1,100,1,100,3,100,1986,8,100,1,100,1,100,3,100,1990, + 8,100,1,100,1,100,1,101,1,101,1,101,1,101,3,101,1998,8,101,1,101, + 1,101,3,101,2002,8,101,1,101,1,101,1,102,1,102,1,103,1,103,1,103, + 3,103,2011,8,103,1,103,1,103,3,103,2015,8,103,1,103,1,103,1,103, + 1,103,3,103,2021,8,103,1,103,3,103,2024,8,103,1,103,4,103,2027,8, + 103,11,103,12,103,2028,1,103,1,103,4,103,2033,8,103,11,103,12,103, + 2034,3,103,2037,8,103,1,103,1,103,1,104,1,104,3,104,2043,8,104,1, + 104,1,104,3,104,2047,8,104,1,104,1,104,1,105,1,105,1,105,3,105,2054, + 8,105,1,105,1,105,1,105,1,105,4,105,2060,8,105,11,105,12,105,2061, + 1,105,5,105,2065,8,105,10,105,12,105,2068,9,105,1,105,1,105,1,106, + 1,106,3,106,2074,8,106,1,106,1,106,3,106,2078,8,106,1,106,3,106, + 2081,8,106,1,106,3,106,2084,8,106,1,106,3,106,2087,8,106,1,106,1, + 106,3,106,2091,8,106,1,106,4,106,2094,8,106,11,106,12,106,2095,1, + 107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,2105,8,107,1,108,1, + 108,1,108,1,108,1,109,1,109,1,109,1,109,3,109,2115,8,109,1,109,1, + 109,3,109,2119,8,109,1,109,1,109,1,109,1,109,1,109,3,109,2126,8, + 109,3,109,2128,8,109,1,110,1,110,1,110,1,110,3,110,2134,8,110,1, + 110,1,110,3,110,2138,8,110,1,110,1,110,3,110,2142,8,110,1,110,5, + 110,2145,8,110,10,110,12,110,2148,9,110,1,110,3,110,2151,8,110,1, + 110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 3,110,2164,8,110,1,110,1,110,3,110,2168,8,110,1,110,1,110,1,110, + 1,110,3,110,2174,8,110,1,110,1,110,1,110,1,110,1,110,1,110,3,110, + 2182,8,110,1,110,1,110,3,110,2186,8,110,1,110,1,110,3,110,2190,8, + 110,1,110,1,110,3,110,2194,8,110,1,110,1,110,3,110,2198,8,110,1, + 110,1,110,3,110,2202,8,110,1,110,1,110,1,110,3,110,2207,8,110,1, + 110,1,110,3,110,2211,8,110,1,110,1,110,1,110,3,110,2216,8,110,1, + 110,1,110,3,110,2220,8,110,1,110,1,110,1,110,3,110,2225,8,110,1, + 110,1,110,3,110,2229,8,110,1,110,1,110,1,110,3,110,2234,8,110,1, + 110,1,110,3,110,2238,8,110,1,110,1,110,1,110,3,110,2243,8,110,1, + 110,1,110,3,110,2247,8,110,1,110,1,110,1,110,3,110,2252,8,110,1, + 110,1,110,3,110,2256,8,110,1,110,1,110,1,110,3,110,2261,8,110,1, + 110,1,110,3,110,2265,8,110,1,110,1,110,1,110,3,110,2270,8,110,1, + 110,1,110,3,110,2274,8,110,1,110,1,110,1,110,3,110,2279,8,110,1, + 110,1,110,3,110,2283,8,110,1,110,1,110,1,110,3,110,2288,8,110,1, + 110,1,110,3,110,2292,8,110,1,110,1,110,1,110,3,110,2297,8,110,1, + 110,1,110,3,110,2301,8,110,1,110,5,110,2304,8,110,10,110,12,110, + 2307,9,110,1,111,1,111,1,111,3,111,2312,8,111,1,111,1,111,1,111, + 3,111,2317,8,111,1,111,1,111,1,112,1,112,3,112,2323,8,112,1,112, + 1,112,3,112,2327,8,112,1,112,5,112,2330,8,112,10,112,12,112,2333, + 9,112,1,113,1,113,3,113,2337,8,113,1,113,3,113,2340,8,113,1,113, + 1,113,3,113,2344,8,113,1,113,1,113,3,113,2348,8,113,3,113,2350,8, + 113,1,113,1,113,3,113,2354,8,113,3,113,2356,8,113,1,113,1,113,3, + 113,2360,8,113,1,114,1,114,1,114,1,114,4,114,2366,8,114,11,114,12, + 114,2367,1,114,5,114,2371,8,114,10,114,12,114,2374,9,114,1,114,5, + 114,2377,8,114,10,114,12,114,2380,9,114,1,114,1,114,1,115,1,115, + 1,115,1,115,3,115,2388,8,115,1,115,1,115,3,115,2392,8,115,1,115, + 1,115,1,116,1,116,1,116,1,116,3,116,2400,8,116,1,116,1,116,4,116, + 2404,8,116,11,116,12,116,2405,1,116,1,116,4,116,2410,8,116,11,116, + 12,116,2411,3,116,2414,8,116,1,116,1,116,1,117,1,117,1,117,1,117, + 3,117,2422,8,117,1,117,1,117,3,117,2426,8,117,1,117,3,117,2429,8, + 117,1,118,1,118,3,118,2433,8,118,1,119,1,119,1,119,1,119,3,119,2439, + 8,119,1,119,3,119,2442,8,119,1,119,1,119,3,119,2446,8,119,1,119, + 1,119,3,119,2450,8,119,1,119,1,119,3,119,2454,8,119,1,120,1,120, + 1,120,3,120,2459,8,120,1,120,1,120,3,120,2463,8,120,1,120,1,120, + 3,120,2467,8,120,1,120,3,120,2470,8,120,1,120,1,120,3,120,2474,8, + 120,1,120,1,120,3,120,2478,8,120,1,120,1,120,3,120,2482,8,120,1, + 121,1,121,3,121,2486,8,121,1,122,1,122,1,122,3,122,2491,8,122,1, + 123,3,123,2494,8,123,1,123,1,123,1,123,3,123,2499,8,123,1,123,1, + 123,3,123,2503,8,123,1,123,3,123,2506,8,123,1,124,1,124,1,124,1, + 124,3,124,2512,8,124,1,125,1,125,3,125,2516,8,125,1,125,3,125,2519, + 8,125,1,126,1,126,1,126,3,126,2524,8,126,1,126,3,126,2527,8,126, + 1,126,3,126,2530,8,126,1,126,1,126,3,126,2534,8,126,1,126,1,126, + 3,126,2538,8,126,3,126,2540,8,126,1,126,4,126,2543,8,126,11,126, + 12,126,2544,1,126,3,126,2548,8,126,1,127,1,127,3,127,2552,8,127, + 1,127,3,127,2555,8,127,1,127,1,127,3,127,2559,8,127,1,127,1,127, + 3,127,2563,8,127,3,127,2565,8,127,1,127,1,127,1,128,1,128,3,128, + 2571,8,128,1,128,4,128,2574,8,128,11,128,12,128,2575,1,128,3,128, + 2579,8,128,1,129,3,129,2582,8,129,1,129,1,129,1,129,3,129,2587,8, + 129,1,130,1,130,1,131,3,131,2592,8,131,1,131,3,131,2595,8,131,1, + 131,1,131,3,131,2599,8,131,5,131,2601,8,131,10,131,12,131,2604,9, + 131,1,131,1,131,3,131,2608,8,131,1,131,1,131,3,131,2612,8,131,1, + 131,3,131,2615,8,131,5,131,2617,8,131,10,131,12,131,2620,9,131,1, + 132,1,132,3,132,2624,8,132,1,132,1,132,1,133,1,133,1,133,3,133,2631, + 8,133,1,134,1,134,3,134,2635,8,134,1,134,1,134,3,134,2639,8,134, + 1,134,1,134,3,134,2643,8,134,1,134,5,134,2646,8,134,10,134,12,134, + 2649,9,134,3,134,2651,8,134,1,134,3,134,2654,8,134,1,134,1,134,1, + 135,1,135,3,135,2660,8,135,1,135,1,135,3,135,2664,8,135,1,135,1, + 135,3,135,2668,8,135,1,135,1,135,3,135,2672,8,135,1,135,3,135,2675, + 8,135,1,135,1,135,3,135,2679,8,135,1,135,3,135,2682,8,135,1,135, + 1,135,3,135,2686,8,135,1,135,3,135,2689,8,135,1,135,3,135,2692,8, + 135,1,136,1,136,3,136,2696,8,136,1,136,1,136,1,137,1,137,3,137,2702, + 8,137,1,137,1,137,3,137,2706,8,137,1,137,5,137,2709,8,137,10,137, + 12,137,2712,9,137,1,138,1,138,1,138,1,138,1,138,3,138,2719,8,138, + 1,138,1,138,1,139,1,139,4,139,2725,8,139,11,139,12,139,2726,1,139, + 1,139,1,139,4,139,2732,8,139,11,139,12,139,2733,1,139,3,139,2737, + 8,139,1,140,1,140,1,140,1,140,3,140,2743,8,140,1,140,1,140,1,140, + 3,140,2748,8,140,1,141,1,141,1,142,1,142,1,142,5,142,2755,8,142, + 10,142,12,142,2758,9,142,1,142,1,142,1,142,4,142,2763,8,142,11,142, + 12,142,2764,3,142,2767,8,142,1,143,1,143,1,144,1,144,1,144,5,144, + 2774,8,144,10,144,12,144,2777,9,144,1,145,1,145,3,145,2781,8,145, + 1,145,1,145,3,145,2785,8,145,1,146,1,146,3,146,2789,8,146,1,146, + 1,146,3,146,2793,8,146,1,146,3,146,2796,8,146,1,147,1,147,1,147, + 1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148, + 3,148,2812,8,148,1,149,1,149,1,150,1,150,1,151,1,151,3,151,2820, + 8,151,1,151,3,151,2823,8,151,1,151,1,151,3,151,2827,8,151,1,151, + 3,151,2830,8,151,1,152,1,152,1,153,1,153,1,154,1,154,1,155,5,155, + 2839,8,155,10,155,12,155,2842,9,155,1,155,1,155,1,156,5,156,2847, + 8,156,10,156,12,156,2850,9,156,1,156,1,156,1,157,5,157,2855,8,157, + 10,157,12,157,2858,9,157,1,157,1,157,1,157,0,1,220,158,0,2,4,6,8, + 10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52, + 54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96, + 98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130, + 132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, + 164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194, + 196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226, + 228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258, + 260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290, + 292,294,296,298,300,302,304,306,308,310,312,314,0,23,2,0,12,12,159, + 159,1,0,27,38,2,0,168,168,172,172,1,0,61,65,2,0,220,220,222,222, + 3,0,187,187,197,197,202,202,1,0,112,113,5,0,7,7,12,12,79,79,121, + 121,131,131,2,0,134,135,176,176,2,0,92,94,150,150,2,0,182,182,206, + 206,2,0,152,152,158,158,2,0,196,196,201,201,2,0,184,184,198,198, + 7,0,80,80,90,90,187,187,189,190,192,192,195,195,199,199,2,0,14,15, + 122,122,1,0,14,15,11,0,13,13,16,16,23,23,25,25,42,42,81,81,85,85, + 110,110,151,151,156,156,169,169,2,0,125,125,129,129,3,0,72,72,125, + 125,129,129,6,0,178,178,180,180,185,185,188,188,191,191,200,200, + 4,0,68,68,72,72,125,125,129,129,11,0,1,10,12,45,54,54,56,60,66,90, + 95,95,100,111,114,115,120,125,129,134,136,177,3308,0,316,1,0,0,0, + 2,320,1,0,0,0,4,394,1,0,0,0,6,398,1,0,0,0,8,420,1,0,0,0,10,422,1, + 0,0,0,12,424,1,0,0,0,14,431,1,0,0,0,16,448,1,0,0,0,18,465,1,0,0, + 0,20,475,1,0,0,0,22,487,1,0,0,0,24,489,1,0,0,0,26,513,1,0,0,0,28, + 516,1,0,0,0,30,546,1,0,0,0,32,549,1,0,0,0,34,573,1,0,0,0,36,596, + 1,0,0,0,38,608,1,0,0,0,40,641,1,0,0,0,42,643,1,0,0,0,44,645,1,0, + 0,0,46,647,1,0,0,0,48,671,1,0,0,0,50,753,1,0,0,0,52,755,1,0,0,0, + 54,768,1,0,0,0,56,770,1,0,0,0,58,774,1,0,0,0,60,778,1,0,0,0,62,799, + 1,0,0,0,64,817,1,0,0,0,66,834,1,0,0,0,68,847,1,0,0,0,70,883,1,0, + 0,0,72,899,1,0,0,0,74,974,1,0,0,0,76,976,1,0,0,0,78,981,1,0,0,0, + 80,999,1,0,0,0,82,1015,1,0,0,0,84,1031,1,0,0,0,86,1038,1,0,0,0,88, + 1048,1,0,0,0,90,1050,1,0,0,0,92,1062,1,0,0,0,94,1092,1,0,0,0,96, + 1144,1,0,0,0,98,1178,1,0,0,0,100,1200,1,0,0,0,102,1204,1,0,0,0,104, + 1233,1,0,0,0,106,1235,1,0,0,0,108,1253,1,0,0,0,110,1255,1,0,0,0, + 112,1273,1,0,0,0,114,1287,1,0,0,0,116,1291,1,0,0,0,118,1306,1,0, + 0,0,120,1312,1,0,0,0,122,1324,1,0,0,0,124,1336,1,0,0,0,126,1340, + 1,0,0,0,128,1359,1,0,0,0,130,1371,1,0,0,0,132,1383,1,0,0,0,134,1401, + 1,0,0,0,136,1419,1,0,0,0,138,1433,1,0,0,0,140,1447,1,0,0,0,142,1451, + 1,0,0,0,144,1459,1,0,0,0,146,1472,1,0,0,0,148,1492,1,0,0,0,150,1512, + 1,0,0,0,152,1578,1,0,0,0,154,1597,1,0,0,0,156,1599,1,0,0,0,158,1615, + 1,0,0,0,160,1655,1,0,0,0,162,1688,1,0,0,0,164,1718,1,0,0,0,166,1740, + 1,0,0,0,168,1759,1,0,0,0,170,1764,1,0,0,0,172,1784,1,0,0,0,174,1801, + 1,0,0,0,176,1803,1,0,0,0,178,1811,1,0,0,0,180,1813,1,0,0,0,182,1817, + 1,0,0,0,184,1829,1,0,0,0,186,1841,1,0,0,0,188,1869,1,0,0,0,190,1881, + 1,0,0,0,192,1902,1,0,0,0,194,1947,1,0,0,0,196,1966,1,0,0,0,198,1968, + 1,0,0,0,200,1981,1,0,0,0,202,1993,1,0,0,0,204,2005,1,0,0,0,206,2010, + 1,0,0,0,208,2040,1,0,0,0,210,2053,1,0,0,0,212,2071,1,0,0,0,214,2097, + 1,0,0,0,216,2106,1,0,0,0,218,2110,1,0,0,0,220,2193,1,0,0,0,222,2311, + 1,0,0,0,224,2320,1,0,0,0,226,2334,1,0,0,0,228,2361,1,0,0,0,230,2383, + 1,0,0,0,232,2395,1,0,0,0,234,2417,1,0,0,0,236,2432,1,0,0,0,238,2434, + 1,0,0,0,240,2455,1,0,0,0,242,2485,1,0,0,0,244,2487,1,0,0,0,246,2493, + 1,0,0,0,248,2511,1,0,0,0,250,2513,1,0,0,0,252,2523,1,0,0,0,254,2549, + 1,0,0,0,256,2570,1,0,0,0,258,2581,1,0,0,0,260,2588,1,0,0,0,262,2602, + 1,0,0,0,264,2623,1,0,0,0,266,2627,1,0,0,0,268,2632,1,0,0,0,270,2659, + 1,0,0,0,272,2693,1,0,0,0,274,2699,1,0,0,0,276,2718,1,0,0,0,278,2736, + 1,0,0,0,280,2738,1,0,0,0,282,2749,1,0,0,0,284,2766,1,0,0,0,286,2768, + 1,0,0,0,288,2770,1,0,0,0,290,2778,1,0,0,0,292,2786,1,0,0,0,294,2797, + 1,0,0,0,296,2811,1,0,0,0,298,2813,1,0,0,0,300,2815,1,0,0,0,302,2819, + 1,0,0,0,304,2831,1,0,0,0,306,2833,1,0,0,0,308,2835,1,0,0,0,310,2840, + 1,0,0,0,312,2848,1,0,0,0,314,2856,1,0,0,0,316,317,3,2,1,0,317,318, + 5,0,0,1,318,1,1,0,0,0,319,321,5,222,0,0,320,319,1,0,0,0,320,321, + 1,0,0,0,321,325,1,0,0,0,322,324,5,220,0,0,323,322,1,0,0,0,324,327, + 1,0,0,0,325,323,1,0,0,0,325,326,1,0,0,0,326,334,1,0,0,0,327,325, + 1,0,0,0,328,330,3,12,6,0,329,331,5,220,0,0,330,329,1,0,0,0,331,332, + 1,0,0,0,332,330,1,0,0,0,332,333,1,0,0,0,333,335,1,0,0,0,334,328, + 1,0,0,0,334,335,1,0,0,0,335,337,1,0,0,0,336,338,3,4,2,0,337,336, + 1,0,0,0,337,338,1,0,0,0,338,342,1,0,0,0,339,341,5,220,0,0,340,339, + 1,0,0,0,341,344,1,0,0,0,342,340,1,0,0,0,342,343,1,0,0,0,343,346, + 1,0,0,0,344,342,1,0,0,0,345,347,3,28,14,0,346,345,1,0,0,0,346,347, + 1,0,0,0,347,351,1,0,0,0,348,350,5,220,0,0,349,348,1,0,0,0,350,353, + 1,0,0,0,351,349,1,0,0,0,351,352,1,0,0,0,352,355,1,0,0,0,353,351, + 1,0,0,0,354,356,3,14,7,0,355,354,1,0,0,0,355,356,1,0,0,0,356,360, + 1,0,0,0,357,359,5,220,0,0,358,357,1,0,0,0,359,362,1,0,0,0,360,358, + 1,0,0,0,360,361,1,0,0,0,361,364,1,0,0,0,362,360,1,0,0,0,363,365, + 3,18,9,0,364,363,1,0,0,0,364,365,1,0,0,0,365,369,1,0,0,0,366,368, + 5,220,0,0,367,366,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369,370, + 1,0,0,0,370,373,1,0,0,0,371,369,1,0,0,0,372,374,3,20,10,0,373,372, + 1,0,0,0,373,374,1,0,0,0,374,378,1,0,0,0,375,377,5,220,0,0,376,375, + 1,0,0,0,377,380,1,0,0,0,378,376,1,0,0,0,378,379,1,0,0,0,379,382, + 1,0,0,0,380,378,1,0,0,0,381,383,3,24,12,0,382,381,1,0,0,0,382,383, + 1,0,0,0,383,387,1,0,0,0,384,386,5,220,0,0,385,384,1,0,0,0,386,389, + 1,0,0,0,387,385,1,0,0,0,387,388,1,0,0,0,388,391,1,0,0,0,389,387, + 1,0,0,0,390,392,5,222,0,0,391,390,1,0,0,0,391,392,1,0,0,0,392,3, + 1,0,0,0,393,395,3,6,3,0,394,393,1,0,0,0,395,396,1,0,0,0,396,394, + 1,0,0,0,396,397,1,0,0,0,397,5,1,0,0,0,398,400,5,110,0,0,399,401, + 5,222,0,0,400,399,1,0,0,0,400,401,1,0,0,0,401,402,1,0,0,0,402,404, + 5,187,0,0,403,405,5,222,0,0,404,403,1,0,0,0,404,405,1,0,0,0,405, + 406,1,0,0,0,406,412,3,8,4,0,407,409,5,206,0,0,408,410,5,222,0,0, + 409,408,1,0,0,0,409,410,1,0,0,0,410,411,1,0,0,0,411,413,3,10,5,0, + 412,407,1,0,0,0,412,413,1,0,0,0,413,417,1,0,0,0,414,416,5,220,0, + 0,415,414,1,0,0,0,416,419,1,0,0,0,417,415,1,0,0,0,417,418,1,0,0, + 0,418,7,1,0,0,0,419,417,1,0,0,0,420,421,5,209,0,0,421,9,1,0,0,0, + 422,423,5,209,0,0,423,11,1,0,0,0,424,425,5,170,0,0,425,426,5,222, + 0,0,426,429,3,314,157,0,427,428,5,222,0,0,428,430,5,21,0,0,429,427, + 1,0,0,0,429,430,1,0,0,0,430,13,1,0,0,0,431,433,5,10,0,0,432,434, + 5,220,0,0,433,432,1,0,0,0,434,435,1,0,0,0,435,433,1,0,0,0,435,436, + 1,0,0,0,436,438,1,0,0,0,437,439,3,16,8,0,438,437,1,0,0,0,439,440, + 1,0,0,0,440,438,1,0,0,0,440,441,1,0,0,0,441,442,1,0,0,0,442,444, + 5,54,0,0,443,445,5,220,0,0,444,443,1,0,0,0,445,446,1,0,0,0,446,444, + 1,0,0,0,446,447,1,0,0,0,447,15,1,0,0,0,448,450,3,278,139,0,449,451, + 5,222,0,0,450,449,1,0,0,0,450,451,1,0,0,0,451,452,1,0,0,0,452,454, + 5,187,0,0,453,455,5,222,0,0,454,453,1,0,0,0,454,455,1,0,0,0,455, + 456,1,0,0,0,456,457,3,296,148,0,457,458,5,220,0,0,458,17,1,0,0,0, + 459,461,3,46,23,0,460,462,5,220,0,0,461,460,1,0,0,0,462,463,1,0, + 0,0,463,461,1,0,0,0,463,464,1,0,0,0,464,466,1,0,0,0,465,459,1,0, + 0,0,466,467,1,0,0,0,467,465,1,0,0,0,467,468,1,0,0,0,468,19,1,0,0, + 0,469,471,3,22,11,0,470,472,5,220,0,0,471,470,1,0,0,0,472,473,1, + 0,0,0,473,471,1,0,0,0,473,474,1,0,0,0,474,476,1,0,0,0,475,469,1, + 0,0,0,476,477,1,0,0,0,477,475,1,0,0,0,477,478,1,0,0,0,478,21,1,0, + 0,0,479,480,5,116,0,0,480,481,5,222,0,0,481,488,3,310,155,0,482, + 483,5,118,0,0,483,484,5,222,0,0,484,488,7,0,0,0,485,488,5,117,0, + 0,486,488,5,119,0,0,487,479,1,0,0,0,487,482,1,0,0,0,487,485,1,0, + 0,0,487,486,1,0,0,0,488,23,1,0,0,0,489,498,3,26,13,0,490,492,5,220, + 0,0,491,490,1,0,0,0,492,493,1,0,0,0,493,491,1,0,0,0,493,494,1,0, + 0,0,494,495,1,0,0,0,495,497,3,26,13,0,496,491,1,0,0,0,497,500,1, + 0,0,0,498,496,1,0,0,0,498,499,1,0,0,0,499,25,1,0,0,0,500,498,1,0, + 0,0,501,514,3,44,22,0,502,514,3,22,11,0,503,514,3,68,34,0,504,514, + 3,78,39,0,505,514,3,86,43,0,506,514,3,96,48,0,507,514,3,130,65,0, + 508,514,3,158,79,0,509,514,3,160,80,0,510,514,3,162,81,0,511,514, + 3,206,103,0,512,514,3,210,105,0,513,501,1,0,0,0,513,502,1,0,0,0, + 513,503,1,0,0,0,513,504,1,0,0,0,513,505,1,0,0,0,513,506,1,0,0,0, + 513,507,1,0,0,0,513,508,1,0,0,0,513,509,1,0,0,0,513,510,1,0,0,0, + 513,511,1,0,0,0,513,512,1,0,0,0,514,27,1,0,0,0,515,517,5,222,0,0, + 516,515,1,0,0,0,516,517,1,0,0,0,517,518,1,0,0,0,518,519,5,10,0,0, + 519,520,5,222,0,0,520,521,3,40,20,0,521,522,5,222,0,0,522,524,3, + 42,21,0,523,525,5,222,0,0,524,523,1,0,0,0,524,525,1,0,0,0,525,527, + 1,0,0,0,526,528,5,220,0,0,527,526,1,0,0,0,528,529,1,0,0,0,529,527, + 1,0,0,0,529,530,1,0,0,0,530,532,1,0,0,0,531,533,3,30,15,0,532,531, + 1,0,0,0,533,534,1,0,0,0,534,532,1,0,0,0,534,535,1,0,0,0,535,536, + 1,0,0,0,536,540,5,54,0,0,537,539,5,220,0,0,538,537,1,0,0,0,539,542, + 1,0,0,0,540,538,1,0,0,0,540,541,1,0,0,0,541,29,1,0,0,0,542,540,1, + 0,0,0,543,547,3,32,16,0,544,547,3,38,19,0,545,547,3,28,14,0,546, + 543,1,0,0,0,546,544,1,0,0,0,546,545,1,0,0,0,547,31,1,0,0,0,548,550, + 5,222,0,0,549,548,1,0,0,0,549,550,1,0,0,0,550,551,1,0,0,0,551,553, + 3,248,124,0,552,554,5,222,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554, + 555,1,0,0,0,555,557,5,187,0,0,556,558,5,222,0,0,557,556,1,0,0,0, + 557,558,1,0,0,0,558,560,1,0,0,0,559,561,5,185,0,0,560,559,1,0,0, + 0,560,561,1,0,0,0,561,562,1,0,0,0,562,564,3,36,18,0,563,565,5,216, + 0,0,564,563,1,0,0,0,564,565,1,0,0,0,565,567,1,0,0,0,566,568,5,220, + 0,0,567,566,1,0,0,0,568,569,1,0,0,0,569,567,1,0,0,0,569,570,1,0, + 0,0,570,33,1,0,0,0,571,572,5,110,0,0,572,574,5,186,0,0,573,571,1, + 0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,580,3,278,139,0,576,577, + 5,194,0,0,577,578,3,296,148,0,578,579,5,205,0,0,579,581,1,0,0,0, + 580,576,1,0,0,0,580,581,1,0,0,0,581,592,1,0,0,0,582,583,5,186,0, + 0,583,588,3,278,139,0,584,585,5,194,0,0,585,586,3,296,148,0,586, + 587,5,205,0,0,587,589,1,0,0,0,588,584,1,0,0,0,588,589,1,0,0,0,589, + 591,1,0,0,0,590,582,1,0,0,0,591,594,1,0,0,0,592,590,1,0,0,0,592, + 593,1,0,0,0,593,35,1,0,0,0,594,592,1,0,0,0,595,597,5,185,0,0,596, + 595,1,0,0,0,596,597,1,0,0,0,597,605,1,0,0,0,598,606,3,296,148,0, + 599,600,5,193,0,0,600,601,3,278,139,0,601,602,5,204,0,0,602,606, + 1,0,0,0,603,604,5,203,0,0,604,606,3,278,139,0,605,598,1,0,0,0,605, + 599,1,0,0,0,605,603,1,0,0,0,606,37,1,0,0,0,607,609,5,222,0,0,608, + 607,1,0,0,0,608,609,1,0,0,0,609,610,1,0,0,0,610,611,5,11,0,0,611, + 612,5,222,0,0,612,617,3,278,139,0,613,614,5,194,0,0,614,615,3,310, + 155,0,615,616,5,205,0,0,616,618,1,0,0,0,617,613,1,0,0,0,617,618, + 1,0,0,0,618,621,1,0,0,0,619,620,5,222,0,0,620,622,5,217,0,0,621, + 619,1,0,0,0,621,622,1,0,0,0,622,624,1,0,0,0,623,625,5,220,0,0,624, + 623,1,0,0,0,625,626,1,0,0,0,626,624,1,0,0,0,626,627,1,0,0,0,627, + 633,1,0,0,0,628,630,3,30,15,0,629,628,1,0,0,0,630,631,1,0,0,0,631, + 629,1,0,0,0,631,632,1,0,0,0,632,634,1,0,0,0,633,629,1,0,0,0,633, + 634,1,0,0,0,634,635,1,0,0,0,635,637,5,55,0,0,636,638,5,220,0,0,637, + 636,1,0,0,0,638,639,1,0,0,0,639,637,1,0,0,0,639,640,1,0,0,0,640, + 39,1,0,0,0,641,642,3,288,144,0,642,41,1,0,0,0,643,644,3,278,139, + 0,644,43,1,0,0,0,645,646,3,48,24,0,646,45,1,0,0,0,647,648,5,5,0, + 0,648,649,5,222,0,0,649,651,3,248,124,0,650,652,5,222,0,0,651,650, + 1,0,0,0,651,652,1,0,0,0,652,653,1,0,0,0,653,655,5,187,0,0,654,656, + 5,222,0,0,655,654,1,0,0,0,655,656,1,0,0,0,656,657,1,0,0,0,657,668, + 3,296,148,0,658,660,5,222,0,0,659,658,1,0,0,0,659,660,1,0,0,0,660, + 661,1,0,0,0,661,663,5,182,0,0,662,664,5,222,0,0,663,662,1,0,0,0, + 663,664,1,0,0,0,664,665,1,0,0,0,665,667,3,296,148,0,666,659,1,0, + 0,0,667,670,1,0,0,0,668,666,1,0,0,0,668,669,1,0,0,0,669,47,1,0,0, + 0,670,668,1,0,0,0,671,683,3,50,25,0,672,674,5,220,0,0,673,672,1, + 0,0,0,674,675,1,0,0,0,675,673,1,0,0,0,675,676,1,0,0,0,676,678,1, + 0,0,0,677,679,5,222,0,0,678,677,1,0,0,0,678,679,1,0,0,0,679,680, + 1,0,0,0,680,682,3,50,25,0,681,673,1,0,0,0,682,685,1,0,0,0,683,681, + 1,0,0,0,683,684,1,0,0,0,684,49,1,0,0,0,685,683,1,0,0,0,686,754,3, + 52,26,0,687,754,3,46,23,0,688,754,3,54,27,0,689,754,3,56,28,0,690, + 754,3,58,29,0,691,754,3,60,30,0,692,754,3,62,31,0,693,754,3,66,33, + 0,694,754,3,72,36,0,695,754,3,70,35,0,696,754,3,74,37,0,697,754, + 3,76,38,0,698,754,3,82,41,0,699,754,3,84,42,0,700,754,3,88,44,0, + 701,754,3,236,118,0,702,754,3,90,45,0,703,754,3,92,46,0,704,754, + 3,94,47,0,705,754,3,98,49,0,706,754,3,100,50,0,707,754,3,102,51, + 0,708,754,3,104,52,0,709,754,3,114,57,0,710,754,3,116,58,0,711,754, + 3,118,59,0,712,754,3,120,60,0,713,754,3,122,61,0,714,754,3,294,147, + 0,715,754,3,124,62,0,716,754,3,126,63,0,717,754,3,128,64,0,718,754, + 3,130,65,0,719,754,3,138,69,0,720,754,3,140,70,0,721,754,3,142,71, + 0,722,754,3,144,72,0,723,754,3,146,73,0,724,754,3,148,74,0,725,754, + 3,150,75,0,726,754,3,156,78,0,727,754,3,164,82,0,728,754,3,166,83, + 0,729,754,3,168,84,0,730,754,3,170,85,0,731,754,3,174,87,0,732,754, + 3,176,88,0,733,754,3,178,89,0,734,754,3,180,90,0,735,754,3,182,91, + 0,736,754,3,184,92,0,737,754,3,186,93,0,738,754,3,188,94,0,739,754, + 3,190,95,0,740,754,3,198,99,0,741,754,3,200,100,0,742,754,3,202, + 101,0,743,754,3,204,102,0,744,754,3,208,104,0,745,754,3,216,108, + 0,746,754,3,218,109,0,747,754,3,222,111,0,748,754,3,228,114,0,749, + 754,3,230,115,0,750,754,3,232,116,0,751,754,3,234,117,0,752,754, + 3,242,121,0,753,686,1,0,0,0,753,687,1,0,0,0,753,688,1,0,0,0,753, + 689,1,0,0,0,753,690,1,0,0,0,753,691,1,0,0,0,753,692,1,0,0,0,753, + 693,1,0,0,0,753,694,1,0,0,0,753,695,1,0,0,0,753,696,1,0,0,0,753, + 697,1,0,0,0,753,698,1,0,0,0,753,699,1,0,0,0,753,700,1,0,0,0,753, + 701,1,0,0,0,753,702,1,0,0,0,753,703,1,0,0,0,753,704,1,0,0,0,753, + 705,1,0,0,0,753,706,1,0,0,0,753,707,1,0,0,0,753,708,1,0,0,0,753, + 709,1,0,0,0,753,710,1,0,0,0,753,711,1,0,0,0,753,712,1,0,0,0,753, + 713,1,0,0,0,753,714,1,0,0,0,753,715,1,0,0,0,753,716,1,0,0,0,753, + 717,1,0,0,0,753,718,1,0,0,0,753,719,1,0,0,0,753,720,1,0,0,0,753, + 721,1,0,0,0,753,722,1,0,0,0,753,723,1,0,0,0,753,724,1,0,0,0,753, + 725,1,0,0,0,753,726,1,0,0,0,753,727,1,0,0,0,753,728,1,0,0,0,753, + 729,1,0,0,0,753,730,1,0,0,0,753,731,1,0,0,0,753,732,1,0,0,0,753, + 733,1,0,0,0,753,734,1,0,0,0,753,735,1,0,0,0,753,736,1,0,0,0,753, + 737,1,0,0,0,753,738,1,0,0,0,753,739,1,0,0,0,753,740,1,0,0,0,753, + 741,1,0,0,0,753,742,1,0,0,0,753,743,1,0,0,0,753,744,1,0,0,0,753, + 745,1,0,0,0,753,746,1,0,0,0,753,747,1,0,0,0,753,748,1,0,0,0,753, + 749,1,0,0,0,753,750,1,0,0,0,753,751,1,0,0,0,753,752,1,0,0,0,754, + 51,1,0,0,0,755,756,5,6,0,0,756,757,5,222,0,0,757,766,3,220,110,0, + 758,760,5,222,0,0,759,758,1,0,0,0,759,760,1,0,0,0,760,761,1,0,0, + 0,761,763,5,182,0,0,762,764,5,222,0,0,763,762,1,0,0,0,763,764,1, + 0,0,0,764,765,1,0,0,0,765,767,3,220,110,0,766,759,1,0,0,0,766,767, + 1,0,0,0,767,53,1,0,0,0,768,769,5,9,0,0,769,55,1,0,0,0,770,771,5, + 19,0,0,771,772,5,222,0,0,772,773,3,220,110,0,773,57,1,0,0,0,774, + 775,5,20,0,0,775,776,5,222,0,0,776,777,3,220,110,0,777,59,1,0,0, + 0,778,794,5,22,0,0,779,780,5,222,0,0,780,791,3,220,110,0,781,783, + 5,222,0,0,782,781,1,0,0,0,782,783,1,0,0,0,783,784,1,0,0,0,784,786, + 5,182,0,0,785,787,5,222,0,0,786,785,1,0,0,0,786,787,1,0,0,0,787, + 788,1,0,0,0,788,790,3,220,110,0,789,782,1,0,0,0,790,793,1,0,0,0, + 791,789,1,0,0,0,791,792,1,0,0,0,792,795,1,0,0,0,793,791,1,0,0,0, + 794,779,1,0,0,0,794,795,1,0,0,0,795,61,1,0,0,0,796,797,3,300,150, + 0,797,798,5,222,0,0,798,800,1,0,0,0,799,796,1,0,0,0,799,800,1,0, + 0,0,800,801,1,0,0,0,801,802,5,24,0,0,802,803,5,222,0,0,803,814,3, + 64,32,0,804,806,5,222,0,0,805,804,1,0,0,0,805,806,1,0,0,0,806,807, + 1,0,0,0,807,809,5,182,0,0,808,810,5,222,0,0,809,808,1,0,0,0,809, + 810,1,0,0,0,810,811,1,0,0,0,811,813,3,64,32,0,812,805,1,0,0,0,813, + 816,1,0,0,0,814,812,1,0,0,0,814,815,1,0,0,0,815,63,1,0,0,0,816,814, + 1,0,0,0,817,819,3,278,139,0,818,820,3,304,152,0,819,818,1,0,0,0, + 819,820,1,0,0,0,820,823,1,0,0,0,821,822,5,222,0,0,822,824,3,280, + 140,0,823,821,1,0,0,0,823,824,1,0,0,0,824,826,1,0,0,0,825,827,5, + 222,0,0,826,825,1,0,0,0,826,827,1,0,0,0,827,828,1,0,0,0,828,830, + 5,187,0,0,829,831,5,222,0,0,830,829,1,0,0,0,830,831,1,0,0,0,831, + 832,1,0,0,0,832,833,3,220,110,0,833,65,1,0,0,0,834,836,5,25,0,0, + 835,837,5,222,0,0,836,835,1,0,0,0,836,837,1,0,0,0,837,838,1,0,0, + 0,838,840,5,187,0,0,839,841,5,222,0,0,840,839,1,0,0,0,840,841,1, + 0,0,0,841,842,1,0,0,0,842,843,3,220,110,0,843,67,1,0,0,0,844,845, + 3,306,153,0,845,846,5,222,0,0,846,848,1,0,0,0,847,844,1,0,0,0,847, + 848,1,0,0,0,848,849,1,0,0,0,849,850,5,26,0,0,850,856,5,222,0,0,851, + 853,5,70,0,0,852,854,3,304,152,0,853,852,1,0,0,0,853,854,1,0,0,0, + 854,857,1,0,0,0,855,857,5,157,0,0,856,851,1,0,0,0,856,855,1,0,0, + 0,857,858,1,0,0,0,858,859,5,222,0,0,859,861,3,278,139,0,860,862, + 3,304,152,0,861,860,1,0,0,0,861,862,1,0,0,0,862,863,1,0,0,0,863, + 864,5,222,0,0,864,865,5,89,0,0,865,866,5,222,0,0,866,871,5,209,0, + 0,867,868,5,222,0,0,868,869,5,3,0,0,869,870,5,222,0,0,870,872,5, + 209,0,0,871,867,1,0,0,0,871,872,1,0,0,0,872,877,1,0,0,0,873,875, + 5,222,0,0,874,873,1,0,0,0,874,875,1,0,0,0,875,876,1,0,0,0,876,878, + 3,268,134,0,877,874,1,0,0,0,877,878,1,0,0,0,878,881,1,0,0,0,879, + 880,5,222,0,0,880,882,3,280,140,0,881,879,1,0,0,0,881,882,1,0,0, + 0,882,69,1,0,0,0,883,884,7,1,0,0,884,885,5,222,0,0,885,896,3,292, + 146,0,886,888,5,222,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,889, + 1,0,0,0,889,891,5,182,0,0,890,892,5,222,0,0,891,890,1,0,0,0,891, + 892,1,0,0,0,892,893,1,0,0,0,893,895,3,292,146,0,894,887,1,0,0,0, + 895,898,1,0,0,0,896,894,1,0,0,0,896,897,1,0,0,0,897,71,1,0,0,0,898, + 896,1,0,0,0,899,900,5,39,0,0,900,901,5,222,0,0,901,903,3,220,110, + 0,902,904,5,222,0,0,903,902,1,0,0,0,903,904,1,0,0,0,904,905,1,0, + 0,0,905,907,5,182,0,0,906,908,5,222,0,0,907,906,1,0,0,0,907,908, + 1,0,0,0,908,909,1,0,0,0,909,918,3,220,110,0,910,912,5,222,0,0,911, + 910,1,0,0,0,911,912,1,0,0,0,912,913,1,0,0,0,913,915,5,182,0,0,914, + 916,5,222,0,0,915,914,1,0,0,0,915,916,1,0,0,0,916,917,1,0,0,0,917, + 919,3,220,110,0,918,911,1,0,0,0,918,919,1,0,0,0,919,73,1,0,0,0,920, + 922,5,41,0,0,921,923,5,220,0,0,922,921,1,0,0,0,923,924,1,0,0,0,924, + 922,1,0,0,0,924,925,1,0,0,0,925,932,1,0,0,0,926,928,3,48,24,0,927, + 929,5,220,0,0,928,927,1,0,0,0,929,930,1,0,0,0,930,928,1,0,0,0,930, + 931,1,0,0,0,931,933,1,0,0,0,932,926,1,0,0,0,932,933,1,0,0,0,933, + 934,1,0,0,0,934,975,5,86,0,0,935,936,5,41,0,0,936,937,5,222,0,0, + 937,938,7,2,0,0,938,939,5,222,0,0,939,941,3,220,110,0,940,942,5, + 220,0,0,941,940,1,0,0,0,942,943,1,0,0,0,943,941,1,0,0,0,943,944, + 1,0,0,0,944,951,1,0,0,0,945,947,3,48,24,0,946,948,5,220,0,0,947, + 946,1,0,0,0,948,949,1,0,0,0,949,947,1,0,0,0,949,950,1,0,0,0,950, + 952,1,0,0,0,951,945,1,0,0,0,951,952,1,0,0,0,952,953,1,0,0,0,953, + 954,5,86,0,0,954,975,1,0,0,0,955,957,5,41,0,0,956,958,5,220,0,0, + 957,956,1,0,0,0,958,959,1,0,0,0,959,957,1,0,0,0,959,960,1,0,0,0, + 960,967,1,0,0,0,961,963,3,48,24,0,962,964,5,220,0,0,963,962,1,0, + 0,0,964,965,1,0,0,0,965,963,1,0,0,0,965,966,1,0,0,0,966,968,1,0, + 0,0,967,961,1,0,0,0,967,968,1,0,0,0,968,969,1,0,0,0,969,970,5,86, + 0,0,970,971,5,222,0,0,971,972,7,2,0,0,972,973,5,222,0,0,973,975, + 3,220,110,0,974,920,1,0,0,0,974,935,1,0,0,0,974,955,1,0,0,0,975, + 75,1,0,0,0,976,977,5,54,0,0,977,77,1,0,0,0,978,979,3,298,149,0,979, + 980,5,222,0,0,980,982,1,0,0,0,981,978,1,0,0,0,981,982,1,0,0,0,982, + 983,1,0,0,0,983,984,5,56,0,0,984,985,5,222,0,0,985,987,3,278,139, + 0,986,988,5,220,0,0,987,986,1,0,0,0,988,989,1,0,0,0,989,987,1,0, + 0,0,989,990,1,0,0,0,990,994,1,0,0,0,991,993,3,80,40,0,992,991,1, + 0,0,0,993,996,1,0,0,0,994,992,1,0,0,0,994,995,1,0,0,0,995,997,1, + 0,0,0,996,994,1,0,0,0,997,998,5,46,0,0,998,79,1,0,0,0,999,1008,3, + 278,139,0,1000,1002,5,222,0,0,1001,1000,1,0,0,0,1001,1002,1,0,0, + 0,1002,1003,1,0,0,0,1003,1005,5,187,0,0,1004,1006,5,222,0,0,1005, + 1004,1,0,0,0,1005,1006,1,0,0,0,1006,1007,1,0,0,0,1007,1009,3,220, + 110,0,1008,1001,1,0,0,0,1008,1009,1,0,0,0,1009,1011,1,0,0,0,1010, + 1012,5,220,0,0,1011,1010,1,0,0,0,1012,1013,1,0,0,0,1013,1011,1,0, + 0,0,1013,1014,1,0,0,0,1014,81,1,0,0,0,1015,1016,5,58,0,0,1016,1017, + 5,222,0,0,1017,1028,3,220,110,0,1018,1020,5,222,0,0,1019,1018,1, + 0,0,0,1019,1020,1,0,0,0,1020,1021,1,0,0,0,1021,1023,5,182,0,0,1022, + 1024,5,222,0,0,1023,1022,1,0,0,0,1023,1024,1,0,0,0,1024,1025,1,0, + 0,0,1025,1027,3,220,110,0,1026,1019,1,0,0,0,1027,1030,1,0,0,0,1028, + 1026,1,0,0,0,1028,1029,1,0,0,0,1029,83,1,0,0,0,1030,1028,1,0,0,0, + 1031,1032,5,59,0,0,1032,1033,5,222,0,0,1033,1034,3,220,110,0,1034, + 85,1,0,0,0,1035,1036,3,306,153,0,1036,1037,5,222,0,0,1037,1039,1, + 0,0,0,1038,1035,1,0,0,0,1038,1039,1,0,0,0,1039,1040,1,0,0,0,1040, + 1041,5,60,0,0,1041,1042,5,222,0,0,1042,1044,3,278,139,0,1043,1045, + 5,222,0,0,1044,1043,1,0,0,0,1044,1045,1,0,0,0,1045,1046,1,0,0,0, + 1046,1047,3,268,134,0,1047,87,1,0,0,0,1048,1049,7,3,0,0,1049,89, + 1,0,0,0,1050,1051,5,67,0,0,1051,1052,5,222,0,0,1052,1054,3,220,110, + 0,1053,1055,5,222,0,0,1054,1053,1,0,0,0,1054,1055,1,0,0,0,1055,1056, + 1,0,0,0,1056,1058,5,182,0,0,1057,1059,5,222,0,0,1058,1057,1,0,0, + 0,1058,1059,1,0,0,0,1059,1060,1,0,0,0,1060,1061,3,220,110,0,1061, + 91,1,0,0,0,1062,1063,5,69,0,0,1063,1064,5,222,0,0,1064,1065,5,43, + 0,0,1065,1066,5,222,0,0,1066,1068,3,278,139,0,1067,1069,3,304,152, + 0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0,0,0,1070,1071, + 5,222,0,0,1071,1072,5,78,0,0,1072,1073,5,222,0,0,1073,1075,3,220, + 110,0,1074,1076,5,220,0,0,1075,1074,1,0,0,0,1076,1077,1,0,0,0,1077, + 1075,1,0,0,0,1077,1078,1,0,0,0,1078,1085,1,0,0,0,1079,1081,3,48, + 24,0,1080,1082,5,220,0,0,1081,1080,1,0,0,0,1082,1083,1,0,0,0,1083, + 1081,1,0,0,0,1083,1084,1,0,0,0,1084,1086,1,0,0,0,1085,1079,1,0,0, + 0,1085,1086,1,0,0,0,1086,1087,1,0,0,0,1087,1090,5,105,0,0,1088,1089, + 5,222,0,0,1089,1091,3,278,139,0,1090,1088,1,0,0,0,1090,1091,1,0, + 0,0,1091,93,1,0,0,0,1092,1093,5,69,0,0,1093,1094,5,222,0,0,1094, + 1096,3,250,125,0,1095,1097,3,304,152,0,1096,1095,1,0,0,0,1096,1097, + 1,0,0,0,1097,1100,1,0,0,0,1098,1099,5,222,0,0,1099,1101,3,280,140, + 0,1100,1098,1,0,0,0,1100,1101,1,0,0,0,1101,1103,1,0,0,0,1102,1104, + 5,222,0,0,1103,1102,1,0,0,0,1103,1104,1,0,0,0,1104,1105,1,0,0,0, + 1105,1107,5,187,0,0,1106,1108,5,222,0,0,1107,1106,1,0,0,0,1107,1108, + 1,0,0,0,1108,1109,1,0,0,0,1109,1110,3,220,110,0,1110,1111,5,222, + 0,0,1111,1112,5,162,0,0,1112,1113,5,222,0,0,1113,1118,3,220,110, + 0,1114,1115,5,222,0,0,1115,1116,5,154,0,0,1116,1117,5,222,0,0,1117, + 1119,3,220,110,0,1118,1114,1,0,0,0,1118,1119,1,0,0,0,1119,1121,1, + 0,0,0,1120,1122,5,220,0,0,1121,1120,1,0,0,0,1122,1123,1,0,0,0,1123, + 1121,1,0,0,0,1123,1124,1,0,0,0,1124,1131,1,0,0,0,1125,1127,3,48, + 24,0,1126,1128,5,220,0,0,1127,1126,1,0,0,0,1128,1129,1,0,0,0,1129, + 1127,1,0,0,0,1129,1130,1,0,0,0,1130,1132,1,0,0,0,1131,1125,1,0,0, + 0,1131,1132,1,0,0,0,1132,1133,1,0,0,0,1133,1139,5,105,0,0,1134,1135, + 5,222,0,0,1135,1137,3,278,139,0,1136,1138,3,304,152,0,1137,1136, + 1,0,0,0,1137,1138,1,0,0,0,1138,1140,1,0,0,0,1139,1134,1,0,0,0,1139, + 1140,1,0,0,0,1140,95,1,0,0,0,1141,1142,3,306,153,0,1142,1143,5,222, + 0,0,1143,1145,1,0,0,0,1144,1141,1,0,0,0,1144,1145,1,0,0,0,1145,1148, + 1,0,0,0,1146,1147,5,153,0,0,1147,1149,5,222,0,0,1148,1146,1,0,0, + 0,1148,1149,1,0,0,0,1149,1150,1,0,0,0,1150,1151,5,70,0,0,1151,1152, + 5,222,0,0,1152,1157,3,278,139,0,1153,1155,5,222,0,0,1154,1153,1, + 0,0,0,1154,1155,1,0,0,0,1155,1156,1,0,0,0,1156,1158,3,268,134,0, + 1157,1154,1,0,0,0,1157,1158,1,0,0,0,1158,1161,1,0,0,0,1159,1160, + 5,222,0,0,1160,1162,3,280,140,0,1161,1159,1,0,0,0,1161,1162,1,0, + 0,0,1162,1164,1,0,0,0,1163,1165,5,220,0,0,1164,1163,1,0,0,0,1165, + 1166,1,0,0,0,1166,1164,1,0,0,0,1166,1167,1,0,0,0,1167,1174,1,0,0, + 0,1168,1170,3,48,24,0,1169,1171,5,220,0,0,1170,1169,1,0,0,0,1171, + 1172,1,0,0,0,1172,1170,1,0,0,0,1172,1173,1,0,0,0,1173,1175,1,0,0, + 0,1174,1168,1,0,0,0,1174,1175,1,0,0,0,1175,1176,1,0,0,0,1176,1177, + 5,47,0,0,1177,97,1,0,0,0,1178,1179,5,71,0,0,1179,1180,5,222,0,0, + 1180,1182,3,220,110,0,1181,1183,5,222,0,0,1182,1181,1,0,0,0,1182, + 1183,1,0,0,0,1183,1184,1,0,0,0,1184,1186,5,182,0,0,1185,1187,5,222, + 0,0,1186,1185,1,0,0,0,1186,1187,1,0,0,0,1187,1189,1,0,0,0,1188,1190, + 3,220,110,0,1189,1188,1,0,0,0,1189,1190,1,0,0,0,1190,1192,1,0,0, + 0,1191,1193,5,222,0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0,1193,1194, + 1,0,0,0,1194,1196,5,182,0,0,1195,1197,5,222,0,0,1196,1195,1,0,0, + 0,1196,1197,1,0,0,0,1197,1198,1,0,0,0,1198,1199,3,220,110,0,1199, + 99,1,0,0,0,1200,1201,5,73,0,0,1201,1202,5,222,0,0,1202,1203,3,220, + 110,0,1203,101,1,0,0,0,1204,1205,5,74,0,0,1205,1206,5,222,0,0,1206, + 1207,3,220,110,0,1207,103,1,0,0,0,1208,1209,5,75,0,0,1209,1210,5, + 222,0,0,1210,1211,3,108,54,0,1211,1212,5,222,0,0,1212,1213,5,160, + 0,0,1213,1214,5,222,0,0,1214,1219,3,50,25,0,1215,1216,5,222,0,0, + 1216,1217,5,44,0,0,1217,1218,5,222,0,0,1218,1220,3,50,25,0,1219, + 1215,1,0,0,0,1219,1220,1,0,0,0,1220,1234,1,0,0,0,1221,1225,3,106, + 53,0,1222,1224,3,110,55,0,1223,1222,1,0,0,0,1224,1227,1,0,0,0,1225, + 1223,1,0,0,0,1225,1226,1,0,0,0,1226,1229,1,0,0,0,1227,1225,1,0,0, + 0,1228,1230,3,112,56,0,1229,1228,1,0,0,0,1229,1230,1,0,0,0,1230, + 1231,1,0,0,0,1231,1232,5,48,0,0,1232,1234,1,0,0,0,1233,1208,1,0, + 0,0,1233,1221,1,0,0,0,1234,105,1,0,0,0,1235,1236,5,75,0,0,1236,1237, + 5,222,0,0,1237,1238,3,108,54,0,1238,1239,5,222,0,0,1239,1241,5,160, + 0,0,1240,1242,5,220,0,0,1241,1240,1,0,0,0,1242,1243,1,0,0,0,1243, + 1241,1,0,0,0,1243,1244,1,0,0,0,1244,1251,1,0,0,0,1245,1247,3,48, + 24,0,1246,1248,5,220,0,0,1247,1246,1,0,0,0,1248,1249,1,0,0,0,1249, + 1247,1,0,0,0,1249,1250,1,0,0,0,1250,1252,1,0,0,0,1251,1245,1,0,0, + 0,1251,1252,1,0,0,0,1252,107,1,0,0,0,1253,1254,3,220,110,0,1254, + 109,1,0,0,0,1255,1256,5,45,0,0,1256,1257,5,222,0,0,1257,1258,3,108, + 54,0,1258,1259,5,222,0,0,1259,1261,5,160,0,0,1260,1262,7,4,0,0,1261, + 1260,1,0,0,0,1262,1263,1,0,0,0,1263,1261,1,0,0,0,1263,1264,1,0,0, + 0,1264,1271,1,0,0,0,1265,1267,3,48,24,0,1266,1268,5,220,0,0,1267, + 1266,1,0,0,0,1268,1269,1,0,0,0,1269,1267,1,0,0,0,1269,1270,1,0,0, + 0,1270,1272,1,0,0,0,1271,1265,1,0,0,0,1271,1272,1,0,0,0,1272,111, + 1,0,0,0,1273,1275,5,44,0,0,1274,1276,5,220,0,0,1275,1274,1,0,0,0, + 1276,1277,1,0,0,0,1277,1275,1,0,0,0,1277,1278,1,0,0,0,1278,1285, + 1,0,0,0,1279,1281,3,48,24,0,1280,1282,5,220,0,0,1281,1280,1,0,0, + 0,1282,1283,1,0,0,0,1283,1281,1,0,0,0,1283,1284,1,0,0,0,1284,1286, + 1,0,0,0,1285,1279,1,0,0,0,1285,1286,1,0,0,0,1286,113,1,0,0,0,1287, + 1288,5,77,0,0,1288,1289,5,222,0,0,1289,1290,3,278,139,0,1290,115, + 1,0,0,0,1291,1292,5,79,0,0,1292,1293,5,222,0,0,1293,1302,3,220,110, + 0,1294,1296,5,222,0,0,1295,1294,1,0,0,0,1295,1296,1,0,0,0,1296,1297, + 1,0,0,0,1297,1299,5,182,0,0,1298,1300,5,222,0,0,1299,1298,1,0,0, + 0,1299,1300,1,0,0,0,1300,1301,1,0,0,0,1301,1303,3,220,110,0,1302, + 1295,1,0,0,0,1303,1304,1,0,0,0,1304,1302,1,0,0,0,1304,1305,1,0,0, + 0,1305,117,1,0,0,0,1306,1307,5,82,0,0,1307,1308,5,222,0,0,1308,1309, + 3,220,110,0,1309,119,1,0,0,0,1310,1311,5,88,0,0,1311,1313,5,222, + 0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1316, + 3,248,124,0,1315,1317,5,222,0,0,1316,1315,1,0,0,0,1316,1317,1,0, + 0,0,1317,1318,1,0,0,0,1318,1320,7,5,0,0,1319,1321,5,222,0,0,1320, + 1319,1,0,0,0,1320,1321,1,0,0,0,1321,1322,1,0,0,0,1322,1323,3,220, + 110,0,1323,121,1,0,0,0,1324,1325,5,91,0,0,1325,1326,5,222,0,0,1326, + 1328,3,220,110,0,1327,1329,5,222,0,0,1328,1327,1,0,0,0,1328,1329, + 1,0,0,0,1329,1330,1,0,0,0,1330,1332,5,182,0,0,1331,1333,5,222,0, + 0,1332,1331,1,0,0,0,1332,1333,1,0,0,0,1333,1334,1,0,0,0,1334,1335, + 3,220,110,0,1335,123,1,0,0,0,1336,1337,5,83,0,0,1337,1338,5,222, + 0,0,1338,1339,3,220,110,0,1339,125,1,0,0,0,1340,1341,5,84,0,0,1341, + 1342,5,222,0,0,1342,1357,3,220,110,0,1343,1345,5,222,0,0,1344,1343, + 1,0,0,0,1344,1345,1,0,0,0,1345,1346,1,0,0,0,1346,1348,5,182,0,0, + 1347,1349,5,222,0,0,1348,1347,1,0,0,0,1348,1349,1,0,0,0,1349,1350, + 1,0,0,0,1350,1355,3,220,110,0,1351,1352,5,222,0,0,1352,1353,5,162, + 0,0,1353,1354,5,222,0,0,1354,1356,3,220,110,0,1355,1351,1,0,0,0, + 1355,1356,1,0,0,0,1356,1358,1,0,0,0,1357,1344,1,0,0,0,1357,1358, + 1,0,0,0,1358,127,1,0,0,0,1359,1360,5,95,0,0,1360,1361,5,222,0,0, + 1361,1363,3,248,124,0,1362,1364,5,222,0,0,1363,1362,1,0,0,0,1363, + 1364,1,0,0,0,1364,1365,1,0,0,0,1365,1367,5,187,0,0,1366,1368,5,222, + 0,0,1367,1366,1,0,0,0,1367,1368,1,0,0,0,1368,1369,1,0,0,0,1369,1370, + 3,220,110,0,1370,129,1,0,0,0,1371,1375,3,132,66,0,1372,1374,3,134, + 67,0,1373,1372,1,0,0,0,1374,1377,1,0,0,0,1375,1373,1,0,0,0,1375, + 1376,1,0,0,0,1376,1379,1,0,0,0,1377,1375,1,0,0,0,1378,1380,3,136, + 68,0,1379,1378,1,0,0,0,1379,1380,1,0,0,0,1380,1381,1,0,0,0,1381, + 1382,5,99,0,0,1382,131,1,0,0,0,1383,1384,5,96,0,0,1384,1385,5,222, + 0,0,1385,1386,3,108,54,0,1386,1387,5,222,0,0,1387,1389,5,160,0,0, + 1388,1390,5,220,0,0,1389,1388,1,0,0,0,1390,1391,1,0,0,0,1391,1389, + 1,0,0,0,1391,1392,1,0,0,0,1392,1399,1,0,0,0,1393,1395,3,24,12,0, + 1394,1396,5,220,0,0,1395,1394,1,0,0,0,1396,1397,1,0,0,0,1397,1395, + 1,0,0,0,1397,1398,1,0,0,0,1398,1400,1,0,0,0,1399,1393,1,0,0,0,1399, + 1400,1,0,0,0,1400,133,1,0,0,0,1401,1402,5,97,0,0,1402,1403,5,222, + 0,0,1403,1404,3,108,54,0,1404,1405,5,222,0,0,1405,1407,5,160,0,0, + 1406,1408,5,220,0,0,1407,1406,1,0,0,0,1408,1409,1,0,0,0,1409,1407, + 1,0,0,0,1409,1410,1,0,0,0,1410,1417,1,0,0,0,1411,1413,3,24,12,0, + 1412,1414,5,220,0,0,1413,1412,1,0,0,0,1414,1415,1,0,0,0,1415,1413, + 1,0,0,0,1415,1416,1,0,0,0,1416,1418,1,0,0,0,1417,1411,1,0,0,0,1417, + 1418,1,0,0,0,1418,135,1,0,0,0,1419,1421,5,98,0,0,1420,1422,5,220, + 0,0,1421,1420,1,0,0,0,1422,1423,1,0,0,0,1423,1421,1,0,0,0,1423,1424, + 1,0,0,0,1424,1431,1,0,0,0,1425,1427,3,24,12,0,1426,1428,5,220,0, + 0,1427,1426,1,0,0,0,1428,1429,1,0,0,0,1429,1427,1,0,0,0,1429,1430, + 1,0,0,0,1430,1432,1,0,0,0,1431,1425,1,0,0,0,1431,1432,1,0,0,0,1432, + 137,1,0,0,0,1433,1435,5,101,0,0,1434,1436,5,222,0,0,1435,1434,1, + 0,0,0,1435,1436,1,0,0,0,1436,1437,1,0,0,0,1437,1439,5,194,0,0,1438, + 1440,5,222,0,0,1439,1438,1,0,0,0,1439,1440,1,0,0,0,1440,1441,1,0, + 0,0,1441,1443,3,262,131,0,1442,1444,5,222,0,0,1443,1442,1,0,0,0, + 1443,1444,1,0,0,0,1444,1445,1,0,0,0,1445,1446,5,205,0,0,1446,139, + 1,0,0,0,1447,1448,5,102,0,0,1448,1449,5,222,0,0,1449,1450,3,220, + 110,0,1450,141,1,0,0,0,1451,1452,5,104,0,0,1452,1453,5,222,0,0,1453, + 1454,3,220,110,0,1454,1455,5,222,0,0,1455,1456,5,8,0,0,1456,1457, + 5,222,0,0,1457,1458,3,220,110,0,1458,143,1,0,0,0,1459,1460,7,6,0, + 0,1460,1470,5,222,0,0,1461,1462,5,74,0,0,1462,1463,5,222,0,0,1463, + 1465,3,220,110,0,1464,1466,5,181,0,0,1465,1464,1,0,0,0,1465,1466, + 1,0,0,0,1466,1471,1,0,0,0,1467,1468,5,139,0,0,1468,1469,5,222,0, + 0,1469,1471,5,105,0,0,1470,1461,1,0,0,0,1470,1467,1,0,0,0,1471,145, + 1,0,0,0,1472,1473,5,111,0,0,1473,1474,5,222,0,0,1474,1475,3,220, + 110,0,1475,1476,5,222,0,0,1476,1477,5,74,0,0,1477,1478,5,222,0,0, + 1478,1489,3,220,110,0,1479,1481,5,222,0,0,1480,1479,1,0,0,0,1480, + 1481,1,0,0,0,1481,1482,1,0,0,0,1482,1484,5,182,0,0,1483,1485,5,222, + 0,0,1484,1483,1,0,0,0,1484,1485,1,0,0,0,1485,1486,1,0,0,0,1486,1488, + 3,220,110,0,1487,1480,1,0,0,0,1488,1491,1,0,0,0,1489,1487,1,0,0, + 0,1489,1490,1,0,0,0,1490,147,1,0,0,0,1491,1489,1,0,0,0,1492,1493, + 5,111,0,0,1493,1494,5,222,0,0,1494,1495,3,220,110,0,1495,1496,5, + 222,0,0,1496,1497,5,73,0,0,1497,1498,5,222,0,0,1498,1509,3,220,110, + 0,1499,1501,5,222,0,0,1500,1499,1,0,0,0,1500,1501,1,0,0,0,1501,1502, + 1,0,0,0,1502,1504,5,182,0,0,1503,1505,5,222,0,0,1504,1503,1,0,0, + 0,1504,1505,1,0,0,0,1505,1506,1,0,0,0,1506,1508,3,220,110,0,1507, + 1500,1,0,0,0,1508,1511,1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0, + 0,1510,149,1,0,0,0,1511,1509,1,0,0,0,1512,1513,5,114,0,0,1513,1514, + 5,222,0,0,1514,1515,3,220,110,0,1515,1516,5,222,0,0,1516,1517,5, + 69,0,0,1517,1518,5,222,0,0,1518,1523,7,7,0,0,1519,1520,5,222,0,0, + 1520,1521,5,1,0,0,1521,1522,5,222,0,0,1522,1524,7,8,0,0,1523,1519, + 1,0,0,0,1523,1524,1,0,0,0,1524,1527,1,0,0,0,1525,1526,5,222,0,0, + 1526,1528,7,9,0,0,1527,1525,1,0,0,0,1527,1528,1,0,0,0,1528,1529, + 1,0,0,0,1529,1530,5,222,0,0,1530,1531,5,8,0,0,1531,1532,5,222,0, + 0,1532,1543,3,220,110,0,1533,1534,5,222,0,0,1534,1536,5,87,0,0,1535, + 1537,5,222,0,0,1536,1535,1,0,0,0,1536,1537,1,0,0,0,1537,1538,1,0, + 0,0,1538,1540,5,187,0,0,1539,1541,5,222,0,0,1540,1539,1,0,0,0,1540, + 1541,1,0,0,0,1541,1542,1,0,0,0,1542,1544,3,220,110,0,1543,1533,1, + 0,0,0,1543,1544,1,0,0,0,1544,151,1,0,0,0,1545,1558,3,154,77,0,1546, + 1548,5,222,0,0,1547,1546,1,0,0,0,1547,1548,1,0,0,0,1548,1549,1,0, + 0,0,1549,1551,7,10,0,0,1550,1552,5,222,0,0,1551,1550,1,0,0,0,1551, + 1552,1,0,0,0,1552,1554,1,0,0,0,1553,1555,3,154,77,0,1554,1553,1, + 0,0,0,1554,1555,1,0,0,0,1555,1557,1,0,0,0,1556,1547,1,0,0,0,1557, + 1560,1,0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,1579,1,0,0, + 0,1560,1558,1,0,0,0,1561,1563,3,154,77,0,1562,1561,1,0,0,0,1562, + 1563,1,0,0,0,1563,1574,1,0,0,0,1564,1566,5,222,0,0,1565,1564,1,0, + 0,0,1565,1566,1,0,0,0,1566,1567,1,0,0,0,1567,1569,7,10,0,0,1568, + 1570,5,222,0,0,1569,1568,1,0,0,0,1569,1570,1,0,0,0,1570,1572,1,0, + 0,0,1571,1573,3,154,77,0,1572,1571,1,0,0,0,1572,1573,1,0,0,0,1573, + 1575,1,0,0,0,1574,1565,1,0,0,0,1575,1576,1,0,0,0,1576,1574,1,0,0, + 0,1576,1577,1,0,0,0,1577,1579,1,0,0,0,1578,1545,1,0,0,0,1578,1562, + 1,0,0,0,1579,153,1,0,0,0,1580,1594,7,11,0,0,1581,1583,5,222,0,0, + 1582,1581,1,0,0,0,1582,1583,1,0,0,0,1583,1584,1,0,0,0,1584,1586, + 5,194,0,0,1585,1587,5,222,0,0,1586,1585,1,0,0,0,1586,1587,1,0,0, + 0,1587,1588,1,0,0,0,1588,1590,3,262,131,0,1589,1591,5,222,0,0,1590, + 1589,1,0,0,0,1590,1591,1,0,0,0,1591,1592,1,0,0,0,1592,1593,5,205, + 0,0,1593,1595,1,0,0,0,1594,1582,1,0,0,0,1594,1595,1,0,0,0,1595,1598, + 1,0,0,0,1596,1598,3,220,110,0,1597,1580,1,0,0,0,1597,1596,1,0,0, + 0,1598,155,1,0,0,0,1599,1600,5,124,0,0,1600,1601,5,222,0,0,1601, + 1603,3,220,110,0,1602,1604,5,222,0,0,1603,1602,1,0,0,0,1603,1604, + 1,0,0,0,1604,1605,1,0,0,0,1605,1610,5,182,0,0,1606,1608,5,222,0, + 0,1607,1606,1,0,0,0,1607,1608,1,0,0,0,1608,1609,1,0,0,0,1609,1611, + 3,152,76,0,1610,1607,1,0,0,0,1610,1611,1,0,0,0,1611,157,1,0,0,0, + 1612,1613,3,306,153,0,1613,1614,5,222,0,0,1614,1616,1,0,0,0,1615, + 1612,1,0,0,0,1615,1616,1,0,0,0,1616,1619,1,0,0,0,1617,1618,5,153, + 0,0,1618,1620,5,222,0,0,1619,1617,1,0,0,0,1619,1620,1,0,0,0,1620, + 1621,1,0,0,0,1621,1622,5,126,0,0,1622,1623,5,222,0,0,1623,1625,3, + 278,139,0,1624,1626,3,304,152,0,1625,1624,1,0,0,0,1625,1626,1,0, + 0,0,1626,1631,1,0,0,0,1627,1629,5,222,0,0,1628,1627,1,0,0,0,1628, + 1629,1,0,0,0,1629,1630,1,0,0,0,1630,1632,3,268,134,0,1631,1628,1, + 0,0,0,1631,1632,1,0,0,0,1632,1635,1,0,0,0,1633,1634,5,222,0,0,1634, + 1636,3,280,140,0,1635,1633,1,0,0,0,1635,1636,1,0,0,0,1636,1638,1, + 0,0,0,1637,1639,5,220,0,0,1638,1637,1,0,0,0,1639,1640,1,0,0,0,1640, + 1638,1,0,0,0,1640,1641,1,0,0,0,1641,1648,1,0,0,0,1642,1644,3,48, + 24,0,1643,1645,5,220,0,0,1644,1643,1,0,0,0,1645,1646,1,0,0,0,1646, + 1644,1,0,0,0,1646,1647,1,0,0,0,1647,1649,1,0,0,0,1648,1642,1,0,0, + 0,1648,1649,1,0,0,0,1649,1650,1,0,0,0,1650,1651,5,49,0,0,1651,159, + 1,0,0,0,1652,1653,3,306,153,0,1653,1654,5,222,0,0,1654,1656,1,0, + 0,0,1655,1652,1,0,0,0,1655,1656,1,0,0,0,1656,1659,1,0,0,0,1657,1658, + 5,153,0,0,1658,1660,5,222,0,0,1659,1657,1,0,0,0,1659,1660,1,0,0, + 0,1660,1661,1,0,0,0,1661,1662,5,128,0,0,1662,1663,5,222,0,0,1663, + 1668,3,278,139,0,1664,1666,5,222,0,0,1665,1664,1,0,0,0,1665,1666, + 1,0,0,0,1666,1667,1,0,0,0,1667,1669,3,268,134,0,1668,1665,1,0,0, + 0,1668,1669,1,0,0,0,1669,1671,1,0,0,0,1670,1672,5,220,0,0,1671,1670, + 1,0,0,0,1672,1673,1,0,0,0,1673,1671,1,0,0,0,1673,1674,1,0,0,0,1674, + 1681,1,0,0,0,1675,1677,3,48,24,0,1676,1678,5,220,0,0,1677,1676,1, + 0,0,0,1678,1679,1,0,0,0,1679,1677,1,0,0,0,1679,1680,1,0,0,0,1680, + 1682,1,0,0,0,1681,1675,1,0,0,0,1681,1682,1,0,0,0,1682,1683,1,0,0, + 0,1683,1684,5,49,0,0,1684,161,1,0,0,0,1685,1686,3,306,153,0,1686, + 1687,5,222,0,0,1687,1689,1,0,0,0,1688,1685,1,0,0,0,1688,1689,1,0, + 0,0,1689,1692,1,0,0,0,1690,1691,5,153,0,0,1691,1693,5,222,0,0,1692, + 1690,1,0,0,0,1692,1693,1,0,0,0,1693,1694,1,0,0,0,1694,1695,5,127, + 0,0,1695,1696,5,222,0,0,1696,1701,3,278,139,0,1697,1699,5,222,0, + 0,1698,1697,1,0,0,0,1698,1699,1,0,0,0,1699,1700,1,0,0,0,1700,1702, + 3,268,134,0,1701,1698,1,0,0,0,1701,1702,1,0,0,0,1702,1704,1,0,0, + 0,1703,1705,5,220,0,0,1704,1703,1,0,0,0,1705,1706,1,0,0,0,1706,1704, + 1,0,0,0,1706,1707,1,0,0,0,1707,1714,1,0,0,0,1708,1710,3,48,24,0, + 1709,1711,5,220,0,0,1710,1709,1,0,0,0,1711,1712,1,0,0,0,1712,1710, + 1,0,0,0,1712,1713,1,0,0,0,1713,1715,1,0,0,0,1714,1708,1,0,0,0,1714, + 1715,1,0,0,0,1715,1716,1,0,0,0,1716,1717,5,49,0,0,1717,163,1,0,0, + 0,1718,1719,5,130,0,0,1719,1720,5,222,0,0,1720,1722,3,220,110,0, + 1721,1723,5,222,0,0,1722,1721,1,0,0,0,1722,1723,1,0,0,0,1723,1724, + 1,0,0,0,1724,1726,5,182,0,0,1725,1727,5,222,0,0,1726,1725,1,0,0, + 0,1726,1727,1,0,0,0,1727,1729,1,0,0,0,1728,1730,3,220,110,0,1729, + 1728,1,0,0,0,1729,1730,1,0,0,0,1730,1732,1,0,0,0,1731,1733,5,222, + 0,0,1732,1731,1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0,0,1734,1736, + 5,182,0,0,1735,1737,5,222,0,0,1736,1735,1,0,0,0,1736,1737,1,0,0, + 0,1737,1738,1,0,0,0,1738,1739,3,220,110,0,1739,165,1,0,0,0,1740, + 1741,5,133,0,0,1741,1742,5,222,0,0,1742,1757,3,278,139,0,1743,1745, + 5,222,0,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745,1746,1,0,0,0, + 1746,1748,5,194,0,0,1747,1749,5,222,0,0,1748,1747,1,0,0,0,1748,1749, + 1,0,0,0,1749,1754,1,0,0,0,1750,1752,3,262,131,0,1751,1753,5,222, + 0,0,1752,1751,1,0,0,0,1752,1753,1,0,0,0,1753,1755,1,0,0,0,1754,1750, + 1,0,0,0,1754,1755,1,0,0,0,1755,1756,1,0,0,0,1756,1758,5,205,0,0, + 1757,1744,1,0,0,0,1757,1758,1,0,0,0,1758,167,1,0,0,0,1759,1762,5, + 132,0,0,1760,1761,5,222,0,0,1761,1763,3,220,110,0,1762,1760,1,0, + 0,0,1762,1763,1,0,0,0,1763,169,1,0,0,0,1764,1765,5,136,0,0,1765, + 1768,5,222,0,0,1766,1767,5,123,0,0,1767,1769,5,222,0,0,1768,1766, + 1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1781,3,172,86,0, + 1771,1773,5,222,0,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1774, + 1,0,0,0,1774,1776,5,182,0,0,1775,1777,5,222,0,0,1776,1775,1,0,0, + 0,1776,1777,1,0,0,0,1777,1778,1,0,0,0,1778,1780,3,172,86,0,1779, + 1772,1,0,0,0,1780,1783,1,0,0,0,1781,1779,1,0,0,0,1781,1782,1,0,0, + 0,1782,171,1,0,0,0,1783,1781,1,0,0,0,1784,1786,3,248,124,0,1785, + 1787,5,222,0,0,1786,1785,1,0,0,0,1786,1787,1,0,0,0,1787,1788,1,0, + 0,0,1788,1790,5,194,0,0,1789,1791,5,222,0,0,1790,1789,1,0,0,0,1790, + 1791,1,0,0,0,1791,1792,1,0,0,0,1792,1794,3,274,137,0,1793,1795,5, + 222,0,0,1794,1793,1,0,0,0,1794,1795,1,0,0,0,1795,1796,1,0,0,0,1796, + 1799,5,205,0,0,1797,1798,5,222,0,0,1798,1800,3,280,140,0,1799,1797, + 1,0,0,0,1799,1800,1,0,0,0,1800,173,1,0,0,0,1801,1802,5,138,0,0,1802, + 175,1,0,0,0,1803,1809,5,139,0,0,1804,1807,5,222,0,0,1805,1808,5, + 105,0,0,1806,1808,3,278,139,0,1807,1805,1,0,0,0,1807,1806,1,0,0, + 0,1808,1810,1,0,0,0,1809,1804,1,0,0,0,1809,1810,1,0,0,0,1810,177, + 1,0,0,0,1811,1812,5,140,0,0,1812,179,1,0,0,0,1813,1814,5,141,0,0, + 1814,1815,5,222,0,0,1815,1816,3,220,110,0,1816,181,1,0,0,0,1817, + 1818,5,142,0,0,1818,1819,5,222,0,0,1819,1821,3,248,124,0,1820,1822, + 5,222,0,0,1821,1820,1,0,0,0,1821,1822,1,0,0,0,1822,1823,1,0,0,0, + 1823,1825,5,187,0,0,1824,1826,5,222,0,0,1825,1824,1,0,0,0,1825,1826, + 1,0,0,0,1826,1827,1,0,0,0,1827,1828,3,220,110,0,1828,183,1,0,0,0, + 1829,1830,5,143,0,0,1830,1831,5,222,0,0,1831,1833,3,220,110,0,1832, + 1834,5,222,0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1835,1,0, + 0,0,1835,1837,5,182,0,0,1836,1838,5,222,0,0,1837,1836,1,0,0,0,1837, + 1838,1,0,0,0,1838,1839,1,0,0,0,1839,1840,3,220,110,0,1840,185,1, + 0,0,0,1841,1842,5,144,0,0,1842,1843,5,222,0,0,1843,1845,3,220,110, + 0,1844,1846,5,222,0,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0,1846,1847, + 1,0,0,0,1847,1849,5,182,0,0,1848,1850,5,222,0,0,1849,1848,1,0,0, + 0,1849,1850,1,0,0,0,1850,1851,1,0,0,0,1851,1853,3,220,110,0,1852, + 1854,5,222,0,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0,1854,1855,1,0, + 0,0,1855,1857,5,182,0,0,1856,1858,5,222,0,0,1857,1856,1,0,0,0,1857, + 1858,1,0,0,0,1858,1859,1,0,0,0,1859,1861,3,220,110,0,1860,1862,5, + 222,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863,1,0,0,0,1863, + 1865,5,182,0,0,1864,1866,5,222,0,0,1865,1864,1,0,0,0,1865,1866,1, + 0,0,0,1866,1867,1,0,0,0,1867,1868,3,220,110,0,1868,187,1,0,0,0,1869, + 1870,5,145,0,0,1870,1871,5,222,0,0,1871,1873,3,220,110,0,1872,1874, + 5,222,0,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0,1874,1875,1,0,0,0, + 1875,1877,5,182,0,0,1876,1878,5,222,0,0,1877,1876,1,0,0,0,1877,1878, + 1,0,0,0,1878,1879,1,0,0,0,1879,1880,3,220,110,0,1880,189,1,0,0,0, + 1881,1882,5,146,0,0,1882,1883,5,222,0,0,1883,1884,5,18,0,0,1884, + 1885,5,222,0,0,1885,1887,3,220,110,0,1886,1888,5,220,0,0,1887,1886, + 1,0,0,0,1888,1889,1,0,0,0,1889,1887,1,0,0,0,1889,1890,1,0,0,0,1890, + 1894,1,0,0,0,1891,1893,3,192,96,0,1892,1891,1,0,0,0,1893,1896,1, + 0,0,0,1894,1892,1,0,0,0,1894,1895,1,0,0,0,1895,1898,1,0,0,0,1896, + 1894,1,0,0,0,1897,1899,5,222,0,0,1898,1897,1,0,0,0,1898,1899,1,0, + 0,0,1899,1900,1,0,0,0,1900,1901,5,50,0,0,1901,191,1,0,0,0,1902,1903, + 5,18,0,0,1903,1904,5,222,0,0,1904,1906,3,194,97,0,1905,1907,5,222, + 0,0,1906,1905,1,0,0,0,1906,1907,1,0,0,0,1907,1922,1,0,0,0,1908,1910, + 5,181,0,0,1909,1908,1,0,0,0,1909,1910,1,0,0,0,1910,1914,1,0,0,0, + 1911,1913,5,220,0,0,1912,1911,1,0,0,0,1913,1916,1,0,0,0,1914,1912, + 1,0,0,0,1914,1915,1,0,0,0,1915,1923,1,0,0,0,1916,1914,1,0,0,0,1917, + 1919,5,220,0,0,1918,1917,1,0,0,0,1919,1920,1,0,0,0,1920,1918,1,0, + 0,0,1920,1921,1,0,0,0,1921,1923,1,0,0,0,1922,1909,1,0,0,0,1922,1918, + 1,0,0,0,1923,1930,1,0,0,0,1924,1926,3,48,24,0,1925,1927,5,220,0, + 0,1926,1925,1,0,0,0,1927,1928,1,0,0,0,1928,1926,1,0,0,0,1928,1929, + 1,0,0,0,1929,1931,1,0,0,0,1930,1924,1,0,0,0,1930,1931,1,0,0,0,1931, + 193,1,0,0,0,1932,1948,5,44,0,0,1933,1944,3,196,98,0,1934,1936,5, + 222,0,0,1935,1934,1,0,0,0,1935,1936,1,0,0,0,1936,1937,1,0,0,0,1937, + 1939,5,182,0,0,1938,1940,5,222,0,0,1939,1938,1,0,0,0,1939,1940,1, + 0,0,0,1940,1941,1,0,0,0,1941,1943,3,196,98,0,1942,1935,1,0,0,0,1943, + 1946,1,0,0,0,1944,1942,1,0,0,0,1944,1945,1,0,0,0,1945,1948,1,0,0, + 0,1946,1944,1,0,0,0,1947,1932,1,0,0,0,1947,1933,1,0,0,0,1948,195, + 1,0,0,0,1949,1951,5,80,0,0,1950,1952,5,222,0,0,1951,1950,1,0,0,0, + 1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,1955,3,286,143,0,1954,1956, + 5,222,0,0,1955,1954,1,0,0,0,1955,1956,1,0,0,0,1956,1957,1,0,0,0, + 1957,1958,3,220,110,0,1958,1967,1,0,0,0,1959,1967,3,220,110,0,1960, + 1961,3,220,110,0,1961,1962,5,222,0,0,1962,1963,5,162,0,0,1963,1964, + 5,222,0,0,1964,1965,3,220,110,0,1965,1967,1,0,0,0,1966,1949,1,0, + 0,0,1966,1959,1,0,0,0,1966,1960,1,0,0,0,1967,197,1,0,0,0,1968,1969, + 5,147,0,0,1969,1970,5,222,0,0,1970,1979,3,220,110,0,1971,1973,5, + 222,0,0,1972,1971,1,0,0,0,1972,1973,1,0,0,0,1973,1974,1,0,0,0,1974, + 1976,5,182,0,0,1975,1977,5,222,0,0,1976,1975,1,0,0,0,1976,1977,1, + 0,0,0,1977,1978,1,0,0,0,1978,1980,3,220,110,0,1979,1972,1,0,0,0, + 1979,1980,1,0,0,0,1980,199,1,0,0,0,1981,1982,5,149,0,0,1982,1983, + 5,222,0,0,1983,1985,3,220,110,0,1984,1986,5,222,0,0,1985,1984,1, + 0,0,0,1985,1986,1,0,0,0,1986,1987,1,0,0,0,1987,1989,5,182,0,0,1988, + 1990,5,222,0,0,1989,1988,1,0,0,0,1989,1990,1,0,0,0,1990,1991,1,0, + 0,0,1991,1992,3,220,110,0,1992,201,1,0,0,0,1993,1994,5,148,0,0,1994, + 1995,5,222,0,0,1995,1997,3,248,124,0,1996,1998,5,222,0,0,1997,1996, + 1,0,0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2001,5,187,0,0, + 2000,2002,5,222,0,0,2001,2000,1,0,0,0,2001,2002,1,0,0,0,2002,2003, + 1,0,0,0,2003,2004,3,220,110,0,2004,203,1,0,0,0,2005,2006,5,155,0, + 0,2006,205,1,0,0,0,2007,2008,3,306,153,0,2008,2009,5,222,0,0,2009, + 2011,1,0,0,0,2010,2007,1,0,0,0,2010,2011,1,0,0,0,2011,2014,1,0,0, + 0,2012,2013,5,153,0,0,2013,2015,5,222,0,0,2014,2012,1,0,0,0,2014, + 2015,1,0,0,0,2015,2016,1,0,0,0,2016,2017,5,157,0,0,2017,2018,5,222, + 0,0,2018,2023,3,278,139,0,2019,2021,5,222,0,0,2020,2019,1,0,0,0, + 2020,2021,1,0,0,0,2021,2022,1,0,0,0,2022,2024,3,268,134,0,2023,2020, + 1,0,0,0,2023,2024,1,0,0,0,2024,2026,1,0,0,0,2025,2027,5,220,0,0, + 2026,2025,1,0,0,0,2027,2028,1,0,0,0,2028,2026,1,0,0,0,2028,2029, + 1,0,0,0,2029,2036,1,0,0,0,2030,2032,3,48,24,0,2031,2033,5,220,0, + 0,2032,2031,1,0,0,0,2033,2034,1,0,0,0,2034,2032,1,0,0,0,2034,2035, + 1,0,0,0,2035,2037,1,0,0,0,2036,2030,1,0,0,0,2036,2037,1,0,0,0,2037, + 2038,1,0,0,0,2038,2039,5,51,0,0,2039,207,1,0,0,0,2040,2042,5,161, + 0,0,2041,2043,5,222,0,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043, + 2044,1,0,0,0,2044,2046,5,187,0,0,2045,2047,5,222,0,0,2046,2045,1, + 0,0,0,2046,2047,1,0,0,0,2047,2048,1,0,0,0,2048,2049,3,220,110,0, + 2049,209,1,0,0,0,2050,2051,3,306,153,0,2051,2052,5,222,0,0,2052, + 2054,1,0,0,0,2053,2050,1,0,0,0,2053,2054,1,0,0,0,2054,2055,1,0,0, + 0,2055,2056,5,164,0,0,2056,2057,5,222,0,0,2057,2059,3,278,139,0, + 2058,2060,5,220,0,0,2059,2058,1,0,0,0,2060,2061,1,0,0,0,2061,2059, + 1,0,0,0,2061,2062,1,0,0,0,2062,2066,1,0,0,0,2063,2065,3,212,106, + 0,2064,2063,1,0,0,0,2065,2068,1,0,0,0,2066,2064,1,0,0,0,2066,2067, + 1,0,0,0,2067,2069,1,0,0,0,2068,2066,1,0,0,0,2069,2070,5,52,0,0,2070, + 211,1,0,0,0,2071,2086,3,278,139,0,2072,2074,5,222,0,0,2073,2072, + 1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075,2080,5,194,0,0, + 2076,2078,5,222,0,0,2077,2076,1,0,0,0,2077,2078,1,0,0,0,2078,2079, + 1,0,0,0,2079,2081,3,274,137,0,2080,2077,1,0,0,0,2080,2081,1,0,0, + 0,2081,2083,1,0,0,0,2082,2084,5,222,0,0,2083,2082,1,0,0,0,2083,2084, + 1,0,0,0,2084,2085,1,0,0,0,2085,2087,5,205,0,0,2086,2073,1,0,0,0, + 2086,2087,1,0,0,0,2087,2090,1,0,0,0,2088,2089,5,222,0,0,2089,2091, + 3,280,140,0,2090,2088,1,0,0,0,2090,2091,1,0,0,0,2091,2093,1,0,0, + 0,2092,2094,5,220,0,0,2093,2092,1,0,0,0,2094,2095,1,0,0,0,2095,2093, + 1,0,0,0,2095,2096,1,0,0,0,2096,213,1,0,0,0,2097,2098,5,165,0,0,2098, + 2099,5,222,0,0,2099,2104,3,220,110,0,2100,2101,5,222,0,0,2101,2102, + 5,80,0,0,2102,2103,5,222,0,0,2103,2105,3,302,151,0,2104,2100,1,0, + 0,0,2104,2105,1,0,0,0,2105,215,1,0,0,0,2106,2107,5,166,0,0,2107, + 2108,5,222,0,0,2108,2109,3,220,110,0,2109,217,1,0,0,0,2110,2111, + 5,167,0,0,2111,2112,5,222,0,0,2112,2127,3,220,110,0,2113,2115,5, + 222,0,0,2114,2113,1,0,0,0,2114,2115,1,0,0,0,2115,2116,1,0,0,0,2116, + 2118,5,182,0,0,2117,2119,5,222,0,0,2118,2117,1,0,0,0,2118,2119,1, + 0,0,0,2119,2120,1,0,0,0,2120,2125,3,220,110,0,2121,2122,5,222,0, + 0,2122,2123,5,162,0,0,2123,2124,5,222,0,0,2124,2126,3,220,110,0, + 2125,2121,1,0,0,0,2125,2126,1,0,0,0,2126,2128,1,0,0,0,2127,2114, + 1,0,0,0,2127,2128,1,0,0,0,2128,219,1,0,0,0,2129,2130,6,110,-1,0, + 2130,2194,3,296,148,0,2131,2133,5,194,0,0,2132,2134,5,222,0,0,2133, + 2132,1,0,0,0,2133,2134,1,0,0,0,2134,2135,1,0,0,0,2135,2146,3,220, + 110,0,2136,2138,5,222,0,0,2137,2136,1,0,0,0,2137,2138,1,0,0,0,2138, + 2139,1,0,0,0,2139,2141,5,182,0,0,2140,2142,5,222,0,0,2141,2140,1, + 0,0,0,2141,2142,1,0,0,0,2142,2143,1,0,0,0,2143,2145,3,220,110,0, + 2144,2137,1,0,0,0,2145,2148,1,0,0,0,2146,2144,1,0,0,0,2146,2147, + 1,0,0,0,2147,2150,1,0,0,0,2148,2146,1,0,0,0,2149,2151,5,222,0,0, + 2150,2149,1,0,0,0,2150,2151,1,0,0,0,2151,2152,1,0,0,0,2152,2153, + 5,205,0,0,2153,2194,1,0,0,0,2154,2155,5,106,0,0,2155,2156,5,222, + 0,0,2156,2194,3,220,110,20,2157,2194,3,214,107,0,2158,2159,5,2,0, + 0,2159,2160,5,222,0,0,2160,2194,3,220,110,18,2161,2163,3,248,124, + 0,2162,2164,5,222,0,0,2163,2162,1,0,0,0,2163,2164,1,0,0,0,2164,2165, + 1,0,0,0,2165,2167,5,179,0,0,2166,2168,5,222,0,0,2167,2166,1,0,0, + 0,2167,2168,1,0,0,0,2168,2169,1,0,0,0,2169,2170,3,220,110,17,2170, + 2194,1,0,0,0,2171,2173,7,12,0,0,2172,2174,5,222,0,0,2173,2172,1, + 0,0,0,2173,2174,1,0,0,0,2174,2175,1,0,0,0,2175,2194,3,220,110,15, + 2176,2189,5,107,0,0,2177,2178,5,222,0,0,2178,2190,3,220,110,0,2179, + 2181,5,194,0,0,2180,2182,5,222,0,0,2181,2180,1,0,0,0,2181,2182,1, + 0,0,0,2182,2183,1,0,0,0,2183,2185,3,220,110,0,2184,2186,5,222,0, + 0,2185,2184,1,0,0,0,2185,2186,1,0,0,0,2186,2187,1,0,0,0,2187,2188, + 5,205,0,0,2188,2190,1,0,0,0,2189,2177,1,0,0,0,2189,2179,1,0,0,0, + 2190,2194,1,0,0,0,2191,2194,3,248,124,0,2192,2194,3,138,69,0,2193, + 2129,1,0,0,0,2193,2131,1,0,0,0,2193,2154,1,0,0,0,2193,2157,1,0,0, + 0,2193,2158,1,0,0,0,2193,2161,1,0,0,0,2193,2171,1,0,0,0,2193,2176, + 1,0,0,0,2193,2191,1,0,0,0,2193,2192,1,0,0,0,2194,2305,1,0,0,0,2195, + 2197,10,16,0,0,2196,2198,5,222,0,0,2197,2196,1,0,0,0,2197,2198,1, + 0,0,0,2198,2199,1,0,0,0,2199,2201,5,203,0,0,2200,2202,5,222,0,0, + 2201,2200,1,0,0,0,2201,2202,1,0,0,0,2202,2203,1,0,0,0,2203,2304, + 3,220,110,17,2204,2206,10,14,0,0,2205,2207,5,222,0,0,2206,2205,1, + 0,0,0,2206,2207,1,0,0,0,2207,2208,1,0,0,0,2208,2210,7,13,0,0,2209, + 2211,5,222,0,0,2210,2209,1,0,0,0,2210,2211,1,0,0,0,2211,2212,1,0, + 0,0,2212,2304,3,220,110,15,2213,2215,10,13,0,0,2214,2216,5,222,0, + 0,2215,2214,1,0,0,0,2215,2216,1,0,0,0,2216,2217,1,0,0,0,2217,2219, + 5,183,0,0,2218,2220,5,222,0,0,2219,2218,1,0,0,0,2219,2220,1,0,0, + 0,2220,2221,1,0,0,0,2221,2304,3,220,110,14,2222,2224,10,12,0,0,2223, + 2225,5,222,0,0,2224,2223,1,0,0,0,2224,2225,1,0,0,0,2225,2226,1,0, + 0,0,2226,2228,5,103,0,0,2227,2229,5,222,0,0,2228,2227,1,0,0,0,2228, + 2229,1,0,0,0,2229,2230,1,0,0,0,2230,2304,3,220,110,13,2231,2233, + 10,11,0,0,2232,2234,5,222,0,0,2233,2232,1,0,0,0,2233,2234,1,0,0, + 0,2234,2235,1,0,0,0,2235,2237,7,12,0,0,2236,2238,5,222,0,0,2237, + 2236,1,0,0,0,2237,2238,1,0,0,0,2238,2239,1,0,0,0,2239,2304,3,220, + 110,12,2240,2242,10,10,0,0,2241,2243,5,222,0,0,2242,2241,1,0,0,0, + 2242,2243,1,0,0,0,2243,2244,1,0,0,0,2244,2246,5,178,0,0,2245,2247, + 5,222,0,0,2246,2245,1,0,0,0,2246,2247,1,0,0,0,2247,2248,1,0,0,0, + 2248,2304,3,220,110,11,2249,2251,10,9,0,0,2250,2252,5,222,0,0,2251, + 2250,1,0,0,0,2251,2252,1,0,0,0,2252,2253,1,0,0,0,2253,2255,7,14, + 0,0,2254,2256,5,222,0,0,2255,2254,1,0,0,0,2255,2256,1,0,0,0,2256, + 2257,1,0,0,0,2257,2304,3,220,110,10,2258,2260,10,7,0,0,2259,2261, + 5,222,0,0,2260,2259,1,0,0,0,2260,2261,1,0,0,0,2261,2262,1,0,0,0, + 2262,2264,5,4,0,0,2263,2265,5,222,0,0,2264,2263,1,0,0,0,2264,2265, + 1,0,0,0,2265,2266,1,0,0,0,2266,2304,3,220,110,8,2267,2269,10,6,0, + 0,2268,2270,5,222,0,0,2269,2268,1,0,0,0,2269,2270,1,0,0,0,2270,2271, + 1,0,0,0,2271,2273,5,120,0,0,2272,2274,5,222,0,0,2273,2272,1,0,0, + 0,2273,2274,1,0,0,0,2274,2275,1,0,0,0,2275,2304,3,220,110,7,2276, + 2278,10,5,0,0,2277,2279,5,222,0,0,2278,2277,1,0,0,0,2278,2279,1, + 0,0,0,2279,2280,1,0,0,0,2280,2282,5,177,0,0,2281,2283,5,222,0,0, + 2282,2281,1,0,0,0,2282,2283,1,0,0,0,2283,2284,1,0,0,0,2284,2304, + 3,220,110,6,2285,2287,10,4,0,0,2286,2288,5,222,0,0,2287,2286,1,0, + 0,0,2287,2288,1,0,0,0,2288,2289,1,0,0,0,2289,2291,5,57,0,0,2290, + 2292,5,222,0,0,2291,2290,1,0,0,0,2291,2292,1,0,0,0,2292,2293,1,0, + 0,0,2293,2304,3,220,110,5,2294,2296,10,3,0,0,2295,2297,5,222,0,0, + 2296,2295,1,0,0,0,2296,2297,1,0,0,0,2297,2298,1,0,0,0,2298,2300, + 5,76,0,0,2299,2301,5,222,0,0,2300,2299,1,0,0,0,2300,2301,1,0,0,0, + 2301,2302,1,0,0,0,2302,2304,3,220,110,4,2303,2195,1,0,0,0,2303,2204, + 1,0,0,0,2303,2213,1,0,0,0,2303,2222,1,0,0,0,2303,2231,1,0,0,0,2303, + 2240,1,0,0,0,2303,2249,1,0,0,0,2303,2258,1,0,0,0,2303,2267,1,0,0, + 0,2303,2276,1,0,0,0,2303,2285,1,0,0,0,2303,2294,1,0,0,0,2304,2307, + 1,0,0,0,2305,2303,1,0,0,0,2305,2306,1,0,0,0,2306,221,1,0,0,0,2307, + 2305,1,0,0,0,2308,2312,5,40,0,0,2309,2312,5,153,0,0,2310,2312,3, + 306,153,0,2311,2308,1,0,0,0,2311,2309,1,0,0,0,2311,2310,1,0,0,0, + 2312,2313,1,0,0,0,2313,2316,5,222,0,0,2314,2315,5,175,0,0,2315,2317, + 5,222,0,0,2316,2314,1,0,0,0,2316,2317,1,0,0,0,2317,2318,1,0,0,0, + 2318,2319,3,224,112,0,2319,223,1,0,0,0,2320,2331,3,226,113,0,2321, + 2323,5,222,0,0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323,2324,1,0, + 0,0,2324,2326,5,182,0,0,2325,2327,5,222,0,0,2326,2325,1,0,0,0,2326, + 2327,1,0,0,0,2327,2328,1,0,0,0,2328,2330,3,226,113,0,2329,2322,1, + 0,0,0,2330,2333,1,0,0,0,2331,2329,1,0,0,0,2331,2332,1,0,0,0,2332, + 225,1,0,0,0,2333,2331,1,0,0,0,2334,2336,3,278,139,0,2335,2337,3, + 304,152,0,2336,2335,1,0,0,0,2336,2337,1,0,0,0,2337,2355,1,0,0,0, + 2338,2340,5,222,0,0,2339,2338,1,0,0,0,2339,2340,1,0,0,0,2340,2341, + 1,0,0,0,2341,2343,5,194,0,0,2342,2344,5,222,0,0,2343,2342,1,0,0, + 0,2343,2344,1,0,0,0,2344,2349,1,0,0,0,2345,2347,3,274,137,0,2346, + 2348,5,222,0,0,2347,2346,1,0,0,0,2347,2348,1,0,0,0,2348,2350,1,0, + 0,0,2349,2345,1,0,0,0,2349,2350,1,0,0,0,2350,2351,1,0,0,0,2351,2353, + 5,205,0,0,2352,2354,5,222,0,0,2353,2352,1,0,0,0,2353,2354,1,0,0, + 0,2354,2356,1,0,0,0,2355,2339,1,0,0,0,2355,2356,1,0,0,0,2356,2359, + 1,0,0,0,2357,2358,5,222,0,0,2358,2360,3,280,140,0,2359,2357,1,0, + 0,0,2359,2360,1,0,0,0,2360,227,1,0,0,0,2361,2362,5,172,0,0,2362, + 2363,5,222,0,0,2363,2365,3,220,110,0,2364,2366,5,220,0,0,2365,2364, + 1,0,0,0,2366,2367,1,0,0,0,2367,2365,1,0,0,0,2367,2368,1,0,0,0,2368, + 2372,1,0,0,0,2369,2371,3,48,24,0,2370,2369,1,0,0,0,2371,2374,1,0, + 0,0,2372,2370,1,0,0,0,2372,2373,1,0,0,0,2373,2378,1,0,0,0,2374,2372, + 1,0,0,0,2375,2377,5,220,0,0,2376,2375,1,0,0,0,2377,2380,1,0,0,0, + 2378,2376,1,0,0,0,2378,2379,1,0,0,0,2379,2381,1,0,0,0,2380,2378, + 1,0,0,0,2381,2382,5,171,0,0,2382,229,1,0,0,0,2383,2384,5,173,0,0, + 2384,2385,5,222,0,0,2385,2387,3,220,110,0,2386,2388,5,222,0,0,2387, + 2386,1,0,0,0,2387,2388,1,0,0,0,2388,2389,1,0,0,0,2389,2391,5,182, + 0,0,2390,2392,5,222,0,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0,2392, + 2393,1,0,0,0,2393,2394,3,220,110,0,2394,231,1,0,0,0,2395,2396,5, + 174,0,0,2396,2399,5,222,0,0,2397,2398,5,106,0,0,2398,2400,5,222, + 0,0,2399,2397,1,0,0,0,2399,2400,1,0,0,0,2400,2401,1,0,0,0,2401,2403, + 3,248,124,0,2402,2404,5,220,0,0,2403,2402,1,0,0,0,2404,2405,1,0, + 0,0,2405,2403,1,0,0,0,2405,2406,1,0,0,0,2406,2413,1,0,0,0,2407,2409, + 3,48,24,0,2408,2410,5,220,0,0,2409,2408,1,0,0,0,2410,2411,1,0,0, + 0,2411,2409,1,0,0,0,2411,2412,1,0,0,0,2412,2414,1,0,0,0,2413,2407, + 1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415,2416,5,53,0,0,2416, + 233,1,0,0,0,2417,2418,5,176,0,0,2418,2419,5,222,0,0,2419,2421,3, + 220,110,0,2420,2422,5,222,0,0,2421,2420,1,0,0,0,2421,2422,1,0,0, + 0,2422,2423,1,0,0,0,2423,2428,5,182,0,0,2424,2426,5,222,0,0,2425, + 2424,1,0,0,0,2425,2426,1,0,0,0,2426,2427,1,0,0,0,2427,2429,3,152, + 76,0,2428,2425,1,0,0,0,2428,2429,1,0,0,0,2429,235,1,0,0,0,2430,2433, + 3,238,119,0,2431,2433,3,240,120,0,2432,2430,1,0,0,0,2432,2431,1, + 0,0,0,2433,237,1,0,0,0,2434,2435,5,17,0,0,2435,2436,5,222,0,0,2436, + 2438,3,278,139,0,2437,2439,3,304,152,0,2438,2437,1,0,0,0,2438,2439, + 1,0,0,0,2439,2453,1,0,0,0,2440,2442,5,222,0,0,2441,2440,1,0,0,0, + 2441,2442,1,0,0,0,2442,2443,1,0,0,0,2443,2445,5,194,0,0,2444,2446, + 5,222,0,0,2445,2444,1,0,0,0,2445,2446,1,0,0,0,2446,2447,1,0,0,0, + 2447,2449,3,262,131,0,2448,2450,5,222,0,0,2449,2448,1,0,0,0,2449, + 2450,1,0,0,0,2450,2451,1,0,0,0,2451,2452,5,205,0,0,2452,2454,1,0, + 0,0,2453,2441,1,0,0,0,2453,2454,1,0,0,0,2454,239,1,0,0,0,2455,2456, + 5,17,0,0,2456,2458,5,222,0,0,2457,2459,3,248,124,0,2458,2457,1,0, + 0,0,2458,2459,1,0,0,0,2459,2460,1,0,0,0,2460,2462,5,186,0,0,2461, + 2463,5,222,0,0,2462,2461,1,0,0,0,2462,2463,1,0,0,0,2463,2464,1,0, + 0,0,2464,2466,3,278,139,0,2465,2467,3,304,152,0,2466,2465,1,0,0, + 0,2466,2467,1,0,0,0,2467,2481,1,0,0,0,2468,2470,5,222,0,0,2469,2468, + 1,0,0,0,2469,2470,1,0,0,0,2470,2471,1,0,0,0,2471,2473,5,194,0,0, + 2472,2474,5,222,0,0,2473,2472,1,0,0,0,2473,2474,1,0,0,0,2474,2475, + 1,0,0,0,2475,2477,3,262,131,0,2476,2478,5,222,0,0,2477,2476,1,0, + 0,0,2477,2478,1,0,0,0,2478,2479,1,0,0,0,2479,2480,5,205,0,0,2480, + 2482,1,0,0,0,2481,2469,1,0,0,0,2481,2482,1,0,0,0,2482,241,1,0,0, + 0,2483,2486,3,244,122,0,2484,2486,3,246,123,0,2485,2483,1,0,0,0, + 2485,2484,1,0,0,0,2486,243,1,0,0,0,2487,2490,3,284,142,0,2488,2489, + 5,222,0,0,2489,2491,3,262,131,0,2490,2488,1,0,0,0,2490,2491,1,0, + 0,0,2491,245,1,0,0,0,2492,2494,3,248,124,0,2493,2492,1,0,0,0,2493, + 2494,1,0,0,0,2494,2495,1,0,0,0,2495,2496,5,186,0,0,2496,2498,3,278, + 139,0,2497,2499,3,304,152,0,2498,2497,1,0,0,0,2498,2499,1,0,0,0, + 2499,2502,1,0,0,0,2500,2501,5,222,0,0,2501,2503,3,262,131,0,2502, + 2500,1,0,0,0,2502,2503,1,0,0,0,2503,2505,1,0,0,0,2504,2506,3,266, + 133,0,2505,2504,1,0,0,0,2505,2506,1,0,0,0,2506,247,1,0,0,0,2507, + 2512,3,256,128,0,2508,2512,3,250,125,0,2509,2512,3,252,126,0,2510, + 2512,3,260,130,0,2511,2507,1,0,0,0,2511,2508,1,0,0,0,2511,2509,1, + 0,0,0,2511,2510,1,0,0,0,2512,249,1,0,0,0,2513,2515,3,278,139,0,2514, + 2516,3,304,152,0,2515,2514,1,0,0,0,2515,2516,1,0,0,0,2516,2518,1, + 0,0,0,2517,2519,3,266,133,0,2518,2517,1,0,0,0,2518,2519,1,0,0,0, + 2519,251,1,0,0,0,2520,2524,3,278,139,0,2521,2524,3,282,141,0,2522, + 2524,3,254,127,0,2523,2520,1,0,0,0,2523,2521,1,0,0,0,2523,2522,1, + 0,0,0,2524,2526,1,0,0,0,2525,2527,3,304,152,0,2526,2525,1,0,0,0, + 2526,2527,1,0,0,0,2527,2529,1,0,0,0,2528,2530,5,222,0,0,2529,2528, + 1,0,0,0,2529,2530,1,0,0,0,2530,2542,1,0,0,0,2531,2533,5,194,0,0, + 2532,2534,5,222,0,0,2533,2532,1,0,0,0,2533,2534,1,0,0,0,2534,2539, + 1,0,0,0,2535,2537,3,262,131,0,2536,2538,5,222,0,0,2537,2536,1,0, + 0,0,2537,2538,1,0,0,0,2538,2540,1,0,0,0,2539,2535,1,0,0,0,2539,2540, + 1,0,0,0,2540,2541,1,0,0,0,2541,2543,5,205,0,0,2542,2531,1,0,0,0, + 2543,2544,1,0,0,0,2544,2542,1,0,0,0,2544,2545,1,0,0,0,2545,2547, + 1,0,0,0,2546,2548,3,266,133,0,2547,2546,1,0,0,0,2547,2548,1,0,0, + 0,2548,253,1,0,0,0,2549,2551,3,278,139,0,2550,2552,3,304,152,0,2551, + 2550,1,0,0,0,2551,2552,1,0,0,0,2552,2554,1,0,0,0,2553,2555,5,222, + 0,0,2554,2553,1,0,0,0,2554,2555,1,0,0,0,2555,2556,1,0,0,0,2556,2558, + 5,194,0,0,2557,2559,5,222,0,0,2558,2557,1,0,0,0,2558,2559,1,0,0, + 0,2559,2564,1,0,0,0,2560,2562,3,262,131,0,2561,2563,5,222,0,0,2562, + 2561,1,0,0,0,2562,2563,1,0,0,0,2563,2565,1,0,0,0,2564,2560,1,0,0, + 0,2564,2565,1,0,0,0,2565,2566,1,0,0,0,2566,2567,5,205,0,0,2567,255, + 1,0,0,0,2568,2571,3,250,125,0,2569,2571,3,252,126,0,2570,2568,1, + 0,0,0,2570,2569,1,0,0,0,2570,2571,1,0,0,0,2571,2573,1,0,0,0,2572, + 2574,3,258,129,0,2573,2572,1,0,0,0,2574,2575,1,0,0,0,2575,2573,1, + 0,0,0,2575,2576,1,0,0,0,2576,2578,1,0,0,0,2577,2579,3,266,133,0, + 2578,2577,1,0,0,0,2578,2579,1,0,0,0,2579,257,1,0,0,0,2580,2582,5, + 222,0,0,2581,2580,1,0,0,0,2581,2582,1,0,0,0,2582,2583,1,0,0,0,2583, + 2586,5,186,0,0,2584,2587,3,250,125,0,2585,2587,3,252,126,0,2586, + 2584,1,0,0,0,2586,2585,1,0,0,0,2587,259,1,0,0,0,2588,2589,3,266, + 133,0,2589,261,1,0,0,0,2590,2592,3,264,132,0,2591,2590,1,0,0,0,2591, + 2592,1,0,0,0,2592,2594,1,0,0,0,2593,2595,5,222,0,0,2594,2593,1,0, + 0,0,2594,2595,1,0,0,0,2595,2596,1,0,0,0,2596,2598,7,10,0,0,2597, + 2599,5,222,0,0,2598,2597,1,0,0,0,2598,2599,1,0,0,0,2599,2601,1,0, + 0,0,2600,2591,1,0,0,0,2601,2604,1,0,0,0,2602,2600,1,0,0,0,2602,2603, + 1,0,0,0,2603,2605,1,0,0,0,2604,2602,1,0,0,0,2605,2618,3,264,132, + 0,2606,2608,5,222,0,0,2607,2606,1,0,0,0,2607,2608,1,0,0,0,2608,2609, + 1,0,0,0,2609,2611,7,10,0,0,2610,2612,5,222,0,0,2611,2610,1,0,0,0, + 2611,2612,1,0,0,0,2612,2614,1,0,0,0,2613,2615,3,264,132,0,2614,2613, + 1,0,0,0,2614,2615,1,0,0,0,2615,2617,1,0,0,0,2616,2607,1,0,0,0,2617, + 2620,1,0,0,0,2618,2616,1,0,0,0,2618,2619,1,0,0,0,2619,263,1,0,0, + 0,2620,2618,1,0,0,0,2621,2622,7,15,0,0,2622,2624,5,222,0,0,2623, + 2621,1,0,0,0,2623,2624,1,0,0,0,2624,2625,1,0,0,0,2625,2626,3,220, + 110,0,2626,265,1,0,0,0,2627,2628,5,188,0,0,2628,2630,3,278,139,0, + 2629,2631,3,304,152,0,2630,2629,1,0,0,0,2630,2631,1,0,0,0,2631,267, + 1,0,0,0,2632,2650,5,194,0,0,2633,2635,5,222,0,0,2634,2633,1,0,0, + 0,2634,2635,1,0,0,0,2635,2636,1,0,0,0,2636,2647,3,270,135,0,2637, + 2639,5,222,0,0,2638,2637,1,0,0,0,2638,2639,1,0,0,0,2639,2640,1,0, + 0,0,2640,2642,5,182,0,0,2641,2643,5,222,0,0,2642,2641,1,0,0,0,2642, + 2643,1,0,0,0,2643,2644,1,0,0,0,2644,2646,3,270,135,0,2645,2638,1, + 0,0,0,2646,2649,1,0,0,0,2647,2645,1,0,0,0,2647,2648,1,0,0,0,2648, + 2651,1,0,0,0,2649,2647,1,0,0,0,2650,2634,1,0,0,0,2650,2651,1,0,0, + 0,2651,2653,1,0,0,0,2652,2654,5,222,0,0,2653,2652,1,0,0,0,2653,2654, + 1,0,0,0,2654,2655,1,0,0,0,2655,2656,5,205,0,0,2656,269,1,0,0,0,2657, + 2658,5,115,0,0,2658,2660,5,222,0,0,2659,2657,1,0,0,0,2659,2660,1, + 0,0,0,2660,2663,1,0,0,0,2661,2662,7,16,0,0,2662,2664,5,222,0,0,2663, + 2661,1,0,0,0,2663,2664,1,0,0,0,2664,2667,1,0,0,0,2665,2666,5,122, + 0,0,2666,2668,5,222,0,0,2667,2665,1,0,0,0,2667,2668,1,0,0,0,2668, + 2669,1,0,0,0,2669,2671,3,278,139,0,2670,2672,3,304,152,0,2671,2670, + 1,0,0,0,2671,2672,1,0,0,0,2672,2681,1,0,0,0,2673,2675,5,222,0,0, + 2674,2673,1,0,0,0,2674,2675,1,0,0,0,2675,2676,1,0,0,0,2676,2678, + 5,194,0,0,2677,2679,5,222,0,0,2678,2677,1,0,0,0,2678,2679,1,0,0, + 0,2679,2680,1,0,0,0,2680,2682,5,205,0,0,2681,2674,1,0,0,0,2681,2682, + 1,0,0,0,2682,2685,1,0,0,0,2683,2684,5,222,0,0,2684,2686,3,280,140, + 0,2685,2683,1,0,0,0,2685,2686,1,0,0,0,2686,2691,1,0,0,0,2687,2689, + 5,222,0,0,2688,2687,1,0,0,0,2688,2689,1,0,0,0,2689,2690,1,0,0,0, + 2690,2692,3,272,136,0,2691,2688,1,0,0,0,2691,2692,1,0,0,0,2692,271, + 1,0,0,0,2693,2695,5,187,0,0,2694,2696,5,222,0,0,2695,2694,1,0,0, + 0,2695,2696,1,0,0,0,2696,2697,1,0,0,0,2697,2698,3,220,110,0,2698, + 273,1,0,0,0,2699,2710,3,276,138,0,2700,2702,5,222,0,0,2701,2700, + 1,0,0,0,2701,2702,1,0,0,0,2702,2703,1,0,0,0,2703,2705,5,182,0,0, + 2704,2706,5,222,0,0,2705,2704,1,0,0,0,2705,2706,1,0,0,0,2706,2707, + 1,0,0,0,2707,2709,3,276,138,0,2708,2701,1,0,0,0,2709,2712,1,0,0, + 0,2710,2708,1,0,0,0,2710,2711,1,0,0,0,2711,275,1,0,0,0,2712,2710, + 1,0,0,0,2713,2714,3,220,110,0,2714,2715,5,222,0,0,2715,2716,5,162, + 0,0,2716,2717,5,222,0,0,2717,2719,1,0,0,0,2718,2713,1,0,0,0,2718, + 2719,1,0,0,0,2719,2720,1,0,0,0,2720,2721,3,220,110,0,2721,277,1, + 0,0,0,2722,2725,5,218,0,0,2723,2725,3,308,154,0,2724,2722,1,0,0, + 0,2724,2723,1,0,0,0,2725,2726,1,0,0,0,2726,2724,1,0,0,0,2726,2727, + 1,0,0,0,2727,2737,1,0,0,0,2728,2731,5,207,0,0,2729,2732,5,218,0, + 0,2730,2732,3,308,154,0,2731,2729,1,0,0,0,2731,2730,1,0,0,0,2732, + 2733,1,0,0,0,2733,2731,1,0,0,0,2733,2734,1,0,0,0,2734,2735,1,0,0, + 0,2735,2737,5,208,0,0,2736,2724,1,0,0,0,2736,2728,1,0,0,0,2737,279, + 1,0,0,0,2738,2739,5,8,0,0,2739,2742,5,222,0,0,2740,2741,5,106,0, + 0,2741,2743,5,222,0,0,2742,2740,1,0,0,0,2742,2743,1,0,0,0,2743,2744, + 1,0,0,0,2744,2747,3,302,151,0,2745,2746,5,222,0,0,2746,2748,3,290, + 145,0,2747,2745,1,0,0,0,2747,2748,1,0,0,0,2748,281,1,0,0,0,2749, + 2750,7,17,0,0,2750,283,1,0,0,0,2751,2756,5,218,0,0,2752,2755,3,308, + 154,0,2753,2755,5,218,0,0,2754,2752,1,0,0,0,2754,2753,1,0,0,0,2755, + 2758,1,0,0,0,2756,2754,1,0,0,0,2756,2757,1,0,0,0,2757,2767,1,0,0, + 0,2758,2756,1,0,0,0,2759,2762,3,308,154,0,2760,2763,3,308,154,0, + 2761,2763,5,218,0,0,2762,2760,1,0,0,0,2762,2761,1,0,0,0,2763,2764, + 1,0,0,0,2764,2762,1,0,0,0,2764,2765,1,0,0,0,2765,2767,1,0,0,0,2766, + 2751,1,0,0,0,2766,2759,1,0,0,0,2767,285,1,0,0,0,2768,2769,7,14,0, + 0,2769,287,1,0,0,0,2770,2775,3,278,139,0,2771,2772,5,186,0,0,2772, + 2774,3,278,139,0,2773,2771,1,0,0,0,2774,2777,1,0,0,0,2775,2773,1, + 0,0,0,2775,2776,1,0,0,0,2776,289,1,0,0,0,2777,2775,1,0,0,0,2778, + 2780,5,198,0,0,2779,2781,5,222,0,0,2780,2779,1,0,0,0,2780,2781,1, + 0,0,0,2781,2784,1,0,0,0,2782,2785,3,310,155,0,2783,2785,3,278,139, + 0,2784,2782,1,0,0,0,2784,2783,1,0,0,0,2785,291,1,0,0,0,2786,2795, + 3,284,142,0,2787,2789,5,222,0,0,2788,2787,1,0,0,0,2788,2789,1,0, + 0,0,2789,2790,1,0,0,0,2790,2792,5,196,0,0,2791,2793,5,222,0,0,2792, + 2791,1,0,0,0,2792,2793,1,0,0,0,2793,2794,1,0,0,0,2794,2796,3,284, + 142,0,2795,2788,1,0,0,0,2795,2796,1,0,0,0,2796,293,1,0,0,0,2797, + 2798,3,278,139,0,2798,2799,5,181,0,0,2799,295,1,0,0,0,2800,2812, + 5,211,0,0,2801,2812,5,210,0,0,2802,2812,3,314,157,0,2803,2812,5, + 214,0,0,2804,2812,3,310,155,0,2805,2812,3,312,156,0,2806,2812,5, + 209,0,0,2807,2812,5,163,0,0,2808,2812,5,66,0,0,2809,2812,5,108,0, + 0,2810,2812,5,109,0,0,2811,2800,1,0,0,0,2811,2801,1,0,0,0,2811,2802, + 1,0,0,0,2811,2803,1,0,0,0,2811,2804,1,0,0,0,2811,2805,1,0,0,0,2811, + 2806,1,0,0,0,2811,2807,1,0,0,0,2811,2808,1,0,0,0,2811,2809,1,0,0, + 0,2811,2810,1,0,0,0,2812,297,1,0,0,0,2813,2814,7,18,0,0,2814,299, + 1,0,0,0,2815,2816,7,19,0,0,2816,301,1,0,0,0,2817,2820,3,282,141, + 0,2818,2820,3,288,144,0,2819,2817,1,0,0,0,2819,2818,1,0,0,0,2820, + 2829,1,0,0,0,2821,2823,5,222,0,0,2822,2821,1,0,0,0,2822,2823,1,0, + 0,0,2823,2824,1,0,0,0,2824,2826,5,194,0,0,2825,2827,5,222,0,0,2826, + 2825,1,0,0,0,2826,2827,1,0,0,0,2827,2828,1,0,0,0,2828,2830,5,205, + 0,0,2829,2822,1,0,0,0,2829,2830,1,0,0,0,2830,303,1,0,0,0,2831,2832, + 7,20,0,0,2832,305,1,0,0,0,2833,2834,7,21,0,0,2834,307,1,0,0,0,2835, + 2836,7,22,0,0,2836,309,1,0,0,0,2837,2839,7,12,0,0,2838,2837,1,0, + 0,0,2839,2842,1,0,0,0,2840,2838,1,0,0,0,2840,2841,1,0,0,0,2841,2843, + 1,0,0,0,2842,2840,1,0,0,0,2843,2844,5,212,0,0,2844,311,1,0,0,0,2845, + 2847,7,12,0,0,2846,2845,1,0,0,0,2847,2850,1,0,0,0,2848,2846,1,0, + 0,0,2848,2849,1,0,0,0,2849,2851,1,0,0,0,2850,2848,1,0,0,0,2851,2852, + 5,215,0,0,2852,313,1,0,0,0,2853,2855,7,12,0,0,2854,2853,1,0,0,0, + 2855,2858,1,0,0,0,2856,2854,1,0,0,0,2856,2857,1,0,0,0,2857,2859, + 1,0,0,0,2858,2856,1,0,0,0,2859,2860,5,213,0,0,2860,315,1,0,0,0,492, + 320,325,332,334,337,342,346,351,355,360,364,369,373,378,382,387, + 391,396,400,404,409,412,417,429,435,440,446,450,454,463,467,473, + 477,487,493,498,513,516,524,529,534,540,546,549,553,557,560,564, + 569,573,580,588,592,596,605,608,617,621,626,631,633,639,651,655, + 659,663,668,675,678,683,753,759,763,766,782,786,791,794,799,805, + 809,814,819,823,826,830,836,840,847,853,856,861,871,874,877,881, + 887,891,896,903,907,911,915,918,924,930,932,943,949,951,959,965, + 967,974,981,989,994,1001,1005,1008,1013,1019,1023,1028,1038,1044, + 1054,1058,1068,1077,1083,1085,1090,1096,1100,1103,1107,1118,1123, + 1129,1131,1137,1139,1144,1148,1154,1157,1161,1166,1172,1174,1182, + 1186,1189,1192,1196,1219,1225,1229,1233,1243,1249,1251,1263,1269, + 1271,1277,1283,1285,1295,1299,1304,1312,1316,1320,1328,1332,1344, + 1348,1355,1357,1363,1367,1375,1379,1391,1397,1399,1409,1415,1417, + 1423,1429,1431,1435,1439,1443,1465,1470,1480,1484,1489,1500,1504, + 1509,1523,1527,1536,1540,1543,1547,1551,1554,1558,1562,1565,1569, + 1572,1576,1578,1582,1586,1590,1594,1597,1603,1607,1610,1615,1619, + 1625,1628,1631,1635,1640,1646,1648,1655,1659,1665,1668,1673,1679, + 1681,1688,1692,1698,1701,1706,1712,1714,1722,1726,1729,1732,1736, + 1744,1748,1752,1754,1757,1762,1768,1772,1776,1781,1786,1790,1794, + 1799,1807,1809,1821,1825,1833,1837,1845,1849,1853,1857,1861,1865, + 1873,1877,1889,1894,1898,1906,1909,1914,1920,1922,1928,1930,1935, + 1939,1944,1947,1951,1955,1966,1972,1976,1979,1985,1989,1997,2001, + 2010,2014,2020,2023,2028,2034,2036,2042,2046,2053,2061,2066,2073, + 2077,2080,2083,2086,2090,2095,2104,2114,2118,2125,2127,2133,2137, + 2141,2146,2150,2163,2167,2173,2181,2185,2189,2193,2197,2201,2206, + 2210,2215,2219,2224,2228,2233,2237,2242,2246,2251,2255,2260,2264, + 2269,2273,2278,2282,2287,2291,2296,2300,2303,2305,2311,2316,2322, + 2326,2331,2336,2339,2343,2347,2349,2353,2355,2359,2367,2372,2378, + 2387,2391,2399,2405,2411,2413,2421,2425,2428,2432,2438,2441,2445, + 2449,2453,2458,2462,2466,2469,2473,2477,2481,2485,2490,2493,2498, + 2502,2505,2511,2515,2518,2523,2526,2529,2533,2537,2539,2544,2547, + 2551,2554,2558,2562,2564,2570,2575,2578,2581,2586,2591,2594,2598, + 2602,2607,2611,2614,2618,2623,2630,2634,2638,2642,2647,2650,2653, + 2659,2663,2667,2671,2674,2678,2681,2685,2688,2691,2695,2701,2705, + 2710,2718,2724,2726,2731,2733,2736,2742,2747,2754,2756,2762,2764, + 2766,2775,2780,2784,2788,2792,2795,2811,2819,2822,2826,2829,2840, + 2848,2856 + ] + +class VisualBasic6Parser ( Parser ): + + grammarFileName = "VisualBasic6Parser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "'ACCESS'", "'ADDRESSOF'", "'ALIAS'", + "'AND'", "'ATTRIBUTE'", "'APPACTIVATE'", "'APPEND'", + "'AS'", "'BEEP'", "'BEGIN'", "'BEGINPROPERTY'", "'BINARY'", + "'BOOLEAN'", "'BYVAL'", "'BYREF'", "'BYTE'", "'CALL'", + "'CASE'", "'CHDIR'", "'CHDRIVE'", "'CLASS'", "'CLOSE'", + "'COLLECTION'", "'CONST'", "'DATE'", "'DECLARE'", "'DEFBOOL'", + "'DEFBYTE'", "'DEFDATE'", "'DEFDBL'", "'DEFDEC'", "'DEFCUR'", + "'DEFINT'", "'DEFLNG'", "'DEFOBJ'", "'DEFSNG'", "'DEFSTR'", + "'DEFVAR'", "'DELETESETTING'", "'DIM'", "'DO'", "'DOUBLE'", + "'EACH'", "'ELSE'", "'ELSEIF'", "'END ENUM'", "'END FUNCTION'", + "'END IF'", "'END PROPERTY'", "'END SELECT'", "'END SUB'", + "'END TYPE'", "'END WITH'", "'END'", "'ENDPROPERTY'", + "'ENUM'", "'EQV'", "'ERASE'", "'ERROR'", "'EVENT'", + "'EXIT DO'", "'EXIT FOR'", "'EXIT FUNCTION'", "'EXIT PROPERTY'", + "'EXIT SUB'", "'FALSE'", "'FILECOPY'", "'FRIEND'", + "'FOR'", "'FUNCTION'", "'GET'", "'GLOBAL'", "'GOSUB'", + "'GOTO'", "'IF'", "'IMP'", "'IMPLEMENTS'", "'IN'", + "'INPUT'", "'IS'", "'INTEGER'", "'KILL'", "'LOAD'", + "'LOCK'", "'LONG'", "'LOOP'", "'LEN'", "'LET'", "'LIB'", + "'LIKE'", "'LINE INPUT'", "'LOCK READ'", "'LOCK WRITE'", + "'LOCK READ WRITE'", "'LSET'", "", "", + "", "", "'ME'", "'MID'", "'MKDIR'", + "'MOD'", "'NAME'", "'NEXT'", "'NEW'", "'NOT'", "'NOTHING'", + "'NULL'", "'OBJECT'", "'ON'", "'ON ERROR'", "'ON LOCAL ERROR'", + "'OPEN'", "'OPTIONAL'", "'OPTION BASE'", "'OPTION EXPLICIT'", + "'OPTION COMPARE'", "'OPTION PRIVATE MODULE'", "'OR'", + "'OUTPUT'", "'PARAMARRAY'", "'PRESERVE'", "'PRINT'", + "'PRIVATE'", "'PROPERTY GET'", "'PROPERTY LET'", "'PROPERTY SET'", + "'PUBLIC'", "'PUT'", "'RANDOM'", "'RANDOMIZE'", "'RAISEEVENT'", + "'READ'", "'READ WRITE'", "'REDIM'", "'REM'", "'RESET'", + "'RESUME'", "'RETURN'", "'RMDIR'", "'RSET'", "'SAVEPICTURE'", + "'SAVESETTING'", "'SEEK'", "'SELECT'", "'SENDKEYS'", + "'SET'", "'SETATTR'", "'SHARED'", "'SINGLE'", "'SPC'", + "'STATIC'", "'STEP'", "'STOP'", "'STRING'", "'SUB'", + "'TAB'", "'TEXT'", "'THEN'", "'TIME'", "'TO'", "'TRUE'", + "'TYPE'", "'TYPEOF'", "'UNLOAD'", "'UNLOCK'", "'UNTIL'", + "'VARIANT'", "'VERSION'", "'WEND'", "'WHILE'", "'WIDTH'", + "'WITH'", "'WITHEVENTS'", "'WRITE'", "'XOR'", "'&'", + "':='", "'@'", "':'", "','", "'\\'", "'/'", "'$'", + "'.'", "'='", "'!'", "'>='", "'>'", "'#'", "'<='", + "'{'", "'('", "'<'", "'-'", "'-='", "'*'", "'<>'", + "'%'", "'+'", "'+='", "'^'", "'}'", "')'", "';'", "'['", + "']'" ] + + symbolicNames = [ "", "ACCESS", "ADDRESSOF", "ALIAS", "AND", + "ATTRIBUTE", "APPACTIVATE", "APPEND", "AS", "BEEP", + "BEGIN", "BEGINPROPERTY", "BINARY", "BOOLEAN", "BYVAL", + "BYREF", "BYTE", "CALL", "CASE", "CHDIR", "CHDRIVE", + "CLASS", "CLOSE", "COLLECTION", "CONST", "DATE", "DECLARE", + "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFDEC", + "DEFCUR", "DEFINT", "DEFLNG", "DEFOBJ", "DEFSNG", + "DEFSTR", "DEFVAR", "DELETESETTING", "DIM", "DO", + "DOUBLE", "EACH", "ELSE", "ELSEIF", "END_ENUM", "END_FUNCTION", + "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", + "END_TYPE", "END_WITH", "END", "ENDPROPERTY", "ENUM", + "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", + "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", + "FILECOPY", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", + "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", + "INPUT", "IS", "INTEGER", "KILL", "LOAD", "LOCK", + "LONG", "LOOP", "LEN", "LET", "LIB", "LIKE", "LINE_INPUT", + "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", + "MACRO_IF", "MACRO_ELSEIF", "MACRO_ELSE", "MACRO_END_IF", + "ME", "MID", "MKDIR", "MOD", "NAME", "NEXT", "NEW", + "NOT", "NOTHING", "NULL_", "OBJECT", "ON", "ON_ERROR", + "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", + "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", "PRINT", + "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", + "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", + "READ", "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", + "RETURN", "RMDIR", "RSET", "SAVEPICTURE", "SAVESETTING", + "SEEK", "SELECT", "SENDKEYS", "SET", "SETATTR", "SHARED", + "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", + "SUB", "TAB", "TEXT", "THEN", "TIME", "TO", "TRUE", + "TYPE", "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", "VARIANT", + "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", + "WRITE", "XOR", "AMPERSAND", "ASSIGN", "AT", "COLON", + "COMMA", "IDIV", "DIV", "DOLLAR", "DOT", "EQ", "EXCLAMATIONMARK", + "GEQ", "GT", "HASH", "LEQ", "LBRACE", "LPAREN", "LT", + "MINUS", "MINUS_EQ", "MULT", "NEQ", "PERCENT", "PLUS", + "PLUS_EQ", "POW", "RBRACE", "RPAREN", "SEMICOLON", + "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "STRINGLITERAL", + "DATELITERAL", "COLORLITERAL", "INTEGERLITERAL", "DOUBLELITERAL", + "FILENUMBER", "OCTALLITERAL", "FRX_OFFSET", "GUID", + "IDENTIFIER", "LINE_CONTINUATION", "NEWLINE", "COMMENT", + "WS" ] + + RULE_startRule = 0 + RULE_module = 1 + RULE_moduleReferences = 2 + RULE_moduleReference = 3 + RULE_moduleReferenceValue = 4 + RULE_moduleReferenceComponent = 5 + RULE_moduleHeader = 6 + RULE_moduleConfig = 7 + RULE_moduleConfigElement = 8 + RULE_moduleAttributes = 9 + RULE_moduleOptions = 10 + RULE_moduleOption = 11 + RULE_moduleBody = 12 + RULE_moduleBodyElement = 13 + RULE_controlProperties = 14 + RULE_cp_Properties = 15 + RULE_cp_SingleProperty = 16 + RULE_cp_PropertyName = 17 + RULE_cp_PropertyValue = 18 + RULE_cp_NestedProperty = 19 + RULE_cp_ControlType = 20 + RULE_cp_ControlIdentifier = 21 + RULE_moduleBlock = 22 + RULE_attributeStmt = 23 + RULE_block = 24 + RULE_blockStmt = 25 + RULE_appActivateStmt = 26 + RULE_beepStmt = 27 + RULE_chDirStmt = 28 + RULE_chDriveStmt = 29 + RULE_closeStmt = 30 + RULE_constStmt = 31 + RULE_constSubStmt = 32 + RULE_dateStmt = 33 + RULE_declareStmt = 34 + RULE_deftypeStmt = 35 + RULE_deleteSettingStmt = 36 + RULE_doLoopStmt = 37 + RULE_endStmt = 38 + RULE_enumerationStmt = 39 + RULE_enumerationStmt_Constant = 40 + RULE_eraseStmt = 41 + RULE_errorStmt = 42 + RULE_eventStmt = 43 + RULE_exitStmt = 44 + RULE_filecopyStmt = 45 + RULE_forEachStmt = 46 + RULE_forNextStmt = 47 + RULE_functionStmt = 48 + RULE_getStmt = 49 + RULE_goSubStmt = 50 + RULE_goToStmt = 51 + RULE_ifThenElseStmt = 52 + RULE_ifBlockStmt = 53 + RULE_ifConditionStmt = 54 + RULE_ifElseIfBlockStmt = 55 + RULE_ifElseBlockStmt = 56 + RULE_implementsStmt = 57 + RULE_inputStmt = 58 + RULE_killStmt = 59 + RULE_letStmt = 60 + RULE_lineInputStmt = 61 + RULE_loadStmt = 62 + RULE_lockStmt = 63 + RULE_lsetStmt = 64 + RULE_macroIfThenElseStmt = 65 + RULE_macroIfBlockStmt = 66 + RULE_macroElseIfBlockStmt = 67 + RULE_macroElseBlockStmt = 68 + RULE_midStmt = 69 + RULE_mkdirStmt = 70 + RULE_nameStmt = 71 + RULE_onErrorStmt = 72 + RULE_onGoToStmt = 73 + RULE_onGoSubStmt = 74 + RULE_openStmt = 75 + RULE_outputList = 76 + RULE_outputList_Expression = 77 + RULE_printStmt = 78 + RULE_propertyGetStmt = 79 + RULE_propertySetStmt = 80 + RULE_propertyLetStmt = 81 + RULE_putStmt = 82 + RULE_raiseEventStmt = 83 + RULE_randomizeStmt = 84 + RULE_redimStmt = 85 + RULE_redimSubStmt = 86 + RULE_resetStmt = 87 + RULE_resumeStmt = 88 + RULE_returnStmt = 89 + RULE_rmdirStmt = 90 + RULE_rsetStmt = 91 + RULE_savepictureStmt = 92 + RULE_saveSettingStmt = 93 + RULE_seekStmt = 94 + RULE_selectCaseStmt = 95 + RULE_sC_Case = 96 + RULE_sC_Cond = 97 + RULE_sC_CondExpr = 98 + RULE_sendkeysStmt = 99 + RULE_setattrStmt = 100 + RULE_setStmt = 101 + RULE_stopStmt = 102 + RULE_subStmt = 103 + RULE_timeStmt = 104 + RULE_typeStmt = 105 + RULE_typeStmt_Element = 106 + RULE_typeOfStmt = 107 + RULE_unloadStmt = 108 + RULE_unlockStmt = 109 + RULE_valueStmt = 110 + RULE_variableStmt = 111 + RULE_variableListStmt = 112 + RULE_variableSubStmt = 113 + RULE_whileWendStmt = 114 + RULE_widthStmt = 115 + RULE_withStmt = 116 + RULE_writeStmt = 117 + RULE_explicitCallStmt = 118 + RULE_eCS_ProcedureCall = 119 + RULE_eCS_MemberProcedureCall = 120 + RULE_implicitCallStmt_InBlock = 121 + RULE_iCS_B_ProcedureCall = 122 + RULE_iCS_B_MemberProcedureCall = 123 + RULE_implicitCallStmt_InStmt = 124 + RULE_iCS_S_VariableOrProcedureCall = 125 + RULE_iCS_S_ProcedureOrArrayCall = 126 + RULE_iCS_S_NestedProcedureCall = 127 + RULE_iCS_S_MembersCall = 128 + RULE_iCS_S_MemberCall = 129 + RULE_iCS_S_DictionaryCall = 130 + RULE_argsCall = 131 + RULE_argCall = 132 + RULE_dictionaryCallStmt = 133 + RULE_argList = 134 + RULE_arg = 135 + RULE_argDefaultValue = 136 + RULE_subscripts = 137 + RULE_subscript_ = 138 + RULE_ambiguousIdentifier = 139 + RULE_asTypeClause = 140 + RULE_baseType = 141 + RULE_certainIdentifier = 142 + RULE_comparisonOperator = 143 + RULE_complexType = 144 + RULE_fieldLength = 145 + RULE_letterrange = 146 + RULE_lineLabel = 147 + RULE_literal = 148 + RULE_publicPrivateVisibility = 149 + RULE_publicPrivateGlobalVisibility = 150 + RULE_type_ = 151 + RULE_typeHint = 152 + RULE_visibility = 153 + RULE_ambiguousKeyword = 154 + RULE_integerLiteral = 155 + RULE_octalLiteral = 156 + RULE_doubleLiteral = 157 + + ruleNames = [ "startRule", "module", "moduleReferences", "moduleReference", + "moduleReferenceValue", "moduleReferenceComponent", "moduleHeader", + "moduleConfig", "moduleConfigElement", "moduleAttributes", + "moduleOptions", "moduleOption", "moduleBody", "moduleBodyElement", + "controlProperties", "cp_Properties", "cp_SingleProperty", + "cp_PropertyName", "cp_PropertyValue", "cp_NestedProperty", + "cp_ControlType", "cp_ControlIdentifier", "moduleBlock", + "attributeStmt", "block", "blockStmt", "appActivateStmt", + "beepStmt", "chDirStmt", "chDriveStmt", "closeStmt", + "constStmt", "constSubStmt", "dateStmt", "declareStmt", + "deftypeStmt", "deleteSettingStmt", "doLoopStmt", "endStmt", + "enumerationStmt", "enumerationStmt_Constant", "eraseStmt", + "errorStmt", "eventStmt", "exitStmt", "filecopyStmt", + "forEachStmt", "forNextStmt", "functionStmt", "getStmt", + "goSubStmt", "goToStmt", "ifThenElseStmt", "ifBlockStmt", + "ifConditionStmt", "ifElseIfBlockStmt", "ifElseBlockStmt", + "implementsStmt", "inputStmt", "killStmt", "letStmt", + "lineInputStmt", "loadStmt", "lockStmt", "lsetStmt", + "macroIfThenElseStmt", "macroIfBlockStmt", "macroElseIfBlockStmt", + "macroElseBlockStmt", "midStmt", "mkdirStmt", "nameStmt", + "onErrorStmt", "onGoToStmt", "onGoSubStmt", "openStmt", + "outputList", "outputList_Expression", "printStmt", "propertyGetStmt", + "propertySetStmt", "propertyLetStmt", "putStmt", "raiseEventStmt", + "randomizeStmt", "redimStmt", "redimSubStmt", "resetStmt", + "resumeStmt", "returnStmt", "rmdirStmt", "rsetStmt", + "savepictureStmt", "saveSettingStmt", "seekStmt", "selectCaseStmt", + "sC_Case", "sC_Cond", "sC_CondExpr", "sendkeysStmt", + "setattrStmt", "setStmt", "stopStmt", "subStmt", "timeStmt", + "typeStmt", "typeStmt_Element", "typeOfStmt", "unloadStmt", + "unlockStmt", "valueStmt", "variableStmt", "variableListStmt", + "variableSubStmt", "whileWendStmt", "widthStmt", "withStmt", + "writeStmt", "explicitCallStmt", "eCS_ProcedureCall", + "eCS_MemberProcedureCall", "implicitCallStmt_InBlock", + "iCS_B_ProcedureCall", "iCS_B_MemberProcedureCall", "implicitCallStmt_InStmt", + "iCS_S_VariableOrProcedureCall", "iCS_S_ProcedureOrArrayCall", + "iCS_S_NestedProcedureCall", "iCS_S_MembersCall", "iCS_S_MemberCall", + "iCS_S_DictionaryCall", "argsCall", "argCall", "dictionaryCallStmt", + "argList", "arg", "argDefaultValue", "subscripts", "subscript_", + "ambiguousIdentifier", "asTypeClause", "baseType", "certainIdentifier", + "comparisonOperator", "complexType", "fieldLength", "letterrange", + "lineLabel", "literal", "publicPrivateVisibility", "publicPrivateGlobalVisibility", + "type_", "typeHint", "visibility", "ambiguousKeyword", + "integerLiteral", "octalLiteral", "doubleLiteral" ] + + EOF = Token.EOF + ACCESS=1 + ADDRESSOF=2 + ALIAS=3 + AND=4 + ATTRIBUTE=5 + APPACTIVATE=6 + APPEND=7 + AS=8 + BEEP=9 + BEGIN=10 + BEGINPROPERTY=11 + BINARY=12 + BOOLEAN=13 + BYVAL=14 + BYREF=15 + BYTE=16 + CALL=17 + CASE=18 + CHDIR=19 + CHDRIVE=20 + CLASS=21 + CLOSE=22 + COLLECTION=23 + CONST=24 + DATE=25 + DECLARE=26 + DEFBOOL=27 + DEFBYTE=28 + DEFDATE=29 + DEFDBL=30 + DEFDEC=31 + DEFCUR=32 + DEFINT=33 + DEFLNG=34 + DEFOBJ=35 + DEFSNG=36 + DEFSTR=37 + DEFVAR=38 + DELETESETTING=39 + DIM=40 + DO=41 + DOUBLE=42 + EACH=43 + ELSE=44 + ELSEIF=45 + END_ENUM=46 + END_FUNCTION=47 + END_IF=48 + END_PROPERTY=49 + END_SELECT=50 + END_SUB=51 + END_TYPE=52 + END_WITH=53 + END=54 + ENDPROPERTY=55 + ENUM=56 + EQV=57 + ERASE=58 + ERROR=59 + EVENT=60 + EXIT_DO=61 + EXIT_FOR=62 + EXIT_FUNCTION=63 + EXIT_PROPERTY=64 + EXIT_SUB=65 + FALSE=66 + FILECOPY=67 + FRIEND=68 + FOR=69 + FUNCTION=70 + GET=71 + GLOBAL=72 + GOSUB=73 + GOTO=74 + IF=75 + IMP=76 + IMPLEMENTS=77 + IN=78 + INPUT=79 + IS=80 + INTEGER=81 + KILL=82 + LOAD=83 + LOCK=84 + LONG=85 + LOOP=86 + LEN=87 + LET=88 + LIB=89 + LIKE=90 + LINE_INPUT=91 + LOCK_READ=92 + LOCK_WRITE=93 + LOCK_READ_WRITE=94 + LSET=95 + MACRO_IF=96 + MACRO_ELSEIF=97 + MACRO_ELSE=98 + MACRO_END_IF=99 + ME=100 + MID=101 + MKDIR=102 + MOD=103 + NAME=104 + NEXT=105 + NEW=106 + NOT=107 + NOTHING=108 + NULL_=109 + OBJECT=110 + ON=111 + ON_ERROR=112 + ON_LOCAL_ERROR=113 + OPEN=114 + OPTIONAL=115 + OPTION_BASE=116 + OPTION_EXPLICIT=117 + OPTION_COMPARE=118 + OPTION_PRIVATE_MODULE=119 + OR=120 + OUTPUT=121 + PARAMARRAY=122 + PRESERVE=123 + PRINT=124 + PRIVATE=125 + PROPERTY_GET=126 + PROPERTY_LET=127 + PROPERTY_SET=128 + PUBLIC=129 + PUT=130 + RANDOM=131 + RANDOMIZE=132 + RAISEEVENT=133 + READ=134 + READ_WRITE=135 + REDIM=136 + REM=137 + RESET=138 + RESUME=139 + RETURN=140 + RMDIR=141 + RSET=142 + SAVEPICTURE=143 + SAVESETTING=144 + SEEK=145 + SELECT=146 + SENDKEYS=147 + SET=148 + SETATTR=149 + SHARED=150 + SINGLE=151 + SPC=152 + STATIC=153 + STEP=154 + STOP=155 + STRING=156 + SUB=157 + TAB=158 + TEXT=159 + THEN=160 + TIME=161 + TO=162 + TRUE=163 + TYPE=164 + TYPEOF=165 + UNLOAD=166 + UNLOCK=167 + UNTIL=168 + VARIANT=169 + VERSION=170 + WEND=171 + WHILE=172 + WIDTH=173 + WITH=174 + WITHEVENTS=175 + WRITE=176 + XOR=177 + AMPERSAND=178 + ASSIGN=179 + AT=180 + COLON=181 + COMMA=182 + IDIV=183 + DIV=184 + DOLLAR=185 + DOT=186 + EQ=187 + EXCLAMATIONMARK=188 + GEQ=189 + GT=190 + HASH=191 + LEQ=192 + LBRACE=193 + LPAREN=194 + LT=195 + MINUS=196 + MINUS_EQ=197 + MULT=198 + NEQ=199 + PERCENT=200 + PLUS=201 + PLUS_EQ=202 + POW=203 + RBRACE=204 + RPAREN=205 + SEMICOLON=206 + L_SQUARE_BRACKET=207 + R_SQUARE_BRACKET=208 + STRINGLITERAL=209 + DATELITERAL=210 + COLORLITERAL=211 + INTEGERLITERAL=212 + DOUBLELITERAL=213 + FILENUMBER=214 + OCTALLITERAL=215 + FRX_OFFSET=216 + GUID=217 + IDENTIFIER=218 + LINE_CONTINUATION=219 + NEWLINE=220 + COMMENT=221 + WS=222 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class StartRuleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def module(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleContext,0) + + + def EOF(self): + return self.getToken(VisualBasic6Parser.EOF, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_startRule + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStartRule" ): + listener.enterStartRule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStartRule" ): + listener.exitStartRule(self) + + + + + def startRule(self): + + localctx = VisualBasic6Parser.StartRuleContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_startRule) + try: + self.enterOuterAlt(localctx, 1) + self.state = 316 + self.module() + self.state = 317 + self.match(VisualBasic6Parser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def moduleHeader(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleHeaderContext,0) + + + def moduleReferences(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleReferencesContext,0) + + + def controlProperties(self): + return self.getTypedRuleContext(VisualBasic6Parser.ControlPropertiesContext,0) + + + def moduleConfig(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleConfigContext,0) + + + def moduleAttributes(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleAttributesContext,0) + + + def moduleOptions(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleOptionsContext,0) + + + def moduleBody(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBodyContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_module + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModule" ): + listener.enterModule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModule" ): + listener.exitModule(self) + + + + + def module(self): + + localctx = VisualBasic6Parser.ModuleContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_module) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 320 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,0,self._ctx) + if la_ == 1: + self.state = 319 + self.match(VisualBasic6Parser.WS) + + + self.state = 325 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 322 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 327 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1,self._ctx) + + self.state = 334 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,3,self._ctx) + if la_ == 1: + self.state = 328 + self.moduleHeader() + self.state = 330 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 329 + self.match(VisualBasic6Parser.NEWLINE) + + else: + raise NoViableAltException(self) + self.state = 332 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,2,self._ctx) + + + + self.state = 337 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,4,self._ctx) + if la_ == 1: + self.state = 336 + self.moduleReferences() + + + self.state = 342 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,5,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 339 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 344 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,5,self._ctx) + + self.state = 346 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + if la_ == 1: + self.state = 345 + self.controlProperties() + + + self.state = 351 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,7,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 348 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 353 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,7,self._ctx) + + self.state = 355 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,8,self._ctx) + if la_ == 1: + self.state = 354 + self.moduleConfig() + + + self.state = 360 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,9,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 357 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 362 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,9,self._ctx) + + self.state = 364 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,10,self._ctx) + if la_ == 1: + self.state = 363 + self.moduleAttributes() + + + self.state = 369 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,11,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 366 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 371 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,11,self._ctx) + + self.state = 373 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,12,self._ctx) + if la_ == 1: + self.state = 372 + self.moduleOptions() + + + self.state = 378 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,13,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 375 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 380 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,13,self._ctx) + + self.state = 382 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,14,self._ctx) + if la_ == 1: + self.state = 381 + self.moduleBody() + + + self.state = 387 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==220: + self.state = 384 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 389 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 391 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 390 + self.match(VisualBasic6Parser.WS) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleReferencesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def moduleReference(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ModuleReferenceContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ModuleReferenceContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleReferences + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleReferences" ): + listener.enterModuleReferences(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleReferences" ): + listener.exitModuleReferences(self) + + + + + def moduleReferences(self): + + localctx = VisualBasic6Parser.ModuleReferencesContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_moduleReferences) + try: + self.enterOuterAlt(localctx, 1) + self.state = 394 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 393 + self.moduleReference() + + else: + raise NoViableAltException(self) + self.state = 396 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,17,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleReferenceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OBJECT(self): + return self.getToken(VisualBasic6Parser.OBJECT, 0) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def moduleReferenceValue(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleReferenceValueContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def SEMICOLON(self): + return self.getToken(VisualBasic6Parser.SEMICOLON, 0) + + def moduleReferenceComponent(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleReferenceComponentContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleReference + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleReference" ): + listener.enterModuleReference(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleReference" ): + listener.exitModuleReference(self) + + + + + def moduleReference(self): + + localctx = VisualBasic6Parser.ModuleReferenceContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_moduleReference) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 398 + self.match(VisualBasic6Parser.OBJECT) + self.state = 400 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 399 + self.match(VisualBasic6Parser.WS) + + + self.state = 402 + self.match(VisualBasic6Parser.EQ) + self.state = 404 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 403 + self.match(VisualBasic6Parser.WS) + + + self.state = 406 + self.moduleReferenceValue() + self.state = 412 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==206: + self.state = 407 + self.match(VisualBasic6Parser.SEMICOLON) + self.state = 409 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 408 + self.match(VisualBasic6Parser.WS) + + + self.state = 411 + self.moduleReferenceComponent() + + + self.state = 417 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,22,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 414 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 419 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,22,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleReferenceValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRINGLITERAL(self): + return self.getToken(VisualBasic6Parser.STRINGLITERAL, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleReferenceValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleReferenceValue" ): + listener.enterModuleReferenceValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleReferenceValue" ): + listener.exitModuleReferenceValue(self) + + + + + def moduleReferenceValue(self): + + localctx = VisualBasic6Parser.ModuleReferenceValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_moduleReferenceValue) + try: + self.enterOuterAlt(localctx, 1) + self.state = 420 + self.match(VisualBasic6Parser.STRINGLITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleReferenceComponentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRINGLITERAL(self): + return self.getToken(VisualBasic6Parser.STRINGLITERAL, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleReferenceComponent + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleReferenceComponent" ): + listener.enterModuleReferenceComponent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleReferenceComponent" ): + listener.exitModuleReferenceComponent(self) + + + + + def moduleReferenceComponent(self): + + localctx = VisualBasic6Parser.ModuleReferenceComponentContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_moduleReferenceComponent) + try: + self.enterOuterAlt(localctx, 1) + self.state = 422 + self.match(VisualBasic6Parser.STRINGLITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleHeaderContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def VERSION(self): + return self.getToken(VisualBasic6Parser.VERSION, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def doubleLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.DoubleLiteralContext,0) + + + def CLASS(self): + return self.getToken(VisualBasic6Parser.CLASS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleHeader + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleHeader" ): + listener.enterModuleHeader(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleHeader" ): + listener.exitModuleHeader(self) + + + + + def moduleHeader(self): + + localctx = VisualBasic6Parser.ModuleHeaderContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_moduleHeader) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 424 + self.match(VisualBasic6Parser.VERSION) + self.state = 425 + self.match(VisualBasic6Parser.WS) + self.state = 426 + self.doubleLiteral() + self.state = 429 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 427 + self.match(VisualBasic6Parser.WS) + self.state = 428 + self.match(VisualBasic6Parser.CLASS) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleConfigContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEGIN(self): + return self.getToken(VisualBasic6Parser.BEGIN, 0) + + def END(self): + return self.getToken(VisualBasic6Parser.END, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def moduleConfigElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ModuleConfigElementContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ModuleConfigElementContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleConfig + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleConfig" ): + listener.enterModuleConfig(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleConfig" ): + listener.exitModuleConfig(self) + + + + + def moduleConfig(self): + + localctx = VisualBasic6Parser.ModuleConfigContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_moduleConfig) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 431 + self.match(VisualBasic6Parser.BEGIN) + self.state = 433 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 432 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 435 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 438 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 437 + self.moduleConfigElement() + + else: + raise NoViableAltException(self) + self.state = 440 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,25,self._ctx) + + self.state = 442 + self.match(VisualBasic6Parser.END) + self.state = 444 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 443 + self.match(VisualBasic6Parser.NEWLINE) + + else: + raise NoViableAltException(self) + self.state = 446 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,26,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleConfigElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def literal(self): + return self.getTypedRuleContext(VisualBasic6Parser.LiteralContext,0) + + + def NEWLINE(self): + return self.getToken(VisualBasic6Parser.NEWLINE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleConfigElement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleConfigElement" ): + listener.enterModuleConfigElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleConfigElement" ): + listener.exitModuleConfigElement(self) + + + + + def moduleConfigElement(self): + + localctx = VisualBasic6Parser.ModuleConfigElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_moduleConfigElement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 448 + self.ambiguousIdentifier() + self.state = 450 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 449 + self.match(VisualBasic6Parser.WS) + + + self.state = 452 + self.match(VisualBasic6Parser.EQ) + self.state = 454 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 453 + self.match(VisualBasic6Parser.WS) + + + self.state = 456 + self.literal() + self.state = 457 + self.match(VisualBasic6Parser.NEWLINE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleAttributesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def attributeStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AttributeStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AttributeStmtContext,i) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleAttributes + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleAttributes" ): + listener.enterModuleAttributes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleAttributes" ): + listener.exitModuleAttributes(self) + + + + + def moduleAttributes(self): + + localctx = VisualBasic6Parser.ModuleAttributesContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_moduleAttributes) + try: + self.enterOuterAlt(localctx, 1) + self.state = 465 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 459 + self.attributeStmt() + self.state = 461 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 460 + self.match(VisualBasic6Parser.NEWLINE) + + else: + raise NoViableAltException(self) + self.state = 463 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,29,self._ctx) + + + else: + raise NoViableAltException(self) + self.state = 467 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,30,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleOptionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def moduleOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ModuleOptionContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ModuleOptionContext,i) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleOptions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleOptions" ): + listener.enterModuleOptions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleOptions" ): + listener.exitModuleOptions(self) + + + + + def moduleOptions(self): + + localctx = VisualBasic6Parser.ModuleOptionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_moduleOptions) + try: + self.enterOuterAlt(localctx, 1) + self.state = 475 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 469 + self.moduleOption() + self.state = 471 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 470 + self.match(VisualBasic6Parser.NEWLINE) + + else: + raise NoViableAltException(self) + self.state = 473 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,31,self._ctx) + + + else: + raise NoViableAltException(self) + self.state = 477 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class OptionExplicitStmtContext(ModuleOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ModuleOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPTION_EXPLICIT(self): + return self.getToken(VisualBasic6Parser.OPTION_EXPLICIT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOptionExplicitStmt" ): + listener.enterOptionExplicitStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOptionExplicitStmt" ): + listener.exitOptionExplicitStmt(self) + + + class OptionBaseStmtContext(ModuleOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ModuleOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPTION_BASE(self): + return self.getToken(VisualBasic6Parser.OPTION_BASE, 0) + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + def integerLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.IntegerLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOptionBaseStmt" ): + listener.enterOptionBaseStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOptionBaseStmt" ): + listener.exitOptionBaseStmt(self) + + + class OptionPrivateModuleStmtContext(ModuleOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ModuleOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPTION_PRIVATE_MODULE(self): + return self.getToken(VisualBasic6Parser.OPTION_PRIVATE_MODULE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOptionPrivateModuleStmt" ): + listener.enterOptionPrivateModuleStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOptionPrivateModuleStmt" ): + listener.exitOptionPrivateModuleStmt(self) + + + class OptionCompareStmtContext(ModuleOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ModuleOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPTION_COMPARE(self): + return self.getToken(VisualBasic6Parser.OPTION_COMPARE, 0) + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + def BINARY(self): + return self.getToken(VisualBasic6Parser.BINARY, 0) + def TEXT(self): + return self.getToken(VisualBasic6Parser.TEXT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOptionCompareStmt" ): + listener.enterOptionCompareStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOptionCompareStmt" ): + listener.exitOptionCompareStmt(self) + + + + def moduleOption(self): + + localctx = VisualBasic6Parser.ModuleOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_moduleOption) + self._la = 0 # Token type + try: + self.state = 487 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [116]: + localctx = VisualBasic6Parser.OptionBaseStmtContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 479 + self.match(VisualBasic6Parser.OPTION_BASE) + self.state = 480 + self.match(VisualBasic6Parser.WS) + self.state = 481 + self.integerLiteral() + pass + elif token in [118]: + localctx = VisualBasic6Parser.OptionCompareStmtContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 482 + self.match(VisualBasic6Parser.OPTION_COMPARE) + self.state = 483 + self.match(VisualBasic6Parser.WS) + self.state = 484 + _la = self._input.LA(1) + if not(_la==12 or _la==159): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [117]: + localctx = VisualBasic6Parser.OptionExplicitStmtContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 485 + self.match(VisualBasic6Parser.OPTION_EXPLICIT) + pass + elif token in [119]: + localctx = VisualBasic6Parser.OptionPrivateModuleStmtContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 486 + self.match(VisualBasic6Parser.OPTION_PRIVATE_MODULE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def moduleBodyElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ModuleBodyElementContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBodyElementContext,i) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleBody + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleBody" ): + listener.enterModuleBody(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleBody" ): + listener.exitModuleBody(self) + + + + + def moduleBody(self): + + localctx = VisualBasic6Parser.ModuleBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_moduleBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 489 + self.moduleBodyElement() + self.state = 498 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,35,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 491 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 490 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 493 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 495 + self.moduleBodyElement() + self.state = 500 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,35,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleBodyElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def moduleBlock(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBlockContext,0) + + + def moduleOption(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleOptionContext,0) + + + def declareStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DeclareStmtContext,0) + + + def enumerationStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.EnumerationStmtContext,0) + + + def eventStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.EventStmtContext,0) + + + def functionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.FunctionStmtContext,0) + + + def macroIfThenElseStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MacroIfThenElseStmtContext,0) + + + def propertyGetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.PropertyGetStmtContext,0) + + + def propertySetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.PropertySetStmtContext,0) + + + def propertyLetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.PropertyLetStmtContext,0) + + + def subStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SubStmtContext,0) + + + def typeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleBodyElement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleBodyElement" ): + listener.enterModuleBodyElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleBodyElement" ): + listener.exitModuleBodyElement(self) + + + + + def moduleBodyElement(self): + + localctx = VisualBasic6Parser.ModuleBodyElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_moduleBodyElement) + try: + self.state = 513 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,36,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 501 + self.moduleBlock() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 502 + self.moduleOption() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 503 + self.declareStmt() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 504 + self.enumerationStmt() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 505 + self.eventStmt() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 506 + self.functionStmt() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 507 + self.macroIfThenElseStmt() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 508 + self.propertyGetStmt() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 509 + self.propertySetStmt() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 510 + self.propertyLetStmt() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 511 + self.subStmt() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 512 + self.typeStmt() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ControlPropertiesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEGIN(self): + return self.getToken(VisualBasic6Parser.BEGIN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def cp_ControlType(self): + return self.getTypedRuleContext(VisualBasic6Parser.Cp_ControlTypeContext,0) + + + def cp_ControlIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.Cp_ControlIdentifierContext,0) + + + def END(self): + return self.getToken(VisualBasic6Parser.END, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def cp_Properties(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.Cp_PropertiesContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.Cp_PropertiesContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_controlProperties + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterControlProperties" ): + listener.enterControlProperties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitControlProperties" ): + listener.exitControlProperties(self) + + + + + def controlProperties(self): + + localctx = VisualBasic6Parser.ControlPropertiesContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_controlProperties) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 516 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 515 + self.match(VisualBasic6Parser.WS) + + + self.state = 518 + self.match(VisualBasic6Parser.BEGIN) + self.state = 519 + self.match(VisualBasic6Parser.WS) + self.state = 520 + self.cp_ControlType() + self.state = 521 + self.match(VisualBasic6Parser.WS) + self.state = 522 + self.cp_ControlIdentifier() + self.state = 524 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 523 + self.match(VisualBasic6Parser.WS) + + + self.state = 527 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 526 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 529 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 532 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 531 + self.cp_Properties() + + else: + raise NoViableAltException(self) + self.state = 534 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,40,self._ctx) + + self.state = 536 + self.match(VisualBasic6Parser.END) + self.state = 540 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 537 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 542 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_PropertiesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def cp_SingleProperty(self): + return self.getTypedRuleContext(VisualBasic6Parser.Cp_SinglePropertyContext,0) + + + def cp_NestedProperty(self): + return self.getTypedRuleContext(VisualBasic6Parser.Cp_NestedPropertyContext,0) + + + def controlProperties(self): + return self.getTypedRuleContext(VisualBasic6Parser.ControlPropertiesContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_Properties + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_Properties" ): + listener.enterCp_Properties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_Properties" ): + listener.exitCp_Properties(self) + + + + + def cp_Properties(self): + + localctx = VisualBasic6Parser.Cp_PropertiesContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_cp_Properties) + try: + self.state = 546 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,42,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 543 + self.cp_SingleProperty() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 544 + self.cp_NestedProperty() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 545 + self.controlProperties() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_SinglePropertyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def cp_PropertyValue(self): + return self.getTypedRuleContext(VisualBasic6Parser.Cp_PropertyValueContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def DOLLAR(self): + return self.getToken(VisualBasic6Parser.DOLLAR, 0) + + def FRX_OFFSET(self): + return self.getToken(VisualBasic6Parser.FRX_OFFSET, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_SingleProperty + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_SingleProperty" ): + listener.enterCp_SingleProperty(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_SingleProperty" ): + listener.exitCp_SingleProperty(self) + + + + + def cp_SingleProperty(self): + + localctx = VisualBasic6Parser.Cp_SinglePropertyContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_cp_SingleProperty) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 549 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,43,self._ctx) + if la_ == 1: + self.state = 548 + self.match(VisualBasic6Parser.WS) + + + self.state = 551 + self.implicitCallStmt_InStmt() + self.state = 553 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 552 + self.match(VisualBasic6Parser.WS) + + + self.state = 555 + self.match(VisualBasic6Parser.EQ) + self.state = 557 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 556 + self.match(VisualBasic6Parser.WS) + + + self.state = 560 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,46,self._ctx) + if la_ == 1: + self.state = 559 + self.match(VisualBasic6Parser.DOLLAR) + + + self.state = 562 + self.cp_PropertyValue() + self.state = 564 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==216: + self.state = 563 + self.match(VisualBasic6Parser.FRX_OFFSET) + + + self.state = 567 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 566 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 569 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_PropertyNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AmbiguousIdentifierContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,i) + + + def OBJECT(self): + return self.getToken(VisualBasic6Parser.OBJECT, 0) + + def DOT(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.DOT) + else: + return self.getToken(VisualBasic6Parser.DOT, i) + + def LPAREN(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.LPAREN) + else: + return self.getToken(VisualBasic6Parser.LPAREN, i) + + def literal(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.LiteralContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.LiteralContext,i) + + + def RPAREN(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.RPAREN) + else: + return self.getToken(VisualBasic6Parser.RPAREN, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_PropertyName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_PropertyName" ): + listener.enterCp_PropertyName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_PropertyName" ): + listener.exitCp_PropertyName(self) + + + + + def cp_PropertyName(self): + + localctx = VisualBasic6Parser.Cp_PropertyNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_cp_PropertyName) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 573 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,49,self._ctx) + if la_ == 1: + self.state = 571 + self.match(VisualBasic6Parser.OBJECT) + self.state = 572 + self.match(VisualBasic6Parser.DOT) + + + self.state = 575 + self.ambiguousIdentifier() + self.state = 580 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194: + self.state = 576 + self.match(VisualBasic6Parser.LPAREN) + self.state = 577 + self.literal() + self.state = 578 + self.match(VisualBasic6Parser.RPAREN) + + + self.state = 592 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==186: + self.state = 582 + self.match(VisualBasic6Parser.DOT) + self.state = 583 + self.ambiguousIdentifier() + self.state = 588 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194: + self.state = 584 + self.match(VisualBasic6Parser.LPAREN) + self.state = 585 + self.literal() + self.state = 586 + self.match(VisualBasic6Parser.RPAREN) + + + self.state = 594 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_PropertyValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def literal(self): + return self.getTypedRuleContext(VisualBasic6Parser.LiteralContext,0) + + + def POW(self): + return self.getToken(VisualBasic6Parser.POW, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def DOLLAR(self): + return self.getToken(VisualBasic6Parser.DOLLAR, 0) + + def LBRACE(self): + return self.getToken(VisualBasic6Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(VisualBasic6Parser.RBRACE, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_PropertyValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_PropertyValue" ): + listener.enterCp_PropertyValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_PropertyValue" ): + listener.exitCp_PropertyValue(self) + + + + + def cp_PropertyValue(self): + + localctx = VisualBasic6Parser.Cp_PropertyValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_cp_PropertyValue) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 596 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==185: + self.state = 595 + self.match(VisualBasic6Parser.DOLLAR) + + + self.state = 605 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [66, 108, 109, 163, 196, 201, 209, 210, 211, 212, 213, 214, 215]: + self.state = 598 + self.literal() + pass + elif token in [193]: + self.state = 599 + self.match(VisualBasic6Parser.LBRACE) + self.state = 600 + self.ambiguousIdentifier() + self.state = 601 + self.match(VisualBasic6Parser.RBRACE) + pass + elif token in [203]: + self.state = 603 + self.match(VisualBasic6Parser.POW) + self.state = 604 + self.ambiguousIdentifier() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_NestedPropertyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEGINPROPERTY(self): + return self.getToken(VisualBasic6Parser.BEGINPROPERTY, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def ENDPROPERTY(self): + return self.getToken(VisualBasic6Parser.ENDPROPERTY, 0) + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def integerLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.IntegerLiteralContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def GUID(self): + return self.getToken(VisualBasic6Parser.GUID, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def cp_Properties(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.Cp_PropertiesContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.Cp_PropertiesContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_NestedProperty + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_NestedProperty" ): + listener.enterCp_NestedProperty(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_NestedProperty" ): + listener.exitCp_NestedProperty(self) + + + + + def cp_NestedProperty(self): + + localctx = VisualBasic6Parser.Cp_NestedPropertyContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_cp_NestedProperty) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 608 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 607 + self.match(VisualBasic6Parser.WS) + + + self.state = 610 + self.match(VisualBasic6Parser.BEGINPROPERTY) + self.state = 611 + self.match(VisualBasic6Parser.WS) + self.state = 612 + self.ambiguousIdentifier() + self.state = 617 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194: + self.state = 613 + self.match(VisualBasic6Parser.LPAREN) + self.state = 614 + self.integerLiteral() + self.state = 615 + self.match(VisualBasic6Parser.RPAREN) + + + self.state = 621 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 619 + self.match(VisualBasic6Parser.WS) + self.state = 620 + self.match(VisualBasic6Parser.GUID) + + + self.state = 624 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 623 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 626 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 633 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429425662) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 360569445166350303) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 629 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 628 + self.cp_Properties() + self.state = 631 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429425662) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 360569445166350303) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0)): + break + + + + self.state = 635 + self.match(VisualBasic6Parser.ENDPROPERTY) + self.state = 637 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 636 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 639 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_ControlTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def complexType(self): + return self.getTypedRuleContext(VisualBasic6Parser.ComplexTypeContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_ControlType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_ControlType" ): + listener.enterCp_ControlType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_ControlType" ): + listener.exitCp_ControlType(self) + + + + + def cp_ControlType(self): + + localctx = VisualBasic6Parser.Cp_ControlTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_cp_ControlType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 641 + self.complexType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Cp_ControlIdentifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_cp_ControlIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCp_ControlIdentifier" ): + listener.enterCp_ControlIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCp_ControlIdentifier" ): + listener.exitCp_ControlIdentifier(self) + + + + + def cp_ControlIdentifier(self): + + localctx = VisualBasic6Parser.Cp_ControlIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_cp_ControlIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 643 + self.ambiguousIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModuleBlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_moduleBlock + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleBlock" ): + listener.enterModuleBlock(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleBlock" ): + listener.exitModuleBlock(self) + + + + + def moduleBlock(self): + + localctx = VisualBasic6Parser.ModuleBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_moduleBlock) + try: + self.enterOuterAlt(localctx, 1) + self.state = 645 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AttributeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ATTRIBUTE(self): + return self.getToken(VisualBasic6Parser.ATTRIBUTE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def literal(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.LiteralContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.LiteralContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_attributeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAttributeStmt" ): + listener.enterAttributeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAttributeStmt" ): + listener.exitAttributeStmt(self) + + + + + def attributeStmt(self): + + localctx = VisualBasic6Parser.AttributeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_attributeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 647 + self.match(VisualBasic6Parser.ATTRIBUTE) + self.state = 648 + self.match(VisualBasic6Parser.WS) + self.state = 649 + self.implicitCallStmt_InStmt() + self.state = 651 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 650 + self.match(VisualBasic6Parser.WS) + + + self.state = 653 + self.match(VisualBasic6Parser.EQ) + self.state = 655 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 654 + self.match(VisualBasic6Parser.WS) + + + self.state = 657 + self.literal() + self.state = 668 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,66,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 659 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 658 + self.match(VisualBasic6Parser.WS) + + + self.state = 661 + self.match(VisualBasic6Parser.COMMA) + self.state = 663 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 662 + self.match(VisualBasic6Parser.WS) + + + self.state = 665 + self.literal() + self.state = 670 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,66,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def blockStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.BlockStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.BlockStmtContext,i) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_block + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBlock" ): + listener.enterBlock(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBlock" ): + listener.exitBlock(self) + + + + + def block(self): + + localctx = VisualBasic6Parser.BlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_block) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 671 + self.blockStmt() + self.state = 683 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,69,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 673 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 672 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 675 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 678 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,68,self._ctx) + if la_ == 1: + self.state = 677 + self.match(VisualBasic6Parser.WS) + + + self.state = 680 + self.blockStmt() + self.state = 685 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,69,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def appActivateStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.AppActivateStmtContext,0) + + + def attributeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.AttributeStmtContext,0) + + + def beepStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.BeepStmtContext,0) + + + def chDirStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ChDirStmtContext,0) + + + def chDriveStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ChDriveStmtContext,0) + + + def closeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.CloseStmtContext,0) + + + def constStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ConstStmtContext,0) + + + def dateStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DateStmtContext,0) + + + def deleteSettingStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DeleteSettingStmtContext,0) + + + def deftypeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DeftypeStmtContext,0) + + + def doLoopStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DoLoopStmtContext,0) + + + def endStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.EndStmtContext,0) + + + def eraseStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.EraseStmtContext,0) + + + def errorStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ErrorStmtContext,0) + + + def exitStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ExitStmtContext,0) + + + def explicitCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ExplicitCallStmtContext,0) + + + def filecopyStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.FilecopyStmtContext,0) + + + def forEachStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ForEachStmtContext,0) + + + def forNextStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ForNextStmtContext,0) + + + def getStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.GetStmtContext,0) + + + def goSubStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.GoSubStmtContext,0) + + + def goToStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.GoToStmtContext,0) + + + def ifThenElseStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfThenElseStmtContext,0) + + + def implementsStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplementsStmtContext,0) + + + def inputStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.InputStmtContext,0) + + + def killStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.KillStmtContext,0) + + + def letStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.LetStmtContext,0) + + + def lineInputStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.LineInputStmtContext,0) + + + def lineLabel(self): + return self.getTypedRuleContext(VisualBasic6Parser.LineLabelContext,0) + + + def loadStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.LoadStmtContext,0) + + + def lockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.LockStmtContext,0) + + + def lsetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.LsetStmtContext,0) + + + def macroIfThenElseStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MacroIfThenElseStmtContext,0) + + + def midStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MidStmtContext,0) + + + def mkdirStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MkdirStmtContext,0) + + + def nameStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.NameStmtContext,0) + + + def onErrorStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.OnErrorStmtContext,0) + + + def onGoToStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.OnGoToStmtContext,0) + + + def onGoSubStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.OnGoSubStmtContext,0) + + + def openStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.OpenStmtContext,0) + + + def printStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.PrintStmtContext,0) + + + def putStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.PutStmtContext,0) + + + def raiseEventStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.RaiseEventStmtContext,0) + + + def randomizeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.RandomizeStmtContext,0) + + + def redimStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.RedimStmtContext,0) + + + def resetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ResetStmtContext,0) + + + def resumeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ResumeStmtContext,0) + + + def returnStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ReturnStmtContext,0) + + + def rmdirStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.RmdirStmtContext,0) + + + def rsetStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.RsetStmtContext,0) + + + def savepictureStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SavepictureStmtContext,0) + + + def saveSettingStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SaveSettingStmtContext,0) + + + def seekStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SeekStmtContext,0) + + + def selectCaseStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SelectCaseStmtContext,0) + + + def sendkeysStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SendkeysStmtContext,0) + + + def setattrStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SetattrStmtContext,0) + + + def setStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.SetStmtContext,0) + + + def stopStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.StopStmtContext,0) + + + def timeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.TimeStmtContext,0) + + + def unloadStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.UnloadStmtContext,0) + + + def unlockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.UnlockStmtContext,0) + + + def variableStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.VariableStmtContext,0) + + + def whileWendStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.WhileWendStmtContext,0) + + + def widthStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.WidthStmtContext,0) + + + def withStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.WithStmtContext,0) + + + def writeStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.WriteStmtContext,0) + + + def implicitCallStmt_InBlock(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InBlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_blockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBlockStmt" ): + listener.enterBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBlockStmt" ): + listener.exitBlockStmt(self) + + + + + def blockStmt(self): + + localctx = VisualBasic6Parser.BlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_blockStmt) + try: + self.state = 753 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,70,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 686 + self.appActivateStmt() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 687 + self.attributeStmt() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 688 + self.beepStmt() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 689 + self.chDirStmt() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 690 + self.chDriveStmt() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 691 + self.closeStmt() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 692 + self.constStmt() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 693 + self.dateStmt() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 694 + self.deleteSettingStmt() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 695 + self.deftypeStmt() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 696 + self.doLoopStmt() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 697 + self.endStmt() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 698 + self.eraseStmt() + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 699 + self.errorStmt() + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 700 + self.exitStmt() + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 701 + self.explicitCallStmt() + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 702 + self.filecopyStmt() + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 703 + self.forEachStmt() + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 704 + self.forNextStmt() + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 705 + self.getStmt() + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 706 + self.goSubStmt() + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 707 + self.goToStmt() + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 708 + self.ifThenElseStmt() + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 709 + self.implementsStmt() + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 710 + self.inputStmt() + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 711 + self.killStmt() + pass + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 712 + self.letStmt() + pass + + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 713 + self.lineInputStmt() + pass + + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 714 + self.lineLabel() + pass + + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 715 + self.loadStmt() + pass + + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 716 + self.lockStmt() + pass + + elif la_ == 32: + self.enterOuterAlt(localctx, 32) + self.state = 717 + self.lsetStmt() + pass + + elif la_ == 33: + self.enterOuterAlt(localctx, 33) + self.state = 718 + self.macroIfThenElseStmt() + pass + + elif la_ == 34: + self.enterOuterAlt(localctx, 34) + self.state = 719 + self.midStmt() + pass + + elif la_ == 35: + self.enterOuterAlt(localctx, 35) + self.state = 720 + self.mkdirStmt() + pass + + elif la_ == 36: + self.enterOuterAlt(localctx, 36) + self.state = 721 + self.nameStmt() + pass + + elif la_ == 37: + self.enterOuterAlt(localctx, 37) + self.state = 722 + self.onErrorStmt() + pass + + elif la_ == 38: + self.enterOuterAlt(localctx, 38) + self.state = 723 + self.onGoToStmt() + pass + + elif la_ == 39: + self.enterOuterAlt(localctx, 39) + self.state = 724 + self.onGoSubStmt() + pass + + elif la_ == 40: + self.enterOuterAlt(localctx, 40) + self.state = 725 + self.openStmt() + pass + + elif la_ == 41: + self.enterOuterAlt(localctx, 41) + self.state = 726 + self.printStmt() + pass + + elif la_ == 42: + self.enterOuterAlt(localctx, 42) + self.state = 727 + self.putStmt() + pass + + elif la_ == 43: + self.enterOuterAlt(localctx, 43) + self.state = 728 + self.raiseEventStmt() + pass + + elif la_ == 44: + self.enterOuterAlt(localctx, 44) + self.state = 729 + self.randomizeStmt() + pass + + elif la_ == 45: + self.enterOuterAlt(localctx, 45) + self.state = 730 + self.redimStmt() + pass + + elif la_ == 46: + self.enterOuterAlt(localctx, 46) + self.state = 731 + self.resetStmt() + pass + + elif la_ == 47: + self.enterOuterAlt(localctx, 47) + self.state = 732 + self.resumeStmt() + pass + + elif la_ == 48: + self.enterOuterAlt(localctx, 48) + self.state = 733 + self.returnStmt() + pass + + elif la_ == 49: + self.enterOuterAlt(localctx, 49) + self.state = 734 + self.rmdirStmt() + pass + + elif la_ == 50: + self.enterOuterAlt(localctx, 50) + self.state = 735 + self.rsetStmt() + pass + + elif la_ == 51: + self.enterOuterAlt(localctx, 51) + self.state = 736 + self.savepictureStmt() + pass + + elif la_ == 52: + self.enterOuterAlt(localctx, 52) + self.state = 737 + self.saveSettingStmt() + pass + + elif la_ == 53: + self.enterOuterAlt(localctx, 53) + self.state = 738 + self.seekStmt() + pass + + elif la_ == 54: + self.enterOuterAlt(localctx, 54) + self.state = 739 + self.selectCaseStmt() + pass + + elif la_ == 55: + self.enterOuterAlt(localctx, 55) + self.state = 740 + self.sendkeysStmt() + pass + + elif la_ == 56: + self.enterOuterAlt(localctx, 56) + self.state = 741 + self.setattrStmt() + pass + + elif la_ == 57: + self.enterOuterAlt(localctx, 57) + self.state = 742 + self.setStmt() + pass + + elif la_ == 58: + self.enterOuterAlt(localctx, 58) + self.state = 743 + self.stopStmt() + pass + + elif la_ == 59: + self.enterOuterAlt(localctx, 59) + self.state = 744 + self.timeStmt() + pass + + elif la_ == 60: + self.enterOuterAlt(localctx, 60) + self.state = 745 + self.unloadStmt() + pass + + elif la_ == 61: + self.enterOuterAlt(localctx, 61) + self.state = 746 + self.unlockStmt() + pass + + elif la_ == 62: + self.enterOuterAlt(localctx, 62) + self.state = 747 + self.variableStmt() + pass + + elif la_ == 63: + self.enterOuterAlt(localctx, 63) + self.state = 748 + self.whileWendStmt() + pass + + elif la_ == 64: + self.enterOuterAlt(localctx, 64) + self.state = 749 + self.widthStmt() + pass + + elif la_ == 65: + self.enterOuterAlt(localctx, 65) + self.state = 750 + self.withStmt() + pass + + elif la_ == 66: + self.enterOuterAlt(localctx, 66) + self.state = 751 + self.writeStmt() + pass + + elif la_ == 67: + self.enterOuterAlt(localctx, 67) + self.state = 752 + self.implicitCallStmt_InBlock() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AppActivateStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def APPACTIVATE(self): + return self.getToken(VisualBasic6Parser.APPACTIVATE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_appActivateStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAppActivateStmt" ): + listener.enterAppActivateStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAppActivateStmt" ): + listener.exitAppActivateStmt(self) + + + + + def appActivateStmt(self): + + localctx = VisualBasic6Parser.AppActivateStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_appActivateStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 755 + self.match(VisualBasic6Parser.APPACTIVATE) + self.state = 756 + self.match(VisualBasic6Parser.WS) + self.state = 757 + self.valueStmt(0) + self.state = 766 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,73,self._ctx) + if la_ == 1: + self.state = 759 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 758 + self.match(VisualBasic6Parser.WS) + + + self.state = 761 + self.match(VisualBasic6Parser.COMMA) + self.state = 763 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,72,self._ctx) + if la_ == 1: + self.state = 762 + self.match(VisualBasic6Parser.WS) + + + self.state = 765 + self.valueStmt(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BeepStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEEP(self): + return self.getToken(VisualBasic6Parser.BEEP, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_beepStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBeepStmt" ): + listener.enterBeepStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBeepStmt" ): + listener.exitBeepStmt(self) + + + + + def beepStmt(self): + + localctx = VisualBasic6Parser.BeepStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_beepStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 768 + self.match(VisualBasic6Parser.BEEP) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChDirStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHDIR(self): + return self.getToken(VisualBasic6Parser.CHDIR, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_chDirStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChDirStmt" ): + listener.enterChDirStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChDirStmt" ): + listener.exitChDirStmt(self) + + + + + def chDirStmt(self): + + localctx = VisualBasic6Parser.ChDirStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_chDirStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 770 + self.match(VisualBasic6Parser.CHDIR) + self.state = 771 + self.match(VisualBasic6Parser.WS) + self.state = 772 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChDriveStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHDRIVE(self): + return self.getToken(VisualBasic6Parser.CHDRIVE, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_chDriveStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChDriveStmt" ): + listener.enterChDriveStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChDriveStmt" ): + listener.exitChDriveStmt(self) + + + + + def chDriveStmt(self): + + localctx = VisualBasic6Parser.ChDriveStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_chDriveStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 774 + self.match(VisualBasic6Parser.CHDRIVE) + self.state = 775 + self.match(VisualBasic6Parser.WS) + self.state = 776 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CloseStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CLOSE(self): + return self.getToken(VisualBasic6Parser.CLOSE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_closeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCloseStmt" ): + listener.enterCloseStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCloseStmt" ): + listener.exitCloseStmt(self) + + + + + def closeStmt(self): + + localctx = VisualBasic6Parser.CloseStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_closeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 778 + self.match(VisualBasic6Parser.CLOSE) + self.state = 794 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,77,self._ctx) + if la_ == 1: + self.state = 779 + self.match(VisualBasic6Parser.WS) + self.state = 780 + self.valueStmt(0) + self.state = 791 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,76,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 782 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 781 + self.match(VisualBasic6Parser.WS) + + + self.state = 784 + self.match(VisualBasic6Parser.COMMA) + self.state = 786 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,75,self._ctx) + if la_ == 1: + self.state = 785 + self.match(VisualBasic6Parser.WS) + + + self.state = 788 + self.valueStmt(0) + self.state = 793 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,76,self._ctx) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CONST(self): + return self.getToken(VisualBasic6Parser.CONST, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def constSubStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ConstSubStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ConstSubStmtContext,i) + + + def publicPrivateGlobalVisibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.PublicPrivateGlobalVisibilityContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_constStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstStmt" ): + listener.enterConstStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstStmt" ): + listener.exitConstStmt(self) + + + + + def constStmt(self): + + localctx = VisualBasic6Parser.ConstStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_constStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 799 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & 153122387330596865) != 0): + self.state = 796 + self.publicPrivateGlobalVisibility() + self.state = 797 + self.match(VisualBasic6Parser.WS) + + + self.state = 801 + self.match(VisualBasic6Parser.CONST) + self.state = 802 + self.match(VisualBasic6Parser.WS) + self.state = 803 + self.constSubStmt() + self.state = 814 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,81,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 805 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 804 + self.match(VisualBasic6Parser.WS) + + + self.state = 807 + self.match(VisualBasic6Parser.COMMA) + self.state = 809 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 808 + self.match(VisualBasic6Parser.WS) + + + self.state = 811 + self.constSubStmt() + self.state = 816 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,81,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstSubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_constSubStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstSubStmt" ): + listener.enterConstSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstSubStmt" ): + listener.exitConstSubStmt(self) + + + + + def constSubStmt(self): + + localctx = VisualBasic6Parser.ConstSubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_constSubStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 817 + self.ambiguousIdentifier() + self.state = 819 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 818 + self.typeHint() + + + self.state = 823 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,83,self._ctx) + if la_ == 1: + self.state = 821 + self.match(VisualBasic6Parser.WS) + self.state = 822 + self.asTypeClause() + + + self.state = 826 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 825 + self.match(VisualBasic6Parser.WS) + + + self.state = 828 + self.match(VisualBasic6Parser.EQ) + self.state = 830 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,85,self._ctx) + if la_ == 1: + self.state = 829 + self.match(VisualBasic6Parser.WS) + + + self.state = 832 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DateStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DATE(self): + return self.getToken(VisualBasic6Parser.DATE, 0) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_dateStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDateStmt" ): + listener.enterDateStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDateStmt" ): + listener.exitDateStmt(self) + + + + + def dateStmt(self): + + localctx = VisualBasic6Parser.DateStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_dateStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 834 + self.match(VisualBasic6Parser.DATE) + self.state = 836 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 835 + self.match(VisualBasic6Parser.WS) + + + self.state = 838 + self.match(VisualBasic6Parser.EQ) + self.state = 840 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,87,self._ctx) + if la_ == 1: + self.state = 839 + self.match(VisualBasic6Parser.WS) + + + self.state = 842 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclareStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DECLARE(self): + return self.getToken(VisualBasic6Parser.DECLARE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def LIB(self): + return self.getToken(VisualBasic6Parser.LIB, 0) + + def STRINGLITERAL(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.STRINGLITERAL) + else: + return self.getToken(VisualBasic6Parser.STRINGLITERAL, i) + + def FUNCTION(self): + return self.getToken(VisualBasic6Parser.FUNCTION, 0) + + def SUB(self): + return self.getToken(VisualBasic6Parser.SUB, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def typeHint(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.TypeHintContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,i) + + + def ALIAS(self): + return self.getToken(VisualBasic6Parser.ALIAS, 0) + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_declareStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclareStmt" ): + listener.enterDeclareStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclareStmt" ): + listener.exitDeclareStmt(self) + + + + + def declareStmt(self): + + localctx = VisualBasic6Parser.DeclareStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_declareStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 847 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 844 + self.visibility() + self.state = 845 + self.match(VisualBasic6Parser.WS) + + + self.state = 849 + self.match(VisualBasic6Parser.DECLARE) + self.state = 850 + self.match(VisualBasic6Parser.WS) + self.state = 856 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [70]: + self.state = 851 + self.match(VisualBasic6Parser.FUNCTION) + self.state = 853 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 852 + self.typeHint() + + + pass + elif token in [157]: + self.state = 855 + self.match(VisualBasic6Parser.SUB) + pass + else: + raise NoViableAltException(self) + + self.state = 858 + self.match(VisualBasic6Parser.WS) + self.state = 859 + self.ambiguousIdentifier() + self.state = 861 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 860 + self.typeHint() + + + self.state = 863 + self.match(VisualBasic6Parser.WS) + self.state = 864 + self.match(VisualBasic6Parser.LIB) + self.state = 865 + self.match(VisualBasic6Parser.WS) + self.state = 866 + self.match(VisualBasic6Parser.STRINGLITERAL) + self.state = 871 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,92,self._ctx) + if la_ == 1: + self.state = 867 + self.match(VisualBasic6Parser.WS) + self.state = 868 + self.match(VisualBasic6Parser.ALIAS) + self.state = 869 + self.match(VisualBasic6Parser.WS) + self.state = 870 + self.match(VisualBasic6Parser.STRINGLITERAL) + + + self.state = 877 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,94,self._ctx) + if la_ == 1: + self.state = 874 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 873 + self.match(VisualBasic6Parser.WS) + + + self.state = 876 + self.argList() + + + self.state = 881 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,95,self._ctx) + if la_ == 1: + self.state = 879 + self.match(VisualBasic6Parser.WS) + self.state = 880 + self.asTypeClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeftypeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def letterrange(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.LetterrangeContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.LetterrangeContext,i) + + + def DEFBOOL(self): + return self.getToken(VisualBasic6Parser.DEFBOOL, 0) + + def DEFBYTE(self): + return self.getToken(VisualBasic6Parser.DEFBYTE, 0) + + def DEFINT(self): + return self.getToken(VisualBasic6Parser.DEFINT, 0) + + def DEFLNG(self): + return self.getToken(VisualBasic6Parser.DEFLNG, 0) + + def DEFCUR(self): + return self.getToken(VisualBasic6Parser.DEFCUR, 0) + + def DEFSNG(self): + return self.getToken(VisualBasic6Parser.DEFSNG, 0) + + def DEFDBL(self): + return self.getToken(VisualBasic6Parser.DEFDBL, 0) + + def DEFDEC(self): + return self.getToken(VisualBasic6Parser.DEFDEC, 0) + + def DEFDATE(self): + return self.getToken(VisualBasic6Parser.DEFDATE, 0) + + def DEFSTR(self): + return self.getToken(VisualBasic6Parser.DEFSTR, 0) + + def DEFOBJ(self): + return self.getToken(VisualBasic6Parser.DEFOBJ, 0) + + def DEFVAR(self): + return self.getToken(VisualBasic6Parser.DEFVAR, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_deftypeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeftypeStmt" ): + listener.enterDeftypeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeftypeStmt" ): + listener.exitDeftypeStmt(self) + + + + + def deftypeStmt(self): + + localctx = VisualBasic6Parser.DeftypeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_deftypeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 883 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 549621596160) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 884 + self.match(VisualBasic6Parser.WS) + self.state = 885 + self.letterrange() + self.state = 896 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,98,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 887 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 886 + self.match(VisualBasic6Parser.WS) + + + self.state = 889 + self.match(VisualBasic6Parser.COMMA) + self.state = 891 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 890 + self.match(VisualBasic6Parser.WS) + + + self.state = 893 + self.letterrange() + self.state = 898 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,98,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeleteSettingStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DELETESETTING(self): + return self.getToken(VisualBasic6Parser.DELETESETTING, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_deleteSettingStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeleteSettingStmt" ): + listener.enterDeleteSettingStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeleteSettingStmt" ): + listener.exitDeleteSettingStmt(self) + + + + + def deleteSettingStmt(self): + + localctx = VisualBasic6Parser.DeleteSettingStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_deleteSettingStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 899 + self.match(VisualBasic6Parser.DELETESETTING) + self.state = 900 + self.match(VisualBasic6Parser.WS) + self.state = 901 + self.valueStmt(0) + self.state = 903 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 902 + self.match(VisualBasic6Parser.WS) + + + self.state = 905 + self.match(VisualBasic6Parser.COMMA) + self.state = 907 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,100,self._ctx) + if la_ == 1: + self.state = 906 + self.match(VisualBasic6Parser.WS) + + + self.state = 909 + self.valueStmt(0) + self.state = 918 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,103,self._ctx) + if la_ == 1: + self.state = 911 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 910 + self.match(VisualBasic6Parser.WS) + + + self.state = 913 + self.match(VisualBasic6Parser.COMMA) + self.state = 915 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,102,self._ctx) + if la_ == 1: + self.state = 914 + self.match(VisualBasic6Parser.WS) + + + self.state = 917 + self.valueStmt(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DoLoopStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DO(self): + return self.getToken(VisualBasic6Parser.DO, 0) + + def LOOP(self): + return self.getToken(VisualBasic6Parser.LOOP, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WHILE(self): + return self.getToken(VisualBasic6Parser.WHILE, 0) + + def UNTIL(self): + return self.getToken(VisualBasic6Parser.UNTIL, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_doLoopStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoLoopStmt" ): + listener.enterDoLoopStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoLoopStmt" ): + listener.exitDoLoopStmt(self) + + + + + def doLoopStmt(self): + + localctx = VisualBasic6Parser.DoLoopStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_doLoopStmt) + self._la = 0 # Token type + try: + self.state = 974 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,113,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 920 + self.match(VisualBasic6Parser.DO) + self.state = 922 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 921 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 924 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 932 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,106,self._ctx) + if la_ == 1: + self.state = 926 + self.block() + self.state = 928 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 927 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 930 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 934 + self.match(VisualBasic6Parser.LOOP) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 935 + self.match(VisualBasic6Parser.DO) + self.state = 936 + self.match(VisualBasic6Parser.WS) + self.state = 937 + _la = self._input.LA(1) + if not(_la==168 or _la==172): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 938 + self.match(VisualBasic6Parser.WS) + self.state = 939 + self.valueStmt(0) + self.state = 941 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 940 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 943 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 951 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,109,self._ctx) + if la_ == 1: + self.state = 945 + self.block() + self.state = 947 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 946 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 949 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 953 + self.match(VisualBasic6Parser.LOOP) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 955 + self.match(VisualBasic6Parser.DO) + self.state = 957 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 956 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 959 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 967 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,112,self._ctx) + if la_ == 1: + self.state = 961 + self.block() + self.state = 963 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 962 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 965 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 969 + self.match(VisualBasic6Parser.LOOP) + self.state = 970 + self.match(VisualBasic6Parser.WS) + self.state = 971 + _la = self._input.LA(1) + if not(_la==168 or _la==172): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 972 + self.match(VisualBasic6Parser.WS) + self.state = 973 + self.valueStmt(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EndStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def END(self): + return self.getToken(VisualBasic6Parser.END, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_endStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEndStmt" ): + listener.enterEndStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEndStmt" ): + listener.exitEndStmt(self) + + + + + def endStmt(self): + + localctx = VisualBasic6Parser.EndStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_endStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 976 + self.match(VisualBasic6Parser.END) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EnumerationStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ENUM(self): + return self.getToken(VisualBasic6Parser.ENUM, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_ENUM(self): + return self.getToken(VisualBasic6Parser.END_ENUM, 0) + + def publicPrivateVisibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.PublicPrivateVisibilityContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def enumerationStmt_Constant(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.EnumerationStmt_ConstantContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.EnumerationStmt_ConstantContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_enumerationStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEnumerationStmt" ): + listener.enterEnumerationStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEnumerationStmt" ): + listener.exitEnumerationStmt(self) + + + + + def enumerationStmt(self): + + localctx = VisualBasic6Parser.EnumerationStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_enumerationStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 981 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==125 or _la==129: + self.state = 978 + self.publicPrivateVisibility() + self.state = 979 + self.match(VisualBasic6Parser.WS) + + + self.state = 983 + self.match(VisualBasic6Parser.ENUM) + self.state = 984 + self.match(VisualBasic6Parser.WS) + self.state = 985 + self.ambiguousIdentifier() + self.state = 987 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 986 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 989 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 994 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 281474976710623) != 0) or _la==207 or _la==218: + self.state = 991 + self.enumerationStmt_Constant() + self.state = 996 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 997 + self.match(VisualBasic6Parser.END_ENUM) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EnumerationStmt_ConstantContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_enumerationStmt_Constant + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEnumerationStmt_Constant" ): + listener.enterEnumerationStmt_Constant(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEnumerationStmt_Constant" ): + listener.exitEnumerationStmt_Constant(self) + + + + + def enumerationStmt_Constant(self): + + localctx = VisualBasic6Parser.EnumerationStmt_ConstantContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_enumerationStmt_Constant) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 999 + self.ambiguousIdentifier() + self.state = 1008 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187 or _la==222: + self.state = 1001 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1000 + self.match(VisualBasic6Parser.WS) + + + self.state = 1003 + self.match(VisualBasic6Parser.EQ) + self.state = 1005 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,118,self._ctx) + if la_ == 1: + self.state = 1004 + self.match(VisualBasic6Parser.WS) + + + self.state = 1007 + self.valueStmt(0) + + + self.state = 1011 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1010 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1013 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EraseStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ERASE(self): + return self.getToken(VisualBasic6Parser.ERASE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_eraseStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEraseStmt" ): + listener.enterEraseStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEraseStmt" ): + listener.exitEraseStmt(self) + + + + + def eraseStmt(self): + + localctx = VisualBasic6Parser.EraseStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_eraseStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1015 + self.match(VisualBasic6Parser.ERASE) + self.state = 1016 + self.match(VisualBasic6Parser.WS) + self.state = 1017 + self.valueStmt(0) + self.state = 1028 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,123,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1019 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1018 + self.match(VisualBasic6Parser.WS) + + + self.state = 1021 + self.match(VisualBasic6Parser.COMMA) + self.state = 1023 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,122,self._ctx) + if la_ == 1: + self.state = 1022 + self.match(VisualBasic6Parser.WS) + + + self.state = 1025 + self.valueStmt(0) + self.state = 1030 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,123,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ErrorStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ERROR(self): + return self.getToken(VisualBasic6Parser.ERROR, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_errorStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterErrorStmt" ): + listener.enterErrorStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitErrorStmt" ): + listener.exitErrorStmt(self) + + + + + def errorStmt(self): + + localctx = VisualBasic6Parser.ErrorStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_errorStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1031 + self.match(VisualBasic6Parser.ERROR) + self.state = 1032 + self.match(VisualBasic6Parser.WS) + self.state = 1033 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EventStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EVENT(self): + return self.getToken(VisualBasic6Parser.EVENT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_eventStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEventStmt" ): + listener.enterEventStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEventStmt" ): + listener.exitEventStmt(self) + + + + + def eventStmt(self): + + localctx = VisualBasic6Parser.EventStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_eventStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1038 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 1035 + self.visibility() + self.state = 1036 + self.match(VisualBasic6Parser.WS) + + + self.state = 1040 + self.match(VisualBasic6Parser.EVENT) + self.state = 1041 + self.match(VisualBasic6Parser.WS) + self.state = 1042 + self.ambiguousIdentifier() + self.state = 1044 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1043 + self.match(VisualBasic6Parser.WS) + + + self.state = 1046 + self.argList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExitStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXIT_DO(self): + return self.getToken(VisualBasic6Parser.EXIT_DO, 0) + + def EXIT_FOR(self): + return self.getToken(VisualBasic6Parser.EXIT_FOR, 0) + + def EXIT_FUNCTION(self): + return self.getToken(VisualBasic6Parser.EXIT_FUNCTION, 0) + + def EXIT_PROPERTY(self): + return self.getToken(VisualBasic6Parser.EXIT_PROPERTY, 0) + + def EXIT_SUB(self): + return self.getToken(VisualBasic6Parser.EXIT_SUB, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_exitStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExitStmt" ): + listener.enterExitStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExitStmt" ): + listener.exitExitStmt(self) + + + + + def exitStmt(self): + + localctx = VisualBasic6Parser.ExitStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_exitStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1048 + _la = self._input.LA(1) + if not(((((_la - 61)) & ~0x3f) == 0 and ((1 << (_la - 61)) & 31) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FilecopyStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FILECOPY(self): + return self.getToken(VisualBasic6Parser.FILECOPY, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_filecopyStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFilecopyStmt" ): + listener.enterFilecopyStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFilecopyStmt" ): + listener.exitFilecopyStmt(self) + + + + + def filecopyStmt(self): + + localctx = VisualBasic6Parser.FilecopyStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_filecopyStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1050 + self.match(VisualBasic6Parser.FILECOPY) + self.state = 1051 + self.match(VisualBasic6Parser.WS) + self.state = 1052 + self.valueStmt(0) + self.state = 1054 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1053 + self.match(VisualBasic6Parser.WS) + + + self.state = 1056 + self.match(VisualBasic6Parser.COMMA) + self.state = 1058 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,127,self._ctx) + if la_ == 1: + self.state = 1057 + self.match(VisualBasic6Parser.WS) + + + self.state = 1060 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ForEachStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(VisualBasic6Parser.FOR, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def EACH(self): + return self.getToken(VisualBasic6Parser.EACH, 0) + + def ambiguousIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AmbiguousIdentifierContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,i) + + + def IN(self): + return self.getToken(VisualBasic6Parser.IN, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def NEXT(self): + return self.getToken(VisualBasic6Parser.NEXT, 0) + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_forEachStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterForEachStmt" ): + listener.enterForEachStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitForEachStmt" ): + listener.exitForEachStmt(self) + + + + + def forEachStmt(self): + + localctx = VisualBasic6Parser.ForEachStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_forEachStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1062 + self.match(VisualBasic6Parser.FOR) + self.state = 1063 + self.match(VisualBasic6Parser.WS) + self.state = 1064 + self.match(VisualBasic6Parser.EACH) + self.state = 1065 + self.match(VisualBasic6Parser.WS) + self.state = 1066 + self.ambiguousIdentifier() + self.state = 1068 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 1067 + self.typeHint() + + + self.state = 1070 + self.match(VisualBasic6Parser.WS) + self.state = 1071 + self.match(VisualBasic6Parser.IN) + self.state = 1072 + self.match(VisualBasic6Parser.WS) + self.state = 1073 + self.valueStmt(0) + self.state = 1075 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1074 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1077 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1085 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,131,self._ctx) + if la_ == 1: + self.state = 1079 + self.block() + self.state = 1081 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1080 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1083 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1087 + self.match(VisualBasic6Parser.NEXT) + self.state = 1090 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,132,self._ctx) + if la_ == 1: + self.state = 1088 + self.match(VisualBasic6Parser.WS) + self.state = 1089 + self.ambiguousIdentifier() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ForNextStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(VisualBasic6Parser.FOR, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def iCS_S_VariableOrProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def NEXT(self): + return self.getToken(VisualBasic6Parser.NEXT, 0) + + def typeHint(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.TypeHintContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,i) + + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def STEP(self): + return self.getToken(VisualBasic6Parser.STEP, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_forNextStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterForNextStmt" ): + listener.enterForNextStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitForNextStmt" ): + listener.exitForNextStmt(self) + + + + + def forNextStmt(self): + + localctx = VisualBasic6Parser.ForNextStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_forNextStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1092 + self.match(VisualBasic6Parser.FOR) + self.state = 1093 + self.match(VisualBasic6Parser.WS) + self.state = 1094 + self.iCS_S_VariableOrProcedureCall() + self.state = 1096 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 1095 + self.typeHint() + + + self.state = 1100 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,134,self._ctx) + if la_ == 1: + self.state = 1098 + self.match(VisualBasic6Parser.WS) + self.state = 1099 + self.asTypeClause() + + + self.state = 1103 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1102 + self.match(VisualBasic6Parser.WS) + + + self.state = 1105 + self.match(VisualBasic6Parser.EQ) + self.state = 1107 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,136,self._ctx) + if la_ == 1: + self.state = 1106 + self.match(VisualBasic6Parser.WS) + + + self.state = 1109 + self.valueStmt(0) + self.state = 1110 + self.match(VisualBasic6Parser.WS) + self.state = 1111 + self.match(VisualBasic6Parser.TO) + self.state = 1112 + self.match(VisualBasic6Parser.WS) + self.state = 1113 + self.valueStmt(0) + self.state = 1118 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1114 + self.match(VisualBasic6Parser.WS) + self.state = 1115 + self.match(VisualBasic6Parser.STEP) + self.state = 1116 + self.match(VisualBasic6Parser.WS) + self.state = 1117 + self.valueStmt(0) + + + self.state = 1121 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1120 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1123 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1131 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,140,self._ctx) + if la_ == 1: + self.state = 1125 + self.block() + self.state = 1127 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1126 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1129 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1133 + self.match(VisualBasic6Parser.NEXT) + self.state = 1139 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,142,self._ctx) + if la_ == 1: + self.state = 1134 + self.match(VisualBasic6Parser.WS) + self.state = 1135 + self.ambiguousIdentifier() + self.state = 1137 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,141,self._ctx) + if la_ == 1: + self.state = 1136 + self.typeHint() + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FUNCTION(self): + return self.getToken(VisualBasic6Parser.FUNCTION, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_FUNCTION(self): + return self.getToken(VisualBasic6Parser.END_FUNCTION, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_functionStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionStmt" ): + listener.enterFunctionStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionStmt" ): + listener.exitFunctionStmt(self) + + + + + def functionStmt(self): + + localctx = VisualBasic6Parser.FunctionStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_functionStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1144 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 1141 + self.visibility() + self.state = 1142 + self.match(VisualBasic6Parser.WS) + + + self.state = 1148 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==153: + self.state = 1146 + self.match(VisualBasic6Parser.STATIC) + self.state = 1147 + self.match(VisualBasic6Parser.WS) + + + self.state = 1150 + self.match(VisualBasic6Parser.FUNCTION) + self.state = 1151 + self.match(VisualBasic6Parser.WS) + self.state = 1152 + self.ambiguousIdentifier() + self.state = 1157 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,146,self._ctx) + if la_ == 1: + self.state = 1154 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1153 + self.match(VisualBasic6Parser.WS) + + + self.state = 1156 + self.argList() + + + self.state = 1161 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1159 + self.match(VisualBasic6Parser.WS) + self.state = 1160 + self.asTypeClause() + + + self.state = 1164 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1163 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1166 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1174 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1168 + self.block() + self.state = 1170 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1169 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1172 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1176 + self.match(VisualBasic6Parser.END_FUNCTION) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def GET(self): + return self.getToken(VisualBasic6Parser.GET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_getStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGetStmt" ): + listener.enterGetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGetStmt" ): + listener.exitGetStmt(self) + + + + + def getStmt(self): + + localctx = VisualBasic6Parser.GetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_getStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1178 + self.match(VisualBasic6Parser.GET) + self.state = 1179 + self.match(VisualBasic6Parser.WS) + self.state = 1180 + self.valueStmt(0) + self.state = 1182 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1181 + self.match(VisualBasic6Parser.WS) + + + self.state = 1184 + self.match(VisualBasic6Parser.COMMA) + self.state = 1186 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,152,self._ctx) + if la_ == 1: + self.state = 1185 + self.match(VisualBasic6Parser.WS) + + + self.state = 1189 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,153,self._ctx) + if la_ == 1: + self.state = 1188 + self.valueStmt(0) + + + self.state = 1192 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1191 + self.match(VisualBasic6Parser.WS) + + + self.state = 1194 + self.match(VisualBasic6Parser.COMMA) + self.state = 1196 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,155,self._ctx) + if la_ == 1: + self.state = 1195 + self.match(VisualBasic6Parser.WS) + + + self.state = 1198 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GoSubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def GOSUB(self): + return self.getToken(VisualBasic6Parser.GOSUB, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_goSubStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGoSubStmt" ): + listener.enterGoSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGoSubStmt" ): + listener.exitGoSubStmt(self) + + + + + def goSubStmt(self): + + localctx = VisualBasic6Parser.GoSubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_goSubStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1200 + self.match(VisualBasic6Parser.GOSUB) + self.state = 1201 + self.match(VisualBasic6Parser.WS) + self.state = 1202 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GoToStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def GOTO(self): + return self.getToken(VisualBasic6Parser.GOTO, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_goToStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGoToStmt" ): + listener.enterGoToStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGoToStmt" ): + listener.exitGoToStmt(self) + + + + + def goToStmt(self): + + localctx = VisualBasic6Parser.GoToStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_goToStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1204 + self.match(VisualBasic6Parser.GOTO) + self.state = 1205 + self.match(VisualBasic6Parser.WS) + self.state = 1206 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfThenElseStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ifThenElseStmt + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class BlockIfThenElseContext(IfThenElseStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.IfThenElseStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def ifBlockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfBlockStmtContext,0) + + def END_IF(self): + return self.getToken(VisualBasic6Parser.END_IF, 0) + def ifElseIfBlockStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.IfElseIfBlockStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.IfElseIfBlockStmtContext,i) + + def ifElseBlockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfElseBlockStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBlockIfThenElse" ): + listener.enterBlockIfThenElse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBlockIfThenElse" ): + listener.exitBlockIfThenElse(self) + + + class InlineIfThenElseContext(IfThenElseStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.IfThenElseStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def IF(self): + return self.getToken(VisualBasic6Parser.IF, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + def ifConditionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfConditionStmtContext,0) + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + def blockStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.BlockStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.BlockStmtContext,i) + + def ELSE(self): + return self.getToken(VisualBasic6Parser.ELSE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInlineIfThenElse" ): + listener.enterInlineIfThenElse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInlineIfThenElse" ): + listener.exitInlineIfThenElse(self) + + + + def ifThenElseStmt(self): + + localctx = VisualBasic6Parser.IfThenElseStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_ifThenElseStmt) + self._la = 0 # Token type + try: + self.state = 1233 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,159,self._ctx) + if la_ == 1: + localctx = VisualBasic6Parser.InlineIfThenElseContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1208 + self.match(VisualBasic6Parser.IF) + self.state = 1209 + self.match(VisualBasic6Parser.WS) + self.state = 1210 + self.ifConditionStmt() + self.state = 1211 + self.match(VisualBasic6Parser.WS) + self.state = 1212 + self.match(VisualBasic6Parser.THEN) + self.state = 1213 + self.match(VisualBasic6Parser.WS) + self.state = 1214 + self.blockStmt() + self.state = 1219 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,156,self._ctx) + if la_ == 1: + self.state = 1215 + self.match(VisualBasic6Parser.WS) + self.state = 1216 + self.match(VisualBasic6Parser.ELSE) + self.state = 1217 + self.match(VisualBasic6Parser.WS) + self.state = 1218 + self.blockStmt() + + + pass + + elif la_ == 2: + localctx = VisualBasic6Parser.BlockIfThenElseContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1221 + self.ifBlockStmt() + self.state = 1225 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==45: + self.state = 1222 + self.ifElseIfBlockStmt() + self.state = 1227 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1229 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==44: + self.state = 1228 + self.ifElseBlockStmt() + + + self.state = 1231 + self.match(VisualBasic6Parser.END_IF) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(VisualBasic6Parser.IF, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ifConditionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfConditionStmtContext,0) + + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ifBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfBlockStmt" ): + listener.enterIfBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfBlockStmt" ): + listener.exitIfBlockStmt(self) + + + + + def ifBlockStmt(self): + + localctx = VisualBasic6Parser.IfBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_ifBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1235 + self.match(VisualBasic6Parser.IF) + self.state = 1236 + self.match(VisualBasic6Parser.WS) + self.state = 1237 + self.ifConditionStmt() + self.state = 1238 + self.match(VisualBasic6Parser.WS) + self.state = 1239 + self.match(VisualBasic6Parser.THEN) + self.state = 1241 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1240 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1243 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1251 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,162,self._ctx) + if la_ == 1: + self.state = 1245 + self.block() + self.state = 1247 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1246 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1249 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfConditionStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ifConditionStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfConditionStmt" ): + listener.enterIfConditionStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfConditionStmt" ): + listener.exitIfConditionStmt(self) + + + + + def ifConditionStmt(self): + + localctx = VisualBasic6Parser.IfConditionStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_ifConditionStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1253 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfElseIfBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ELSEIF(self): + return self.getToken(VisualBasic6Parser.ELSEIF, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ifConditionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfConditionStmtContext,0) + + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ifElseIfBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfElseIfBlockStmt" ): + listener.enterIfElseIfBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfElseIfBlockStmt" ): + listener.exitIfElseIfBlockStmt(self) + + + + + def ifElseIfBlockStmt(self): + + localctx = VisualBasic6Parser.IfElseIfBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_ifElseIfBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1255 + self.match(VisualBasic6Parser.ELSEIF) + self.state = 1256 + self.match(VisualBasic6Parser.WS) + self.state = 1257 + self.ifConditionStmt() + self.state = 1258 + self.match(VisualBasic6Parser.WS) + self.state = 1259 + self.match(VisualBasic6Parser.THEN) + self.state = 1261 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1260 + _la = self._input.LA(1) + if not(_la==220 or _la==222): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + else: + raise NoViableAltException(self) + self.state = 1263 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,163,self._ctx) + + self.state = 1271 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,165,self._ctx) + if la_ == 1: + self.state = 1265 + self.block() + self.state = 1267 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1266 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfElseBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ELSE(self): + return self.getToken(VisualBasic6Parser.ELSE, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ifElseBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfElseBlockStmt" ): + listener.enterIfElseBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfElseBlockStmt" ): + listener.exitIfElseBlockStmt(self) + + + + + def ifElseBlockStmt(self): + + localctx = VisualBasic6Parser.IfElseBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_ifElseBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1273 + self.match(VisualBasic6Parser.ELSE) + self.state = 1275 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1274 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1277 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1285 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1279 + self.block() + self.state = 1281 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1280 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1283 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ImplementsStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPLEMENTS(self): + return self.getToken(VisualBasic6Parser.IMPLEMENTS, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_implementsStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterImplementsStmt" ): + listener.enterImplementsStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitImplementsStmt" ): + listener.exitImplementsStmt(self) + + + + + def implementsStmt(self): + + localctx = VisualBasic6Parser.ImplementsStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_implementsStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1287 + self.match(VisualBasic6Parser.IMPLEMENTS) + self.state = 1288 + self.match(VisualBasic6Parser.WS) + self.state = 1289 + self.ambiguousIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class InputStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INPUT(self): + return self.getToken(VisualBasic6Parser.INPUT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_inputStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInputStmt" ): + listener.enterInputStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInputStmt" ): + listener.exitInputStmt(self) + + + + + def inputStmt(self): + + localctx = VisualBasic6Parser.InputStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_inputStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1291 + self.match(VisualBasic6Parser.INPUT) + self.state = 1292 + self.match(VisualBasic6Parser.WS) + self.state = 1293 + self.valueStmt(0) + self.state = 1302 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1295 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1294 + self.match(VisualBasic6Parser.WS) + + + self.state = 1297 + self.match(VisualBasic6Parser.COMMA) + self.state = 1299 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,170,self._ctx) + if la_ == 1: + self.state = 1298 + self.match(VisualBasic6Parser.WS) + + + self.state = 1301 + self.valueStmt(0) + + else: + raise NoViableAltException(self) + self.state = 1304 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,171,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class KillStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def KILL(self): + return self.getToken(VisualBasic6Parser.KILL, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_killStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterKillStmt" ): + listener.enterKillStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitKillStmt" ): + listener.exitKillStmt(self) + + + + + def killStmt(self): + + localctx = VisualBasic6Parser.KillStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_killStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1306 + self.match(VisualBasic6Parser.KILL) + self.state = 1307 + self.match(VisualBasic6Parser.WS) + self.state = 1308 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def PLUS_EQ(self): + return self.getToken(VisualBasic6Parser.PLUS_EQ, 0) + + def MINUS_EQ(self): + return self.getToken(VisualBasic6Parser.MINUS_EQ, 0) + + def LET(self): + return self.getToken(VisualBasic6Parser.LET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_letStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLetStmt" ): + listener.enterLetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLetStmt" ): + listener.exitLetStmt(self) + + + + + def letStmt(self): + + localctx = VisualBasic6Parser.LetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_letStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1312 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,172,self._ctx) + if la_ == 1: + self.state = 1310 + self.match(VisualBasic6Parser.LET) + self.state = 1311 + self.match(VisualBasic6Parser.WS) + + + self.state = 1314 + self.implicitCallStmt_InStmt() + self.state = 1316 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1315 + self.match(VisualBasic6Parser.WS) + + + self.state = 1318 + _la = self._input.LA(1) + if not(((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & 33793) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1320 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,174,self._ctx) + if la_ == 1: + self.state = 1319 + self.match(VisualBasic6Parser.WS) + + + self.state = 1322 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LineInputStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LINE_INPUT(self): + return self.getToken(VisualBasic6Parser.LINE_INPUT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_lineInputStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLineInputStmt" ): + listener.enterLineInputStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLineInputStmt" ): + listener.exitLineInputStmt(self) + + + + + def lineInputStmt(self): + + localctx = VisualBasic6Parser.LineInputStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 122, self.RULE_lineInputStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1324 + self.match(VisualBasic6Parser.LINE_INPUT) + self.state = 1325 + self.match(VisualBasic6Parser.WS) + self.state = 1326 + self.valueStmt(0) + self.state = 1328 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1327 + self.match(VisualBasic6Parser.WS) + + + self.state = 1330 + self.match(VisualBasic6Parser.COMMA) + self.state = 1332 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,176,self._ctx) + if la_ == 1: + self.state = 1331 + self.match(VisualBasic6Parser.WS) + + + self.state = 1334 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoadStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOAD(self): + return self.getToken(VisualBasic6Parser.LOAD, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_loadStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadStmt" ): + listener.enterLoadStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadStmt" ): + listener.exitLoadStmt(self) + + + + + def loadStmt(self): + + localctx = VisualBasic6Parser.LoadStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_loadStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1336 + self.match(VisualBasic6Parser.LOAD) + self.state = 1337 + self.match(VisualBasic6Parser.WS) + self.state = 1338 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCK(self): + return self.getToken(VisualBasic6Parser.LOCK, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_lockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLockStmt" ): + listener.enterLockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLockStmt" ): + listener.exitLockStmt(self) + + + + + def lockStmt(self): + + localctx = VisualBasic6Parser.LockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_lockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1340 + self.match(VisualBasic6Parser.LOCK) + self.state = 1341 + self.match(VisualBasic6Parser.WS) + self.state = 1342 + self.valueStmt(0) + self.state = 1357 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,180,self._ctx) + if la_ == 1: + self.state = 1344 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1343 + self.match(VisualBasic6Parser.WS) + + + self.state = 1346 + self.match(VisualBasic6Parser.COMMA) + self.state = 1348 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,178,self._ctx) + if la_ == 1: + self.state = 1347 + self.match(VisualBasic6Parser.WS) + + + self.state = 1350 + self.valueStmt(0) + self.state = 1355 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,179,self._ctx) + if la_ == 1: + self.state = 1351 + self.match(VisualBasic6Parser.WS) + self.state = 1352 + self.match(VisualBasic6Parser.TO) + self.state = 1353 + self.match(VisualBasic6Parser.WS) + self.state = 1354 + self.valueStmt(0) + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LsetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LSET(self): + return self.getToken(VisualBasic6Parser.LSET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_lsetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLsetStmt" ): + listener.enterLsetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLsetStmt" ): + listener.exitLsetStmt(self) + + + + + def lsetStmt(self): + + localctx = VisualBasic6Parser.LsetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_lsetStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1359 + self.match(VisualBasic6Parser.LSET) + self.state = 1360 + self.match(VisualBasic6Parser.WS) + self.state = 1361 + self.implicitCallStmt_InStmt() + self.state = 1363 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1362 + self.match(VisualBasic6Parser.WS) + + + self.state = 1365 + self.match(VisualBasic6Parser.EQ) + self.state = 1367 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,182,self._ctx) + if la_ == 1: + self.state = 1366 + self.match(VisualBasic6Parser.WS) + + + self.state = 1369 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MacroIfThenElseStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def macroIfBlockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MacroIfBlockStmtContext,0) + + + def MACRO_END_IF(self): + return self.getToken(VisualBasic6Parser.MACRO_END_IF, 0) + + def macroElseIfBlockStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.MacroElseIfBlockStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.MacroElseIfBlockStmtContext,i) + + + def macroElseBlockStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MacroElseBlockStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_macroIfThenElseStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMacroIfThenElseStmt" ): + listener.enterMacroIfThenElseStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMacroIfThenElseStmt" ): + listener.exitMacroIfThenElseStmt(self) + + + + + def macroIfThenElseStmt(self): + + localctx = VisualBasic6Parser.MacroIfThenElseStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_macroIfThenElseStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1371 + self.macroIfBlockStmt() + self.state = 1375 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==97: + self.state = 1372 + self.macroElseIfBlockStmt() + self.state = 1377 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1379 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==98: + self.state = 1378 + self.macroElseBlockStmt() + + + self.state = 1381 + self.match(VisualBasic6Parser.MACRO_END_IF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MacroIfBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MACRO_IF(self): + return self.getToken(VisualBasic6Parser.MACRO_IF, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ifConditionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfConditionStmtContext,0) + + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def moduleBody(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBodyContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_macroIfBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMacroIfBlockStmt" ): + listener.enterMacroIfBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMacroIfBlockStmt" ): + listener.exitMacroIfBlockStmt(self) + + + + + def macroIfBlockStmt(self): + + localctx = VisualBasic6Parser.MacroIfBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_macroIfBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1383 + self.match(VisualBasic6Parser.MACRO_IF) + self.state = 1384 + self.match(VisualBasic6Parser.WS) + self.state = 1385 + self.ifConditionStmt() + self.state = 1386 + self.match(VisualBasic6Parser.WS) + self.state = 1387 + self.match(VisualBasic6Parser.THEN) + self.state = 1389 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1388 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1391 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1399 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -62008590337) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 1442277780665401215) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1393 + self.moduleBody() + self.state = 1395 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1394 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1397 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MacroElseIfBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MACRO_ELSEIF(self): + return self.getToken(VisualBasic6Parser.MACRO_ELSEIF, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ifConditionStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.IfConditionStmtContext,0) + + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def moduleBody(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBodyContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_macroElseIfBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMacroElseIfBlockStmt" ): + listener.enterMacroElseIfBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMacroElseIfBlockStmt" ): + listener.exitMacroElseIfBlockStmt(self) + + + + + def macroElseIfBlockStmt(self): + + localctx = VisualBasic6Parser.MacroElseIfBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_macroElseIfBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1401 + self.match(VisualBasic6Parser.MACRO_ELSEIF) + self.state = 1402 + self.match(VisualBasic6Parser.WS) + self.state = 1403 + self.ifConditionStmt() + self.state = 1404 + self.match(VisualBasic6Parser.WS) + self.state = 1405 + self.match(VisualBasic6Parser.THEN) + self.state = 1407 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1406 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1409 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1417 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -62008590337) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 1442277780665401215) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1411 + self.moduleBody() + self.state = 1413 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1412 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1415 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MacroElseBlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MACRO_ELSE(self): + return self.getToken(VisualBasic6Parser.MACRO_ELSE, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def moduleBody(self): + return self.getTypedRuleContext(VisualBasic6Parser.ModuleBodyContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_macroElseBlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMacroElseBlockStmt" ): + listener.enterMacroElseBlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMacroElseBlockStmt" ): + listener.exitMacroElseBlockStmt(self) + + + + + def macroElseBlockStmt(self): + + localctx = VisualBasic6Parser.MacroElseBlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_macroElseBlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1419 + self.match(VisualBasic6Parser.MACRO_ELSE) + self.state = 1421 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1420 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1423 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1431 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -62008590337) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 1442277780665401215) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1425 + self.moduleBody() + self.state = 1427 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1426 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1429 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MidStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MID(self): + return self.getToken(VisualBasic6Parser.MID, 0) + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_midStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMidStmt" ): + listener.enterMidStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMidStmt" ): + listener.exitMidStmt(self) + + + + + def midStmt(self): + + localctx = VisualBasic6Parser.MidStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_midStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1433 + self.match(VisualBasic6Parser.MID) + self.state = 1435 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1434 + self.match(VisualBasic6Parser.WS) + + + self.state = 1437 + self.match(VisualBasic6Parser.LPAREN) + self.state = 1439 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,195,self._ctx) + if la_ == 1: + self.state = 1438 + self.match(VisualBasic6Parser.WS) + + + self.state = 1441 + self.argsCall() + self.state = 1443 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1442 + self.match(VisualBasic6Parser.WS) + + + self.state = 1445 + self.match(VisualBasic6Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MkdirStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MKDIR(self): + return self.getToken(VisualBasic6Parser.MKDIR, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_mkdirStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMkdirStmt" ): + listener.enterMkdirStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMkdirStmt" ): + listener.exitMkdirStmt(self) + + + + + def mkdirStmt(self): + + localctx = VisualBasic6Parser.MkdirStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_mkdirStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1447 + self.match(VisualBasic6Parser.MKDIR) + self.state = 1448 + self.match(VisualBasic6Parser.WS) + self.state = 1449 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class NameStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NAME(self): + return self.getToken(VisualBasic6Parser.NAME, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def AS(self): + return self.getToken(VisualBasic6Parser.AS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_nameStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNameStmt" ): + listener.enterNameStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNameStmt" ): + listener.exitNameStmt(self) + + + + + def nameStmt(self): + + localctx = VisualBasic6Parser.NameStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_nameStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1451 + self.match(VisualBasic6Parser.NAME) + self.state = 1452 + self.match(VisualBasic6Parser.WS) + self.state = 1453 + self.valueStmt(0) + self.state = 1454 + self.match(VisualBasic6Parser.WS) + self.state = 1455 + self.match(VisualBasic6Parser.AS) + self.state = 1456 + self.match(VisualBasic6Parser.WS) + self.state = 1457 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OnErrorStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ON_ERROR(self): + return self.getToken(VisualBasic6Parser.ON_ERROR, 0) + + def ON_LOCAL_ERROR(self): + return self.getToken(VisualBasic6Parser.ON_LOCAL_ERROR, 0) + + def GOTO(self): + return self.getToken(VisualBasic6Parser.GOTO, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def RESUME(self): + return self.getToken(VisualBasic6Parser.RESUME, 0) + + def NEXT(self): + return self.getToken(VisualBasic6Parser.NEXT, 0) + + def COLON(self): + return self.getToken(VisualBasic6Parser.COLON, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_onErrorStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOnErrorStmt" ): + listener.enterOnErrorStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOnErrorStmt" ): + listener.exitOnErrorStmt(self) + + + + + def onErrorStmt(self): + + localctx = VisualBasic6Parser.OnErrorStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_onErrorStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1459 + _la = self._input.LA(1) + if not(_la==112 or _la==113): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1460 + self.match(VisualBasic6Parser.WS) + self.state = 1470 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [74]: + self.state = 1461 + self.match(VisualBasic6Parser.GOTO) + self.state = 1462 + self.match(VisualBasic6Parser.WS) + self.state = 1463 + self.valueStmt(0) + self.state = 1465 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==181: + self.state = 1464 + self.match(VisualBasic6Parser.COLON) + + + pass + elif token in [139]: + self.state = 1467 + self.match(VisualBasic6Parser.RESUME) + self.state = 1468 + self.match(VisualBasic6Parser.WS) + self.state = 1469 + self.match(VisualBasic6Parser.NEXT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OnGoToStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(VisualBasic6Parser.ON, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def GOTO(self): + return self.getToken(VisualBasic6Parser.GOTO, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_onGoToStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOnGoToStmt" ): + listener.enterOnGoToStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOnGoToStmt" ): + listener.exitOnGoToStmt(self) + + + + + def onGoToStmt(self): + + localctx = VisualBasic6Parser.OnGoToStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_onGoToStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1472 + self.match(VisualBasic6Parser.ON) + self.state = 1473 + self.match(VisualBasic6Parser.WS) + self.state = 1474 + self.valueStmt(0) + self.state = 1475 + self.match(VisualBasic6Parser.WS) + self.state = 1476 + self.match(VisualBasic6Parser.GOTO) + self.state = 1477 + self.match(VisualBasic6Parser.WS) + self.state = 1478 + self.valueStmt(0) + self.state = 1489 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,201,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1480 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1479 + self.match(VisualBasic6Parser.WS) + + + self.state = 1482 + self.match(VisualBasic6Parser.COMMA) + self.state = 1484 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,200,self._ctx) + if la_ == 1: + self.state = 1483 + self.match(VisualBasic6Parser.WS) + + + self.state = 1486 + self.valueStmt(0) + self.state = 1491 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,201,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OnGoSubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(VisualBasic6Parser.ON, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def GOSUB(self): + return self.getToken(VisualBasic6Parser.GOSUB, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_onGoSubStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOnGoSubStmt" ): + listener.enterOnGoSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOnGoSubStmt" ): + listener.exitOnGoSubStmt(self) + + + + + def onGoSubStmt(self): + + localctx = VisualBasic6Parser.OnGoSubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_onGoSubStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1492 + self.match(VisualBasic6Parser.ON) + self.state = 1493 + self.match(VisualBasic6Parser.WS) + self.state = 1494 + self.valueStmt(0) + self.state = 1495 + self.match(VisualBasic6Parser.WS) + self.state = 1496 + self.match(VisualBasic6Parser.GOSUB) + self.state = 1497 + self.match(VisualBasic6Parser.WS) + self.state = 1498 + self.valueStmt(0) + self.state = 1509 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,204,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1500 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1499 + self.match(VisualBasic6Parser.WS) + + + self.state = 1502 + self.match(VisualBasic6Parser.COMMA) + self.state = 1504 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,203,self._ctx) + if la_ == 1: + self.state = 1503 + self.match(VisualBasic6Parser.WS) + + + self.state = 1506 + self.valueStmt(0) + self.state = 1511 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,204,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OpenStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN(self): + return self.getToken(VisualBasic6Parser.OPEN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def FOR(self): + return self.getToken(VisualBasic6Parser.FOR, 0) + + def AS(self): + return self.getToken(VisualBasic6Parser.AS, 0) + + def APPEND(self): + return self.getToken(VisualBasic6Parser.APPEND, 0) + + def BINARY(self): + return self.getToken(VisualBasic6Parser.BINARY, 0) + + def INPUT(self): + return self.getToken(VisualBasic6Parser.INPUT, 0) + + def OUTPUT(self): + return self.getToken(VisualBasic6Parser.OUTPUT, 0) + + def RANDOM(self): + return self.getToken(VisualBasic6Parser.RANDOM, 0) + + def ACCESS(self): + return self.getToken(VisualBasic6Parser.ACCESS, 0) + + def LEN(self): + return self.getToken(VisualBasic6Parser.LEN, 0) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def READ(self): + return self.getToken(VisualBasic6Parser.READ, 0) + + def WRITE(self): + return self.getToken(VisualBasic6Parser.WRITE, 0) + + def READ_WRITE(self): + return self.getToken(VisualBasic6Parser.READ_WRITE, 0) + + def SHARED(self): + return self.getToken(VisualBasic6Parser.SHARED, 0) + + def LOCK_READ(self): + return self.getToken(VisualBasic6Parser.LOCK_READ, 0) + + def LOCK_WRITE(self): + return self.getToken(VisualBasic6Parser.LOCK_WRITE, 0) + + def LOCK_READ_WRITE(self): + return self.getToken(VisualBasic6Parser.LOCK_READ_WRITE, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_openStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOpenStmt" ): + listener.enterOpenStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOpenStmt" ): + listener.exitOpenStmt(self) + + + + + def openStmt(self): + + localctx = VisualBasic6Parser.OpenStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_openStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1512 + self.match(VisualBasic6Parser.OPEN) + self.state = 1513 + self.match(VisualBasic6Parser.WS) + self.state = 1514 + self.valueStmt(0) + self.state = 1515 + self.match(VisualBasic6Parser.WS) + self.state = 1516 + self.match(VisualBasic6Parser.FOR) + self.state = 1517 + self.match(VisualBasic6Parser.WS) + self.state = 1518 + _la = self._input.LA(1) + if not(_la==7 or _la==12 or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 4507997673881601) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1523 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,205,self._ctx) + if la_ == 1: + self.state = 1519 + self.match(VisualBasic6Parser.WS) + self.state = 1520 + self.match(VisualBasic6Parser.ACCESS) + self.state = 1521 + self.match(VisualBasic6Parser.WS) + self.state = 1522 + _la = self._input.LA(1) + if not(((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & 4398046511107) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1527 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,206,self._ctx) + if la_ == 1: + self.state = 1525 + self.match(VisualBasic6Parser.WS) + self.state = 1526 + _la = self._input.LA(1) + if not(((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & 288230376151711751) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1529 + self.match(VisualBasic6Parser.WS) + self.state = 1530 + self.match(VisualBasic6Parser.AS) + self.state = 1531 + self.match(VisualBasic6Parser.WS) + self.state = 1532 + self.valueStmt(0) + self.state = 1543 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,209,self._ctx) + if la_ == 1: + self.state = 1533 + self.match(VisualBasic6Parser.WS) + self.state = 1534 + self.match(VisualBasic6Parser.LEN) + self.state = 1536 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1535 + self.match(VisualBasic6Parser.WS) + + + self.state = 1538 + self.match(VisualBasic6Parser.EQ) + self.state = 1540 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,208,self._ctx) + if la_ == 1: + self.state = 1539 + self.match(VisualBasic6Parser.WS) + + + self.state = 1542 + self.valueStmt(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OutputListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def outputList_Expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.OutputList_ExpressionContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.OutputList_ExpressionContext,i) + + + def SEMICOLON(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.SEMICOLON) + else: + return self.getToken(VisualBasic6Parser.SEMICOLON, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_outputList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOutputList" ): + listener.enterOutputList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOutputList" ): + listener.exitOutputList(self) + + + + + def outputList(self): + + localctx = VisualBasic6Parser.OutputListContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_outputList) + self._la = 0 # Token type + try: + self.state = 1578 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,219,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1545 + self.outputList_Expression() + self.state = 1558 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,213,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1547 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1546 + self.match(VisualBasic6Parser.WS) + + + self.state = 1549 + _la = self._input.LA(1) + if not(_la==182 or _la==206): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1551 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,211,self._ctx) + if la_ == 1: + self.state = 1550 + self.match(VisualBasic6Parser.WS) + + + self.state = 1554 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,212,self._ctx) + if la_ == 1: + self.state = 1553 + self.outputList_Expression() + + + self.state = 1560 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,213,self._ctx) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1562 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,214,self._ctx) + if la_ == 1: + self.state = 1561 + self.outputList_Expression() + + + self.state = 1574 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1565 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1564 + self.match(VisualBasic6Parser.WS) + + + self.state = 1567 + _la = self._input.LA(1) + if not(_la==182 or _la==206): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1569 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,216,self._ctx) + if la_ == 1: + self.state = 1568 + self.match(VisualBasic6Parser.WS) + + + self.state = 1572 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,217,self._ctx) + if la_ == 1: + self.state = 1571 + self.outputList_Expression() + + + + else: + raise NoViableAltException(self) + self.state = 1576 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,218,self._ctx) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OutputList_ExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SPC(self): + return self.getToken(VisualBasic6Parser.SPC, 0) + + def TAB(self): + return self.getToken(VisualBasic6Parser.TAB, 0) + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_outputList_Expression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOutputList_Expression" ): + listener.enterOutputList_Expression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOutputList_Expression" ): + listener.exitOutputList_Expression(self) + + + + + def outputList_Expression(self): + + localctx = VisualBasic6Parser.OutputList_ExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_outputList_Expression) + self._la = 0 # Token type + try: + self.state = 1597 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,224,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1580 + _la = self._input.LA(1) + if not(_la==152 or _la==158): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1594 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,223,self._ctx) + if la_ == 1: + self.state = 1582 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1581 + self.match(VisualBasic6Parser.WS) + + + self.state = 1584 + self.match(VisualBasic6Parser.LPAREN) + self.state = 1586 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,221,self._ctx) + if la_ == 1: + self.state = 1585 + self.match(VisualBasic6Parser.WS) + + + self.state = 1588 + self.argsCall() + self.state = 1590 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1589 + self.match(VisualBasic6Parser.WS) + + + self.state = 1592 + self.match(VisualBasic6Parser.RPAREN) + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1596 + self.valueStmt(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrintStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PRINT(self): + return self.getToken(VisualBasic6Parser.PRINT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def outputList(self): + return self.getTypedRuleContext(VisualBasic6Parser.OutputListContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_printStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrintStmt" ): + listener.enterPrintStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrintStmt" ): + listener.exitPrintStmt(self) + + + + + def printStmt(self): + + localctx = VisualBasic6Parser.PrintStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_printStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1599 + self.match(VisualBasic6Parser.PRINT) + self.state = 1600 + self.match(VisualBasic6Parser.WS) + self.state = 1601 + self.valueStmt(0) + self.state = 1603 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1602 + self.match(VisualBasic6Parser.WS) + + + self.state = 1605 + self.match(VisualBasic6Parser.COMMA) + self.state = 1610 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,227,self._ctx) + if la_ == 1: + self.state = 1607 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,226,self._ctx) + if la_ == 1: + self.state = 1606 + self.match(VisualBasic6Parser.WS) + + + self.state = 1609 + self.outputList() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PropertyGetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PROPERTY_GET(self): + return self.getToken(VisualBasic6Parser.PROPERTY_GET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_PROPERTY(self): + return self.getToken(VisualBasic6Parser.END_PROPERTY, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_propertyGetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPropertyGetStmt" ): + listener.enterPropertyGetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPropertyGetStmt" ): + listener.exitPropertyGetStmt(self) + + + + + def propertyGetStmt(self): + + localctx = VisualBasic6Parser.PropertyGetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_propertyGetStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1615 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 1612 + self.visibility() + self.state = 1613 + self.match(VisualBasic6Parser.WS) + + + self.state = 1619 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==153: + self.state = 1617 + self.match(VisualBasic6Parser.STATIC) + self.state = 1618 + self.match(VisualBasic6Parser.WS) + + + self.state = 1621 + self.match(VisualBasic6Parser.PROPERTY_GET) + self.state = 1622 + self.match(VisualBasic6Parser.WS) + self.state = 1623 + self.ambiguousIdentifier() + self.state = 1625 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 1624 + self.typeHint() + + + self.state = 1631 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,232,self._ctx) + if la_ == 1: + self.state = 1628 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1627 + self.match(VisualBasic6Parser.WS) + + + self.state = 1630 + self.argList() + + + self.state = 1635 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1633 + self.match(VisualBasic6Parser.WS) + self.state = 1634 + self.asTypeClause() + + + self.state = 1638 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1637 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1640 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1648 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1642 + self.block() + self.state = 1644 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1643 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1646 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1650 + self.match(VisualBasic6Parser.END_PROPERTY) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PropertySetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PROPERTY_SET(self): + return self.getToken(VisualBasic6Parser.PROPERTY_SET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_PROPERTY(self): + return self.getToken(VisualBasic6Parser.END_PROPERTY, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_propertySetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPropertySetStmt" ): + listener.enterPropertySetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPropertySetStmt" ): + listener.exitPropertySetStmt(self) + + + + + def propertySetStmt(self): + + localctx = VisualBasic6Parser.PropertySetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_propertySetStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1655 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 1652 + self.visibility() + self.state = 1653 + self.match(VisualBasic6Parser.WS) + + + self.state = 1659 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==153: + self.state = 1657 + self.match(VisualBasic6Parser.STATIC) + self.state = 1658 + self.match(VisualBasic6Parser.WS) + + + self.state = 1661 + self.match(VisualBasic6Parser.PROPERTY_SET) + self.state = 1662 + self.match(VisualBasic6Parser.WS) + self.state = 1663 + self.ambiguousIdentifier() + self.state = 1668 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194 or _la==222: + self.state = 1665 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1664 + self.match(VisualBasic6Parser.WS) + + + self.state = 1667 + self.argList() + + + self.state = 1671 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1670 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1673 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1681 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1675 + self.block() + self.state = 1677 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1676 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1679 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1683 + self.match(VisualBasic6Parser.END_PROPERTY) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PropertyLetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PROPERTY_LET(self): + return self.getToken(VisualBasic6Parser.PROPERTY_LET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_PROPERTY(self): + return self.getToken(VisualBasic6Parser.END_PROPERTY, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_propertyLetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPropertyLetStmt" ): + listener.enterPropertyLetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPropertyLetStmt" ): + listener.exitPropertyLetStmt(self) + + + + + def propertyLetStmt(self): + + localctx = VisualBasic6Parser.PropertyLetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_propertyLetStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1688 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 1685 + self.visibility() + self.state = 1686 + self.match(VisualBasic6Parser.WS) + + + self.state = 1692 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==153: + self.state = 1690 + self.match(VisualBasic6Parser.STATIC) + self.state = 1691 + self.match(VisualBasic6Parser.WS) + + + self.state = 1694 + self.match(VisualBasic6Parser.PROPERTY_LET) + self.state = 1695 + self.match(VisualBasic6Parser.WS) + self.state = 1696 + self.ambiguousIdentifier() + self.state = 1701 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194 or _la==222: + self.state = 1698 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1697 + self.match(VisualBasic6Parser.WS) + + + self.state = 1700 + self.argList() + + + self.state = 1704 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1703 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1706 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1714 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 1708 + self.block() + self.state = 1710 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1709 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1712 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 1716 + self.match(VisualBasic6Parser.END_PROPERTY) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PutStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PUT(self): + return self.getToken(VisualBasic6Parser.PUT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_putStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPutStmt" ): + listener.enterPutStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPutStmt" ): + listener.exitPutStmt(self) + + + + + def putStmt(self): + + localctx = VisualBasic6Parser.PutStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_putStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1718 + self.match(VisualBasic6Parser.PUT) + self.state = 1719 + self.match(VisualBasic6Parser.WS) + self.state = 1720 + self.valueStmt(0) + self.state = 1722 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1721 + self.match(VisualBasic6Parser.WS) + + + self.state = 1724 + self.match(VisualBasic6Parser.COMMA) + self.state = 1726 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,252,self._ctx) + if la_ == 1: + self.state = 1725 + self.match(VisualBasic6Parser.WS) + + + self.state = 1729 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,253,self._ctx) + if la_ == 1: + self.state = 1728 + self.valueStmt(0) + + + self.state = 1732 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1731 + self.match(VisualBasic6Parser.WS) + + + self.state = 1734 + self.match(VisualBasic6Parser.COMMA) + self.state = 1736 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,255,self._ctx) + if la_ == 1: + self.state = 1735 + self.match(VisualBasic6Parser.WS) + + + self.state = 1738 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RaiseEventStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RAISEEVENT(self): + return self.getToken(VisualBasic6Parser.RAISEEVENT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_raiseEventStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRaiseEventStmt" ): + listener.enterRaiseEventStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRaiseEventStmt" ): + listener.exitRaiseEventStmt(self) + + + + + def raiseEventStmt(self): + + localctx = VisualBasic6Parser.RaiseEventStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_raiseEventStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1740 + self.match(VisualBasic6Parser.RAISEEVENT) + self.state = 1741 + self.match(VisualBasic6Parser.WS) + self.state = 1742 + self.ambiguousIdentifier() + self.state = 1757 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,260,self._ctx) + if la_ == 1: + self.state = 1744 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1743 + self.match(VisualBasic6Parser.WS) + + + self.state = 1746 + self.match(VisualBasic6Parser.LPAREN) + self.state = 1748 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,257,self._ctx) + if la_ == 1: + self.state = 1747 + self.match(VisualBasic6Parser.WS) + + + self.state = 1754 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 365073044793720799) != 0) or ((((_la - 194)) & ~0x3f) == 0 and ((1 << (_la - 194)) & 289386629) != 0): + self.state = 1750 + self.argsCall() + self.state = 1752 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1751 + self.match(VisualBasic6Parser.WS) + + + + + self.state = 1756 + self.match(VisualBasic6Parser.RPAREN) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RandomizeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RANDOMIZE(self): + return self.getToken(VisualBasic6Parser.RANDOMIZE, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_randomizeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRandomizeStmt" ): + listener.enterRandomizeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRandomizeStmt" ): + listener.exitRandomizeStmt(self) + + + + + def randomizeStmt(self): + + localctx = VisualBasic6Parser.RandomizeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_randomizeStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1759 + self.match(VisualBasic6Parser.RANDOMIZE) + self.state = 1762 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,261,self._ctx) + if la_ == 1: + self.state = 1760 + self.match(VisualBasic6Parser.WS) + self.state = 1761 + self.valueStmt(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RedimStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REDIM(self): + return self.getToken(VisualBasic6Parser.REDIM, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def redimSubStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.RedimSubStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.RedimSubStmtContext,i) + + + def PRESERVE(self): + return self.getToken(VisualBasic6Parser.PRESERVE, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_redimStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRedimStmt" ): + listener.enterRedimStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRedimStmt" ): + listener.exitRedimStmt(self) + + + + + def redimStmt(self): + + localctx = VisualBasic6Parser.RedimStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_redimStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1764 + self.match(VisualBasic6Parser.REDIM) + self.state = 1765 + self.match(VisualBasic6Parser.WS) + self.state = 1768 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,262,self._ctx) + if la_ == 1: + self.state = 1766 + self.match(VisualBasic6Parser.PRESERVE) + self.state = 1767 + self.match(VisualBasic6Parser.WS) + + + self.state = 1770 + self.redimSubStmt() + self.state = 1781 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,265,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1772 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1771 + self.match(VisualBasic6Parser.WS) + + + self.state = 1774 + self.match(VisualBasic6Parser.COMMA) + self.state = 1776 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,264,self._ctx) + if la_ == 1: + self.state = 1775 + self.match(VisualBasic6Parser.WS) + + + self.state = 1778 + self.redimSubStmt() + self.state = 1783 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,265,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RedimSubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def subscripts(self): + return self.getTypedRuleContext(VisualBasic6Parser.SubscriptsContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_redimSubStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRedimSubStmt" ): + listener.enterRedimSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRedimSubStmt" ): + listener.exitRedimSubStmt(self) + + + + + def redimSubStmt(self): + + localctx = VisualBasic6Parser.RedimSubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_redimSubStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1784 + self.implicitCallStmt_InStmt() + self.state = 1786 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1785 + self.match(VisualBasic6Parser.WS) + + + self.state = 1788 + self.match(VisualBasic6Parser.LPAREN) + self.state = 1790 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,267,self._ctx) + if la_ == 1: + self.state = 1789 + self.match(VisualBasic6Parser.WS) + + + self.state = 1792 + self.subscripts() + self.state = 1794 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1793 + self.match(VisualBasic6Parser.WS) + + + self.state = 1796 + self.match(VisualBasic6Parser.RPAREN) + self.state = 1799 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,269,self._ctx) + if la_ == 1: + self.state = 1797 + self.match(VisualBasic6Parser.WS) + self.state = 1798 + self.asTypeClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESET(self): + return self.getToken(VisualBasic6Parser.RESET, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_resetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResetStmt" ): + listener.enterResetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResetStmt" ): + listener.exitResetStmt(self) + + + + + def resetStmt(self): + + localctx = VisualBasic6Parser.ResetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 174, self.RULE_resetStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1801 + self.match(VisualBasic6Parser.RESET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResumeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESUME(self): + return self.getToken(VisualBasic6Parser.RESUME, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def NEXT(self): + return self.getToken(VisualBasic6Parser.NEXT, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_resumeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResumeStmt" ): + listener.enterResumeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResumeStmt" ): + listener.exitResumeStmt(self) + + + + + def resumeStmt(self): + + localctx = VisualBasic6Parser.ResumeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 176, self.RULE_resumeStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1803 + self.match(VisualBasic6Parser.RESUME) + self.state = 1809 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,271,self._ctx) + if la_ == 1: + self.state = 1804 + self.match(VisualBasic6Parser.WS) + self.state = 1807 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,270,self._ctx) + if la_ == 1: + self.state = 1805 + self.match(VisualBasic6Parser.NEXT) + pass + + elif la_ == 2: + self.state = 1806 + self.ambiguousIdentifier() + pass + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReturnStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RETURN(self): + return self.getToken(VisualBasic6Parser.RETURN, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_returnStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReturnStmt" ): + listener.enterReturnStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReturnStmt" ): + listener.exitReturnStmt(self) + + + + + def returnStmt(self): + + localctx = VisualBasic6Parser.ReturnStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_returnStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1811 + self.match(VisualBasic6Parser.RETURN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RmdirStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RMDIR(self): + return self.getToken(VisualBasic6Parser.RMDIR, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_rmdirStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRmdirStmt" ): + listener.enterRmdirStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRmdirStmt" ): + listener.exitRmdirStmt(self) + + + + + def rmdirStmt(self): + + localctx = VisualBasic6Parser.RmdirStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_rmdirStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1813 + self.match(VisualBasic6Parser.RMDIR) + self.state = 1814 + self.match(VisualBasic6Parser.WS) + self.state = 1815 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RsetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RSET(self): + return self.getToken(VisualBasic6Parser.RSET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_rsetStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRsetStmt" ): + listener.enterRsetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRsetStmt" ): + listener.exitRsetStmt(self) + + + + + def rsetStmt(self): + + localctx = VisualBasic6Parser.RsetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 182, self.RULE_rsetStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1817 + self.match(VisualBasic6Parser.RSET) + self.state = 1818 + self.match(VisualBasic6Parser.WS) + self.state = 1819 + self.implicitCallStmt_InStmt() + self.state = 1821 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1820 + self.match(VisualBasic6Parser.WS) + + + self.state = 1823 + self.match(VisualBasic6Parser.EQ) + self.state = 1825 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,273,self._ctx) + if la_ == 1: + self.state = 1824 + self.match(VisualBasic6Parser.WS) + + + self.state = 1827 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SavepictureStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SAVEPICTURE(self): + return self.getToken(VisualBasic6Parser.SAVEPICTURE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_savepictureStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSavepictureStmt" ): + listener.enterSavepictureStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSavepictureStmt" ): + listener.exitSavepictureStmt(self) + + + + + def savepictureStmt(self): + + localctx = VisualBasic6Parser.SavepictureStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_savepictureStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1829 + self.match(VisualBasic6Parser.SAVEPICTURE) + self.state = 1830 + self.match(VisualBasic6Parser.WS) + self.state = 1831 + self.valueStmt(0) + self.state = 1833 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1832 + self.match(VisualBasic6Parser.WS) + + + self.state = 1835 + self.match(VisualBasic6Parser.COMMA) + self.state = 1837 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,275,self._ctx) + if la_ == 1: + self.state = 1836 + self.match(VisualBasic6Parser.WS) + + + self.state = 1839 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SaveSettingStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SAVESETTING(self): + return self.getToken(VisualBasic6Parser.SAVESETTING, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_saveSettingStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSaveSettingStmt" ): + listener.enterSaveSettingStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSaveSettingStmt" ): + listener.exitSaveSettingStmt(self) + + + + + def saveSettingStmt(self): + + localctx = VisualBasic6Parser.SaveSettingStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_saveSettingStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1841 + self.match(VisualBasic6Parser.SAVESETTING) + self.state = 1842 + self.match(VisualBasic6Parser.WS) + self.state = 1843 + self.valueStmt(0) + self.state = 1845 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1844 + self.match(VisualBasic6Parser.WS) + + + self.state = 1847 + self.match(VisualBasic6Parser.COMMA) + self.state = 1849 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,277,self._ctx) + if la_ == 1: + self.state = 1848 + self.match(VisualBasic6Parser.WS) + + + self.state = 1851 + self.valueStmt(0) + self.state = 1853 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1852 + self.match(VisualBasic6Parser.WS) + + + self.state = 1855 + self.match(VisualBasic6Parser.COMMA) + self.state = 1857 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,279,self._ctx) + if la_ == 1: + self.state = 1856 + self.match(VisualBasic6Parser.WS) + + + self.state = 1859 + self.valueStmt(0) + self.state = 1861 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1860 + self.match(VisualBasic6Parser.WS) + + + self.state = 1863 + self.match(VisualBasic6Parser.COMMA) + self.state = 1865 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,281,self._ctx) + if la_ == 1: + self.state = 1864 + self.match(VisualBasic6Parser.WS) + + + self.state = 1867 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SeekStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEEK(self): + return self.getToken(VisualBasic6Parser.SEEK, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_seekStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSeekStmt" ): + listener.enterSeekStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSeekStmt" ): + listener.exitSeekStmt(self) + + + + + def seekStmt(self): + + localctx = VisualBasic6Parser.SeekStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 188, self.RULE_seekStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1869 + self.match(VisualBasic6Parser.SEEK) + self.state = 1870 + self.match(VisualBasic6Parser.WS) + self.state = 1871 + self.valueStmt(0) + self.state = 1873 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1872 + self.match(VisualBasic6Parser.WS) + + + self.state = 1875 + self.match(VisualBasic6Parser.COMMA) + self.state = 1877 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,283,self._ctx) + if la_ == 1: + self.state = 1876 + self.match(VisualBasic6Parser.WS) + + + self.state = 1879 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectCaseStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SELECT(self): + return self.getToken(VisualBasic6Parser.SELECT, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def CASE(self): + return self.getToken(VisualBasic6Parser.CASE, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def END_SELECT(self): + return self.getToken(VisualBasic6Parser.END_SELECT, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def sC_Case(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.SC_CaseContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.SC_CaseContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_selectCaseStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectCaseStmt" ): + listener.enterSelectCaseStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectCaseStmt" ): + listener.exitSelectCaseStmt(self) + + + + + def selectCaseStmt(self): + + localctx = VisualBasic6Parser.SelectCaseStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_selectCaseStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1881 + self.match(VisualBasic6Parser.SELECT) + self.state = 1882 + self.match(VisualBasic6Parser.WS) + self.state = 1883 + self.match(VisualBasic6Parser.CASE) + self.state = 1884 + self.match(VisualBasic6Parser.WS) + self.state = 1885 + self.valueStmt(0) + self.state = 1887 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1886 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1889 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 1894 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==18: + self.state = 1891 + self.sC_Case() + self.state = 1896 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1898 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1897 + self.match(VisualBasic6Parser.WS) + + + self.state = 1900 + self.match(VisualBasic6Parser.END_SELECT) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SC_CaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CASE(self): + return self.getToken(VisualBasic6Parser.CASE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def sC_Cond(self): + return self.getTypedRuleContext(VisualBasic6Parser.SC_CondContext,0) + + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def COLON(self): + return self.getToken(VisualBasic6Parser.COLON, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_sC_Case + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSC_Case" ): + listener.enterSC_Case(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSC_Case" ): + listener.exitSC_Case(self) + + + + + def sC_Case(self): + + localctx = VisualBasic6Parser.SC_CaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 192, self.RULE_sC_Case) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1902 + self.match(VisualBasic6Parser.CASE) + self.state = 1903 + self.match(VisualBasic6Parser.WS) + self.state = 1904 + self.sC_Cond() + self.state = 1906 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,287,self._ctx) + if la_ == 1: + self.state = 1905 + self.match(VisualBasic6Parser.WS) + + + self.state = 1922 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,291,self._ctx) + if la_ == 1: + self.state = 1909 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==181: + self.state = 1908 + self.match(VisualBasic6Parser.COLON) + + + self.state = 1914 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==220: + self.state = 1911 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1916 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + self.state = 1918 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1917 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1920 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + pass + + + self.state = 1930 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,293,self._ctx) + if la_ == 1: + self.state = 1924 + self.block() + self.state = 1926 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1925 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 1928 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SC_CondContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_sC_Cond + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class CaseCondExprContext(SC_CondContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.SC_CondContext + super().__init__(parser) + self.copyFrom(ctx) + + def sC_CondExpr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.SC_CondExprContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.SC_CondExprContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseCondExpr" ): + listener.enterCaseCondExpr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseCondExpr" ): + listener.exitCaseCondExpr(self) + + + class CaseCondElseContext(SC_CondContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.SC_CondContext + super().__init__(parser) + self.copyFrom(ctx) + + def ELSE(self): + return self.getToken(VisualBasic6Parser.ELSE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseCondElse" ): + listener.enterCaseCondElse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseCondElse" ): + listener.exitCaseCondElse(self) + + + + def sC_Cond(self): + + localctx = VisualBasic6Parser.SC_CondContext(self, self._ctx, self.state) + self.enterRule(localctx, 194, self.RULE_sC_Cond) + self._la = 0 # Token type + try: + self.state = 1947 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,297,self._ctx) + if la_ == 1: + localctx = VisualBasic6Parser.CaseCondElseContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1932 + self.match(VisualBasic6Parser.ELSE) + pass + + elif la_ == 2: + localctx = VisualBasic6Parser.CaseCondExprContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1933 + self.sC_CondExpr() + self.state = 1944 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,296,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1935 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1934 + self.match(VisualBasic6Parser.WS) + + + self.state = 1937 + self.match(VisualBasic6Parser.COMMA) + self.state = 1939 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,295,self._ctx) + if la_ == 1: + self.state = 1938 + self.match(VisualBasic6Parser.WS) + + + self.state = 1941 + self.sC_CondExpr() + self.state = 1946 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,296,self._ctx) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SC_CondExprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_sC_CondExpr + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class CaseCondExprValueContext(SC_CondExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.SC_CondExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseCondExprValue" ): + listener.enterCaseCondExprValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseCondExprValue" ): + listener.exitCaseCondExprValue(self) + + + class CaseCondExprIsContext(SC_CondExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.SC_CondExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def IS(self): + return self.getToken(VisualBasic6Parser.IS, 0) + def comparisonOperator(self): + return self.getTypedRuleContext(VisualBasic6Parser.ComparisonOperatorContext,0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseCondExprIs" ): + listener.enterCaseCondExprIs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseCondExprIs" ): + listener.exitCaseCondExprIs(self) + + + class CaseCondExprToContext(SC_CondExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.SC_CondExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseCondExprTo" ): + listener.enterCaseCondExprTo(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseCondExprTo" ): + listener.exitCaseCondExprTo(self) + + + + def sC_CondExpr(self): + + localctx = VisualBasic6Parser.SC_CondExprContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_sC_CondExpr) + self._la = 0 # Token type + try: + self.state = 1966 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,300,self._ctx) + if la_ == 1: + localctx = VisualBasic6Parser.CaseCondExprIsContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1949 + self.match(VisualBasic6Parser.IS) + self.state = 1951 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1950 + self.match(VisualBasic6Parser.WS) + + + self.state = 1953 + self.comparisonOperator() + self.state = 1955 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,299,self._ctx) + if la_ == 1: + self.state = 1954 + self.match(VisualBasic6Parser.WS) + + + self.state = 1957 + self.valueStmt(0) + pass + + elif la_ == 2: + localctx = VisualBasic6Parser.CaseCondExprValueContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1959 + self.valueStmt(0) + pass + + elif la_ == 3: + localctx = VisualBasic6Parser.CaseCondExprToContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1960 + self.valueStmt(0) + self.state = 1961 + self.match(VisualBasic6Parser.WS) + self.state = 1962 + self.match(VisualBasic6Parser.TO) + self.state = 1963 + self.match(VisualBasic6Parser.WS) + self.state = 1964 + self.valueStmt(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SendkeysStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SENDKEYS(self): + return self.getToken(VisualBasic6Parser.SENDKEYS, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_sendkeysStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSendkeysStmt" ): + listener.enterSendkeysStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSendkeysStmt" ): + listener.exitSendkeysStmt(self) + + + + + def sendkeysStmt(self): + + localctx = VisualBasic6Parser.SendkeysStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_sendkeysStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1968 + self.match(VisualBasic6Parser.SENDKEYS) + self.state = 1969 + self.match(VisualBasic6Parser.WS) + self.state = 1970 + self.valueStmt(0) + self.state = 1979 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,303,self._ctx) + if la_ == 1: + self.state = 1972 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1971 + self.match(VisualBasic6Parser.WS) + + + self.state = 1974 + self.match(VisualBasic6Parser.COMMA) + self.state = 1976 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,302,self._ctx) + if la_ == 1: + self.state = 1975 + self.match(VisualBasic6Parser.WS) + + + self.state = 1978 + self.valueStmt(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetattrStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SETATTR(self): + return self.getToken(VisualBasic6Parser.SETATTR, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_setattrStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetattrStmt" ): + listener.enterSetattrStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetattrStmt" ): + listener.exitSetattrStmt(self) + + + + + def setattrStmt(self): + + localctx = VisualBasic6Parser.SetattrStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_setattrStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1981 + self.match(VisualBasic6Parser.SETATTR) + self.state = 1982 + self.match(VisualBasic6Parser.WS) + self.state = 1983 + self.valueStmt(0) + self.state = 1985 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1984 + self.match(VisualBasic6Parser.WS) + + + self.state = 1987 + self.match(VisualBasic6Parser.COMMA) + self.state = 1989 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,305,self._ctx) + if la_ == 1: + self.state = 1988 + self.match(VisualBasic6Parser.WS) + + + self.state = 1991 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SET(self): + return self.getToken(VisualBasic6Parser.SET, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_setStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetStmt" ): + listener.enterSetStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetStmt" ): + listener.exitSetStmt(self) + + + + + def setStmt(self): + + localctx = VisualBasic6Parser.SetStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_setStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1993 + self.match(VisualBasic6Parser.SET) + self.state = 1994 + self.match(VisualBasic6Parser.WS) + self.state = 1995 + self.implicitCallStmt_InStmt() + self.state = 1997 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 1996 + self.match(VisualBasic6Parser.WS) + + + self.state = 1999 + self.match(VisualBasic6Parser.EQ) + self.state = 2001 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,307,self._ctx) + if la_ == 1: + self.state = 2000 + self.match(VisualBasic6Parser.WS) + + + self.state = 2003 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StopStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STOP(self): + return self.getToken(VisualBasic6Parser.STOP, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_stopStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStopStmt" ): + listener.enterStopStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStopStmt" ): + listener.exitStopStmt(self) + + + + + def stopStmt(self): + + localctx = VisualBasic6Parser.StopStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_stopStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2005 + self.match(VisualBasic6Parser.STOP) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SUB(self): + return self.getToken(VisualBasic6Parser.SUB, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_SUB(self): + return self.getToken(VisualBasic6Parser.END_SUB, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def argList(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgListContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_subStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubStmt" ): + listener.enterSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubStmt" ): + listener.exitSubStmt(self) + + + + + def subStmt(self): + + localctx = VisualBasic6Parser.SubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_subStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2010 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 2007 + self.visibility() + self.state = 2008 + self.match(VisualBasic6Parser.WS) + + + self.state = 2014 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==153: + self.state = 2012 + self.match(VisualBasic6Parser.STATIC) + self.state = 2013 + self.match(VisualBasic6Parser.WS) + + + self.state = 2016 + self.match(VisualBasic6Parser.SUB) + self.state = 2017 + self.match(VisualBasic6Parser.WS) + self.state = 2018 + self.ambiguousIdentifier() + self.state = 2023 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==194 or _la==222: + self.state = 2020 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2019 + self.match(VisualBasic6Parser.WS) + + + self.state = 2022 + self.argList() + + + self.state = 2026 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2025 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2028 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 2036 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 2030 + self.block() + self.state = 2032 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2031 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2034 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 2038 + self.match(VisualBasic6Parser.END_SUB) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TimeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TIME(self): + return self.getToken(VisualBasic6Parser.TIME, 0) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_timeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTimeStmt" ): + listener.enterTimeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTimeStmt" ): + listener.exitTimeStmt(self) + + + + + def timeStmt(self): + + localctx = VisualBasic6Parser.TimeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_timeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2040 + self.match(VisualBasic6Parser.TIME) + self.state = 2042 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2041 + self.match(VisualBasic6Parser.WS) + + + self.state = 2044 + self.match(VisualBasic6Parser.EQ) + self.state = 2046 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,316,self._ctx) + if la_ == 1: + self.state = 2045 + self.match(VisualBasic6Parser.WS) + + + self.state = 2048 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TypeStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TYPE(self): + return self.getToken(VisualBasic6Parser.TYPE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def END_TYPE(self): + return self.getToken(VisualBasic6Parser.END_TYPE, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def typeStmt_Element(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.TypeStmt_ElementContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.TypeStmt_ElementContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_typeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTypeStmt" ): + listener.enterTypeStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTypeStmt" ): + listener.exitTypeStmt(self) + + + + + def typeStmt(self): + + localctx = VisualBasic6Parser.TypeStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_typeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2053 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0): + self.state = 2050 + self.visibility() + self.state = 2051 + self.match(VisualBasic6Parser.WS) + + + self.state = 2055 + self.match(VisualBasic6Parser.TYPE) + self.state = 2056 + self.match(VisualBasic6Parser.WS) + self.state = 2057 + self.ambiguousIdentifier() + self.state = 2059 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2058 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2061 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 2066 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 281474976710623) != 0) or _la==207 or _la==218: + self.state = 2063 + self.typeStmt_Element() + self.state = 2068 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2069 + self.match(VisualBasic6Parser.END_TYPE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TypeStmt_ElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def subscripts(self): + return self.getTypedRuleContext(VisualBasic6Parser.SubscriptsContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_typeStmt_Element + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTypeStmt_Element" ): + listener.enterTypeStmt_Element(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTypeStmt_Element" ): + listener.exitTypeStmt_Element(self) + + + + + def typeStmt_Element(self): + + localctx = VisualBasic6Parser.TypeStmt_ElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_typeStmt_Element) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2071 + self.ambiguousIdentifier() + self.state = 2086 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,324,self._ctx) + if la_ == 1: + self.state = 2073 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2072 + self.match(VisualBasic6Parser.WS) + + + self.state = 2075 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2080 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,322,self._ctx) + if la_ == 1: + self.state = 2077 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,321,self._ctx) + if la_ == 1: + self.state = 2076 + self.match(VisualBasic6Parser.WS) + + + self.state = 2079 + self.subscripts() + + + self.state = 2083 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2082 + self.match(VisualBasic6Parser.WS) + + + self.state = 2085 + self.match(VisualBasic6Parser.RPAREN) + + + self.state = 2090 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2088 + self.match(VisualBasic6Parser.WS) + self.state = 2089 + self.asTypeClause() + + + self.state = 2093 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2092 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2095 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TypeOfStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TYPEOF(self): + return self.getToken(VisualBasic6Parser.TYPEOF, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def IS(self): + return self.getToken(VisualBasic6Parser.IS, 0) + + def type_(self): + return self.getTypedRuleContext(VisualBasic6Parser.Type_Context,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_typeOfStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTypeOfStmt" ): + listener.enterTypeOfStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTypeOfStmt" ): + listener.exitTypeOfStmt(self) + + + + + def typeOfStmt(self): + + localctx = VisualBasic6Parser.TypeOfStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_typeOfStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2097 + self.match(VisualBasic6Parser.TYPEOF) + self.state = 2098 + self.match(VisualBasic6Parser.WS) + self.state = 2099 + self.valueStmt(0) + self.state = 2104 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,327,self._ctx) + if la_ == 1: + self.state = 2100 + self.match(VisualBasic6Parser.WS) + self.state = 2101 + self.match(VisualBasic6Parser.IS) + self.state = 2102 + self.match(VisualBasic6Parser.WS) + self.state = 2103 + self.type_() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnloadStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def UNLOAD(self): + return self.getToken(VisualBasic6Parser.UNLOAD, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_unloadStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnloadStmt" ): + listener.enterUnloadStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnloadStmt" ): + listener.exitUnloadStmt(self) + + + + + def unloadStmt(self): + + localctx = VisualBasic6Parser.UnloadStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_unloadStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2106 + self.match(VisualBasic6Parser.UNLOAD) + self.state = 2107 + self.match(VisualBasic6Parser.WS) + self.state = 2108 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnlockStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def UNLOCK(self): + return self.getToken(VisualBasic6Parser.UNLOCK, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_unlockStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnlockStmt" ): + listener.enterUnlockStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnlockStmt" ): + listener.exitUnlockStmt(self) + + + + + def unlockStmt(self): + + localctx = VisualBasic6Parser.UnlockStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_unlockStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2110 + self.match(VisualBasic6Parser.UNLOCK) + self.state = 2111 + self.match(VisualBasic6Parser.WS) + self.state = 2112 + self.valueStmt(0) + self.state = 2127 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,331,self._ctx) + if la_ == 1: + self.state = 2114 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2113 + self.match(VisualBasic6Parser.WS) + + + self.state = 2116 + self.match(VisualBasic6Parser.COMMA) + self.state = 2118 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,329,self._ctx) + if la_ == 1: + self.state = 2117 + self.match(VisualBasic6Parser.WS) + + + self.state = 2120 + self.valueStmt(0) + self.state = 2125 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,330,self._ctx) + if la_ == 1: + self.state = 2121 + self.match(VisualBasic6Parser.WS) + self.state = 2122 + self.match(VisualBasic6Parser.TO) + self.state = 2123 + self.match(VisualBasic6Parser.WS) + self.state = 2124 + self.valueStmt(0) + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ValueStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_valueStmt + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class VsAssignContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + def ASSIGN(self): + return self.getToken(VisualBasic6Parser.ASSIGN, 0) + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsAssign" ): + listener.enterVsAssign(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsAssign" ): + listener.exitVsAssign(self) + + + class VsNotContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def NOT(self): + return self.getToken(VisualBasic6Parser.NOT, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsNot" ): + listener.enterVsNot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsNot" ): + listener.exitVsNot(self) + + + class VsStructContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsStruct" ): + listener.enterVsStruct(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsStruct" ): + listener.exitVsStruct(self) + + + class VsMultDivContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def MULT(self): + return self.getToken(VisualBasic6Parser.MULT, 0) + def DIV(self): + return self.getToken(VisualBasic6Parser.DIV, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsMultDiv" ): + listener.enterVsMultDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsMultDiv" ): + listener.exitVsMultDiv(self) + + + class VsTypeOfContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def typeOfStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeOfStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsTypeOf" ): + listener.enterVsTypeOf(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsTypeOf" ): + listener.exitVsTypeOf(self) + + + class VsICSContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsICS" ): + listener.enterVsICS(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsICS" ): + listener.exitVsICS(self) + + + class VsXorContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def XOR(self): + return self.getToken(VisualBasic6Parser.XOR, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsXor" ): + listener.enterVsXor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsXor" ): + listener.exitVsXor(self) + + + class VsAddSubContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def PLUS(self): + return self.getToken(VisualBasic6Parser.PLUS, 0) + def MINUS(self): + return self.getToken(VisualBasic6Parser.MINUS, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsAddSub" ): + listener.enterVsAddSub(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsAddSub" ): + listener.exitVsAddSub(self) + + + class VsAndContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def AND(self): + return self.getToken(VisualBasic6Parser.AND, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsAnd" ): + listener.enterVsAnd(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsAnd" ): + listener.exitVsAnd(self) + + + class VsPowContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def POW(self): + return self.getToken(VisualBasic6Parser.POW, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsPow" ): + listener.enterVsPow(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsPow" ): + listener.exitVsPow(self) + + + class VsModContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def MOD(self): + return self.getToken(VisualBasic6Parser.MOD, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsMod" ): + listener.enterVsMod(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsMod" ): + listener.exitVsMod(self) + + + class VsAmpContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def AMPERSAND(self): + return self.getToken(VisualBasic6Parser.AMPERSAND, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsAmp" ): + listener.enterVsAmp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsAmp" ): + listener.exitVsAmp(self) + + + class VsAddressOfContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def ADDRESSOF(self): + return self.getToken(VisualBasic6Parser.ADDRESSOF, 0) + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsAddressOf" ): + listener.enterVsAddressOf(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsAddressOf" ): + listener.exitVsAddressOf(self) + + + class VsNewContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def NEW(self): + return self.getToken(VisualBasic6Parser.NEW, 0) + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsNew" ): + listener.enterVsNew(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsNew" ): + listener.exitVsNew(self) + + + class VsPlusMinusContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + def PLUS(self): + return self.getToken(VisualBasic6Parser.PLUS, 0) + def MINUS(self): + return self.getToken(VisualBasic6Parser.MINUS, 0) + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsPlusMinus" ): + listener.enterVsPlusMinus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsPlusMinus" ): + listener.exitVsPlusMinus(self) + + + class VsIDivContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def IDIV(self): + return self.getToken(VisualBasic6Parser.IDIV, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsIDiv" ): + listener.enterVsIDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsIDiv" ): + listener.exitVsIDiv(self) + + + class VsOrContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def OR(self): + return self.getToken(VisualBasic6Parser.OR, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsOr" ): + listener.enterVsOr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsOr" ): + listener.exitVsOr(self) + + + class VsLiteralContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def literal(self): + return self.getTypedRuleContext(VisualBasic6Parser.LiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsLiteral" ): + listener.enterVsLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsLiteral" ): + listener.exitVsLiteral(self) + + + class VsEqvContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def EQV(self): + return self.getToken(VisualBasic6Parser.EQV, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsEqv" ): + listener.enterVsEqv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsEqv" ): + listener.exitVsEqv(self) + + + class VsImpContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def IMP(self): + return self.getToken(VisualBasic6Parser.IMP, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsImp" ): + listener.enterVsImp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsImp" ): + listener.exitVsImp(self) + + + class VsCompContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + def NEQ(self): + return self.getToken(VisualBasic6Parser.NEQ, 0) + def LT(self): + return self.getToken(VisualBasic6Parser.LT, 0) + def GT(self): + return self.getToken(VisualBasic6Parser.GT, 0) + def LEQ(self): + return self.getToken(VisualBasic6Parser.LEQ, 0) + def GEQ(self): + return self.getToken(VisualBasic6Parser.GEQ, 0) + def LIKE(self): + return self.getToken(VisualBasic6Parser.LIKE, 0) + def IS(self): + return self.getToken(VisualBasic6Parser.IS, 0) + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsComp" ): + listener.enterVsComp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsComp" ): + listener.exitVsComp(self) + + + class VsMidContext(ValueStmtContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a VisualBasic6Parser.ValueStmtContext + super().__init__(parser) + self.copyFrom(ctx) + + def midStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.MidStmtContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVsMid" ): + listener.enterVsMid(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVsMid" ): + listener.exitVsMid(self) + + + + def valueStmt(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = VisualBasic6Parser.ValueStmtContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 220 + self.enterRecursionRule(localctx, 220, self.RULE_valueStmt, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2193 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,343,self._ctx) + if la_ == 1: + localctx = VisualBasic6Parser.VsLiteralContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 2130 + self.literal() + pass + + elif la_ == 2: + localctx = VisualBasic6Parser.VsStructContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2131 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2133 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,332,self._ctx) + if la_ == 1: + self.state = 2132 + self.match(VisualBasic6Parser.WS) + + + self.state = 2135 + self.valueStmt(0) + self.state = 2146 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,335,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2137 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2136 + self.match(VisualBasic6Parser.WS) + + + self.state = 2139 + self.match(VisualBasic6Parser.COMMA) + self.state = 2141 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,334,self._ctx) + if la_ == 1: + self.state = 2140 + self.match(VisualBasic6Parser.WS) + + + self.state = 2143 + self.valueStmt(0) + self.state = 2148 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,335,self._ctx) + + self.state = 2150 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2149 + self.match(VisualBasic6Parser.WS) + + + self.state = 2152 + self.match(VisualBasic6Parser.RPAREN) + pass + + elif la_ == 3: + localctx = VisualBasic6Parser.VsNewContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2154 + self.match(VisualBasic6Parser.NEW) + self.state = 2155 + self.match(VisualBasic6Parser.WS) + self.state = 2156 + self.valueStmt(20) + pass + + elif la_ == 4: + localctx = VisualBasic6Parser.VsTypeOfContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2157 + self.typeOfStmt() + pass + + elif la_ == 5: + localctx = VisualBasic6Parser.VsAddressOfContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2158 + self.match(VisualBasic6Parser.ADDRESSOF) + self.state = 2159 + self.match(VisualBasic6Parser.WS) + self.state = 2160 + self.valueStmt(18) + pass + + elif la_ == 6: + localctx = VisualBasic6Parser.VsAssignContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2161 + self.implicitCallStmt_InStmt() + self.state = 2163 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2162 + self.match(VisualBasic6Parser.WS) + + + self.state = 2165 + self.match(VisualBasic6Parser.ASSIGN) + self.state = 2167 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,338,self._ctx) + if la_ == 1: + self.state = 2166 + self.match(VisualBasic6Parser.WS) + + + self.state = 2169 + self.valueStmt(17) + pass + + elif la_ == 7: + localctx = VisualBasic6Parser.VsPlusMinusContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2171 + _la = self._input.LA(1) + if not(_la==196 or _la==201): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2173 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,339,self._ctx) + if la_ == 1: + self.state = 2172 + self.match(VisualBasic6Parser.WS) + + + self.state = 2175 + self.valueStmt(15) + pass + + elif la_ == 8: + localctx = VisualBasic6Parser.VsNotContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2176 + self.match(VisualBasic6Parser.NOT) + self.state = 2189 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [222]: + self.state = 2177 + self.match(VisualBasic6Parser.WS) + self.state = 2178 + self.valueStmt(0) + pass + elif token in [194]: + self.state = 2179 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2181 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,340,self._ctx) + if la_ == 1: + self.state = 2180 + self.match(VisualBasic6Parser.WS) + + + self.state = 2183 + self.valueStmt(0) + self.state = 2185 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2184 + self.match(VisualBasic6Parser.WS) + + + self.state = 2187 + self.match(VisualBasic6Parser.RPAREN) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 9: + localctx = VisualBasic6Parser.VsICSContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2191 + self.implicitCallStmt_InStmt() + pass + + elif la_ == 10: + localctx = VisualBasic6Parser.VsMidContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2192 + self.midStmt() + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 2305 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,369,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2303 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,368,self._ctx) + if la_ == 1: + localctx = VisualBasic6Parser.VsPowContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2195 + if not self.precpred(self._ctx, 16): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 16)") + self.state = 2197 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2196 + self.match(VisualBasic6Parser.WS) + + + self.state = 2199 + self.match(VisualBasic6Parser.POW) + self.state = 2201 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,345,self._ctx) + if la_ == 1: + self.state = 2200 + self.match(VisualBasic6Parser.WS) + + + self.state = 2203 + self.valueStmt(17) + pass + + elif la_ == 2: + localctx = VisualBasic6Parser.VsMultDivContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2204 + if not self.precpred(self._ctx, 14): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 14)") + self.state = 2206 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2205 + self.match(VisualBasic6Parser.WS) + + + self.state = 2208 + _la = self._input.LA(1) + if not(_la==184 or _la==198): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2210 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,347,self._ctx) + if la_ == 1: + self.state = 2209 + self.match(VisualBasic6Parser.WS) + + + self.state = 2212 + self.valueStmt(15) + pass + + elif la_ == 3: + localctx = VisualBasic6Parser.VsIDivContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2213 + if not self.precpred(self._ctx, 13): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 13)") + self.state = 2215 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2214 + self.match(VisualBasic6Parser.WS) + + + self.state = 2217 + self.match(VisualBasic6Parser.IDIV) + self.state = 2219 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,349,self._ctx) + if la_ == 1: + self.state = 2218 + self.match(VisualBasic6Parser.WS) + + + self.state = 2221 + self.valueStmt(14) + pass + + elif la_ == 4: + localctx = VisualBasic6Parser.VsModContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2222 + if not self.precpred(self._ctx, 12): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") + self.state = 2224 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2223 + self.match(VisualBasic6Parser.WS) + + + self.state = 2226 + self.match(VisualBasic6Parser.MOD) + self.state = 2228 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,351,self._ctx) + if la_ == 1: + self.state = 2227 + self.match(VisualBasic6Parser.WS) + + + self.state = 2230 + self.valueStmt(13) + pass + + elif la_ == 5: + localctx = VisualBasic6Parser.VsAddSubContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2231 + if not self.precpred(self._ctx, 11): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") + self.state = 2233 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2232 + self.match(VisualBasic6Parser.WS) + + + self.state = 2235 + _la = self._input.LA(1) + if not(_la==196 or _la==201): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2237 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,353,self._ctx) + if la_ == 1: + self.state = 2236 + self.match(VisualBasic6Parser.WS) + + + self.state = 2239 + self.valueStmt(12) + pass + + elif la_ == 6: + localctx = VisualBasic6Parser.VsAmpContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2240 + if not self.precpred(self._ctx, 10): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") + self.state = 2242 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2241 + self.match(VisualBasic6Parser.WS) + + + self.state = 2244 + self.match(VisualBasic6Parser.AMPERSAND) + self.state = 2246 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,355,self._ctx) + if la_ == 1: + self.state = 2245 + self.match(VisualBasic6Parser.WS) + + + self.state = 2248 + self.valueStmt(11) + pass + + elif la_ == 7: + localctx = VisualBasic6Parser.VsCompContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2249 + if not self.precpred(self._ctx, 9): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") + self.state = 2251 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2250 + self.match(VisualBasic6Parser.WS) + + + self.state = 2253 + _la = self._input.LA(1) + if not(_la==80 or _la==90 or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & 4397) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2255 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,357,self._ctx) + if la_ == 1: + self.state = 2254 + self.match(VisualBasic6Parser.WS) + + + self.state = 2257 + self.valueStmt(10) + pass + + elif la_ == 8: + localctx = VisualBasic6Parser.VsAndContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2258 + if not self.precpred(self._ctx, 7): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") + self.state = 2260 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2259 + self.match(VisualBasic6Parser.WS) + + + self.state = 2262 + self.match(VisualBasic6Parser.AND) + self.state = 2264 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,359,self._ctx) + if la_ == 1: + self.state = 2263 + self.match(VisualBasic6Parser.WS) + + + self.state = 2266 + self.valueStmt(8) + pass + + elif la_ == 9: + localctx = VisualBasic6Parser.VsOrContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2267 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 2269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2268 + self.match(VisualBasic6Parser.WS) + + + self.state = 2271 + self.match(VisualBasic6Parser.OR) + self.state = 2273 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,361,self._ctx) + if la_ == 1: + self.state = 2272 + self.match(VisualBasic6Parser.WS) + + + self.state = 2275 + self.valueStmt(7) + pass + + elif la_ == 10: + localctx = VisualBasic6Parser.VsXorContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2276 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 2278 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2277 + self.match(VisualBasic6Parser.WS) + + + self.state = 2280 + self.match(VisualBasic6Parser.XOR) + self.state = 2282 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,363,self._ctx) + if la_ == 1: + self.state = 2281 + self.match(VisualBasic6Parser.WS) + + + self.state = 2284 + self.valueStmt(6) + pass + + elif la_ == 11: + localctx = VisualBasic6Parser.VsEqvContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2285 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 2287 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2286 + self.match(VisualBasic6Parser.WS) + + + self.state = 2289 + self.match(VisualBasic6Parser.EQV) + self.state = 2291 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,365,self._ctx) + if la_ == 1: + self.state = 2290 + self.match(VisualBasic6Parser.WS) + + + self.state = 2293 + self.valueStmt(5) + pass + + elif la_ == 12: + localctx = VisualBasic6Parser.VsImpContext(self, VisualBasic6Parser.ValueStmtContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueStmt) + self.state = 2294 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 2296 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2295 + self.match(VisualBasic6Parser.WS) + + + self.state = 2298 + self.match(VisualBasic6Parser.IMP) + self.state = 2300 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,367,self._ctx) + if la_ == 1: + self.state = 2299 + self.match(VisualBasic6Parser.WS) + + + self.state = 2302 + self.valueStmt(4) + pass + + + self.state = 2307 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,369,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class VariableStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def variableListStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.VariableListStmtContext,0) + + + def DIM(self): + return self.getToken(VisualBasic6Parser.DIM, 0) + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def visibility(self): + return self.getTypedRuleContext(VisualBasic6Parser.VisibilityContext,0) + + + def WITHEVENTS(self): + return self.getToken(VisualBasic6Parser.WITHEVENTS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_variableStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableStmt" ): + listener.enterVariableStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableStmt" ): + listener.exitVariableStmt(self) + + + + + def variableStmt(self): + + localctx = VisualBasic6Parser.VariableStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_variableStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2311 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [40]: + self.state = 2308 + self.match(VisualBasic6Parser.DIM) + pass + elif token in [153]: + self.state = 2309 + self.match(VisualBasic6Parser.STATIC) + pass + elif token in [68, 72, 125, 129]: + self.state = 2310 + self.visibility() + pass + else: + raise NoViableAltException(self) + + self.state = 2313 + self.match(VisualBasic6Parser.WS) + self.state = 2316 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,371,self._ctx) + if la_ == 1: + self.state = 2314 + self.match(VisualBasic6Parser.WITHEVENTS) + self.state = 2315 + self.match(VisualBasic6Parser.WS) + + + self.state = 2318 + self.variableListStmt() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VariableListStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def variableSubStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.VariableSubStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.VariableSubStmtContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_variableListStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableListStmt" ): + listener.enterVariableListStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableListStmt" ): + listener.exitVariableListStmt(self) + + + + + def variableListStmt(self): + + localctx = VisualBasic6Parser.VariableListStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_variableListStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2320 + self.variableSubStmt() + self.state = 2331 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,374,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2322 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2321 + self.match(VisualBasic6Parser.WS) + + + self.state = 2324 + self.match(VisualBasic6Parser.COMMA) + self.state = 2326 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2325 + self.match(VisualBasic6Parser.WS) + + + self.state = 2328 + self.variableSubStmt() + self.state = 2333 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,374,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VariableSubStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def subscripts(self): + return self.getTypedRuleContext(VisualBasic6Parser.SubscriptsContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_variableSubStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableSubStmt" ): + listener.enterVariableSubStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableSubStmt" ): + listener.exitVariableSubStmt(self) + + + + + def variableSubStmt(self): + + localctx = VisualBasic6Parser.VariableSubStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_variableSubStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2334 + self.ambiguousIdentifier() + self.state = 2336 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,375,self._ctx) + if la_ == 1: + self.state = 2335 + self.typeHint() + + + self.state = 2355 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,381,self._ctx) + if la_ == 1: + self.state = 2339 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2338 + self.match(VisualBasic6Parser.WS) + + + self.state = 2341 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2343 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,377,self._ctx) + if la_ == 1: + self.state = 2342 + self.match(VisualBasic6Parser.WS) + + + self.state = 2349 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 360569445166350303) != 0) or ((((_la - 194)) & ~0x3f) == 0 and ((1 << (_la - 194)) & 289382533) != 0): + self.state = 2345 + self.subscripts() + self.state = 2347 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2346 + self.match(VisualBasic6Parser.WS) + + + + + self.state = 2351 + self.match(VisualBasic6Parser.RPAREN) + self.state = 2353 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,380,self._ctx) + if la_ == 1: + self.state = 2352 + self.match(VisualBasic6Parser.WS) + + + + + self.state = 2359 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,382,self._ctx) + if la_ == 1: + self.state = 2357 + self.match(VisualBasic6Parser.WS) + self.state = 2358 + self.asTypeClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WhileWendStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHILE(self): + return self.getToken(VisualBasic6Parser.WHILE, 0) + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WEND(self): + return self.getToken(VisualBasic6Parser.WEND, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.BlockContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_whileWendStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWhileWendStmt" ): + listener.enterWhileWendStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWhileWendStmt" ): + listener.exitWhileWendStmt(self) + + + + + def whileWendStmt(self): + + localctx = VisualBasic6Parser.WhileWendStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_whileWendStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2361 + self.match(VisualBasic6Parser.WHILE) + self.state = 2362 + self.match(VisualBasic6Parser.WS) + self.state = 2363 + self.valueStmt(0) + self.state = 2365 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2364 + self.match(VisualBasic6Parser.NEWLINE) + + else: + raise NoViableAltException(self) + self.state = 2367 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,383,self._ctx) + + self.state = 2372 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,384,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2369 + self.block() + self.state = 2374 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,384,self._ctx) + + self.state = 2378 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==220: + self.state = 2375 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2380 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2381 + self.match(VisualBasic6Parser.WEND) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WidthStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WIDTH(self): + return self.getToken(VisualBasic6Parser.WIDTH, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_widthStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWidthStmt" ): + listener.enterWidthStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWidthStmt" ): + listener.exitWidthStmt(self) + + + + + def widthStmt(self): + + localctx = VisualBasic6Parser.WidthStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 230, self.RULE_widthStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2383 + self.match(VisualBasic6Parser.WIDTH) + self.state = 2384 + self.match(VisualBasic6Parser.WS) + self.state = 2385 + self.valueStmt(0) + self.state = 2387 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2386 + self.match(VisualBasic6Parser.WS) + + + self.state = 2389 + self.match(VisualBasic6Parser.COMMA) + self.state = 2391 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,387,self._ctx) + if la_ == 1: + self.state = 2390 + self.match(VisualBasic6Parser.WS) + + + self.state = 2393 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WithStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(VisualBasic6Parser.WITH, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def END_WITH(self): + return self.getToken(VisualBasic6Parser.END_WITH, 0) + + def NEW(self): + return self.getToken(VisualBasic6Parser.NEW, 0) + + def NEWLINE(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.NEWLINE) + else: + return self.getToken(VisualBasic6Parser.NEWLINE, i) + + def block(self): + return self.getTypedRuleContext(VisualBasic6Parser.BlockContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_withStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWithStmt" ): + listener.enterWithStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWithStmt" ): + listener.exitWithStmt(self) + + + + + def withStmt(self): + + localctx = VisualBasic6Parser.WithStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_withStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2395 + self.match(VisualBasic6Parser.WITH) + self.state = 2396 + self.match(VisualBasic6Parser.WS) + self.state = 2399 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,388,self._ctx) + if la_ == 1: + self.state = 2397 + self.match(VisualBasic6Parser.NEW) + self.state = 2398 + self.match(VisualBasic6Parser.WS) + + + self.state = 2401 + self.implicitCallStmt_InStmt() + self.state = 2403 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2402 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2405 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + self.state = 2413 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -53972826784270338) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4544131962008240127) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 721138890332700607) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 34817) != 0): + self.state = 2407 + self.block() + self.state = 2409 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2408 + self.match(VisualBasic6Parser.NEWLINE) + self.state = 2411 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==220): + break + + + + self.state = 2415 + self.match(VisualBasic6Parser.END_WITH) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WriteStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WRITE(self): + return self.getToken(VisualBasic6Parser.WRITE, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def COMMA(self): + return self.getToken(VisualBasic6Parser.COMMA, 0) + + def outputList(self): + return self.getTypedRuleContext(VisualBasic6Parser.OutputListContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_writeStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWriteStmt" ): + listener.enterWriteStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWriteStmt" ): + listener.exitWriteStmt(self) + + + + + def writeStmt(self): + + localctx = VisualBasic6Parser.WriteStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_writeStmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2417 + self.match(VisualBasic6Parser.WRITE) + self.state = 2418 + self.match(VisualBasic6Parser.WS) + self.state = 2419 + self.valueStmt(0) + self.state = 2421 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2420 + self.match(VisualBasic6Parser.WS) + + + self.state = 2423 + self.match(VisualBasic6Parser.COMMA) + self.state = 2428 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,394,self._ctx) + if la_ == 1: + self.state = 2425 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,393,self._ctx) + if la_ == 1: + self.state = 2424 + self.match(VisualBasic6Parser.WS) + + + self.state = 2427 + self.outputList() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExplicitCallStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def eCS_ProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ECS_ProcedureCallContext,0) + + + def eCS_MemberProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ECS_MemberProcedureCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_explicitCallStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExplicitCallStmt" ): + listener.enterExplicitCallStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExplicitCallStmt" ): + listener.exitExplicitCallStmt(self) + + + + + def explicitCallStmt(self): + + localctx = VisualBasic6Parser.ExplicitCallStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_explicitCallStmt) + try: + self.state = 2432 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,395,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2430 + self.eCS_ProcedureCall() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2431 + self.eCS_MemberProcedureCall() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ECS_ProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CALL(self): + return self.getToken(VisualBasic6Parser.CALL, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_eCS_ProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterECS_ProcedureCall" ): + listener.enterECS_ProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitECS_ProcedureCall" ): + listener.exitECS_ProcedureCall(self) + + + + + def eCS_ProcedureCall(self): + + localctx = VisualBasic6Parser.ECS_ProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 238, self.RULE_eCS_ProcedureCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2434 + self.match(VisualBasic6Parser.CALL) + self.state = 2435 + self.match(VisualBasic6Parser.WS) + self.state = 2436 + self.ambiguousIdentifier() + self.state = 2438 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,396,self._ctx) + if la_ == 1: + self.state = 2437 + self.typeHint() + + + self.state = 2453 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,400,self._ctx) + if la_ == 1: + self.state = 2441 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2440 + self.match(VisualBasic6Parser.WS) + + + self.state = 2443 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2445 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,398,self._ctx) + if la_ == 1: + self.state = 2444 + self.match(VisualBasic6Parser.WS) + + + self.state = 2447 + self.argsCall() + self.state = 2449 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2448 + self.match(VisualBasic6Parser.WS) + + + self.state = 2451 + self.match(VisualBasic6Parser.RPAREN) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ECS_MemberProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CALL(self): + return self.getToken(VisualBasic6Parser.CALL, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def DOT(self): + return self.getToken(VisualBasic6Parser.DOT, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_eCS_MemberProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterECS_MemberProcedureCall" ): + listener.enterECS_MemberProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitECS_MemberProcedureCall" ): + listener.exitECS_MemberProcedureCall(self) + + + + + def eCS_MemberProcedureCall(self): + + localctx = VisualBasic6Parser.ECS_MemberProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 240, self.RULE_eCS_MemberProcedureCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2455 + self.match(VisualBasic6Parser.CALL) + self.state = 2456 + self.match(VisualBasic6Parser.WS) + self.state = 2458 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,401,self._ctx) + if la_ == 1: + self.state = 2457 + self.implicitCallStmt_InStmt() + + + self.state = 2460 + self.match(VisualBasic6Parser.DOT) + self.state = 2462 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2461 + self.match(VisualBasic6Parser.WS) + + + self.state = 2464 + self.ambiguousIdentifier() + self.state = 2466 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,403,self._ctx) + if la_ == 1: + self.state = 2465 + self.typeHint() + + + self.state = 2481 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,407,self._ctx) + if la_ == 1: + self.state = 2469 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2468 + self.match(VisualBasic6Parser.WS) + + + self.state = 2471 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2473 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,405,self._ctx) + if la_ == 1: + self.state = 2472 + self.match(VisualBasic6Parser.WS) + + + self.state = 2475 + self.argsCall() + self.state = 2477 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2476 + self.match(VisualBasic6Parser.WS) + + + self.state = 2479 + self.match(VisualBasic6Parser.RPAREN) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ImplicitCallStmt_InBlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def iCS_B_ProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_B_ProcedureCallContext,0) + + + def iCS_B_MemberProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_B_MemberProcedureCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_implicitCallStmt_InBlock + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterImplicitCallStmt_InBlock" ): + listener.enterImplicitCallStmt_InBlock(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitImplicitCallStmt_InBlock" ): + listener.exitImplicitCallStmt_InBlock(self) + + + + + def implicitCallStmt_InBlock(self): + + localctx = VisualBasic6Parser.ImplicitCallStmt_InBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 242, self.RULE_implicitCallStmt_InBlock) + try: + self.state = 2485 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,408,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2483 + self.iCS_B_ProcedureCall() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2484 + self.iCS_B_MemberProcedureCall() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_B_ProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def certainIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.CertainIdentifierContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_B_ProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_B_ProcedureCall" ): + listener.enterICS_B_ProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_B_ProcedureCall" ): + listener.exitICS_B_ProcedureCall(self) + + + + + def iCS_B_ProcedureCall(self): + + localctx = VisualBasic6Parser.ICS_B_ProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 244, self.RULE_iCS_B_ProcedureCall) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2487 + self.certainIdentifier() + self.state = 2490 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,409,self._ctx) + if la_ == 1: + self.state = 2488 + self.match(VisualBasic6Parser.WS) + self.state = 2489 + self.argsCall() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_B_MemberProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT(self): + return self.getToken(VisualBasic6Parser.DOT, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def implicitCallStmt_InStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ImplicitCallStmt_InStmtContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def dictionaryCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DictionaryCallStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_B_MemberProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_B_MemberProcedureCall" ): + listener.enterICS_B_MemberProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_B_MemberProcedureCall" ): + listener.exitICS_B_MemberProcedureCall(self) + + + + + def iCS_B_MemberProcedureCall(self): + + localctx = VisualBasic6Parser.ICS_B_MemberProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 246, self.RULE_iCS_B_MemberProcedureCall) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2493 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,410,self._ctx) + if la_ == 1: + self.state = 2492 + self.implicitCallStmt_InStmt() + + + self.state = 2495 + self.match(VisualBasic6Parser.DOT) + self.state = 2496 + self.ambiguousIdentifier() + self.state = 2498 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,411,self._ctx) + if la_ == 1: + self.state = 2497 + self.typeHint() + + + self.state = 2502 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,412,self._ctx) + if la_ == 1: + self.state = 2500 + self.match(VisualBasic6Parser.WS) + self.state = 2501 + self.argsCall() + + + self.state = 2505 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,413,self._ctx) + if la_ == 1: + self.state = 2504 + self.dictionaryCallStmt() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ImplicitCallStmt_InStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def iCS_S_MembersCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_MembersCallContext,0) + + + def iCS_S_VariableOrProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext,0) + + + def iCS_S_ProcedureOrArrayCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext,0) + + + def iCS_S_DictionaryCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_DictionaryCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_implicitCallStmt_InStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterImplicitCallStmt_InStmt" ): + listener.enterImplicitCallStmt_InStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitImplicitCallStmt_InStmt" ): + listener.exitImplicitCallStmt_InStmt(self) + + + + + def implicitCallStmt_InStmt(self): + + localctx = VisualBasic6Parser.ImplicitCallStmt_InStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 248, self.RULE_implicitCallStmt_InStmt) + try: + self.state = 2511 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,414,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2507 + self.iCS_S_MembersCall() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2508 + self.iCS_S_VariableOrProcedureCall() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2509 + self.iCS_S_ProcedureOrArrayCall() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2510 + self.iCS_S_DictionaryCall() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_VariableOrProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def dictionaryCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DictionaryCallStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_VariableOrProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_VariableOrProcedureCall" ): + listener.enterICS_S_VariableOrProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_VariableOrProcedureCall" ): + listener.exitICS_S_VariableOrProcedureCall(self) + + + + + def iCS_S_VariableOrProcedureCall(self): + + localctx = VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 250, self.RULE_iCS_S_VariableOrProcedureCall) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2513 + self.ambiguousIdentifier() + self.state = 2515 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,415,self._ctx) + if la_ == 1: + self.state = 2514 + self.typeHint() + + + self.state = 2518 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,416,self._ctx) + if la_ == 1: + self.state = 2517 + self.dictionaryCallStmt() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_ProcedureOrArrayCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def baseType(self): + return self.getTypedRuleContext(VisualBasic6Parser.BaseTypeContext,0) + + + def iCS_S_NestedProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_NestedProcedureCallContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def LPAREN(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.LPAREN) + else: + return self.getToken(VisualBasic6Parser.LPAREN, i) + + def RPAREN(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.RPAREN) + else: + return self.getToken(VisualBasic6Parser.RPAREN, i) + + def dictionaryCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DictionaryCallStmtContext,0) + + + def argsCall(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ArgsCallContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_ProcedureOrArrayCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_ProcedureOrArrayCall" ): + listener.enterICS_S_ProcedureOrArrayCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_ProcedureOrArrayCall" ): + listener.exitICS_S_ProcedureOrArrayCall(self) + + + + + def iCS_S_ProcedureOrArrayCall(self): + + localctx = VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 252, self.RULE_iCS_S_ProcedureOrArrayCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2523 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,417,self._ctx) + if la_ == 1: + self.state = 2520 + self.ambiguousIdentifier() + pass + + elif la_ == 2: + self.state = 2521 + self.baseType() + pass + + elif la_ == 3: + self.state = 2522 + self.iCS_S_NestedProcedureCall() + pass + + + self.state = 2526 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 2525 + self.typeHint() + + + self.state = 2529 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2528 + self.match(VisualBasic6Parser.WS) + + + self.state = 2542 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2531 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2533 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,420,self._ctx) + if la_ == 1: + self.state = 2532 + self.match(VisualBasic6Parser.WS) + + + self.state = 2539 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 365073044793720799) != 0) or ((((_la - 194)) & ~0x3f) == 0 and ((1 << (_la - 194)) & 289386629) != 0): + self.state = 2535 + self.argsCall() + self.state = 2537 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2536 + self.match(VisualBasic6Parser.WS) + + + + + self.state = 2541 + self.match(VisualBasic6Parser.RPAREN) + + else: + raise NoViableAltException(self) + self.state = 2544 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,423,self._ctx) + + self.state = 2547 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,424,self._ctx) + if la_ == 1: + self.state = 2546 + self.dictionaryCallStmt() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_NestedProcedureCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def argsCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgsCallContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_NestedProcedureCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_NestedProcedureCall" ): + listener.enterICS_S_NestedProcedureCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_NestedProcedureCall" ): + listener.exitICS_S_NestedProcedureCall(self) + + + + + def iCS_S_NestedProcedureCall(self): + + localctx = VisualBasic6Parser.ICS_S_NestedProcedureCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 254, self.RULE_iCS_S_NestedProcedureCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2549 + self.ambiguousIdentifier() + self.state = 2551 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 2550 + self.typeHint() + + + self.state = 2554 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2553 + self.match(VisualBasic6Parser.WS) + + + self.state = 2556 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2558 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,427,self._ctx) + if la_ == 1: + self.state = 2557 + self.match(VisualBasic6Parser.WS) + + + self.state = 2564 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 365073044793720799) != 0) or ((((_la - 194)) & ~0x3f) == 0 and ((1 << (_la - 194)) & 289386629) != 0): + self.state = 2560 + self.argsCall() + self.state = 2562 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2561 + self.match(VisualBasic6Parser.WS) + + + + + self.state = 2566 + self.match(VisualBasic6Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_MembersCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def iCS_S_VariableOrProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext,0) + + + def iCS_S_ProcedureOrArrayCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext,0) + + + def iCS_S_MemberCall(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ICS_S_MemberCallContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_MemberCallContext,i) + + + def dictionaryCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DictionaryCallStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_MembersCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_MembersCall" ): + listener.enterICS_S_MembersCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_MembersCall" ): + listener.exitICS_S_MembersCall(self) + + + + + def iCS_S_MembersCall(self): + + localctx = VisualBasic6Parser.ICS_S_MembersCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 256, self.RULE_iCS_S_MembersCall) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2570 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,430,self._ctx) + if la_ == 1: + self.state = 2568 + self.iCS_S_VariableOrProcedureCall() + + elif la_ == 2: + self.state = 2569 + self.iCS_S_ProcedureOrArrayCall() + + + self.state = 2573 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2572 + self.iCS_S_MemberCall() + + else: + raise NoViableAltException(self) + self.state = 2575 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,431,self._ctx) + + self.state = 2578 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,432,self._ctx) + if la_ == 1: + self.state = 2577 + self.dictionaryCallStmt() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_MemberCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT(self): + return self.getToken(VisualBasic6Parser.DOT, 0) + + def iCS_S_VariableOrProcedureCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext,0) + + + def iCS_S_ProcedureOrArrayCall(self): + return self.getTypedRuleContext(VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_MemberCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_MemberCall" ): + listener.enterICS_S_MemberCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_MemberCall" ): + listener.exitICS_S_MemberCall(self) + + + + + def iCS_S_MemberCall(self): + + localctx = VisualBasic6Parser.ICS_S_MemberCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 258, self.RULE_iCS_S_MemberCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2581 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2580 + self.match(VisualBasic6Parser.WS) + + + self.state = 2583 + self.match(VisualBasic6Parser.DOT) + self.state = 2586 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,434,self._ctx) + if la_ == 1: + self.state = 2584 + self.iCS_S_VariableOrProcedureCall() + pass + + elif la_ == 2: + self.state = 2585 + self.iCS_S_ProcedureOrArrayCall() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ICS_S_DictionaryCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def dictionaryCallStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.DictionaryCallStmtContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_iCS_S_DictionaryCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterICS_S_DictionaryCall" ): + listener.enterICS_S_DictionaryCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitICS_S_DictionaryCall" ): + listener.exitICS_S_DictionaryCall(self) + + + + + def iCS_S_DictionaryCall(self): + + localctx = VisualBasic6Parser.ICS_S_DictionaryCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 260, self.RULE_iCS_S_DictionaryCall) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2588 + self.dictionaryCallStmt() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ArgsCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def argCall(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ArgCallContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ArgCallContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def SEMICOLON(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.SEMICOLON) + else: + return self.getToken(VisualBasic6Parser.SEMICOLON, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_argsCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArgsCall" ): + listener.enterArgsCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArgsCall" ): + listener.exitArgsCall(self) + + + + + def argsCall(self): + + localctx = VisualBasic6Parser.ArgsCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 262, self.RULE_argsCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2602 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,438,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2591 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,435,self._ctx) + if la_ == 1: + self.state = 2590 + self.argCall() + + + self.state = 2594 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2593 + self.match(VisualBasic6Parser.WS) + + + self.state = 2596 + _la = self._input.LA(1) + if not(_la==182 or _la==206): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2598 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,437,self._ctx) + if la_ == 1: + self.state = 2597 + self.match(VisualBasic6Parser.WS) + + + self.state = 2604 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,438,self._ctx) + + self.state = 2605 + self.argCall() + self.state = 2618 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,442,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2607 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2606 + self.match(VisualBasic6Parser.WS) + + + self.state = 2609 + _la = self._input.LA(1) + if not(_la==182 or _la==206): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2611 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,440,self._ctx) + if la_ == 1: + self.state = 2610 + self.match(VisualBasic6Parser.WS) + + + self.state = 2614 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,441,self._ctx) + if la_ == 1: + self.state = 2613 + self.argCall() + + + self.state = 2620 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,442,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ArgCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def BYVAL(self): + return self.getToken(VisualBasic6Parser.BYVAL, 0) + + def BYREF(self): + return self.getToken(VisualBasic6Parser.BYREF, 0) + + def PARAMARRAY(self): + return self.getToken(VisualBasic6Parser.PARAMARRAY, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_argCall + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArgCall" ): + listener.enterArgCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArgCall" ): + listener.exitArgCall(self) + + + + + def argCall(self): + + localctx = VisualBasic6Parser.ArgCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 264, self.RULE_argCall) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2623 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,443,self._ctx) + if la_ == 1: + self.state = 2621 + _la = self._input.LA(1) + if not(_la==14 or _la==15 or _la==122): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2622 + self.match(VisualBasic6Parser.WS) + + + self.state = 2625 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DictionaryCallStmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXCLAMATIONMARK(self): + return self.getToken(VisualBasic6Parser.EXCLAMATIONMARK, 0) + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_dictionaryCallStmt + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDictionaryCallStmt" ): + listener.enterDictionaryCallStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDictionaryCallStmt" ): + listener.exitDictionaryCallStmt(self) + + + + + def dictionaryCallStmt(self): + + localctx = VisualBasic6Parser.DictionaryCallStmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 266, self.RULE_dictionaryCallStmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2627 + self.match(VisualBasic6Parser.EXCLAMATIONMARK) + self.state = 2628 + self.ambiguousIdentifier() + self.state = 2630 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,444,self._ctx) + if la_ == 1: + self.state = 2629 + self.typeHint() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ArgListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def arg(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ArgContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ArgContext,i) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_argList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArgList" ): + listener.enterArgList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArgList" ): + listener.exitArgList(self) + + + + + def argList(self): + + localctx = VisualBasic6Parser.ArgListContext(self, self._ctx, self.state) + self.enterRule(localctx, 268, self.RULE_argList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2632 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2650 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,449,self._ctx) + if la_ == 1: + self.state = 2634 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2633 + self.match(VisualBasic6Parser.WS) + + + self.state = 2636 + self.arg() + self.state = 2647 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,448,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2638 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2637 + self.match(VisualBasic6Parser.WS) + + + self.state = 2640 + self.match(VisualBasic6Parser.COMMA) + self.state = 2642 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2641 + self.match(VisualBasic6Parser.WS) + + + self.state = 2644 + self.arg() + self.state = 2649 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,448,self._ctx) + + + + self.state = 2653 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2652 + self.match(VisualBasic6Parser.WS) + + + self.state = 2655 + self.match(VisualBasic6Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ArgContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def OPTIONAL(self): + return self.getToken(VisualBasic6Parser.OPTIONAL, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def PARAMARRAY(self): + return self.getToken(VisualBasic6Parser.PARAMARRAY, 0) + + def typeHint(self): + return self.getTypedRuleContext(VisualBasic6Parser.TypeHintContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def asTypeClause(self): + return self.getTypedRuleContext(VisualBasic6Parser.AsTypeClauseContext,0) + + + def argDefaultValue(self): + return self.getTypedRuleContext(VisualBasic6Parser.ArgDefaultValueContext,0) + + + def BYVAL(self): + return self.getToken(VisualBasic6Parser.BYVAL, 0) + + def BYREF(self): + return self.getToken(VisualBasic6Parser.BYREF, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_arg + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArg" ): + listener.enterArg(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArg" ): + listener.exitArg(self) + + + + + def arg(self): + + localctx = VisualBasic6Parser.ArgContext(self, self._ctx, self.state) + self.enterRule(localctx, 270, self.RULE_arg) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2659 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,451,self._ctx) + if la_ == 1: + self.state = 2657 + self.match(VisualBasic6Parser.OPTIONAL) + self.state = 2658 + self.match(VisualBasic6Parser.WS) + + + self.state = 2663 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,452,self._ctx) + if la_ == 1: + self.state = 2661 + _la = self._input.LA(1) + if not(_la==14 or _la==15): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2662 + self.match(VisualBasic6Parser.WS) + + + self.state = 2667 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,453,self._ctx) + if la_ == 1: + self.state = 2665 + self.match(VisualBasic6Parser.PARAMARRAY) + self.state = 2666 + self.match(VisualBasic6Parser.WS) + + + self.state = 2669 + self.ambiguousIdentifier() + self.state = 2671 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0): + self.state = 2670 + self.typeHint() + + + self.state = 2681 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,457,self._ctx) + if la_ == 1: + self.state = 2674 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2673 + self.match(VisualBasic6Parser.WS) + + + self.state = 2676 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2678 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2677 + self.match(VisualBasic6Parser.WS) + + + self.state = 2680 + self.match(VisualBasic6Parser.RPAREN) + + + self.state = 2685 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,458,self._ctx) + if la_ == 1: + self.state = 2683 + self.match(VisualBasic6Parser.WS) + self.state = 2684 + self.asTypeClause() + + + self.state = 2691 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,460,self._ctx) + if la_ == 1: + self.state = 2688 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2687 + self.match(VisualBasic6Parser.WS) + + + self.state = 2690 + self.argDefaultValue() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ArgDefaultValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def valueStmt(self): + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_argDefaultValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArgDefaultValue" ): + listener.enterArgDefaultValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArgDefaultValue" ): + listener.exitArgDefaultValue(self) + + + + + def argDefaultValue(self): + + localctx = VisualBasic6Parser.ArgDefaultValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 272, self.RULE_argDefaultValue) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2693 + self.match(VisualBasic6Parser.EQ) + self.state = 2695 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,461,self._ctx) + if la_ == 1: + self.state = 2694 + self.match(VisualBasic6Parser.WS) + + + self.state = 2697 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SubscriptsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def subscript_(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.Subscript_Context) + else: + return self.getTypedRuleContext(VisualBasic6Parser.Subscript_Context,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.COMMA) + else: + return self.getToken(VisualBasic6Parser.COMMA, i) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_subscripts + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubscripts" ): + listener.enterSubscripts(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubscripts" ): + listener.exitSubscripts(self) + + + + + def subscripts(self): + + localctx = VisualBasic6Parser.SubscriptsContext(self, self._ctx, self.state) + self.enterRule(localctx, 274, self.RULE_subscripts) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2699 + self.subscript_() + self.state = 2710 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,464,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2701 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2700 + self.match(VisualBasic6Parser.WS) + + + self.state = 2703 + self.match(VisualBasic6Parser.COMMA) + self.state = 2705 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,463,self._ctx) + if la_ == 1: + self.state = 2704 + self.match(VisualBasic6Parser.WS) + + + self.state = 2707 + self.subscript_() + self.state = 2712 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,464,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Subscript_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def valueStmt(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.ValueStmtContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.ValueStmtContext,i) + + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_subscript_ + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubscript_" ): + listener.enterSubscript_(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubscript_" ): + listener.exitSubscript_(self) + + + + + def subscript_(self): + + localctx = VisualBasic6Parser.Subscript_Context(self, self._ctx, self.state) + self.enterRule(localctx, 276, self.RULE_subscript_) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2718 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,465,self._ctx) + if la_ == 1: + self.state = 2713 + self.valueStmt(0) + self.state = 2714 + self.match(VisualBasic6Parser.WS) + self.state = 2715 + self.match(VisualBasic6Parser.TO) + self.state = 2716 + self.match(VisualBasic6Parser.WS) + + + self.state = 2720 + self.valueStmt(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AmbiguousIdentifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IDENTIFIER(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.IDENTIFIER) + else: + return self.getToken(VisualBasic6Parser.IDENTIFIER, i) + + def ambiguousKeyword(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AmbiguousKeywordContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousKeywordContext,i) + + + def L_SQUARE_BRACKET(self): + return self.getToken(VisualBasic6Parser.L_SQUARE_BRACKET, 0) + + def R_SQUARE_BRACKET(self): + return self.getToken(VisualBasic6Parser.R_SQUARE_BRACKET, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ambiguousIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAmbiguousIdentifier" ): + listener.enterAmbiguousIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAmbiguousIdentifier" ): + listener.exitAmbiguousIdentifier(self) + + + + + def ambiguousIdentifier(self): + + localctx = VisualBasic6Parser.AmbiguousIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 278, self.RULE_ambiguousIdentifier) + self._la = 0 # Token type + try: + self.state = 2736 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 218]: + self.enterOuterAlt(localctx, 1) + self.state = 2724 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2724 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [218]: + self.state = 2722 + self.match(VisualBasic6Parser.IDENTIFIER) + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177]: + self.state = 2723 + self.ambiguousKeyword() + pass + else: + raise NoViableAltException(self) + + + else: + raise NoViableAltException(self) + self.state = 2726 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,467,self._ctx) + + pass + elif token in [207]: + self.enterOuterAlt(localctx, 2) + self.state = 2728 + self.match(VisualBasic6Parser.L_SQUARE_BRACKET) + self.state = 2731 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2731 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [218]: + self.state = 2729 + self.match(VisualBasic6Parser.IDENTIFIER) + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177]: + self.state = 2730 + self.ambiguousKeyword() + pass + else: + raise NoViableAltException(self) + + self.state = 2733 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 281474976710623) != 0) or _la==218): + break + + self.state = 2735 + self.match(VisualBasic6Parser.R_SQUARE_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AsTypeClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def AS(self): + return self.getToken(VisualBasic6Parser.AS, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def type_(self): + return self.getTypedRuleContext(VisualBasic6Parser.Type_Context,0) + + + def NEW(self): + return self.getToken(VisualBasic6Parser.NEW, 0) + + def fieldLength(self): + return self.getTypedRuleContext(VisualBasic6Parser.FieldLengthContext,0) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_asTypeClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAsTypeClause" ): + listener.enterAsTypeClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAsTypeClause" ): + listener.exitAsTypeClause(self) + + + + + def asTypeClause(self): + + localctx = VisualBasic6Parser.AsTypeClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 280, self.RULE_asTypeClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2738 + self.match(VisualBasic6Parser.AS) + self.state = 2739 + self.match(VisualBasic6Parser.WS) + self.state = 2742 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,471,self._ctx) + if la_ == 1: + self.state = 2740 + self.match(VisualBasic6Parser.NEW) + self.state = 2741 + self.match(VisualBasic6Parser.WS) + + + self.state = 2744 + self.type_() + self.state = 2747 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,472,self._ctx) + if la_ == 1: + self.state = 2745 + self.match(VisualBasic6Parser.WS) + self.state = 2746 + self.fieldLength() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BaseTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BOOLEAN(self): + return self.getToken(VisualBasic6Parser.BOOLEAN, 0) + + def BYTE(self): + return self.getToken(VisualBasic6Parser.BYTE, 0) + + def COLLECTION(self): + return self.getToken(VisualBasic6Parser.COLLECTION, 0) + + def DATE(self): + return self.getToken(VisualBasic6Parser.DATE, 0) + + def DOUBLE(self): + return self.getToken(VisualBasic6Parser.DOUBLE, 0) + + def INTEGER(self): + return self.getToken(VisualBasic6Parser.INTEGER, 0) + + def LONG(self): + return self.getToken(VisualBasic6Parser.LONG, 0) + + def OBJECT(self): + return self.getToken(VisualBasic6Parser.OBJECT, 0) + + def SINGLE(self): + return self.getToken(VisualBasic6Parser.SINGLE, 0) + + def STRING(self): + return self.getToken(VisualBasic6Parser.STRING, 0) + + def VARIANT(self): + return self.getToken(VisualBasic6Parser.VARIANT, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_baseType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBaseType" ): + listener.enterBaseType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBaseType" ): + listener.exitBaseType(self) + + + + + def baseType(self): + + localctx = VisualBasic6Parser.BaseTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 282, self.RULE_baseType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2749 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4398088527872) != 0) or ((((_la - 81)) & ~0x3f) == 0 and ((1 << (_la - 81)) & 536870929) != 0) or ((((_la - 151)) & ~0x3f) == 0 and ((1 << (_la - 151)) & 262177) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CertainIdentifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IDENTIFIER(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.IDENTIFIER) + else: + return self.getToken(VisualBasic6Parser.IDENTIFIER, i) + + def ambiguousKeyword(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AmbiguousKeywordContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousKeywordContext,i) + + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_certainIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCertainIdentifier" ): + listener.enterCertainIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCertainIdentifier" ): + listener.exitCertainIdentifier(self) + + + + + def certainIdentifier(self): + + localctx = VisualBasic6Parser.CertainIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 284, self.RULE_certainIdentifier) + try: + self.state = 2766 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [218]: + self.enterOuterAlt(localctx, 1) + self.state = 2751 + self.match(VisualBasic6Parser.IDENTIFIER) + self.state = 2756 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,474,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2754 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177]: + self.state = 2752 + self.ambiguousKeyword() + pass + elif token in [218]: + self.state = 2753 + self.match(VisualBasic6Parser.IDENTIFIER) + pass + else: + raise NoViableAltException(self) + + self.state = 2758 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,474,self._ctx) + + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177]: + self.enterOuterAlt(localctx, 2) + self.state = 2759 + self.ambiguousKeyword() + self.state = 2762 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2762 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177]: + self.state = 2760 + self.ambiguousKeyword() + pass + elif token in [218]: + self.state = 2761 + self.match(VisualBasic6Parser.IDENTIFIER) + pass + else: + raise NoViableAltException(self) + + + else: + raise NoViableAltException(self) + self.state = 2764 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,476,self._ctx) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ComparisonOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LT(self): + return self.getToken(VisualBasic6Parser.LT, 0) + + def LEQ(self): + return self.getToken(VisualBasic6Parser.LEQ, 0) + + def GT(self): + return self.getToken(VisualBasic6Parser.GT, 0) + + def GEQ(self): + return self.getToken(VisualBasic6Parser.GEQ, 0) + + def EQ(self): + return self.getToken(VisualBasic6Parser.EQ, 0) + + def NEQ(self): + return self.getToken(VisualBasic6Parser.NEQ, 0) + + def IS(self): + return self.getToken(VisualBasic6Parser.IS, 0) + + def LIKE(self): + return self.getToken(VisualBasic6Parser.LIKE, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_comparisonOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComparisonOperator" ): + listener.enterComparisonOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComparisonOperator" ): + listener.exitComparisonOperator(self) + + + + + def comparisonOperator(self): + + localctx = VisualBasic6Parser.ComparisonOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 286, self.RULE_comparisonOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2768 + _la = self._input.LA(1) + if not(_la==80 or _la==90 or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & 4397) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ComplexTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.AmbiguousIdentifierContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,i) + + + def DOT(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.DOT) + else: + return self.getToken(VisualBasic6Parser.DOT, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_complexType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComplexType" ): + listener.enterComplexType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComplexType" ): + listener.exitComplexType(self) + + + + + def complexType(self): + + localctx = VisualBasic6Parser.ComplexTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 288, self.RULE_complexType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2770 + self.ambiguousIdentifier() + self.state = 2775 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,478,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2771 + self.match(VisualBasic6Parser.DOT) + self.state = 2772 + self.ambiguousIdentifier() + self.state = 2777 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,478,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FieldLengthContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MULT(self): + return self.getToken(VisualBasic6Parser.MULT, 0) + + def integerLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.IntegerLiteralContext,0) + + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def WS(self): + return self.getToken(VisualBasic6Parser.WS, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_fieldLength + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFieldLength" ): + listener.enterFieldLength(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFieldLength" ): + listener.exitFieldLength(self) + + + + + def fieldLength(self): + + localctx = VisualBasic6Parser.FieldLengthContext(self, self._ctx, self.state) + self.enterRule(localctx, 290, self.RULE_fieldLength) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2778 + self.match(VisualBasic6Parser.MULT) + self.state = 2780 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2779 + self.match(VisualBasic6Parser.WS) + + + self.state = 2784 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [196, 201, 212]: + self.state = 2782 + self.integerLiteral() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 54, 56, 57, 58, 59, 60, 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, 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 120, 121, 122, 123, 124, 125, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 207, 218]: + self.state = 2783 + self.ambiguousIdentifier() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LetterrangeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def certainIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(VisualBasic6Parser.CertainIdentifierContext) + else: + return self.getTypedRuleContext(VisualBasic6Parser.CertainIdentifierContext,i) + + + def MINUS(self): + return self.getToken(VisualBasic6Parser.MINUS, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_letterrange + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLetterrange" ): + listener.enterLetterrange(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLetterrange" ): + listener.exitLetterrange(self) + + + + + def letterrange(self): + + localctx = VisualBasic6Parser.LetterrangeContext(self, self._ctx, self.state) + self.enterRule(localctx, 292, self.RULE_letterrange) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2786 + self.certainIdentifier() + self.state = 2795 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,483,self._ctx) + if la_ == 1: + self.state = 2788 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2787 + self.match(VisualBasic6Parser.WS) + + + self.state = 2790 + self.match(VisualBasic6Parser.MINUS) + self.state = 2792 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2791 + self.match(VisualBasic6Parser.WS) + + + self.state = 2794 + self.certainIdentifier() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LineLabelContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ambiguousIdentifier(self): + return self.getTypedRuleContext(VisualBasic6Parser.AmbiguousIdentifierContext,0) + + + def COLON(self): + return self.getToken(VisualBasic6Parser.COLON, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_lineLabel + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLineLabel" ): + listener.enterLineLabel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLineLabel" ): + listener.exitLineLabel(self) + + + + + def lineLabel(self): + + localctx = VisualBasic6Parser.LineLabelContext(self, self._ctx, self.state) + self.enterRule(localctx, 294, self.RULE_lineLabel) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2797 + self.ambiguousIdentifier() + self.state = 2798 + self.match(VisualBasic6Parser.COLON) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def COLORLITERAL(self): + return self.getToken(VisualBasic6Parser.COLORLITERAL, 0) + + def DATELITERAL(self): + return self.getToken(VisualBasic6Parser.DATELITERAL, 0) + + def doubleLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.DoubleLiteralContext,0) + + + def FILENUMBER(self): + return self.getToken(VisualBasic6Parser.FILENUMBER, 0) + + def integerLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.IntegerLiteralContext,0) + + + def octalLiteral(self): + return self.getTypedRuleContext(VisualBasic6Parser.OctalLiteralContext,0) + + + def STRINGLITERAL(self): + return self.getToken(VisualBasic6Parser.STRINGLITERAL, 0) + + def TRUE(self): + return self.getToken(VisualBasic6Parser.TRUE, 0) + + def FALSE(self): + return self.getToken(VisualBasic6Parser.FALSE, 0) + + def NOTHING(self): + return self.getToken(VisualBasic6Parser.NOTHING, 0) + + def NULL_(self): + return self.getToken(VisualBasic6Parser.NULL_, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_literal + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLiteral" ): + listener.enterLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLiteral" ): + listener.exitLiteral(self) + + + + + def literal(self): + + localctx = VisualBasic6Parser.LiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 296, self.RULE_literal) + try: + self.state = 2811 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,484,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2800 + self.match(VisualBasic6Parser.COLORLITERAL) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2801 + self.match(VisualBasic6Parser.DATELITERAL) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2802 + self.doubleLiteral() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2803 + self.match(VisualBasic6Parser.FILENUMBER) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2804 + self.integerLiteral() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2805 + self.octalLiteral() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2806 + self.match(VisualBasic6Parser.STRINGLITERAL) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 2807 + self.match(VisualBasic6Parser.TRUE) + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 2808 + self.match(VisualBasic6Parser.FALSE) + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 2809 + self.match(VisualBasic6Parser.NOTHING) + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 2810 + self.match(VisualBasic6Parser.NULL_) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PublicPrivateVisibilityContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PRIVATE(self): + return self.getToken(VisualBasic6Parser.PRIVATE, 0) + + def PUBLIC(self): + return self.getToken(VisualBasic6Parser.PUBLIC, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_publicPrivateVisibility + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPublicPrivateVisibility" ): + listener.enterPublicPrivateVisibility(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPublicPrivateVisibility" ): + listener.exitPublicPrivateVisibility(self) + + + + + def publicPrivateVisibility(self): + + localctx = VisualBasic6Parser.PublicPrivateVisibilityContext(self, self._ctx, self.state) + self.enterRule(localctx, 298, self.RULE_publicPrivateVisibility) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2813 + _la = self._input.LA(1) + if not(_la==125 or _la==129): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PublicPrivateGlobalVisibilityContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PRIVATE(self): + return self.getToken(VisualBasic6Parser.PRIVATE, 0) + + def PUBLIC(self): + return self.getToken(VisualBasic6Parser.PUBLIC, 0) + + def GLOBAL(self): + return self.getToken(VisualBasic6Parser.GLOBAL, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_publicPrivateGlobalVisibility + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPublicPrivateGlobalVisibility" ): + listener.enterPublicPrivateGlobalVisibility(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPublicPrivateGlobalVisibility" ): + listener.exitPublicPrivateGlobalVisibility(self) + + + + + def publicPrivateGlobalVisibility(self): + + localctx = VisualBasic6Parser.PublicPrivateGlobalVisibilityContext(self, self._ctx, self.state) + self.enterRule(localctx, 300, self.RULE_publicPrivateGlobalVisibility) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2815 + _la = self._input.LA(1) + if not(((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & 153122387330596865) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Type_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def baseType(self): + return self.getTypedRuleContext(VisualBasic6Parser.BaseTypeContext,0) + + + def complexType(self): + return self.getTypedRuleContext(VisualBasic6Parser.ComplexTypeContext,0) + + + def LPAREN(self): + return self.getToken(VisualBasic6Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(VisualBasic6Parser.RPAREN, 0) + + def WS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.WS) + else: + return self.getToken(VisualBasic6Parser.WS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_type_ + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterType_" ): + listener.enterType_(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitType_" ): + listener.exitType_(self) + + + + + def type_(self): + + localctx = VisualBasic6Parser.Type_Context(self, self._ctx, self.state) + self.enterRule(localctx, 302, self.RULE_type_) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2819 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,485,self._ctx) + if la_ == 1: + self.state = 2817 + self.baseType() + pass + + elif la_ == 2: + self.state = 2818 + self.complexType() + pass + + + self.state = 2829 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,488,self._ctx) + if la_ == 1: + self.state = 2822 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2821 + self.match(VisualBasic6Parser.WS) + + + self.state = 2824 + self.match(VisualBasic6Parser.LPAREN) + self.state = 2826 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==222: + self.state = 2825 + self.match(VisualBasic6Parser.WS) + + + self.state = 2828 + self.match(VisualBasic6Parser.RPAREN) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TypeHintContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def AMPERSAND(self): + return self.getToken(VisualBasic6Parser.AMPERSAND, 0) + + def AT(self): + return self.getToken(VisualBasic6Parser.AT, 0) + + def DOLLAR(self): + return self.getToken(VisualBasic6Parser.DOLLAR, 0) + + def EXCLAMATIONMARK(self): + return self.getToken(VisualBasic6Parser.EXCLAMATIONMARK, 0) + + def HASH(self): + return self.getToken(VisualBasic6Parser.HASH, 0) + + def PERCENT(self): + return self.getToken(VisualBasic6Parser.PERCENT, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_typeHint + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTypeHint" ): + listener.enterTypeHint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTypeHint" ): + listener.exitTypeHint(self) + + + + + def typeHint(self): + + localctx = VisualBasic6Parser.TypeHintContext(self, self._ctx, self.state) + self.enterRule(localctx, 304, self.RULE_typeHint) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2831 + _la = self._input.LA(1) + if not(((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & 4203653) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VisibilityContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PRIVATE(self): + return self.getToken(VisualBasic6Parser.PRIVATE, 0) + + def PUBLIC(self): + return self.getToken(VisualBasic6Parser.PUBLIC, 0) + + def FRIEND(self): + return self.getToken(VisualBasic6Parser.FRIEND, 0) + + def GLOBAL(self): + return self.getToken(VisualBasic6Parser.GLOBAL, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_visibility + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVisibility" ): + listener.enterVisibility(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVisibility" ): + listener.exitVisibility(self) + + + + + def visibility(self): + + localctx = VisualBasic6Parser.VisibilityContext(self, self._ctx, self.state) + self.enterRule(localctx, 306, self.RULE_visibility) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2833 + _la = self._input.LA(1) + if not(((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 2449958197289549841) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AmbiguousKeywordContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ACCESS(self): + return self.getToken(VisualBasic6Parser.ACCESS, 0) + + def ADDRESSOF(self): + return self.getToken(VisualBasic6Parser.ADDRESSOF, 0) + + def ALIAS(self): + return self.getToken(VisualBasic6Parser.ALIAS, 0) + + def AND(self): + return self.getToken(VisualBasic6Parser.AND, 0) + + def ATTRIBUTE(self): + return self.getToken(VisualBasic6Parser.ATTRIBUTE, 0) + + def APPACTIVATE(self): + return self.getToken(VisualBasic6Parser.APPACTIVATE, 0) + + def APPEND(self): + return self.getToken(VisualBasic6Parser.APPEND, 0) + + def AS(self): + return self.getToken(VisualBasic6Parser.AS, 0) + + def BEEP(self): + return self.getToken(VisualBasic6Parser.BEEP, 0) + + def BEGIN(self): + return self.getToken(VisualBasic6Parser.BEGIN, 0) + + def BINARY(self): + return self.getToken(VisualBasic6Parser.BINARY, 0) + + def BOOLEAN(self): + return self.getToken(VisualBasic6Parser.BOOLEAN, 0) + + def BYVAL(self): + return self.getToken(VisualBasic6Parser.BYVAL, 0) + + def BYREF(self): + return self.getToken(VisualBasic6Parser.BYREF, 0) + + def BYTE(self): + return self.getToken(VisualBasic6Parser.BYTE, 0) + + def CALL(self): + return self.getToken(VisualBasic6Parser.CALL, 0) + + def CASE(self): + return self.getToken(VisualBasic6Parser.CASE, 0) + + def CLASS(self): + return self.getToken(VisualBasic6Parser.CLASS, 0) + + def CLOSE(self): + return self.getToken(VisualBasic6Parser.CLOSE, 0) + + def CHDIR(self): + return self.getToken(VisualBasic6Parser.CHDIR, 0) + + def CHDRIVE(self): + return self.getToken(VisualBasic6Parser.CHDRIVE, 0) + + def COLLECTION(self): + return self.getToken(VisualBasic6Parser.COLLECTION, 0) + + def CONST(self): + return self.getToken(VisualBasic6Parser.CONST, 0) + + def DATE(self): + return self.getToken(VisualBasic6Parser.DATE, 0) + + def DECLARE(self): + return self.getToken(VisualBasic6Parser.DECLARE, 0) + + def DEFBOOL(self): + return self.getToken(VisualBasic6Parser.DEFBOOL, 0) + + def DEFBYTE(self): + return self.getToken(VisualBasic6Parser.DEFBYTE, 0) + + def DEFCUR(self): + return self.getToken(VisualBasic6Parser.DEFCUR, 0) + + def DEFDBL(self): + return self.getToken(VisualBasic6Parser.DEFDBL, 0) + + def DEFDATE(self): + return self.getToken(VisualBasic6Parser.DEFDATE, 0) + + def DEFDEC(self): + return self.getToken(VisualBasic6Parser.DEFDEC, 0) + + def DEFINT(self): + return self.getToken(VisualBasic6Parser.DEFINT, 0) + + def DEFLNG(self): + return self.getToken(VisualBasic6Parser.DEFLNG, 0) + + def DEFOBJ(self): + return self.getToken(VisualBasic6Parser.DEFOBJ, 0) + + def DEFSNG(self): + return self.getToken(VisualBasic6Parser.DEFSNG, 0) + + def DEFSTR(self): + return self.getToken(VisualBasic6Parser.DEFSTR, 0) + + def DEFVAR(self): + return self.getToken(VisualBasic6Parser.DEFVAR, 0) + + def DELETESETTING(self): + return self.getToken(VisualBasic6Parser.DELETESETTING, 0) + + def DIM(self): + return self.getToken(VisualBasic6Parser.DIM, 0) + + def DO(self): + return self.getToken(VisualBasic6Parser.DO, 0) + + def DOUBLE(self): + return self.getToken(VisualBasic6Parser.DOUBLE, 0) + + def EACH(self): + return self.getToken(VisualBasic6Parser.EACH, 0) + + def ELSE(self): + return self.getToken(VisualBasic6Parser.ELSE, 0) + + def ELSEIF(self): + return self.getToken(VisualBasic6Parser.ELSEIF, 0) + + def END(self): + return self.getToken(VisualBasic6Parser.END, 0) + + def ENUM(self): + return self.getToken(VisualBasic6Parser.ENUM, 0) + + def EQV(self): + return self.getToken(VisualBasic6Parser.EQV, 0) + + def ERASE(self): + return self.getToken(VisualBasic6Parser.ERASE, 0) + + def ERROR(self): + return self.getToken(VisualBasic6Parser.ERROR, 0) + + def EVENT(self): + return self.getToken(VisualBasic6Parser.EVENT, 0) + + def FALSE(self): + return self.getToken(VisualBasic6Parser.FALSE, 0) + + def FILECOPY(self): + return self.getToken(VisualBasic6Parser.FILECOPY, 0) + + def FRIEND(self): + return self.getToken(VisualBasic6Parser.FRIEND, 0) + + def FOR(self): + return self.getToken(VisualBasic6Parser.FOR, 0) + + def FUNCTION(self): + return self.getToken(VisualBasic6Parser.FUNCTION, 0) + + def GET(self): + return self.getToken(VisualBasic6Parser.GET, 0) + + def GLOBAL(self): + return self.getToken(VisualBasic6Parser.GLOBAL, 0) + + def GOSUB(self): + return self.getToken(VisualBasic6Parser.GOSUB, 0) + + def GOTO(self): + return self.getToken(VisualBasic6Parser.GOTO, 0) + + def IF(self): + return self.getToken(VisualBasic6Parser.IF, 0) + + def IMP(self): + return self.getToken(VisualBasic6Parser.IMP, 0) + + def IMPLEMENTS(self): + return self.getToken(VisualBasic6Parser.IMPLEMENTS, 0) + + def IN(self): + return self.getToken(VisualBasic6Parser.IN, 0) + + def INPUT(self): + return self.getToken(VisualBasic6Parser.INPUT, 0) + + def IS(self): + return self.getToken(VisualBasic6Parser.IS, 0) + + def INTEGER(self): + return self.getToken(VisualBasic6Parser.INTEGER, 0) + + def KILL(self): + return self.getToken(VisualBasic6Parser.KILL, 0) + + def LOAD(self): + return self.getToken(VisualBasic6Parser.LOAD, 0) + + def LOCK(self): + return self.getToken(VisualBasic6Parser.LOCK, 0) + + def LONG(self): + return self.getToken(VisualBasic6Parser.LONG, 0) + + def LOOP(self): + return self.getToken(VisualBasic6Parser.LOOP, 0) + + def LEN(self): + return self.getToken(VisualBasic6Parser.LEN, 0) + + def LET(self): + return self.getToken(VisualBasic6Parser.LET, 0) + + def LIB(self): + return self.getToken(VisualBasic6Parser.LIB, 0) + + def LIKE(self): + return self.getToken(VisualBasic6Parser.LIKE, 0) + + def LSET(self): + return self.getToken(VisualBasic6Parser.LSET, 0) + + def ME(self): + return self.getToken(VisualBasic6Parser.ME, 0) + + def MID(self): + return self.getToken(VisualBasic6Parser.MID, 0) + + def MKDIR(self): + return self.getToken(VisualBasic6Parser.MKDIR, 0) + + def MOD(self): + return self.getToken(VisualBasic6Parser.MOD, 0) + + def NAME(self): + return self.getToken(VisualBasic6Parser.NAME, 0) + + def NEXT(self): + return self.getToken(VisualBasic6Parser.NEXT, 0) + + def NEW(self): + return self.getToken(VisualBasic6Parser.NEW, 0) + + def NOT(self): + return self.getToken(VisualBasic6Parser.NOT, 0) + + def NOTHING(self): + return self.getToken(VisualBasic6Parser.NOTHING, 0) + + def NULL_(self): + return self.getToken(VisualBasic6Parser.NULL_, 0) + + def OBJECT(self): + return self.getToken(VisualBasic6Parser.OBJECT, 0) + + def ON(self): + return self.getToken(VisualBasic6Parser.ON, 0) + + def OPEN(self): + return self.getToken(VisualBasic6Parser.OPEN, 0) + + def OPTIONAL(self): + return self.getToken(VisualBasic6Parser.OPTIONAL, 0) + + def OR(self): + return self.getToken(VisualBasic6Parser.OR, 0) + + def OUTPUT(self): + return self.getToken(VisualBasic6Parser.OUTPUT, 0) + + def PARAMARRAY(self): + return self.getToken(VisualBasic6Parser.PARAMARRAY, 0) + + def PRESERVE(self): + return self.getToken(VisualBasic6Parser.PRESERVE, 0) + + def PRINT(self): + return self.getToken(VisualBasic6Parser.PRINT, 0) + + def PRIVATE(self): + return self.getToken(VisualBasic6Parser.PRIVATE, 0) + + def PUBLIC(self): + return self.getToken(VisualBasic6Parser.PUBLIC, 0) + + def PUT(self): + return self.getToken(VisualBasic6Parser.PUT, 0) + + def RANDOM(self): + return self.getToken(VisualBasic6Parser.RANDOM, 0) + + def RANDOMIZE(self): + return self.getToken(VisualBasic6Parser.RANDOMIZE, 0) + + def RAISEEVENT(self): + return self.getToken(VisualBasic6Parser.RAISEEVENT, 0) + + def READ(self): + return self.getToken(VisualBasic6Parser.READ, 0) + + def REDIM(self): + return self.getToken(VisualBasic6Parser.REDIM, 0) + + def REM(self): + return self.getToken(VisualBasic6Parser.REM, 0) + + def RESET(self): + return self.getToken(VisualBasic6Parser.RESET, 0) + + def RESUME(self): + return self.getToken(VisualBasic6Parser.RESUME, 0) + + def RETURN(self): + return self.getToken(VisualBasic6Parser.RETURN, 0) + + def RMDIR(self): + return self.getToken(VisualBasic6Parser.RMDIR, 0) + + def RSET(self): + return self.getToken(VisualBasic6Parser.RSET, 0) + + def SAVEPICTURE(self): + return self.getToken(VisualBasic6Parser.SAVEPICTURE, 0) + + def SAVESETTING(self): + return self.getToken(VisualBasic6Parser.SAVESETTING, 0) + + def SEEK(self): + return self.getToken(VisualBasic6Parser.SEEK, 0) + + def SELECT(self): + return self.getToken(VisualBasic6Parser.SELECT, 0) + + def SENDKEYS(self): + return self.getToken(VisualBasic6Parser.SENDKEYS, 0) + + def SET(self): + return self.getToken(VisualBasic6Parser.SET, 0) + + def SETATTR(self): + return self.getToken(VisualBasic6Parser.SETATTR, 0) + + def SHARED(self): + return self.getToken(VisualBasic6Parser.SHARED, 0) + + def SINGLE(self): + return self.getToken(VisualBasic6Parser.SINGLE, 0) + + def SPC(self): + return self.getToken(VisualBasic6Parser.SPC, 0) + + def STATIC(self): + return self.getToken(VisualBasic6Parser.STATIC, 0) + + def STEP(self): + return self.getToken(VisualBasic6Parser.STEP, 0) + + def STOP(self): + return self.getToken(VisualBasic6Parser.STOP, 0) + + def STRING(self): + return self.getToken(VisualBasic6Parser.STRING, 0) + + def SUB(self): + return self.getToken(VisualBasic6Parser.SUB, 0) + + def TAB(self): + return self.getToken(VisualBasic6Parser.TAB, 0) + + def TEXT(self): + return self.getToken(VisualBasic6Parser.TEXT, 0) + + def THEN(self): + return self.getToken(VisualBasic6Parser.THEN, 0) + + def TIME(self): + return self.getToken(VisualBasic6Parser.TIME, 0) + + def TO(self): + return self.getToken(VisualBasic6Parser.TO, 0) + + def TRUE(self): + return self.getToken(VisualBasic6Parser.TRUE, 0) + + def TYPE(self): + return self.getToken(VisualBasic6Parser.TYPE, 0) + + def TYPEOF(self): + return self.getToken(VisualBasic6Parser.TYPEOF, 0) + + def UNLOAD(self): + return self.getToken(VisualBasic6Parser.UNLOAD, 0) + + def UNLOCK(self): + return self.getToken(VisualBasic6Parser.UNLOCK, 0) + + def UNTIL(self): + return self.getToken(VisualBasic6Parser.UNTIL, 0) + + def VARIANT(self): + return self.getToken(VisualBasic6Parser.VARIANT, 0) + + def VERSION(self): + return self.getToken(VisualBasic6Parser.VERSION, 0) + + def WEND(self): + return self.getToken(VisualBasic6Parser.WEND, 0) + + def WHILE(self): + return self.getToken(VisualBasic6Parser.WHILE, 0) + + def WIDTH(self): + return self.getToken(VisualBasic6Parser.WIDTH, 0) + + def WITH(self): + return self.getToken(VisualBasic6Parser.WITH, 0) + + def WITHEVENTS(self): + return self.getToken(VisualBasic6Parser.WITHEVENTS, 0) + + def WRITE(self): + return self.getToken(VisualBasic6Parser.WRITE, 0) + + def XOR(self): + return self.getToken(VisualBasic6Parser.XOR, 0) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_ambiguousKeyword + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAmbiguousKeyword" ): + listener.enterAmbiguousKeyword(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAmbiguousKeyword" ): + listener.exitAmbiguousKeyword(self) + + + + + def ambiguousKeyword(self): + + localctx = VisualBasic6Parser.AmbiguousKeywordContext(self, self._ctx, self.state) + self.enterRule(localctx, 308, self.RULE_ambiguousKeyword) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2835 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 2251870182429423614) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -8087550153692545025) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 281474976710623) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IntegerLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INTEGERLITERAL(self): + return self.getToken(VisualBasic6Parser.INTEGERLITERAL, 0) + + def PLUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.PLUS) + else: + return self.getToken(VisualBasic6Parser.PLUS, i) + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.MINUS) + else: + return self.getToken(VisualBasic6Parser.MINUS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_integerLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntegerLiteral" ): + listener.enterIntegerLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntegerLiteral" ): + listener.exitIntegerLiteral(self) + + + + + def integerLiteral(self): + + localctx = VisualBasic6Parser.IntegerLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 310, self.RULE_integerLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2840 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==196 or _la==201: + self.state = 2837 + _la = self._input.LA(1) + if not(_la==196 or _la==201): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2842 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2843 + self.match(VisualBasic6Parser.INTEGERLITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OctalLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OCTALLITERAL(self): + return self.getToken(VisualBasic6Parser.OCTALLITERAL, 0) + + def PLUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.PLUS) + else: + return self.getToken(VisualBasic6Parser.PLUS, i) + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.MINUS) + else: + return self.getToken(VisualBasic6Parser.MINUS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_octalLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOctalLiteral" ): + listener.enterOctalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOctalLiteral" ): + listener.exitOctalLiteral(self) + + + + + def octalLiteral(self): + + localctx = VisualBasic6Parser.OctalLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 312, self.RULE_octalLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2848 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==196 or _la==201: + self.state = 2845 + _la = self._input.LA(1) + if not(_la==196 or _la==201): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2850 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2851 + self.match(VisualBasic6Parser.OCTALLITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DoubleLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOUBLELITERAL(self): + return self.getToken(VisualBasic6Parser.DOUBLELITERAL, 0) + + def PLUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.PLUS) + else: + return self.getToken(VisualBasic6Parser.PLUS, i) + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(VisualBasic6Parser.MINUS) + else: + return self.getToken(VisualBasic6Parser.MINUS, i) + + def getRuleIndex(self): + return VisualBasic6Parser.RULE_doubleLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoubleLiteral" ): + listener.enterDoubleLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoubleLiteral" ): + listener.exitDoubleLiteral(self) + + + + + def doubleLiteral(self): + + localctx = VisualBasic6Parser.DoubleLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 314, self.RULE_doubleLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2856 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==196 or _la==201: + self.state = 2853 + _la = self._input.LA(1) + if not(_la==196 or _la==201): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2858 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2859 + self.match(VisualBasic6Parser.DOUBLELITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[110] = self.valueStmt_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def valueStmt_sempred(self, localctx:ValueStmtContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 16) + + + if predIndex == 1: + return self.precpred(self._ctx, 14) + + + if predIndex == 2: + return self.precpred(self._ctx, 13) + + + if predIndex == 3: + return self.precpred(self._ctx, 12) + + + if predIndex == 4: + return self.precpred(self._ctx, 11) + + + if predIndex == 5: + return self.precpred(self._ctx, 10) + + + if predIndex == 6: + return self.precpred(self._ctx, 9) + + + if predIndex == 7: + return self.precpred(self._ctx, 7) + + + if predIndex == 8: + return self.precpred(self._ctx, 6) + + + if predIndex == 9: + return self.precpred(self._ctx, 5) + + + if predIndex == 10: + return self.precpred(self._ctx, 4) + + + if predIndex == 11: + return self.precpred(self._ctx, 3) + + + + + diff --git a/Analysis/vb_parser/VisualBasic6ParserListener.py b/Analysis/vb_parser/VisualBasic6ParserListener.py new file mode 100644 index 000000000..92a34f449 --- /dev/null +++ b/Analysis/vb_parser/VisualBasic6ParserListener.py @@ -0,0 +1,1686 @@ +# Generated from VisualBasic6Parser.g4 by ANTLR 4.13.1 +from antlr4 import * +if "." in __name__: + from .VisualBasic6Parser import VisualBasic6Parser +else: + from VisualBasic6Parser import VisualBasic6Parser + +# This class defines a complete listener for a parse tree produced by VisualBasic6Parser. +class VisualBasic6ParserListener(ParseTreeListener): + + # Enter a parse tree produced by VisualBasic6Parser#startRule. + def enterStartRule(self, ctx:VisualBasic6Parser.StartRuleContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#startRule. + def exitStartRule(self, ctx:VisualBasic6Parser.StartRuleContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#module. + def enterModule(self, ctx:VisualBasic6Parser.ModuleContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#module. + def exitModule(self, ctx:VisualBasic6Parser.ModuleContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleReferences. + def enterModuleReferences(self, ctx:VisualBasic6Parser.ModuleReferencesContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleReferences. + def exitModuleReferences(self, ctx:VisualBasic6Parser.ModuleReferencesContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleReference. + def enterModuleReference(self, ctx:VisualBasic6Parser.ModuleReferenceContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleReference. + def exitModuleReference(self, ctx:VisualBasic6Parser.ModuleReferenceContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleReferenceValue. + def enterModuleReferenceValue(self, ctx:VisualBasic6Parser.ModuleReferenceValueContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleReferenceValue. + def exitModuleReferenceValue(self, ctx:VisualBasic6Parser.ModuleReferenceValueContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleReferenceComponent. + def enterModuleReferenceComponent(self, ctx:VisualBasic6Parser.ModuleReferenceComponentContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleReferenceComponent. + def exitModuleReferenceComponent(self, ctx:VisualBasic6Parser.ModuleReferenceComponentContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleHeader. + def enterModuleHeader(self, ctx:VisualBasic6Parser.ModuleHeaderContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleHeader. + def exitModuleHeader(self, ctx:VisualBasic6Parser.ModuleHeaderContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleConfig. + def enterModuleConfig(self, ctx:VisualBasic6Parser.ModuleConfigContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleConfig. + def exitModuleConfig(self, ctx:VisualBasic6Parser.ModuleConfigContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleConfigElement. + def enterModuleConfigElement(self, ctx:VisualBasic6Parser.ModuleConfigElementContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleConfigElement. + def exitModuleConfigElement(self, ctx:VisualBasic6Parser.ModuleConfigElementContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleAttributes. + def enterModuleAttributes(self, ctx:VisualBasic6Parser.ModuleAttributesContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleAttributes. + def exitModuleAttributes(self, ctx:VisualBasic6Parser.ModuleAttributesContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleOptions. + def enterModuleOptions(self, ctx:VisualBasic6Parser.ModuleOptionsContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleOptions. + def exitModuleOptions(self, ctx:VisualBasic6Parser.ModuleOptionsContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#optionBaseStmt. + def enterOptionBaseStmt(self, ctx:VisualBasic6Parser.OptionBaseStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#optionBaseStmt. + def exitOptionBaseStmt(self, ctx:VisualBasic6Parser.OptionBaseStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#optionCompareStmt. + def enterOptionCompareStmt(self, ctx:VisualBasic6Parser.OptionCompareStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#optionCompareStmt. + def exitOptionCompareStmt(self, ctx:VisualBasic6Parser.OptionCompareStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#optionExplicitStmt. + def enterOptionExplicitStmt(self, ctx:VisualBasic6Parser.OptionExplicitStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#optionExplicitStmt. + def exitOptionExplicitStmt(self, ctx:VisualBasic6Parser.OptionExplicitStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#optionPrivateModuleStmt. + def enterOptionPrivateModuleStmt(self, ctx:VisualBasic6Parser.OptionPrivateModuleStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#optionPrivateModuleStmt. + def exitOptionPrivateModuleStmt(self, ctx:VisualBasic6Parser.OptionPrivateModuleStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleBody. + def enterModuleBody(self, ctx:VisualBasic6Parser.ModuleBodyContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleBody. + def exitModuleBody(self, ctx:VisualBasic6Parser.ModuleBodyContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleBodyElement. + def enterModuleBodyElement(self, ctx:VisualBasic6Parser.ModuleBodyElementContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleBodyElement. + def exitModuleBodyElement(self, ctx:VisualBasic6Parser.ModuleBodyElementContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#controlProperties. + def enterControlProperties(self, ctx:VisualBasic6Parser.ControlPropertiesContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#controlProperties. + def exitControlProperties(self, ctx:VisualBasic6Parser.ControlPropertiesContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_Properties. + def enterCp_Properties(self, ctx:VisualBasic6Parser.Cp_PropertiesContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_Properties. + def exitCp_Properties(self, ctx:VisualBasic6Parser.Cp_PropertiesContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_SingleProperty. + def enterCp_SingleProperty(self, ctx:VisualBasic6Parser.Cp_SinglePropertyContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_SingleProperty. + def exitCp_SingleProperty(self, ctx:VisualBasic6Parser.Cp_SinglePropertyContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_PropertyName. + def enterCp_PropertyName(self, ctx:VisualBasic6Parser.Cp_PropertyNameContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_PropertyName. + def exitCp_PropertyName(self, ctx:VisualBasic6Parser.Cp_PropertyNameContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_PropertyValue. + def enterCp_PropertyValue(self, ctx:VisualBasic6Parser.Cp_PropertyValueContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_PropertyValue. + def exitCp_PropertyValue(self, ctx:VisualBasic6Parser.Cp_PropertyValueContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_NestedProperty. + def enterCp_NestedProperty(self, ctx:VisualBasic6Parser.Cp_NestedPropertyContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_NestedProperty. + def exitCp_NestedProperty(self, ctx:VisualBasic6Parser.Cp_NestedPropertyContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_ControlType. + def enterCp_ControlType(self, ctx:VisualBasic6Parser.Cp_ControlTypeContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_ControlType. + def exitCp_ControlType(self, ctx:VisualBasic6Parser.Cp_ControlTypeContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#cp_ControlIdentifier. + def enterCp_ControlIdentifier(self, ctx:VisualBasic6Parser.Cp_ControlIdentifierContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#cp_ControlIdentifier. + def exitCp_ControlIdentifier(self, ctx:VisualBasic6Parser.Cp_ControlIdentifierContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#moduleBlock. + def enterModuleBlock(self, ctx:VisualBasic6Parser.ModuleBlockContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#moduleBlock. + def exitModuleBlock(self, ctx:VisualBasic6Parser.ModuleBlockContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#attributeStmt. + def enterAttributeStmt(self, ctx:VisualBasic6Parser.AttributeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#attributeStmt. + def exitAttributeStmt(self, ctx:VisualBasic6Parser.AttributeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#block. + def enterBlock(self, ctx:VisualBasic6Parser.BlockContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#block. + def exitBlock(self, ctx:VisualBasic6Parser.BlockContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#blockStmt. + def enterBlockStmt(self, ctx:VisualBasic6Parser.BlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#blockStmt. + def exitBlockStmt(self, ctx:VisualBasic6Parser.BlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#appActivateStmt. + def enterAppActivateStmt(self, ctx:VisualBasic6Parser.AppActivateStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#appActivateStmt. + def exitAppActivateStmt(self, ctx:VisualBasic6Parser.AppActivateStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#beepStmt. + def enterBeepStmt(self, ctx:VisualBasic6Parser.BeepStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#beepStmt. + def exitBeepStmt(self, ctx:VisualBasic6Parser.BeepStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#chDirStmt. + def enterChDirStmt(self, ctx:VisualBasic6Parser.ChDirStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#chDirStmt. + def exitChDirStmt(self, ctx:VisualBasic6Parser.ChDirStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#chDriveStmt. + def enterChDriveStmt(self, ctx:VisualBasic6Parser.ChDriveStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#chDriveStmt. + def exitChDriveStmt(self, ctx:VisualBasic6Parser.ChDriveStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#closeStmt. + def enterCloseStmt(self, ctx:VisualBasic6Parser.CloseStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#closeStmt. + def exitCloseStmt(self, ctx:VisualBasic6Parser.CloseStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#constStmt. + def enterConstStmt(self, ctx:VisualBasic6Parser.ConstStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#constStmt. + def exitConstStmt(self, ctx:VisualBasic6Parser.ConstStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#constSubStmt. + def enterConstSubStmt(self, ctx:VisualBasic6Parser.ConstSubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#constSubStmt. + def exitConstSubStmt(self, ctx:VisualBasic6Parser.ConstSubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#dateStmt. + def enterDateStmt(self, ctx:VisualBasic6Parser.DateStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#dateStmt. + def exitDateStmt(self, ctx:VisualBasic6Parser.DateStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#declareStmt. + def enterDeclareStmt(self, ctx:VisualBasic6Parser.DeclareStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#declareStmt. + def exitDeclareStmt(self, ctx:VisualBasic6Parser.DeclareStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#deftypeStmt. + def enterDeftypeStmt(self, ctx:VisualBasic6Parser.DeftypeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#deftypeStmt. + def exitDeftypeStmt(self, ctx:VisualBasic6Parser.DeftypeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#deleteSettingStmt. + def enterDeleteSettingStmt(self, ctx:VisualBasic6Parser.DeleteSettingStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#deleteSettingStmt. + def exitDeleteSettingStmt(self, ctx:VisualBasic6Parser.DeleteSettingStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#doLoopStmt. + def enterDoLoopStmt(self, ctx:VisualBasic6Parser.DoLoopStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#doLoopStmt. + def exitDoLoopStmt(self, ctx:VisualBasic6Parser.DoLoopStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#endStmt. + def enterEndStmt(self, ctx:VisualBasic6Parser.EndStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#endStmt. + def exitEndStmt(self, ctx:VisualBasic6Parser.EndStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#enumerationStmt. + def enterEnumerationStmt(self, ctx:VisualBasic6Parser.EnumerationStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#enumerationStmt. + def exitEnumerationStmt(self, ctx:VisualBasic6Parser.EnumerationStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#enumerationStmt_Constant. + def enterEnumerationStmt_Constant(self, ctx:VisualBasic6Parser.EnumerationStmt_ConstantContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#enumerationStmt_Constant. + def exitEnumerationStmt_Constant(self, ctx:VisualBasic6Parser.EnumerationStmt_ConstantContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#eraseStmt. + def enterEraseStmt(self, ctx:VisualBasic6Parser.EraseStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#eraseStmt. + def exitEraseStmt(self, ctx:VisualBasic6Parser.EraseStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#errorStmt. + def enterErrorStmt(self, ctx:VisualBasic6Parser.ErrorStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#errorStmt. + def exitErrorStmt(self, ctx:VisualBasic6Parser.ErrorStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#eventStmt. + def enterEventStmt(self, ctx:VisualBasic6Parser.EventStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#eventStmt. + def exitEventStmt(self, ctx:VisualBasic6Parser.EventStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#exitStmt. + def enterExitStmt(self, ctx:VisualBasic6Parser.ExitStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#exitStmt. + def exitExitStmt(self, ctx:VisualBasic6Parser.ExitStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#filecopyStmt. + def enterFilecopyStmt(self, ctx:VisualBasic6Parser.FilecopyStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#filecopyStmt. + def exitFilecopyStmt(self, ctx:VisualBasic6Parser.FilecopyStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#forEachStmt. + def enterForEachStmt(self, ctx:VisualBasic6Parser.ForEachStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#forEachStmt. + def exitForEachStmt(self, ctx:VisualBasic6Parser.ForEachStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#forNextStmt. + def enterForNextStmt(self, ctx:VisualBasic6Parser.ForNextStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#forNextStmt. + def exitForNextStmt(self, ctx:VisualBasic6Parser.ForNextStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#functionStmt. + def enterFunctionStmt(self, ctx:VisualBasic6Parser.FunctionStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#functionStmt. + def exitFunctionStmt(self, ctx:VisualBasic6Parser.FunctionStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#getStmt. + def enterGetStmt(self, ctx:VisualBasic6Parser.GetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#getStmt. + def exitGetStmt(self, ctx:VisualBasic6Parser.GetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#goSubStmt. + def enterGoSubStmt(self, ctx:VisualBasic6Parser.GoSubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#goSubStmt. + def exitGoSubStmt(self, ctx:VisualBasic6Parser.GoSubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#goToStmt. + def enterGoToStmt(self, ctx:VisualBasic6Parser.GoToStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#goToStmt. + def exitGoToStmt(self, ctx:VisualBasic6Parser.GoToStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#inlineIfThenElse. + def enterInlineIfThenElse(self, ctx:VisualBasic6Parser.InlineIfThenElseContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#inlineIfThenElse. + def exitInlineIfThenElse(self, ctx:VisualBasic6Parser.InlineIfThenElseContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#blockIfThenElse. + def enterBlockIfThenElse(self, ctx:VisualBasic6Parser.BlockIfThenElseContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#blockIfThenElse. + def exitBlockIfThenElse(self, ctx:VisualBasic6Parser.BlockIfThenElseContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ifBlockStmt. + def enterIfBlockStmt(self, ctx:VisualBasic6Parser.IfBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ifBlockStmt. + def exitIfBlockStmt(self, ctx:VisualBasic6Parser.IfBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ifConditionStmt. + def enterIfConditionStmt(self, ctx:VisualBasic6Parser.IfConditionStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ifConditionStmt. + def exitIfConditionStmt(self, ctx:VisualBasic6Parser.IfConditionStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ifElseIfBlockStmt. + def enterIfElseIfBlockStmt(self, ctx:VisualBasic6Parser.IfElseIfBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ifElseIfBlockStmt. + def exitIfElseIfBlockStmt(self, ctx:VisualBasic6Parser.IfElseIfBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ifElseBlockStmt. + def enterIfElseBlockStmt(self, ctx:VisualBasic6Parser.IfElseBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ifElseBlockStmt. + def exitIfElseBlockStmt(self, ctx:VisualBasic6Parser.IfElseBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#implementsStmt. + def enterImplementsStmt(self, ctx:VisualBasic6Parser.ImplementsStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#implementsStmt. + def exitImplementsStmt(self, ctx:VisualBasic6Parser.ImplementsStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#inputStmt. + def enterInputStmt(self, ctx:VisualBasic6Parser.InputStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#inputStmt. + def exitInputStmt(self, ctx:VisualBasic6Parser.InputStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#killStmt. + def enterKillStmt(self, ctx:VisualBasic6Parser.KillStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#killStmt. + def exitKillStmt(self, ctx:VisualBasic6Parser.KillStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#letStmt. + def enterLetStmt(self, ctx:VisualBasic6Parser.LetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#letStmt. + def exitLetStmt(self, ctx:VisualBasic6Parser.LetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#lineInputStmt. + def enterLineInputStmt(self, ctx:VisualBasic6Parser.LineInputStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#lineInputStmt. + def exitLineInputStmt(self, ctx:VisualBasic6Parser.LineInputStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#loadStmt. + def enterLoadStmt(self, ctx:VisualBasic6Parser.LoadStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#loadStmt. + def exitLoadStmt(self, ctx:VisualBasic6Parser.LoadStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#lockStmt. + def enterLockStmt(self, ctx:VisualBasic6Parser.LockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#lockStmt. + def exitLockStmt(self, ctx:VisualBasic6Parser.LockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#lsetStmt. + def enterLsetStmt(self, ctx:VisualBasic6Parser.LsetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#lsetStmt. + def exitLsetStmt(self, ctx:VisualBasic6Parser.LsetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#macroIfThenElseStmt. + def enterMacroIfThenElseStmt(self, ctx:VisualBasic6Parser.MacroIfThenElseStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#macroIfThenElseStmt. + def exitMacroIfThenElseStmt(self, ctx:VisualBasic6Parser.MacroIfThenElseStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#macroIfBlockStmt. + def enterMacroIfBlockStmt(self, ctx:VisualBasic6Parser.MacroIfBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#macroIfBlockStmt. + def exitMacroIfBlockStmt(self, ctx:VisualBasic6Parser.MacroIfBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#macroElseIfBlockStmt. + def enterMacroElseIfBlockStmt(self, ctx:VisualBasic6Parser.MacroElseIfBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#macroElseIfBlockStmt. + def exitMacroElseIfBlockStmt(self, ctx:VisualBasic6Parser.MacroElseIfBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#macroElseBlockStmt. + def enterMacroElseBlockStmt(self, ctx:VisualBasic6Parser.MacroElseBlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#macroElseBlockStmt. + def exitMacroElseBlockStmt(self, ctx:VisualBasic6Parser.MacroElseBlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#midStmt. + def enterMidStmt(self, ctx:VisualBasic6Parser.MidStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#midStmt. + def exitMidStmt(self, ctx:VisualBasic6Parser.MidStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#mkdirStmt. + def enterMkdirStmt(self, ctx:VisualBasic6Parser.MkdirStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#mkdirStmt. + def exitMkdirStmt(self, ctx:VisualBasic6Parser.MkdirStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#nameStmt. + def enterNameStmt(self, ctx:VisualBasic6Parser.NameStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#nameStmt. + def exitNameStmt(self, ctx:VisualBasic6Parser.NameStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#onErrorStmt. + def enterOnErrorStmt(self, ctx:VisualBasic6Parser.OnErrorStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#onErrorStmt. + def exitOnErrorStmt(self, ctx:VisualBasic6Parser.OnErrorStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#onGoToStmt. + def enterOnGoToStmt(self, ctx:VisualBasic6Parser.OnGoToStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#onGoToStmt. + def exitOnGoToStmt(self, ctx:VisualBasic6Parser.OnGoToStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#onGoSubStmt. + def enterOnGoSubStmt(self, ctx:VisualBasic6Parser.OnGoSubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#onGoSubStmt. + def exitOnGoSubStmt(self, ctx:VisualBasic6Parser.OnGoSubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#openStmt. + def enterOpenStmt(self, ctx:VisualBasic6Parser.OpenStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#openStmt. + def exitOpenStmt(self, ctx:VisualBasic6Parser.OpenStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#outputList. + def enterOutputList(self, ctx:VisualBasic6Parser.OutputListContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#outputList. + def exitOutputList(self, ctx:VisualBasic6Parser.OutputListContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#outputList_Expression. + def enterOutputList_Expression(self, ctx:VisualBasic6Parser.OutputList_ExpressionContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#outputList_Expression. + def exitOutputList_Expression(self, ctx:VisualBasic6Parser.OutputList_ExpressionContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#printStmt. + def enterPrintStmt(self, ctx:VisualBasic6Parser.PrintStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#printStmt. + def exitPrintStmt(self, ctx:VisualBasic6Parser.PrintStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#propertyGetStmt. + def enterPropertyGetStmt(self, ctx:VisualBasic6Parser.PropertyGetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#propertyGetStmt. + def exitPropertyGetStmt(self, ctx:VisualBasic6Parser.PropertyGetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#propertySetStmt. + def enterPropertySetStmt(self, ctx:VisualBasic6Parser.PropertySetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#propertySetStmt. + def exitPropertySetStmt(self, ctx:VisualBasic6Parser.PropertySetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#propertyLetStmt. + def enterPropertyLetStmt(self, ctx:VisualBasic6Parser.PropertyLetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#propertyLetStmt. + def exitPropertyLetStmt(self, ctx:VisualBasic6Parser.PropertyLetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#putStmt. + def enterPutStmt(self, ctx:VisualBasic6Parser.PutStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#putStmt. + def exitPutStmt(self, ctx:VisualBasic6Parser.PutStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#raiseEventStmt. + def enterRaiseEventStmt(self, ctx:VisualBasic6Parser.RaiseEventStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#raiseEventStmt. + def exitRaiseEventStmt(self, ctx:VisualBasic6Parser.RaiseEventStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#randomizeStmt. + def enterRandomizeStmt(self, ctx:VisualBasic6Parser.RandomizeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#randomizeStmt. + def exitRandomizeStmt(self, ctx:VisualBasic6Parser.RandomizeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#redimStmt. + def enterRedimStmt(self, ctx:VisualBasic6Parser.RedimStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#redimStmt. + def exitRedimStmt(self, ctx:VisualBasic6Parser.RedimStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#redimSubStmt. + def enterRedimSubStmt(self, ctx:VisualBasic6Parser.RedimSubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#redimSubStmt. + def exitRedimSubStmt(self, ctx:VisualBasic6Parser.RedimSubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#resetStmt. + def enterResetStmt(self, ctx:VisualBasic6Parser.ResetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#resetStmt. + def exitResetStmt(self, ctx:VisualBasic6Parser.ResetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#resumeStmt. + def enterResumeStmt(self, ctx:VisualBasic6Parser.ResumeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#resumeStmt. + def exitResumeStmt(self, ctx:VisualBasic6Parser.ResumeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#returnStmt. + def enterReturnStmt(self, ctx:VisualBasic6Parser.ReturnStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#returnStmt. + def exitReturnStmt(self, ctx:VisualBasic6Parser.ReturnStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#rmdirStmt. + def enterRmdirStmt(self, ctx:VisualBasic6Parser.RmdirStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#rmdirStmt. + def exitRmdirStmt(self, ctx:VisualBasic6Parser.RmdirStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#rsetStmt. + def enterRsetStmt(self, ctx:VisualBasic6Parser.RsetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#rsetStmt. + def exitRsetStmt(self, ctx:VisualBasic6Parser.RsetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#savepictureStmt. + def enterSavepictureStmt(self, ctx:VisualBasic6Parser.SavepictureStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#savepictureStmt. + def exitSavepictureStmt(self, ctx:VisualBasic6Parser.SavepictureStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#saveSettingStmt. + def enterSaveSettingStmt(self, ctx:VisualBasic6Parser.SaveSettingStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#saveSettingStmt. + def exitSaveSettingStmt(self, ctx:VisualBasic6Parser.SaveSettingStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#seekStmt. + def enterSeekStmt(self, ctx:VisualBasic6Parser.SeekStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#seekStmt. + def exitSeekStmt(self, ctx:VisualBasic6Parser.SeekStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#selectCaseStmt. + def enterSelectCaseStmt(self, ctx:VisualBasic6Parser.SelectCaseStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#selectCaseStmt. + def exitSelectCaseStmt(self, ctx:VisualBasic6Parser.SelectCaseStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#sC_Case. + def enterSC_Case(self, ctx:VisualBasic6Parser.SC_CaseContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#sC_Case. + def exitSC_Case(self, ctx:VisualBasic6Parser.SC_CaseContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#caseCondElse. + def enterCaseCondElse(self, ctx:VisualBasic6Parser.CaseCondElseContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#caseCondElse. + def exitCaseCondElse(self, ctx:VisualBasic6Parser.CaseCondElseContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#caseCondExpr. + def enterCaseCondExpr(self, ctx:VisualBasic6Parser.CaseCondExprContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#caseCondExpr. + def exitCaseCondExpr(self, ctx:VisualBasic6Parser.CaseCondExprContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#caseCondExprIs. + def enterCaseCondExprIs(self, ctx:VisualBasic6Parser.CaseCondExprIsContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#caseCondExprIs. + def exitCaseCondExprIs(self, ctx:VisualBasic6Parser.CaseCondExprIsContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#caseCondExprValue. + def enterCaseCondExprValue(self, ctx:VisualBasic6Parser.CaseCondExprValueContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#caseCondExprValue. + def exitCaseCondExprValue(self, ctx:VisualBasic6Parser.CaseCondExprValueContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#caseCondExprTo. + def enterCaseCondExprTo(self, ctx:VisualBasic6Parser.CaseCondExprToContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#caseCondExprTo. + def exitCaseCondExprTo(self, ctx:VisualBasic6Parser.CaseCondExprToContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#sendkeysStmt. + def enterSendkeysStmt(self, ctx:VisualBasic6Parser.SendkeysStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#sendkeysStmt. + def exitSendkeysStmt(self, ctx:VisualBasic6Parser.SendkeysStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#setattrStmt. + def enterSetattrStmt(self, ctx:VisualBasic6Parser.SetattrStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#setattrStmt. + def exitSetattrStmt(self, ctx:VisualBasic6Parser.SetattrStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#setStmt. + def enterSetStmt(self, ctx:VisualBasic6Parser.SetStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#setStmt. + def exitSetStmt(self, ctx:VisualBasic6Parser.SetStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#stopStmt. + def enterStopStmt(self, ctx:VisualBasic6Parser.StopStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#stopStmt. + def exitStopStmt(self, ctx:VisualBasic6Parser.StopStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#subStmt. + def enterSubStmt(self, ctx:VisualBasic6Parser.SubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#subStmt. + def exitSubStmt(self, ctx:VisualBasic6Parser.SubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#timeStmt. + def enterTimeStmt(self, ctx:VisualBasic6Parser.TimeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#timeStmt. + def exitTimeStmt(self, ctx:VisualBasic6Parser.TimeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#typeStmt. + def enterTypeStmt(self, ctx:VisualBasic6Parser.TypeStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#typeStmt. + def exitTypeStmt(self, ctx:VisualBasic6Parser.TypeStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#typeStmt_Element. + def enterTypeStmt_Element(self, ctx:VisualBasic6Parser.TypeStmt_ElementContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#typeStmt_Element. + def exitTypeStmt_Element(self, ctx:VisualBasic6Parser.TypeStmt_ElementContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#typeOfStmt. + def enterTypeOfStmt(self, ctx:VisualBasic6Parser.TypeOfStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#typeOfStmt. + def exitTypeOfStmt(self, ctx:VisualBasic6Parser.TypeOfStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#unloadStmt. + def enterUnloadStmt(self, ctx:VisualBasic6Parser.UnloadStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#unloadStmt. + def exitUnloadStmt(self, ctx:VisualBasic6Parser.UnloadStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#unlockStmt. + def enterUnlockStmt(self, ctx:VisualBasic6Parser.UnlockStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#unlockStmt. + def exitUnlockStmt(self, ctx:VisualBasic6Parser.UnlockStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsAssign. + def enterVsAssign(self, ctx:VisualBasic6Parser.VsAssignContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsAssign. + def exitVsAssign(self, ctx:VisualBasic6Parser.VsAssignContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsNot. + def enterVsNot(self, ctx:VisualBasic6Parser.VsNotContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsNot. + def exitVsNot(self, ctx:VisualBasic6Parser.VsNotContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsStruct. + def enterVsStruct(self, ctx:VisualBasic6Parser.VsStructContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsStruct. + def exitVsStruct(self, ctx:VisualBasic6Parser.VsStructContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsMultDiv. + def enterVsMultDiv(self, ctx:VisualBasic6Parser.VsMultDivContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsMultDiv. + def exitVsMultDiv(self, ctx:VisualBasic6Parser.VsMultDivContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsTypeOf. + def enterVsTypeOf(self, ctx:VisualBasic6Parser.VsTypeOfContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsTypeOf. + def exitVsTypeOf(self, ctx:VisualBasic6Parser.VsTypeOfContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsICS. + def enterVsICS(self, ctx:VisualBasic6Parser.VsICSContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsICS. + def exitVsICS(self, ctx:VisualBasic6Parser.VsICSContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsXor. + def enterVsXor(self, ctx:VisualBasic6Parser.VsXorContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsXor. + def exitVsXor(self, ctx:VisualBasic6Parser.VsXorContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsAddSub. + def enterVsAddSub(self, ctx:VisualBasic6Parser.VsAddSubContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsAddSub. + def exitVsAddSub(self, ctx:VisualBasic6Parser.VsAddSubContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsAnd. + def enterVsAnd(self, ctx:VisualBasic6Parser.VsAndContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsAnd. + def exitVsAnd(self, ctx:VisualBasic6Parser.VsAndContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsPow. + def enterVsPow(self, ctx:VisualBasic6Parser.VsPowContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsPow. + def exitVsPow(self, ctx:VisualBasic6Parser.VsPowContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsMod. + def enterVsMod(self, ctx:VisualBasic6Parser.VsModContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsMod. + def exitVsMod(self, ctx:VisualBasic6Parser.VsModContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsAmp. + def enterVsAmp(self, ctx:VisualBasic6Parser.VsAmpContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsAmp. + def exitVsAmp(self, ctx:VisualBasic6Parser.VsAmpContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsAddressOf. + def enterVsAddressOf(self, ctx:VisualBasic6Parser.VsAddressOfContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsAddressOf. + def exitVsAddressOf(self, ctx:VisualBasic6Parser.VsAddressOfContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsNew. + def enterVsNew(self, ctx:VisualBasic6Parser.VsNewContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsNew. + def exitVsNew(self, ctx:VisualBasic6Parser.VsNewContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsPlusMinus. + def enterVsPlusMinus(self, ctx:VisualBasic6Parser.VsPlusMinusContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsPlusMinus. + def exitVsPlusMinus(self, ctx:VisualBasic6Parser.VsPlusMinusContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsIDiv. + def enterVsIDiv(self, ctx:VisualBasic6Parser.VsIDivContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsIDiv. + def exitVsIDiv(self, ctx:VisualBasic6Parser.VsIDivContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsOr. + def enterVsOr(self, ctx:VisualBasic6Parser.VsOrContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsOr. + def exitVsOr(self, ctx:VisualBasic6Parser.VsOrContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsLiteral. + def enterVsLiteral(self, ctx:VisualBasic6Parser.VsLiteralContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsLiteral. + def exitVsLiteral(self, ctx:VisualBasic6Parser.VsLiteralContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsEqv. + def enterVsEqv(self, ctx:VisualBasic6Parser.VsEqvContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsEqv. + def exitVsEqv(self, ctx:VisualBasic6Parser.VsEqvContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsImp. + def enterVsImp(self, ctx:VisualBasic6Parser.VsImpContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsImp. + def exitVsImp(self, ctx:VisualBasic6Parser.VsImpContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsComp. + def enterVsComp(self, ctx:VisualBasic6Parser.VsCompContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsComp. + def exitVsComp(self, ctx:VisualBasic6Parser.VsCompContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#vsMid. + def enterVsMid(self, ctx:VisualBasic6Parser.VsMidContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#vsMid. + def exitVsMid(self, ctx:VisualBasic6Parser.VsMidContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#variableStmt. + def enterVariableStmt(self, ctx:VisualBasic6Parser.VariableStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#variableStmt. + def exitVariableStmt(self, ctx:VisualBasic6Parser.VariableStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#variableListStmt. + def enterVariableListStmt(self, ctx:VisualBasic6Parser.VariableListStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#variableListStmt. + def exitVariableListStmt(self, ctx:VisualBasic6Parser.VariableListStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#variableSubStmt. + def enterVariableSubStmt(self, ctx:VisualBasic6Parser.VariableSubStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#variableSubStmt. + def exitVariableSubStmt(self, ctx:VisualBasic6Parser.VariableSubStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#whileWendStmt. + def enterWhileWendStmt(self, ctx:VisualBasic6Parser.WhileWendStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#whileWendStmt. + def exitWhileWendStmt(self, ctx:VisualBasic6Parser.WhileWendStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#widthStmt. + def enterWidthStmt(self, ctx:VisualBasic6Parser.WidthStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#widthStmt. + def exitWidthStmt(self, ctx:VisualBasic6Parser.WidthStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#withStmt. + def enterWithStmt(self, ctx:VisualBasic6Parser.WithStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#withStmt. + def exitWithStmt(self, ctx:VisualBasic6Parser.WithStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#writeStmt. + def enterWriteStmt(self, ctx:VisualBasic6Parser.WriteStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#writeStmt. + def exitWriteStmt(self, ctx:VisualBasic6Parser.WriteStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#explicitCallStmt. + def enterExplicitCallStmt(self, ctx:VisualBasic6Parser.ExplicitCallStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#explicitCallStmt. + def exitExplicitCallStmt(self, ctx:VisualBasic6Parser.ExplicitCallStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#eCS_ProcedureCall. + def enterECS_ProcedureCall(self, ctx:VisualBasic6Parser.ECS_ProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#eCS_ProcedureCall. + def exitECS_ProcedureCall(self, ctx:VisualBasic6Parser.ECS_ProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#eCS_MemberProcedureCall. + def enterECS_MemberProcedureCall(self, ctx:VisualBasic6Parser.ECS_MemberProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#eCS_MemberProcedureCall. + def exitECS_MemberProcedureCall(self, ctx:VisualBasic6Parser.ECS_MemberProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#implicitCallStmt_InBlock. + def enterImplicitCallStmt_InBlock(self, ctx:VisualBasic6Parser.ImplicitCallStmt_InBlockContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#implicitCallStmt_InBlock. + def exitImplicitCallStmt_InBlock(self, ctx:VisualBasic6Parser.ImplicitCallStmt_InBlockContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_B_ProcedureCall. + def enterICS_B_ProcedureCall(self, ctx:VisualBasic6Parser.ICS_B_ProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_B_ProcedureCall. + def exitICS_B_ProcedureCall(self, ctx:VisualBasic6Parser.ICS_B_ProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_B_MemberProcedureCall. + def enterICS_B_MemberProcedureCall(self, ctx:VisualBasic6Parser.ICS_B_MemberProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_B_MemberProcedureCall. + def exitICS_B_MemberProcedureCall(self, ctx:VisualBasic6Parser.ICS_B_MemberProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#implicitCallStmt_InStmt. + def enterImplicitCallStmt_InStmt(self, ctx:VisualBasic6Parser.ImplicitCallStmt_InStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#implicitCallStmt_InStmt. + def exitImplicitCallStmt_InStmt(self, ctx:VisualBasic6Parser.ImplicitCallStmt_InStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_VariableOrProcedureCall. + def enterICS_S_VariableOrProcedureCall(self, ctx:VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_VariableOrProcedureCall. + def exitICS_S_VariableOrProcedureCall(self, ctx:VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_ProcedureOrArrayCall. + def enterICS_S_ProcedureOrArrayCall(self, ctx:VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_ProcedureOrArrayCall. + def exitICS_S_ProcedureOrArrayCall(self, ctx:VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_NestedProcedureCall. + def enterICS_S_NestedProcedureCall(self, ctx:VisualBasic6Parser.ICS_S_NestedProcedureCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_NestedProcedureCall. + def exitICS_S_NestedProcedureCall(self, ctx:VisualBasic6Parser.ICS_S_NestedProcedureCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_MembersCall. + def enterICS_S_MembersCall(self, ctx:VisualBasic6Parser.ICS_S_MembersCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_MembersCall. + def exitICS_S_MembersCall(self, ctx:VisualBasic6Parser.ICS_S_MembersCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_MemberCall. + def enterICS_S_MemberCall(self, ctx:VisualBasic6Parser.ICS_S_MemberCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_MemberCall. + def exitICS_S_MemberCall(self, ctx:VisualBasic6Parser.ICS_S_MemberCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#iCS_S_DictionaryCall. + def enterICS_S_DictionaryCall(self, ctx:VisualBasic6Parser.ICS_S_DictionaryCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#iCS_S_DictionaryCall. + def exitICS_S_DictionaryCall(self, ctx:VisualBasic6Parser.ICS_S_DictionaryCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#argsCall. + def enterArgsCall(self, ctx:VisualBasic6Parser.ArgsCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#argsCall. + def exitArgsCall(self, ctx:VisualBasic6Parser.ArgsCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#argCall. + def enterArgCall(self, ctx:VisualBasic6Parser.ArgCallContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#argCall. + def exitArgCall(self, ctx:VisualBasic6Parser.ArgCallContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#dictionaryCallStmt. + def enterDictionaryCallStmt(self, ctx:VisualBasic6Parser.DictionaryCallStmtContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#dictionaryCallStmt. + def exitDictionaryCallStmt(self, ctx:VisualBasic6Parser.DictionaryCallStmtContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#argList. + def enterArgList(self, ctx:VisualBasic6Parser.ArgListContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#argList. + def exitArgList(self, ctx:VisualBasic6Parser.ArgListContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#arg. + def enterArg(self, ctx:VisualBasic6Parser.ArgContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#arg. + def exitArg(self, ctx:VisualBasic6Parser.ArgContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#argDefaultValue. + def enterArgDefaultValue(self, ctx:VisualBasic6Parser.ArgDefaultValueContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#argDefaultValue. + def exitArgDefaultValue(self, ctx:VisualBasic6Parser.ArgDefaultValueContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#subscripts. + def enterSubscripts(self, ctx:VisualBasic6Parser.SubscriptsContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#subscripts. + def exitSubscripts(self, ctx:VisualBasic6Parser.SubscriptsContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#subscript_. + def enterSubscript_(self, ctx:VisualBasic6Parser.Subscript_Context): + pass + + # Exit a parse tree produced by VisualBasic6Parser#subscript_. + def exitSubscript_(self, ctx:VisualBasic6Parser.Subscript_Context): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ambiguousIdentifier. + def enterAmbiguousIdentifier(self, ctx:VisualBasic6Parser.AmbiguousIdentifierContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ambiguousIdentifier. + def exitAmbiguousIdentifier(self, ctx:VisualBasic6Parser.AmbiguousIdentifierContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#asTypeClause. + def enterAsTypeClause(self, ctx:VisualBasic6Parser.AsTypeClauseContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#asTypeClause. + def exitAsTypeClause(self, ctx:VisualBasic6Parser.AsTypeClauseContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#baseType. + def enterBaseType(self, ctx:VisualBasic6Parser.BaseTypeContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#baseType. + def exitBaseType(self, ctx:VisualBasic6Parser.BaseTypeContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#certainIdentifier. + def enterCertainIdentifier(self, ctx:VisualBasic6Parser.CertainIdentifierContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#certainIdentifier. + def exitCertainIdentifier(self, ctx:VisualBasic6Parser.CertainIdentifierContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#comparisonOperator. + def enterComparisonOperator(self, ctx:VisualBasic6Parser.ComparisonOperatorContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#comparisonOperator. + def exitComparisonOperator(self, ctx:VisualBasic6Parser.ComparisonOperatorContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#complexType. + def enterComplexType(self, ctx:VisualBasic6Parser.ComplexTypeContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#complexType. + def exitComplexType(self, ctx:VisualBasic6Parser.ComplexTypeContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#fieldLength. + def enterFieldLength(self, ctx:VisualBasic6Parser.FieldLengthContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#fieldLength. + def exitFieldLength(self, ctx:VisualBasic6Parser.FieldLengthContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#letterrange. + def enterLetterrange(self, ctx:VisualBasic6Parser.LetterrangeContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#letterrange. + def exitLetterrange(self, ctx:VisualBasic6Parser.LetterrangeContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#lineLabel. + def enterLineLabel(self, ctx:VisualBasic6Parser.LineLabelContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#lineLabel. + def exitLineLabel(self, ctx:VisualBasic6Parser.LineLabelContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#literal. + def enterLiteral(self, ctx:VisualBasic6Parser.LiteralContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#literal. + def exitLiteral(self, ctx:VisualBasic6Parser.LiteralContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#publicPrivateVisibility. + def enterPublicPrivateVisibility(self, ctx:VisualBasic6Parser.PublicPrivateVisibilityContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#publicPrivateVisibility. + def exitPublicPrivateVisibility(self, ctx:VisualBasic6Parser.PublicPrivateVisibilityContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#publicPrivateGlobalVisibility. + def enterPublicPrivateGlobalVisibility(self, ctx:VisualBasic6Parser.PublicPrivateGlobalVisibilityContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#publicPrivateGlobalVisibility. + def exitPublicPrivateGlobalVisibility(self, ctx:VisualBasic6Parser.PublicPrivateGlobalVisibilityContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#type_. + def enterType_(self, ctx:VisualBasic6Parser.Type_Context): + pass + + # Exit a parse tree produced by VisualBasic6Parser#type_. + def exitType_(self, ctx:VisualBasic6Parser.Type_Context): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#typeHint. + def enterTypeHint(self, ctx:VisualBasic6Parser.TypeHintContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#typeHint. + def exitTypeHint(self, ctx:VisualBasic6Parser.TypeHintContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#visibility. + def enterVisibility(self, ctx:VisualBasic6Parser.VisibilityContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#visibility. + def exitVisibility(self, ctx:VisualBasic6Parser.VisibilityContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#ambiguousKeyword. + def enterAmbiguousKeyword(self, ctx:VisualBasic6Parser.AmbiguousKeywordContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#ambiguousKeyword. + def exitAmbiguousKeyword(self, ctx:VisualBasic6Parser.AmbiguousKeywordContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#integerLiteral. + def enterIntegerLiteral(self, ctx:VisualBasic6Parser.IntegerLiteralContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#integerLiteral. + def exitIntegerLiteral(self, ctx:VisualBasic6Parser.IntegerLiteralContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#octalLiteral. + def enterOctalLiteral(self, ctx:VisualBasic6Parser.OctalLiteralContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#octalLiteral. + def exitOctalLiteral(self, ctx:VisualBasic6Parser.OctalLiteralContext): + pass + + + # Enter a parse tree produced by VisualBasic6Parser#doubleLiteral. + def enterDoubleLiteral(self, ctx:VisualBasic6Parser.DoubleLiteralContext): + pass + + # Exit a parse tree produced by VisualBasic6Parser#doubleLiteral. + def exitDoubleLiteral(self, ctx:VisualBasic6Parser.DoubleLiteralContext): + pass + + + +del VisualBasic6Parser \ No newline at end of file diff --git a/Analysis/vb_parser/make_converted_func.py b/Analysis/vb_parser/make_converted_func.py new file mode 100644 index 000000000..b5e3f6ce3 --- /dev/null +++ b/Analysis/vb_parser/make_converted_func.py @@ -0,0 +1,620 @@ +from smbx_vb_tools import * + +funcList, funcArgStrs = getFuncList() +translatedFuncs = { + "Int": "::floor", # VB6 Int(x) is floor(x) + "Rnd": "VB6RNG::generateNumber", # VB6 Rnd() is VB6RNG::generateNumber() +} + +class VBTranslator: + parser : VisualBasic6Parser = None + callInSegment : [bool] + def __init__(self , parser : VisualBasic6Parser): + self.parser = parser + self.callInSegment = [False] + + def typeToC(self, asTypeClause : VisualBasic6Parser.AsTypeClauseContext) -> str: + if asTypeClause.fieldLength(): + raise NotImplementedError() + type_ = asTypeClause.type_().getText() + if type_ in basicTypes: + return basicTypes[type_].cName, basicTypes[type_].cInit + else: + return f'SMBX13::Types::{type_}_t', '{}' + + def parseArgList(self, argList : VisualBasic6Parser.ArgListContext) -> str: + argsC = [] + for arg in argList.arg(): + # Get by val or reference + byVal = arg.BYVAL() + if byVal != None: + byVal = True + else: + byVal = False + byRef = not byVal + + if arg.asTypeClause(): + varType, cInit = self.typeToC(arg.asTypeClause()) + if byRef: + varType += "&" + else: + varType = "void*" + varName = arg.ambiguousIdentifier().getText() + if varName == "bool": + varName += "_" + + argsC.append(f'{varType} {varName}') + argListC = ", ".join(argsC) + + return argListC + + def parseArgDefaults(self, argStr): + inputStream = antlr4.InputStream( + "Function Foobar" + argStr + "\nEnd Function" + ) + lexer = VisualBasic6Lexer(inputStream) + tokens = antlr4.CommonTokenStream(lexer) + parser = VisualBasic6Parser(tokens) + functionStmt = parser.functionStmt() + argList = functionStmt.argList() + asTypeClause = functionStmt.asTypeClause() + + defaults = [] + for arg in argList.arg(): + defValStr = None + argDefault = arg.argDefaultValue() + if argDefault: + defValStr = self.translateValueStmt(argDefault.valueStmt()) + defaults.append(defValStr) + return defaults + + def translateVariableStmt(self, stmt : VisualBasic6Parser.VariableStmtContext): + isStatic = bool(stmt.STATIC()) + if stmt.WITHEVENTS(): + raise NotImplementedError() + for var in stmt.variableListStmt().variableSubStmt(): + if var.subscripts(): + raise NotImplementedError() + if var.typeHint(): + raise NotImplementedError() + + # Get variable name + name = var.ambiguousIdentifier().getText() + + # Get variable type + varType, cInit = self.typeToC(var.asTypeClause()) + + # Remove prefix unnecessary due to 'using' + varType = varType.removeprefix('SMBX13::Types::') + + # Static prefix + staticPrefix = "" + if isStatic: + staticPrefix = "static " + + # Return variable decleration string + yield f'{staticPrefix}{varType} {name} = {cInit};' + + def translateWithStmt(self, stmt : VisualBasic6Parser.WithStmtContext): + # WITH WS (NEW WS)? implicitCallStmt_InStmt NEWLINE+ (block NEWLINE+)? END_WITH + + val = stmt.implicitCallStmt_InStmt() + val = self.translateICS_InStmt(val) + + yield '{' + yield f' auto& _ = {val};' + yield from self.translateBlock(stmt.block()) + yield '}' + + def translateOperator(self, op : str, stmt : VisualBasic6Parser.ValueStmtContext) -> str: + children = stmt.valueStmt() + return f'({self.translateValueStmt(children[0])} {op} {self.translateValueStmt(children[1])})' + + def recognizeFuncName(self, val) -> str | None: + funcName = None + if val in basicTypes: + funcName = basicTypes[basicTypes].cName + elif val in translatedFuncs: + funcName = translatedFuncs[val] + elif val in funcList: + funcName = val + return funcName + + def translateICS_VariableOrProcedureCall(self, varProcCall : VisualBasic6Parser.ICS_S_VariableOrProcedureCallContext) -> str: + if varProcCall.typeHint(): + raise NotImplementedError() + if varProcCall.dictionaryCallStmt(): + raise NotImplementedError() + + # Get name + varName = varProcCall.ambiguousIdentifier() + varName = varName.getText() + + # See if the value is a function name we know about + funcName = self.recognizeFuncName(varName) + + if funcName is None: + # Doesn't seem to be a function, treat as variable + return varName + else: + # Seems to be a call? + self.callInSegment[-1] = True + return f'{funcName}()' + + def translateICS_ProcedureOrArrayCall(self, procOrArray : VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext) -> str: + varName = procOrArray.ambiguousIdentifier() + if varName is None: + raise NotImplementedError() + + # Get name + varName = varName.getText() + + # See if the value is a function name we know about + funcName = self.recognizeFuncName(varName) + + # Translate args + argsList = [] + for argsCall in procOrArray.argsCall(): + argsList.extend(self.translateArgsCallToList(argsCall, funcName)) + + if funcName is None: + # Doesn't seem to be a function, treat as array + # NOTE: VB6 array indicies seem to be reversed + val = varName + for argCall in reversed(argsList): + val += f'[{argCall}]' + return val + else: + # Seems to be a call? + self.callInSegment[-1] = True + args = ", ".join(argsList) + return f'{funcName}({args})' + + def translateICS_MemberCall(self, memberCall : VisualBasic6Parser.ICS_S_MemberCallContext) -> str: + val = "_" + if memberCall.iCS_S_VariableOrProcedureCall(): + val = self.translateICS_VariableOrProcedureCall(memberCall.iCS_S_VariableOrProcedureCall()) + elif memberCall.iCS_S_ProcedureOrArrayCall(): + procOrArray = memberCall.iCS_S_ProcedureOrArrayCall() + val = self.translateICS_ProcedureOrArrayCall(procOrArray) + else: + raise NotImplementedError() + return val + + def translateICS_MembersCall(self, membersCall : VisualBasic6Parser.ICS_S_MembersCallContext) -> str: + val = "_" + if membersCall.iCS_S_VariableOrProcedureCall(): + val = self.translateICS_VariableOrProcedureCall(membersCall.iCS_S_VariableOrProcedureCall()) + elif membersCall.iCS_S_ProcedureOrArrayCall(): + procOrArray = membersCall.iCS_S_ProcedureOrArrayCall() + val = self.translateICS_ProcedureOrArrayCall(procOrArray) + if membersCall.dictionaryCallStmt(): + raise NotImplementedError() + for memberCall in membersCall.iCS_S_MemberCall(): + val += f'.{self.translateICS_MemberCall(memberCall)}' + return val + + def translateICS_InStmt(self, ics : VisualBasic6Parser.ImplicitCallStmt_InStmtContext) -> str: + if ics.iCS_S_MembersCall(): + # Implement membercall syntax + return self.translateICS_MembersCall(ics.iCS_S_MembersCall()) + elif ics.iCS_S_VariableOrProcedureCall(): + varProcCall = ics.iCS_S_VariableOrProcedureCall() + return self.translateICS_VariableOrProcedureCall(varProcCall) + elif ics.iCS_S_ProcedureOrArrayCall(): + procOrArray = ics.iCS_S_ProcedureOrArrayCall() + return self.translateICS_ProcedureOrArrayCall(procOrArray) + else: + raise NotImplementedError(f'{ics.toStringTree(recog=self.parser)}') + #return f'{ics.getText()}' + #return f'{ics.toStringTree(recog=self.parser)}' + + def translateLiteral(self, lit : VisualBasic6Parser.LiteralContext) -> str: + if lit.TRUE(): + return 'true' + elif lit.FALSE(): + return 'false' + elif lit.STRINGLITERAL(): + return 'L' + lit.getText() + elif lit.doubleLiteral(): + return lit.getText() + elif lit.integerLiteral(): + return lit.getText() + raise NotImplementedError() + + def translateAndOrOperator(self, op : str, func : str, stmt : VisualBasic6Parser.ValueStmtContext) -> str: + children = stmt.valueStmt() + # Translate left side arg + left = self.translateValueStmt(children[0]) + + # Translate right side arg, AND make note of if it contains a function call... + # If it has a function call, we need to use VBAnd/VBOr instead of &&/|| so that potential + # side effects may take place. + self.callInSegment.append(False) + right = self.translateValueStmt(children[1]) + haveCall = self.callInSegment.pop() + if haveCall: + # Use a function call for and/or if we have a function happening inside + self.callInSegment[-1] = True + return f'{func}({left}, {right})' + else: + # If no risk of side effects, just uses && or || + return f'({left} {op} {right})' + + def translateValueStmt(self, stmt : VisualBasic6Parser.ValueStmtContext) -> str: + if isinstance(stmt, VisualBasic6Parser.VsAndContext): + return self.translateAndOrOperator("&&", "VBAnd", stmt) + elif isinstance(stmt, VisualBasic6Parser.VsOrContext): + return self.translateAndOrOperator("||", "VBOr", stmt) + elif isinstance(stmt, VisualBasic6Parser.VsNotContext): + return '!' + self.translateValueStmt(stmt.valueStmt()) + elif isinstance(stmt, VisualBasic6Parser.VsCompContext): + op = None + if stmt.EQ(): + op = '==' + elif stmt.NEQ(): + op = '!=' + elif stmt.LT(): + op = '<' + elif stmt.GT(): + op = '>' + elif stmt.LEQ(): + op = '<=' + elif stmt.GEQ(): + op = '>=' + else: + raise NotImplementedError(f'Haven\'t implemented operator for "{stmt.getText()}"') + return self.translateOperator(op, stmt) + elif isinstance(stmt, VisualBasic6Parser.VsAddSubContext): + op = None + if stmt.PLUS(): + op = '+' + elif stmt.MINUS(): + op = '-' + else: + raise NotImplementedError(f'Haven\'t implemented operator for "{stmt.getText()}"') + return self.translateOperator(op, stmt) + elif isinstance(stmt, VisualBasic6Parser.VsMultDivContext): + op = None + if stmt.MULT(): + op = '*' + elif stmt.DIV(): + op = '/' + else: + raise NotImplementedError(f'Haven\'t implemented operator for "{stmt.getText()}"') + return self.translateOperator(op, stmt) + elif isinstance(stmt, VisualBasic6Parser.VsPlusMinusContext): + op = None + if stmt.PLUS(): + op = '+' + elif stmt.MINUS(): + op = '-' + else: + raise NotImplementedError() + return op + self.translateValueStmt(stmt.valueStmt()) + elif isinstance(stmt, VisualBasic6Parser.VsAmpContext): + # String concat. Let's assume + will do the job for now + return self.translateOperator('+', stmt) + elif isinstance(stmt, VisualBasic6Parser.VsICSContext): + return self.translateICS_InStmt(stmt.implicitCallStmt_InStmt()) + elif isinstance(stmt, VisualBasic6Parser.VsLiteralContext): + return self.translateLiteral(stmt.literal()) + elif isinstance(stmt, VisualBasic6Parser.VsStructContext): + children = stmt.valueStmt() + if len(children) > 1: + raise NotImplementedError() + return self.translateValueStmt(children[0]) + else: + raise NotImplementedError(f'Haven\' implemented {type(stmt)}\n\n{stmt.getText()}\n\n{stmt.toStringTree(recog=self.parser)}') + return f'{stmt.getText()}' + #return f'{stmt.toStringTree(recog=self.parser)}' + + def translateIfConditionStmt(self, stmt : VisualBasic6Parser.IfConditionStmtContext) -> str: + condition = self.translateValueStmt(stmt.valueStmt()) + if not condition.startswith('('): + condition = f'({condition})' + return condition + + def translateIfBlockStmt(self, stmt : VisualBasic6Parser.IfBlockStmtContext | VisualBasic6Parser.IfElseIfBlockStmtContext | VisualBasic6Parser.IfElseBlockStmtContext): + if stmt is None: + yield from [] + return + + # Comment on this line + initLineEnd = None + if isinstance(stmt, VisualBasic6Parser.IfBlockStmtContext): + initLineEnd = stmt.THEN() + elif isinstance(stmt, VisualBasic6Parser.IfElseIfBlockStmtContext): + initLineEnd = stmt.THEN() + elif isinstance(stmt, VisualBasic6Parser.IfElseBlockStmtContext): + initLineEnd = stmt.ELSE() + yield from self.translateCommentTokensRight(initLineEnd) + + if isinstance(stmt, VisualBasic6Parser.IfBlockStmtContext): + condition = self.translateIfConditionStmt(stmt.ifConditionStmt()) + yield f'if {condition} {{' + elif isinstance(stmt, VisualBasic6Parser.IfElseIfBlockStmtContext): + condition = self.translateIfConditionStmt(stmt.ifConditionStmt()) + yield f'else if {condition} {{' + elif isinstance(stmt, VisualBasic6Parser.IfElseBlockStmtContext): + yield 'else {' + yield from self.translateBlock(stmt.block()) + yield '}' + + def translateIfThenElseStmt(self, stmt : VisualBasic6Parser.IfThenElseStmtContext): + if isinstance(stmt, VisualBasic6Parser.InlineIfThenElseContext): + # Inline if + condition = self.translateIfConditionStmt(stmt.ifConditionStmt()) + + ret = f'if {condition} ' + blocks = stmt.blockStmt() + ret += '{ ' + for line in self.translateBlockStmt(blocks[0], ignoreComment=True): + ret += line + ret += ' }' + if len(blocks) > 1: + ret += ' else { ' + for line in self.translateBlockStmt(blocks[1], ignoreComment=True): + ret += line + ret += ' }' + yield ret + else: + # Block if + yield from self.translateIfBlockStmt(stmt.ifBlockStmt()) + for elseif in stmt.ifElseIfBlockStmt(): + yield from self.translateIfBlockStmt(elseif) + yield from self.translateIfBlockStmt(stmt.ifElseBlockStmt()) + + def translateLetStmt(self, stmt : VisualBasic6Parser.LetStmtContext): + leftSide = self.translateICS_InStmt(stmt.implicitCallStmt_InStmt()) + + op = None + if stmt.EQ(): + op = '=' + elif stmt.PLUS_EQ(): + op = '+=' + elif stmt.MINUS_EQ(): + op = '-=' + else: + raise NotImplementedError() + + rightSide = self.translateValueStmt(stmt.valueStmt()) + + yield f'{leftSide} {op} {rightSide};' + + def translateArgCall(self, var : VisualBasic6Parser.ArgCallContext) -> str: + if var.BYVAL(): + raise NotImplementedError() + if var.BYREF(): + raise NotImplementedError() + if var.PARAMARRAY(): + raise NotImplementedError() + return self.translateValueStmt(var.valueStmt()) + + def translateArgsCallToList(self, var : VisualBasic6Parser.ArgsCallContext, funcName : str) -> [str]: + args = [] + needDefaults = False + sepCount = 1 + + # Get correctly aligned list of args + for child in var.children: + if isinstance(child, VisualBasic6Parser.ArgCallContext): + if sepCount > 1: + # If we had too many seperators, append blanks + needDefaults = True + for i in range(sepCount-1): + args.append(None) + args.append(child) + sepCount = 0 + elif isinstance(child, antlr4.tree.Tree.TerminalNodeImpl): + if child.symbol.type in (VisualBasic6Lexer.COMMA, VisualBasic6Lexer.SEMICOLON): + # Count seperators + sepCount += 1 + + # Get default args if necessary + defaultArgs = None + if needDefaults: + defaultArgs = self.parseArgDefaults(funcArgStrs[funcName]) + + # Parse pargs + for i in range(len(args)): + if args[i] is not None: + # Parse arg + args[i] = self.translateArgCall(args[i]) + else: + # Take default arg, because we specify a non-default arg afterwards + args[i] = defaultArgs[i] + return args + + def translateArgsCall(self, var : VisualBasic6Parser.ArgsCallContext, funcName : str) -> str: + return ", ".join(self.translateArgsCallToList(var, funcName)) + + def translateICS_InBlock(self, stmt : VisualBasic6Parser.ImplicitCallStmt_InBlockContext): + if stmt.iCS_B_ProcedureCall(): + procCall = stmt.iCS_B_ProcedureCall() + funcName = procCall.certainIdentifier().getText() + argsList = self.translateArgsCall(procCall.argsCall(), funcName) + self.callInSegment[-1] = True + yield f'{funcName}({argsList});' + elif stmt.iCS_B_MemberProcedureCall(): + # implicitCallStmt_InStmt? DOT ambiguousIdentifier typeHint? (WS argsCall)? dictionaryCallStmt? + procCall = stmt.iCS_B_MemberProcedureCall() + leftSide = self.translateICS_InStmt(procCall.implicitCallStmt_InStmt()) + funcName = procCall.ambiguousIdentifier().getText() + if procCall.typeHint(): + raise NotImplementedError() + argsList = self.translateArgsCall(procCall.argsCall(), funcName) + if procCall.dictionaryCallStmt(): + raise NotImplementedError() + if leftSide == "Netplay": + yield f'// {stmt.getText()}' + else: + self.callInSegment[-1] = True + yield f'{leftSide}.{funcName}({argsList});' + else: + raise NotImplementedError() + + def translateForNextStmt(self, stmt : VisualBasic6Parser.ForNextStmtContext): + # : FOR WS iCS_S_VariableOrProcedureCall typeHint? (WS asTypeClause)? WS? EQ WS? valueStmt WS TO WS valueStmt ( + # WS STEP WS valueStmt + # )? NEWLINE+ (block NEWLINE+)? NEXT (WS ambiguousIdentifier typeHint?)? + + # Get variable name + varName = self.translateICS_VariableOrProcedureCall(stmt.iCS_S_VariableOrProcedureCall()) + + # Get type + if len(stmt.typeHint()) > 0: + raise NotImplementedError() + varType = "" + if stmt.asTypeClause(): + varType, cInit = self.typeToC(stmt.asTypeClause.type_().getText()) + " " + + # Get from/to values, and optional step value + values = stmt.valueStmt() + fromVal = self.translateValueStmt(values[0]) + toVal = self.translateValueStmt(values[1]) + stepVal = None + if len(values) >= 3: + stepVal = self.translateValueStmt(values[2]) + + # Verify ending identifier + if stmt.ambiguousIdentifier(): + if stmt.ambiguousIdentifier().getText() != varName: + raise Exception("Wrong var name?") + + # Get increment op + incOp = '++' + if stepVal is not None: + incOp = f' += {stepVal}' + + yield f'for ({varType}{varName} = {fromVal}; {varName} <= {toVal}; {varName}{incOp}) {{' + yield from self.translateBlock(stmt.block()) + yield '}' + + def translateCommentTokens(self, tokens): + if tokens is not None: + for tk in tokens: + cmt = tk.text.strip().lstrip("'") + yield f'// {cmt}' + + def translateCommentTokensRight(self, ctx): + if ctx is not None: + if isinstance(ctx, antlr4.tree.Tree.TerminalNodeImpl): + tkn = ctx.symbol + else: + tkn = ctx.stop + tokenStream = self.parser.getTokenStream() + yield from self.translateCommentTokens(tokenStream.getHiddenTokensToRight(tkn.tokenIndex)) + + def translateCommentTokensLeft(self, ctx): + if ctx is not None: + if isinstance(ctx, antlr4.tree.Tree.TerminalNodeImpl): + tkn = ctx.symbol + else: + tkn = ctx.start + tokenStream = self.parser.getTokenStream() + yield from self.translateCommentTokens(tokenStream.getHiddenTokensToLeft(tkn.tokenIndex)) + + def translateBlockStmt(self, blockStmt : VisualBasic6Parser.BlockStmtContext, ignoreComment:bool = False): + + # Comments if single line statement + if not ignoreComment: + txt = blockStmt.getText().strip("\n") + if "\n" not in txt: + yield from self.translateCommentTokensRight(blockStmt) + + # Translate a block statement + stmt = blockStmt.children[0] + if isinstance(stmt, VisualBasic6Parser.VariableStmtContext): + yield from self.translateVariableStmt(stmt) + elif isinstance(stmt, VisualBasic6Parser.WithStmtContext): + yield from self.translateWithStmt(stmt) + elif isinstance(stmt, VisualBasic6Parser.IfThenElseStmtContext): + yield from self.translateIfThenElseStmt(stmt) + elif isinstance(stmt, VisualBasic6Parser.LetStmtContext): + yield from self.translateLetStmt(stmt) + elif isinstance(stmt, VisualBasic6Parser.ImplicitCallStmt_InBlockContext): + yield from self.translateICS_InBlock(stmt) + elif isinstance(stmt, VisualBasic6Parser.ForNextStmtContext): + yield from self.translateForNextStmt(stmt) + elif isinstance(stmt, VisualBasic6Parser.ExitStmtContext): + yield 'return;' # Note: Not yet supporting returning values + else: + raise NotImplementedError(stmt.toStringTree(recog=self.parser)) + + def translateBlock(self, block : VisualBasic6Parser.BlockContext): + # Iterate over block statements + if block is not None: + for blockStmt in block.blockStmt(): + for line in self.translateBlockStmt(blockStmt): + yield f' {line}' + yield from [] + + def translateSubStmt(self, subStmt : VisualBasic6Parser.SubStmtContext | VisualBasic6Parser.FunctionStmtContext): + # Get function name + funcName = subStmt.ambiguousIdentifier().getText() + + # Get return type + retType = "void" + if isinstance(subStmt, VisualBasic6Parser.FunctionStmtContext): + asTypeClause = subStmt.asTypeClause() + if asTypeClause: + retType, cInit = self.typeToC(asTypeClause.type_().getText()) + + # Get argument list string + argList = self.parseArgList(subStmt.argList()) + + # Put together function decleration + funcDecl = f'{retType} __stdcall SMBX13::Ports::{funcName}({argList})' + + # First line + yield f'{funcDecl} {{' + + # Using + yield ' using namespace SMBX13::Types;' + yield ' using namespace SMBX13::Vars;' + yield ' using namespace SMBX13::Functions;' + yield ' #pragma warning( push )' + yield ' #pragma warning( disable: 4244 ) // Disable loss of precision warning' + # yield ' #pragma warning( disable: 4101 ) // Disable unused variable warning' + + # Yield lines from the block + yield from self.translateBlock(subStmt.block()) + + yield ' #pragma warning( pop )' + + # End of function + yield f'}}' + + #DEBUG: yield(subStmt.toStringTree(recog=self.parser)) + +def main(argv): + # Test file if unspecified + if len(argv) < 2: + argv = [argv[0], "test_func.bas"] + + # Read from stdin or specified file + parser, name = getParserForArgv(argv) + + # Run parsing + module = parser.module() + + # Get first body element, assume it's a subStmt + subStmt = module.moduleBody().moduleBodyElement()[0].subStmt() + + # Make translator object + translator = VBTranslator(parser) + + print('#include "../Types.h"') + print('#include "../Variables.h"') + print('#include "../Functions.h"') + print('#include "../Ports.h"') + print('#include "../../Misc/VB6RNG.h"') + print('#include "../../Misc/VB6Logic.h"') + print() + for line in translator.translateSubStmt(subStmt): + print(line) + + +if __name__ == '__main__': + main(sys.argv) \ No newline at end of file diff --git a/Analysis/vb_parser/make_funcs_header.py b/Analysis/vb_parser/make_funcs_header.py new file mode 100644 index 000000000..ee1d3a761 --- /dev/null +++ b/Analysis/vb_parser/make_funcs_header.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +import sys +from pprint import pprint +from dataclasses import dataclass + +import antlr4 +from VisualBasic6Lexer import VisualBasic6Lexer +from VisualBasic6Parser import VisualBasic6Parser +from VisualBasic6ParserListener import VisualBasic6ParserListener +from make_converted_func import VBTranslator + +@dataclass(frozen=True) +class TypeInfo: + size: int + align: int + vbName: str + cName: str + memName: str + + def displayAddress(self, field): + return field.address + +basicTypes = dict((x.vbName, x) for x in ( + TypeInfo(size=1, align=1, vbName="Byte", + cName="uint8_t", memName="FIELD_BYTE"), + TypeInfo(size=2, align=2, vbName="Integer", + cName="int16_t", memName="FIELD_WORD"), + TypeInfo(size=4, align=4, vbName="Long", + cName="int32_t", memName="FIELD_DWORD"), + TypeInfo(size=2, align=2, vbName="Boolean", + cName="VB6Bool", memName="FIELD_BOOL"), + TypeInfo(size=4, align=4, vbName="Single", + cName="float", memName="FIELD_FLOAT"), + TypeInfo(size=8, align=4, vbName="Double", + cName="double", memName="FIELD_DFLOAT"), + TypeInfo(size=4, align=4, vbName="String", + cName="VB6StrPtr", memName="FIELD_STRING"), +)) + +def typeToC(type_): + if type_ in basicTypes: + return basicTypes[type_].cName + else: + return f'SMBX13::Types::{type_}_t' + +def parseArgList(argStr, forceByValBasicTypes=False, includeDefaults=False, nameOnly=False, fullType=True): + inputStream = antlr4.InputStream( + "Function Foobar" + argStr + "\nEnd Function" + ) + lexer = VisualBasic6Lexer(inputStream) + tokens = antlr4.CommonTokenStream(lexer) + parser = VisualBasic6Parser(tokens) + functionStmt = parser.functionStmt() + argList = functionStmt.argList() + asTypeClause = functionStmt.asTypeClause() + + translator = VBTranslator(parser) + + returnTypeC = "void" + if asTypeClause: + type_ = asTypeClause.type_().getText() + returnTypeC = typeToC(type_) + + argsC = [] + for arg in argList.arg(): + # Get by val or reference + byVal = arg.BYVAL() + if byVal != None: + byVal = True + else: + byVal = False + byRef = not byVal + + if arg.asTypeClause(): + varType = typeToC(arg.asTypeClause().type_().getText()) + if forceByValBasicTypes and not varType.startswith("SMBX13::"): + byRef = False + byVal = True + if byRef: + varType += "&" + else: + varType = "void*" + varName = arg.ambiguousIdentifier().getText() + if varName == "bool": + varName += "_" + + defValStr = "" + if includeDefaults: + argDefault = arg.argDefaultValue() + if argDefault: + defValStr = "=" + translator.translateValueStmt(argDefault.valueStmt()) + + if nameOnly: + argsC.append(varName) + else: + argsC.append(f'{varType} {varName}{defValStr}') + argListC = ", ".join(argsC) + + if fullType: + return f'{returnTypeC}(__stdcall *)({argListC})' + else: + return argListC, returnTypeC + +def main(argv): + print("#if !defined(SMBXINTERNAL_FUNCTIONS_H)") + print("#define SMBXINTERNAL_FUNCTIONS_H") + print("") + + print('#include ') + print('#include "../Misc/VB6StrPtr.h"') + print('#include "../Misc/VB6Bool.h"') + print('') + + print("namespace SMBX13 {") + print(" namespace Types {") + print(" struct Location_t;") + print(" }\n") + + with open("reference_funcs.tsv", "r") as f: + isHdr = True + currentNamespace = None + namespaces = [] + for line in f: + line = line.strip() + if len(line) == 0: + continue + cols = line.split("\t") + cols = cols + (5-len(cols))*[""] + if isHdr: + isHdr = False + continue + if cols[1] == "": + continue + if cols[0] == "UNUSED": + continue + + addr = int(cols[0], 16) + modName = cols[1].split(".", 1)[0] + funcType = cols[2] + funcName = cols[3] + argStr = cols[4] + isPublic = ("private" not in funcType.lower()) + #if not isPublic: + # continue + #if "Function" not in funcType: + # continue + args = parseArgList(argStr) + argsByVal, retTypeC = parseArgList(argStr, forceByValBasicTypes=True, includeDefaults=True, fullType=False) + argNames, retTypeC = parseArgList(argStr, nameOnly=True, fullType=False) + + namespace = modName + if not isPublic: + namespace += "_Private" + elif namespace not in namespaces: + namespaces.append(namespace) + ptrLine = f'static const auto _{funcName}_ptr = reinterpret_cast<{args}>(0x{addr:08X});' + retStr = "" + if retTypeC != "void": + retStr = "return " + funcLine = f'inline {retTypeC} {funcName}({argsByVal}) {{ {retStr}_{funcName}_ptr({argNames}); }}' + + if namespace != currentNamespace: + if currentNamespace != None: + print(' }\n') + currentNamespace = namespace + print(f' namespace {namespace} {{') + print(f' {ptrLine}') + print(f' {funcLine}') + print(' }\n') + print(' // All public functions') + print(' namespace Functions {') + for namespace in namespaces: + print(f" using namespace {namespace};") + print(' }') + print('}\n') + print("#endif // !defined(SMBXINTERNAL_FUNCTIONS_H)") + print("") + +if __name__ == '__main__': + main(sys.argv) diff --git a/Analysis/vb_parser/make_md.py b/Analysis/vb_parser/make_md.py new file mode 100644 index 000000000..6ff9613e1 --- /dev/null +++ b/Analysis/vb_parser/make_md.py @@ -0,0 +1,54 @@ +from mdutils.mdutils import MdUtils +from mdutils.tools.TextUtils import TextUtils + + +mdFile = MdUtils(file_name='reference_funcs.md',title='SMBX 1.3 Function Reference') + +def get_line(fn, fn_type, fn_name): + with open(f'../smbx-legacy-source/{fn}', 'r') as fn_srch: + ln = 1 + lines = [] + lines_text = [] + for line in fn_srch: + if (fn_type in line) and (" "+fn_name+"(" in line): + lines.append(ln) + lines_text.append(line) + ln += 1 + if len(lines) == 1: + return lines[0] + else: + print(fn, fn_name) + print("\n".join(f'\t{x}' for x in lines_text)) + +rows = [] +with open("reference_funcs.tsv", "r") as f: + isHdr = True + for line in f: + line = line.strip() + if len(line) == 0: + continue + cols = line.split("\t") + if cols[0].startswith("0"): + cols[0] = "0x" + cols[0] + cols = cols + (5-len(cols))*[""] + if isHdr: + rows.extend(cols) + isHdr = False + continue + if cols[1] == "": + continue + if cols[0] == "UNUSED": + cols[0] = "_UNUSED_" + + fn = cols[1] + line = get_line(fn, cols[2], cols[3]) + url = f'https://github.com/smbx/smbx-legacy-source/blob/4a7ff946da8924d2268f6ee8d824034f3a7d7658/{fn}#L{line}' + filetxt = f'{fn}:{line}' + cols[1] = TextUtils.text_external_link(text=filetxt, link=url) + rows.extend(cols) + +print(len(rows)) + +mdFile.new_table(columns=5, rows=len(rows)//5, text=rows) + +mdFile.create_md_file() diff --git a/Analysis/vb_parser/make_patches_md.py b/Analysis/vb_parser/make_patches_md.py new file mode 100644 index 000000000..f42064a91 --- /dev/null +++ b/Analysis/vb_parser/make_patches_md.py @@ -0,0 +1,87 @@ +from mdutils.mdutils import MdUtils +from mdutils.tools.TextUtils import TextUtils +from dataclasses import dataclass +import os.path + +def get_line(fn, fn_type, fn_name): + with open(f'../smbx-legacy-source/{fn}', 'r') as fn_srch: + ln = 1 + lines = [] + lines_text = [] + for line in fn_srch: + if (fn_type in line) and (" "+fn_name+"(" in line): + lines.append(ln) + lines_text.append(line) + ln += 1 + if len(lines) == 1: + return lines[0] + else: + print(fn, fn_name) + print("\n".join(f'\t{x}' for x in lines_text)) + +@dataclass +class FuncRange: + start : int + label : str + +funcs = [] +with open("reference_funcs.tsv", "r") as f: + isHdr = True + for line in f: + line = line.strip() + if len(line) == 0: + continue + cols = line.split("\t") + cols = cols + (5-len(cols))*[""] + if isHdr: + isHdr = False + continue + if cols[1] == "": + continue + if cols[0] == "UNUSED": + continue + + addr = int(cols[0], 16) + fn = cols[1] + line = get_line(fn, cols[2], cols[3]) + url = f'https://github.com/smbx/smbx-legacy-source/blob/4a7ff946da8924d2268f6ee8d824034f3a7d7658/{fn}#L{line}' + filetxt = f'{fn}:{line}' + label = TextUtils.text_external_link(text=fn.split('.',1)[0]+'.'+cols[3], link=url) + funcs.append(FuncRange(start = addr, label = label)) + +cells = ["#", "Address", "Size", "VB6 Func", "LunaLua Source"] +i = 1 +with open("patches.tsv", "r") as f: + isHdr = True + for line in f: + line = line.strip() + if len(line) == 0: + continue + cols = line.split("\t") + + addr, size, src = cols + fn, line = src.split(":") + fn = fn.replace("\\", "/") + url = f'https://github.com/WohlSoft/LunaLua/blob/e79f8c830e44aba9444bb799879af9575ee9968d/LunaDll/{fn}#L{line}' + fn = os.path.basename(fn) + link = TextUtils.text_external_link(text=fn+":"+line, link=url) + + addr = int(addr[2:], 16) + vbLabel = "" + for func in funcs: + if func.start <= addr: + vbLabel = func.label + else: + break + + cells.extend([f'{i}', f'0x{addr:08X}', size, vbLabel, link]) + i += 1 + +print(len(cells)) + + +mdFile = MdUtils(file_name='reference_lunalua_patches.md',title='LunaLua Patch Reference') + +mdFile.new_table(columns=5, rows=len(cells)//5, text=cells, text_align='left') + +mdFile.create_md_file() diff --git a/Analysis/vb_parser/make_types_headers.py b/Analysis/vb_parser/make_types_headers.py new file mode 100644 index 000000000..0fa06eaf7 --- /dev/null +++ b/Analysis/vb_parser/make_types_headers.py @@ -0,0 +1,75 @@ +from smbx_vb_tools import * + +def main(argv): + + # Read from stdin or specified file + parser, moduleName = getParserForArgv(argv) + + # Run parsing + module = parser.module() + + # Test enumerating type information + typeDb = {} + types = enumerateTypeInformation(module, typeDb=typeDb) + moduleVars = (enumerateTopLevelVariables(module, moduleName=moduleName, typeDb=typeDb)) + + # Dump block structure info + #dumpTypeInformation(makeFlatStruct(typeDb["Player"], iterateArrays=True)) + #dumpSafeRanges(typeDb["Player"]) + + #dumpTypeInformation(moduleVars) + #dumpSafeRanges(moduleVars) + #dumpStringAddresses(moduleVars) + #dumpAllowableArrayRefs(moduleVars) + #dumpTypeInformation(typeDb["NPC"]) + + print("#if !defined(SMBXINTERNAL_TYPES_H)") + print("#define SMBXINTERNAL_TYPES_H") + print("") + + print('#include ') + print('#include "../Misc/VB6StrPtr.h"') + print('#include "../Misc/VB6Bool.h"') + print('#include "../Misc/VB6Array.h"') + print('') + print("#pragma pack(push, 1)") + print("namespace SMBX13 {") + print(" namespace Types {") + + print(" struct StdPicture_t;\n") + for type_ in types: + for line in dumpTypeInformationAsCStruct(type_): + print(" "+line) + for line in dumpTypeInformationAsCStruct(moduleVars): + print(" "+line) + print(" }\n") + print('}') + print("#pragma pack(pop)") + print("") + print("#endif // !defined(SMBXINTERNAL_TYPES_H)") + print("") + + + print("#if !defined(SMBXINTERNAL_VARIABLES_H)") + print("#define SMBXINTERNAL_VARIABLES_H") + print("") + + print('#include "Types.h"') + print('') + print("namespace SMBX13 {") + print(f" static {moduleVars.cName}& vars = *reinterpret_cast<{moduleVars.cName}*>(0x{moduleVars.fields[0].address:X});") + print('') + print(' // Present structure as namespace as well') + print(' namespace Vars {') + for field in moduleVars.fields: + if field.name.startswith("_padding"): + continue + print(f' static auto& {field.name} = SMBX13::vars.{field.name};') + print(' }') + print('}') + print("") + print("#endif // !defined(SMBXINTERNAL_VARIABLES_H)") + print("") + +if __name__ == '__main__': + main(sys.argv) \ No newline at end of file diff --git a/Analysis/vb_parser/reference_funcs.tsv b/Analysis/vb_parser/reference_funcs.tsv new file mode 100644 index 000000000..05bbbf8c8 --- /dev/null +++ b/Analysis/vb_parser/reference_funcs.tsv @@ -0,0 +1,714 @@ +Address SMBX 1.3 File Type Function Name Arguments +0040BA60 vb_jmp_tbl __vbaChkstk +0040BA66 vb_jmp_tbl __vbaExceptHandler +0040BA6C vb_jmp_tbl __vbaFPException +0040BA72 vb_jmp_tbl _adj_fdiv_m16i +0040BA78 vb_jmp_tbl _adj_fdiv_m32 +0040BA7E vb_jmp_tbl _adj_fdiv_m32i +0040BA84 vb_jmp_tbl _adj_fdiv_m64 +0040BA8A vb_jmp_tbl _adj_fdiv_r +0040BA90 vb_jmp_tbl _adj_fdivr_m16i +0040BA96 vb_jmp_tbl _adj_fdivr_m32 +0040BA9C vb_jmp_tbl _adj_fdivr_m32i +0040BAA2 vb_jmp_tbl _adj_fdivr_m64 +0040BAA8 vb_jmp_tbl _adj_fpatan +0040BAAE vb_jmp_tbl _adj_fprem +0040BAB4 vb_jmp_tbl _adj_fprem1 +0040BABA vb_jmp_tbl _adj_fptan +0040BAC0 vb_jmp_tbl _CIatan +0040BAC6 vb_jmp_tbl _CIcos +0040BACC vb_jmp_tbl _CIexp +0040BAD2 vb_jmp_tbl _CIlog +0040BAD8 vb_jmp_tbl _CIsin +0040BADE vb_jmp_tbl _CIsqrt +0040BAE4 vb_jmp_tbl _CItan +0040BAEA vb_jmp_tbl _allmul +0040BAF0 vb_jmp_tbl DllFunctionCall +0040BAF6 vb_jmp_tbl __vbaFreeVar +0040BAFC vb_jmp_tbl __vbaSetSystemError +0040BB02 vb_jmp_tbl __vbaFPInt +0040BB08 vb_jmp_tbl __vbaNew2 +0040BB0E vb_jmp_tbl __vbaFreeStr +0040BB14 vb_jmp_tbl rtcVarBstrFromAnsi +0040BB1A vb_jmp_tbl __vbaStrVarMove +0040BB20 vb_jmp_tbl __vbaStrMove +0040BB26 vb_jmp_tbl rtcDoEvents +0040BB2C vb_jmp_tbl __vbaHresultCheckObj +0040BB32 vb_jmp_tbl __vbaVarMove +0040BB38 vb_jmp_tbl __vbaBoolStr +0040BB3E vb_jmp_tbl __vbaI2Str +0040BB44 vb_jmp_tbl __vbaR8IntI2 +0040BB4A vb_jmp_tbl __vbaAryDestruct +0040BB50 vb_jmp_tbl rtcGetFileAttr +0040BB56 vb_jmp_tbl __vbaAryConstruct2 +0040BB5C vb_jmp_tbl __vbaR8Str +0040BB62 vb_jmp_tbl rtcEndOfFile +0040BB68 vb_jmp_tbl __vbaVarDup +0040BB6E vb_jmp_tbl rtcMsgBox +0040BB74 vb_jmp_tbl __vbaInputFile +0040BB7A vb_jmp_tbl __vbaVarCmpNe +0040BB80 vb_jmp_tbl __vbaVarAnd +0040BB86 vb_jmp_tbl __vbaRecDestruct +0040BB8C vb_jmp_tbl rtcDir +0040BB92 vb_jmp_tbl __vbaFileClose +0040BB98 vb_jmp_tbl __vbaWriteFile +0040BB9E vb_jmp_tbl __vbaFileOpen +0040BBA4 vb_jmp_tbl rtcLeftCharVar +0040BBAA vb_jmp_tbl rtcMidCharVar +0040BBB0 vb_jmp_tbl __vbaVarCmpEq +0040BBB6 vb_jmp_tbl __vbaVarOr +0040BBBC vb_jmp_tbl __vbaBoolVarNull +0040BBC2 vb_jmp_tbl __vbaEnd +0040BBC8 vb_jmp_tbl __vbaRecAssign +0040BBCE vb_jmp_tbl __vbaFpR4 +0040BBD4 vb_jmp_tbl rtcAnsiValueBstr +0040BBDA vb_jmp_tbl __vbaFpI4 +0040BBE0 vb_jmp_tbl __vbaI2I4 +0040BBE6 vb_jmp_tbl __vbaOnError +0040BBEC vb_jmp_tbl __vbaErrorOverflow +0040BBF2 vb_jmp_tbl rtcRightCharVar +0040BBF8 vb_jmp_tbl rtcLowerCaseVar +0040BBFE vb_jmp_tbl __vbaVarTstEq +0040BC04 vb_jmp_tbl __vbaLenBstr +0040BC0A vb_jmp_tbl __vbaStrCmp +0040BC10 vb_jmp_tbl rtcRandomNext +0040BC16 vb_jmp_tbl __vbaFpI2 +0040BC1C vb_jmp_tbl __vbaCopyBytes +0040BC22 vb_jmp_tbl __vbaStrR8 +0040BC28 vb_jmp_tbl __vbaFpR8 +0040BC2E vb_jmp_tbl __vbaFreeObjList +0040BC34 vb_jmp_tbl __vbaStrVarVal +0040BC3A vb_jmp_tbl __vbaStrI2 +0040BC40 vb_jmp_tbl __vbaStrToAnsi +0040BC46 vb_jmp_tbl __vbaObjSetAddref +0040BC4C vb_jmp_tbl __vbaObjSet +0040BC52 vb_jmp_tbl rtcGetTimer +0040BC58 vb_jmp_tbl rtcRandomize +0040BC5E vb_jmp_tbl __vbaStrCopy +0040BC64 vb_jmp_tbl __vbaFreeVarList +0040BC6A vb_jmp_tbl __vbaVarCat +0040BC70 vb_jmp_tbl __vbaFreeObj +0040BC76 vb_jmp_tbl __vbaFreeStrList +0040BC7C vb_jmp_tbl rtcBstrFromAnsi +0040BC82 vb_jmp_tbl __vbaStrCat +0040BC88 vb_jmp_tbl rtcShell +0040BC8E vb_jmp_tbl __vbaGenerateBoundsError +0040BC94 vb_jmp_tbl __vbaLenVar +0040BC9A vb_jmp_tbl __vbaVarMul +0040BCA0 vb_jmp_tbl __vbaVarSub +0040BCA6 vb_jmp_tbl __vbaVarAdd +0040BCAC vb_jmp_tbl __vbaR4Var +0040BCB2 vb_jmp_tbl __vbaVarVargNofree +0040BCB8 vb_jmp_tbl __vbaFpCSngR8 +0040BCBE vb_jmp_tbl __vbaI2Var +0040BCC4 vb_jmp_tbl __vbaVarTstNe +0040BCCA vb_jmp_tbl rtcUpperCaseVar +0040BCD0 vb_jmp_tbl rtcVarStrFromVar +0040BCD6 vb_jmp_tbl __vbaStrR4 +0040BCDC vb_jmp_tbl rtcSqr +0040BCE2 vb_jmp_tbl __vbaStrBool +0040BCE8 vb_jmp_tbl rtcR8ValFromBstr +0040BCEE vb_jmp_tbl __vbaPowerR8 +0040BCF4 vb_jmp_tbl __vbaR8Var +0040BCFA vb_jmp_tbl __vbaLsetFixstr +0040BD00 vb_jmp_tbl __vbaI4Var +0040BD06 vb_jmp_tbl rtcLeftCharBstr +0040BD0C vb_jmp_tbl __vbaInStr +0040BD12 vb_jmp_tbl __vbaFixstrConstruct +0040BD18 vb_jmp_tbl __vbaStrToUnicode +0040BD1E vb_jmp_tbl __vbaVarForNext +0040BD24 vb_jmp_tbl __vbaVarTstLe +0040BD2A vb_jmp_tbl __vbaVarForInit +0040BD30 vb_jmp_tbl __vbaRecAnsiToUni +0040BD36 vb_jmp_tbl __vbaRecUniToAnsi +0040BD3C vb_jmp_tbl __vbaExitProc +0040BD42 vb_jmp_tbl __vbaVarLateMemSt +0040BD48 vb_jmp_tbl __vbaLateMemCall +0040BD4E vb_jmp_tbl __vbaObjVar +0040BD54 vb_jmp_tbl __vbaStopExe +0040BD5A vb_jmp_tbl __vbaR8ForNextCheck +0040BD60 vb_jmp_tbl __vbaVarTstLt +0040BD66 vb_jmp_tbl __vbaVarTstGe +0040BD6C vb_jmp_tbl __vbaVarLateMemCallLd +0040BD72 vb_jmp_tbl __vbaLateIdCallLd +0040BD78 vb_jmp_tbl __vbaBoolVar +0040BD7E vb_jmp_tbl __vbaI4Str +0040BD84 vb_jmp_tbl __vbaR4Str +0040BD8A vb_jmp_tbl __vbaLateIdSt +0040BD90 vb_jmp_tbl rtcRightCharBstr +0040BD96 vb_jmp_tbl rtcCharValueBstr +0040BD9C vb_jmp_tbl rtcMidCharBstr +0040BDA2 vb_jmp_tbl rtcInStrRev +0040BDA8 vb_jmp_tbl __vbaLenBstrB +0040BDAE vb_jmp_tbl __vbaLateIdCall +0040BDB4 vb_jmp_tbl EVENT_SINK_QueryInterface +0040BDBA vb_jmp_tbl EVENT_SINK_AddRef +0040BDC0 vb_jmp_tbl EVENT_SINK_Release +0040BDC6 vb_jmp_tbl GetMem2 +0040BDCC vb_jmp_tbl PutMem2 +0040BDD2 vb_jmp_tbl ThunRTMain +0040BDD8 runtime EntryPoint +004240B4 vb_import_kernel32 Sleep +004242D0 vb_import_gdi32 BitBlt +00424314 vb_import_gdi32 StretchBlt +00424364 vb_import_gdi32 CreateCompatibleBitmap +004243B0 vb_import_gdi32 CreateCompatibleDC +004243FC vb_import_user32 GetDC +00424444 vb_import_gdi32 SelectObject +00424498 vb_import_gdi32 DeleteObject +004244DC vb_import_gdi32 DeleteDC +00424520 vb_import_user32 GetKeyState +00424578 vb_import_winmm mciSendStringA +004245C0 vb_import_user32 SetCursorPos +00424608 vb_import_user32 SetWindowPos +00424660 vb_import_kernel32 GetSystemDirectoryA +004246BC vb_import_user32 GetDesktopWindow +00424700 vb_import_user32 GetWindowDC +00424748 vb_import_user32 GetActiveWindow +00424790 vb_import_kernel32 GetTickCount +004276BC vb_import_user32 ShowCursor +0042854C vb_import_wsock32 setsockopt +00428590 vb_import_wsock32 getsockopt +00428848 vb_import_winmm joyGetPosEx +00428890 vb_import_winmm joyGetDevCapsA +00428A18 vb_import_user32 GetCursorPos +00428E18 vb_import_user32 ChangeDisplaySettingsExA +00428E68 vb_import_user32 EnumDisplaySettingsA +008BD770 frmMain.frm Private Sub Form_DblClick () +008BD900 frmMain.frm Private Sub Form_KeyDown (KeyCode As Integer, Shift As Integer) +008BD9E0 frmMain.frm Private Sub Form_KeyPress (KeyAscii As Integer) +008BDAB0 frmMain.frm Private Sub Form_KeyUp (KeyCode As Integer, Shift As Integer) +008BDB40 frmMain.frm Private Sub Form_Load () +008BDE80 frmMain.frm Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) +008BDF10 frmMain.frm Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) +008BE080 frmMain.frm Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) +008BE100 frmMain.frm Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer) +008BE1A0 frmMain.frm Private Sub Form_Resize () +008BE360 frmMain.frm Private Sub Form_Unload (Cancel As Integer) +008BE410 modMain.bas Public Sub SetupPhysics () +008BE9C0 modMain.bas Sub Main () +008C2720 modMain.bas Public Sub SetupVars () +008CA210 modMain.bas Public Sub GameLoop () +008CA650 modMain.bas Public Sub MenuLoop () +008D6B80 modMain.bas Public Sub EditorLoop () +008D6BB0 modMain.bas Public Sub KillIt () +008D6CF0 modMain.bas Public Sub SaveLevel (FilePath As String) +008D8F40 modMain.bas Public Sub OpenLevel (FilePath As String) +008DC6E0 modMain.bas Public Sub ClearLevel () +008DDE30 modMain.bas Public Sub NextLevel () +008DE080 modMain.bas Public Sub UpdateMacro () +008DEB60 modMain.bas Public Sub SaveWorld (FilePath As String) +008DF5B0 modMain.bas Public Sub OpenWorld (FilePath As String) +008E06B0 modMain.bas Public Sub WorldLoop () +008E1DF0 modMain.bas Public Sub LevelPath (Lvl As Integer, Direction As Integer, Optional Skp As Boolean = False) +008E2350 modMain.bas Public Sub PathPath (Pth As Integer, Optional Skp As Boolean = False) +008E2A40 modMain.bas Public Sub PathWait () +008E2E40 modMain.bas Public Sub ClearWorld () +008E35E0 modMain.bas Public Sub FindWorlds () +008E3D10 modMain.bas Public Sub FindLevels () +008E41D0 modMain.bas Public Sub FindSaves () +008E47D0 modMain.bas Public Sub SaveGame () +008E4E00 modMain.bas Public Sub LoadGame () +008E54C0 modMain.bas Public Sub PauseGame (plr As Integer) +008E6700 modMain.bas Public Sub InitControls () +008E6910 modMain.bas Public Sub OpenConfig () +008E6CC0 modMain.bas Public Sub SaveConfig () +UNUSED modMain.bas Public Sub NPCyFix () +008E6F70 modMain.bas Private Sub CheckActive () +008E7490 modMain.bas Public Sub CheatCode (NewKey As String) +008F6D20 modMain.bas Public Sub OutroLoop () +008F7200 modMain.bas Public Sub SetupCredits () +008F7D70 modMain.bas Public Sub FindStars () +008F8000 modMain.bas Public Sub AddCredit (newCredit As String) +008F8050 modMain.bas Public Function newLoc (X As Double, Y As Double, Optional Width As Double = 0, Optional Height As Double = 0) As Location +008F80C0 modMain.bas Public Sub MoreScore (addScore As Integer, Loc As Location, Optional Multiplier As Integer = 0) +008F8260 modMain.bas Public Sub SetupPlayerFrames () +008FE2A0 modMain.bas Private Sub SizableBlocks () +008FE440 modMain.bas Public Sub StartBattleMode () +008FE930 modMain.bas Public Function FixComma (newStr As String) As String +008FEB10 modGraphics.bas Public Sub UpdateGraphics2 () +00909290 modGraphics.bas Public Sub UpdateGraphics () +0094DF20 modGraphics.bas Public Sub GetvScreen (A As Integer) +0094EEE0 modGraphics.bas Public Sub GetvScreenAverage () +0094F440 modGraphics.bas Public Sub GetvScreenAverage2 () +0094F680 modGraphics.bas Public Sub SetupGraphics () +0094F8D0 modGraphics.bas Public Sub SetupEditorGraphics () +009502E0 modGraphics.bas Public Sub SetupScreens () +00950770 modGraphics.bas Public Sub DynamicScreen () +00951F50 modGraphics.bas Public Sub SuperPrint (SuperWords As String, Font As Integer, X As Single, Y As Single) +00954240 modGraphics.bas Public Sub SetRes () +009542C0 modGraphics.bas Public Function CheckKey (newStrizzle As String) As String +00954AC0 modGraphics.bas Private Sub SpecialFrames () +00954F50 modGraphics.bas Public Sub DrawBackground (S As Integer, Z As Integer) +00969C00 modGraphics.bas Public Sub PlayerWarpGFX (A As Integer, tempLocation As Location, X2 As Single, Y2 As Single) +0096A2F0 modGraphics.bas Public Sub NPCWarpGFX (A As Integer, tempLocation As Location, X2 As Single, Y2 As Single) +0096AD80 modGraphics.bas Public Sub ChangeScreen () +0096B640 modGraphics.bas Public Sub GetvScreenCredits () +0096BAF0 modGraphics.bas Public Sub DoCredits () +0096BF20 modGraphics.bas Public Sub DrawInterface (Z As Integer, numScreens) +00987CE0 modGraphics.bas Public Function pfrX (plrFrame As Integer) As Integer +00987D90 modGraphics.bas Public Function pfrY (plrFrame As Integer) As Integer +00987DE0 modGraphics.bas Public Sub GameThing () +00988E10 modGraphics.bas Public Sub DrawPlayer (A As Integer, Z As Integer) +009918C0 modGraphics.bas Public Sub ScreenShot () +009920D0 modGraphics.bas Public Sub DrawFrozenNPC (Z As Integer, A As Integer) +00992F50 modCollision.bas Public Function CheckCollision (Loc1 As Location, Loc2 As Location) As Boolean +00992FE0 modCollision.bas Public Function n00bCollision (Loc1 As Location, Loc2 As Location) As Boolean +UNUSED modCollision.bas Public Function NPCStartCollision (Loc1 As Location, Loc2 As Location) As Boolean +009931D0 modCollision.bas Public Function WarpCollision (Loc1 As Location, A As Integer) As Boolean +00993330 modCollision.bas Public Function FindCollision (Loc1 As Location, Loc2 As Location) As Integer +00993470 modCollision.bas Public Function FindCollisionBelt (Loc1 As Location, Loc2 As Location, BeltSpeed As Single) As Integer +009935C0 modCollision.bas Public Function NPCFindCollision (Loc1 As Location, Loc2 As Location) As Integer +00993700 modCollision.bas Public Function EasyModeCollision (Loc1 As Location, Loc2 As Location, Optional StandOn As Boolean = False) As Integer +00993970 modCollision.bas Public Function BootCollision (Loc1 As Location, Loc2 As Location, Optional StandOn As Boolean = False) As Integer +00993BE0 modCollision.bas Public Function CursorCollision (Loc1 As Location, Loc2 As Location) As Boolean +00993CD0 modCollision.bas Public Function ShakeCollision (Loc1 As Location, Loc2 As Location, ShakeY3 As Integer) As Boolean +00993DE0 modCollision.bas Public Function vScreenCollision (A As Integer, Loc2 As Location) As Boolean +00993F90 modCollision.bas Public Function vScreenCollision2 (A As Integer, Loc2 As Location) As Boolean +00994130 modCollision.bas Public Function WalkingCollision (Loc1 As Location, Loc2 As Location) As Boolean +UNUSED modCollision.bas Public Function WalkingCollision2 (Loc1 As Location, Loc2 As Location) As Boolean +009941B0 modCollision.bas Public Function WalkingCollision3 (Loc1 As Location, Loc2 As Location, BeltSpeed As Single) As Boolean +00994250 modCollision.bas Public Function FindRunningCollision (Loc1 As Location, Loc2 As Location) As Integer +UNUSED modCollision.bas Public Function ShouldTurnAround (Loc1 As Location, Loc2 As Location, Direction As Single) As Boolean +00994390 modCollision.bas Public Function CanComeOut (Loc1 As Location, Loc2 As Location) As Boolean +00994480 modCollision.bas Public Function CheckHitSpot1 (Loc1 As Location, Loc2 As Location) As Boolean +009944F0 modPlayer.bas Public Sub SetupPlayers () +00995A20 modPlayer.bas Public Sub UpdatePlayer () +009B51E0 modPlayer.bas Public Sub PlayerHurt (A As Integer) +009B66D0 modPlayer.bas Public Sub PlayerDead (A As Integer) +009B6EC0 modPlayer.bas Public Sub KillPlayer (A As Integer) +009B7590 modPlayer.bas Public Function CheckDead () As Integer +009B7680 modPlayer.bas Public Function CheckLiving () As Integer +009B7710 modPlayer.bas Public Function LivingPlayers () As Boolean +009B7780 modPlayer.bas Public Sub EveryonesDead () +009B7BF0 modPlayer.bas Public Sub UnDuck (A As Integer) +009B7E10 modPlayer.bas Public Sub CheckSection (A As Integer) +009B8620 modPlayer.bas Public Sub PlayerFrame (A As Integer) +009BB2B0 modPlayer.bas Public Sub UpdatePlayerBonus (A As Integer, B As Integer) +009BB490 modPlayer.bas Public Sub TailSwipe (plr As Integer, Optional bool As Boolean = False, Optional Stab As Boolean = False, Optional StabDir As Integer = 0) +009BD560 modPlayer.bas Public Sub YoshiHeight (A As Integer) +009BD610 modPlayer.bas Public Sub YoshiEat (A As Integer) +009BE6D0 modPlayer.bas Public Sub YoshiSpit (A As Integer) +009C0040 modPlayer.bas Public Sub YoshiPound (A As Integer, C As Integer, Optional BreakBlocks As Boolean = False) +009C06A0 modPlayer.bas Public Sub SwapCoop () +009C0800 modPlayer.bas Public Sub PlayerPush (A As Integer, HitSpot As Integer) +009C0C50 modPlayer.bas Public Sub SizeCheck (A As Integer) +009C1D90 modPlayer.bas Public Sub YoshiEatCode (A As Integer) +009C46C0 modPlayer.bas Public Sub StealBonus () +009C4A70 modPlayer.bas Public Sub ClownCar () +009C5AC0 modPlayer.bas Private Sub WaterCheck (A As Integer) +009C6430 modPlayer.bas Private Sub Tanooki (A As Integer) +009C6600 modPlayer.bas Private Sub PowerUps (A As Integer) +009C9740 modPlayer.bas Private Sub SuperWarp (A As Integer) +009CAEC0 modPlayer.bas Private Sub PlayerCollide (A As Integer) +009CC2B0 modPlayer.bas Public Sub PlayerGrabCode (A As Integer, Optional DontResetGrabTime As Boolean = False) +009D1480 modPlayer.bas Public Sub LinkFrame (A As Integer) +009D1E80 modPlayer.bas Private Sub PlayerEffects (A As Integer) +009DA620 modBlocks.bas Public Sub BlockHit (A As Integer, Optional HitDown As Boolean = False, Optional whatPlayer As Integer = 0) +009E0940 modBlocks.bas Public Sub BlockShakeUp (A As Integer) +009E0A00 modBlocks.bas Public Sub BlockShakeUpPow (A As Integer) +009E0AC0 modBlocks.bas Public Sub BlockShakeDown (A As Integer) +009E0B80 modBlocks.bas Public Sub BlockHitHard (A As Integer) +009E0D50 modBlocks.bas Public Sub KillBlock (A As Integer, Optional Splode As Boolean = True) +009E14B0 modBlocks.bas Public Sub BlockFrames () +009E2090 modBlocks.bas Public Sub UpdateBlocks () +009E33B0 modBlocks.bas Public Sub PSwitch (bool As Boolean) +009E4600 modBlocks.bas Public Sub PowBlock () +009E4900 modEffect.bas Public Sub UpdateEffects () +009E7380 modEffect.bas Public Sub NewEffect (A As Integer, Location As Location, Optional Direction As Single = 1, Optional NewNpc As Integer = 0, Optional Shadow As Boolean = False) +009EC150 modEffect.bas Public Sub KillEffect (A As Integer) +009EC200 modEditor.bas Public Sub UpdateEditor () +009FCD10 modEditor.bas Public Sub GetEditorControls () +009FCDA0 modEditor.bas Public Sub SetCursor () +00A00C50 modEditor.bas Public Sub PositionCursor () +00A02090 modEditor.bas Public Sub HideCursor () +00A02120 modEditor.bas Public Sub KillWarp (A As Integer) +00A02220 modEditor.bas Public Sub zTestLevel () +00A03630 modEditor.bas Public Function EditorNPCFrame (A As Integer, C As Single, Optional N As Integer) As Integer +00A041D0 modEditor.bas Public Sub MouseMove (X As Single, Y As Single, Optional nCur As Boolean = False) +00A05C40 modEditor.bas Public Sub ResetNPC (A As Integer) +00A05D20 modEditor.bas Public Sub BlockFill (Loc As Location) +00A06090 modNPC.bas Public Sub UpdateNPCs () +00A24310 modNPC.bas Public Sub DropBonus (A As Integer) +00A24CD0 modNPC.bas Public Sub TouchBonus (A As Integer, B As Integer) +00A281B0 modNPC.bas Public Sub NPCHit (A As Integer, B As Integer, Optional C As Integer = 0) +00A315A0 modNPC.bas Public Sub KillNPC (A As Integer, B As Integer) +00A3B680 modNPC.bas Public Sub CheckSectionNPC (A As Integer) +00A3B880 modNPC.bas Public Sub Deactivate (A As Integer) +00A3BA90 modNPC.bas Public Sub Bomb (Location As Location, Game As Integer, Optional ImmunePlayer As Integer = 0) +UNUSED modNPC.bas Public Sub DropNPC (A As Integer, NPCType As Integer) +00A3C580 modNPC.bas Public Sub TurnNPCsIntoCoins () +00A3C990 modNPC.bas Public Sub NPCFrames (A As Integer) +00A446A0 modNPC.bas Public Sub SkullRide (A As Integer) +00A448D0 modNPC.bas Public Sub NPCSpecial (A As Integer) +00A52BB0 modNPC.bas Public Sub SpecialNPC (A As Integer) +00A60AF0 modNPC.bas Public Sub CharStuff (Optional WhatNPC As Integer = 0, Optional CheckEggs As Boolean = False) +00A61A00 modNPC.bas Public Function RandomBonus () +00A61B40 modSound.bas Public Sub StartMusic (A As Integer) +00A621A0 modSound.bas Public Sub StopMusic () +00A624D0 modSound.bas Public Sub InitSound () +00A73FD0 modSound.bas Public Sub PlaySound (A As Integer) +00A74420 modSound.bas Public Sub BlockSound () +00A74460 modSound.bas Public Sub UpdateSound () +00A74910 modJoystick.bas Public Sub UpdateControls () +00A75680 modJoystick.bas Public Function StartJoystick (Optional ByVal JoystickNumber As Integer = 0) As Boolean +00A75820 modJoystick.bas Public Sub PollJoystick () +00A75970 frmOpen.frm Private Sub cmdCancel_Click () +00A75A40 frmOpen.frm Private Sub cmdOpen_Click () +00A75AB0 frmOpen.frm Private Sub Dir1_Change () +00A75BE0 frmOpen.frm Private Sub Drive1_Change () +00A75D10 frmOpen.frm Private Sub File1_DblClick () +00A75D80 frmOpen.frm Private Sub File1_KeyPress (KeyAscii As Integer) +00A75E00 frmOpen.frm Private Sub Form_Load () +00A76100 frmOpen.frm Private Sub Form_Unload (Cancel As Integer) +00A761B0 frmOpen.frm Private Sub OpenIt () +00A76A80 frmSave.frm Private Sub cmdCancel_Click () +00A76B50 frmSave.frm Private Sub cmdSave_Click () +00A76BC0 frmSave.frm Private Sub Dir1_Change () +00A76CF0 frmSave.frm Private Sub Drive1_Change () +00A76E90 frmSave.frm Private Sub File1_Click () +00A77060 frmSave.frm Private Sub Form_Load () +00A773D0 frmSave.frm Private Sub Form_Unload (Cancel As Integer) +00A77480 frmSave.frm Private Sub txtFileName_KeyDown (KeyCode As Integer, Shift As Integer) +00A77500 frmSave.frm Private Sub SaveIt () +00A77F30 frmLevelEditor.frm Private Sub chkAlign_Click () +00A78050 frmLevelEditor.frm Private Sub chkAlign2_Click () +00A78170 frmLevelEditor.frm Private Sub MDIForm_Load () +00A7C7B0 frmLevelEditor.frm Private Sub MDIForm_QueryUnload (Cancel As Integer, UnloadMode As Integer) +00A7C820 frmLevelEditor.frm Private Sub MDIForm_Unload (Cancel As Integer) +00A7C890 frmLevelEditor.frm Private Sub menHelp_Click () +00A7CB40 frmLevelEditor.frm Private Sub menuGameplay_Click () +00A7CDF0 frmLevelEditor.frm Private Sub menuLevelDebugger_Click () +00A7CEE0 frmLevelEditor.frm Private Sub menuEvents_Click () +00A7D0D0 frmLevelEditor.frm Private Sub menuFileExit_Click () +00A7D140 frmLevelEditor.frm Private Sub menuFileNew_Click () +00A7D570 frmLevelEditor.frm Private Sub menuFileOpen_Click () +00A7D680 frmLevelEditor.frm Private Sub menuFileSave_Click () +00A7D790 frmLevelEditor.frm Private Sub menuLayers_Click () +00A7D980 frmLevelEditor.frm Private Sub menuNetplay_Click () +00A7DBE0 frmLevelEditor.frm Private Sub menureset_Click () +00A7DC70 frmLevelEditor.frm Private Sub menuStatus_Click () +00A7DCE0 frmLevelEditor.frm Private Sub menuTestLevel_Click () +00A7DE00 frmLevelEditor.frm Private Sub menuTestLevel128_Click () +00A7DE80 frmLevelEditor.frm Private Sub menuTestLevel16_Click () +00A7DF00 frmLevelEditor.frm Private Sub menuTestLevel2_Click () +00A7E020 frmLevelEditor.frm Private Sub menuTestLevel32_Click () +00A7E0A0 frmLevelEditor.frm Private Sub menuTestLevel4_Click () +00A7E120 frmLevelEditor.frm Private Sub menuTestLevel64_Click () +00A7E1A0 frmLevelEditor.frm Private Sub menuTestLevel8_Click () +00A7E220 frmLevelEditor.frm Private Sub MenuTestLevelBattle_Click () +00A7E2B0 frmLevelEditor.frm Private Sub menuTestLevelTwo_Click () +00A7E330 frmLevelEditor.frm Private Sub mnuChat_Click () +00A7E420 frmLevelEditor.frm Private Sub mnuLevelEditor_Click () +00A7E8C0 frmLevelEditor.frm Private Sub mnuTestSetting_Click () +00A7E9B0 frmLevelEditor.frm Private Sub mnuWorldEditor_Click () +00A7EF10 frmLevelEditor.frm Private Sub optCursor_Click (Index As Integer) +00A814C0 frmLevelWindow.frm Private Sub Form_KeyPress (KeyAscii As Integer) +00A81530 frmLevelWindow.frm Private Sub Form_Load () +00A81E20 frmLevelWindow.frm Private Sub Form_LostFocus () +00A81E90 frmLevelWindow.frm Private Sub Form_Resize () +00A82050 frmLevelWindow.frm Private Sub Form_Unload (Cancel As Integer) +00A820C0 frmLevelWindow.frm Private Sub vScreen_KeyDown (Index As Integer, KeyCode As Integer, Shift As Integer) +00A82140 frmLevelWindow.frm Private Sub vScreen_KeyPress (Index As Integer, KeyAscii As Integer) +00A82210 frmLevelWindow.frm Private Sub vScreen_LostFocus (Index As Integer) +00A82280 frmLevelWindow.frm Private Sub vScreen_MouseDown (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) +00A824E0 frmLevelWindow.frm Private Sub vScreen_MouseMove (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) +00A829E0 frmLevelWindow.frm Private Sub vScreen_MouseUp (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) +00A82A60 frmLevelSettings.frm Private Sub cmdAdvanced_Click () +00A82EC0 frmLevelSettings.frm Private Sub cmdExit_Click () +00A83300 frmLevelSettings.frm Private Sub cmdNoTurnBack_Click () +00A83740 frmLevelSettings.frm Private Sub cmdWater_Click () +00A83B80 frmLevelSettings.frm Private Sub cmdWrap_Click () +00A83FC0 frmLevelSettings.frm Private Sub Form_Load () +00A84280 frmLevelSettings.frm Private Sub Form_Unload (Cancel As Integer) +00A843A0 frmLevelSettings.frm Private Sub optBackground_Click (Index As Integer) +00A84840 frmLevelSettings.frm Private Sub optBackgroundColor_Click (Index As Integer) +00A84A00 frmLevelSettings.frm Private Sub optGame_Click (Index As Integer) +00A84DC0 frmLevelSettings.frm Private Sub optLevel_Click (Index As Integer) +00A850C0 frmLevelSettings.frm Private Sub optMusic_Click (Index As Integer) +00A85590 frmLevelSettings.frm Private Sub optSection_Click (Index As Integer) +00A86D30 frmLevelSettings.frm Private Sub txtMusic_Change () +00A86F50 frmBlocks.frm Private Sub Block_Click (Index As Integer) +00A87790 frmBlocks.frm Private Sub BlockH_Change () +00A87900 frmBlocks.frm Private Sub BlockR_Click () +00A87B40 frmBlocks.frm Private Sub BlockW_Change () +00A87CB0 frmBlocks.frm Private Sub cmdAdvanced_Click () +00A87EA0 frmBlocks.frm Private Sub cmdInvis_Click () +00A87FF0 frmBlocks.frm Private Sub cmdSlip_Click () +00A88140 frmBlocks.frm Private Sub Form_Load () +00A89250 frmBlocks.frm Private Sub Form_Unload (Cancel As Integer) +00A89370 frmBlocks.frm Private Sub optBlockS_Change () +00A89520 frmBlocks.frm Private Sub optBlockS_Scroll () +00A896D0 frmBlocks.frm Private Sub optBlockSpecial_Click (Index As Integer) +00A89840 frmBlocks.frm Private Sub optGame_Click (Index As Integer) +00A89C00 frmBlocks.frm Private Sub optMisc_Click (Index As Integer) +00A89FC0 frmBlocks.frm Private Sub optSMW_Click (Index As Integer) +00A8A380 frmBlocks.frm Private Sub optSMB3_Click (Index As Integer) +00A8A740 frmBlocks.frm Private Sub optSMB2_Click (Index As Integer) +00A8AB00 frmBlocks.frm Private Sub optSMB1_Click (Index As Integer) +00A8AEC0 frmBlocks.frm Private Sub qBlockS_Click (Index As Integer) +00A8B0A0 frmBlocks.frm Private Sub qCoin_Click (Index As Integer) +00A8B150 frmBlocks.frm Public Sub CheckBlock () +00A8D850 frmNPCs.frm Private Sub Bubble_Click () +00A8DD40 frmNPCs.frm Private Sub Buried_Click () +00A8E300 frmNPCs.frm Private Sub chkMessage_Click () +00A8E5B0 frmNPCs.frm Private Sub cmdAdvanced_Click () +00A8E7A0 frmNPCs.frm Private Sub cmdEvents_Click () +00A8E990 frmNPCs.frm Private Sub cmdGenerator_Click () +00A8EB80 frmNPCs.frm Private Sub DontMove_Click () +00A8EE60 frmNPCs.frm Private Sub Egg_Click () +00A8F420 frmNPCs.frm Private Sub Form_Load () +00A8F950 frmNPCs.frm Private Sub Form_Unload (Cancel As Integer) +00A8FA70 frmNPCs.frm Private Sub Friendly_Click () +00A8FD50 frmNPCs.frm Private Sub Lakitu_Click () +00A90310 frmNPCs.frm Private Sub NPC_Click (Index As Integer) +00A93770 frmNPCs.frm Private Sub NPCText_Change () +00A93830 frmNPCs.frm Private Sub optEffect_Click (Index As Integer) +00A93970 frmNPCs.frm Private Sub optGame_Click (Index As Integer) +00A94050 frmNPCs.frm Private Sub optNPCDirection_Click (Index As Integer) +00A941D0 frmNPCs.frm Public Sub ShowLak () +00A943F0 frmBackgrounds.frm Private Sub Background_Click (Index As Integer) +00A946F0 frmBackgrounds.frm Private Sub Form_Load () +00A94AF0 frmBackgrounds.frm Private Sub Form_Unload (Cancel As Integer) +00A94C10 frmBackgrounds.frm Private Sub optGame_Click (Index As Integer) +00A94FD0 frmWarp.frm Private Sub chkEntrance_Click () +00A95140 frmWarp.frm Private Sub chkMapWarp_Click () +00A952B0 frmWarp.frm Private Sub cmdLocked_Click () +00A95590 frmWarp.frm Private Sub cmdNPC_Click () +00A95870 frmWarp.frm Private Sub cmdYoshi_Click () +00A95B50 frmWarp.frm Private Sub Form_Unload (Cancel As Integer) +00A95C70 frmWarp.frm Private Sub optDirection_Click (Index As Integer) +00A95DE0 frmWarp.frm Private Sub optDirection2_Click (Index As Integer) +00A95F50 frmWarp.frm Private Sub optE_Click (Index As Integer) +00A960C0 frmWarp.frm Private Sub optEffect_Click (Index As Integer) +00A966B0 frmWarp.frm Private Sub scrWarp_Change () +00A96A40 frmTiles.frm Private Sub Form_Load () +00A96D60 frmTiles.frm Private Sub optGame_Click (Index As Integer) +00A97140 frmTiles.frm Private Sub Tile_Click (Index As Integer) +00A97440 frmScene.frm Private Sub Scene_Click (Index As Integer) +00A975B0 frmLevels.frm Private Sub cmbExit_Change (Index As Integer) +00A97720 frmLevels.frm Private Sub cmbExit_Click (Index As Integer) +00A97890 frmLevels.frm Private Sub scrWarp_Change () +00A97C20 frmLevels.frm Private Sub WorldLevel_Click (Index As Integer) +00A97D90 frmPaths.frm Private Sub WorldPath_Click (Index As Integer) +00A97F00 frmMusic.frm Private Sub optMusic_Click (Index As Integer) +00A98070 modChangeRes.bas Public Sub GetCurrentRes () +00A98150 modChangeRes.bas Public Sub SetOrigRes () +00A98190 modChangeRes.bas Public Sub ChangeRes (ScreenX As Integer, ScreenY As Integer, ScreenColor As Integer, ScreenFreq As Integer) +00A984A0 modChangeRes.bas Private Sub SaveIt (ScX As Integer, ScY As Integer, ScC As Integer, ScF As Integer, ScreenChanged As String) +00A985A0 modSorting.bas Public Sub qSortBlocksY (min As Integer, max As Integer) +00A988E0 modSorting.bas Public Sub qSortBlocksX (min As Integer, max As Integer) +00A98C20 modSorting.bas Public Sub qSortBackgrounds (min As Integer, max As Integer) +00A98FE0 modSorting.bas Public Sub FindBlocks () +UNUSED modSorting.bas Public Sub BlockSort () +UNUSED modSorting.bas Public Sub BlockSort2 () +UNUSED modSorting.bas Public Sub BackgroundSort () +00A992C0 modSorting.bas Public Function BackGroundPri (A As Integer) As Double +00A99620 modSorting.bas Public Sub NPCSort () +00A99870 modSorting.bas Public Sub FindSBlocks () +00A99930 modSorting.bas Public Sub qSortSBlocks (min As Integer, max As Integer) +00A99C10 modSorting.bas Public Sub qSortNPCsY (min As Integer, max As Integer) +00A9A000 modSorting.bas Public Sub UpdateBackgrounds () +UNUSED modSorting.bas Public Sub qSortTempBlocksX (min As Integer, max As Integer) +00A9A1E0 frmWorld.frm Private Sub chkChar_Click (Index As Integer) +00A9A430 frmWorld.frm Private Sub Form_Unload (Cancel As Integer) +00A9A4C0 frmWorld.frm Private Sub txtStars_Change () +00A9A680 frmTestSettings.frm Private Sub chkFullscreen_Click () +00A9A760 frmTestSettings.frm Private Sub chkGodMode_Click () +00A9A840 frmTestSettings.frm Private Sub chkGrabAll_Click () +00A9A920 frmTestSettings.frm Private Sub chkMaxFPS_Click () +00A9AA00 frmTestSettings.frm Private Sub chkShowFPS_Click () +00A9AAE0 frmTestSettings.frm Private Sub cmdClose_Click () +00A9AB70 frmTestSettings.frm Private Sub Form_Unload (Cancel As Integer) +00A9AC00 frmTestSettings.frm Private Sub optBlackYoshi_Click (Index As Integer) +00A9ACC0 frmTestSettings.frm Private Sub optBlueBoot_Click (Index As Integer) +00A9AD80 frmTestSettings.frm Private Sub optBlueYoshi_Click (Index As Integer) +00A9AE40 frmTestSettings.frm Private Sub optBoot_Click (Index As Integer) +00A9AF00 frmTestSettings.frm Private Sub optChrLink_Click (Index As Integer) +00A9B850 frmTestSettings.frm Private Sub optChrLuigi_Click (Index As Integer) +00A9BCF0 frmTestSettings.frm Private Sub optChrMario_Click (Index As Integer) +00A9C190 frmTestSettings.frm Private Sub optChrPeach_Click (Index As Integer) +00A9C980 frmTestSettings.frm Private Sub optChrToad_Click (Index As Integer) +00A9D170 frmTestSettings.frm Private Sub optFireMario_Click (Index As Integer) +00A9D200 frmTestSettings.frm Private Sub optGreenYoshi_Click (Index As Integer) +00A9D2C0 frmTestSettings.frm Private Sub optKoopaClownCar_Click (Index As Integer) +00A9D300 frmTestSettings.frm Private Sub optHammerMario_Click (Index As Integer) +00A9D390 frmTestSettings.frm Private Sub optIceMario_Click (Index As Integer) +00A9D420 frmTestSettings.frm Private Sub optIceYoshi_Click (Index As Integer) +00A9D4E0 frmTestSettings.frm Private Sub optMario_Click (Index As Integer) +00A9D570 frmTestSettings.frm Private Sub optMarioC_Click (Index As Integer) +00A9D590 frmTestSettings.frm Private Sub optNoMount_Click (Index As Integer) +00A9D620 frmTestSettings.frm Private Sub optPinkYoshi_Click (Index As Integer) +00A9D6E0 frmTestSettings.frm Private Sub optPurpleYoshi_Click (Index As Integer) +00A9D7A0 frmTestSettings.frm Private Sub optRacoonMario_Click (Index As Integer) +00A9D830 frmTestSettings.frm Private Sub optRedBoot_Click (Index As Integer) +00A9D8F0 frmTestSettings.frm Private Sub optRedYoshi_Click (Index As Integer) +00A9D9B0 frmTestSettings.frm Private Sub optSuperMario_Click (Index As Integer) +00A9DA40 frmTestSettings.frm Private Sub optTanookiMario_Click (Index As Integer) +00A9DAD0 frmTestSettings.frm Private Sub optYellowYoshi_Click (Index As Integer) +00A9DB90 frmTestSettings.frm Private Sub ShowAll (Index As Integer) +00A9E440 frmAdvanced.frm Private Sub cmbPara_Click () +00A9E7D0 frmAdvanced.frm Private Sub Form_Load () +00A9E910 frmAdvanced.frm Private Sub Form_Unload (Cancel As Integer) +00A9E9A0 frmLayers.frm Private Sub cmdAdd_Click () +00A9F260 frmLayers.frm Private Sub cmdDelete_Click () +00A9FE00 frmLayers.frm Private Sub Form_Load () +00A9FF10 frmLayers.frm Private Sub Form_Unload (Cancel As Integer) +00A9FFA0 frmLayers.frm Private Sub lstLayer_Click () +00AA0F20 frmLayers.frm Private Sub lstLayer_DblClick () +00AA1250 frmLayers.frm Private Sub txtLayer_KeyPress (KeyAscii As Integer) +00AA2160 frmLayers.frm Public Sub UpdateLayers () +00AA2760 modLayers.bas Public Sub ShowLayer (LayerName As String, Optional NoEffect As Boolean = False) +00AA3730 modLayers.bas Public Sub HideLayer (LayerName As String, Optional NoEffect As Boolean = False) +UNUSED modLayers.bas Public Sub SetLayer (LayerName As String) +00AA42D0 modLayers.bas Public Sub ProcEvent (EventName As String, Optional NoEffect As Boolean = False) +00AA60E0 modLayers.bas Public Sub UpdateEvents () +00AA6710 modLayers.bas Public Sub UpdateLayers () +UNUSED frmEvents.frm Private Sub addSavedEvent_Change () +00AA7F30 frmEvents.frm Private Sub AutoSection_Change () +00AA8410 frmEvents.frm Private Sub cAltJump_Click () +00AA87A0 frmEvents.frm Private Sub cAltRun_Click () +00AA8B30 frmEvents.frm Private Sub cDown_Click () +00AA8EC0 frmEvents.frm Private Sub cDrop_Click () +00AA9250 frmEvents.frm Private Sub chkSmoke_Click () +00AA96A0 frmEvents.frm Private Sub chkStart_Click () +00AA9AF0 frmEvents.frm Private Sub cJump_Click () +00AA9E80 frmEvents.frm Private Sub cLeft_Click () +00AAA210 frmEvents.frm Private Sub cmbEndGame_Click () +00AAA560 frmEvents.frm Private Sub cmbLayerMove_Click () +00AAA970 frmEvents.frm Private Sub cmbSound_Click () +00AAADE0 frmEvents.frm Private Sub cmdAdd_Click () +00AAB770 frmEvents.frm Private Sub cmdBackground_Click (Index As Integer) +00AABDD0 frmEvents.frm Private Sub cmdDelete_Click () +00AAD210 frmEvents.frm Private Sub cmdDupe_Click () +00AADD30 frmEvents.frm Private Sub cmdHideAdd_Click () +00AAE1F0 frmEvents.frm Private Sub cmdHideRemove_Click () +00AAE660 frmEvents.frm Private Sub cmdMusic_Click (Index As Integer) +00AAECC0 frmEvents.frm Private Sub cmdPosition_Click (Index As Integer) +00AAF5C0 frmEvents.frm Private Sub cmdShowAdd_Click () +00AAFA80 frmEvents.frm Private Sub cmdShowRemove_Click () +00AAFEF0 frmEvents.frm Private Sub cmdToggleAdd_Click () +00AB03C0 frmEvents.frm Private Sub cmdToggleRemove_Click () +00AB0840 frmEvents.frm Private Sub cRight_Click () +00AB0BD0 frmEvents.frm Private Sub cRun_Click () +00AB0F60 frmEvents.frm Private Sub cStart_Click () +00AB12F0 frmEvents.frm Private Sub cUp_Click () +UNUSED frmEvents.frm Private Sub delSavedEvent_Change () +00AB1680 frmEvents.frm Private Sub EventText_Change () +00AB1D30 frmEvents.frm Private Sub Form_Unload (Cancel As Integer) +00AB1DC0 frmEvents.frm Private Sub lstEvent_Click () +00AB2110 frmEvents.frm Private Sub lstLayers_Click () +00AB2250 frmEvents.frm Private Sub scrDelay_Change () +00AB28E0 frmEvents.frm Private Sub scrX_Change () +00AB2D00 frmEvents.frm Private Sub scrY_Change () +00AB3120 frmEvents.frm Private Sub TriggerEvent_Click () +00AB3490 frmEvents.frm Private Sub txtEvent_KeyPress (KeyAscii As Integer) +00AB4A70 frmEvents.frm Public Sub RefreshEvents () +00AB92B0 frmEvents.frm Private Sub txtX_Change () +00AB96D0 frmEvents.frm Private Sub txtY_Change () +00AB9AF0 frmAdvancedBlock.frm Private Sub Form_Unload (Cancel As Integer) +00AB9B80 frmSplash.frm Private Sub Form_Load () +00ABA390 modLoadGFX.bas Public Sub LoadGFX () +00ACB440 modLoadGFX.bas Public Sub UnloadGFX () +00ACD220 modLoadGFX.bas Public Sub LoadCustomGFX () +00AD3420 modLoadGFX.bas Public Sub UnloadCustomGFX () +00AD9DC0 modLoadGFX.bas Public Sub LoadCustomGFX2 (GFXFilePath As String) +00ADFF90 modLoadGFX.bas Public Sub LoadWorldCustomGFX () +00AE2630 modLoadGFX.bas Public Sub UnloadWorldCustomGFX () +00AE5250 modLoadGFX.bas Private Sub cBlockGFX (A As Integer) +00AE57E0 modLoadGFX.bas Private Sub cNPCGFX (A As Integer) +00AE65E0 modLoadGFX.bas Private Sub cBackgroundGFX (A As Integer) +00AE6B70 modLoadGFX.bas Private Sub cTileGFX (A As Integer) +00AE7100 modLoadGFX.bas Private Sub cSceneGFX (A As Integer) +00AE7680 modLoadGFX.bas Private Sub cLevelGFX (A As Integer) +00AE7D20 modLoadGFX.bas Private Sub cPathGFX (A As Integer) +00AE8110 modLoadGFX.bas Public Sub UpdateLoad () +00AE8B30 frmLevelDebugger.frm Private Sub cmdSortBlocks_Click () +00AE8C70 frmLevelDebugger.frm Private Sub cmdSwap_Click () +00AE90D0 frmLevelDebugger.frm Private Sub Form_Load () +00AE91D0 frmLevelDebugger.frm Private Sub Form_Unload (Cancel As Integer) +00AE9240 frmLevelDebugger.frm Public Sub UpdateDisplay () +00AEA740 frmLevelDebugger.frm Private Sub plrSprites_Click () +00AEAB70 frmGenerator.frm Private Sub Form_Load () +00AEAC00 frmGenerator.frm Private Sub Form_Unload (Cancel As Integer) +00AEACF0 frmGenerator.frm Private Sub optEffect_Click (Index As Integer) +00AEAE60 frmGenerator.frm Private Sub Spawn_Click () +00AEB180 frmGenerator.frm Public Sub CheckSpawn () +00AEB9E0 frmGenerator.frm Private Sub optSpawnDirection_Click (Index As Integer) +00AEBB50 frmGenerator.frm Private Sub scrDelay_Change () +00AEC010 frmNPCAdvanced.frm Private Sub Form_Load () +00AEC1C0 frmNPCAdvanced.frm Private Sub Form_Unload (Cancel As Integer) +00AEC250 frmNPCAdvanced.frm Private Sub Legacy_Click () +00AEC530 frmNPCAdvanced.frm Private Sub scrFire_Change () +00AEC690 frmWater.frm Private Sub Quicksand_Click () +00AEC970 frmWater.frm Private Sub WaterH_Change () +00AECAE0 frmWater.frm Private Sub WaterR_Click () +00AECD20 frmWater.frm Private Sub WaterW_Change () +00AECE90 frmSprites.frm Private Sub Form_Resize () +00AED060 Netplay.frm Private Sub nClient_Close () +00AED320 Netplay.frm Private Sub nClient_Connect () +00AEDAC0 Netplay.frm Private Sub nClient_DataArrival (ByVal bytesTotal As Long) +00AEE490 Netplay.frm Private Sub nServer_Close (Index As Integer) +00AEE8B0 Netplay.frm Private Sub nServer_ConnectionRequest (Index As Integer, ByVal requestID As Long) +00AEEFE0 Netplay.frm Private Sub nServer_DataArrival (Index As Integer, ByVal bytesTotal As Long) +00AEFA60 Netplay.frm Public Sub newData (newStr As String, Action As String, Index As Integer) +00B0C0B0 Netplay.frm Public Sub sendData (newStr As String, Optional exServer As Integer = 0) +00B0C4B0 Netplay.frm Public Sub ModPlayer (newStr As String) +00B0EB70 Netplay.frm Public Sub ModNPC (newStr As String) +00B0F2A0 Netplay.frm Public Sub ModBlock (newStr As String) +00B0F4B0 Netplay.frm Public Function AddBlock (A As Integer) As String +00B0FB00 Netplay.frm Public Function EraseBlock (A As Integer, Optional noEffects As Integer = 0) As String +00B0FEF0 Netplay.frm Public Function EraseNPC (A As Integer, Optional noEffects As Integer = 0) As String +00B10250 Netplay.frm Public Function EraseBackground (A As Integer, Optional noEffects As Integer = 0) As String +00B10580 Netplay.frm Public Function AddBackground (A As Integer) As String +00B10890 Netplay.frm Public Function AddNPC (A As Integer) As String +00B113E0 Netplay.frm Public Function AddWater (A As Integer) As String +00B11740 Netplay.frm Public Function AddWarp (A As Integer) As String +00B121B0 Netplay.frm Public Function ModSection (A As Integer) As String +00B12420 Netplay.frm Public Function ModLayer (A As Integer) As String +00B12690 Netplay.frm Public Function ModEvent (A As Integer) As String +00B137F0 Netplay.frm Public Function SyncNum () As String +00B13980 Netplay.frm Public Function PutPlayerControls (A As Integer) +00B145C0 Netplay.frm Public Function PutPlayerLoc (A As Integer) +00B14980 Netplay.frm Public Sub GetPlayerControls (newStr As String) +00B15680 Netplay.frm Public Sub GetPlayerLoc (newStr As String) +00B15B20 Netplay.frm Public Sub InitSync (Index As Integer) +00B17480 Netplay.frm Private Sub tmrCheckPorts_Timer () +00B17890 Netplay.frm Private Sub tmrConnect_Timer () +00B17970 Netplay.frm Private Sub tmrPing_Timer () +00B17AA0 Netplay.frm Private Sub tmrPingC_Timer () +00B18270 Netplay.frm Private Sub tmrPort_Timer () +00B18500 Netplay.frm Private Sub tmrTimeout_Timer (Index As Integer) +00B18980 Netplay.frm Private Sub UpdateEvents (newStr As String) +00B1A060 Netplay.frm Public Sub DropClient (Index As Integer) +00B1AD90 Netplay.frm Public Sub DropServer () +00B1B430 Netplay.frm Private Sub tmrTimeoutC_Timer () +00B1B6F0 frmNetplay.frm Private Sub cmdClearLevel_Click () +00B1B960 frmNetplay.frm Private Sub cmdGo_Click () +00B1D740 frmNetplay.frm Private Sub cPassword_Change () +00B1D820 frmNetplay.frm Private Sub Cursor_Click (Index As Integer) +00B1D9A0 frmNetplay.frm Private Sub Form_Unload (Cancel As Integer) +00B1DA30 frmNetplay.frm Private Sub optMode_Click (Index As Integer) +00B1DC20 frmNetplay.frm Private Sub optPlayer_Click (Index As Integer) +00B1DD90 frmNetplay.frm Private Sub sPassword_Change () +00B1DE70 frmNetplay.frm Private Sub txtNick_Change () +00B1E510 frmChat.frm Private Sub Form_Unload (Cancel As Integer) +00B1E5A0 frmChat.frm Private Sub txtSay_KeyPress (KeyAscii As Integer) +00B1F790 frmLoading.frm Private Sub cmdGo_Click () +00B1FAE0 frmLoading.frm Private Sub Form_Unload (Cancel As Integer) +00B1FDF0 frmLoading.frm Private Sub tmrLoad_Timer () +00B20000 frmLoader.frm Private Sub cmdEditor_Click () +00B20080 frmLoader.frm Private Sub cmdExit_Click () +00B200F0 frmLoader.frm Private Sub cmdGame_Click () +00B20160 frmLoader.frm Private Sub Form_Load () +00B20230 frmLoader.frm Private Sub Form_Unload (Cancel As Integer) +00B202B0 modCustom.bas Public Sub SaveNPCDefaults () +00B20870 modCustom.bas Public Sub LoadNPCDefaults () +00B20E50 modCustom.bas Public Sub FindCustomNPCs (Optional cFilePath As String = "") +00B21200 modCustom.bas Private Sub LoadCustomNPC (A As Integer, cFileName As String) +00B22900 frmLevelAdv.frm Public Sub RefreshFields () +00B229C0 frmLevelAdv.frm Private Sub cmdClone_Click () +00B22B20 frmLevelAdv.frm Private Sub Form_Load () +00B22DB0 frmLevelAdv.frm Private Sub txtLevelName_Change () +00B22E90 frmLevelAdv.frm Public Sub CloneSection (SectionS As Integer, SectionT As Integer) +00B23F40 frmLevelAdv.frm Private Function CloneLoc (Loc1 As Location, Loc2 As Location) As Boolean diff --git a/Analysis/vb_parser/smbx_vb_tools.py b/Analysis/vb_parser/smbx_vb_tools.py new file mode 100644 index 000000000..cba052490 --- /dev/null +++ b/Analysis/vb_parser/smbx_vb_tools.py @@ -0,0 +1,748 @@ +#!/usr/bin/env python3 +from pprint import pprint +from dataclasses import dataclass +from typing import Optional +import itertools +import sys +import os.path +import antlr4 +from VisualBasic6Lexer import VisualBasic6Lexer +from VisualBasic6Parser import VisualBasic6Parser +from VisualBasic6ParserListener import VisualBasic6ParserListener + +knownAddresses = { + "myBackBuffer": 0x00B25028, + "Coins": 0x00B2C5A8, + "MessageText": 0x00B250E4, + "MenuMouseX": 0x00B2D6BC, + "Cheater": 0x00B2C8C4, + "Physics": 0x00B2C6DC, + "ShadowMode": 0x00B2C8AA, + "MultiHop": 0x00B2C8AC, + "GodMode": 0x00B2C8C0, + "BlocksSorted": 0x00B2C894, + "newEventNum": 0x00B2D710, + "GFXBlock": 0xB2C95C-16, + "GFXBlockMask": 0xB2C978-16, + "GFXBackground2": 0xB2CA00-16, + "GFXBackground2Height": 0xB2CA44-16, + "GFXBackground2Width": 0xB2CA60-16, + "GFXBackgroundMask": 0xB2CC6C-16, + "GFXNPC": 0xB2CA98-16, + "noSound": 0x00B2D734, + "LevelName": 0x00B2D764, + "BattleIntro": 0x00B2D760, + "tempTime": 0xB2D738, +} + + +@dataclass(frozen=True) +class TypeInfo: + size: int + align: int + vbName: str + cName: str + cInit: str + memName: str + + def displayAddress(self, field): + return field.address + + def yieldCFieldInfo(self, field): + cNamePart = self.cName + fieldNamePart = field.name+";" + addrPart = f'0x{self.displayAddress(field):X}' + yield cNamePart, fieldNamePart, addrPart + + +@dataclass(frozen=True) +class FieldInfo: + address: Optional[int] + name: str + typeInfo: TypeInfo + + def __str__(self): + # Get address string + if self.typeInfo != None: + dispAddr = self.typeInfo.displayAddress(self) + else: + dispAddr = self.address + if dispAddr != None: + addrStr = f'0x{dispAddr:X}' + else: + addrStr = '?' + + # Get name + name = self.name + + # Get type string + if self.typeInfo != None: + typeStr = self.typeInfo.vbName + else: + typeStr = '?' + + def noneBlank(x): return x if x != None else "" + + return f'{addrStr}\t{noneBlank(self.typeInfo.memName)}\t{name}\t{typeStr}' + + +def getParentModuleContext(ctx: antlr4.ParserRuleContext): + while not isinstance(ctx, VisualBasic6Parser.ModuleContext): + ctx = ctx.parentCtx + return ctx + + +def evalConstant(ctx: antlr4.ParserRuleContext, name: str): + module = getParentModuleContext(ctx) + # Proccess each module body element + moduleBody = module.moduleBody() + for moduleBodyElement in moduleBody.moduleBodyElement(): + # If it is a module block, process each block statement + moduleBlock = moduleBodyElement.moduleBlock() + if moduleBlock: + block = moduleBlock.block() + for stmt in block.blockStmt(): + # If it's a variable statement, process it + constStmt = stmt.constStmt() + if constStmt: + # Iterate sub-statements + for constSubStmt in constStmt.constSubStmt(): + if name != constSubStmt.ambiguousIdentifier().getText(): + continue + # We have a match for name + return evalValueStmt(constSubStmt.valueStmt()) + + +def evalValueStmt(valueStmt: VisualBasic6Parser.ValueStmtContext): + if isinstance(valueStmt, VisualBasic6Parser.VsLiteralContext): + literal = valueStmt.literal() + integerLiteral = literal.integerLiteral() + if integerLiteral: + return int(integerLiteral.getText()) + elif isinstance(valueStmt, VisualBasic6Parser.VsICSContext): + implicitCallStmt_InStmt = valueStmt.implicitCallStmt_InStmt() + iCS_S_VariableOrProcedureCall = implicitCallStmt_InStmt.iCS_S_VariableOrProcedureCall() + if iCS_S_VariableOrProcedureCall: + constName = iCS_S_VariableOrProcedureCall.ambiguousIdentifier().getText() + value = evalConstant(valueStmt, constName) + return value + elif isinstance(valueStmt, VisualBasic6Parser.VsPlusMinusContext): + if valueStmt.PLUS(): + return evalValueStmt(valueStmt.valueStmt()) + elif valueStmt.MINUS(): + return -evalValueStmt(valueStmt.valueStmt()) + raise NotImplementedError( + f"Unknown Statement \"{valueStmt.getText()}\"\n\t{valueStmt.toStringTree(recog=_parser)}") + + +@dataclass(frozen=True) +class ArraySubscript: + base: int + length: int + + @staticmethod + def fromSubscriptContext(subscript: [VisualBasic6Parser.Subscript_Context]): + subscript = tuple(evalValueStmt(x) for x in subscript.valueStmt()) + if len(subscript) == 1: + minIdx = 0 + maxIdx = subscript[0] + else: + minIdx = min(*subscript) + maxIdx = max(*subscript) + return ArraySubscript(base = minIdx, length = maxIdx - minIdx + 1) + + def asVbRangeString(self): + return f'{self.base} To {self.base + self.length - 1}' + + +@dataclass(frozen=True) +class ArrayTypeInfo(TypeInfo): + subscripts: tuple[ArraySubscript, ...] + baseType: TypeInfo + + # def yieldCFieldInfo(self, field): + # cNamePart = self.baseType.cName + # subscriptStr = "".join(f'[{x.length}]' for x in self.subscripts) + # fieldNamePart = field.name+subscriptStr+';' + # addrPart = f'0x{field.address:X}' + # yield cNamePart, fieldNamePart, addrPart + + +@dataclass(frozen=True) +class ArrayRefTypeInfo(TypeInfo): + subscripts: tuple[ArraySubscript, ...] + baseType: TypeInfo + + # Array references store the pointer at offset 16 + def displayAddress(self, field): + if field.address != None: + pointerOffset = 16 + if self.baseType.vbName == "StdPicture": + pointerOffset = 28 # References to arrays of StdPicture are sized bigger for some reason + return field.address + pointerOffset + return None + + # def yieldCFieldInfo(self, field): + # cNamePart = self.baseType.cName + # subscriptStr = "".join(f'[{x.length}]' for x in self.subscripts) + # fieldNamePart = f'(&{field.name}){subscriptStr};' + # pointerOffset = 16 + # if self.baseType.vbName == "StdPicture": + # pointerOffset = 28 # References to arrays of StdPicture are sized bigger for some reason + # yield 'uint8_t', f'_reserved_before_{field.name}[{pointerOffset}];', f'0x{field.address:X}' + # yield cNamePart, fieldNamePart, f'0x{field.address+pointerOffset:X}' + # yield 'uint8_t', f'_reserved_after_{field.name}[{self.size-pointerOffset-4}];', f'0x{field.address+pointerOffset+4:X}' + + +@dataclass(frozen=True) +class StructInfo(TypeInfo): + fields: tuple[FieldInfo, ...] + + +basicTypes = dict((x.vbName, x) for x in ( + TypeInfo(size=1, align=1, vbName="Byte", + cName="uint8_t", cInit="0", memName="FIELD_BYTE"), + TypeInfo(size=2, align=2, vbName="Integer", + cName="int16_t", cInit="0", memName="FIELD_WORD"), + TypeInfo(size=4, align=4, vbName="Long", + cName="int32_t", cInit="0", memName="FIELD_DWORD"), + TypeInfo(size=2, align=2, vbName="Boolean", + cName="VB6Bool", cInit="false", memName="FIELD_BOOL"), + TypeInfo(size=4, align=4, vbName="Single", + cName="float", cInit="0.0f", memName="FIELD_FLOAT"), + TypeInfo(size=8, align=4, vbName="Double", + cName="double", cInit="0.0", memName="FIELD_DFLOAT"), + TypeInfo(size=4, align=4, vbName="String", + cName="VB6StrPtr", cInit="L\"\"", memName="FIELD_STRING"), +)) +paddingTypes = { + 1: basicTypes["Byte"], + 2: basicTypes["Integer"], + 3: basicTypes["Long"], +} + + +def getArrVbTypeName(baseType, subscripts, byReference): + if baseType == None: + return '?' + subscriptStr = ", ".join(x.asVbRangeString() for x in subscripts) + name = f'{baseType.vbName}({subscriptStr})' + if byReference: + name += ' (BY REFERENCE)' + return name + + +def getArrCTypeName(baseType, subscripts, byReference): + subscriptStr = ", ".join(f'{x.base}, {x.base + x.length - 1}' for x in reversed(subscripts)) + if baseType == None: + return '?' + elif byReference: + return f'VB6ArrayRef<{baseType.cName}, {subscriptStr}>' + elif len(subscripts) == 2: + return f'VB6Array2D<{baseType.cName}, {subscriptStr}>' + else: + return f'VB6Array<{baseType.cName}, {subscriptStr}>' + + +def getTypeInfo(subscripts, varType, inStructure, typeDb=None): + if subscripts and not inStructure: + baseType = getTypeInfo(None, varType, inStructure, typeDb) + arrRefSize = 28 + if baseType.vbName == "StdPicture": + arrRefSize = 40 # References to arrays of StdPicture are sized bigger for some reason + return ArrayRefTypeInfo( + size=arrRefSize, + align=4, + vbName=getArrVbTypeName(baseType, subscripts, True), + cName=getArrCTypeName(baseType, subscripts, True), + memName=None, + subscripts=subscripts, + baseType=baseType + ) + elif subscripts: + baseType = getTypeInfo(None, varType, inStructure, typeDb) + arrSize = baseType.size + if arrSize != None or True: + for subscript in subscripts: + arrSize *= subscript.length + return ArrayTypeInfo( + size=arrSize, + align=baseType.align, + vbName=getArrVbTypeName(baseType, subscripts, False), + cName=getArrCTypeName(baseType, subscripts, False), + memName=None, + subscripts=subscripts, + baseType=baseType + ) + elif varType in basicTypes: + return basicTypes[varType] + elif (typeDb != None) and (varType in typeDb): + return typeDb[varType] + else: + return TypeInfo( + size=None, + align=None, + vbName=varType, + #cName=f"SMBX13::Types::{varType}_t", + cName=f"{varType}_t", + memName=None + ) + + +def iterateFieldInformation(items, initialAddr=0, inStructure=True, typeDb=None, knownAddresses=None, printMatches=False): + nextAddr = initialAddr + structAlign = 4 + padCount = 0 + for ctx in items: + # Get name + varName = ctx.ambiguousIdentifier().getText() + + # Get subscripts + varSubscripts = ctx.subscripts() + if varSubscripts: + varSubscripts = tuple(ArraySubscript.fromSubscriptContext(x) + for x in varSubscripts.subscript_()) + + # Get type + varType = ctx.asTypeClause().type_() + varBaseType = varType.baseType() + if varBaseType: + varType = varBaseType.getText() + else: + varComplexType = varType.complexType() + if varComplexType: + varType = varComplexType.getText() + + # Attempt to get var size + typeInfo = getTypeInfo(varSubscripts, varType, inStructure, typeDb) + + # Padding + varAddr = nextAddr + if (varAddr != None) and (typeInfo != None): + mod = varAddr % typeInfo.align + if mod != 0: + padCount += 1 + padLen = typeInfo.align - mod + yield FieldInfo( + address=varAddr, + name=f"_padding{padCount}_", + typeInfo=paddingTypes[padLen] + ) + varAddr += padLen + + # Check variable against reference of known addresses + if (knownAddresses != None): + refAddr = knownAddresses.get(varName, None) + if refAddr: + if (varAddr != None) and (varAddr != refAddr): + print( + f"MISMATCH! {varName} at {refAddr:X} not {varAddr:X}") + if printMatches and (varAddr != None) and (varAddr == refAddr): + print( + f"MATCH! {varName} at {refAddr:X}") + varAddr = refAddr + + # Update text address + nextAddr = None + if (varAddr != None) and (typeInfo != None): + nextAddr = varAddr + typeInfo.size + + yield FieldInfo( + address=varAddr, + name=varName, + typeInfo=typeInfo + ) + + # Final padding + if inStructure: + varAddr = nextAddr + mod = varAddr % structAlign + if mod != 0: + padCount += 1 + padLen = structAlign - mod + yield FieldInfo( + address=varAddr, + name=f"_padding{padCount}_", + typeInfo=paddingTypes[padLen] + ) + + +def iterateTopLevelTypes(module: VisualBasic6Parser.ModuleContext): + # Proccess each module body element + moduleBody = module.moduleBody() + for moduleBodyElement in moduleBody.moduleBodyElement(): + # If it is a type statement, process it + typeStmt = moduleBodyElement.typeStmt() + if typeStmt: + # Yield type statment + yield typeStmt + + +def iterateTypeFields(typeStmt: VisualBasic6Parser.TypeStmtContext): + for typeStmt_Element in typeStmt.typeStmt_Element(): + yield typeStmt_Element + + +def enumerateTypeInformation(module: VisualBasic6Parser.ModuleContext, typeDb={}): + types = [] + for typeStmt in iterateTopLevelTypes(module): + # Get visibility + visibility = typeStmt.visibility() + if visibility: + visibility = visibility.getText() + + # Get name + typeName = typeStmt.ambiguousIdentifier().getText() + + # Parse fields from the type + fields = tuple(iterateFieldInformation( + typeStmt.typeStmt_Element(), + inStructure=True, + typeDb=typeDb, + )) + + # Get structure size if possible + typeSize = None + if (len(fields) > 0): + lastField = fields[len(fields)-1] + if (lastField.address != None) and (lastField.typeInfo.size != None): + typeSize = lastField.address + lastField.typeInfo.size + + # Take the alignment to be the max of types in the structure + typeAlign = 0 + for field in fields: + typeAlign = max(typeAlign, field.typeInfo.align) + + # Add type to typeDb + typeInfo = StructInfo( + size=typeSize, + align=typeAlign, + vbName=typeName, + #cName=f'SMBX13::Types::{typeName}_t', + cName=f'{typeName}_t', + memName=None, + fields=fields + ) + typeDb[typeName] = typeInfo + types.append(typeInfo) + return types + + +def dumpTypeInformation(typeInfo: StructInfo): + print(f"Type: {typeInfo.vbName}") + for field in typeInfo.fields: + print(f"\t{field}") + print(f"\tType Size: 0x{typeInfo.size:X}") + + +def dumpTypes(types: [StructInfo], makeFlat=True, iterateArrays=True): + for typeInfo in types: + if makeFlat: + typeInfo = makeFlatStruct(typeInfo, iterateArrays=iterateArrays) + dumpTypeInformation(typeInfo) + +def dumpTypeInformationAsCStruct(typeInfo: StructInfo): + yield f'struct {typeInfo.cName.split("::")[-1]} {{' + maxCNameLen = 0 + maxFieldLen = 0 + fieldParts = [] + for field in typeInfo.fields: + for cNamePart, fieldNamePart, addrPart in field.typeInfo.yieldCFieldInfo(field): + fieldParts.append((cNamePart, fieldNamePart, addrPart)) + maxCNameLen = max(maxCNameLen, len(cNamePart)) + maxFieldLen = max(maxFieldLen, len(fieldNamePart)) + for cNamePart, fieldNamePart, addrPart in fieldParts: + yield f' {cNamePart:<{maxCNameLen}} {fieldNamePart:<{maxFieldLen}} // {addrPart}' + yield f'}};' + yield f'#if !defined(__INTELLISENSE__)' + yield f' static_assert(sizeof({typeInfo.cName}) == 0x{typeInfo.size:X}, "sizeof({typeInfo.cName}) must be 0x{typeInfo.size:X}");' + yield f'#endif' + yield f'' + +def iterateTopLevelVariables(module: VisualBasic6Parser.ModuleContext, publicOnly: bool): + # Proccess each module body element + moduleBody = module.moduleBody() + for moduleBodyElement in moduleBody.moduleBodyElement(): + # If it is a module block, process each block statement + moduleBlock = moduleBodyElement.moduleBlock() + if moduleBlock: + block = moduleBlock.block() + for stmt in block.blockStmt(): + # If it's a variable statement, process it + variableStmt = stmt.variableStmt() + if variableStmt: + # Get visibility + visibility = variableStmt.visibility() + if visibility: + visibility = visibility.getText() + if publicOnly and ((visibility == None) or (visibility.lower() != "public")): + continue + # Iterate sub-statements + for variableSubStmt in variableStmt.variableListStmt().variableSubStmt(): + yield variableSubStmt + + +def enumerateTopLevelVariables(module: VisualBasic6Parser.ModuleContext, moduleName="module", typeDb=None): + # Get fields from top level of module + fields = tuple(iterateFieldInformation( + iterateTopLevelVariables(module, publicOnly=True), + initialAddr=None, + inStructure=False, + typeDb=typeDb, + knownAddresses=knownAddresses, + )) + + # Get structure size if possible + typeSize = None + if (len(fields) > 0): + lastField = fields[len(fields)-1] + if (lastField.address != None) and (lastField.typeInfo.size != None): + typeSize = lastField.address + \ + lastField.typeInfo.size - fields[0].address + + # Take the alignment to be the max of types in the structure + typeAlign = 0 + for field in fields: + typeAlign = max(typeAlign, field.typeInfo.align) + + # Placeholder module name + modName = "module" + + # Return top level variables as a structure + return StructInfo( + size=typeSize, + align=typeAlign, + vbName=moduleName, + cName=f'SMBX13::Types::{moduleName.split(".", 1)[0]}_t', + memName=None, + fields=fields + ) + + +def iterateFlattenField(field: FieldInfo, iterateArrays=False): + """ + If this field is of StructInfo type, yield for each sub-field within it. + Optionally, if it's an ArrayTypeInfo field, yield for each array element. + Otherwise just yield itself back out. + """ + if isinstance(field.typeInfo, StructInfo): + for subField in field.typeInfo.fields: + for finalField in iterateFlattenField(subField, iterateArrays=iterateArrays): + yield FieldInfo( + address=field.address + finalField.address, + name=f'{field.name}.{finalField.name}', + typeInfo=finalField.typeInfo + ) + elif isinstance(field.typeInfo, ArrayTypeInfo) and iterateArrays: + baseType = field.typeInfo.baseType + subscripts = field.typeInfo.subscripts + ranges = tuple(range(x.length) for x in reversed(subscripts)) + for indices in itertools.product(*ranges): + flatIdx = 0 + idxStr = [] + for subscript, idx in zip(reversed(subscripts), reversed(indices)): + flatIdx *= subscript.length + flatIdx += idx + idxStr.append(f'{idx+subscript.base}') + idxStr = ",".join(reversed(idxStr)) + for subField in iterateFlattenField(FieldInfo( + address=field.address + flatIdx * baseType.size, + name=f'{field.name}({idxStr})', + typeInfo=baseType), iterateArrays=iterateArrays): + yield subField + else: + yield field + + +def makeFlatStruct(struct: StructInfo, iterateArrays=False): + """ + Converts a struct to a flattened version of itself. + """ + def iterNewFields(): + for field in struct.fields: + for subField in iterateFlattenField(field, iterateArrays=iterateArrays): + yield subField + return StructInfo( + size=struct.size, + align=struct.align, + vbName=struct.vbName, + cName=struct.cName, + memName=struct.memName, + fields=tuple(iterNewFields()) + ) + + +safeTypes = { + basicTypes["Byte"], + basicTypes["Integer"], + basicTypes["Long"], + basicTypes["Boolean"], + basicTypes["Single"], + basicTypes["Double"] +} +blacklistVars = { + "myBackBuffer", + "myBufferBMP", + "GFXBlock", + "GFXBlockMask", + "GFXBlockBMP", + "GFXBlockMaskBMP", + "GFXBackground2", + "GFXBackground2BMP", + "GFXNPC", + "GFXNPCMask", + "GFXNPCBMP", + "GFXNPCMaskBMP", + "GFXEffect", + "GFXEffectMask", + "GFXEffectBMP", + "GFXEffectMaskBMP", + "GFXBackground", + "GFXBackgroundMask", + "GFXBackgroundBMP", + "GFXBackgroundMaskBMP", + "GFXMario", + "GFXMarioMask", + "GFXMarioBMP", + "GFXMarioMaskBMP", + "GFXLuigi", + "GFXLuigiMask", + "GFXLuigiBMP", + "GFXLuigiMaskBMP", + "GFXPeach", + "GFXPeachMask", + "GFXPeachBMP", + "GFXPeachMaskBMP", + "GFXToad", + "GFXToadMask", + "GFXToadBMP", + "GFXToadMaskBMP", + "GFXLink", + "GFXLinkMask", + "GFXLinkBMP", + "GFXLinkMaskBMP", + "GFXYoshiB", + "GFXYoshiBMask", + "GFXYoshiBBMP", + "GFXYoshiBMaskBMP", + "GFXYoshiT", + "GFXYoshiTMask", + "GFXYoshiTBMP", + "GFXYoshiTMaskBMP", + "GFXTileCustom", + "GFXTile", + "GFXTileBMP", + "GFXLevelCustom", + "GFXLevel", + "GFXLevelMask", + "GFXLevelBMP", + "GFXLevelMaskBMP", + "GFXSceneCustom", + "GFXScene", + "GFXSceneMask", + "GFXSceneBMP", + "GFXSceneMaskBMP", + "GFXPathCustom", + "GFXPath", + "GFXPathMask", + "GFXPathBMP", + "GFXPathMaskBMP", + "GFXPlayerCustom", + "GFXPlayer", + "GFXPlayerMask", + "GFXPlayerBMP", + "GFXPlayerMaskBMP", +} + + +def getSafeRanges(struct: StructInfo): + """ + Yields the safe ranges within a structure + """ + startAddr = None + endAddr = None + for field in makeFlatStruct(struct, iterateArrays=True).fields: + if (field.typeInfo in safeTypes) and (field.name not in blacklistVars): + # This is a safe type, update the addresses + if startAddr == None: + startAddr = field.address + endAddr = field.address + field.typeInfo.size - 1 + elif (startAddr != None): + # This is not a safe type, and we have a pending range to flush + yield (startAddr, endAddr) + # Clear accumulated range + startAddr, endAddr = None, None + if (startAddr != None): + yield (startAddr, endAddr) + +def getStringAddresses(struct: StructInfo): + """ + Yield addresses of strings within a structure + """ + for field in makeFlatStruct(struct, iterateArrays=True).fields: + if (field.typeInfo == basicTypes["String"]): + yield field.address + +def dumpSafeRanges(struct: StructInfo): + print(f"Safe ranges for {struct.vbName}") + for start, end in getSafeRanges(struct): + print(f"\t0x{start:X} to 0x{end:X}") + +def dumpStringAddresses(struct: StructInfo): + print(f"String addresses in {struct.vbName}") + for address in getStringAddresses(struct): + print(f"\t0x{address:X}") + +def getAllowableArrayRefs(struct: StructInfo): + for field in makeFlatStruct(struct, iterateArrays=True).fields: + if isinstance(field.typeInfo, ArrayRefTypeInfo) and (field.name not in blacklistVars): + yield field + +def dumpAllowableArrayRefs(struct: StructInfo): + print(f"Array bases in {struct.vbName}") + for field in getAllowableArrayRefs(struct): + print(f"\t{field}") + +def getParserForArgv(argv): + if len(argv) > 1: + fn = argv[1] + moduleName = os.path.basename(fn) + inputStream = antlr4.FileStream(fn) + else: + moduleName = "stdin" + inputStream = antlr4.InputStream(sys.stdin.readline()) + + # Init lexer and pareser + lexer = VisualBasic6Lexer(inputStream) + tokens = antlr4.CommonTokenStream(lexer) + parser = VisualBasic6Parser(tokens) + return parser, moduleName + +def getFuncList(): + funcs = set() + funcArgStrs = {} + with open("reference_funcs.tsv", "r") as f: + isHdr = True + currentNamespace = None + for line in f: + line = line.strip() + if len(line) == 0: + continue + cols = line.split("\t") + cols = cols + (5-len(cols))*[""] + if isHdr: + isHdr = False + continue + if cols[1] == "": + continue + funcName = cols[3] + argStr = cols[4] + funcs.add(funcName) + funcArgStrs[funcName] = argStr + return funcs, funcArgStrs + +def main(argv): + print("This is just a shared library") + +if __name__ == '__main__': + main(sys.argv)