diff --git a/docs/docs.polserver.com/pol100/corechanges.xml b/docs/docs.polserver.com/pol100/corechanges.xml
index 84b0ebbed..04a4da1d9 100644
--- a/docs/docs.polserver.com/pol100/corechanges.xml
+++ b/docs/docs.polserver.com/pol100/corechanges.xml
@@ -2,9 +2,20 @@
Latest Core Changes
- 08-16-2025
+ 08-17-2025
+
+ 08-17-2025
+ Kevin:
+ Escript now supports declaring an enumeration as an "enum class", which scopes the enum's entries to the enum's name:
+ enum class Races
+ HUMAN := "Human",
+ ORC := "Orc",
+ ELF := "Elf"
+ endenum
+ print( Races::HUMAN ); // Prints: "Human"
+
08-16-2025
Kevin:
diff --git a/docs/docs.polserver.com/pol100/include/escriptguide.inc b/docs/docs.polserver.com/pol100/include/escriptguide.inc
index 466a48a66..3f2963be6 100644
--- a/docs/docs.polserver.com/pol100/include/escriptguide.inc
+++ b/docs/docs.polserver.com/pol100/include/escriptguide.inc
@@ -1,6 +1,6 @@
Racalac's eScript Reference and Guide (POL 100.2.0)
-
(Last Updated: February 16, 2025)
+ (Last Updated: August 17, 2025)
@@ -181,6 +181,54 @@ variables):
+Constants can be logically grouped using an enum declaration:
+
+
+
enum Colors
+ RED := "#ff0000",
+ GREEN := "#00ff00",
+ BLUE := "#0000ff"
+endenum
+
+print( RED ); // prints "#ff0000"
+
+
+
+If not providing a value for an enum entry, the compiler will assign the next
+available integer value, starting from 0. For example, the following enum
+declaration will assign the values 0, 1, and 2 to the entries:
+
+
+
enum Numbers
+ ZERO,
+ ONE,
+ TWO
+endenum
+
+print( ZERO ); // prints 0
+print( ONE ); // prints 1
+print( TWO ); // prints 2
+
+
+
+
+
+Added in POL 100.2.0: An enum declaration can use the class
+keyword to create a class-like enum, which allows the constants to be scoped to the
+enum name:
+
+
+
enum class Races
+ HUMAN := "Human",
+ ORC := "Orc",
+ ELF := "Elf"
+endenum
+
+print( Races::HUMAN ); // Prints: "Human"
+
+
+
+
Sequence and Index Binding Statements
@@ -3895,3 +3943,6 @@ Cleaned HTML code. - Bodom
v0.16: 16/02/2025
Added documentation for Sequence and Index Binding Statements; Iterable Objects by Kevin
+v0.17: 17/08/2025
+ Added documentation enum declarations by Kevin
+
diff --git a/lib/Parser/EscriptGrammar/EscriptParser.cpp b/lib/Parser/EscriptGrammar/EscriptParser.cpp
index d1ba58d6b..8e920356d 100644
--- a/lib/Parser/EscriptGrammar/EscriptParser.cpp
+++ b/lib/Parser/EscriptGrammar/EscriptParser.cpp
@@ -129,7 +129,7 @@ void escriptparserParserInitialize() {
}
);
static const int32_t serializedATNSegment[] = {
- 4,1,137,987,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,
+ 4,1,137,990,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,
@@ -162,319 +162,320 @@ void escriptparserParserInitialize() {
31,3,31,409,8,31,1,32,3,32,412,8,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,
1,33,3,33,422,8,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,3,34,431,8,34,1,
34,1,34,1,34,1,34,1,34,4,34,438,8,34,11,34,12,34,439,1,34,1,34,1,35,1,
- 35,1,35,1,35,1,35,1,36,5,36,450,8,36,10,36,12,36,453,9,36,1,37,1,37,1,
- 37,1,37,1,37,1,37,1,37,3,37,462,8,37,1,38,1,38,1,38,5,38,467,8,38,10,
- 38,12,38,470,9,38,1,38,3,38,473,8,38,1,39,1,39,1,39,3,39,478,8,39,1,40,
- 4,40,481,8,40,11,40,12,40,482,1,40,1,40,1,41,1,41,1,41,1,41,1,41,3,41,
- 492,8,41,1,41,1,41,1,41,3,41,497,8,41,1,42,1,42,3,42,501,8,42,1,43,1,
- 43,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,44,1,
- 44,1,45,1,45,1,45,3,45,522,8,45,1,46,1,46,1,46,5,46,527,8,46,10,46,12,
- 46,530,9,46,1,47,1,47,1,47,1,48,1,48,3,48,537,8,48,1,48,1,48,1,48,3,48,
- 542,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,3,49,552,8,49,1,50,1,
- 50,1,50,5,50,557,8,50,10,50,12,50,560,9,50,1,51,1,51,1,51,5,51,565,8,
- 51,10,51,12,51,568,9,51,1,52,1,52,3,52,572,8,52,1,52,3,52,575,8,52,1,
- 53,1,53,3,53,579,8,53,1,53,1,53,3,53,583,8,53,1,53,1,53,1,53,1,53,1,53,
- 3,53,590,8,53,1,54,1,54,1,54,1,54,3,54,596,8,54,1,55,1,55,1,55,1,55,1,
- 55,1,55,3,55,604,8,55,1,56,1,56,3,56,608,8,56,1,56,1,56,1,57,1,57,3,57,
- 614,8,57,1,57,5,57,617,8,57,10,57,12,57,620,9,57,1,58,1,58,1,58,1,58,
- 1,58,3,58,627,8,58,3,58,629,8,58,1,59,1,59,3,59,633,8,59,1,59,1,59,1,
- 60,1,60,1,60,5,60,640,8,60,10,60,12,60,643,9,60,1,61,3,61,646,8,61,1,
- 61,3,61,649,8,61,1,61,1,61,3,61,653,8,61,1,61,1,61,3,61,657,8,61,1,62,
- 3,62,660,8,62,1,62,1,62,1,62,1,63,1,63,3,63,667,8,63,1,63,3,63,670,8,
- 63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,680,8,64,1,64,1,64,1,
- 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,
- 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,
- 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,
- 64,1,64,1,64,5,64,729,8,64,10,64,12,64,732,9,64,1,65,1,65,1,65,1,65,1,
- 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,748,8,65,1,66,3,
- 66,751,8,66,1,66,1,66,1,66,1,67,1,67,3,67,758,8,67,1,67,1,67,1,67,1,67,
- 1,68,1,68,3,68,766,8,68,1,69,1,69,3,69,770,8,69,1,70,1,70,3,70,774,8,
- 70,1,71,1,71,3,71,778,8,71,1,72,1,72,3,72,782,8,72,1,72,1,72,1,72,3,72,
- 787,8,72,1,72,1,72,1,72,3,72,792,8,72,1,73,1,73,1,73,1,73,1,74,1,74,1,
- 74,5,74,801,8,74,10,74,12,74,804,9,74,1,75,1,75,3,75,808,8,75,1,76,1,
- 76,1,76,1,76,3,76,814,8,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,5,78,823,
- 8,78,10,78,12,78,826,9,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,3,80,835,
- 8,80,1,80,1,80,1,81,1,81,3,81,841,8,81,1,81,1,81,1,82,1,82,1,82,3,82,
- 848,8,82,1,82,1,82,1,83,1,83,1,83,3,83,855,8,83,1,83,1,83,1,83,3,83,860,
- 8,83,1,83,1,83,1,83,3,83,865,8,83,1,84,1,84,1,84,5,84,870,8,84,10,84,
- 12,84,873,9,84,1,85,1,85,3,85,877,8,85,1,85,1,85,1,85,3,85,882,8,85,1,
- 85,1,85,1,85,3,85,887,8,85,1,86,1,86,1,86,3,86,892,8,86,1,86,1,86,1,86,
- 3,86,897,8,86,1,87,1,87,1,87,5,87,902,8,87,10,87,12,87,905,9,87,1,88,
- 1,88,3,88,909,8,88,1,88,1,88,1,88,3,88,914,8,88,1,88,1,88,1,88,3,88,919,
- 8,88,1,89,1,89,3,89,923,8,89,1,89,1,89,1,89,3,89,928,8,89,1,89,1,89,1,
- 89,1,89,1,89,3,89,935,8,89,1,89,1,89,1,89,3,89,940,8,89,1,89,1,89,1,89,
- 3,89,945,8,89,1,90,1,90,1,90,1,90,1,90,3,90,952,8,90,1,91,1,91,5,91,956,
- 8,91,10,91,12,91,959,9,91,1,91,1,91,1,92,1,92,1,92,1,92,3,92,967,8,92,
- 1,92,1,92,1,92,3,92,972,8,92,1,92,1,92,1,92,1,92,1,92,3,92,979,8,92,1,
- 93,1,93,1,94,1,94,1,95,1,95,1,95,0,1,128,96,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,0,16,2,0,79,79,129,129,2,0,92,93,122,123,2,0,58,59,
- 118,118,2,0,89,91,103,105,2,0,92,93,106,107,1,0,99,102,2,0,108,109,111,
- 111,1,0,54,55,1,0,56,57,1,0,113,115,2,0,94,98,112,112,1,0,122,123,3,0,
- 15,15,79,79,129,129,1,0,73,76,1,0,77,78,1,0,70,71,1064,0,195,1,0,0,0,
- 2,203,1,0,0,0,4,208,1,0,0,0,6,213,1,0,0,0,8,215,1,0,0,0,10,223,1,0,0,
- 0,12,231,1,0,0,0,14,242,1,0,0,0,16,244,1,0,0,0,18,250,1,0,0,0,20,256,
- 1,0,0,0,22,267,1,0,0,0,24,272,1,0,0,0,26,275,1,0,0,0,28,283,1,0,0,0,30,
- 285,1,0,0,0,32,289,1,0,0,0,34,293,1,0,0,0,36,318,1,0,0,0,38,320,1,0,0,
- 0,40,323,1,0,0,0,42,344,1,0,0,0,44,348,1,0,0,0,46,354,1,0,0,0,48,358,
- 1,0,0,0,50,363,1,0,0,0,52,372,1,0,0,0,54,379,1,0,0,0,56,382,1,0,0,0,58,
- 388,1,0,0,0,60,395,1,0,0,0,62,408,1,0,0,0,64,411,1,0,0,0,66,421,1,0,0,
- 0,68,430,1,0,0,0,70,443,1,0,0,0,72,451,1,0,0,0,74,461,1,0,0,0,76,463,
- 1,0,0,0,78,474,1,0,0,0,80,480,1,0,0,0,82,496,1,0,0,0,84,500,1,0,0,0,86,
- 502,1,0,0,0,88,509,1,0,0,0,90,518,1,0,0,0,92,523,1,0,0,0,94,531,1,0,0,
- 0,96,541,1,0,0,0,98,551,1,0,0,0,100,553,1,0,0,0,102,561,1,0,0,0,104,574,
- 1,0,0,0,106,589,1,0,0,0,108,595,1,0,0,0,110,603,1,0,0,0,112,605,1,0,0,
- 0,114,611,1,0,0,0,116,628,1,0,0,0,118,630,1,0,0,0,120,636,1,0,0,0,122,
- 645,1,0,0,0,124,659,1,0,0,0,126,664,1,0,0,0,128,679,1,0,0,0,130,747,1,
- 0,0,0,132,750,1,0,0,0,134,755,1,0,0,0,136,763,1,0,0,0,138,767,1,0,0,0,
- 140,771,1,0,0,0,142,775,1,0,0,0,144,791,1,0,0,0,146,793,1,0,0,0,148,797,
- 1,0,0,0,150,805,1,0,0,0,152,813,1,0,0,0,154,815,1,0,0,0,156,819,1,0,0,
- 0,158,827,1,0,0,0,160,830,1,0,0,0,162,838,1,0,0,0,164,844,1,0,0,0,166,
- 864,1,0,0,0,168,866,1,0,0,0,170,886,1,0,0,0,172,896,1,0,0,0,174,898,1,
- 0,0,0,176,918,1,0,0,0,178,944,1,0,0,0,180,951,1,0,0,0,182,953,1,0,0,0,
- 184,978,1,0,0,0,186,980,1,0,0,0,188,982,1,0,0,0,190,984,1,0,0,0,192,194,
- 3,14,7,0,193,192,1,0,0,0,194,197,1,0,0,0,195,193,1,0,0,0,195,196,1,0,
- 0,0,196,198,1,0,0,0,197,195,1,0,0,0,198,199,5,0,0,1,199,1,1,0,0,0,200,
- 202,3,6,3,0,201,200,1,0,0,0,202,205,1,0,0,0,203,201,1,0,0,0,203,204,1,
- 0,0,0,204,206,1,0,0,0,205,203,1,0,0,0,206,207,5,0,0,1,207,3,1,0,0,0,208,
- 209,3,128,64,0,209,210,5,0,0,1,210,5,1,0,0,0,211,214,3,8,4,0,212,214,
- 3,46,23,0,213,211,1,0,0,0,213,212,1,0,0,0,214,7,1,0,0,0,215,216,5,129,
- 0,0,216,218,5,81,0,0,217,219,3,10,5,0,218,217,1,0,0,0,218,219,1,0,0,0,
- 219,220,1,0,0,0,220,221,5,82,0,0,221,222,5,116,0,0,222,9,1,0,0,0,223,
- 228,3,12,6,0,224,225,5,117,0,0,225,227,3,12,6,0,226,224,1,0,0,0,227,230,
- 1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,11,1,0,0,0,230,228,1,0,0,
- 0,231,234,5,129,0,0,232,233,5,112,0,0,233,235,3,128,64,0,234,232,1,0,
- 0,0,234,235,1,0,0,0,235,13,1,0,0,0,236,243,3,30,15,0,237,243,3,32,16,
- 0,238,243,3,34,17,0,239,243,3,26,13,0,240,243,3,16,8,0,241,243,3,36,18,
- 0,242,236,1,0,0,0,242,237,1,0,0,0,242,238,1,0,0,0,242,239,1,0,0,0,242,
- 240,1,0,0,0,242,241,1,0,0,0,243,15,1,0,0,0,244,245,5,36,0,0,245,246,5,
- 129,0,0,246,247,3,18,9,0,247,248,3,22,11,0,248,249,5,37,0,0,249,17,1,
- 0,0,0,250,252,5,81,0,0,251,253,3,20,10,0,252,251,1,0,0,0,252,253,1,0,
- 0,0,253,254,1,0,0,0,254,255,5,82,0,0,255,19,1,0,0,0,256,261,5,129,0,0,
- 257,258,5,117,0,0,258,260,5,129,0,0,259,257,1,0,0,0,260,263,1,0,0,0,261,
- 259,1,0,0,0,261,262,1,0,0,0,262,21,1,0,0,0,263,261,1,0,0,0,264,266,3,
- 24,12,0,265,264,1,0,0,0,266,269,1,0,0,0,267,265,1,0,0,0,267,268,1,0,0,
- 0,268,23,1,0,0,0,269,267,1,0,0,0,270,273,3,26,13,0,271,273,3,48,24,0,
- 272,270,1,0,0,0,272,271,1,0,0,0,273,25,1,0,0,0,274,276,5,17,0,0,275,274,
- 1,0,0,0,275,276,1,0,0,0,276,277,1,0,0,0,277,278,5,15,0,0,278,279,5,129,
- 0,0,279,280,3,118,59,0,280,281,3,72,36,0,281,282,5,16,0,0,282,27,1,0,
- 0,0,283,284,7,0,0,0,284,29,1,0,0,0,285,286,5,18,0,0,286,287,3,28,14,0,
- 287,288,5,116,0,0,288,31,1,0,0,0,289,290,5,19,0,0,290,291,3,28,14,0,291,
- 292,5,116,0,0,292,33,1,0,0,0,293,294,5,29,0,0,294,295,5,129,0,0,295,296,
- 3,112,56,0,296,297,3,72,36,0,297,298,5,30,0,0,298,35,1,0,0,0,299,319,
- 3,40,20,0,300,319,3,42,21,0,301,319,3,44,22,0,302,319,3,46,23,0,303,319,
- 3,48,24,0,304,319,3,50,25,0,305,319,3,52,26,0,306,319,3,54,27,0,307,319,
- 3,56,28,0,308,319,3,58,29,0,309,319,3,60,30,0,310,319,3,64,32,0,311,319,
- 3,66,33,0,312,319,3,68,34,0,313,319,3,70,35,0,314,319,5,116,0,0,315,316,
- 3,128,64,0,316,317,5,116,0,0,317,319,1,0,0,0,318,299,1,0,0,0,318,300,
- 1,0,0,0,318,301,1,0,0,0,318,302,1,0,0,0,318,303,1,0,0,0,318,304,1,0,0,
- 0,318,305,1,0,0,0,318,306,1,0,0,0,318,307,1,0,0,0,318,308,1,0,0,0,318,
- 309,1,0,0,0,318,310,1,0,0,0,318,311,1,0,0,0,318,312,1,0,0,0,318,313,1,
- 0,0,0,318,314,1,0,0,0,318,315,1,0,0,0,319,37,1,0,0,0,320,321,5,129,0,
- 0,321,322,5,121,0,0,322,39,1,0,0,0,323,324,5,1,0,0,324,326,3,146,73,0,
- 325,327,5,2,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,328,1,0,0,0,328,335,
- 3,72,36,0,329,330,5,3,0,0,330,331,3,146,73,0,331,332,3,72,36,0,332,334,
- 1,0,0,0,333,329,1,0,0,0,334,337,1,0,0,0,335,333,1,0,0,0,335,336,1,0,0,
- 0,336,340,1,0,0,0,337,335,1,0,0,0,338,339,5,5,0,0,339,341,3,72,36,0,340,
- 338,1,0,0,0,340,341,1,0,0,0,341,342,1,0,0,0,342,343,5,4,0,0,343,41,1,
- 0,0,0,344,345,5,6,0,0,345,346,5,129,0,0,346,347,5,116,0,0,347,43,1,0,
- 0,0,348,350,5,7,0,0,349,351,3,128,64,0,350,349,1,0,0,0,350,351,1,0,0,
- 0,351,352,1,0,0,0,352,353,5,116,0,0,353,45,1,0,0,0,354,355,5,8,0,0,355,
- 356,3,94,47,0,356,357,5,116,0,0,357,47,1,0,0,0,358,359,5,9,0,0,359,360,
- 3,92,46,0,360,361,5,116,0,0,361,49,1,0,0,0,362,364,3,38,19,0,363,362,
- 1,0,0,0,363,364,1,0,0,0,364,365,1,0,0,0,365,366,5,10,0,0,366,367,3,72,
- 36,0,367,368,5,11,0,0,368,369,3,146,73,0,369,370,5,116,0,0,370,51,1,0,
- 0,0,371,373,3,38,19,0,372,371,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,
- 374,375,5,12,0,0,375,376,3,146,73,0,376,377,3,72,36,0,377,378,5,13,0,
- 0,378,53,1,0,0,0,379,380,5,14,0,0,380,381,5,116,0,0,381,55,1,0,0,0,382,
- 384,5,20,0,0,383,385,5,129,0,0,384,383,1,0,0,0,384,385,1,0,0,0,385,386,
- 1,0,0,0,386,387,5,116,0,0,387,57,1,0,0,0,388,390,5,21,0,0,389,391,5,129,
- 0,0,390,389,1,0,0,0,390,391,1,0,0,0,391,392,1,0,0,0,392,393,5,116,0,0,
- 393,59,1,0,0,0,394,396,3,38,19,0,395,394,1,0,0,0,395,396,1,0,0,0,396,
- 397,1,0,0,0,397,398,5,22,0,0,398,399,3,84,42,0,399,400,5,23,0,0,400,61,
- 1,0,0,0,401,409,3,164,82,0,402,409,3,124,62,0,403,409,3,132,66,0,404,
- 409,5,129,0,0,405,409,3,146,73,0,406,409,3,144,72,0,407,409,3,136,68,
- 0,408,401,1,0,0,0,408,402,1,0,0,0,408,403,1,0,0,0,408,404,1,0,0,0,408,
- 405,1,0,0,0,408,406,1,0,0,0,408,407,1,0,0,0,409,63,1,0,0,0,410,412,3,
- 38,19,0,411,410,1,0,0,0,411,412,1,0,0,0,412,413,1,0,0,0,413,414,5,25,
- 0,0,414,415,5,129,0,0,415,416,5,68,0,0,416,417,3,62,31,0,417,418,3,72,
- 36,0,418,419,5,26,0,0,419,65,1,0,0,0,420,422,3,38,19,0,421,420,1,0,0,
- 0,421,422,1,0,0,0,422,423,1,0,0,0,423,424,5,27,0,0,424,425,3,72,36,0,
- 425,426,5,28,0,0,426,427,3,128,64,0,427,428,5,116,0,0,428,67,1,0,0,0,
- 429,431,3,38,19,0,430,429,1,0,0,0,430,431,1,0,0,0,431,432,1,0,0,0,432,
- 433,5,31,0,0,433,434,5,81,0,0,434,435,3,128,64,0,435,437,5,82,0,0,436,
- 438,3,80,40,0,437,436,1,0,0,0,438,439,1,0,0,0,439,437,1,0,0,0,439,440,
- 1,0,0,0,440,441,1,0,0,0,441,442,5,33,0,0,442,69,1,0,0,0,443,444,5,34,
- 0,0,444,445,5,129,0,0,445,446,3,76,38,0,446,447,5,35,0,0,447,71,1,0,0,
- 0,448,450,3,36,18,0,449,448,1,0,0,0,450,453,1,0,0,0,451,449,1,0,0,0,451,
- 452,1,0,0,0,452,73,1,0,0,0,453,451,1,0,0,0,454,455,5,112,0,0,455,462,
- 3,128,64,0,456,457,5,110,0,0,457,458,3,128,64,0,458,459,6,37,-1,0,459,
- 462,1,0,0,0,460,462,5,66,0,0,461,454,1,0,0,0,461,456,1,0,0,0,461,460,
- 1,0,0,0,462,75,1,0,0,0,463,468,3,78,39,0,464,465,5,117,0,0,465,467,3,
- 78,39,0,466,464,1,0,0,0,467,470,1,0,0,0,468,466,1,0,0,0,468,469,1,0,0,
- 0,469,472,1,0,0,0,470,468,1,0,0,0,471,473,5,117,0,0,472,471,1,0,0,0,472,
- 473,1,0,0,0,473,77,1,0,0,0,474,477,5,129,0,0,475,476,5,112,0,0,476,478,
- 3,128,64,0,477,475,1,0,0,0,477,478,1,0,0,0,478,79,1,0,0,0,479,481,3,82,
- 41,0,480,479,1,0,0,0,481,482,1,0,0,0,482,480,1,0,0,0,482,483,1,0,0,0,
- 483,484,1,0,0,0,484,485,3,72,36,0,485,81,1,0,0,0,486,492,3,186,93,0,487,
- 492,3,190,95,0,488,492,5,69,0,0,489,492,5,129,0,0,490,492,5,79,0,0,491,
- 486,1,0,0,0,491,487,1,0,0,0,491,488,1,0,0,0,491,489,1,0,0,0,491,490,1,
- 0,0,0,492,493,1,0,0,0,493,497,5,121,0,0,494,495,5,32,0,0,495,497,5,121,
- 0,0,496,491,1,0,0,0,496,494,1,0,0,0,497,83,1,0,0,0,498,501,3,88,44,0,
- 499,501,3,86,43,0,500,498,1,0,0,0,500,499,1,0,0,0,501,85,1,0,0,0,502,
- 503,5,129,0,0,503,504,5,112,0,0,504,505,3,128,64,0,505,506,5,24,0,0,506,
- 507,3,128,64,0,507,508,3,72,36,0,508,87,1,0,0,0,509,510,5,81,0,0,510,
- 511,3,128,64,0,511,512,5,116,0,0,512,513,3,128,64,0,513,514,5,116,0,0,
- 514,515,3,128,64,0,515,516,5,82,0,0,516,517,3,72,36,0,517,89,1,0,0,0,
- 518,521,5,129,0,0,519,520,5,117,0,0,520,522,3,90,45,0,521,519,1,0,0,0,
- 521,522,1,0,0,0,522,91,1,0,0,0,523,528,3,96,48,0,524,525,5,117,0,0,525,
- 527,3,96,48,0,526,524,1,0,0,0,527,530,1,0,0,0,528,526,1,0,0,0,528,529,
- 1,0,0,0,529,93,1,0,0,0,530,528,1,0,0,0,531,532,5,129,0,0,532,533,3,74,
- 37,0,533,95,1,0,0,0,534,536,5,129,0,0,535,537,3,74,37,0,536,535,1,0,0,
- 0,536,537,1,0,0,0,537,542,1,0,0,0,538,539,3,98,49,0,539,540,3,110,55,
- 0,540,542,1,0,0,0,541,534,1,0,0,0,541,538,1,0,0,0,542,97,1,0,0,0,543,
- 544,5,83,0,0,544,545,3,102,51,0,545,546,5,84,0,0,546,552,1,0,0,0,547,
- 548,5,85,0,0,548,549,3,100,50,0,549,550,5,86,0,0,550,552,1,0,0,0,551,
- 543,1,0,0,0,551,547,1,0,0,0,552,99,1,0,0,0,553,558,3,106,53,0,554,555,
- 5,117,0,0,555,557,3,106,53,0,556,554,1,0,0,0,557,560,1,0,0,0,558,556,
- 1,0,0,0,558,559,1,0,0,0,559,101,1,0,0,0,560,558,1,0,0,0,561,566,3,104,
- 52,0,562,563,5,117,0,0,563,565,3,104,52,0,564,562,1,0,0,0,565,568,1,0,
- 0,0,566,564,1,0,0,0,566,567,1,0,0,0,567,103,1,0,0,0,568,566,1,0,0,0,569,
- 571,5,129,0,0,570,572,5,53,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,575,
- 1,0,0,0,573,575,3,98,49,0,574,569,1,0,0,0,574,573,1,0,0,0,575,105,1,0,
- 0,0,576,578,5,129,0,0,577,579,5,53,0,0,578,577,1,0,0,0,578,579,1,0,0,
- 0,579,590,1,0,0,0,580,582,5,129,0,0,581,583,3,108,54,0,582,581,1,0,0,
- 0,582,583,1,0,0,0,583,590,1,0,0,0,584,585,5,83,0,0,585,586,3,128,64,0,
- 586,587,5,84,0,0,587,588,3,108,54,0,588,590,1,0,0,0,589,576,1,0,0,0,589,
- 580,1,0,0,0,589,584,1,0,0,0,590,107,1,0,0,0,591,592,5,121,0,0,592,596,
- 5,129,0,0,593,594,5,121,0,0,594,596,3,98,49,0,595,591,1,0,0,0,595,593,
- 1,0,0,0,596,109,1,0,0,0,597,598,5,112,0,0,598,604,3,128,64,0,599,600,
- 5,110,0,0,600,601,3,128,64,0,601,602,6,55,-1,0,602,604,1,0,0,0,603,597,
- 1,0,0,0,603,599,1,0,0,0,604,111,1,0,0,0,605,607,5,81,0,0,606,608,3,114,
- 57,0,607,606,1,0,0,0,607,608,1,0,0,0,608,609,1,0,0,0,609,610,5,82,0,0,
- 610,113,1,0,0,0,611,618,3,116,58,0,612,614,5,117,0,0,613,612,1,0,0,0,
- 613,614,1,0,0,0,614,615,1,0,0,0,615,617,3,116,58,0,616,613,1,0,0,0,617,
- 620,1,0,0,0,618,616,1,0,0,0,618,619,1,0,0,0,619,115,1,0,0,0,620,618,1,
- 0,0,0,621,622,5,61,0,0,622,629,5,129,0,0,623,626,5,129,0,0,624,625,5,
- 112,0,0,625,627,3,128,64,0,626,624,1,0,0,0,626,627,1,0,0,0,627,629,1,
- 0,0,0,628,621,1,0,0,0,628,623,1,0,0,0,629,117,1,0,0,0,630,632,5,81,0,
- 0,631,633,3,120,60,0,632,631,1,0,0,0,632,633,1,0,0,0,633,634,1,0,0,0,
- 634,635,5,82,0,0,635,119,1,0,0,0,636,641,3,122,61,0,637,638,5,117,0,0,
- 638,640,3,122,61,0,639,637,1,0,0,0,640,643,1,0,0,0,641,639,1,0,0,0,641,
- 642,1,0,0,0,642,121,1,0,0,0,643,641,1,0,0,0,644,646,5,60,0,0,645,644,
- 1,0,0,0,645,646,1,0,0,0,646,648,1,0,0,0,647,649,5,61,0,0,648,647,1,0,
- 0,0,648,649,1,0,0,0,649,650,1,0,0,0,650,652,5,129,0,0,651,653,5,53,0,
- 0,652,651,1,0,0,0,652,653,1,0,0,0,653,656,1,0,0,0,654,655,5,112,0,0,655,
- 657,3,128,64,0,656,654,1,0,0,0,656,657,1,0,0,0,657,123,1,0,0,0,658,660,
- 5,129,0,0,659,658,1,0,0,0,659,660,1,0,0,0,660,661,1,0,0,0,661,662,5,120,
- 0,0,662,663,3,164,82,0,663,125,1,0,0,0,664,669,5,119,0,0,665,667,5,129,
- 0,0,666,665,1,0,0,0,666,667,1,0,0,0,667,668,1,0,0,0,668,670,5,120,0,0,
- 669,666,1,0,0,0,669,670,1,0,0,0,670,671,1,0,0,0,671,672,5,129,0,0,672,
- 127,1,0,0,0,673,674,6,64,-1,0,674,680,3,130,65,0,675,676,7,1,0,0,676,
- 680,3,128,64,15,677,678,7,2,0,0,678,680,3,128,64,14,679,673,1,0,0,0,679,
- 675,1,0,0,0,679,677,1,0,0,0,680,730,1,0,0,0,681,682,10,13,0,0,682,683,
- 7,3,0,0,683,729,3,128,64,14,684,685,10,12,0,0,685,686,7,4,0,0,686,729,
- 3,128,64,13,687,688,10,11,0,0,688,689,5,124,0,0,689,729,3,128,64,12,690,
- 691,10,10,0,0,691,692,5,68,0,0,692,729,3,128,64,11,693,694,10,9,0,0,694,
- 695,7,5,0,0,695,729,3,128,64,10,696,697,10,8,0,0,697,698,5,72,0,0,698,
- 729,3,128,64,9,699,700,10,7,0,0,700,701,5,110,0,0,701,702,6,64,-1,0,702,
- 729,3,128,64,8,703,704,10,6,0,0,704,705,7,6,0,0,705,729,3,128,64,7,706,
- 707,10,5,0,0,707,708,7,7,0,0,708,729,3,128,64,6,709,710,10,4,0,0,710,
- 711,7,8,0,0,711,729,3,128,64,5,712,713,10,3,0,0,713,714,5,125,0,0,714,
- 715,3,128,64,0,715,716,5,121,0,0,716,717,3,128,64,4,717,729,1,0,0,0,718,
- 719,10,2,0,0,719,720,7,9,0,0,720,729,3,128,64,2,721,722,10,1,0,0,722,
- 723,7,10,0,0,723,729,3,128,64,1,724,725,10,17,0,0,725,729,3,152,76,0,
- 726,727,10,16,0,0,727,729,7,11,0,0,728,681,1,0,0,0,728,684,1,0,0,0,728,
- 687,1,0,0,0,728,690,1,0,0,0,728,693,1,0,0,0,728,696,1,0,0,0,728,699,1,
- 0,0,0,728,703,1,0,0,0,728,706,1,0,0,0,728,709,1,0,0,0,728,712,1,0,0,0,
- 728,718,1,0,0,0,728,721,1,0,0,0,728,724,1,0,0,0,728,726,1,0,0,0,729,732,
- 1,0,0,0,730,728,1,0,0,0,730,731,1,0,0,0,731,129,1,0,0,0,732,730,1,0,0,
- 0,733,748,3,180,90,0,734,748,3,146,73,0,735,748,3,164,82,0,736,748,3,
- 124,62,0,737,748,3,132,66,0,738,748,5,129,0,0,739,748,3,126,63,0,740,
- 748,3,134,67,0,741,748,3,136,68,0,742,748,3,138,69,0,743,748,3,140,70,
- 0,744,748,3,142,71,0,745,748,3,144,72,0,746,748,3,182,91,0,747,733,1,
- 0,0,0,747,734,1,0,0,0,747,735,1,0,0,0,747,736,1,0,0,0,747,737,1,0,0,0,
- 747,738,1,0,0,0,747,739,1,0,0,0,747,740,1,0,0,0,747,741,1,0,0,0,747,742,
- 1,0,0,0,747,743,1,0,0,0,747,744,1,0,0,0,747,745,1,0,0,0,747,746,1,0,0,
- 0,748,131,1,0,0,0,749,751,5,129,0,0,750,749,1,0,0,0,750,751,1,0,0,0,751,
- 752,1,0,0,0,752,753,5,120,0,0,753,754,5,129,0,0,754,133,1,0,0,0,755,757,
- 5,119,0,0,756,758,3,118,59,0,757,756,1,0,0,0,757,758,1,0,0,0,758,759,
- 1,0,0,0,759,760,5,85,0,0,760,761,3,72,36,0,761,762,5,86,0,0,762,135,1,
- 0,0,0,763,765,5,66,0,0,764,766,3,178,89,0,765,764,1,0,0,0,765,766,1,0,
- 0,0,766,137,1,0,0,0,767,769,5,65,0,0,768,770,3,170,85,0,769,768,1,0,0,
- 0,769,770,1,0,0,0,770,139,1,0,0,0,771,773,5,64,0,0,772,774,3,176,88,0,
- 773,772,1,0,0,0,773,774,1,0,0,0,774,141,1,0,0,0,775,777,5,62,0,0,776,
- 778,3,170,85,0,777,776,1,0,0,0,777,778,1,0,0,0,778,143,1,0,0,0,779,781,
- 5,85,0,0,780,782,3,148,74,0,781,780,1,0,0,0,781,782,1,0,0,0,782,783,1,
- 0,0,0,783,792,5,86,0,0,784,786,5,85,0,0,785,787,3,148,74,0,786,785,1,
- 0,0,0,786,787,1,0,0,0,787,788,1,0,0,0,788,789,5,117,0,0,789,790,5,86,
- 0,0,790,792,6,72,-1,0,791,779,1,0,0,0,791,784,1,0,0,0,792,145,1,0,0,0,
- 793,794,5,81,0,0,794,795,3,128,64,0,795,796,5,82,0,0,796,147,1,0,0,0,
- 797,802,3,150,75,0,798,799,5,117,0,0,799,801,3,150,75,0,800,798,1,0,0,
- 0,801,804,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,803,149,1,0,0,0,804,
- 802,1,0,0,0,805,807,3,128,64,0,806,808,5,53,0,0,807,806,1,0,0,0,807,808,
- 1,0,0,0,808,151,1,0,0,0,809,814,3,154,77,0,810,814,3,160,80,0,811,814,
- 3,158,79,0,812,814,3,162,81,0,813,809,1,0,0,0,813,810,1,0,0,0,813,811,
- 1,0,0,0,813,812,1,0,0,0,814,153,1,0,0,0,815,816,5,83,0,0,816,817,3,156,
- 78,0,817,818,5,84,0,0,818,155,1,0,0,0,819,824,3,128,64,0,820,821,5,117,
- 0,0,821,823,3,128,64,0,822,820,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,
- 0,824,825,1,0,0,0,825,157,1,0,0,0,826,824,1,0,0,0,827,828,5,87,0,0,828,
- 829,7,12,0,0,829,159,1,0,0,0,830,831,5,87,0,0,831,832,5,129,0,0,832,834,
- 5,81,0,0,833,835,3,148,74,0,834,833,1,0,0,0,834,835,1,0,0,0,835,836,1,
- 0,0,0,836,837,5,82,0,0,837,161,1,0,0,0,838,840,5,81,0,0,839,841,3,148,
- 74,0,840,839,1,0,0,0,840,841,1,0,0,0,841,842,1,0,0,0,842,843,5,82,0,0,
- 843,163,1,0,0,0,844,845,5,129,0,0,845,847,5,81,0,0,846,848,3,148,74,0,
- 847,846,1,0,0,0,847,848,1,0,0,0,848,849,1,0,0,0,849,850,5,82,0,0,850,
- 165,1,0,0,0,851,854,5,129,0,0,852,853,5,112,0,0,853,855,3,128,64,0,854,
- 852,1,0,0,0,854,855,1,0,0,0,855,865,1,0,0,0,856,859,5,79,0,0,857,858,
- 5,112,0,0,858,860,3,128,64,0,859,857,1,0,0,0,859,860,1,0,0,0,860,865,
- 1,0,0,0,861,862,3,128,64,0,862,863,5,53,0,0,863,865,1,0,0,0,864,851,1,
- 0,0,0,864,856,1,0,0,0,864,861,1,0,0,0,865,167,1,0,0,0,866,871,3,166,83,
- 0,867,868,5,117,0,0,868,870,3,166,83,0,869,867,1,0,0,0,870,873,1,0,0,
- 0,871,869,1,0,0,0,871,872,1,0,0,0,872,169,1,0,0,0,873,871,1,0,0,0,874,
- 876,5,85,0,0,875,877,3,168,84,0,876,875,1,0,0,0,876,877,1,0,0,0,877,878,
- 1,0,0,0,878,887,5,86,0,0,879,881,5,85,0,0,880,882,3,168,84,0,881,880,
- 1,0,0,0,881,882,1,0,0,0,882,883,1,0,0,0,883,884,5,117,0,0,884,885,5,86,
- 0,0,885,887,6,85,-1,0,886,874,1,0,0,0,886,879,1,0,0,0,887,171,1,0,0,0,
- 888,891,3,128,64,0,889,890,5,88,0,0,890,892,3,128,64,0,891,889,1,0,0,
- 0,891,892,1,0,0,0,892,897,1,0,0,0,893,894,3,128,64,0,894,895,5,53,0,0,
- 895,897,1,0,0,0,896,888,1,0,0,0,896,893,1,0,0,0,897,173,1,0,0,0,898,903,
- 3,172,86,0,899,900,5,117,0,0,900,902,3,172,86,0,901,899,1,0,0,0,902,905,
- 1,0,0,0,903,901,1,0,0,0,903,904,1,0,0,0,904,175,1,0,0,0,905,903,1,0,0,
- 0,906,908,5,85,0,0,907,909,3,174,87,0,908,907,1,0,0,0,908,909,1,0,0,0,
- 909,910,1,0,0,0,910,919,5,86,0,0,911,913,5,85,0,0,912,914,3,174,87,0,
- 913,912,1,0,0,0,913,914,1,0,0,0,914,915,1,0,0,0,915,916,5,117,0,0,916,
- 917,5,86,0,0,917,919,6,88,-1,0,918,906,1,0,0,0,918,911,1,0,0,0,919,177,
- 1,0,0,0,920,922,5,85,0,0,921,923,3,148,74,0,922,921,1,0,0,0,922,923,1,
- 0,0,0,923,924,1,0,0,0,924,945,5,86,0,0,925,927,5,85,0,0,926,928,3,148,
- 74,0,927,926,1,0,0,0,927,928,1,0,0,0,928,929,1,0,0,0,929,930,5,117,0,
- 0,930,931,5,86,0,0,931,945,6,89,-1,0,932,934,5,81,0,0,933,935,3,148,74,
- 0,934,933,1,0,0,0,934,935,1,0,0,0,935,936,1,0,0,0,936,945,5,82,0,0,937,
- 939,5,81,0,0,938,940,3,148,74,0,939,938,1,0,0,0,939,940,1,0,0,0,940,941,
- 1,0,0,0,941,942,5,117,0,0,942,943,5,82,0,0,943,945,6,89,-1,0,944,920,
- 1,0,0,0,944,925,1,0,0,0,944,932,1,0,0,0,944,937,1,0,0,0,945,179,1,0,0,
- 0,946,952,3,186,93,0,947,952,3,188,94,0,948,952,3,190,95,0,949,952,5,
- 79,0,0,950,952,5,69,0,0,951,946,1,0,0,0,951,947,1,0,0,0,951,948,1,0,0,
- 0,951,949,1,0,0,0,951,950,1,0,0,0,952,181,1,0,0,0,953,957,5,80,0,0,954,
- 956,3,184,92,0,955,954,1,0,0,0,956,959,1,0,0,0,957,955,1,0,0,0,957,958,
- 1,0,0,0,958,960,1,0,0,0,959,957,1,0,0,0,960,961,5,133,0,0,961,183,1,0,
- 0,0,962,963,5,131,0,0,963,966,3,128,64,0,964,965,5,121,0,0,965,967,5,
- 137,0,0,966,964,1,0,0,0,966,967,1,0,0,0,967,979,1,0,0,0,968,971,5,131,
- 0,0,969,970,5,121,0,0,970,972,5,137,0,0,971,969,1,0,0,0,971,972,1,0,0,
- 0,972,973,1,0,0,0,973,979,6,92,-1,0,974,979,5,130,0,0,975,979,5,132,0,
- 0,976,979,5,134,0,0,977,979,5,135,0,0,978,962,1,0,0,0,978,968,1,0,0,0,
- 978,974,1,0,0,0,978,975,1,0,0,0,978,976,1,0,0,0,978,977,1,0,0,0,979,185,
- 1,0,0,0,980,981,7,13,0,0,981,187,1,0,0,0,982,983,7,14,0,0,983,189,1,0,
- 0,0,984,985,7,15,0,0,985,191,1,0,0,0,107,195,203,213,218,228,234,242,
+ 35,3,35,446,8,35,1,35,1,35,1,35,1,35,1,36,5,36,453,8,36,10,36,12,36,456,
+ 9,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,465,8,37,1,38,1,38,1,38,
+ 5,38,470,8,38,10,38,12,38,473,9,38,1,38,3,38,476,8,38,1,39,1,39,1,39,
+ 3,39,481,8,39,1,40,4,40,484,8,40,11,40,12,40,485,1,40,1,40,1,41,1,41,
+ 1,41,1,41,1,41,3,41,495,8,41,1,41,1,41,1,41,3,41,500,8,41,1,42,1,42,3,
+ 42,504,8,42,1,43,1,43,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,44,1,44,1,45,1,45,1,45,3,45,525,8,45,1,46,1,46,1,46,5,
+ 46,530,8,46,10,46,12,46,533,9,46,1,47,1,47,1,47,1,48,1,48,3,48,540,8,
+ 48,1,48,1,48,1,48,3,48,545,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,
+ 49,3,49,555,8,49,1,50,1,50,1,50,5,50,560,8,50,10,50,12,50,563,9,50,1,
+ 51,1,51,1,51,5,51,568,8,51,10,51,12,51,571,9,51,1,52,1,52,3,52,575,8,
+ 52,1,52,3,52,578,8,52,1,53,1,53,3,53,582,8,53,1,53,1,53,3,53,586,8,53,
+ 1,53,1,53,1,53,1,53,1,53,3,53,593,8,53,1,54,1,54,1,54,1,54,3,54,599,8,
+ 54,1,55,1,55,1,55,1,55,1,55,1,55,3,55,607,8,55,1,56,1,56,3,56,611,8,56,
+ 1,56,1,56,1,57,1,57,3,57,617,8,57,1,57,5,57,620,8,57,10,57,12,57,623,
+ 9,57,1,58,1,58,1,58,1,58,1,58,3,58,630,8,58,3,58,632,8,58,1,59,1,59,3,
+ 59,636,8,59,1,59,1,59,1,60,1,60,1,60,5,60,643,8,60,10,60,12,60,646,9,
+ 60,1,61,3,61,649,8,61,1,61,3,61,652,8,61,1,61,1,61,3,61,656,8,61,1,61,
+ 1,61,3,61,660,8,61,1,62,3,62,663,8,62,1,62,1,62,1,62,1,63,1,63,3,63,670,
+ 8,63,1,63,3,63,673,8,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,
+ 683,8,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,
+ 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,
+ 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,
+ 1,64,1,64,1,64,1,64,1,64,1,64,1,64,5,64,732,8,64,10,64,12,64,735,9,64,
+ 1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,
+ 3,65,751,8,65,1,66,3,66,754,8,66,1,66,1,66,1,66,1,67,1,67,3,67,761,8,
+ 67,1,67,1,67,1,67,1,67,1,68,1,68,3,68,769,8,68,1,69,1,69,3,69,773,8,69,
+ 1,70,1,70,3,70,777,8,70,1,71,1,71,3,71,781,8,71,1,72,1,72,3,72,785,8,
+ 72,1,72,1,72,1,72,3,72,790,8,72,1,72,1,72,1,72,3,72,795,8,72,1,73,1,73,
+ 1,73,1,73,1,74,1,74,1,74,5,74,804,8,74,10,74,12,74,807,9,74,1,75,1,75,
+ 3,75,811,8,75,1,76,1,76,1,76,1,76,3,76,817,8,76,1,77,1,77,1,77,1,77,1,
+ 78,1,78,1,78,5,78,826,8,78,10,78,12,78,829,9,78,1,79,1,79,1,79,1,80,1,
+ 80,1,80,1,80,3,80,838,8,80,1,80,1,80,1,81,1,81,3,81,844,8,81,1,81,1,81,
+ 1,82,1,82,1,82,3,82,851,8,82,1,82,1,82,1,83,1,83,1,83,3,83,858,8,83,1,
+ 83,1,83,1,83,3,83,863,8,83,1,83,1,83,1,83,3,83,868,8,83,1,84,1,84,1,84,
+ 5,84,873,8,84,10,84,12,84,876,9,84,1,85,1,85,3,85,880,8,85,1,85,1,85,
+ 1,85,3,85,885,8,85,1,85,1,85,1,85,3,85,890,8,85,1,86,1,86,1,86,3,86,895,
+ 8,86,1,86,1,86,1,86,3,86,900,8,86,1,87,1,87,1,87,5,87,905,8,87,10,87,
+ 12,87,908,9,87,1,88,1,88,3,88,912,8,88,1,88,1,88,1,88,3,88,917,8,88,1,
+ 88,1,88,1,88,3,88,922,8,88,1,89,1,89,3,89,926,8,89,1,89,1,89,1,89,3,89,
+ 931,8,89,1,89,1,89,1,89,1,89,1,89,3,89,938,8,89,1,89,1,89,1,89,3,89,943,
+ 8,89,1,89,1,89,1,89,3,89,948,8,89,1,90,1,90,1,90,1,90,1,90,3,90,955,8,
+ 90,1,91,1,91,5,91,959,8,91,10,91,12,91,962,9,91,1,91,1,91,1,92,1,92,1,
+ 92,1,92,3,92,970,8,92,1,92,1,92,1,92,3,92,975,8,92,1,92,1,92,1,92,1,92,
+ 1,92,3,92,982,8,92,1,93,1,93,1,94,1,94,1,95,1,95,1,95,0,1,128,96,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,0,16,2,0,79,79,129,129,2,
+ 0,92,93,122,123,2,0,58,59,118,118,2,0,89,91,103,105,2,0,92,93,106,107,
+ 1,0,99,102,2,0,108,109,111,111,1,0,54,55,1,0,56,57,1,0,113,115,2,0,94,
+ 98,112,112,1,0,122,123,3,0,15,15,79,79,129,129,1,0,73,76,1,0,77,78,1,
+ 0,70,71,1068,0,195,1,0,0,0,2,203,1,0,0,0,4,208,1,0,0,0,6,213,1,0,0,0,
+ 8,215,1,0,0,0,10,223,1,0,0,0,12,231,1,0,0,0,14,242,1,0,0,0,16,244,1,0,
+ 0,0,18,250,1,0,0,0,20,256,1,0,0,0,22,267,1,0,0,0,24,272,1,0,0,0,26,275,
+ 1,0,0,0,28,283,1,0,0,0,30,285,1,0,0,0,32,289,1,0,0,0,34,293,1,0,0,0,36,
+ 318,1,0,0,0,38,320,1,0,0,0,40,323,1,0,0,0,42,344,1,0,0,0,44,348,1,0,0,
+ 0,46,354,1,0,0,0,48,358,1,0,0,0,50,363,1,0,0,0,52,372,1,0,0,0,54,379,
+ 1,0,0,0,56,382,1,0,0,0,58,388,1,0,0,0,60,395,1,0,0,0,62,408,1,0,0,0,64,
+ 411,1,0,0,0,66,421,1,0,0,0,68,430,1,0,0,0,70,443,1,0,0,0,72,454,1,0,0,
+ 0,74,464,1,0,0,0,76,466,1,0,0,0,78,477,1,0,0,0,80,483,1,0,0,0,82,499,
+ 1,0,0,0,84,503,1,0,0,0,86,505,1,0,0,0,88,512,1,0,0,0,90,521,1,0,0,0,92,
+ 526,1,0,0,0,94,534,1,0,0,0,96,544,1,0,0,0,98,554,1,0,0,0,100,556,1,0,
+ 0,0,102,564,1,0,0,0,104,577,1,0,0,0,106,592,1,0,0,0,108,598,1,0,0,0,110,
+ 606,1,0,0,0,112,608,1,0,0,0,114,614,1,0,0,0,116,631,1,0,0,0,118,633,1,
+ 0,0,0,120,639,1,0,0,0,122,648,1,0,0,0,124,662,1,0,0,0,126,667,1,0,0,0,
+ 128,682,1,0,0,0,130,750,1,0,0,0,132,753,1,0,0,0,134,758,1,0,0,0,136,766,
+ 1,0,0,0,138,770,1,0,0,0,140,774,1,0,0,0,142,778,1,0,0,0,144,794,1,0,0,
+ 0,146,796,1,0,0,0,148,800,1,0,0,0,150,808,1,0,0,0,152,816,1,0,0,0,154,
+ 818,1,0,0,0,156,822,1,0,0,0,158,830,1,0,0,0,160,833,1,0,0,0,162,841,1,
+ 0,0,0,164,847,1,0,0,0,166,867,1,0,0,0,168,869,1,0,0,0,170,889,1,0,0,0,
+ 172,899,1,0,0,0,174,901,1,0,0,0,176,921,1,0,0,0,178,947,1,0,0,0,180,954,
+ 1,0,0,0,182,956,1,0,0,0,184,981,1,0,0,0,186,983,1,0,0,0,188,985,1,0,0,
+ 0,190,987,1,0,0,0,192,194,3,14,7,0,193,192,1,0,0,0,194,197,1,0,0,0,195,
+ 193,1,0,0,0,195,196,1,0,0,0,196,198,1,0,0,0,197,195,1,0,0,0,198,199,5,
+ 0,0,1,199,1,1,0,0,0,200,202,3,6,3,0,201,200,1,0,0,0,202,205,1,0,0,0,203,
+ 201,1,0,0,0,203,204,1,0,0,0,204,206,1,0,0,0,205,203,1,0,0,0,206,207,5,
+ 0,0,1,207,3,1,0,0,0,208,209,3,128,64,0,209,210,5,0,0,1,210,5,1,0,0,0,
+ 211,214,3,8,4,0,212,214,3,46,23,0,213,211,1,0,0,0,213,212,1,0,0,0,214,
+ 7,1,0,0,0,215,216,5,129,0,0,216,218,5,81,0,0,217,219,3,10,5,0,218,217,
+ 1,0,0,0,218,219,1,0,0,0,219,220,1,0,0,0,220,221,5,82,0,0,221,222,5,116,
+ 0,0,222,9,1,0,0,0,223,228,3,12,6,0,224,225,5,117,0,0,225,227,3,12,6,0,
+ 226,224,1,0,0,0,227,230,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,11,
+ 1,0,0,0,230,228,1,0,0,0,231,234,5,129,0,0,232,233,5,112,0,0,233,235,3,
+ 128,64,0,234,232,1,0,0,0,234,235,1,0,0,0,235,13,1,0,0,0,236,243,3,30,
+ 15,0,237,243,3,32,16,0,238,243,3,34,17,0,239,243,3,26,13,0,240,243,3,
+ 16,8,0,241,243,3,36,18,0,242,236,1,0,0,0,242,237,1,0,0,0,242,238,1,0,
+ 0,0,242,239,1,0,0,0,242,240,1,0,0,0,242,241,1,0,0,0,243,15,1,0,0,0,244,
+ 245,5,36,0,0,245,246,5,129,0,0,246,247,3,18,9,0,247,248,3,22,11,0,248,
+ 249,5,37,0,0,249,17,1,0,0,0,250,252,5,81,0,0,251,253,3,20,10,0,252,251,
+ 1,0,0,0,252,253,1,0,0,0,253,254,1,0,0,0,254,255,5,82,0,0,255,19,1,0,0,
+ 0,256,261,5,129,0,0,257,258,5,117,0,0,258,260,5,129,0,0,259,257,1,0,0,
+ 0,260,263,1,0,0,0,261,259,1,0,0,0,261,262,1,0,0,0,262,21,1,0,0,0,263,
+ 261,1,0,0,0,264,266,3,24,12,0,265,264,1,0,0,0,266,269,1,0,0,0,267,265,
+ 1,0,0,0,267,268,1,0,0,0,268,23,1,0,0,0,269,267,1,0,0,0,270,273,3,26,13,
+ 0,271,273,3,48,24,0,272,270,1,0,0,0,272,271,1,0,0,0,273,25,1,0,0,0,274,
+ 276,5,17,0,0,275,274,1,0,0,0,275,276,1,0,0,0,276,277,1,0,0,0,277,278,
+ 5,15,0,0,278,279,5,129,0,0,279,280,3,118,59,0,280,281,3,72,36,0,281,282,
+ 5,16,0,0,282,27,1,0,0,0,283,284,7,0,0,0,284,29,1,0,0,0,285,286,5,18,0,
+ 0,286,287,3,28,14,0,287,288,5,116,0,0,288,31,1,0,0,0,289,290,5,19,0,0,
+ 290,291,3,28,14,0,291,292,5,116,0,0,292,33,1,0,0,0,293,294,5,29,0,0,294,
+ 295,5,129,0,0,295,296,3,112,56,0,296,297,3,72,36,0,297,298,5,30,0,0,298,
+ 35,1,0,0,0,299,319,3,40,20,0,300,319,3,42,21,0,301,319,3,44,22,0,302,
+ 319,3,46,23,0,303,319,3,48,24,0,304,319,3,50,25,0,305,319,3,52,26,0,306,
+ 319,3,54,27,0,307,319,3,56,28,0,308,319,3,58,29,0,309,319,3,60,30,0,310,
+ 319,3,64,32,0,311,319,3,66,33,0,312,319,3,68,34,0,313,319,3,70,35,0,314,
+ 319,5,116,0,0,315,316,3,128,64,0,316,317,5,116,0,0,317,319,1,0,0,0,318,
+ 299,1,0,0,0,318,300,1,0,0,0,318,301,1,0,0,0,318,302,1,0,0,0,318,303,1,
+ 0,0,0,318,304,1,0,0,0,318,305,1,0,0,0,318,306,1,0,0,0,318,307,1,0,0,0,
+ 318,308,1,0,0,0,318,309,1,0,0,0,318,310,1,0,0,0,318,311,1,0,0,0,318,312,
+ 1,0,0,0,318,313,1,0,0,0,318,314,1,0,0,0,318,315,1,0,0,0,319,37,1,0,0,
+ 0,320,321,5,129,0,0,321,322,5,121,0,0,322,39,1,0,0,0,323,324,5,1,0,0,
+ 324,326,3,146,73,0,325,327,5,2,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,
+ 328,1,0,0,0,328,335,3,72,36,0,329,330,5,3,0,0,330,331,3,146,73,0,331,
+ 332,3,72,36,0,332,334,1,0,0,0,333,329,1,0,0,0,334,337,1,0,0,0,335,333,
+ 1,0,0,0,335,336,1,0,0,0,336,340,1,0,0,0,337,335,1,0,0,0,338,339,5,5,0,
+ 0,339,341,3,72,36,0,340,338,1,0,0,0,340,341,1,0,0,0,341,342,1,0,0,0,342,
+ 343,5,4,0,0,343,41,1,0,0,0,344,345,5,6,0,0,345,346,5,129,0,0,346,347,
+ 5,116,0,0,347,43,1,0,0,0,348,350,5,7,0,0,349,351,3,128,64,0,350,349,1,
+ 0,0,0,350,351,1,0,0,0,351,352,1,0,0,0,352,353,5,116,0,0,353,45,1,0,0,
+ 0,354,355,5,8,0,0,355,356,3,94,47,0,356,357,5,116,0,0,357,47,1,0,0,0,
+ 358,359,5,9,0,0,359,360,3,92,46,0,360,361,5,116,0,0,361,49,1,0,0,0,362,
+ 364,3,38,19,0,363,362,1,0,0,0,363,364,1,0,0,0,364,365,1,0,0,0,365,366,
+ 5,10,0,0,366,367,3,72,36,0,367,368,5,11,0,0,368,369,3,146,73,0,369,370,
+ 5,116,0,0,370,51,1,0,0,0,371,373,3,38,19,0,372,371,1,0,0,0,372,373,1,
+ 0,0,0,373,374,1,0,0,0,374,375,5,12,0,0,375,376,3,146,73,0,376,377,3,72,
+ 36,0,377,378,5,13,0,0,378,53,1,0,0,0,379,380,5,14,0,0,380,381,5,116,0,
+ 0,381,55,1,0,0,0,382,384,5,20,0,0,383,385,5,129,0,0,384,383,1,0,0,0,384,
+ 385,1,0,0,0,385,386,1,0,0,0,386,387,5,116,0,0,387,57,1,0,0,0,388,390,
+ 5,21,0,0,389,391,5,129,0,0,390,389,1,0,0,0,390,391,1,0,0,0,391,392,1,
+ 0,0,0,392,393,5,116,0,0,393,59,1,0,0,0,394,396,3,38,19,0,395,394,1,0,
+ 0,0,395,396,1,0,0,0,396,397,1,0,0,0,397,398,5,22,0,0,398,399,3,84,42,
+ 0,399,400,5,23,0,0,400,61,1,0,0,0,401,409,3,164,82,0,402,409,3,124,62,
+ 0,403,409,3,132,66,0,404,409,5,129,0,0,405,409,3,146,73,0,406,409,3,144,
+ 72,0,407,409,3,136,68,0,408,401,1,0,0,0,408,402,1,0,0,0,408,403,1,0,0,
+ 0,408,404,1,0,0,0,408,405,1,0,0,0,408,406,1,0,0,0,408,407,1,0,0,0,409,
+ 63,1,0,0,0,410,412,3,38,19,0,411,410,1,0,0,0,411,412,1,0,0,0,412,413,
+ 1,0,0,0,413,414,5,25,0,0,414,415,5,129,0,0,415,416,5,68,0,0,416,417,3,
+ 62,31,0,417,418,3,72,36,0,418,419,5,26,0,0,419,65,1,0,0,0,420,422,3,38,
+ 19,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,423,424,5,27,0,0,
+ 424,425,3,72,36,0,425,426,5,28,0,0,426,427,3,128,64,0,427,428,5,116,0,
+ 0,428,67,1,0,0,0,429,431,3,38,19,0,430,429,1,0,0,0,430,431,1,0,0,0,431,
+ 432,1,0,0,0,432,433,5,31,0,0,433,434,5,81,0,0,434,435,3,128,64,0,435,
+ 437,5,82,0,0,436,438,3,80,40,0,437,436,1,0,0,0,438,439,1,0,0,0,439,437,
+ 1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,442,5,33,0,0,442,69,1,0,0,
+ 0,443,445,5,34,0,0,444,446,5,36,0,0,445,444,1,0,0,0,445,446,1,0,0,0,446,
+ 447,1,0,0,0,447,448,5,129,0,0,448,449,3,76,38,0,449,450,5,35,0,0,450,
+ 71,1,0,0,0,451,453,3,36,18,0,452,451,1,0,0,0,453,456,1,0,0,0,454,452,
+ 1,0,0,0,454,455,1,0,0,0,455,73,1,0,0,0,456,454,1,0,0,0,457,458,5,112,
+ 0,0,458,465,3,128,64,0,459,460,5,110,0,0,460,461,3,128,64,0,461,462,6,
+ 37,-1,0,462,465,1,0,0,0,463,465,5,66,0,0,464,457,1,0,0,0,464,459,1,0,
+ 0,0,464,463,1,0,0,0,465,75,1,0,0,0,466,471,3,78,39,0,467,468,5,117,0,
+ 0,468,470,3,78,39,0,469,467,1,0,0,0,470,473,1,0,0,0,471,469,1,0,0,0,471,
+ 472,1,0,0,0,472,475,1,0,0,0,473,471,1,0,0,0,474,476,5,117,0,0,475,474,
+ 1,0,0,0,475,476,1,0,0,0,476,77,1,0,0,0,477,480,5,129,0,0,478,479,5,112,
+ 0,0,479,481,3,128,64,0,480,478,1,0,0,0,480,481,1,0,0,0,481,79,1,0,0,0,
+ 482,484,3,82,41,0,483,482,1,0,0,0,484,485,1,0,0,0,485,483,1,0,0,0,485,
+ 486,1,0,0,0,486,487,1,0,0,0,487,488,3,72,36,0,488,81,1,0,0,0,489,495,
+ 3,186,93,0,490,495,3,190,95,0,491,495,5,69,0,0,492,495,5,129,0,0,493,
+ 495,5,79,0,0,494,489,1,0,0,0,494,490,1,0,0,0,494,491,1,0,0,0,494,492,
+ 1,0,0,0,494,493,1,0,0,0,495,496,1,0,0,0,496,500,5,121,0,0,497,498,5,32,
+ 0,0,498,500,5,121,0,0,499,494,1,0,0,0,499,497,1,0,0,0,500,83,1,0,0,0,
+ 501,504,3,88,44,0,502,504,3,86,43,0,503,501,1,0,0,0,503,502,1,0,0,0,504,
+ 85,1,0,0,0,505,506,5,129,0,0,506,507,5,112,0,0,507,508,3,128,64,0,508,
+ 509,5,24,0,0,509,510,3,128,64,0,510,511,3,72,36,0,511,87,1,0,0,0,512,
+ 513,5,81,0,0,513,514,3,128,64,0,514,515,5,116,0,0,515,516,3,128,64,0,
+ 516,517,5,116,0,0,517,518,3,128,64,0,518,519,5,82,0,0,519,520,3,72,36,
+ 0,520,89,1,0,0,0,521,524,5,129,0,0,522,523,5,117,0,0,523,525,3,90,45,
+ 0,524,522,1,0,0,0,524,525,1,0,0,0,525,91,1,0,0,0,526,531,3,96,48,0,527,
+ 528,5,117,0,0,528,530,3,96,48,0,529,527,1,0,0,0,530,533,1,0,0,0,531,529,
+ 1,0,0,0,531,532,1,0,0,0,532,93,1,0,0,0,533,531,1,0,0,0,534,535,5,129,
+ 0,0,535,536,3,74,37,0,536,95,1,0,0,0,537,539,5,129,0,0,538,540,3,74,37,
+ 0,539,538,1,0,0,0,539,540,1,0,0,0,540,545,1,0,0,0,541,542,3,98,49,0,542,
+ 543,3,110,55,0,543,545,1,0,0,0,544,537,1,0,0,0,544,541,1,0,0,0,545,97,
+ 1,0,0,0,546,547,5,83,0,0,547,548,3,102,51,0,548,549,5,84,0,0,549,555,
+ 1,0,0,0,550,551,5,85,0,0,551,552,3,100,50,0,552,553,5,86,0,0,553,555,
+ 1,0,0,0,554,546,1,0,0,0,554,550,1,0,0,0,555,99,1,0,0,0,556,561,3,106,
+ 53,0,557,558,5,117,0,0,558,560,3,106,53,0,559,557,1,0,0,0,560,563,1,0,
+ 0,0,561,559,1,0,0,0,561,562,1,0,0,0,562,101,1,0,0,0,563,561,1,0,0,0,564,
+ 569,3,104,52,0,565,566,5,117,0,0,566,568,3,104,52,0,567,565,1,0,0,0,568,
+ 571,1,0,0,0,569,567,1,0,0,0,569,570,1,0,0,0,570,103,1,0,0,0,571,569,1,
+ 0,0,0,572,574,5,129,0,0,573,575,5,53,0,0,574,573,1,0,0,0,574,575,1,0,
+ 0,0,575,578,1,0,0,0,576,578,3,98,49,0,577,572,1,0,0,0,577,576,1,0,0,0,
+ 578,105,1,0,0,0,579,581,5,129,0,0,580,582,5,53,0,0,581,580,1,0,0,0,581,
+ 582,1,0,0,0,582,593,1,0,0,0,583,585,5,129,0,0,584,586,3,108,54,0,585,
+ 584,1,0,0,0,585,586,1,0,0,0,586,593,1,0,0,0,587,588,5,83,0,0,588,589,
+ 3,128,64,0,589,590,5,84,0,0,590,591,3,108,54,0,591,593,1,0,0,0,592,579,
+ 1,0,0,0,592,583,1,0,0,0,592,587,1,0,0,0,593,107,1,0,0,0,594,595,5,121,
+ 0,0,595,599,5,129,0,0,596,597,5,121,0,0,597,599,3,98,49,0,598,594,1,0,
+ 0,0,598,596,1,0,0,0,599,109,1,0,0,0,600,601,5,112,0,0,601,607,3,128,64,
+ 0,602,603,5,110,0,0,603,604,3,128,64,0,604,605,6,55,-1,0,605,607,1,0,
+ 0,0,606,600,1,0,0,0,606,602,1,0,0,0,607,111,1,0,0,0,608,610,5,81,0,0,
+ 609,611,3,114,57,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0,612,
+ 613,5,82,0,0,613,113,1,0,0,0,614,621,3,116,58,0,615,617,5,117,0,0,616,
+ 615,1,0,0,0,616,617,1,0,0,0,617,618,1,0,0,0,618,620,3,116,58,0,619,616,
+ 1,0,0,0,620,623,1,0,0,0,621,619,1,0,0,0,621,622,1,0,0,0,622,115,1,0,0,
+ 0,623,621,1,0,0,0,624,625,5,61,0,0,625,632,5,129,0,0,626,629,5,129,0,
+ 0,627,628,5,112,0,0,628,630,3,128,64,0,629,627,1,0,0,0,629,630,1,0,0,
+ 0,630,632,1,0,0,0,631,624,1,0,0,0,631,626,1,0,0,0,632,117,1,0,0,0,633,
+ 635,5,81,0,0,634,636,3,120,60,0,635,634,1,0,0,0,635,636,1,0,0,0,636,637,
+ 1,0,0,0,637,638,5,82,0,0,638,119,1,0,0,0,639,644,3,122,61,0,640,641,5,
+ 117,0,0,641,643,3,122,61,0,642,640,1,0,0,0,643,646,1,0,0,0,644,642,1,
+ 0,0,0,644,645,1,0,0,0,645,121,1,0,0,0,646,644,1,0,0,0,647,649,5,60,0,
+ 0,648,647,1,0,0,0,648,649,1,0,0,0,649,651,1,0,0,0,650,652,5,61,0,0,651,
+ 650,1,0,0,0,651,652,1,0,0,0,652,653,1,0,0,0,653,655,5,129,0,0,654,656,
+ 5,53,0,0,655,654,1,0,0,0,655,656,1,0,0,0,656,659,1,0,0,0,657,658,5,112,
+ 0,0,658,660,3,128,64,0,659,657,1,0,0,0,659,660,1,0,0,0,660,123,1,0,0,
+ 0,661,663,5,129,0,0,662,661,1,0,0,0,662,663,1,0,0,0,663,664,1,0,0,0,664,
+ 665,5,120,0,0,665,666,3,164,82,0,666,125,1,0,0,0,667,672,5,119,0,0,668,
+ 670,5,129,0,0,669,668,1,0,0,0,669,670,1,0,0,0,670,671,1,0,0,0,671,673,
+ 5,120,0,0,672,669,1,0,0,0,672,673,1,0,0,0,673,674,1,0,0,0,674,675,5,129,
+ 0,0,675,127,1,0,0,0,676,677,6,64,-1,0,677,683,3,130,65,0,678,679,7,1,
+ 0,0,679,683,3,128,64,15,680,681,7,2,0,0,681,683,3,128,64,14,682,676,1,
+ 0,0,0,682,678,1,0,0,0,682,680,1,0,0,0,683,733,1,0,0,0,684,685,10,13,0,
+ 0,685,686,7,3,0,0,686,732,3,128,64,14,687,688,10,12,0,0,688,689,7,4,0,
+ 0,689,732,3,128,64,13,690,691,10,11,0,0,691,692,5,124,0,0,692,732,3,128,
+ 64,12,693,694,10,10,0,0,694,695,5,68,0,0,695,732,3,128,64,11,696,697,
+ 10,9,0,0,697,698,7,5,0,0,698,732,3,128,64,10,699,700,10,8,0,0,700,701,
+ 5,72,0,0,701,732,3,128,64,9,702,703,10,7,0,0,703,704,5,110,0,0,704,705,
+ 6,64,-1,0,705,732,3,128,64,8,706,707,10,6,0,0,707,708,7,6,0,0,708,732,
+ 3,128,64,7,709,710,10,5,0,0,710,711,7,7,0,0,711,732,3,128,64,6,712,713,
+ 10,4,0,0,713,714,7,8,0,0,714,732,3,128,64,5,715,716,10,3,0,0,716,717,
+ 5,125,0,0,717,718,3,128,64,0,718,719,5,121,0,0,719,720,3,128,64,4,720,
+ 732,1,0,0,0,721,722,10,2,0,0,722,723,7,9,0,0,723,732,3,128,64,2,724,725,
+ 10,1,0,0,725,726,7,10,0,0,726,732,3,128,64,1,727,728,10,17,0,0,728,732,
+ 3,152,76,0,729,730,10,16,0,0,730,732,7,11,0,0,731,684,1,0,0,0,731,687,
+ 1,0,0,0,731,690,1,0,0,0,731,693,1,0,0,0,731,696,1,0,0,0,731,699,1,0,0,
+ 0,731,702,1,0,0,0,731,706,1,0,0,0,731,709,1,0,0,0,731,712,1,0,0,0,731,
+ 715,1,0,0,0,731,721,1,0,0,0,731,724,1,0,0,0,731,727,1,0,0,0,731,729,1,
+ 0,0,0,732,735,1,0,0,0,733,731,1,0,0,0,733,734,1,0,0,0,734,129,1,0,0,0,
+ 735,733,1,0,0,0,736,751,3,180,90,0,737,751,3,146,73,0,738,751,3,164,82,
+ 0,739,751,3,124,62,0,740,751,3,132,66,0,741,751,5,129,0,0,742,751,3,126,
+ 63,0,743,751,3,134,67,0,744,751,3,136,68,0,745,751,3,138,69,0,746,751,
+ 3,140,70,0,747,751,3,142,71,0,748,751,3,144,72,0,749,751,3,182,91,0,750,
+ 736,1,0,0,0,750,737,1,0,0,0,750,738,1,0,0,0,750,739,1,0,0,0,750,740,1,
+ 0,0,0,750,741,1,0,0,0,750,742,1,0,0,0,750,743,1,0,0,0,750,744,1,0,0,0,
+ 750,745,1,0,0,0,750,746,1,0,0,0,750,747,1,0,0,0,750,748,1,0,0,0,750,749,
+ 1,0,0,0,751,131,1,0,0,0,752,754,5,129,0,0,753,752,1,0,0,0,753,754,1,0,
+ 0,0,754,755,1,0,0,0,755,756,5,120,0,0,756,757,5,129,0,0,757,133,1,0,0,
+ 0,758,760,5,119,0,0,759,761,3,118,59,0,760,759,1,0,0,0,760,761,1,0,0,
+ 0,761,762,1,0,0,0,762,763,5,85,0,0,763,764,3,72,36,0,764,765,5,86,0,0,
+ 765,135,1,0,0,0,766,768,5,66,0,0,767,769,3,178,89,0,768,767,1,0,0,0,768,
+ 769,1,0,0,0,769,137,1,0,0,0,770,772,5,65,0,0,771,773,3,170,85,0,772,771,
+ 1,0,0,0,772,773,1,0,0,0,773,139,1,0,0,0,774,776,5,64,0,0,775,777,3,176,
+ 88,0,776,775,1,0,0,0,776,777,1,0,0,0,777,141,1,0,0,0,778,780,5,62,0,0,
+ 779,781,3,170,85,0,780,779,1,0,0,0,780,781,1,0,0,0,781,143,1,0,0,0,782,
+ 784,5,85,0,0,783,785,3,148,74,0,784,783,1,0,0,0,784,785,1,0,0,0,785,786,
+ 1,0,0,0,786,795,5,86,0,0,787,789,5,85,0,0,788,790,3,148,74,0,789,788,
+ 1,0,0,0,789,790,1,0,0,0,790,791,1,0,0,0,791,792,5,117,0,0,792,793,5,86,
+ 0,0,793,795,6,72,-1,0,794,782,1,0,0,0,794,787,1,0,0,0,795,145,1,0,0,0,
+ 796,797,5,81,0,0,797,798,3,128,64,0,798,799,5,82,0,0,799,147,1,0,0,0,
+ 800,805,3,150,75,0,801,802,5,117,0,0,802,804,3,150,75,0,803,801,1,0,0,
+ 0,804,807,1,0,0,0,805,803,1,0,0,0,805,806,1,0,0,0,806,149,1,0,0,0,807,
+ 805,1,0,0,0,808,810,3,128,64,0,809,811,5,53,0,0,810,809,1,0,0,0,810,811,
+ 1,0,0,0,811,151,1,0,0,0,812,817,3,154,77,0,813,817,3,160,80,0,814,817,
+ 3,158,79,0,815,817,3,162,81,0,816,812,1,0,0,0,816,813,1,0,0,0,816,814,
+ 1,0,0,0,816,815,1,0,0,0,817,153,1,0,0,0,818,819,5,83,0,0,819,820,3,156,
+ 78,0,820,821,5,84,0,0,821,155,1,0,0,0,822,827,3,128,64,0,823,824,5,117,
+ 0,0,824,826,3,128,64,0,825,823,1,0,0,0,826,829,1,0,0,0,827,825,1,0,0,
+ 0,827,828,1,0,0,0,828,157,1,0,0,0,829,827,1,0,0,0,830,831,5,87,0,0,831,
+ 832,7,12,0,0,832,159,1,0,0,0,833,834,5,87,0,0,834,835,5,129,0,0,835,837,
+ 5,81,0,0,836,838,3,148,74,0,837,836,1,0,0,0,837,838,1,0,0,0,838,839,1,
+ 0,0,0,839,840,5,82,0,0,840,161,1,0,0,0,841,843,5,81,0,0,842,844,3,148,
+ 74,0,843,842,1,0,0,0,843,844,1,0,0,0,844,845,1,0,0,0,845,846,5,82,0,0,
+ 846,163,1,0,0,0,847,848,5,129,0,0,848,850,5,81,0,0,849,851,3,148,74,0,
+ 850,849,1,0,0,0,850,851,1,0,0,0,851,852,1,0,0,0,852,853,5,82,0,0,853,
+ 165,1,0,0,0,854,857,5,129,0,0,855,856,5,112,0,0,856,858,3,128,64,0,857,
+ 855,1,0,0,0,857,858,1,0,0,0,858,868,1,0,0,0,859,862,5,79,0,0,860,861,
+ 5,112,0,0,861,863,3,128,64,0,862,860,1,0,0,0,862,863,1,0,0,0,863,868,
+ 1,0,0,0,864,865,3,128,64,0,865,866,5,53,0,0,866,868,1,0,0,0,867,854,1,
+ 0,0,0,867,859,1,0,0,0,867,864,1,0,0,0,868,167,1,0,0,0,869,874,3,166,83,
+ 0,870,871,5,117,0,0,871,873,3,166,83,0,872,870,1,0,0,0,873,876,1,0,0,
+ 0,874,872,1,0,0,0,874,875,1,0,0,0,875,169,1,0,0,0,876,874,1,0,0,0,877,
+ 879,5,85,0,0,878,880,3,168,84,0,879,878,1,0,0,0,879,880,1,0,0,0,880,881,
+ 1,0,0,0,881,890,5,86,0,0,882,884,5,85,0,0,883,885,3,168,84,0,884,883,
+ 1,0,0,0,884,885,1,0,0,0,885,886,1,0,0,0,886,887,5,117,0,0,887,888,5,86,
+ 0,0,888,890,6,85,-1,0,889,877,1,0,0,0,889,882,1,0,0,0,890,171,1,0,0,0,
+ 891,894,3,128,64,0,892,893,5,88,0,0,893,895,3,128,64,0,894,892,1,0,0,
+ 0,894,895,1,0,0,0,895,900,1,0,0,0,896,897,3,128,64,0,897,898,5,53,0,0,
+ 898,900,1,0,0,0,899,891,1,0,0,0,899,896,1,0,0,0,900,173,1,0,0,0,901,906,
+ 3,172,86,0,902,903,5,117,0,0,903,905,3,172,86,0,904,902,1,0,0,0,905,908,
+ 1,0,0,0,906,904,1,0,0,0,906,907,1,0,0,0,907,175,1,0,0,0,908,906,1,0,0,
+ 0,909,911,5,85,0,0,910,912,3,174,87,0,911,910,1,0,0,0,911,912,1,0,0,0,
+ 912,913,1,0,0,0,913,922,5,86,0,0,914,916,5,85,0,0,915,917,3,174,87,0,
+ 916,915,1,0,0,0,916,917,1,0,0,0,917,918,1,0,0,0,918,919,5,117,0,0,919,
+ 920,5,86,0,0,920,922,6,88,-1,0,921,909,1,0,0,0,921,914,1,0,0,0,922,177,
+ 1,0,0,0,923,925,5,85,0,0,924,926,3,148,74,0,925,924,1,0,0,0,925,926,1,
+ 0,0,0,926,927,1,0,0,0,927,948,5,86,0,0,928,930,5,85,0,0,929,931,3,148,
+ 74,0,930,929,1,0,0,0,930,931,1,0,0,0,931,932,1,0,0,0,932,933,5,117,0,
+ 0,933,934,5,86,0,0,934,948,6,89,-1,0,935,937,5,81,0,0,936,938,3,148,74,
+ 0,937,936,1,0,0,0,937,938,1,0,0,0,938,939,1,0,0,0,939,948,5,82,0,0,940,
+ 942,5,81,0,0,941,943,3,148,74,0,942,941,1,0,0,0,942,943,1,0,0,0,943,944,
+ 1,0,0,0,944,945,5,117,0,0,945,946,5,82,0,0,946,948,6,89,-1,0,947,923,
+ 1,0,0,0,947,928,1,0,0,0,947,935,1,0,0,0,947,940,1,0,0,0,948,179,1,0,0,
+ 0,949,955,3,186,93,0,950,955,3,188,94,0,951,955,3,190,95,0,952,955,5,
+ 79,0,0,953,955,5,69,0,0,954,949,1,0,0,0,954,950,1,0,0,0,954,951,1,0,0,
+ 0,954,952,1,0,0,0,954,953,1,0,0,0,955,181,1,0,0,0,956,960,5,80,0,0,957,
+ 959,3,184,92,0,958,957,1,0,0,0,959,962,1,0,0,0,960,958,1,0,0,0,960,961,
+ 1,0,0,0,961,963,1,0,0,0,962,960,1,0,0,0,963,964,5,133,0,0,964,183,1,0,
+ 0,0,965,966,5,131,0,0,966,969,3,128,64,0,967,968,5,121,0,0,968,970,5,
+ 137,0,0,969,967,1,0,0,0,969,970,1,0,0,0,970,982,1,0,0,0,971,974,5,131,
+ 0,0,972,973,5,121,0,0,973,975,5,137,0,0,974,972,1,0,0,0,974,975,1,0,0,
+ 0,975,976,1,0,0,0,976,982,6,92,-1,0,977,982,5,130,0,0,978,982,5,132,0,
+ 0,979,982,5,134,0,0,980,982,5,135,0,0,981,965,1,0,0,0,981,971,1,0,0,0,
+ 981,977,1,0,0,0,981,978,1,0,0,0,981,979,1,0,0,0,981,980,1,0,0,0,982,185,
+ 1,0,0,0,983,984,7,13,0,0,984,187,1,0,0,0,985,986,7,14,0,0,986,189,1,0,
+ 0,0,987,988,7,15,0,0,988,191,1,0,0,0,108,195,203,213,218,228,234,242,
252,261,267,272,275,318,326,335,340,350,363,372,384,390,395,408,411,421,
- 430,439,451,461,468,472,477,482,491,496,500,521,528,536,541,551,558,566,
- 571,574,578,582,589,595,603,607,613,618,626,628,632,641,645,648,652,656,
- 659,666,669,679,728,730,747,750,757,765,769,773,777,781,786,791,802,807,
- 813,824,834,840,847,854,859,864,871,876,881,886,891,896,903,908,913,918,
- 922,927,934,939,944,951,957,966,971,978
+ 430,439,445,454,464,471,475,480,485,494,499,503,524,531,539,544,554,561,
+ 569,574,577,581,585,592,598,606,610,616,621,629,631,635,644,648,651,655,
+ 659,662,669,672,682,731,733,750,753,760,768,772,776,780,784,789,794,805,
+ 810,816,827,837,843,850,857,862,867,874,879,884,889,894,899,906,911,916,
+ 921,925,930,937,942,947,954,960,969,974,981
};
staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
@@ -3808,6 +3809,10 @@ tree::TerminalNode* EscriptParser::EnumStatementContext::ENDENUM() {
return getToken(EscriptParser::ENDENUM, 0);
}
+tree::TerminalNode* EscriptParser::EnumStatementContext::CLASS() {
+ return getToken(EscriptParser::CLASS, 0);
+}
+
size_t EscriptParser::EnumStatementContext::getRuleIndex() const {
return EscriptParser::RuleEnumStatement;
@@ -3836,6 +3841,7 @@ std::any EscriptParser::EnumStatementContext::accept(tree::ParseTreeVisitor *vis
EscriptParser::EnumStatementContext* EscriptParser::enumStatement() {
EnumStatementContext *_localctx = _tracker.createInstance(_ctx, getState());
enterRule(_localctx, 70, EscriptParser::RuleEnumStatement);
+ size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
@@ -3848,11 +3854,19 @@ EscriptParser::EnumStatementContext* EscriptParser::enumStatement() {
enterOuterAlt(_localctx, 1);
setState(443);
match(EscriptParser::ENUM);
- setState(444);
- match(EscriptParser::IDENTIFIER);
setState(445);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == EscriptParser::CLASS) {
+ setState(444);
+ match(EscriptParser::CLASS);
+ }
+ setState(447);
+ match(EscriptParser::IDENTIFIER);
+ setState(448);
enumList();
- setState(446);
+ setState(449);
match(EscriptParser::ENDENUM);
}
@@ -3918,17 +3932,17 @@ EscriptParser::BlockContext* EscriptParser::block() {
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(451);
+ setState(454);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 27, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 28, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
- setState(448);
+ setState(451);
statement();
}
- setState(453);
+ setState(456);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 27, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 28, _ctx);
}
}
@@ -4000,23 +4014,23 @@ EscriptParser::VariableDeclarationInitializerContext* EscriptParser::variableDec
exitRule();
});
try {
- setState(461);
+ setState(464);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::ASSIGN: {
enterOuterAlt(_localctx, 1);
- setState(454);
+ setState(457);
match(EscriptParser::ASSIGN);
- setState(455);
+ setState(458);
expression(0);
break;
}
case EscriptParser::EQUAL_DEPRECATED: {
enterOuterAlt(_localctx, 2);
- setState(456);
+ setState(459);
match(EscriptParser::EQUAL_DEPRECATED);
- setState(457);
+ setState(460);
expression(0);
notifyErrorListeners("Unexpected token: '='. Did you mean := for assign?\n");
break;
@@ -4024,7 +4038,7 @@ EscriptParser::VariableDeclarationInitializerContext* EscriptParser::variableDec
case EscriptParser::ARRAY: {
enterOuterAlt(_localctx, 3);
- setState(460);
+ setState(463);
match(EscriptParser::ARRAY);
break;
}
@@ -4105,28 +4119,28 @@ EscriptParser::EnumListContext* EscriptParser::enumList() {
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(463);
+ setState(466);
enumListEntry();
- setState(468);
+ setState(471);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 29, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 30, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
- setState(464);
+ setState(467);
match(EscriptParser::COMMA);
- setState(465);
+ setState(468);
enumListEntry();
}
- setState(470);
+ setState(473);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 29, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 30, _ctx);
}
- setState(472);
+ setState(475);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::COMMA) {
- setState(471);
+ setState(474);
match(EscriptParser::COMMA);
}
@@ -4197,16 +4211,16 @@ EscriptParser::EnumListEntryContext* EscriptParser::enumListEntry() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(474);
- match(EscriptParser::IDENTIFIER);
setState(477);
+ match(EscriptParser::IDENTIFIER);
+ setState(480);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ASSIGN) {
- setState(475);
+ setState(478);
match(EscriptParser::ASSIGN);
- setState(476);
+ setState(479);
expression(0);
}
@@ -4277,13 +4291,13 @@ EscriptParser::SwitchBlockStatementGroupContext* EscriptParser::switchBlockState
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(480);
+ setState(483);
_errHandler->sync(this);
alt = 1;
do {
switch (alt) {
case 1: {
- setState(479);
+ setState(482);
switchLabel();
break;
}
@@ -4291,11 +4305,11 @@ EscriptParser::SwitchBlockStatementGroupContext* EscriptParser::switchBlockState
default:
throw NoViableAltException(this);
}
- setState(482);
+ setState(485);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 32, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 33, _ctx);
} while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER);
- setState(484);
+ setState(487);
block();
}
@@ -4379,7 +4393,7 @@ EscriptParser::SwitchLabelContext* EscriptParser::switchLabel() {
exitRule();
});
try {
- setState(496);
+ setState(499);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::UNINIT:
@@ -4392,39 +4406,39 @@ EscriptParser::SwitchLabelContext* EscriptParser::switchLabel() {
case EscriptParser::STRING_LITERAL:
case EscriptParser::IDENTIFIER: {
enterOuterAlt(_localctx, 1);
- setState(491);
+ setState(494);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::DECIMAL_LITERAL:
case EscriptParser::HEX_LITERAL:
case EscriptParser::OCT_LITERAL:
case EscriptParser::BINARY_LITERAL: {
- setState(486);
+ setState(489);
integerLiteral();
break;
}
case EscriptParser::BOOL_TRUE:
case EscriptParser::BOOL_FALSE: {
- setState(487);
+ setState(490);
boolLiteral();
break;
}
case EscriptParser::UNINIT: {
- setState(488);
+ setState(491);
match(EscriptParser::UNINIT);
break;
}
case EscriptParser::IDENTIFIER: {
- setState(489);
+ setState(492);
match(EscriptParser::IDENTIFIER);
break;
}
case EscriptParser::STRING_LITERAL: {
- setState(490);
+ setState(493);
match(EscriptParser::STRING_LITERAL);
break;
}
@@ -4432,16 +4446,16 @@ EscriptParser::SwitchLabelContext* EscriptParser::switchLabel() {
default:
throw NoViableAltException(this);
}
- setState(493);
+ setState(496);
match(EscriptParser::COLON);
break;
}
case EscriptParser::DEFAULT: {
enterOuterAlt(_localctx, 2);
- setState(494);
+ setState(497);
match(EscriptParser::DEFAULT);
- setState(495);
+ setState(498);
match(EscriptParser::COLON);
break;
}
@@ -4511,19 +4525,19 @@ EscriptParser::ForGroupContext* EscriptParser::forGroup() {
exitRule();
});
try {
- setState(500);
+ setState(503);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::LPAREN: {
enterOuterAlt(_localctx, 1);
- setState(498);
+ setState(501);
cstyleForStatement();
break;
}
case EscriptParser::IDENTIFIER: {
enterOuterAlt(_localctx, 2);
- setState(499);
+ setState(502);
basicForStatement();
break;
}
@@ -4610,17 +4624,17 @@ EscriptParser::BasicForStatementContext* EscriptParser::basicForStatement() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(502);
- match(EscriptParser::IDENTIFIER);
- setState(503);
- match(EscriptParser::ASSIGN);
- setState(504);
- expression(0);
setState(505);
- match(EscriptParser::TO);
+ match(EscriptParser::IDENTIFIER);
setState(506);
- expression(0);
+ match(EscriptParser::ASSIGN);
setState(507);
+ expression(0);
+ setState(508);
+ match(EscriptParser::TO);
+ setState(509);
+ expression(0);
+ setState(510);
block();
}
@@ -4705,21 +4719,21 @@ EscriptParser::CstyleForStatementContext* EscriptParser::cstyleForStatement() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(509);
- match(EscriptParser::LPAREN);
- setState(510);
- expression(0);
- setState(511);
- match(EscriptParser::SEMI);
setState(512);
- expression(0);
+ match(EscriptParser::LPAREN);
setState(513);
- match(EscriptParser::SEMI);
- setState(514);
expression(0);
+ setState(514);
+ match(EscriptParser::SEMI);
setState(515);
- match(EscriptParser::RPAREN);
+ expression(0);
setState(516);
+ match(EscriptParser::SEMI);
+ setState(517);
+ expression(0);
+ setState(518);
+ match(EscriptParser::RPAREN);
+ setState(519);
block();
}
@@ -4788,16 +4802,16 @@ EscriptParser::IdentifierListContext* EscriptParser::identifierList() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(518);
- match(EscriptParser::IDENTIFIER);
setState(521);
+ match(EscriptParser::IDENTIFIER);
+ setState(524);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 36, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) {
case 1: {
- setState(519);
+ setState(522);
match(EscriptParser::COMMA);
- setState(520);
+ setState(523);
identifierList();
break;
}
@@ -4877,17 +4891,17 @@ EscriptParser::VariableDeclarationListContext* EscriptParser::variableDeclaratio
});
try {
enterOuterAlt(_localctx, 1);
- setState(523);
+ setState(526);
variableDeclaration();
- setState(528);
+ setState(531);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::COMMA) {
- setState(524);
+ setState(527);
match(EscriptParser::COMMA);
- setState(525);
+ setState(528);
variableDeclaration();
- setState(530);
+ setState(533);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -4954,9 +4968,9 @@ EscriptParser::ConstantDeclarationContext* EscriptParser::constantDeclaration()
});
try {
enterOuterAlt(_localctx, 1);
- setState(531);
+ setState(534);
match(EscriptParser::IDENTIFIER);
- setState(532);
+ setState(535);
variableDeclarationInitializer();
}
@@ -5029,20 +5043,20 @@ EscriptParser::VariableDeclarationContext* EscriptParser::variableDeclaration()
exitRule();
});
try {
- setState(541);
+ setState(544);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::IDENTIFIER: {
enterOuterAlt(_localctx, 1);
- setState(534);
+ setState(537);
match(EscriptParser::IDENTIFIER);
- setState(536);
+ setState(539);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 66) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 66)) & 87960930222081) != 0)) {
- setState(535);
+ setState(538);
variableDeclarationInitializer();
}
break;
@@ -5051,9 +5065,9 @@ EscriptParser::VariableDeclarationContext* EscriptParser::variableDeclaration()
case EscriptParser::LBRACK:
case EscriptParser::LBRACE: {
enterOuterAlt(_localctx, 2);
- setState(538);
+ setState(541);
bindingDeclaration();
- setState(539);
+ setState(542);
bindingDeclarationInitializer();
break;
}
@@ -5139,27 +5153,27 @@ EscriptParser::BindingDeclarationContext* EscriptParser::bindingDeclaration() {
exitRule();
});
try {
- setState(551);
+ setState(554);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::LBRACK: {
enterOuterAlt(_localctx, 1);
- setState(543);
+ setState(546);
match(EscriptParser::LBRACK);
- setState(544);
+ setState(547);
sequenceBindingList();
- setState(545);
+ setState(548);
match(EscriptParser::RBRACK);
break;
}
case EscriptParser::LBRACE: {
enterOuterAlt(_localctx, 2);
- setState(547);
+ setState(550);
match(EscriptParser::LBRACE);
- setState(548);
+ setState(551);
indexBindingList();
- setState(549);
+ setState(552);
match(EscriptParser::RBRACE);
break;
}
@@ -5239,17 +5253,17 @@ EscriptParser::IndexBindingListContext* EscriptParser::indexBindingList() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(553);
+ setState(556);
indexBinding();
- setState(558);
+ setState(561);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::COMMA) {
- setState(554);
+ setState(557);
match(EscriptParser::COMMA);
- setState(555);
+ setState(558);
indexBinding();
- setState(560);
+ setState(563);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -5325,17 +5339,17 @@ EscriptParser::SequenceBindingListContext* EscriptParser::sequenceBindingList()
});
try {
enterOuterAlt(_localctx, 1);
- setState(561);
+ setState(564);
sequenceBinding();
- setState(566);
+ setState(569);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::COMMA) {
- setState(562);
+ setState(565);
match(EscriptParser::COMMA);
- setState(563);
+ setState(566);
sequenceBinding();
- setState(568);
+ setState(571);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -5406,19 +5420,19 @@ EscriptParser::SequenceBindingContext* EscriptParser::sequenceBinding() {
exitRule();
});
try {
- setState(574);
+ setState(577);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::IDENTIFIER: {
enterOuterAlt(_localctx, 1);
- setState(569);
+ setState(572);
match(EscriptParser::IDENTIFIER);
- setState(571);
+ setState(574);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ELLIPSIS) {
- setState(570);
+ setState(573);
match(EscriptParser::ELLIPSIS);
}
break;
@@ -5427,7 +5441,7 @@ EscriptParser::SequenceBindingContext* EscriptParser::sequenceBinding() {
case EscriptParser::LBRACK:
case EscriptParser::LBRACE: {
enterOuterAlt(_localctx, 2);
- setState(573);
+ setState(576);
bindingDeclaration();
break;
}
@@ -5514,19 +5528,19 @@ EscriptParser::IndexBindingContext* EscriptParser::indexBinding() {
exitRule();
});
try {
- setState(589);
+ setState(592);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 47, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 48, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(576);
+ setState(579);
match(EscriptParser::IDENTIFIER);
- setState(578);
+ setState(581);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ELLIPSIS) {
- setState(577);
+ setState(580);
match(EscriptParser::ELLIPSIS);
}
break;
@@ -5534,14 +5548,14 @@ EscriptParser::IndexBindingContext* EscriptParser::indexBinding() {
case 2: {
enterOuterAlt(_localctx, 2);
- setState(580);
+ setState(583);
match(EscriptParser::IDENTIFIER);
- setState(582);
+ setState(585);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::COLON) {
- setState(581);
+ setState(584);
binding();
}
break;
@@ -5549,13 +5563,13 @@ EscriptParser::IndexBindingContext* EscriptParser::indexBinding() {
case 3: {
enterOuterAlt(_localctx, 3);
- setState(584);
- match(EscriptParser::LBRACK);
- setState(585);
- expression(0);
- setState(586);
- match(EscriptParser::RBRACK);
setState(587);
+ match(EscriptParser::LBRACK);
+ setState(588);
+ expression(0);
+ setState(589);
+ match(EscriptParser::RBRACK);
+ setState(590);
binding();
break;
}
@@ -5629,23 +5643,23 @@ EscriptParser::BindingContext* EscriptParser::binding() {
exitRule();
});
try {
- setState(595);
+ setState(598);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 48, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(591);
+ setState(594);
match(EscriptParser::COLON);
- setState(592);
+ setState(595);
match(EscriptParser::IDENTIFIER);
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(593);
+ setState(596);
match(EscriptParser::COLON);
- setState(594);
+ setState(597);
bindingDeclaration();
break;
}
@@ -5719,23 +5733,23 @@ EscriptParser::BindingDeclarationInitializerContext* EscriptParser::bindingDecla
exitRule();
});
try {
- setState(603);
+ setState(606);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::ASSIGN: {
enterOuterAlt(_localctx, 1);
- setState(597);
+ setState(600);
match(EscriptParser::ASSIGN);
- setState(598);
+ setState(601);
expression(0);
break;
}
case EscriptParser::EQUAL_DEPRECATED: {
enterOuterAlt(_localctx, 2);
- setState(599);
+ setState(602);
match(EscriptParser::EQUAL_DEPRECATED);
- setState(600);
+ setState(603);
expression(0);
notifyErrorListeners("Unexpected token: '='. Did you mean := for assign?\n");
break;
@@ -5812,17 +5826,17 @@ EscriptParser::ProgramParametersContext* EscriptParser::programParameters() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(605);
+ setState(608);
match(EscriptParser::LPAREN);
- setState(607);
+ setState(610);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::UNUSED || _la == EscriptParser::IDENTIFIER) {
- setState(606);
+ setState(609);
programParameterList();
}
- setState(609);
+ setState(612);
match(EscriptParser::RPAREN);
}
@@ -5896,25 +5910,25 @@ EscriptParser::ProgramParameterListContext* EscriptParser::programParameterList(
});
try {
enterOuterAlt(_localctx, 1);
- setState(611);
+ setState(614);
programParameter();
- setState(618);
+ setState(621);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::UNUSED || _la == EscriptParser::COMMA
|| _la == EscriptParser::IDENTIFIER) {
- setState(613);
+ setState(616);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::COMMA) {
- setState(612);
+ setState(615);
match(EscriptParser::COMMA);
}
- setState(615);
+ setState(618);
programParameter();
- setState(620);
+ setState(623);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -5989,30 +6003,30 @@ EscriptParser::ProgramParameterContext* EscriptParser::programParameter() {
exitRule();
});
try {
- setState(628);
+ setState(631);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::UNUSED: {
enterOuterAlt(_localctx, 1);
- setState(621);
+ setState(624);
match(EscriptParser::UNUSED);
- setState(622);
+ setState(625);
match(EscriptParser::IDENTIFIER);
break;
}
case EscriptParser::IDENTIFIER: {
enterOuterAlt(_localctx, 2);
- setState(623);
- match(EscriptParser::IDENTIFIER);
setState(626);
+ match(EscriptParser::IDENTIFIER);
+ setState(629);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ASSIGN) {
- setState(624);
+ setState(627);
match(EscriptParser::ASSIGN);
- setState(625);
+ setState(628);
expression(0);
}
break;
@@ -6089,19 +6103,19 @@ EscriptParser::FunctionParametersContext* EscriptParser::functionParameters() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(630);
+ setState(633);
match(EscriptParser::LPAREN);
- setState(632);
+ setState(635);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::BYREF
|| _la == EscriptParser::UNUSED || _la == EscriptParser::IDENTIFIER) {
- setState(631);
+ setState(634);
functionParameterList();
}
- setState(634);
+ setState(637);
match(EscriptParser::RPAREN);
}
@@ -6175,17 +6189,17 @@ EscriptParser::FunctionParameterListContext* EscriptParser::functionParameterLis
});
try {
enterOuterAlt(_localctx, 1);
- setState(636);
+ setState(639);
functionParameter();
- setState(641);
+ setState(644);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::COMMA) {
- setState(637);
+ setState(640);
match(EscriptParser::COMMA);
- setState(638);
+ setState(641);
functionParameter();
- setState(643);
+ setState(646);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -6269,40 +6283,40 @@ EscriptParser::FunctionParameterContext* EscriptParser::functionParameter() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(645);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (_la == EscriptParser::BYREF) {
- setState(644);
- match(EscriptParser::BYREF);
- }
setState(648);
_errHandler->sync(this);
_la = _input->LA(1);
- if (_la == EscriptParser::UNUSED) {
+ if (_la == EscriptParser::BYREF) {
setState(647);
+ match(EscriptParser::BYREF);
+ }
+ setState(651);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == EscriptParser::UNUSED) {
+ setState(650);
match(EscriptParser::UNUSED);
}
- setState(650);
+ setState(653);
match(EscriptParser::IDENTIFIER);
- setState(652);
+ setState(655);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ELLIPSIS) {
- setState(651);
+ setState(654);
match(EscriptParser::ELLIPSIS);
}
- setState(656);
+ setState(659);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ASSIGN) {
- setState(654);
+ setState(657);
match(EscriptParser::ASSIGN);
- setState(655);
+ setState(658);
expression(0);
}
@@ -6373,17 +6387,17 @@ EscriptParser::ScopedFunctionCallContext* EscriptParser::scopedFunctionCall() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(659);
+ setState(662);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::IDENTIFIER) {
- setState(658);
+ setState(661);
match(EscriptParser::IDENTIFIER);
}
- setState(661);
+ setState(664);
match(EscriptParser::COLONCOLON);
- setState(662);
+ setState(665);
functionCall();
}
@@ -6457,22 +6471,22 @@ EscriptParser::FunctionReferenceContext* EscriptParser::functionReference() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(664);
+ setState(667);
match(EscriptParser::AT);
- setState(669);
+ setState(672);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 63, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 64, _ctx)) {
case 1: {
- setState(666);
+ setState(669);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::IDENTIFIER) {
- setState(665);
+ setState(668);
antlrcpp::downCast(_localctx)->scope = match(EscriptParser::IDENTIFIER);
}
- setState(668);
+ setState(671);
match(EscriptParser::COLONCOLON);
break;
}
@@ -6480,7 +6494,7 @@ EscriptParser::FunctionReferenceContext* EscriptParser::functionReference() {
default:
break;
}
- setState(671);
+ setState(674);
antlrcpp::downCast(_localctx)->function = match(EscriptParser::IDENTIFIER);
}
@@ -6730,7 +6744,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(679);
+ setState(682);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::TOK_ERROR:
@@ -6753,7 +6767,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case EscriptParser::AT:
case EscriptParser::COLONCOLON:
case EscriptParser::IDENTIFIER: {
- setState(674);
+ setState(677);
primary();
break;
}
@@ -6762,7 +6776,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case EscriptParser::SUB:
case EscriptParser::INC:
case EscriptParser::DEC: {
- setState(675);
+ setState(678);
antlrcpp::downCast(_localctx)->prefix = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 92) & ~ 0x3fULL) == 0) &&
@@ -6773,7 +6787,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(676);
+ setState(679);
expression(15);
break;
}
@@ -6781,7 +6795,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case EscriptParser::BANG_A:
case EscriptParser::BANG_B:
case EscriptParser::TILDE: {
- setState(677);
+ setState(680);
antlrcpp::downCast(_localctx)->prefix = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 58) & ~ 0x3fULL) == 0) &&
@@ -6792,7 +6806,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(678);
+ setState(681);
expression(14);
break;
}
@@ -6801,24 +6815,24 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
throw NoViableAltException(this);
}
_ctx->stop = _input->LT(-1);
- setState(730);
+ setState(733);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 66, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 67, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
if (!_parseListeners.empty())
triggerExitRuleEvent();
previousContext = _localctx;
- setState(728);
+ setState(731);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 65, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 66, _ctx)) {
case 1: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(681);
+ setState(684);
if (!(precpred(_ctx, 13))) throw FailedPredicateException(this, "precpred(_ctx, 13)");
- setState(682);
+ setState(685);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 89) & ~ 0x3fULL) == 0) &&
@@ -6829,7 +6843,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(683);
+ setState(686);
expression(14);
break;
}
@@ -6837,10 +6851,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 2: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(684);
+ setState(687);
if (!(precpred(_ctx, 12))) throw FailedPredicateException(this, "precpred(_ctx, 12)");
- setState(685);
+ setState(688);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 92) & ~ 0x3fULL) == 0) &&
@@ -6851,7 +6865,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(686);
+ setState(689);
expression(13);
break;
}
@@ -6859,12 +6873,12 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 3: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(687);
+ setState(690);
if (!(precpred(_ctx, 11))) throw FailedPredicateException(this, "precpred(_ctx, 11)");
- setState(688);
+ setState(691);
antlrcpp::downCast(_localctx)->bop = match(EscriptParser::ELVIS);
- setState(689);
+ setState(692);
expression(12);
break;
}
@@ -6872,12 +6886,12 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 4: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(690);
+ setState(693);
if (!(precpred(_ctx, 10))) throw FailedPredicateException(this, "precpred(_ctx, 10)");
- setState(691);
+ setState(694);
antlrcpp::downCast(_localctx)->bop = match(EscriptParser::TOK_IN);
- setState(692);
+ setState(695);
expression(11);
break;
}
@@ -6885,10 +6899,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 5: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(693);
+ setState(696);
if (!(precpred(_ctx, 9))) throw FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(694);
+ setState(697);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 99) & ~ 0x3fULL) == 0) &&
@@ -6899,7 +6913,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(695);
+ setState(698);
expression(10);
break;
}
@@ -6907,12 +6921,12 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 6: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(696);
+ setState(699);
if (!(precpred(_ctx, 8))) throw FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(697);
+ setState(700);
antlrcpp::downCast(_localctx)->bop = match(EscriptParser::IS);
- setState(698);
+ setState(701);
expression(9);
break;
}
@@ -6920,13 +6934,13 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 7: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(699);
+ setState(702);
if (!(precpred(_ctx, 7))) throw FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(700);
+ setState(703);
antlrcpp::downCast(_localctx)->bop = match(EscriptParser::EQUAL_DEPRECATED);
notifyErrorListeners("Deprecated '=' found: did you mean '==' or ':='?\n");
- setState(702);
+ setState(705);
expression(8);
break;
}
@@ -6934,10 +6948,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 8: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(703);
+ setState(706);
if (!(precpred(_ctx, 6))) throw FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(704);
+ setState(707);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 108) & ~ 0x3fULL) == 0) &&
@@ -6948,7 +6962,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(705);
+ setState(708);
expression(7);
break;
}
@@ -6956,10 +6970,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 9: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(706);
+ setState(709);
if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)");
- setState(707);
+ setState(710);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(_la == EscriptParser::AND_A
@@ -6971,7 +6985,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(708);
+ setState(711);
expression(6);
break;
}
@@ -6979,10 +6993,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 10: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(709);
+ setState(712);
if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)");
- setState(710);
+ setState(713);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(_la == EscriptParser::OR_A
@@ -6994,7 +7008,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(711);
+ setState(714);
expression(5);
break;
}
@@ -7002,16 +7016,16 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 11: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(712);
+ setState(715);
if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)");
- setState(713);
- match(EscriptParser::QUESTION);
- setState(714);
- expression(0);
- setState(715);
- match(EscriptParser::COLON);
setState(716);
+ match(EscriptParser::QUESTION);
+ setState(717);
+ expression(0);
+ setState(718);
+ match(EscriptParser::COLON);
+ setState(719);
expression(4);
break;
}
@@ -7019,10 +7033,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 12: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(718);
+ setState(721);
if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(719);
+ setState(722);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 113) & ~ 0x3fULL) == 0) &&
@@ -7033,7 +7047,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(720);
+ setState(723);
expression(2);
break;
}
@@ -7041,10 +7055,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 13: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(721);
+ setState(724);
if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(722);
+ setState(725);
antlrcpp::downCast(_localctx)->bop = _input->LT(1);
_la = _input->LA(1);
if (!(((((_la - 94) & ~ 0x3fULL) == 0) &&
@@ -7055,7 +7069,7 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
_errHandler->reportMatch(this);
consume();
}
- setState(723);
+ setState(726);
expression(1);
break;
}
@@ -7063,10 +7077,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 14: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(724);
+ setState(727);
if (!(precpred(_ctx, 17))) throw FailedPredicateException(this, "precpred(_ctx, 17)");
- setState(725);
+ setState(728);
expressionSuffix();
break;
}
@@ -7074,10 +7088,10 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
case 15: {
_localctx = _tracker.createInstance(parentContext, parentState);
pushNewRecursionContext(_localctx, startState, RuleExpression);
- setState(726);
+ setState(729);
if (!(precpred(_ctx, 16))) throw FailedPredicateException(this, "precpred(_ctx, 16)");
- setState(727);
+ setState(730);
antlrcpp::downCast(_localctx)->postfix = _input->LT(1);
_la = _input->LA(1);
if (!(_la == EscriptParser::INC
@@ -7096,9 +7110,9 @@ EscriptParser::ExpressionContext* EscriptParser::expression(int precedence) {
break;
}
}
- setState(732);
+ setState(735);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 66, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 67, _ctx);
}
}
catch (RecognitionException &e) {
@@ -7208,103 +7222,103 @@ EscriptParser::PrimaryContext* EscriptParser::primary() {
exitRule();
});
try {
- setState(747);
+ setState(750);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 67, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 68, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(733);
+ setState(736);
literal();
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(734);
+ setState(737);
parExpression();
break;
}
case 3: {
enterOuterAlt(_localctx, 3);
- setState(735);
+ setState(738);
functionCall();
break;
}
case 4: {
enterOuterAlt(_localctx, 4);
- setState(736);
+ setState(739);
scopedFunctionCall();
break;
}
case 5: {
enterOuterAlt(_localctx, 5);
- setState(737);
+ setState(740);
scopedIdentifier();
break;
}
case 6: {
enterOuterAlt(_localctx, 6);
- setState(738);
+ setState(741);
match(EscriptParser::IDENTIFIER);
break;
}
case 7: {
enterOuterAlt(_localctx, 7);
- setState(739);
+ setState(742);
functionReference();
break;
}
case 8: {
enterOuterAlt(_localctx, 8);
- setState(740);
+ setState(743);
functionExpression();
break;
}
case 9: {
enterOuterAlt(_localctx, 9);
- setState(741);
+ setState(744);
explicitArrayInitializer();
break;
}
case 10: {
enterOuterAlt(_localctx, 10);
- setState(742);
+ setState(745);
explicitStructInitializer();
break;
}
case 11: {
enterOuterAlt(_localctx, 11);
- setState(743);
+ setState(746);
explicitDictInitializer();
break;
}
case 12: {
enterOuterAlt(_localctx, 12);
- setState(744);
+ setState(747);
explicitErrorInitializer();
break;
}
case 13: {
enterOuterAlt(_localctx, 13);
- setState(745);
+ setState(748);
bareArrayInitializer();
break;
}
case 14: {
enterOuterAlt(_localctx, 14);
- setState(746);
+ setState(749);
interpolatedString();
break;
}
@@ -7380,17 +7394,17 @@ EscriptParser::ScopedIdentifierContext* EscriptParser::scopedIdentifier() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(750);
+ setState(753);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::IDENTIFIER) {
- setState(749);
+ setState(752);
antlrcpp::downCast(_localctx)->scope = match(EscriptParser::IDENTIFIER);
}
- setState(752);
+ setState(755);
match(EscriptParser::COLONCOLON);
- setState(753);
+ setState(756);
antlrcpp::downCast(_localctx)->identifier = match(EscriptParser::IDENTIFIER);
}
@@ -7468,21 +7482,21 @@ EscriptParser::FunctionExpressionContext* EscriptParser::functionExpression() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(755);
+ setState(758);
match(EscriptParser::AT);
- setState(757);
+ setState(760);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::LPAREN) {
- setState(756);
+ setState(759);
functionParameters();
}
- setState(759);
+ setState(762);
match(EscriptParser::LBRACE);
- setState(760);
+ setState(763);
block();
- setState(761);
+ setState(764);
match(EscriptParser::RBRACE);
}
@@ -7547,14 +7561,14 @@ EscriptParser::ExplicitArrayInitializerContext* EscriptParser::explicitArrayInit
});
try {
enterOuterAlt(_localctx, 1);
- setState(763);
+ setState(766);
match(EscriptParser::ARRAY);
- setState(765);
+ setState(768);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 70, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 71, _ctx)) {
case 1: {
- setState(764);
+ setState(767);
arrayInitializer();
break;
}
@@ -7625,14 +7639,14 @@ EscriptParser::ExplicitStructInitializerContext* EscriptParser::explicitStructIn
});
try {
enterOuterAlt(_localctx, 1);
- setState(767);
+ setState(770);
match(EscriptParser::STRUCT);
- setState(769);
+ setState(772);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 71, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 72, _ctx)) {
case 1: {
- setState(768);
+ setState(771);
structInitializer();
break;
}
@@ -7703,14 +7717,14 @@ EscriptParser::ExplicitDictInitializerContext* EscriptParser::explicitDictInitia
});
try {
enterOuterAlt(_localctx, 1);
- setState(771);
+ setState(774);
match(EscriptParser::DICTIONARY);
- setState(773);
+ setState(776);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 72, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 73, _ctx)) {
case 1: {
- setState(772);
+ setState(775);
dictInitializer();
break;
}
@@ -7781,14 +7795,14 @@ EscriptParser::ExplicitErrorInitializerContext* EscriptParser::explicitErrorInit
});
try {
enterOuterAlt(_localctx, 1);
- setState(775);
+ setState(778);
match(EscriptParser::TOK_ERROR);
- setState(777);
+ setState(780);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 73, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 74, _ctx)) {
case 1: {
- setState(776);
+ setState(779);
structInitializer();
break;
}
@@ -7867,45 +7881,45 @@ EscriptParser::BareArrayInitializerContext* EscriptParser::bareArrayInitializer(
exitRule();
});
try {
- setState(791);
+ setState(794);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 76, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 77, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(779);
+ setState(782);
match(EscriptParser::LBRACE);
- setState(781);
+ setState(784);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(780);
+ setState(783);
expressionList();
}
- setState(783);
+ setState(786);
match(EscriptParser::RBRACE);
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(784);
+ setState(787);
match(EscriptParser::LBRACE);
- setState(786);
+ setState(789);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(785);
+ setState(788);
expressionList();
}
- setState(788);
+ setState(791);
match(EscriptParser::COMMA);
- setState(789);
+ setState(792);
match(EscriptParser::RBRACE);
notifyErrorListeners("Expected expression following comma before right-brace in array initializer list");
break;
@@ -7981,11 +7995,11 @@ EscriptParser::ParExpressionContext* EscriptParser::parExpression() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(793);
+ setState(796);
match(EscriptParser::LPAREN);
- setState(794);
+ setState(797);
expression(0);
- setState(795);
+ setState(798);
match(EscriptParser::RPAREN);
}
@@ -8059,21 +8073,21 @@ EscriptParser::ExpressionListContext* EscriptParser::expressionList() {
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(797);
+ setState(800);
expressionListEntry();
- setState(802);
+ setState(805);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 77, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 78, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
- setState(798);
+ setState(801);
match(EscriptParser::COMMA);
- setState(799);
+ setState(802);
expressionListEntry();
}
- setState(804);
+ setState(807);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 77, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 78, _ctx);
}
}
@@ -8139,14 +8153,14 @@ EscriptParser::ExpressionListEntryContext* EscriptParser::expressionListEntry()
});
try {
enterOuterAlt(_localctx, 1);
- setState(805);
+ setState(808);
expression(0);
- setState(807);
+ setState(810);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ELLIPSIS) {
- setState(806);
+ setState(809);
match(EscriptParser::ELLIPSIS);
}
@@ -8219,33 +8233,33 @@ EscriptParser::ExpressionSuffixContext* EscriptParser::expressionSuffix() {
exitRule();
});
try {
- setState(813);
+ setState(816);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 80, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(809);
+ setState(812);
indexingSuffix();
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(810);
+ setState(813);
methodCallSuffix();
break;
}
case 3: {
enterOuterAlt(_localctx, 3);
- setState(811);
+ setState(814);
navigationSuffix();
break;
}
case 4: {
enterOuterAlt(_localctx, 4);
- setState(812);
+ setState(815);
functionCallSuffix();
break;
}
@@ -8320,11 +8334,11 @@ EscriptParser::IndexingSuffixContext* EscriptParser::indexingSuffix() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(815);
+ setState(818);
match(EscriptParser::LBRACK);
- setState(816);
+ setState(819);
indexList();
- setState(817);
+ setState(820);
match(EscriptParser::RBRACK);
}
@@ -8398,17 +8412,17 @@ EscriptParser::IndexListContext* EscriptParser::indexList() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(819);
+ setState(822);
expression(0);
- setState(824);
+ setState(827);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == EscriptParser::COMMA) {
- setState(820);
+ setState(823);
match(EscriptParser::COMMA);
- setState(821);
+ setState(824);
expression(0);
- setState(826);
+ setState(829);
_errHandler->sync(this);
_la = _input->LA(1);
}
@@ -8484,9 +8498,9 @@ EscriptParser::NavigationSuffixContext* EscriptParser::navigationSuffix() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(827);
+ setState(830);
match(EscriptParser::DOT);
- setState(828);
+ setState(831);
_la = _input->LA(1);
if (!(_la == EscriptParser::FUNCTION || _la == EscriptParser::STRING_LITERAL
@@ -8573,23 +8587,23 @@ EscriptParser::MethodCallSuffixContext* EscriptParser::methodCallSuffix() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(830);
+ setState(833);
match(EscriptParser::DOT);
- setState(831);
- match(EscriptParser::IDENTIFIER);
- setState(832);
- match(EscriptParser::LPAREN);
setState(834);
+ match(EscriptParser::IDENTIFIER);
+ setState(835);
+ match(EscriptParser::LPAREN);
+ setState(837);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(833);
+ setState(836);
expressionList();
}
- setState(836);
+ setState(839);
match(EscriptParser::RPAREN);
}
@@ -8659,19 +8673,19 @@ EscriptParser::FunctionCallSuffixContext* EscriptParser::functionCallSuffix() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(838);
+ setState(841);
match(EscriptParser::LPAREN);
- setState(840);
+ setState(843);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(839);
+ setState(842);
expressionList();
}
- setState(842);
+ setState(845);
match(EscriptParser::RPAREN);
}
@@ -8745,21 +8759,21 @@ EscriptParser::FunctionCallContext* EscriptParser::functionCall() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(844);
- match(EscriptParser::IDENTIFIER);
- setState(845);
- match(EscriptParser::LPAREN);
setState(847);
+ match(EscriptParser::IDENTIFIER);
+ setState(848);
+ match(EscriptParser::LPAREN);
+ setState(850);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(846);
+ setState(849);
expressionList();
}
- setState(849);
+ setState(852);
match(EscriptParser::RPAREN);
}
@@ -8836,21 +8850,21 @@ EscriptParser::StructInitializerExpressionContext* EscriptParser::structInitiali
exitRule();
});
try {
- setState(864);
+ setState(867);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 86, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(851);
- match(EscriptParser::IDENTIFIER);
setState(854);
+ match(EscriptParser::IDENTIFIER);
+ setState(857);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ASSIGN) {
- setState(852);
+ setState(855);
match(EscriptParser::ASSIGN);
- setState(853);
+ setState(856);
expression(0);
}
break;
@@ -8858,16 +8872,16 @@ EscriptParser::StructInitializerExpressionContext* EscriptParser::structInitiali
case 2: {
enterOuterAlt(_localctx, 2);
- setState(856);
- match(EscriptParser::STRING_LITERAL);
setState(859);
+ match(EscriptParser::STRING_LITERAL);
+ setState(862);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ASSIGN) {
- setState(857);
+ setState(860);
match(EscriptParser::ASSIGN);
- setState(858);
+ setState(861);
expression(0);
}
break;
@@ -8875,9 +8889,9 @@ EscriptParser::StructInitializerExpressionContext* EscriptParser::structInitiali
case 3: {
enterOuterAlt(_localctx, 3);
- setState(861);
+ setState(864);
expression(0);
- setState(862);
+ setState(865);
match(EscriptParser::ELLIPSIS);
break;
}
@@ -8957,21 +8971,21 @@ EscriptParser::StructInitializerExpressionListContext* EscriptParser::structInit
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(866);
+ setState(869);
structInitializerExpression();
- setState(871);
+ setState(874);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 87, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 88, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
- setState(867);
+ setState(870);
match(EscriptParser::COMMA);
- setState(868);
+ setState(871);
structInitializerExpression();
}
- setState(873);
+ setState(876);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 87, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 88, _ctx);
}
}
@@ -9044,45 +9058,45 @@ EscriptParser::StructInitializerContext* EscriptParser::structInitializer() {
exitRule();
});
try {
- setState(886);
+ setState(889);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 90, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(874);
+ setState(877);
match(EscriptParser::LBRACE);
- setState(876);
+ setState(879);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(875);
+ setState(878);
structInitializerExpressionList();
}
- setState(878);
+ setState(881);
match(EscriptParser::RBRACE);
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(879);
+ setState(882);
match(EscriptParser::LBRACE);
- setState(881);
+ setState(884);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(880);
+ setState(883);
structInitializerExpressionList();
}
- setState(883);
+ setState(886);
match(EscriptParser::COMMA);
- setState(884);
+ setState(887);
match(EscriptParser::RBRACE);
notifyErrorListeners("Expected expression following comma before right-brace in struct initializer list");
break;
@@ -9162,21 +9176,21 @@ EscriptParser::DictInitializerExpressionContext* EscriptParser::dictInitializerE
exitRule();
});
try {
- setState(896);
+ setState(899);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 92, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 93, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(888);
- expression(0);
setState(891);
+ expression(0);
+ setState(894);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::ARROW) {
- setState(889);
+ setState(892);
match(EscriptParser::ARROW);
- setState(890);
+ setState(893);
expression(0);
}
break;
@@ -9184,9 +9198,9 @@ EscriptParser::DictInitializerExpressionContext* EscriptParser::dictInitializerE
case 2: {
enterOuterAlt(_localctx, 2);
- setState(893);
+ setState(896);
expression(0);
- setState(894);
+ setState(897);
match(EscriptParser::ELLIPSIS);
break;
}
@@ -9266,21 +9280,21 @@ EscriptParser::DictInitializerExpressionListContext* EscriptParser::dictInitiali
try {
size_t alt;
enterOuterAlt(_localctx, 1);
- setState(898);
+ setState(901);
dictInitializerExpression();
- setState(903);
+ setState(906);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 93, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 94, _ctx);
while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
if (alt == 1) {
- setState(899);
+ setState(902);
match(EscriptParser::COMMA);
- setState(900);
+ setState(903);
dictInitializerExpression();
}
- setState(905);
+ setState(908);
_errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 93, _ctx);
+ alt = getInterpreter()->adaptivePredict(_input, 94, _ctx);
}
}
@@ -9353,45 +9367,45 @@ EscriptParser::DictInitializerContext* EscriptParser::dictInitializer() {
exitRule();
});
try {
- setState(918);
+ setState(921);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 96, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 97, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(906);
+ setState(909);
match(EscriptParser::LBRACE);
- setState(908);
+ setState(911);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(907);
+ setState(910);
dictInitializerExpressionList();
}
- setState(910);
+ setState(913);
match(EscriptParser::RBRACE);
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(911);
+ setState(914);
match(EscriptParser::LBRACE);
- setState(913);
+ setState(916);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(912);
+ setState(915);
dictInitializerExpressionList();
}
- setState(915);
+ setState(918);
match(EscriptParser::COMMA);
- setState(916);
+ setState(919);
match(EscriptParser::RBRACE);
notifyErrorListeners("Expected expression following comma before right-brace in dictionary initializer list");
break;
@@ -9479,45 +9493,45 @@ EscriptParser::ArrayInitializerContext* EscriptParser::arrayInitializer() {
exitRule();
});
try {
- setState(944);
+ setState(947);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 101, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 102, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(920);
+ setState(923);
match(EscriptParser::LBRACE);
- setState(922);
+ setState(925);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(921);
+ setState(924);
expressionList();
}
- setState(924);
+ setState(927);
match(EscriptParser::RBRACE);
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
- setState(925);
+ setState(928);
match(EscriptParser::LBRACE);
- setState(927);
+ setState(930);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(926);
+ setState(929);
expressionList();
}
- setState(929);
+ setState(932);
match(EscriptParser::COMMA);
- setState(930);
+ setState(933);
match(EscriptParser::RBRACE);
notifyErrorListeners("Expected expression following comma before right-brace in array initializer list");
break;
@@ -9525,40 +9539,40 @@ EscriptParser::ArrayInitializerContext* EscriptParser::arrayInitializer() {
case 3: {
enterOuterAlt(_localctx, 3);
- setState(932);
+ setState(935);
match(EscriptParser::LPAREN);
- setState(934);
+ setState(937);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(933);
+ setState(936);
expressionList();
}
- setState(936);
+ setState(939);
match(EscriptParser::RPAREN);
break;
}
case 4: {
enterOuterAlt(_localctx, 4);
- setState(937);
+ setState(940);
match(EscriptParser::LPAREN);
- setState(939);
+ setState(942);
_errHandler->sync(this);
_la = _input->LA(1);
if (((((_la - 58) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 58)) & 8070450583938513363) != 0) || ((((_la - 122) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 122)) & 131) != 0)) {
- setState(938);
+ setState(941);
expressionList();
}
- setState(941);
+ setState(944);
match(EscriptParser::COMMA);
- setState(942);
+ setState(945);
match(EscriptParser::RPAREN);
notifyErrorListeners("Expected expression following comma before right-paren in array initializer list");
break;
@@ -9641,7 +9655,7 @@ EscriptParser::LiteralContext* EscriptParser::literal() {
exitRule();
});
try {
- setState(951);
+ setState(954);
_errHandler->sync(this);
switch (_input->LA(1)) {
case EscriptParser::DECIMAL_LITERAL:
@@ -9649,7 +9663,7 @@ EscriptParser::LiteralContext* EscriptParser::literal() {
case EscriptParser::OCT_LITERAL:
case EscriptParser::BINARY_LITERAL: {
enterOuterAlt(_localctx, 1);
- setState(946);
+ setState(949);
integerLiteral();
break;
}
@@ -9657,7 +9671,7 @@ EscriptParser::LiteralContext* EscriptParser::literal() {
case EscriptParser::FLOAT_LITERAL:
case EscriptParser::HEX_FLOAT_LITERAL: {
enterOuterAlt(_localctx, 2);
- setState(947);
+ setState(950);
floatLiteral();
break;
}
@@ -9665,21 +9679,21 @@ EscriptParser::LiteralContext* EscriptParser::literal() {
case EscriptParser::BOOL_TRUE:
case EscriptParser::BOOL_FALSE: {
enterOuterAlt(_localctx, 3);
- setState(948);
+ setState(951);
boolLiteral();
break;
}
case EscriptParser::STRING_LITERAL: {
enterOuterAlt(_localctx, 4);
- setState(949);
+ setState(952);
match(EscriptParser::STRING_LITERAL);
break;
}
case EscriptParser::UNINIT: {
enterOuterAlt(_localctx, 5);
- setState(950);
+ setState(953);
match(EscriptParser::UNINIT);
break;
}
@@ -9759,20 +9773,20 @@ EscriptParser::InterpolatedStringContext* EscriptParser::interpolatedString() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(953);
+ setState(956);
match(EscriptParser::INTERPOLATED_STRING_START);
- setState(957);
+ setState(960);
_errHandler->sync(this);
_la = _input->LA(1);
while (((((_la - 130) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 130)) & 55) != 0)) {
- setState(954);
+ setState(957);
interpolatedStringPart();
- setState(959);
+ setState(962);
_errHandler->sync(this);
_la = _input->LA(1);
}
- setState(960);
+ setState(963);
match(EscriptParser::DOUBLE_QUOTE_INSIDE);
}
@@ -9861,23 +9875,23 @@ EscriptParser::InterpolatedStringPartContext* EscriptParser::interpolatedStringP
exitRule();
});
try {
- setState(978);
+ setState(981);
_errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) {
+ switch (getInterpreter()->adaptivePredict(_input, 107, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
- setState(962);
+ setState(965);
match(EscriptParser::LBRACE_INSIDE);
- setState(963);
- expression(0);
setState(966);
+ expression(0);
+ setState(969);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::COLON) {
- setState(964);
+ setState(967);
match(EscriptParser::COLON);
- setState(965);
+ setState(968);
match(EscriptParser::FORMAT_STRING);
}
break;
@@ -9885,16 +9899,16 @@ EscriptParser::InterpolatedStringPartContext* EscriptParser::interpolatedStringP
case 2: {
enterOuterAlt(_localctx, 2);
- setState(968);
- match(EscriptParser::LBRACE_INSIDE);
setState(971);
+ match(EscriptParser::LBRACE_INSIDE);
+ setState(974);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == EscriptParser::COLON) {
- setState(969);
+ setState(972);
match(EscriptParser::COLON);
- setState(970);
+ setState(973);
match(EscriptParser::FORMAT_STRING);
}
notifyErrorListeners("Expected expression following interpolated string part start");
@@ -9903,28 +9917,28 @@ EscriptParser::InterpolatedStringPartContext* EscriptParser::interpolatedStringP
case 3: {
enterOuterAlt(_localctx, 3);
- setState(974);
+ setState(977);
match(EscriptParser::DOUBLE_LBRACE_INSIDE);
break;
}
case 4: {
enterOuterAlt(_localctx, 4);
- setState(975);
+ setState(978);
match(EscriptParser::REGULAR_CHAR_INSIDE);
break;
}
case 5: {
enterOuterAlt(_localctx, 5);
- setState(976);
+ setState(979);
match(EscriptParser::DOUBLE_RBRACE);
break;
}
case 6: {
enterOuterAlt(_localctx, 6);
- setState(977);
+ setState(980);
match(EscriptParser::STRING_LITERAL_INSIDE);
break;
}
@@ -10004,7 +10018,7 @@ EscriptParser::IntegerLiteralContext* EscriptParser::integerLiteral() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(980);
+ setState(983);
_la = _input->LA(1);
if (!(((((_la - 73) & ~ 0x3fULL) == 0) &&
((1ULL << (_la - 73)) & 15) != 0))) {
@@ -10078,7 +10092,7 @@ EscriptParser::FloatLiteralContext* EscriptParser::floatLiteral() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(982);
+ setState(985);
_la = _input->LA(1);
if (!(_la == EscriptParser::FLOAT_LITERAL
@@ -10153,7 +10167,7 @@ EscriptParser::BoolLiteralContext* EscriptParser::boolLiteral() {
});
try {
enterOuterAlt(_localctx, 1);
- setState(984);
+ setState(987);
_la = _input->LA(1);
if (!(_la == EscriptParser::BOOL_TRUE
diff --git a/lib/Parser/EscriptGrammar/EscriptParser.g4 b/lib/Parser/EscriptGrammar/EscriptParser.g4
index f256ef7ac..233da0838 100644
--- a/lib/Parser/EscriptGrammar/EscriptParser.g4
+++ b/lib/Parser/EscriptGrammar/EscriptParser.g4
@@ -186,7 +186,7 @@ caseStatement
;
enumStatement
- : ENUM IDENTIFIER enumList ENDENUM
+ : ENUM CLASS? IDENTIFIER enumList ENDENUM
;
block
diff --git a/lib/Parser/EscriptGrammar/EscriptParser.h b/lib/Parser/EscriptGrammar/EscriptParser.h
index ee0995e28..1449faede 100644
--- a/lib/Parser/EscriptGrammar/EscriptParser.h
+++ b/lib/Parser/EscriptGrammar/EscriptParser.h
@@ -849,6 +849,7 @@ public:
antlr4::tree::TerminalNode *IDENTIFIER();
EnumListContext *enumList();
antlr4::tree::TerminalNode *ENDENUM();
+ antlr4::tree::TerminalNode *CLASS();
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
diff --git a/pol-core/bscript/compiler/astbuilder/BuilderWorkspace.cpp b/pol-core/bscript/compiler/astbuilder/BuilderWorkspace.cpp
index 6e0301f62..c1ebdf5c8 100644
--- a/pol-core/bscript/compiler/astbuilder/BuilderWorkspace.cpp
+++ b/pol-core/bscript/compiler/astbuilder/BuilderWorkspace.cpp
@@ -1,8 +1,8 @@
#include "BuilderWorkspace.h"
+#include "bscript/compiler/ast/Statement.h"
#include "bscript/compiler/file/SourceFile.h"
#include "bscript/compiler/file/SourceFileCache.h"
-#include "bscript/compiler/ast/Statement.h"
#include "bscript/compiler/file/SourceFileIdentifier.h"
namespace Pol::Bscript::Compiler
@@ -10,12 +10,12 @@ namespace Pol::Bscript::Compiler
BuilderWorkspace::BuilderWorkspace( CompilerWorkspace& compiler_workspace,
SourceFileCache& em_cache, SourceFileCache& inc_cache,
Profile& profile, Report& report )
- : compiler_workspace( compiler_workspace ),
- em_cache( em_cache ),
- inc_cache( inc_cache ),
- profile( profile ),
- report( report ),
- function_resolver( report )
+ : compiler_workspace( compiler_workspace ),
+ em_cache( em_cache ),
+ inc_cache( inc_cache ),
+ profile( profile ),
+ report( report ),
+ function_resolver( compiler_workspace, report )
{
}
diff --git a/pol-core/bscript/compiler/astbuilder/FunctionResolver.cpp b/pol-core/bscript/compiler/astbuilder/FunctionResolver.cpp
index 661ffbd8a..c4b8781dc 100644
--- a/pol-core/bscript/compiler/astbuilder/FunctionResolver.cpp
+++ b/pol-core/bscript/compiler/astbuilder/FunctionResolver.cpp
@@ -12,12 +12,16 @@
#include "bscript/compiler/file/SourceFileIdentifier.h"
#include "bscript/compiler/file/SourceLocation.h"
#include "bscript/compiler/model/ClassLink.h"
+#include "bscript/compiler/model/CompilerWorkspace.h"
#include "bscript/compiler/model/FunctionLink.h"
#include "clib/strutil.h"
namespace Pol::Bscript::Compiler
{
-FunctionResolver::FunctionResolver( Report& report ) : report( report ) {}
+FunctionResolver::FunctionResolver( CompilerWorkspace& workspace, Report& report )
+ : workspace( workspace ), report( report )
+{
+}
FunctionResolver::~FunctionResolver() = default;
void FunctionResolver::force_reference( const ScopableName& name, const SourceLocation& loc )
@@ -447,14 +451,14 @@ void FunctionResolver::register_available_class_decl_parse_tree(
name, previous->source_location );
}
- auto itr2 = available_class_decl_parse_trees.find( name );
- if ( itr2 != available_class_decl_parse_trees.end() )
+ if ( auto itr2 = workspace.all_class_locations.find( name );
+ itr2 != workspace.all_class_locations.end() )
{
auto& previous = ( *itr2 ).second;
report.error( source_location,
"Class '{}' defined more than once.\n"
" Previous declaration: {}",
- name, previous->source_location );
+ name, previous );
}
auto itr3 = resolved_functions.find( { ScopeName::Global, name } );
diff --git a/pol-core/bscript/compiler/astbuilder/FunctionResolver.h b/pol-core/bscript/compiler/astbuilder/FunctionResolver.h
index 6c4d6c008..ab1427190 100644
--- a/pol-core/bscript/compiler/astbuilder/FunctionResolver.h
+++ b/pol-core/bscript/compiler/astbuilder/FunctionResolver.h
@@ -19,6 +19,7 @@ namespace Pol::Bscript::Compiler
class AvailableSecondPassTarget;
class ClassDeclaration;
class ClassLink;
+class CompilerWorkspace;
class Function;
class FunctionLink;
class ModuleFunctionDeclaration;
@@ -29,7 +30,7 @@ class GeneratedFunction;
class FunctionResolver
{
public:
- explicit FunctionResolver( Report& );
+ explicit FunctionResolver( CompilerWorkspace&, Report& );
~FunctionResolver();
// Force reference to a function
@@ -78,6 +79,7 @@ private:
const ScopeName& scope,
Node* top_level_statements_child_node );
+ CompilerWorkspace& workspace;
Report& report;
using FunctionMap = std::map;
diff --git a/pol-core/bscript/compiler/astbuilder/SimpleStatementBuilder.cpp b/pol-core/bscript/compiler/astbuilder/SimpleStatementBuilder.cpp
index 0db0c580f..1f29a50d6 100644
--- a/pol-core/bscript/compiler/astbuilder/SimpleStatementBuilder.cpp
+++ b/pol-core/bscript/compiler/astbuilder/SimpleStatementBuilder.cpp
@@ -219,6 +219,28 @@ std::unique_ptr SimpleStatementBuilder::enum_declaration(
{
std::vector names;
std::vector> expressions;
+ std::string enum_identifier = text( ctx->IDENTIFIER() );
+ auto enum_source_location = location_for( *ctx );
+ std::string prefix = "";
+ if ( ctx->CLASS() )
+ {
+ prefix = enum_identifier + "::";
+
+ if ( auto itr = workspace.compiler_workspace.all_class_locations.find( enum_identifier );
+ itr != workspace.compiler_workspace.all_class_locations.end() )
+ {
+ auto& previous = ( *itr ).second;
+ report.error( enum_source_location,
+ "Class '{}' defined more than once.\n"
+ " Previous declaration: {}",
+ enum_identifier, previous );
+ }
+ else
+ {
+ workspace.compiler_workspace.all_class_locations.emplace( enum_identifier,
+ enum_source_location );
+ }
+ }
if ( auto enum_list = ctx->enumList() )
{
std::string last_identifier;
@@ -245,17 +267,15 @@ std::unique_ptr SimpleStatementBuilder::enum_declaration(
value = std::make_unique( source_location, 0 );
}
bool allow_overwrite = true;
- auto constant = std::make_unique( location_for( *entry ), identifier,
- std::move( value ), allow_overwrite );
+ auto constant = std::make_unique(
+ location_for( *entry ), prefix + identifier, std::move( value ), allow_overwrite );
workspace.compiler_workspace.const_declarations.push_back( std::move( constant ) );
last_identifier = identifier;
}
}
- auto source_location = location_for( *ctx );
- std::string identifier = text( ctx->IDENTIFIER() );
- return std::make_unique( source_location, std::move( identifier ),
+ return std::make_unique( enum_source_location, std::move( enum_identifier ),
std::move( names ), std::move( expressions ) );
}
diff --git a/pol-core/bscript/compiler/file/PrettifyFileProcessor.cpp b/pol-core/bscript/compiler/file/PrettifyFileProcessor.cpp
index 8e9730db9..7220e8e6e 100644
--- a/pol-core/bscript/compiler/file/PrettifyFileProcessor.cpp
+++ b/pol-core/bscript/compiler/file/PrettifyFileProcessor.cpp
@@ -464,6 +464,10 @@ antlrcpp::Any PrettifyFileProcessor::visitEnumList( EscriptParser::EnumListConte
antlrcpp::Any PrettifyFileProcessor::visitEnumStatement( EscriptParser::EnumStatementContext* ctx )
{
addToken( "enum", ctx->ENUM(), FmtToken::SPACE );
+ if ( auto class_token = ctx->CLASS() )
+ {
+ addToken( "class", class_token, FmtToken::SPACE );
+ }
make_identifier( ctx->IDENTIFIER() );
linebuilder.buildLine( _currindent );
++_currindent;
diff --git a/pol-core/bscript/compiler/optimizer/Optimizer.cpp b/pol-core/bscript/compiler/optimizer/Optimizer.cpp
index a5f942ad6..2ca21f3dd 100644
--- a/pol-core/bscript/compiler/optimizer/Optimizer.cpp
+++ b/pol-core/bscript/compiler/optimizer/Optimizer.cpp
@@ -178,15 +178,11 @@ void Optimizer::visit_const_declaration( ConstDeclaration& constant )
void Optimizer::visit_identifier( Identifier& identifier )
{
- // We don't have scoped constants, so only global identifiers can be optimized.
- if ( identifier.scoped_name.scope.global() )
+ auto name = identifier.string();
+ if ( auto constant = constants.find( name ) )
{
- auto name = identifier.string();
- if ( auto constant = constants.find( name ) )
- {
- SimpleValueCloner cloner( report, identifier.source_location );
- optimized_replacement = cloner.clone( constant->expression() );
- }
+ SimpleValueCloner cloner( report, identifier.source_location );
+ optimized_replacement = cloner.clone( constant->expression() );
}
}
diff --git a/pol-core/doc/core-changes.txt b/pol-core/doc/core-changes.txt
index 7cde342e8..4ed324b65 100644
--- a/pol-core/doc/core-changes.txt
+++ b/pol-core/doc/core-changes.txt
@@ -1,4 +1,14 @@
-- POL100.2.0 --
+08-17-2025 Kevin:
+ Added: Escript now supports declaring an enumeration as an "enum class", which scopes the enum's entries to the enum's name:
+
+ enum class Races
+ HUMAN := "Human",
+ ORC := "Orc",
+ ELF := "Elf"
+ endenum
+
+ print( Races::HUMAN ); // Prints: "Human"
08-16-2025 Kevin:
Added: New module function util::RandomUUID()
Added: util.em constants UUID_NIL and UUID_MAX
diff --git a/testsuite/escript/bug/bug004.cot b/testsuite/escript/bug/bug004.cot
deleted file mode 100644
index 179f88049..000000000
--- a/testsuite/escript/bug/bug004.cot
+++ /dev/null
@@ -1,7 +0,0 @@
-Token '(' unexpected (expected comma or right-paren)
-Error getting arguments for function CInt
-File: D:\ensprj\bscript\testsuite\bug004.src, Line 2
-
-Error compiling statement at D:\ensprj\bscript\testsuite\bug004.src, Line 1
-Error detected in program body.
-Error occurred at D:\ensprj\bscript\testsuite\bug004.src, Line 2
diff --git a/testsuite/escript/const/const04.cot b/testsuite/escript/const/const04.cot
deleted file mode 100644
index 3a1c437b1..000000000
--- a/testsuite/escript/const/const04.cot
+++ /dev/null
@@ -1,3 +0,0 @@
-FOO is already a defined constant.
-Near: global FOO := 3;
-File: D:\ensprj\bscript\testsuite\const04.src, Line 4
diff --git a/testsuite/escript/enum/enum07.out b/testsuite/escript/enum/enum07.out
new file mode 100644
index 000000000..2b2f2e1b9
--- /dev/null
+++ b/testsuite/escript/enum/enum07.out
@@ -0,0 +1,2 @@
+1
+3
diff --git a/testsuite/escript/enum/enum07.src b/testsuite/escript/enum/enum07.src
new file mode 100644
index 000000000..e23a6e2f8
--- /dev/null
+++ b/testsuite/escript/enum/enum07.src
@@ -0,0 +1,8 @@
+enum class MyEnum
+ FOO := 1,
+ FOO := 2, // Ignored, redefinition
+ BAR := 3,
+endenum
+
+print(MyEnum::FOO); // 1
+print(MyEnum::BAR); // 3
diff --git a/testsuite/escript/enum/enum08.err b/testsuite/escript/enum/enum08.err
new file mode 100644
index 000000000..c9835aeb2
--- /dev/null
+++ b/testsuite/escript/enum/enum08.err
@@ -0,0 +1 @@
+:5:7: error: Unknown identifier 'MyEnum::BAR'.
diff --git a/testsuite/escript/enum/enum08.src b/testsuite/escript/enum/enum08.src
new file mode 100644
index 000000000..96a8638c5
--- /dev/null
+++ b/testsuite/escript/enum/enum08.src
@@ -0,0 +1,5 @@
+enum class MyEnum
+ FOO := 1
+endenum
+
+print(MyEnum::BAR);
diff --git a/testsuite/escript/enum/enum09.err b/testsuite/escript/enum/enum09.err
new file mode 100644
index 000000000..5c113c376
--- /dev/null
+++ b/testsuite/escript/enum/enum09.err
@@ -0,0 +1 @@
+:5:1: error: Class 'MyEnum' defined more than once.
diff --git a/testsuite/escript/enum/enum09.src b/testsuite/escript/enum/enum09.src
new file mode 100644
index 000000000..0ba6985dc
--- /dev/null
+++ b/testsuite/escript/enum/enum09.src
@@ -0,0 +1,7 @@
+enum class MyEnum
+ FOO := 1
+endenum
+
+enum class MyEnum
+ BAR := 2
+endenum
diff --git a/testsuite/escript/enum/enum10.err b/testsuite/escript/enum/enum10.err
new file mode 100644
index 000000000..5c113c376
--- /dev/null
+++ b/testsuite/escript/enum/enum10.err
@@ -0,0 +1 @@
+:5:1: error: Class 'MyEnum' defined more than once.
diff --git a/testsuite/escript/enum/enum10.src b/testsuite/escript/enum/enum10.src
new file mode 100644
index 000000000..501dafaf6
--- /dev/null
+++ b/testsuite/escript/enum/enum10.src
@@ -0,0 +1,6 @@
+enum class MyEnum
+ FOO := 1
+endenum
+
+class MyEnum()
+endclass
diff --git a/testsuite/escript/enum/enum11.err b/testsuite/escript/enum/enum11.err
new file mode 100644
index 000000000..578624b8c
--- /dev/null
+++ b/testsuite/escript/enum/enum11.err
@@ -0,0 +1 @@
+:4:1: error: Class 'MyEnum' defined more than once.
diff --git a/testsuite/escript/enum/enum11.src b/testsuite/escript/enum/enum11.src
new file mode 100644
index 000000000..1d1ea58eb
--- /dev/null
+++ b/testsuite/escript/enum/enum11.src
@@ -0,0 +1,6 @@
+class MyEnum()
+endclass
+
+enum class MyEnum
+ FOO := 1
+endenum
diff --git a/testsuite/escript/enum/enum12.err b/testsuite/escript/enum/enum12.err
new file mode 100644
index 000000000..b137727ba
--- /dev/null
+++ b/testsuite/escript/enum/enum12.err
@@ -0,0 +1 @@
+:5:8: error: Unknown identifier 'FOO'.
diff --git a/testsuite/escript/enum/enum12.src b/testsuite/escript/enum/enum12.src
new file mode 100644
index 000000000..f9236abe5
--- /dev/null
+++ b/testsuite/escript/enum/enum12.src
@@ -0,0 +1,5 @@
+enum class MyEnum
+ FOO := 1,
+endenum
+
+print( FOO ); // Error: identifier _must_ be scoped
diff --git a/testsuite/escript/func/func06.cot b/testsuite/escript/func/func06.cot
deleted file mode 100644
index 24e30089f..000000000
--- a/testsuite/escript/func/func06.cot
+++ /dev/null
@@ -1,5 +0,0 @@
-Const expression must be optimizable
-File: D:\ensprj\bscript\testsuite\func06.src, Line 5
-Exception detected during compilation.
-File: D:\ensprj\bscript\testsuite\func06.src, Line 9
-Exception Detected:Trying to write an illegal token
diff --git a/testsuite/escript/func/func2.cot b/testsuite/escript/func/func2.cot
deleted file mode 100644
index 63aff1377..000000000
--- a/testsuite/escript/func/func2.cot
+++ /dev/null
@@ -1,5 +0,0 @@
-Globals can only be declared at global scope.
-Error occurred reading function body for 'foo1'
-Function location: File: D:\ensprj\bscript\testsuite\func2.src, Line 3
-Error location:
-Exception Detected:error in function
diff --git a/testsuite/escript/func/func2b.cot b/testsuite/escript/func/func2b.cot
deleted file mode 100644
index d79b91ddb..000000000
--- a/testsuite/escript/func/func2b.cot
+++ /dev/null
@@ -1,5 +0,0 @@
-Globals can only be declared at global scope.
-Error occurred reading function body for 'foo1'
-Function location: File: D:\ensprj\bscript\testsuite\func2b.src, Line 3
-Error location:
-Exception Detected:error in function
diff --git a/testsuite/escript/func/funceof.cot b/testsuite/escript/func/funceof.cot
deleted file mode 100644
index 5e9c15290..000000000
--- a/testsuite/escript/func/funceof.cot
+++ /dev/null
@@ -1,6 +0,0 @@
-End-of-File detected, expected 'endfunction'
-Error occurred reading function body for 'bar'
-Function location: File: D:\ensprj\bscript\testsuite\funceof.src, Line 4
-Error location:
-Near: print( "hello world" );
-File: D:\ensprj\bscript\testsuite\funceof.src, Line 9
diff --git a/testsuite/escript/in/inc01.cot b/testsuite/escript/in/inc01.cot
deleted file mode 100644
index acb3c3781..000000000
--- a/testsuite/escript/in/inc01.cot
+++ /dev/null
@@ -1,2 +0,0 @@
-Unable to read include file 'C:\sshpol\testsuite\escript\nofile.inc'
-Compilation failed.
diff --git a/testsuite/escript/misc/comp001.cot b/testsuite/escript/misc/comp001.cot
deleted file mode 100644
index a192e8192..000000000
--- a/testsuite/escript/misc/comp001.cot
+++ /dev/null
@@ -1,4 +0,0 @@
-Unmatched ')' in expression. (Trying to match against a '[')
-Exception detected during compilation.
-File: D:\ensprj\bscript\testsuite\comp001.src, Line 5
-Exception Detected:Error in parseToken() (1)
diff --git a/testsuite/escript/misc/fcall001.cot b/testsuite/escript/misc/fcall001.cot
deleted file mode 100644
index 572a6ead0..000000000
--- a/testsuite/escript/misc/fcall001.cot
+++ /dev/null
@@ -1,5 +0,0 @@
-Function mid: Parameter Start was not passed, and there is no default.
-Error getting arguments for function mid
-Error getting arguments for function print
-Near: print( mid( "hello" ));
-File: D:\ensprj\bscript\testsuite\fcall001.src, Line 2
diff --git a/testsuite/escript/misc/rpterr.cot b/testsuite/escript/misc/rpterr.cot
deleted file mode 100644
index e8b091641..000000000
--- a/testsuite/escript/misc/rpterr.cot
+++ /dev/null
@@ -1,3 +0,0 @@
-Variable foox has not been declared.
-Near: foox;
-File: D:\ensprj\bscript\testsuite\rpterr.src, Line 6
diff --git a/testsuite/escript/scope/scope02.cot b/testsuite/escript/scope/scope02.cot
deleted file mode 100644
index 7f0b2d933..000000000
--- a/testsuite/escript/scope/scope02.cot
+++ /dev/null
@@ -1,3 +0,0 @@
-Variable a has not been declared.
-Near: print( "A=" + a );
-File: D:\ensprj\bscript\testsuite\scope02.src, Line 10
diff --git a/testsuite/escript/scope/scope05.cot b/testsuite/escript/scope/scope05.cot
deleted file mode 100644
index f805504cd..000000000
--- a/testsuite/escript/scope/scope05.cot
+++ /dev/null
@@ -1,4 +0,0 @@
-Exception detected during compilation.
-File: D:\ensprj\bscript\testsuite\scope05.src, Line 8
-Exception Detected:
-Variable a is already in scope.
diff --git a/testsuite/escript/syntax/syntax01.cot b/testsuite/escript/syntax/syntax01.cot
deleted file mode 100644
index 4f0ae1358..000000000
--- a/testsuite/escript/syntax/syntax01.cot
+++ /dev/null
@@ -1,5 +0,0 @@
-Token 'array' cannot follow token '4L'
-Error compiling statement at C:\stlpol\testsuite\escript\syntax01.src, Line 1
-Parse Error: Illegal Construction
-Near: var x := 4 array { 4, 3 };
-File: C:\stlpol\testsuite\escript\syntax01.src, Line 1
diff --git a/testsuite/escript/syntax/syntax02.cot b/testsuite/escript/syntax/syntax02.cot
deleted file mode 100644
index 29cfcff39..000000000
--- a/testsuite/escript/syntax/syntax02.cot
+++ /dev/null
@@ -1,6 +0,0 @@
-Expected expression following comma before right-brace in struct element list
-Error reading members for struct
-Error compiling statement at C:\stlpol\testsuite\escript\syntax02.src, Line 1
-Compilation Error:
-Near: var x := struct { x, y, };
-File: C:\stlpol\testsuite\escript\syntax02.src, Line 1
diff --git a/testsuite/escript/var/var001.cot b/testsuite/escript/var/var001.cot
deleted file mode 100644
index 4a13efcc8..000000000
--- a/testsuite/escript/var/var001.cot
+++ /dev/null
@@ -1,3 +0,0 @@
-Variable b has not been declared.
-Near: b := 7;
-File: D:\ensprj\bscript\testsuite\var001.src, Line 8