diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 index 4ad377eb410dd..aa2e86b6979e1 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 @@ -74,8 +74,12 @@ operatorExpression primaryExpression : constant #constantDefault | qualifiedName #dereference + | functionExpression #function | LP booleanExpression RP #parenthesizedExpression - | identifier LP (booleanExpression (COMMA booleanExpression)*)? RP #functionExpression + ; + +functionExpression + : identifier LP (ASTERISK | (booleanExpression (COMMA booleanExpression)*))? RP ; rowCommand diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp index f629963de3296..649902a25536b 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp @@ -167,6 +167,7 @@ regexBooleanExpression valueExpression operatorExpression primaryExpression +functionExpression rowCommand fields field @@ -203,4 +204,4 @@ enrichWithClause atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 78, 482, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 98, 10, 3, 12, 3, 14, 3, 101, 11, 3, 3, 4, 3, 4, 3, 4, 5, 4, 106, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 120, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 132, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 139, 10, 7, 12, 7, 14, 7, 142, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 149, 10, 7, 3, 7, 3, 7, 5, 7, 153, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 161, 10, 7, 12, 7, 14, 7, 164, 11, 7, 3, 8, 3, 8, 5, 8, 168, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 175, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 180, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 187, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 193, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 201, 10, 10, 12, 10, 14, 10, 204, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 217, 10, 11, 12, 11, 14, 11, 220, 11, 11, 5, 11, 222, 10, 11, 3, 11, 3, 11, 5, 11, 226, 10, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 7, 13, 234, 10, 13, 12, 13, 14, 13, 237, 11, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 244, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 250, 10, 15, 12, 15, 14, 15, 253, 11, 15, 3, 15, 5, 15, 256, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 263, 10, 16, 12, 16, 14, 16, 266, 11, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 5, 18, 275, 10, 18, 3, 18, 3, 18, 5, 18, 279, 10, 18, 3, 19, 3, 19, 3, 19, 7, 19, 284, 10, 19, 12, 19, 14, 19, 287, 11, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 7, 21, 294, 10, 21, 12, 21, 14, 21, 297, 11, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 314, 10, 23, 12, 23, 14, 23, 317, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 325, 10, 23, 12, 23, 14, 23, 328, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 336, 10, 23, 12, 23, 14, 23, 339, 11, 23, 3, 23, 3, 23, 5, 23, 343, 10, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 352, 10, 25, 12, 25, 14, 25, 355, 11, 25, 3, 26, 3, 26, 5, 26, 359, 10, 26, 3, 26, 3, 26, 5, 26, 363, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 369, 10, 27, 12, 27, 14, 27, 372, 11, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 378, 10, 27, 12, 27, 14, 27, 381, 11, 27, 5, 27, 383, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 389, 10, 28, 12, 28, 14, 28, 392, 11, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 398, 10, 29, 12, 29, 14, 29, 401, 11, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 411, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 7, 34, 423, 10, 34, 12, 34, 14, 34, 426, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 5, 37, 436, 10, 37, 3, 38, 5, 38, 439, 10, 38, 3, 38, 3, 38, 3, 39, 5, 39, 444, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 456, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 462, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 7, 43, 468, 10, 43, 12, 43, 14, 43, 471, 11, 43, 5, 43, 473, 10, 43, 3, 44, 3, 44, 3, 44, 5, 44, 478, 10, 44, 3, 44, 3, 44, 3, 44, 2, 2, 5, 4, 12, 18, 45, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 2, 10, 3, 2, 58, 59, 3, 2, 60, 62, 3, 2, 74, 75, 3, 2, 65, 66, 4, 2, 29, 29, 32, 32, 3, 2, 35, 36, 4, 2, 34, 34, 48, 48, 3, 2, 52, 57, 2, 512, 2, 88, 3, 2, 2, 2, 4, 91, 3, 2, 2, 2, 6, 105, 3, 2, 2, 2, 8, 119, 3, 2, 2, 2, 10, 121, 3, 2, 2, 2, 12, 152, 3, 2, 2, 2, 14, 179, 3, 2, 2, 2, 16, 186, 3, 2, 2, 2, 18, 192, 3, 2, 2, 2, 20, 225, 3, 2, 2, 2, 22, 227, 3, 2, 2, 2, 24, 230, 3, 2, 2, 2, 26, 243, 3, 2, 2, 2, 28, 245, 3, 2, 2, 2, 30, 257, 3, 2, 2, 2, 32, 269, 3, 2, 2, 2, 34, 272, 3, 2, 2, 2, 36, 280, 3, 2, 2, 2, 38, 288, 3, 2, 2, 2, 40, 290, 3, 2, 2, 2, 42, 298, 3, 2, 2, 2, 44, 342, 3, 2, 2, 2, 46, 344, 3, 2, 2, 2, 48, 347, 3, 2, 2, 2, 50, 356, 3, 2, 2, 2, 52, 382, 3, 2, 2, 2, 54, 384, 3, 2, 2, 2, 56, 393, 3, 2, 2, 2, 58, 402, 3, 2, 2, 2, 60, 406, 3, 2, 2, 2, 62, 412, 3, 2, 2, 2, 64, 416, 3, 2, 2, 2, 66, 419, 3, 2, 2, 2, 68, 427, 3, 2, 2, 2, 70, 431, 3, 2, 2, 2, 72, 435, 3, 2, 2, 2, 74, 438, 3, 2, 2, 2, 76, 443, 3, 2, 2, 2, 78, 447, 3, 2, 2, 2, 80, 449, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 457, 3, 2, 2, 2, 86, 477, 3, 2, 2, 2, 88, 89, 5, 4, 3, 2, 89, 90, 7, 2, 2, 3, 90, 3, 3, 2, 2, 2, 91, 92, 8, 3, 1, 2, 92, 93, 5, 6, 4, 2, 93, 99, 3, 2, 2, 2, 94, 95, 12, 3, 2, 2, 95, 96, 7, 23, 2, 2, 96, 98, 5, 8, 5, 2, 97, 94, 3, 2, 2, 2, 98, 101, 3, 2, 2, 2, 99, 97, 3, 2, 2, 2, 99, 100, 3, 2, 2, 2, 100, 5, 3, 2, 2, 2, 101, 99, 3, 2, 2, 2, 102, 106, 5, 28, 15, 2, 103, 106, 5, 22, 12, 2, 104, 106, 5, 82, 42, 2, 105, 102, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 105, 104, 3, 2, 2, 2, 106, 7, 3, 2, 2, 2, 107, 120, 5, 32, 17, 2, 108, 120, 5, 46, 24, 2, 109, 120, 5, 52, 27, 2, 110, 120, 5, 48, 25, 2, 111, 120, 5, 34, 18, 2, 112, 120, 5, 10, 6, 2, 113, 120, 5, 54, 28, 2, 114, 120, 5, 56, 29, 2, 115, 120, 5, 60, 31, 2, 116, 120, 5, 62, 32, 2, 117, 120, 5, 84, 43, 2, 118, 120, 5, 64, 33, 2, 119, 107, 3, 2, 2, 2, 119, 108, 3, 2, 2, 2, 119, 109, 3, 2, 2, 2, 119, 110, 3, 2, 2, 2, 119, 111, 3, 2, 2, 2, 119, 112, 3, 2, 2, 2, 119, 113, 3, 2, 2, 2, 119, 114, 3, 2, 2, 2, 119, 115, 3, 2, 2, 2, 119, 116, 3, 2, 2, 2, 119, 117, 3, 2, 2, 2, 119, 118, 3, 2, 2, 2, 120, 9, 3, 2, 2, 2, 121, 122, 7, 18, 2, 2, 122, 123, 5, 12, 7, 2, 123, 11, 3, 2, 2, 2, 124, 125, 8, 7, 1, 2, 125, 126, 7, 41, 2, 2, 126, 153, 5, 12, 7, 9, 127, 153, 5, 16, 9, 2, 128, 153, 5, 14, 8, 2, 129, 131, 5, 16, 9, 2, 130, 132, 7, 41, 2, 2, 131, 130, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 133, 3, 2, 2, 2, 133, 134, 7, 38, 2, 2, 134, 135, 7, 37, 2, 2, 135, 140, 5, 16, 9, 2, 136, 137, 7, 31, 2, 2, 137, 139, 5, 16, 9, 2, 138, 136, 3, 2, 2, 2, 139, 142, 3, 2, 2, 2, 140, 138, 3, 2, 2, 2, 140, 141, 3, 2, 2, 2, 141, 143, 3, 2, 2, 2, 142, 140, 3, 2, 2, 2, 143, 144, 7, 47, 2, 2, 144, 153, 3, 2, 2, 2, 145, 146, 5, 16, 9, 2, 146, 148, 7, 39, 2, 2, 147, 149, 7, 41, 2, 2, 148, 147, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 7, 42, 2, 2, 151, 153, 3, 2, 2, 2, 152, 124, 3, 2, 2, 2, 152, 127, 3, 2, 2, 2, 152, 128, 3, 2, 2, 2, 152, 129, 3, 2, 2, 2, 152, 145, 3, 2, 2, 2, 153, 162, 3, 2, 2, 2, 154, 155, 12, 6, 2, 2, 155, 156, 7, 28, 2, 2, 156, 161, 5, 12, 7, 7, 157, 158, 12, 5, 2, 2, 158, 159, 7, 44, 2, 2, 159, 161, 5, 12, 7, 6, 160, 154, 3, 2, 2, 2, 160, 157, 3, 2, 2, 2, 161, 164, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 13, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 165, 167, 5, 16, 9, 2, 166, 168, 7, 41, 2, 2, 167, 166, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 3, 2, 2, 2, 169, 170, 7, 40, 2, 2, 170, 171, 5, 78, 40, 2, 171, 180, 3, 2, 2, 2, 172, 174, 5, 16, 9, 2, 173, 175, 7, 41, 2, 2, 174, 173, 3, 2, 2, 2, 174, 175, 3, 2, 2, 2, 175, 176, 3, 2, 2, 2, 176, 177, 7, 46, 2, 2, 177, 178, 5, 78, 40, 2, 178, 180, 3, 2, 2, 2, 179, 165, 3, 2, 2, 2, 179, 172, 3, 2, 2, 2, 180, 15, 3, 2, 2, 2, 181, 187, 5, 18, 10, 2, 182, 183, 5, 18, 10, 2, 183, 184, 5, 80, 41, 2, 184, 185, 5, 18, 10, 2, 185, 187, 3, 2, 2, 2, 186, 181, 3, 2, 2, 2, 186, 182, 3, 2, 2, 2, 187, 17, 3, 2, 2, 2, 188, 189, 8, 10, 1, 2, 189, 193, 5, 20, 11, 2, 190, 191, 9, 2, 2, 2, 191, 193, 5, 18, 10, 5, 192, 188, 3, 2, 2, 2, 192, 190, 3, 2, 2, 2, 193, 202, 3, 2, 2, 2, 194, 195, 12, 4, 2, 2, 195, 196, 9, 3, 2, 2, 196, 201, 5, 18, 10, 5, 197, 198, 12, 3, 2, 2, 198, 199, 9, 2, 2, 2, 199, 201, 5, 18, 10, 4, 200, 194, 3, 2, 2, 2, 200, 197, 3, 2, 2, 2, 201, 204, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 19, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 205, 226, 5, 44, 23, 2, 206, 226, 5, 40, 21, 2, 207, 208, 7, 37, 2, 2, 208, 209, 5, 12, 7, 2, 209, 210, 7, 47, 2, 2, 210, 226, 3, 2, 2, 2, 211, 212, 5, 42, 22, 2, 212, 221, 7, 37, 2, 2, 213, 218, 5, 12, 7, 2, 214, 215, 7, 31, 2, 2, 215, 217, 5, 12, 7, 2, 216, 214, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 213, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 223, 3, 2, 2, 2, 223, 224, 7, 47, 2, 2, 224, 226, 3, 2, 2, 2, 225, 205, 3, 2, 2, 2, 225, 206, 3, 2, 2, 2, 225, 207, 3, 2, 2, 2, 225, 211, 3, 2, 2, 2, 226, 21, 3, 2, 2, 2, 227, 228, 7, 14, 2, 2, 228, 229, 5, 24, 13, 2, 229, 23, 3, 2, 2, 2, 230, 235, 5, 26, 14, 2, 231, 232, 7, 31, 2, 2, 232, 234, 5, 26, 14, 2, 233, 231, 3, 2, 2, 2, 234, 237, 3, 2, 2, 2, 235, 233, 3, 2, 2, 2, 235, 236, 3, 2, 2, 2, 236, 25, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 244, 5, 12, 7, 2, 239, 240, 5, 40, 21, 2, 240, 241, 7, 30, 2, 2, 241, 242, 5, 12, 7, 2, 242, 244, 3, 2, 2, 2, 243, 238, 3, 2, 2, 2, 243, 239, 3, 2, 2, 2, 244, 27, 3, 2, 2, 2, 245, 246, 7, 7, 2, 2, 246, 251, 5, 38, 20, 2, 247, 248, 7, 31, 2, 2, 248, 250, 5, 38, 20, 2, 249, 247, 3, 2, 2, 2, 250, 253, 3, 2, 2, 2, 251, 249, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 255, 3, 2, 2, 2, 253, 251, 3, 2, 2, 2, 254, 256, 5, 30, 16, 2, 255, 254, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 29, 3, 2, 2, 2, 257, 258, 7, 63, 2, 2, 258, 259, 7, 71, 2, 2, 259, 264, 5, 38, 20, 2, 260, 261, 7, 31, 2, 2, 261, 263, 5, 38, 20, 2, 262, 260, 3, 2, 2, 2, 263, 266, 3, 2, 2, 2, 264, 262, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 267, 3, 2, 2, 2, 266, 264, 3, 2, 2, 2, 267, 268, 7, 64, 2, 2, 268, 31, 3, 2, 2, 2, 269, 270, 7, 6, 2, 2, 270, 271, 5, 24, 13, 2, 271, 33, 3, 2, 2, 2, 272, 274, 7, 17, 2, 2, 273, 275, 5, 24, 13, 2, 274, 273, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 278, 3, 2, 2, 2, 276, 277, 7, 27, 2, 2, 277, 279, 5, 36, 19, 2, 278, 276, 3, 2, 2, 2, 278, 279, 3, 2, 2, 2, 279, 35, 3, 2, 2, 2, 280, 285, 5, 40, 21, 2, 281, 282, 7, 31, 2, 2, 282, 284, 5, 40, 21, 2, 283, 281, 3, 2, 2, 2, 284, 287, 3, 2, 2, 2, 285, 283, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 37, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 288, 289, 9, 4, 2, 2, 289, 39, 3, 2, 2, 2, 290, 295, 5, 42, 22, 2, 291, 292, 7, 33, 2, 2, 292, 294, 5, 42, 22, 2, 293, 291, 3, 2, 2, 2, 294, 297, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 295, 296, 3, 2, 2, 2, 296, 41, 3, 2, 2, 2, 297, 295, 3, 2, 2, 2, 298, 299, 9, 5, 2, 2, 299, 43, 3, 2, 2, 2, 300, 343, 7, 42, 2, 2, 301, 302, 5, 76, 39, 2, 302, 303, 7, 65, 2, 2, 303, 343, 3, 2, 2, 2, 304, 343, 5, 74, 38, 2, 305, 343, 5, 76, 39, 2, 306, 343, 5, 70, 36, 2, 307, 343, 7, 45, 2, 2, 308, 343, 5, 78, 40, 2, 309, 310, 7, 63, 2, 2, 310, 315, 5, 72, 37, 2, 311, 312, 7, 31, 2, 2, 312, 314, 5, 72, 37, 2, 313, 311, 3, 2, 2, 2, 314, 317, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 315, 316, 3, 2, 2, 2, 316, 318, 3, 2, 2, 2, 317, 315, 3, 2, 2, 2, 318, 319, 7, 64, 2, 2, 319, 343, 3, 2, 2, 2, 320, 321, 7, 63, 2, 2, 321, 326, 5, 70, 36, 2, 322, 323, 7, 31, 2, 2, 323, 325, 5, 70, 36, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 329, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 7, 64, 2, 2, 330, 343, 3, 2, 2, 2, 331, 332, 7, 63, 2, 2, 332, 337, 5, 78, 40, 2, 333, 334, 7, 31, 2, 2, 334, 336, 5, 78, 40, 2, 335, 333, 3, 2, 2, 2, 336, 339, 3, 2, 2, 2, 337, 335, 3, 2, 2, 2, 337, 338, 3, 2, 2, 2, 338, 340, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 340, 341, 7, 64, 2, 2, 341, 343, 3, 2, 2, 2, 342, 300, 3, 2, 2, 2, 342, 301, 3, 2, 2, 2, 342, 304, 3, 2, 2, 2, 342, 305, 3, 2, 2, 2, 342, 306, 3, 2, 2, 2, 342, 307, 3, 2, 2, 2, 342, 308, 3, 2, 2, 2, 342, 309, 3, 2, 2, 2, 342, 320, 3, 2, 2, 2, 342, 331, 3, 2, 2, 2, 343, 45, 3, 2, 2, 2, 344, 345, 7, 10, 2, 2, 345, 346, 7, 25, 2, 2, 346, 47, 3, 2, 2, 2, 347, 348, 7, 16, 2, 2, 348, 353, 5, 50, 26, 2, 349, 350, 7, 31, 2, 2, 350, 352, 5, 50, 26, 2, 351, 349, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 49, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 356, 358, 5, 12, 7, 2, 357, 359, 9, 6, 2, 2, 358, 357, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 362, 3, 2, 2, 2, 360, 361, 7, 43, 2, 2, 361, 363, 9, 7, 2, 2, 362, 360, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 51, 3, 2, 2, 2, 364, 365, 7, 9, 2, 2, 365, 370, 5, 38, 20, 2, 366, 367, 7, 31, 2, 2, 367, 369, 5, 38, 20, 2, 368, 366, 3, 2, 2, 2, 369, 372, 3, 2, 2, 2, 370, 368, 3, 2, 2, 2, 370, 371, 3, 2, 2, 2, 371, 383, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 373, 374, 7, 12, 2, 2, 374, 379, 5, 38, 20, 2, 375, 376, 7, 31, 2, 2, 376, 378, 5, 38, 20, 2, 377, 375, 3, 2, 2, 2, 378, 381, 3, 2, 2, 2, 379, 377, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 383, 3, 2, 2, 2, 381, 379, 3, 2, 2, 2, 382, 364, 3, 2, 2, 2, 382, 373, 3, 2, 2, 2, 383, 53, 3, 2, 2, 2, 384, 385, 7, 4, 2, 2, 385, 390, 5, 38, 20, 2, 386, 387, 7, 31, 2, 2, 387, 389, 5, 38, 20, 2, 388, 386, 3, 2, 2, 2, 389, 392, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 55, 3, 2, 2, 2, 392, 390, 3, 2, 2, 2, 393, 394, 7, 13, 2, 2, 394, 399, 5, 58, 30, 2, 395, 396, 7, 31, 2, 2, 396, 398, 5, 58, 30, 2, 397, 395, 3, 2, 2, 2, 398, 401, 3, 2, 2, 2, 399, 397, 3, 2, 2, 2, 399, 400, 3, 2, 2, 2, 400, 57, 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 402, 403, 5, 38, 20, 2, 403, 404, 7, 70, 2, 2, 404, 405, 5, 38, 20, 2, 405, 59, 3, 2, 2, 2, 406, 407, 7, 3, 2, 2, 407, 408, 5, 20, 11, 2, 408, 410, 5, 78, 40, 2, 409, 411, 5, 66, 34, 2, 410, 409, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, 61, 3, 2, 2, 2, 412, 413, 7, 8, 2, 2, 413, 414, 5, 20, 11, 2, 414, 415, 5, 78, 40, 2, 415, 63, 3, 2, 2, 2, 416, 417, 7, 11, 2, 2, 417, 418, 5, 38, 20, 2, 418, 65, 3, 2, 2, 2, 419, 424, 5, 68, 35, 2, 420, 421, 7, 31, 2, 2, 421, 423, 5, 68, 35, 2, 422, 420, 3, 2, 2, 2, 423, 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 67, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 428, 5, 42, 22, 2, 428, 429, 7, 30, 2, 2, 429, 430, 5, 44, 23, 2, 430, 69, 3, 2, 2, 2, 431, 432, 9, 8, 2, 2, 432, 71, 3, 2, 2, 2, 433, 436, 5, 74, 38, 2, 434, 436, 5, 76, 39, 2, 435, 433, 3, 2, 2, 2, 435, 434, 3, 2, 2, 2, 436, 73, 3, 2, 2, 2, 437, 439, 9, 2, 2, 2, 438, 437, 3, 2, 2, 2, 438, 439, 3, 2, 2, 2, 439, 440, 3, 2, 2, 2, 440, 441, 7, 26, 2, 2, 441, 75, 3, 2, 2, 2, 442, 444, 9, 2, 2, 2, 443, 442, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 445, 3, 2, 2, 2, 445, 446, 7, 25, 2, 2, 446, 77, 3, 2, 2, 2, 447, 448, 7, 24, 2, 2, 448, 79, 3, 2, 2, 2, 449, 450, 9, 9, 2, 2, 450, 81, 3, 2, 2, 2, 451, 452, 7, 15, 2, 2, 452, 456, 7, 49, 2, 2, 453, 454, 7, 15, 2, 2, 454, 456, 7, 50, 2, 2, 455, 451, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 456, 83, 3, 2, 2, 2, 457, 458, 7, 5, 2, 2, 458, 461, 5, 38, 20, 2, 459, 460, 7, 72, 2, 2, 460, 462, 5, 38, 20, 2, 461, 459, 3, 2, 2, 2, 461, 462, 3, 2, 2, 2, 462, 472, 3, 2, 2, 2, 463, 464, 7, 73, 2, 2, 464, 469, 5, 86, 44, 2, 465, 466, 7, 31, 2, 2, 466, 468, 5, 86, 44, 2, 467, 465, 3, 2, 2, 2, 468, 471, 3, 2, 2, 2, 469, 467, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 473, 3, 2, 2, 2, 471, 469, 3, 2, 2, 2, 472, 463, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 85, 3, 2, 2, 2, 474, 475, 5, 38, 20, 2, 475, 476, 7, 30, 2, 2, 476, 478, 3, 2, 2, 2, 477, 474, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 480, 5, 38, 20, 2, 480, 87, 3, 2, 2, 2, 52, 99, 105, 119, 131, 140, 148, 152, 160, 162, 167, 174, 179, 186, 192, 200, 202, 218, 221, 225, 235, 243, 251, 255, 264, 274, 278, 285, 295, 315, 326, 337, 342, 353, 358, 362, 370, 379, 382, 390, 399, 410, 424, 435, 438, 443, 455, 461, 469, 472, 477] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 78, 486, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 100, 10, 3, 12, 3, 14, 3, 103, 11, 3, 3, 4, 3, 4, 3, 4, 5, 4, 108, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 122, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 134, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 141, 10, 7, 12, 7, 14, 7, 144, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 151, 10, 7, 3, 7, 3, 7, 5, 7, 155, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 163, 10, 7, 12, 7, 14, 7, 166, 11, 7, 3, 8, 3, 8, 5, 8, 170, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 177, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 182, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 189, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 195, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 203, 10, 10, 12, 10, 14, 10, 206, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 215, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 223, 10, 12, 12, 12, 14, 12, 226, 11, 12, 5, 12, 228, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 238, 10, 14, 12, 14, 14, 14, 241, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 248, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 254, 10, 16, 12, 16, 14, 16, 257, 11, 16, 3, 16, 5, 16, 260, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 267, 10, 17, 12, 17, 14, 17, 270, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 279, 10, 19, 3, 19, 3, 19, 5, 19, 283, 10, 19, 3, 20, 3, 20, 3, 20, 7, 20, 288, 10, 20, 12, 20, 14, 20, 291, 11, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 7, 22, 298, 10, 22, 12, 22, 14, 22, 301, 11, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 318, 10, 24, 12, 24, 14, 24, 321, 11, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 329, 10, 24, 12, 24, 14, 24, 332, 11, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 340, 10, 24, 12, 24, 14, 24, 343, 11, 24, 3, 24, 3, 24, 5, 24, 347, 10, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 7, 26, 356, 10, 26, 12, 26, 14, 26, 359, 11, 26, 3, 27, 3, 27, 5, 27, 363, 10, 27, 3, 27, 3, 27, 5, 27, 367, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 373, 10, 28, 12, 28, 14, 28, 376, 11, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 382, 10, 28, 12, 28, 14, 28, 385, 11, 28, 5, 28, 387, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 393, 10, 29, 12, 29, 14, 29, 396, 11, 29, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 402, 10, 30, 12, 30, 14, 30, 405, 11, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 415, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 7, 35, 427, 10, 35, 12, 35, 14, 35, 430, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 5, 38, 440, 10, 38, 3, 39, 5, 39, 443, 10, 39, 3, 39, 3, 39, 3, 40, 5, 40, 448, 10, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 466, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 472, 10, 44, 12, 44, 14, 44, 475, 11, 44, 5, 44, 477, 10, 44, 3, 45, 3, 45, 3, 45, 5, 45, 482, 10, 45, 3, 45, 3, 45, 3, 45, 2, 2, 5, 4, 12, 18, 46, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 2, 10, 3, 2, 58, 59, 3, 2, 60, 62, 3, 2, 74, 75, 3, 2, 65, 66, 4, 2, 29, 29, 32, 32, 3, 2, 35, 36, 4, 2, 34, 34, 48, 48, 3, 2, 52, 57, 2, 516, 2, 90, 3, 2, 2, 2, 4, 93, 3, 2, 2, 2, 6, 107, 3, 2, 2, 2, 8, 121, 3, 2, 2, 2, 10, 123, 3, 2, 2, 2, 12, 154, 3, 2, 2, 2, 14, 181, 3, 2, 2, 2, 16, 188, 3, 2, 2, 2, 18, 194, 3, 2, 2, 2, 20, 214, 3, 2, 2, 2, 22, 216, 3, 2, 2, 2, 24, 231, 3, 2, 2, 2, 26, 234, 3, 2, 2, 2, 28, 247, 3, 2, 2, 2, 30, 249, 3, 2, 2, 2, 32, 261, 3, 2, 2, 2, 34, 273, 3, 2, 2, 2, 36, 276, 3, 2, 2, 2, 38, 284, 3, 2, 2, 2, 40, 292, 3, 2, 2, 2, 42, 294, 3, 2, 2, 2, 44, 302, 3, 2, 2, 2, 46, 346, 3, 2, 2, 2, 48, 348, 3, 2, 2, 2, 50, 351, 3, 2, 2, 2, 52, 360, 3, 2, 2, 2, 54, 386, 3, 2, 2, 2, 56, 388, 3, 2, 2, 2, 58, 397, 3, 2, 2, 2, 60, 406, 3, 2, 2, 2, 62, 410, 3, 2, 2, 2, 64, 416, 3, 2, 2, 2, 66, 420, 3, 2, 2, 2, 68, 423, 3, 2, 2, 2, 70, 431, 3, 2, 2, 2, 72, 435, 3, 2, 2, 2, 74, 439, 3, 2, 2, 2, 76, 442, 3, 2, 2, 2, 78, 447, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 453, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 461, 3, 2, 2, 2, 88, 481, 3, 2, 2, 2, 90, 91, 5, 4, 3, 2, 91, 92, 7, 2, 2, 3, 92, 3, 3, 2, 2, 2, 93, 94, 8, 3, 1, 2, 94, 95, 5, 6, 4, 2, 95, 101, 3, 2, 2, 2, 96, 97, 12, 3, 2, 2, 97, 98, 7, 23, 2, 2, 98, 100, 5, 8, 5, 2, 99, 96, 3, 2, 2, 2, 100, 103, 3, 2, 2, 2, 101, 99, 3, 2, 2, 2, 101, 102, 3, 2, 2, 2, 102, 5, 3, 2, 2, 2, 103, 101, 3, 2, 2, 2, 104, 108, 5, 30, 16, 2, 105, 108, 5, 24, 13, 2, 106, 108, 5, 84, 43, 2, 107, 104, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 107, 106, 3, 2, 2, 2, 108, 7, 3, 2, 2, 2, 109, 122, 5, 34, 18, 2, 110, 122, 5, 48, 25, 2, 111, 122, 5, 54, 28, 2, 112, 122, 5, 50, 26, 2, 113, 122, 5, 36, 19, 2, 114, 122, 5, 10, 6, 2, 115, 122, 5, 56, 29, 2, 116, 122, 5, 58, 30, 2, 117, 122, 5, 62, 32, 2, 118, 122, 5, 64, 33, 2, 119, 122, 5, 86, 44, 2, 120, 122, 5, 66, 34, 2, 121, 109, 3, 2, 2, 2, 121, 110, 3, 2, 2, 2, 121, 111, 3, 2, 2, 2, 121, 112, 3, 2, 2, 2, 121, 113, 3, 2, 2, 2, 121, 114, 3, 2, 2, 2, 121, 115, 3, 2, 2, 2, 121, 116, 3, 2, 2, 2, 121, 117, 3, 2, 2, 2, 121, 118, 3, 2, 2, 2, 121, 119, 3, 2, 2, 2, 121, 120, 3, 2, 2, 2, 122, 9, 3, 2, 2, 2, 123, 124, 7, 18, 2, 2, 124, 125, 5, 12, 7, 2, 125, 11, 3, 2, 2, 2, 126, 127, 8, 7, 1, 2, 127, 128, 7, 41, 2, 2, 128, 155, 5, 12, 7, 9, 129, 155, 5, 16, 9, 2, 130, 155, 5, 14, 8, 2, 131, 133, 5, 16, 9, 2, 132, 134, 7, 41, 2, 2, 133, 132, 3, 2, 2, 2, 133, 134, 3, 2, 2, 2, 134, 135, 3, 2, 2, 2, 135, 136, 7, 38, 2, 2, 136, 137, 7, 37, 2, 2, 137, 142, 5, 16, 9, 2, 138, 139, 7, 31, 2, 2, 139, 141, 5, 16, 9, 2, 140, 138, 3, 2, 2, 2, 141, 144, 3, 2, 2, 2, 142, 140, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 145, 3, 2, 2, 2, 144, 142, 3, 2, 2, 2, 145, 146, 7, 47, 2, 2, 146, 155, 3, 2, 2, 2, 147, 148, 5, 16, 9, 2, 148, 150, 7, 39, 2, 2, 149, 151, 7, 41, 2, 2, 150, 149, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 3, 2, 2, 2, 152, 153, 7, 42, 2, 2, 153, 155, 3, 2, 2, 2, 154, 126, 3, 2, 2, 2, 154, 129, 3, 2, 2, 2, 154, 130, 3, 2, 2, 2, 154, 131, 3, 2, 2, 2, 154, 147, 3, 2, 2, 2, 155, 164, 3, 2, 2, 2, 156, 157, 12, 6, 2, 2, 157, 158, 7, 28, 2, 2, 158, 163, 5, 12, 7, 7, 159, 160, 12, 5, 2, 2, 160, 161, 7, 44, 2, 2, 161, 163, 5, 12, 7, 6, 162, 156, 3, 2, 2, 2, 162, 159, 3, 2, 2, 2, 163, 166, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 13, 3, 2, 2, 2, 166, 164, 3, 2, 2, 2, 167, 169, 5, 16, 9, 2, 168, 170, 7, 41, 2, 2, 169, 168, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 172, 7, 40, 2, 2, 172, 173, 5, 80, 41, 2, 173, 182, 3, 2, 2, 2, 174, 176, 5, 16, 9, 2, 175, 177, 7, 41, 2, 2, 176, 175, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 178, 3, 2, 2, 2, 178, 179, 7, 46, 2, 2, 179, 180, 5, 80, 41, 2, 180, 182, 3, 2, 2, 2, 181, 167, 3, 2, 2, 2, 181, 174, 3, 2, 2, 2, 182, 15, 3, 2, 2, 2, 183, 189, 5, 18, 10, 2, 184, 185, 5, 18, 10, 2, 185, 186, 5, 82, 42, 2, 186, 187, 5, 18, 10, 2, 187, 189, 3, 2, 2, 2, 188, 183, 3, 2, 2, 2, 188, 184, 3, 2, 2, 2, 189, 17, 3, 2, 2, 2, 190, 191, 8, 10, 1, 2, 191, 195, 5, 20, 11, 2, 192, 193, 9, 2, 2, 2, 193, 195, 5, 18, 10, 5, 194, 190, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 195, 204, 3, 2, 2, 2, 196, 197, 12, 4, 2, 2, 197, 198, 9, 3, 2, 2, 198, 203, 5, 18, 10, 5, 199, 200, 12, 3, 2, 2, 200, 201, 9, 2, 2, 2, 201, 203, 5, 18, 10, 4, 202, 196, 3, 2, 2, 2, 202, 199, 3, 2, 2, 2, 203, 206, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 19, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 207, 215, 5, 46, 24, 2, 208, 215, 5, 42, 22, 2, 209, 215, 5, 22, 12, 2, 210, 211, 7, 37, 2, 2, 211, 212, 5, 12, 7, 2, 212, 213, 7, 47, 2, 2, 213, 215, 3, 2, 2, 2, 214, 207, 3, 2, 2, 2, 214, 208, 3, 2, 2, 2, 214, 209, 3, 2, 2, 2, 214, 210, 3, 2, 2, 2, 215, 21, 3, 2, 2, 2, 216, 217, 5, 44, 23, 2, 217, 227, 7, 37, 2, 2, 218, 228, 7, 60, 2, 2, 219, 224, 5, 12, 7, 2, 220, 221, 7, 31, 2, 2, 221, 223, 5, 12, 7, 2, 222, 220, 3, 2, 2, 2, 223, 226, 3, 2, 2, 2, 224, 222, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 228, 3, 2, 2, 2, 226, 224, 3, 2, 2, 2, 227, 218, 3, 2, 2, 2, 227, 219, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 230, 7, 47, 2, 2, 230, 23, 3, 2, 2, 2, 231, 232, 7, 14, 2, 2, 232, 233, 5, 26, 14, 2, 233, 25, 3, 2, 2, 2, 234, 239, 5, 28, 15, 2, 235, 236, 7, 31, 2, 2, 236, 238, 5, 28, 15, 2, 237, 235, 3, 2, 2, 2, 238, 241, 3, 2, 2, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 27, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 242, 248, 5, 12, 7, 2, 243, 244, 5, 42, 22, 2, 244, 245, 7, 30, 2, 2, 245, 246, 5, 12, 7, 2, 246, 248, 3, 2, 2, 2, 247, 242, 3, 2, 2, 2, 247, 243, 3, 2, 2, 2, 248, 29, 3, 2, 2, 2, 249, 250, 7, 7, 2, 2, 250, 255, 5, 40, 21, 2, 251, 252, 7, 31, 2, 2, 252, 254, 5, 40, 21, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 259, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 260, 5, 32, 17, 2, 259, 258, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 31, 3, 2, 2, 2, 261, 262, 7, 63, 2, 2, 262, 263, 7, 71, 2, 2, 263, 268, 5, 40, 21, 2, 264, 265, 7, 31, 2, 2, 265, 267, 5, 40, 21, 2, 266, 264, 3, 2, 2, 2, 267, 270, 3, 2, 2, 2, 268, 266, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 271, 3, 2, 2, 2, 270, 268, 3, 2, 2, 2, 271, 272, 7, 64, 2, 2, 272, 33, 3, 2, 2, 2, 273, 274, 7, 6, 2, 2, 274, 275, 5, 26, 14, 2, 275, 35, 3, 2, 2, 2, 276, 278, 7, 17, 2, 2, 277, 279, 5, 26, 14, 2, 278, 277, 3, 2, 2, 2, 278, 279, 3, 2, 2, 2, 279, 282, 3, 2, 2, 2, 280, 281, 7, 27, 2, 2, 281, 283, 5, 38, 20, 2, 282, 280, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 37, 3, 2, 2, 2, 284, 289, 5, 42, 22, 2, 285, 286, 7, 31, 2, 2, 286, 288, 5, 42, 22, 2, 287, 285, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 39, 3, 2, 2, 2, 291, 289, 3, 2, 2, 2, 292, 293, 9, 4, 2, 2, 293, 41, 3, 2, 2, 2, 294, 299, 5, 44, 23, 2, 295, 296, 7, 33, 2, 2, 296, 298, 5, 44, 23, 2, 297, 295, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 43, 3, 2, 2, 2, 301, 299, 3, 2, 2, 2, 302, 303, 9, 5, 2, 2, 303, 45, 3, 2, 2, 2, 304, 347, 7, 42, 2, 2, 305, 306, 5, 78, 40, 2, 306, 307, 7, 65, 2, 2, 307, 347, 3, 2, 2, 2, 308, 347, 5, 76, 39, 2, 309, 347, 5, 78, 40, 2, 310, 347, 5, 72, 37, 2, 311, 347, 7, 45, 2, 2, 312, 347, 5, 80, 41, 2, 313, 314, 7, 63, 2, 2, 314, 319, 5, 74, 38, 2, 315, 316, 7, 31, 2, 2, 316, 318, 5, 74, 38, 2, 317, 315, 3, 2, 2, 2, 318, 321, 3, 2, 2, 2, 319, 317, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 322, 3, 2, 2, 2, 321, 319, 3, 2, 2, 2, 322, 323, 7, 64, 2, 2, 323, 347, 3, 2, 2, 2, 324, 325, 7, 63, 2, 2, 325, 330, 5, 72, 37, 2, 326, 327, 7, 31, 2, 2, 327, 329, 5, 72, 37, 2, 328, 326, 3, 2, 2, 2, 329, 332, 3, 2, 2, 2, 330, 328, 3, 2, 2, 2, 330, 331, 3, 2, 2, 2, 331, 333, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 333, 334, 7, 64, 2, 2, 334, 347, 3, 2, 2, 2, 335, 336, 7, 63, 2, 2, 336, 341, 5, 80, 41, 2, 337, 338, 7, 31, 2, 2, 338, 340, 5, 80, 41, 2, 339, 337, 3, 2, 2, 2, 340, 343, 3, 2, 2, 2, 341, 339, 3, 2, 2, 2, 341, 342, 3, 2, 2, 2, 342, 344, 3, 2, 2, 2, 343, 341, 3, 2, 2, 2, 344, 345, 7, 64, 2, 2, 345, 347, 3, 2, 2, 2, 346, 304, 3, 2, 2, 2, 346, 305, 3, 2, 2, 2, 346, 308, 3, 2, 2, 2, 346, 309, 3, 2, 2, 2, 346, 310, 3, 2, 2, 2, 346, 311, 3, 2, 2, 2, 346, 312, 3, 2, 2, 2, 346, 313, 3, 2, 2, 2, 346, 324, 3, 2, 2, 2, 346, 335, 3, 2, 2, 2, 347, 47, 3, 2, 2, 2, 348, 349, 7, 10, 2, 2, 349, 350, 7, 25, 2, 2, 350, 49, 3, 2, 2, 2, 351, 352, 7, 16, 2, 2, 352, 357, 5, 52, 27, 2, 353, 354, 7, 31, 2, 2, 354, 356, 5, 52, 27, 2, 355, 353, 3, 2, 2, 2, 356, 359, 3, 2, 2, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 51, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 360, 362, 5, 12, 7, 2, 361, 363, 9, 6, 2, 2, 362, 361, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 366, 3, 2, 2, 2, 364, 365, 7, 43, 2, 2, 365, 367, 9, 7, 2, 2, 366, 364, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 53, 3, 2, 2, 2, 368, 369, 7, 9, 2, 2, 369, 374, 5, 40, 21, 2, 370, 371, 7, 31, 2, 2, 371, 373, 5, 40, 21, 2, 372, 370, 3, 2, 2, 2, 373, 376, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 374, 375, 3, 2, 2, 2, 375, 387, 3, 2, 2, 2, 376, 374, 3, 2, 2, 2, 377, 378, 7, 12, 2, 2, 378, 383, 5, 40, 21, 2, 379, 380, 7, 31, 2, 2, 380, 382, 5, 40, 21, 2, 381, 379, 3, 2, 2, 2, 382, 385, 3, 2, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 387, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 368, 3, 2, 2, 2, 386, 377, 3, 2, 2, 2, 387, 55, 3, 2, 2, 2, 388, 389, 7, 4, 2, 2, 389, 394, 5, 40, 21, 2, 390, 391, 7, 31, 2, 2, 391, 393, 5, 40, 21, 2, 392, 390, 3, 2, 2, 2, 393, 396, 3, 2, 2, 2, 394, 392, 3, 2, 2, 2, 394, 395, 3, 2, 2, 2, 395, 57, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 397, 398, 7, 13, 2, 2, 398, 403, 5, 60, 31, 2, 399, 400, 7, 31, 2, 2, 400, 402, 5, 60, 31, 2, 401, 399, 3, 2, 2, 2, 402, 405, 3, 2, 2, 2, 403, 401, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 59, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 406, 407, 5, 40, 21, 2, 407, 408, 7, 70, 2, 2, 408, 409, 5, 40, 21, 2, 409, 61, 3, 2, 2, 2, 410, 411, 7, 3, 2, 2, 411, 412, 5, 20, 11, 2, 412, 414, 5, 80, 41, 2, 413, 415, 5, 68, 35, 2, 414, 413, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 63, 3, 2, 2, 2, 416, 417, 7, 8, 2, 2, 417, 418, 5, 20, 11, 2, 418, 419, 5, 80, 41, 2, 419, 65, 3, 2, 2, 2, 420, 421, 7, 11, 2, 2, 421, 422, 5, 40, 21, 2, 422, 67, 3, 2, 2, 2, 423, 428, 5, 70, 36, 2, 424, 425, 7, 31, 2, 2, 425, 427, 5, 70, 36, 2, 426, 424, 3, 2, 2, 2, 427, 430, 3, 2, 2, 2, 428, 426, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 69, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 431, 432, 5, 44, 23, 2, 432, 433, 7, 30, 2, 2, 433, 434, 5, 46, 24, 2, 434, 71, 3, 2, 2, 2, 435, 436, 9, 8, 2, 2, 436, 73, 3, 2, 2, 2, 437, 440, 5, 76, 39, 2, 438, 440, 5, 78, 40, 2, 439, 437, 3, 2, 2, 2, 439, 438, 3, 2, 2, 2, 440, 75, 3, 2, 2, 2, 441, 443, 9, 2, 2, 2, 442, 441, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 445, 7, 26, 2, 2, 445, 77, 3, 2, 2, 2, 446, 448, 9, 2, 2, 2, 447, 446, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 450, 7, 25, 2, 2, 450, 79, 3, 2, 2, 2, 451, 452, 7, 24, 2, 2, 452, 81, 3, 2, 2, 2, 453, 454, 9, 9, 2, 2, 454, 83, 3, 2, 2, 2, 455, 456, 7, 15, 2, 2, 456, 460, 7, 49, 2, 2, 457, 458, 7, 15, 2, 2, 458, 460, 7, 50, 2, 2, 459, 455, 3, 2, 2, 2, 459, 457, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 462, 7, 5, 2, 2, 462, 465, 5, 40, 21, 2, 463, 464, 7, 72, 2, 2, 464, 466, 5, 40, 21, 2, 465, 463, 3, 2, 2, 2, 465, 466, 3, 2, 2, 2, 466, 476, 3, 2, 2, 2, 467, 468, 7, 73, 2, 2, 468, 473, 5, 88, 45, 2, 469, 470, 7, 31, 2, 2, 470, 472, 5, 88, 45, 2, 471, 469, 3, 2, 2, 2, 472, 475, 3, 2, 2, 2, 473, 471, 3, 2, 2, 2, 473, 474, 3, 2, 2, 2, 474, 477, 3, 2, 2, 2, 475, 473, 3, 2, 2, 2, 476, 467, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 87, 3, 2, 2, 2, 478, 479, 5, 40, 21, 2, 479, 480, 7, 30, 2, 2, 480, 482, 3, 2, 2, 2, 481, 478, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 484, 5, 40, 21, 2, 484, 89, 3, 2, 2, 2, 52, 101, 107, 121, 133, 142, 150, 154, 162, 164, 169, 176, 181, 188, 194, 202, 204, 214, 224, 227, 239, 247, 255, 259, 268, 278, 282, 289, 299, 319, 330, 341, 346, 357, 362, 366, 374, 383, 386, 394, 403, 414, 428, 439, 442, 447, 459, 465, 473, 476, 481] \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts index 8eb84cf496363..8e0a4ca8199b8 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts @@ -113,50 +113,51 @@ export class esql_parser extends Parser { public static readonly RULE_valueExpression = 7; public static readonly RULE_operatorExpression = 8; public static readonly RULE_primaryExpression = 9; - public static readonly RULE_rowCommand = 10; - public static readonly RULE_fields = 11; - public static readonly RULE_field = 12; - public static readonly RULE_fromCommand = 13; - public static readonly RULE_metadata = 14; - public static readonly RULE_evalCommand = 15; - public static readonly RULE_statsCommand = 16; - public static readonly RULE_grouping = 17; - public static readonly RULE_sourceIdentifier = 18; - public static readonly RULE_qualifiedName = 19; - public static readonly RULE_identifier = 20; - public static readonly RULE_constant = 21; - public static readonly RULE_limitCommand = 22; - public static readonly RULE_sortCommand = 23; - public static readonly RULE_orderExpression = 24; - public static readonly RULE_keepCommand = 25; - public static readonly RULE_dropCommand = 26; - public static readonly RULE_renameCommand = 27; - public static readonly RULE_renameClause = 28; - public static readonly RULE_dissectCommand = 29; - public static readonly RULE_grokCommand = 30; - public static readonly RULE_mvExpandCommand = 31; - public static readonly RULE_commandOptions = 32; - public static readonly RULE_commandOption = 33; - public static readonly RULE_booleanValue = 34; - public static readonly RULE_numericValue = 35; - public static readonly RULE_decimalValue = 36; - public static readonly RULE_integerValue = 37; - public static readonly RULE_string = 38; - public static readonly RULE_comparisonOperator = 39; - public static readonly RULE_showCommand = 40; - public static readonly RULE_enrichCommand = 41; - public static readonly RULE_enrichWithClause = 42; + public static readonly RULE_functionExpression = 10; + public static readonly RULE_rowCommand = 11; + public static readonly RULE_fields = 12; + public static readonly RULE_field = 13; + public static readonly RULE_fromCommand = 14; + public static readonly RULE_metadata = 15; + public static readonly RULE_evalCommand = 16; + public static readonly RULE_statsCommand = 17; + public static readonly RULE_grouping = 18; + public static readonly RULE_sourceIdentifier = 19; + public static readonly RULE_qualifiedName = 20; + public static readonly RULE_identifier = 21; + public static readonly RULE_constant = 22; + public static readonly RULE_limitCommand = 23; + public static readonly RULE_sortCommand = 24; + public static readonly RULE_orderExpression = 25; + public static readonly RULE_keepCommand = 26; + public static readonly RULE_dropCommand = 27; + public static readonly RULE_renameCommand = 28; + public static readonly RULE_renameClause = 29; + public static readonly RULE_dissectCommand = 30; + public static readonly RULE_grokCommand = 31; + public static readonly RULE_mvExpandCommand = 32; + public static readonly RULE_commandOptions = 33; + public static readonly RULE_commandOption = 34; + public static readonly RULE_booleanValue = 35; + public static readonly RULE_numericValue = 36; + public static readonly RULE_decimalValue = 37; + public static readonly RULE_integerValue = 38; + public static readonly RULE_string = 39; + public static readonly RULE_comparisonOperator = 40; + public static readonly RULE_showCommand = 41; + public static readonly RULE_enrichCommand = 42; + public static readonly RULE_enrichWithClause = 43; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", "booleanExpression", "regexBooleanExpression", "valueExpression", "operatorExpression", - "primaryExpression", "rowCommand", "fields", "field", "fromCommand", "metadata", - "evalCommand", "statsCommand", "grouping", "sourceIdentifier", "qualifiedName", - "identifier", "constant", "limitCommand", "sortCommand", "orderExpression", - "keepCommand", "dropCommand", "renameCommand", "renameClause", "dissectCommand", - "grokCommand", "mvExpandCommand", "commandOptions", "commandOption", "booleanValue", - "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator", - "showCommand", "enrichCommand", "enrichWithClause", + "primaryExpression", "functionExpression", "rowCommand", "fields", "field", + "fromCommand", "metadata", "evalCommand", "statsCommand", "grouping", + "sourceIdentifier", "qualifiedName", "identifier", "constant", "limitCommand", + "sortCommand", "orderExpression", "keepCommand", "dropCommand", "renameCommand", + "renameClause", "dissectCommand", "grokCommand", "mvExpandCommand", "commandOptions", + "commandOption", "booleanValue", "numericValue", "decimalValue", "integerValue", + "string", "comparisonOperator", "showCommand", "enrichCommand", "enrichWithClause", ]; private static readonly _LITERAL_NAMES: Array = [ @@ -213,9 +214,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 86; + this.state = 88; this.query(0); - this.state = 87; + this.state = 89; this.match(esql_parser.EOF); } } @@ -257,11 +258,11 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 90; + this.state = 92; this.sourceCommand(); } this._ctx._stop = this._input.tryLT(-1); - this.state = 97; + this.state = 99; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -274,18 +275,18 @@ export class esql_parser extends Parser { { _localctx = new CompositeQueryContext(new QueryContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_query); - this.state = 92; + this.state = 94; if (!(this.precpred(this._ctx, 1))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } - this.state = 93; + this.state = 95; this.match(esql_parser.PIPE); - this.state = 94; + this.state = 96; this.processingCommand(); } } } - this.state = 99; + this.state = 101; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); } @@ -310,27 +311,27 @@ export class esql_parser extends Parser { let _localctx: SourceCommandContext = new SourceCommandContext(this._ctx, this.state); this.enterRule(_localctx, 4, esql_parser.RULE_sourceCommand); try { - this.state = 103; + this.state = 105; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.FROM: this.enterOuterAlt(_localctx, 1); { - this.state = 100; + this.state = 102; this.fromCommand(); } break; case esql_parser.ROW: this.enterOuterAlt(_localctx, 2); { - this.state = 101; + this.state = 103; this.rowCommand(); } break; case esql_parser.SHOW: this.enterOuterAlt(_localctx, 3); { - this.state = 102; + this.state = 104; this.showCommand(); } break; @@ -357,20 +358,20 @@ export class esql_parser extends Parser { let _localctx: ProcessingCommandContext = new ProcessingCommandContext(this._ctx, this.state); this.enterRule(_localctx, 6, esql_parser.RULE_processingCommand); try { - this.state = 117; + this.state = 119; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.EVAL: this.enterOuterAlt(_localctx, 1); { - this.state = 105; + this.state = 107; this.evalCommand(); } break; case esql_parser.LIMIT: this.enterOuterAlt(_localctx, 2); { - this.state = 106; + this.state = 108; this.limitCommand(); } break; @@ -378,70 +379,70 @@ export class esql_parser extends Parser { case esql_parser.PROJECT: this.enterOuterAlt(_localctx, 3); { - this.state = 107; + this.state = 109; this.keepCommand(); } break; case esql_parser.SORT: this.enterOuterAlt(_localctx, 4); { - this.state = 108; + this.state = 110; this.sortCommand(); } break; case esql_parser.STATS: this.enterOuterAlt(_localctx, 5); { - this.state = 109; + this.state = 111; this.statsCommand(); } break; case esql_parser.WHERE: this.enterOuterAlt(_localctx, 6); { - this.state = 110; + this.state = 112; this.whereCommand(); } break; case esql_parser.DROP: this.enterOuterAlt(_localctx, 7); { - this.state = 111; + this.state = 113; this.dropCommand(); } break; case esql_parser.RENAME: this.enterOuterAlt(_localctx, 8); { - this.state = 112; + this.state = 114; this.renameCommand(); } break; case esql_parser.DISSECT: this.enterOuterAlt(_localctx, 9); { - this.state = 113; + this.state = 115; this.dissectCommand(); } break; case esql_parser.GROK: this.enterOuterAlt(_localctx, 10); { - this.state = 114; + this.state = 116; this.grokCommand(); } break; case esql_parser.ENRICH: this.enterOuterAlt(_localctx, 11); { - this.state = 115; + this.state = 117; this.enrichCommand(); } break; case esql_parser.MV_EXPAND: this.enterOuterAlt(_localctx, 12); { - this.state = 116; + this.state = 118; this.mvExpandCommand(); } break; @@ -470,9 +471,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 119; + this.state = 121; this.match(esql_parser.WHERE); - this.state = 120; + this.state = 122; this.booleanExpression(0); } } @@ -510,7 +511,7 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 150; + this.state = 152; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 6, this._ctx) ) { case 1: @@ -519,9 +520,9 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 123; + this.state = 125; this.match(esql_parser.NOT); - this.state = 124; + this.state = 126; this.booleanExpression(7); } break; @@ -531,7 +532,7 @@ export class esql_parser extends Parser { _localctx = new BooleanDefaultContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 125; + this.state = 127; this.valueExpression(); } break; @@ -541,7 +542,7 @@ export class esql_parser extends Parser { _localctx = new RegexExpressionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 126; + this.state = 128; this.regexBooleanExpression(); } break; @@ -551,41 +552,41 @@ export class esql_parser extends Parser { _localctx = new LogicalInContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 127; - this.valueExpression(); this.state = 129; + this.valueExpression(); + this.state = 131; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 128; + this.state = 130; this.match(esql_parser.NOT); } } - this.state = 131; + this.state = 133; this.match(esql_parser.IN); - this.state = 132; + this.state = 134; this.match(esql_parser.LP); - this.state = 133; + this.state = 135; this.valueExpression(); - this.state = 138; + this.state = 140; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 134; + this.state = 136; this.match(esql_parser.COMMA); - this.state = 135; + this.state = 137; this.valueExpression(); } } - this.state = 140; + this.state = 142; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 141; + this.state = 143; this.match(esql_parser.RP); } break; @@ -595,27 +596,27 @@ export class esql_parser extends Parser { _localctx = new IsNullContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 143; + this.state = 145; this.valueExpression(); - this.state = 144; - this.match(esql_parser.IS); this.state = 146; + this.match(esql_parser.IS); + this.state = 148; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 145; + this.state = 147; this.match(esql_parser.NOT); } } - this.state = 148; + this.state = 150; this.match(esql_parser.NULL); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 160; + this.state = 162; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -625,7 +626,7 @@ export class esql_parser extends Parser { } _prevctx = _localctx; { - this.state = 158; + this.state = 160; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { case 1: @@ -633,13 +634,13 @@ export class esql_parser extends Parser { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 152; + this.state = 154; if (!(this.precpred(this._ctx, 4))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 4)"); } - this.state = 153; + this.state = 155; (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.AND); - this.state = 154; + this.state = 156; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(5); } break; @@ -649,20 +650,20 @@ export class esql_parser extends Parser { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 155; + this.state = 157; if (!(this.precpred(this._ctx, 3))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 3)"); } - this.state = 156; + this.state = 158; (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.OR); - this.state = 157; + this.state = 159; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(4); } break; } } } - this.state = 162; + this.state = 164; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); } @@ -688,27 +689,27 @@ export class esql_parser extends Parser { this.enterRule(_localctx, 12, esql_parser.RULE_regexBooleanExpression); let _la: number; try { - this.state = 177; + this.state = 179; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 163; - this.valueExpression(); this.state = 165; + this.valueExpression(); + this.state = 167; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 164; + this.state = 166; this.match(esql_parser.NOT); } } - this.state = 167; + this.state = 169; _localctx._kind = this.match(esql_parser.LIKE); - this.state = 168; + this.state = 170; _localctx._pattern = this.string(); } break; @@ -716,21 +717,21 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 170; - this.valueExpression(); this.state = 172; + this.valueExpression(); + this.state = 174; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 171; + this.state = 173; this.match(esql_parser.NOT); } } - this.state = 174; + this.state = 176; _localctx._kind = this.match(esql_parser.RLIKE); - this.state = 175; + this.state = 177; _localctx._pattern = this.string(); } break; @@ -755,14 +756,14 @@ export class esql_parser extends Parser { let _localctx: ValueExpressionContext = new ValueExpressionContext(this._ctx, this.state); this.enterRule(_localctx, 14, esql_parser.RULE_valueExpression); try { - this.state = 184; + this.state = 186; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { case 1: _localctx = new ValueExpressionDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 179; + this.state = 181; this.operatorExpression(0); } break; @@ -771,11 +772,11 @@ export class esql_parser extends Parser { _localctx = new ComparisonContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 180; + this.state = 182; (_localctx as ComparisonContext)._left = this.operatorExpression(0); - this.state = 181; + this.state = 183; this.comparisonOperator(); - this.state = 182; + this.state = 184; (_localctx as ComparisonContext)._right = this.operatorExpression(0); } break; @@ -815,7 +816,7 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 190; + this.state = 192; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) { case 1: @@ -824,7 +825,7 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 187; + this.state = 189; this.primaryExpression(); } break; @@ -834,7 +835,7 @@ export class esql_parser extends Parser { _localctx = new ArithmeticUnaryContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 188; + this.state = 190; (_localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { @@ -847,13 +848,13 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 189; + this.state = 191; this.operatorExpression(3); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 200; + this.state = 202; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -863,7 +864,7 @@ export class esql_parser extends Parser { } _prevctx = _localctx; { - this.state = 198; + this.state = 200; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { case 1: @@ -871,11 +872,11 @@ export class esql_parser extends Parser { _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 192; + this.state = 194; if (!(this.precpred(this._ctx, 2))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 2)"); } - this.state = 193; + this.state = 195; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (esql_parser.ASTERISK - 58)) | (1 << (esql_parser.SLASH - 58)) | (1 << (esql_parser.PERCENT - 58)))) !== 0))) { @@ -888,7 +889,7 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 194; + this.state = 196; (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); } break; @@ -898,11 +899,11 @@ export class esql_parser extends Parser { _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 195; + this.state = 197; if (!(this.precpred(this._ctx, 1))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } - this.state = 196; + this.state = 198; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { @@ -915,14 +916,14 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 197; + this.state = 199; (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); } break; } } } - this.state = 202; + this.state = 204; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); } @@ -946,16 +947,15 @@ export class esql_parser extends Parser { public primaryExpression(): PrimaryExpressionContext { let _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state); this.enterRule(_localctx, 18, esql_parser.RULE_primaryExpression); - let _la: number; try { - this.state = 223; + this.state = 212; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 18, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 16, this._ctx) ) { case 1: _localctx = new ConstantDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 203; + this.state = 205; this.constant(); } break; @@ -964,63 +964,114 @@ export class esql_parser extends Parser { _localctx = new DereferenceContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 204; + this.state = 206; this.qualifiedName(); } break; case 3: - _localctx = new ParenthesizedExpressionContext(_localctx); + _localctx = new FunctionContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 205; - this.match(esql_parser.LP); - this.state = 206; - this.booleanExpression(0); this.state = 207; - this.match(esql_parser.RP); + this.functionExpression(); } break; case 4: - _localctx = new FunctionExpressionContext(_localctx); + _localctx = new ParenthesizedExpressionContext(_localctx); this.enterOuterAlt(_localctx, 4); { + this.state = 208; + this.match(esql_parser.LP); this.state = 209; - this.identifier(); + this.booleanExpression(0); this.state = 210; - this.match(esql_parser.LP); - this.state = 219; + this.match(esql_parser.RP); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public functionExpression(): FunctionExpressionContext { + let _localctx: FunctionExpressionContext = new FunctionExpressionContext(this._ctx, this.state); + this.enterRule(_localctx, 20, esql_parser.RULE_functionExpression); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 214; + this.identifier(); + this.state = 215; + this.match(esql_parser.LP); + this.state = 225; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case esql_parser.ASTERISK: + { + this.state = 216; + this.match(esql_parser.ASTERISK); + } + break; + case esql_parser.STRING: + case esql_parser.INTEGER_LITERAL: + case esql_parser.DECIMAL_LITERAL: + case esql_parser.FALSE: + case esql_parser.LP: + case esql_parser.NOT: + case esql_parser.NULL: + case esql_parser.PARAM: + case esql_parser.TRUE: + case esql_parser.PLUS: + case esql_parser.MINUS: + case esql_parser.OPENING_BRACKET: + case esql_parser.UNQUOTED_IDENTIFIER: + case esql_parser.QUOTED_IDENTIFIER: + { + { + this.state = 217; + this.booleanExpression(0); + this.state = 222; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 22)) & ~0x1F) === 0 && ((1 << (_la - 22)) & ((1 << (esql_parser.STRING - 22)) | (1 << (esql_parser.INTEGER_LITERAL - 22)) | (1 << (esql_parser.DECIMAL_LITERAL - 22)) | (1 << (esql_parser.FALSE - 22)) | (1 << (esql_parser.LP - 22)) | (1 << (esql_parser.NOT - 22)) | (1 << (esql_parser.NULL - 22)) | (1 << (esql_parser.PARAM - 22)) | (1 << (esql_parser.TRUE - 22)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (esql_parser.PLUS - 56)) | (1 << (esql_parser.MINUS - 56)) | (1 << (esql_parser.OPENING_BRACKET - 56)) | (1 << (esql_parser.UNQUOTED_IDENTIFIER - 56)) | (1 << (esql_parser.QUOTED_IDENTIFIER - 56)))) !== 0)) { + while (_la === esql_parser.COMMA) { { - this.state = 211; + { + this.state = 218; + this.match(esql_parser.COMMA); + this.state = 219; this.booleanExpression(0); - this.state = 216; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 212; - this.match(esql_parser.COMMA); - this.state = 213; - this.booleanExpression(0); - } - } - this.state = 218; - this._errHandler.sync(this); - _la = this._input.LA(1); } } + this.state = 224; + this._errHandler.sync(this); + _la = this._input.LA(1); } - - this.state = 221; - this.match(esql_parser.RP); } + } + break; + case esql_parser.RP: + break; + default: break; } + this.state = 227; + this.match(esql_parser.RP); + } } catch (re) { if (re instanceof RecognitionException) { @@ -1039,13 +1090,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public rowCommand(): RowCommandContext { let _localctx: RowCommandContext = new RowCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 20, esql_parser.RULE_rowCommand); + this.enterRule(_localctx, 22, esql_parser.RULE_rowCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 225; + this.state = 229; this.match(esql_parser.ROW); - this.state = 226; + this.state = 230; this.fields(); } } @@ -1066,28 +1117,28 @@ export class esql_parser extends Parser { // @RuleVersion(0) public fields(): FieldsContext { let _localctx: FieldsContext = new FieldsContext(this._ctx, this.state); - this.enterRule(_localctx, 22, esql_parser.RULE_fields); + this.enterRule(_localctx, 24, esql_parser.RULE_fields); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 228; + this.state = 232; this.field(); - this.state = 233; + this.state = 237; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 229; + this.state = 233; this.match(esql_parser.COMMA); - this.state = 230; + this.state = 234; this.field(); } } } - this.state = 235; + this.state = 239; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); } @@ -1110,15 +1161,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public field(): FieldContext { let _localctx: FieldContext = new FieldContext(this._ctx, this.state); - this.enterRule(_localctx, 24, esql_parser.RULE_field); + this.enterRule(_localctx, 26, esql_parser.RULE_field); try { - this.state = 241; + this.state = 245; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 236; + this.state = 240; this.booleanExpression(0); } break; @@ -1126,11 +1177,11 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 237; + this.state = 241; this.qualifiedName(); - this.state = 238; + this.state = 242; this.match(esql_parser.ASSIGN); - this.state = 239; + this.state = 243; this.booleanExpression(0); } break; @@ -1153,39 +1204,39 @@ export class esql_parser extends Parser { // @RuleVersion(0) public fromCommand(): FromCommandContext { let _localctx: FromCommandContext = new FromCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 26, esql_parser.RULE_fromCommand); + this.enterRule(_localctx, 28, esql_parser.RULE_fromCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 243; + this.state = 247; this.match(esql_parser.FROM); - this.state = 244; + this.state = 248; this.sourceIdentifier(); - this.state = 249; + this.state = 253; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 245; + this.state = 249; this.match(esql_parser.COMMA); - this.state = 246; + this.state = 250; this.sourceIdentifier(); } } } - this.state = 251; + this.state = 255; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); } - this.state = 253; + this.state = 257; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { case 1: { - this.state = 252; + this.state = 256; this.metadata(); } break; @@ -1209,34 +1260,34 @@ export class esql_parser extends Parser { // @RuleVersion(0) public metadata(): MetadataContext { let _localctx: MetadataContext = new MetadataContext(this._ctx, this.state); - this.enterRule(_localctx, 28, esql_parser.RULE_metadata); + this.enterRule(_localctx, 30, esql_parser.RULE_metadata); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 255; + this.state = 259; this.match(esql_parser.OPENING_BRACKET); - this.state = 256; + this.state = 260; this.match(esql_parser.METADATA); - this.state = 257; + this.state = 261; this.sourceIdentifier(); - this.state = 262; + this.state = 266; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 258; + this.state = 262; this.match(esql_parser.COMMA); - this.state = 259; + this.state = 263; this.sourceIdentifier(); } } - this.state = 264; + this.state = 268; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 265; + this.state = 269; this.match(esql_parser.CLOSING_BRACKET); } } @@ -1257,13 +1308,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public evalCommand(): EvalCommandContext { let _localctx: EvalCommandContext = new EvalCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 30, esql_parser.RULE_evalCommand); + this.enterRule(_localctx, 32, esql_parser.RULE_evalCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 267; + this.state = 271; this.match(esql_parser.EVAL); - this.state = 268; + this.state = 272; this.fields(); } } @@ -1284,30 +1335,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public statsCommand(): StatsCommandContext { let _localctx: StatsCommandContext = new StatsCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 32, esql_parser.RULE_statsCommand); + this.enterRule(_localctx, 34, esql_parser.RULE_statsCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 270; + this.state = 274; this.match(esql_parser.STATS); - this.state = 272; + this.state = 276; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 24, this._ctx) ) { case 1: { - this.state = 271; + this.state = 275; this.fields(); } break; } - this.state = 276; + this.state = 280; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) { case 1: { - this.state = 274; + this.state = 278; this.match(esql_parser.BY); - this.state = 275; + this.state = 279; this.grouping(); } break; @@ -1331,28 +1382,28 @@ export class esql_parser extends Parser { // @RuleVersion(0) public grouping(): GroupingContext { let _localctx: GroupingContext = new GroupingContext(this._ctx, this.state); - this.enterRule(_localctx, 34, esql_parser.RULE_grouping); + this.enterRule(_localctx, 36, esql_parser.RULE_grouping); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 278; + this.state = 282; this.qualifiedName(); - this.state = 283; + this.state = 287; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 26, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 279; + this.state = 283; this.match(esql_parser.COMMA); - this.state = 280; + this.state = 284; this.qualifiedName(); } } } - this.state = 285; + this.state = 289; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 26, this._ctx); } @@ -1375,12 +1426,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public sourceIdentifier(): SourceIdentifierContext { let _localctx: SourceIdentifierContext = new SourceIdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 36, esql_parser.RULE_sourceIdentifier); + this.enterRule(_localctx, 38, esql_parser.RULE_sourceIdentifier); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 286; + this.state = 290; _la = this._input.LA(1); if (!(_la === esql_parser.SRC_UNQUOTED_IDENTIFIER || _la === esql_parser.SRC_QUOTED_IDENTIFIER)) { this._errHandler.recoverInline(this); @@ -1411,28 +1462,28 @@ export class esql_parser extends Parser { // @RuleVersion(0) public qualifiedName(): QualifiedNameContext { let _localctx: QualifiedNameContext = new QualifiedNameContext(this._ctx, this.state); - this.enterRule(_localctx, 38, esql_parser.RULE_qualifiedName); + this.enterRule(_localctx, 40, esql_parser.RULE_qualifiedName); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 288; + this.state = 292; this.identifier(); - this.state = 293; + this.state = 297; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 289; + this.state = 293; this.match(esql_parser.DOT); - this.state = 290; + this.state = 294; this.identifier(); } } } - this.state = 295; + this.state = 299; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx); } @@ -1455,12 +1506,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public identifier(): IdentifierContext { let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 40, esql_parser.RULE_identifier); + this.enterRule(_localctx, 42, esql_parser.RULE_identifier); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 296; + this.state = 300; _la = this._input.LA(1); if (!(_la === esql_parser.UNQUOTED_IDENTIFIER || _la === esql_parser.QUOTED_IDENTIFIER)) { this._errHandler.recoverInline(this); @@ -1491,17 +1542,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public constant(): ConstantContext { let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state); - this.enterRule(_localctx, 42, esql_parser.RULE_constant); + this.enterRule(_localctx, 44, esql_parser.RULE_constant); let _la: number; try { - this.state = 340; + this.state = 344; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 31, this._ctx) ) { case 1: _localctx = new NullLiteralContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 298; + this.state = 302; this.match(esql_parser.NULL); } break; @@ -1510,9 +1561,9 @@ export class esql_parser extends Parser { _localctx = new QualifiedIntegerLiteralContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 299; + this.state = 303; this.integerValue(); - this.state = 300; + this.state = 304; this.match(esql_parser.UNQUOTED_IDENTIFIER); } break; @@ -1521,7 +1572,7 @@ export class esql_parser extends Parser { _localctx = new DecimalLiteralContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 302; + this.state = 306; this.decimalValue(); } break; @@ -1530,7 +1581,7 @@ export class esql_parser extends Parser { _localctx = new IntegerLiteralContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 303; + this.state = 307; this.integerValue(); } break; @@ -1539,7 +1590,7 @@ export class esql_parser extends Parser { _localctx = new BooleanLiteralContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 304; + this.state = 308; this.booleanValue(); } break; @@ -1548,7 +1599,7 @@ export class esql_parser extends Parser { _localctx = new InputParamContext(_localctx); this.enterOuterAlt(_localctx, 6); { - this.state = 305; + this.state = 309; this.match(esql_parser.PARAM); } break; @@ -1557,7 +1608,7 @@ export class esql_parser extends Parser { _localctx = new StringLiteralContext(_localctx); this.enterOuterAlt(_localctx, 7); { - this.state = 306; + this.state = 310; this.string(); } break; @@ -1566,27 +1617,27 @@ export class esql_parser extends Parser { _localctx = new NumericArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 8); { - this.state = 307; + this.state = 311; this.match(esql_parser.OPENING_BRACKET); - this.state = 308; + this.state = 312; this.numericValue(); - this.state = 313; + this.state = 317; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 309; + this.state = 313; this.match(esql_parser.COMMA); - this.state = 310; + this.state = 314; this.numericValue(); } } - this.state = 315; + this.state = 319; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 316; + this.state = 320; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1595,27 +1646,27 @@ export class esql_parser extends Parser { _localctx = new BooleanArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 9); { - this.state = 318; + this.state = 322; this.match(esql_parser.OPENING_BRACKET); - this.state = 319; + this.state = 323; this.booleanValue(); - this.state = 324; + this.state = 328; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 320; + this.state = 324; this.match(esql_parser.COMMA); - this.state = 321; + this.state = 325; this.booleanValue(); } } - this.state = 326; + this.state = 330; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 327; + this.state = 331; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1624,27 +1675,27 @@ export class esql_parser extends Parser { _localctx = new StringArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 10); { - this.state = 329; + this.state = 333; this.match(esql_parser.OPENING_BRACKET); - this.state = 330; + this.state = 334; this.string(); - this.state = 335; + this.state = 339; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 331; + this.state = 335; this.match(esql_parser.COMMA); - this.state = 332; + this.state = 336; this.string(); } } - this.state = 337; + this.state = 341; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 338; + this.state = 342; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1667,13 +1718,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public limitCommand(): LimitCommandContext { let _localctx: LimitCommandContext = new LimitCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 44, esql_parser.RULE_limitCommand); + this.enterRule(_localctx, 46, esql_parser.RULE_limitCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 342; + this.state = 346; this.match(esql_parser.LIMIT); - this.state = 343; + this.state = 347; this.match(esql_parser.INTEGER_LITERAL); } } @@ -1694,30 +1745,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public sortCommand(): SortCommandContext { let _localctx: SortCommandContext = new SortCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 46, esql_parser.RULE_sortCommand); + this.enterRule(_localctx, 48, esql_parser.RULE_sortCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 345; + this.state = 349; this.match(esql_parser.SORT); - this.state = 346; + this.state = 350; this.orderExpression(); - this.state = 351; + this.state = 355; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 32, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 347; + this.state = 351; this.match(esql_parser.COMMA); - this.state = 348; + this.state = 352; this.orderExpression(); } } } - this.state = 353; + this.state = 357; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 32, this._ctx); } @@ -1740,19 +1791,19 @@ export class esql_parser extends Parser { // @RuleVersion(0) public orderExpression(): OrderExpressionContext { let _localctx: OrderExpressionContext = new OrderExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 48, esql_parser.RULE_orderExpression); + this.enterRule(_localctx, 50, esql_parser.RULE_orderExpression); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 354; + this.state = 358; this.booleanExpression(0); - this.state = 356; + this.state = 360; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) { case 1: { - this.state = 355; + this.state = 359; _localctx._ordering = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.ASC || _la === esql_parser.DESC)) { @@ -1768,14 +1819,14 @@ export class esql_parser extends Parser { } break; } - this.state = 360; + this.state = 364; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 34, this._ctx) ) { case 1: { - this.state = 358; + this.state = 362; this.match(esql_parser.NULLS); - this.state = 359; + this.state = 363; _localctx._nullOrdering = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.FIRST || _la === esql_parser.LAST)) { @@ -1810,34 +1861,34 @@ export class esql_parser extends Parser { // @RuleVersion(0) public keepCommand(): KeepCommandContext { let _localctx: KeepCommandContext = new KeepCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 50, esql_parser.RULE_keepCommand); + this.enterRule(_localctx, 52, esql_parser.RULE_keepCommand); try { let _alt: number; - this.state = 380; + this.state = 384; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.KEEP: this.enterOuterAlt(_localctx, 1); { - this.state = 362; + this.state = 366; this.match(esql_parser.KEEP); - this.state = 363; + this.state = 367; this.sourceIdentifier(); - this.state = 368; + this.state = 372; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 364; + this.state = 368; this.match(esql_parser.COMMA); - this.state = 365; + this.state = 369; this.sourceIdentifier(); } } } - this.state = 370; + this.state = 374; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); } @@ -1846,25 +1897,25 @@ export class esql_parser extends Parser { case esql_parser.PROJECT: this.enterOuterAlt(_localctx, 2); { - this.state = 371; + this.state = 375; this.match(esql_parser.PROJECT); - this.state = 372; + this.state = 376; this.sourceIdentifier(); - this.state = 377; + this.state = 381; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 36, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 373; + this.state = 377; this.match(esql_parser.COMMA); - this.state = 374; + this.state = 378; this.sourceIdentifier(); } } } - this.state = 379; + this.state = 383; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 36, this._ctx); } @@ -1891,30 +1942,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public dropCommand(): DropCommandContext { let _localctx: DropCommandContext = new DropCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 52, esql_parser.RULE_dropCommand); + this.enterRule(_localctx, 54, esql_parser.RULE_dropCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 382; + this.state = 386; this.match(esql_parser.DROP); - this.state = 383; + this.state = 387; this.sourceIdentifier(); - this.state = 388; + this.state = 392; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 384; + this.state = 388; this.match(esql_parser.COMMA); - this.state = 385; + this.state = 389; this.sourceIdentifier(); } } } - this.state = 390; + this.state = 394; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); } @@ -1937,30 +1988,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public renameCommand(): RenameCommandContext { let _localctx: RenameCommandContext = new RenameCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 54, esql_parser.RULE_renameCommand); + this.enterRule(_localctx, 56, esql_parser.RULE_renameCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 391; + this.state = 395; this.match(esql_parser.RENAME); - this.state = 392; + this.state = 396; this.renameClause(); - this.state = 397; + this.state = 401; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 393; + this.state = 397; this.match(esql_parser.COMMA); - this.state = 394; + this.state = 398; this.renameClause(); } } } - this.state = 399; + this.state = 403; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); } @@ -1983,15 +2034,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public renameClause(): RenameClauseContext { let _localctx: RenameClauseContext = new RenameClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 56, esql_parser.RULE_renameClause); + this.enterRule(_localctx, 58, esql_parser.RULE_renameClause); try { this.enterOuterAlt(_localctx, 1); { - this.state = 400; + this.state = 404; _localctx._oldName = this.sourceIdentifier(); - this.state = 401; + this.state = 405; this.match(esql_parser.AS); - this.state = 402; + this.state = 406; _localctx._newName = this.sourceIdentifier(); } } @@ -2012,22 +2063,22 @@ export class esql_parser extends Parser { // @RuleVersion(0) public dissectCommand(): DissectCommandContext { let _localctx: DissectCommandContext = new DissectCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 58, esql_parser.RULE_dissectCommand); + this.enterRule(_localctx, 60, esql_parser.RULE_dissectCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 404; + this.state = 408; this.match(esql_parser.DISSECT); - this.state = 405; + this.state = 409; this.primaryExpression(); - this.state = 406; + this.state = 410; this.string(); - this.state = 408; + this.state = 412; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) { case 1: { - this.state = 407; + this.state = 411; this.commandOptions(); } break; @@ -2051,15 +2102,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public grokCommand(): GrokCommandContext { let _localctx: GrokCommandContext = new GrokCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 60, esql_parser.RULE_grokCommand); + this.enterRule(_localctx, 62, esql_parser.RULE_grokCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 410; + this.state = 414; this.match(esql_parser.GROK); - this.state = 411; + this.state = 415; this.primaryExpression(); - this.state = 412; + this.state = 416; this.string(); } } @@ -2080,13 +2131,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public mvExpandCommand(): MvExpandCommandContext { let _localctx: MvExpandCommandContext = new MvExpandCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 62, esql_parser.RULE_mvExpandCommand); + this.enterRule(_localctx, 64, esql_parser.RULE_mvExpandCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 414; + this.state = 418; this.match(esql_parser.MV_EXPAND); - this.state = 415; + this.state = 419; this.sourceIdentifier(); } } @@ -2107,28 +2158,28 @@ export class esql_parser extends Parser { // @RuleVersion(0) public commandOptions(): CommandOptionsContext { let _localctx: CommandOptionsContext = new CommandOptionsContext(this._ctx, this.state); - this.enterRule(_localctx, 64, esql_parser.RULE_commandOptions); + this.enterRule(_localctx, 66, esql_parser.RULE_commandOptions); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 417; + this.state = 421; this.commandOption(); - this.state = 422; + this.state = 426; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 418; + this.state = 422; this.match(esql_parser.COMMA); - this.state = 419; + this.state = 423; this.commandOption(); } } } - this.state = 424; + this.state = 428; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); } @@ -2151,15 +2202,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public commandOption(): CommandOptionContext { let _localctx: CommandOptionContext = new CommandOptionContext(this._ctx, this.state); - this.enterRule(_localctx, 66, esql_parser.RULE_commandOption); + this.enterRule(_localctx, 68, esql_parser.RULE_commandOption); try { this.enterOuterAlt(_localctx, 1); { - this.state = 425; + this.state = 429; this.identifier(); - this.state = 426; + this.state = 430; this.match(esql_parser.ASSIGN); - this.state = 427; + this.state = 431; this.constant(); } } @@ -2180,12 +2231,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public booleanValue(): BooleanValueContext { let _localctx: BooleanValueContext = new BooleanValueContext(this._ctx, this.state); - this.enterRule(_localctx, 68, esql_parser.RULE_booleanValue); + this.enterRule(_localctx, 70, esql_parser.RULE_booleanValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 429; + this.state = 433; _la = this._input.LA(1); if (!(_la === esql_parser.FALSE || _la === esql_parser.TRUE)) { this._errHandler.recoverInline(this); @@ -2216,15 +2267,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public numericValue(): NumericValueContext { let _localctx: NumericValueContext = new NumericValueContext(this._ctx, this.state); - this.enterRule(_localctx, 70, esql_parser.RULE_numericValue); + this.enterRule(_localctx, 72, esql_parser.RULE_numericValue); try { - this.state = 433; + this.state = 437; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 431; + this.state = 435; this.decimalValue(); } break; @@ -2232,7 +2283,7 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 432; + this.state = 436; this.integerValue(); } break; @@ -2255,17 +2306,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public decimalValue(): DecimalValueContext { let _localctx: DecimalValueContext = new DecimalValueContext(this._ctx, this.state); - this.enterRule(_localctx, 72, esql_parser.RULE_decimalValue); + this.enterRule(_localctx, 74, esql_parser.RULE_decimalValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 436; + this.state = 440; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { { - this.state = 435; + this.state = 439; _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { this._errHandler.recoverInline(this); @@ -2280,7 +2331,7 @@ export class esql_parser extends Parser { } } - this.state = 438; + this.state = 442; this.match(esql_parser.DECIMAL_LITERAL); } } @@ -2301,17 +2352,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public integerValue(): IntegerValueContext { let _localctx: IntegerValueContext = new IntegerValueContext(this._ctx, this.state); - this.enterRule(_localctx, 74, esql_parser.RULE_integerValue); + this.enterRule(_localctx, 76, esql_parser.RULE_integerValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 441; + this.state = 445; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { { - this.state = 440; + this.state = 444; _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { this._errHandler.recoverInline(this); @@ -2326,7 +2377,7 @@ export class esql_parser extends Parser { } } - this.state = 443; + this.state = 447; this.match(esql_parser.INTEGER_LITERAL); } } @@ -2347,11 +2398,11 @@ export class esql_parser extends Parser { // @RuleVersion(0) public string(): StringContext { let _localctx: StringContext = new StringContext(this._ctx, this.state); - this.enterRule(_localctx, 76, esql_parser.RULE_string); + this.enterRule(_localctx, 78, esql_parser.RULE_string); try { this.enterOuterAlt(_localctx, 1); { - this.state = 445; + this.state = 449; this.match(esql_parser.STRING); } } @@ -2372,12 +2423,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public comparisonOperator(): ComparisonOperatorContext { let _localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this._ctx, this.state); - this.enterRule(_localctx, 78, esql_parser.RULE_comparisonOperator); + this.enterRule(_localctx, 80, esql_parser.RULE_comparisonOperator); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 447; + this.state = 451; _la = this._input.LA(1); if (!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & ((1 << (esql_parser.EQ - 50)) | (1 << (esql_parser.NEQ - 50)) | (1 << (esql_parser.LT - 50)) | (1 << (esql_parser.LTE - 50)) | (1 << (esql_parser.GT - 50)) | (1 << (esql_parser.GTE - 50)))) !== 0))) { this._errHandler.recoverInline(this); @@ -2408,18 +2459,18 @@ export class esql_parser extends Parser { // @RuleVersion(0) public showCommand(): ShowCommandContext { let _localctx: ShowCommandContext = new ShowCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 80, esql_parser.RULE_showCommand); + this.enterRule(_localctx, 82, esql_parser.RULE_showCommand); try { - this.state = 453; + this.state = 457; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 45, this._ctx) ) { case 1: _localctx = new ShowInfoContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 449; + this.state = 453; this.match(esql_parser.SHOW); - this.state = 450; + this.state = 454; this.match(esql_parser.INFO); } break; @@ -2428,9 +2479,9 @@ export class esql_parser extends Parser { _localctx = new ShowFunctionsContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 451; + this.state = 455; this.match(esql_parser.SHOW); - this.state = 452; + this.state = 456; this.match(esql_parser.FUNCTIONS); } break; @@ -2453,51 +2504,51 @@ export class esql_parser extends Parser { // @RuleVersion(0) public enrichCommand(): EnrichCommandContext { let _localctx: EnrichCommandContext = new EnrichCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 82, esql_parser.RULE_enrichCommand); + this.enterRule(_localctx, 84, esql_parser.RULE_enrichCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 455; + this.state = 459; this.match(esql_parser.ENRICH); - this.state = 456; + this.state = 460; _localctx._policyName = this.sourceIdentifier(); - this.state = 459; + this.state = 463; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { case 1: { - this.state = 457; + this.state = 461; this.match(esql_parser.ON); - this.state = 458; + this.state = 462; _localctx._matchField = this.sourceIdentifier(); } break; } - this.state = 470; + this.state = 474; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 461; + this.state = 465; this.match(esql_parser.WITH); - this.state = 462; + this.state = 466; this.enrichWithClause(); - this.state = 467; + this.state = 471; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 463; + this.state = 467; this.match(esql_parser.COMMA); - this.state = 464; + this.state = 468; this.enrichWithClause(); } } } - this.state = 469; + this.state = 473; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); } @@ -2523,23 +2574,23 @@ export class esql_parser extends Parser { // @RuleVersion(0) public enrichWithClause(): EnrichWithClauseContext { let _localctx: EnrichWithClauseContext = new EnrichWithClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 84, esql_parser.RULE_enrichWithClause); + this.enterRule(_localctx, 86, esql_parser.RULE_enrichWithClause); try { this.enterOuterAlt(_localctx, 1); { - this.state = 475; + this.state = 479; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) { case 1: { - this.state = 472; + this.state = 476; _localctx._newName = this.sourceIdentifier(); - this.state = 473; + this.state = 477; this.match(esql_parser.ASSIGN); } break; } - this.state = 477; + this.state = 481; _localctx._enrichField = this.sourceIdentifier(); } } @@ -2600,7 +2651,7 @@ export class esql_parser extends Parser { } public static readonly _serializedATN: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03N\u01E2\x04\x02" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03N\u01E6\x04\x02" + "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + @@ -2608,231 +2659,233 @@ export class esql_parser extends Parser { "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t+" + - "\x04,\t,\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03" + - "\x03\x03\x07\x03b\n\x03\f\x03\x0E\x03e\v\x03\x03\x04\x03\x04\x03\x04\x05" + - "\x04j\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" + - "\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05x\n\x05\x03\x06\x03\x06\x03" + - "\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07\x84" + - "\n\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07\x8B\n\x07\f\x07" + - "\x0E\x07\x8E\v\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07\x95" + - "\n\x07\x03\x07\x03\x07\x05\x07\x99\n\x07\x03\x07\x03\x07\x03\x07\x03\x07" + - "\x03\x07\x03\x07\x07\x07\xA1\n\x07\f\x07\x0E\x07\xA4\v\x07\x03\b\x03\b" + - "\x05\b\xA8\n\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\xAF\n\b\x03\b\x03\b" + - "\x03\b\x05\b\xB4\n\b\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\xBB\n\t\x03\n" + - "\x03\n\x03\n\x03\n\x05\n\xC1\n\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x07" + - "\n\xC9\n\n\f\n\x0E\n\xCC\v\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v" + - "\x03\v\x03\v\x03\v\x03\v\x07\v\xD9\n\v\f\v\x0E\v\xDC\v\v\x05\v\xDE\n\v" + - "\x03\v\x03\v\x05\v\xE2\n\v\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x07\r\xEA" + - "\n\r\f\r\x0E\r\xED\v\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x05\x0E" + - "\xF4\n\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x07\x0F\xFA\n\x0F\f\x0F\x0E" + - "\x0F\xFD\v\x0F\x03\x0F\x05\x0F\u0100\n\x0F\x03\x10\x03\x10\x03\x10\x03" + - "\x10\x03\x10\x07\x10\u0107\n\x10\f\x10\x0E\x10\u010A\v\x10\x03\x10\x03" + - "\x10\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x05\x12\u0113\n\x12\x03\x12" + - "\x03\x12\x05\x12\u0117\n\x12\x03\x13\x03\x13\x03\x13\x07\x13\u011C\n\x13" + - "\f\x13\x0E\x13\u011F\v\x13\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x07" + - "\x15\u0126\n\x15\f\x15\x0E\x15\u0129\v\x15\x03\x16\x03\x16\x03\x17\x03" + - "\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03" + - "\x17\x03\x17\x03\x17\x07\x17\u013A\n\x17\f\x17\x0E\x17\u013D\v\x17\x03" + - "\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x07\x17\u0145\n\x17\f\x17" + - "\x0E\x17\u0148\v\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x07" + - "\x17\u0150\n\x17\f\x17\x0E\x17\u0153\v\x17\x03\x17\x03\x17\x05\x17\u0157" + - "\n\x17\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19\x07\x19" + - "\u0160\n\x19\f\x19\x0E\x19\u0163\v\x19\x03\x1A\x03\x1A\x05\x1A\u0167\n" + - "\x1A\x03\x1A\x03\x1A\x05\x1A\u016B\n\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B" + - "\x07\x1B\u0171\n\x1B\f\x1B\x0E\x1B\u0174\v\x1B\x03\x1B\x03\x1B\x03\x1B" + - "\x03\x1B\x07\x1B\u017A\n\x1B\f\x1B\x0E\x1B\u017D\v\x1B\x05\x1B\u017F\n" + - "\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0185\n\x1C\f\x1C\x0E\x1C" + - "\u0188\v\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D\u018E\n\x1D\f\x1D" + - "\x0E\x1D\u0191\v\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03" + - "\x1F\x03\x1F\x05\x1F\u019B\n\x1F\x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03" + - "\"\x03\"\x03\"\x07\"\u01A7\n\"\f\"\x0E\"\u01AA\v\"\x03#\x03#\x03#\x03" + - "#\x03$\x03$\x03%\x03%\x05%\u01B4\n%\x03&\x05&\u01B7\n&\x03&\x03&\x03\'" + - "\x05\'\u01BC\n\'\x03\'\x03\'\x03(\x03(\x03)\x03)\x03*\x03*\x03*\x03*\x05" + - "*\u01C8\n*\x03+\x03+\x03+\x03+\x05+\u01CE\n+\x03+\x03+\x03+\x03+\x07+" + - "\u01D4\n+\f+\x0E+\u01D7\v+\x05+\u01D9\n+\x03,\x03,\x03,\x05,\u01DE\n," + - "\x03,\x03,\x03,\x02\x02\x05\x04\f\x12-\x02\x02\x04\x02\x06\x02\b\x02\n" + - "\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C" + + "\x04,\t,\x04-\t-\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03" + + "\x03\x03\x03\x03\x07\x03d\n\x03\f\x03\x0E\x03g\v\x03\x03\x04\x03\x04\x03" + + "\x04\x05\x04l\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" + + "\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05z\n\x05\x03\x06\x03" + + "\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05" + + "\x07\x86\n\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07\x8D\n\x07" + + "\f\x07\x0E\x07\x90\v\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07" + + "\x97\n\x07\x03\x07\x03\x07\x05\x07\x9B\n\x07\x03\x07\x03\x07\x03\x07\x03" + + "\x07\x03\x07\x03\x07\x07\x07\xA3\n\x07\f\x07\x0E\x07\xA6\v\x07\x03\b\x03" + + "\b\x05\b\xAA\n\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\xB1\n\b\x03\b\x03" + + "\b\x03\b\x05\b\xB6\n\b\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\xBD\n\t\x03" + + "\n\x03\n\x03\n\x03\n\x05\n\xC3\n\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n" + + "\x07\n\xCB\n\n\f\n\x0E\n\xCE\v\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03" + + "\v\x05\v\xD7\n\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x07\f\xDF\n\f\f\f" + + "\x0E\f\xE2\v\f\x05\f\xE4\n\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\x0E\x03" + + "\x0E\x03\x0E\x07\x0E\xEE\n\x0E\f\x0E\x0E\x0E\xF1\v\x0E\x03\x0F\x03\x0F" + + "\x03\x0F\x03\x0F\x03\x0F\x05\x0F\xF8\n\x0F\x03\x10\x03\x10\x03\x10\x03" + + "\x10\x07\x10\xFE\n\x10\f\x10\x0E\x10\u0101\v\x10\x03\x10\x05\x10\u0104" + + "\n\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x07\x11\u010B\n\x11\f\x11" + + "\x0E\x11\u010E\v\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x13\x03" + + "\x13\x05\x13\u0117\n\x13\x03\x13\x03\x13\x05\x13\u011B\n\x13\x03\x14\x03" + + "\x14\x03\x14\x07\x14\u0120\n\x14\f\x14\x0E\x14\u0123\v\x14\x03\x15\x03" + + "\x15\x03\x16\x03\x16\x03\x16\x07\x16\u012A\n\x16\f\x16\x0E\x16\u012D\v" + + "\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03" + + "\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x07\x18\u013E\n\x18" + + "\f\x18\x0E\x18\u0141\v\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03" + + "\x18\x07\x18\u0149\n\x18\f\x18\x0E\x18\u014C\v\x18\x03\x18\x03\x18\x03" + + "\x18\x03\x18\x03\x18\x03\x18\x07\x18\u0154\n\x18\f\x18\x0E\x18\u0157\v" + + "\x18\x03\x18\x03\x18\x05\x18\u015B\n\x18\x03\x19\x03\x19\x03\x19\x03\x1A" + + "\x03\x1A\x03\x1A\x03\x1A\x07\x1A\u0164\n\x1A\f\x1A\x0E\x1A\u0167\v\x1A" + + "\x03\x1B\x03\x1B\x05\x1B\u016B\n\x1B\x03\x1B\x03\x1B\x05\x1B\u016F\n\x1B" + + "\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0175\n\x1C\f\x1C\x0E\x1C\u0178" + + "\v\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u017E\n\x1C\f\x1C\x0E\x1C" + + "\u0181\v\x1C\x05\x1C\u0183\n\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D" + + "\u0189\n\x1D\f\x1D\x0E\x1D\u018C\v\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E" + + "\x07\x1E\u0192\n\x1E\f\x1E\x0E\x1E\u0195\v\x1E\x03\x1F\x03\x1F\x03\x1F" + + "\x03\x1F\x03 \x03 \x03 \x03 \x05 \u019F\n \x03!\x03!\x03!\x03!\x03\"\x03" + + "\"\x03\"\x03#\x03#\x03#\x07#\u01AB\n#\f#\x0E#\u01AE\v#\x03$\x03$\x03$" + + "\x03$\x03%\x03%\x03&\x03&\x05&\u01B8\n&\x03\'\x05\'\u01BB\n\'\x03\'\x03" + + "\'\x03(\x05(\u01C0\n(\x03(\x03(\x03)\x03)\x03*\x03*\x03+\x03+\x03+\x03" + + "+\x05+\u01CC\n+\x03,\x03,\x03,\x03,\x05,\u01D2\n,\x03,\x03,\x03,\x03," + + "\x07,\u01D8\n,\f,\x0E,\u01DB\v,\x05,\u01DD\n,\x03-\x03-\x03-\x05-\u01E2" + + "\n-\x03-\x03-\x03-\x02\x02\x05\x04\f\x12.\x02\x02\x04\x02\x06\x02\b\x02" + + "\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C" + "\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026" + "\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02" + - "R\x02T\x02V\x02\x02\n\x03\x02:;\x03\x02<>\x03\x02JK\x03\x02AB\x04\x02" + - "\x1D\x1D \x03\x02#$\x04\x02\"\"00\x03\x0249\x02\u0200\x02X\x03\x02\x02" + - "\x02\x04[\x03\x02\x02\x02\x06i\x03\x02\x02\x02\bw\x03\x02\x02\x02\ny\x03" + - "\x02\x02\x02\f\x98\x03\x02\x02\x02\x0E\xB3\x03\x02\x02\x02\x10\xBA\x03" + - "\x02\x02\x02\x12\xC0\x03\x02\x02\x02\x14\xE1\x03\x02\x02\x02\x16\xE3\x03" + - "\x02\x02\x02\x18\xE6\x03\x02\x02\x02\x1A\xF3\x03\x02\x02\x02\x1C\xF5\x03" + - "\x02\x02\x02\x1E\u0101\x03\x02\x02\x02 \u010D\x03\x02\x02\x02\"\u0110" + - "\x03\x02\x02\x02$\u0118\x03\x02\x02\x02&\u0120\x03\x02\x02\x02(\u0122" + - "\x03\x02\x02\x02*\u012A\x03\x02\x02\x02,\u0156\x03\x02\x02\x02.\u0158" + - "\x03\x02\x02\x020\u015B\x03\x02\x02\x022\u0164\x03\x02\x02\x024\u017E" + - "\x03\x02\x02\x026\u0180\x03\x02\x02\x028\u0189\x03\x02\x02\x02:\u0192" + - "\x03\x02\x02\x02<\u0196\x03\x02\x02\x02>\u019C\x03\x02\x02\x02@\u01A0" + - "\x03\x02\x02\x02B\u01A3\x03\x02\x02\x02D\u01AB\x03\x02\x02\x02F\u01AF" + - "\x03\x02\x02\x02H\u01B3\x03\x02\x02\x02J\u01B6\x03\x02\x02\x02L\u01BB" + - "\x03\x02\x02\x02N\u01BF\x03\x02\x02\x02P\u01C1\x03\x02\x02\x02R\u01C7" + - "\x03\x02\x02\x02T\u01C9\x03\x02\x02\x02V\u01DD\x03\x02\x02\x02XY\x05\x04" + - "\x03\x02YZ\x07\x02\x02\x03Z\x03\x03\x02\x02\x02[\\\b\x03\x01\x02\\]\x05" + - "\x06\x04\x02]c\x03\x02\x02\x02^_\f\x03\x02\x02_`\x07\x17\x02\x02`b\x05" + - "\b\x05\x02a^\x03\x02\x02\x02be\x03\x02\x02\x02ca\x03\x02\x02\x02cd\x03" + - "\x02\x02\x02d\x05\x03\x02\x02\x02ec\x03\x02\x02\x02fj\x05\x1C\x0F\x02" + - "gj\x05\x16\f\x02hj\x05R*\x02if\x03\x02\x02\x02ig\x03\x02\x02\x02ih\x03" + - "\x02\x02\x02j\x07\x03\x02\x02\x02kx\x05 \x11\x02lx\x05.\x18\x02mx\x05" + - "4\x1B\x02nx\x050\x19\x02ox\x05\"\x12\x02px\x05\n\x06\x02qx\x056\x1C\x02" + - "rx\x058\x1D\x02sx\x05<\x1F\x02tx\x05> \x02ux\x05T+\x02vx\x05@!\x02wk\x03" + - "\x02\x02\x02wl\x03\x02\x02\x02wm\x03\x02\x02\x02wn\x03\x02\x02\x02wo\x03" + - "\x02\x02\x02wp\x03\x02\x02\x02wq\x03\x02\x02\x02wr\x03\x02\x02\x02ws\x03" + - "\x02\x02\x02wt\x03\x02\x02\x02wu\x03\x02\x02\x02wv\x03\x02\x02\x02x\t" + - "\x03\x02\x02\x02yz\x07\x12\x02\x02z{\x05\f\x07\x02{\v\x03\x02\x02\x02" + - "|}\b\x07\x01\x02}~\x07)\x02\x02~\x99\x05\f\x07\t\x7F\x99\x05\x10\t\x02" + - "\x80\x99\x05\x0E\b\x02\x81\x83\x05\x10\t\x02\x82\x84\x07)\x02\x02\x83" + - "\x82\x03\x02\x02\x02\x83\x84\x03\x02\x02\x02\x84\x85\x03\x02\x02\x02\x85" + - "\x86\x07&\x02\x02\x86\x87\x07%\x02\x02\x87\x8C\x05\x10\t\x02\x88\x89\x07" + - "\x1F\x02\x02\x89\x8B\x05\x10\t\x02\x8A\x88\x03\x02\x02\x02\x8B\x8E\x03" + - "\x02\x02\x02\x8C\x8A\x03\x02\x02\x02\x8C\x8D\x03\x02\x02\x02\x8D\x8F\x03" + - "\x02\x02\x02\x8E\x8C\x03\x02\x02\x02\x8F\x90\x07/\x02\x02\x90\x99\x03" + - "\x02\x02\x02\x91\x92\x05\x10\t\x02\x92\x94\x07\'\x02\x02\x93\x95\x07)" + - "\x02\x02\x94\x93\x03\x02\x02\x02\x94\x95\x03\x02\x02\x02\x95\x96\x03\x02" + - "\x02\x02\x96\x97\x07*\x02\x02\x97\x99\x03\x02\x02\x02\x98|\x03\x02\x02" + - "\x02\x98\x7F\x03\x02\x02\x02\x98\x80\x03\x02\x02\x02\x98\x81\x03\x02\x02" + - "\x02\x98\x91\x03\x02\x02\x02\x99\xA2\x03\x02\x02\x02\x9A\x9B\f\x06\x02" + - "\x02\x9B\x9C\x07\x1C\x02\x02\x9C\xA1\x05\f\x07\x07\x9D\x9E\f\x05\x02\x02" + - "\x9E\x9F\x07,\x02\x02\x9F\xA1\x05\f\x07\x06\xA0\x9A\x03\x02\x02\x02\xA0" + - "\x9D\x03\x02\x02\x02\xA1\xA4\x03\x02\x02\x02\xA2\xA0\x03\x02\x02\x02\xA2" + - "\xA3\x03\x02\x02\x02\xA3\r\x03\x02\x02\x02\xA4\xA2\x03\x02\x02\x02\xA5" + - "\xA7\x05\x10\t\x02\xA6\xA8\x07)\x02\x02\xA7\xA6\x03\x02\x02\x02\xA7\xA8" + - "\x03\x02\x02\x02\xA8\xA9\x03\x02\x02\x02\xA9\xAA\x07(\x02\x02\xAA\xAB" + - "\x05N(\x02\xAB\xB4\x03\x02\x02\x02\xAC\xAE\x05\x10\t\x02\xAD\xAF\x07)" + - "\x02\x02\xAE\xAD\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB0\x03\x02" + - "\x02\x02\xB0\xB1\x07.\x02\x02\xB1\xB2\x05N(\x02\xB2\xB4\x03\x02\x02\x02" + - "\xB3\xA5\x03\x02\x02\x02\xB3\xAC\x03\x02\x02\x02\xB4\x0F\x03\x02\x02\x02" + - "\xB5\xBB\x05\x12\n\x02\xB6\xB7\x05\x12\n\x02\xB7\xB8\x05P)\x02\xB8\xB9" + - "\x05\x12\n\x02\xB9\xBB\x03\x02\x02\x02\xBA\xB5\x03\x02\x02\x02\xBA\xB6" + - "\x03\x02\x02\x02\xBB\x11\x03\x02\x02\x02\xBC\xBD\b\n\x01\x02\xBD\xC1\x05" + - "\x14\v\x02\xBE\xBF\t\x02\x02\x02\xBF\xC1\x05\x12\n\x05\xC0\xBC\x03\x02" + - "\x02\x02\xC0\xBE\x03\x02\x02\x02\xC1\xCA\x03\x02\x02\x02\xC2\xC3\f\x04" + - "\x02\x02\xC3\xC4\t\x03\x02\x02\xC4\xC9\x05\x12\n\x05\xC5\xC6\f\x03\x02" + - "\x02\xC6\xC7\t\x02\x02\x02\xC7\xC9\x05\x12\n\x04\xC8\xC2\x03\x02\x02\x02" + - "\xC8\xC5\x03\x02\x02\x02\xC9\xCC\x03\x02\x02\x02\xCA\xC8\x03\x02\x02\x02" + - "\xCA\xCB\x03\x02\x02\x02\xCB\x13\x03\x02\x02\x02\xCC\xCA\x03\x02\x02\x02" + - "\xCD\xE2\x05,\x17\x02\xCE\xE2\x05(\x15\x02\xCF\xD0\x07%\x02\x02\xD0\xD1" + - "\x05\f\x07\x02\xD1\xD2\x07/\x02\x02\xD2\xE2\x03\x02\x02\x02\xD3\xD4\x05" + - "*\x16\x02\xD4\xDD\x07%\x02\x02\xD5\xDA\x05\f\x07\x02\xD6\xD7\x07\x1F\x02" + - "\x02\xD7\xD9\x05\f\x07\x02\xD8\xD6\x03\x02\x02\x02\xD9\xDC\x03\x02\x02" + - "\x02\xDA\xD8\x03\x02\x02\x02\xDA\xDB\x03\x02\x02\x02\xDB\xDE\x03\x02\x02" + - "\x02\xDC\xDA\x03\x02\x02\x02\xDD\xD5\x03\x02\x02\x02\xDD\xDE\x03\x02\x02" + - "\x02\xDE\xDF\x03\x02\x02\x02\xDF\xE0\x07/\x02\x02\xE0\xE2\x03\x02\x02" + - "\x02\xE1\xCD\x03\x02\x02\x02\xE1\xCE\x03\x02\x02\x02\xE1\xCF\x03\x02\x02" + - "\x02\xE1\xD3\x03\x02\x02\x02\xE2\x15\x03\x02\x02\x02\xE3\xE4\x07\x0E\x02" + - "\x02\xE4\xE5\x05\x18\r\x02\xE5\x17\x03\x02\x02\x02\xE6\xEB\x05\x1A\x0E" + - "\x02\xE7\xE8\x07\x1F\x02\x02\xE8\xEA\x05\x1A\x0E\x02\xE9\xE7\x03\x02\x02" + - "\x02\xEA\xED\x03\x02\x02\x02\xEB\xE9\x03\x02\x02\x02\xEB\xEC\x03\x02\x02" + - "\x02\xEC\x19\x03\x02\x02\x02\xED\xEB\x03\x02\x02\x02\xEE\xF4\x05\f\x07" + - "\x02\xEF\xF0\x05(\x15\x02\xF0\xF1\x07\x1E\x02\x02\xF1\xF2\x05\f\x07\x02" + - "\xF2\xF4\x03\x02\x02\x02\xF3\xEE\x03\x02\x02\x02\xF3\xEF\x03\x02\x02\x02" + - "\xF4\x1B\x03\x02\x02\x02\xF5\xF6\x07\x07\x02\x02\xF6\xFB\x05&\x14\x02" + - "\xF7\xF8\x07\x1F\x02\x02\xF8\xFA\x05&\x14\x02\xF9\xF7\x03\x02\x02\x02" + - "\xFA\xFD\x03\x02\x02\x02\xFB\xF9\x03\x02\x02\x02\xFB\xFC\x03\x02\x02\x02" + - "\xFC\xFF\x03\x02\x02\x02\xFD\xFB\x03\x02\x02\x02\xFE\u0100\x05\x1E\x10" + - "\x02\xFF\xFE\x03\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\x1D\x03\x02" + - "\x02\x02\u0101\u0102\x07?\x02\x02\u0102\u0103\x07G\x02\x02\u0103\u0108" + - "\x05&\x14\x02\u0104\u0105\x07\x1F\x02\x02\u0105\u0107\x05&\x14\x02\u0106" + - "\u0104\x03\x02\x02\x02\u0107\u010A\x03\x02\x02\x02\u0108\u0106\x03\x02" + - "\x02\x02\u0108\u0109\x03\x02\x02\x02\u0109\u010B\x03\x02\x02\x02\u010A" + - "\u0108\x03\x02\x02\x02\u010B\u010C\x07@\x02\x02\u010C\x1F\x03\x02\x02" + - "\x02\u010D\u010E\x07\x06\x02\x02\u010E\u010F\x05\x18\r\x02\u010F!\x03" + - "\x02\x02\x02\u0110\u0112\x07\x11\x02\x02\u0111\u0113\x05\x18\r\x02\u0112" + - "\u0111\x03\x02\x02\x02\u0112\u0113\x03\x02\x02\x02\u0113\u0116\x03\x02" + - "\x02\x02\u0114\u0115\x07\x1B\x02\x02\u0115\u0117\x05$\x13\x02\u0116\u0114" + - "\x03\x02\x02\x02\u0116\u0117\x03\x02\x02\x02\u0117#\x03\x02\x02\x02\u0118" + - "\u011D\x05(\x15\x02\u0119\u011A\x07\x1F\x02\x02\u011A\u011C\x05(\x15\x02" + - "\u011B\u0119\x03\x02\x02\x02\u011C\u011F\x03\x02\x02\x02\u011D\u011B\x03" + - "\x02\x02\x02\u011D\u011E\x03\x02\x02\x02\u011E%\x03\x02\x02\x02\u011F" + - "\u011D\x03\x02\x02\x02\u0120\u0121\t\x04\x02\x02\u0121\'\x03\x02\x02\x02" + - "\u0122\u0127\x05*\x16\x02\u0123\u0124\x07!\x02\x02\u0124\u0126\x05*\x16" + - "\x02\u0125\u0123\x03\x02\x02\x02\u0126\u0129\x03\x02\x02\x02\u0127\u0125" + - "\x03\x02\x02\x02\u0127\u0128\x03\x02\x02\x02\u0128)\x03\x02\x02\x02\u0129" + - "\u0127\x03\x02\x02\x02\u012A\u012B\t\x05\x02\x02\u012B+\x03\x02\x02\x02" + - "\u012C\u0157\x07*\x02\x02\u012D\u012E\x05L\'\x02\u012E\u012F\x07A\x02" + - "\x02\u012F\u0157\x03\x02\x02\x02\u0130\u0157\x05J&\x02\u0131\u0157\x05" + - "L\'\x02\u0132\u0157\x05F$\x02\u0133\u0157\x07-\x02\x02\u0134\u0157\x05" + - "N(\x02\u0135\u0136\x07?\x02\x02\u0136\u013B\x05H%\x02\u0137\u0138\x07" + - "\x1F\x02\x02\u0138\u013A\x05H%\x02\u0139\u0137\x03\x02\x02\x02\u013A\u013D" + - "\x03\x02\x02\x02\u013B\u0139\x03\x02\x02\x02\u013B\u013C\x03\x02\x02\x02" + - "\u013C\u013E\x03\x02\x02\x02\u013D\u013B\x03\x02\x02\x02\u013E\u013F\x07" + - "@\x02\x02\u013F\u0157\x03\x02\x02\x02\u0140\u0141\x07?\x02\x02\u0141\u0146" + - "\x05F$\x02\u0142\u0143\x07\x1F\x02\x02\u0143\u0145\x05F$\x02\u0144\u0142" + - "\x03\x02\x02\x02\u0145\u0148\x03\x02\x02\x02\u0146\u0144\x03\x02\x02\x02" + - "\u0146\u0147\x03\x02\x02\x02\u0147\u0149\x03\x02\x02\x02\u0148\u0146\x03" + - "\x02\x02\x02\u0149\u014A\x07@\x02\x02\u014A\u0157\x03\x02\x02\x02\u014B" + - "\u014C\x07?\x02\x02\u014C\u0151\x05N(\x02\u014D\u014E\x07\x1F\x02\x02" + - "\u014E\u0150\x05N(\x02\u014F\u014D\x03\x02\x02\x02\u0150\u0153\x03\x02" + - "\x02\x02\u0151\u014F\x03\x02\x02\x02\u0151\u0152\x03\x02\x02\x02\u0152" + - "\u0154\x03\x02\x02\x02\u0153\u0151\x03\x02\x02\x02\u0154\u0155\x07@\x02" + - "\x02\u0155\u0157\x03\x02\x02\x02\u0156\u012C\x03\x02\x02\x02\u0156\u012D" + - "\x03\x02\x02\x02\u0156\u0130\x03\x02\x02\x02\u0156\u0131\x03\x02\x02\x02" + - "\u0156\u0132\x03\x02\x02\x02\u0156\u0133\x03\x02\x02\x02\u0156\u0134\x03" + - "\x02\x02\x02\u0156\u0135\x03\x02\x02\x02\u0156\u0140\x03\x02\x02\x02\u0156" + - "\u014B\x03\x02\x02\x02\u0157-\x03\x02\x02\x02\u0158\u0159\x07\n\x02\x02" + - "\u0159\u015A\x07\x19\x02\x02\u015A/\x03\x02\x02\x02\u015B\u015C\x07\x10" + - "\x02\x02\u015C\u0161\x052\x1A\x02\u015D\u015E\x07\x1F\x02\x02\u015E\u0160" + - "\x052\x1A\x02\u015F\u015D\x03\x02\x02\x02\u0160\u0163\x03\x02\x02\x02" + - "\u0161\u015F\x03\x02\x02\x02\u0161\u0162\x03\x02\x02\x02\u01621\x03\x02" + - "\x02\x02\u0163\u0161\x03\x02\x02\x02\u0164\u0166\x05\f\x07\x02\u0165\u0167" + - "\t\x06\x02\x02\u0166\u0165\x03\x02\x02\x02\u0166\u0167\x03\x02\x02\x02" + - "\u0167\u016A\x03\x02\x02\x02\u0168\u0169\x07+\x02\x02\u0169\u016B\t\x07" + - "\x02\x02\u016A\u0168\x03\x02\x02\x02\u016A\u016B\x03\x02\x02\x02\u016B" + - "3\x03\x02\x02\x02\u016C\u016D\x07\t\x02\x02\u016D\u0172\x05&\x14\x02\u016E" + - "\u016F\x07\x1F\x02\x02\u016F\u0171\x05&\x14\x02\u0170\u016E\x03\x02\x02" + - "\x02\u0171\u0174\x03\x02\x02\x02\u0172\u0170\x03\x02\x02\x02\u0172\u0173" + - "\x03\x02\x02\x02\u0173\u017F\x03\x02\x02\x02\u0174\u0172\x03\x02\x02\x02" + - "\u0175\u0176\x07\f\x02\x02\u0176\u017B\x05&\x14\x02\u0177\u0178\x07\x1F" + - "\x02\x02\u0178\u017A\x05&\x14\x02\u0179\u0177\x03\x02\x02\x02\u017A\u017D" + - "\x03\x02\x02\x02\u017B\u0179\x03\x02\x02\x02\u017B\u017C\x03\x02\x02\x02" + - "\u017C\u017F\x03\x02\x02\x02\u017D\u017B\x03\x02\x02\x02\u017E\u016C\x03" + - "\x02\x02\x02\u017E\u0175\x03\x02\x02\x02\u017F5\x03\x02\x02\x02\u0180" + - "\u0181\x07\x04\x02\x02\u0181\u0186\x05&\x14\x02\u0182\u0183\x07\x1F\x02" + - "\x02\u0183\u0185\x05&\x14\x02\u0184\u0182\x03\x02\x02\x02\u0185\u0188" + - "\x03\x02\x02\x02\u0186\u0184\x03\x02\x02\x02\u0186\u0187\x03\x02\x02\x02" + - "\u01877\x03\x02\x02\x02\u0188\u0186\x03\x02\x02\x02\u0189\u018A\x07\r" + - "\x02\x02\u018A\u018F\x05:\x1E\x02\u018B\u018C\x07\x1F\x02\x02\u018C\u018E" + - "\x05:\x1E\x02\u018D\u018B\x03\x02\x02\x02\u018E\u0191\x03\x02\x02\x02" + - "\u018F\u018D\x03\x02\x02\x02\u018F\u0190\x03\x02\x02\x02\u01909\x03\x02" + - "\x02\x02\u0191\u018F\x03\x02\x02\x02\u0192\u0193\x05&\x14\x02\u0193\u0194" + - "\x07F\x02\x02\u0194\u0195\x05&\x14\x02\u0195;\x03\x02\x02\x02\u0196\u0197" + - "\x07\x03\x02\x02\u0197\u0198\x05\x14\v\x02\u0198\u019A\x05N(\x02\u0199" + - "\u019B\x05B\"\x02\u019A\u0199\x03\x02\x02\x02\u019A\u019B\x03\x02\x02" + - "\x02\u019B=\x03\x02\x02\x02\u019C\u019D\x07\b\x02\x02\u019D\u019E\x05" + - "\x14\v\x02\u019E\u019F\x05N(\x02\u019F?\x03\x02\x02\x02\u01A0\u01A1\x07" + - "\v\x02\x02\u01A1\u01A2\x05&\x14\x02\u01A2A\x03\x02\x02\x02\u01A3\u01A8" + - "\x05D#\x02\u01A4\u01A5\x07\x1F\x02\x02\u01A5\u01A7\x05D#\x02\u01A6\u01A4" + - "\x03\x02\x02\x02\u01A7\u01AA\x03\x02\x02\x02\u01A8\u01A6\x03\x02\x02\x02" + - "\u01A8\u01A9\x03\x02\x02\x02\u01A9C\x03\x02\x02\x02\u01AA\u01A8\x03\x02" + - "\x02\x02\u01AB\u01AC\x05*\x16\x02\u01AC\u01AD\x07\x1E\x02\x02\u01AD\u01AE" + - "\x05,\x17\x02\u01AEE\x03\x02\x02\x02\u01AF\u01B0\t\b\x02\x02\u01B0G\x03" + - "\x02\x02\x02\u01B1\u01B4\x05J&\x02\u01B2\u01B4\x05L\'\x02\u01B3\u01B1" + - "\x03\x02\x02\x02\u01B3\u01B2\x03\x02\x02\x02\u01B4I\x03\x02\x02\x02\u01B5" + - "\u01B7\t\x02\x02\x02\u01B6\u01B5\x03\x02\x02\x02\u01B6\u01B7\x03\x02\x02" + - "\x02\u01B7\u01B8\x03\x02\x02\x02\u01B8\u01B9\x07\x1A\x02\x02\u01B9K\x03" + - "\x02\x02\x02\u01BA\u01BC\t\x02\x02\x02\u01BB\u01BA\x03\x02\x02\x02\u01BB" + - "\u01BC\x03\x02\x02\x02\u01BC\u01BD\x03\x02\x02\x02\u01BD\u01BE\x07\x19" + - "\x02\x02\u01BEM\x03\x02\x02\x02\u01BF\u01C0\x07\x18\x02\x02\u01C0O\x03" + - "\x02\x02\x02\u01C1\u01C2\t\t\x02\x02\u01C2Q\x03\x02\x02\x02\u01C3\u01C4" + - "\x07\x0F\x02\x02\u01C4\u01C8\x071\x02\x02\u01C5\u01C6\x07\x0F\x02\x02" + - "\u01C6\u01C8\x072\x02\x02\u01C7\u01C3\x03\x02\x02\x02\u01C7\u01C5\x03" + - "\x02\x02\x02\u01C8S\x03\x02\x02\x02\u01C9\u01CA\x07\x05\x02\x02\u01CA" + - "\u01CD\x05&\x14\x02\u01CB\u01CC\x07H\x02\x02\u01CC\u01CE\x05&\x14\x02" + - "\u01CD\u01CB\x03\x02\x02\x02\u01CD\u01CE\x03\x02\x02\x02\u01CE\u01D8\x03" + - "\x02\x02\x02\u01CF\u01D0\x07I\x02\x02\u01D0\u01D5\x05V,\x02\u01D1\u01D2" + - "\x07\x1F\x02\x02\u01D2\u01D4\x05V,\x02\u01D3\u01D1\x03\x02\x02\x02\u01D4" + - "\u01D7\x03\x02\x02\x02\u01D5\u01D3\x03\x02\x02\x02\u01D5\u01D6\x03\x02" + - "\x02\x02\u01D6\u01D9\x03\x02\x02\x02\u01D7\u01D5\x03\x02\x02\x02\u01D8" + - "\u01CF\x03\x02\x02\x02\u01D8\u01D9\x03\x02\x02\x02\u01D9U\x03\x02\x02" + - "\x02\u01DA\u01DB\x05&\x14\x02\u01DB\u01DC\x07\x1E\x02\x02\u01DC\u01DE" + - "\x03\x02\x02\x02\u01DD\u01DA\x03\x02\x02\x02\u01DD\u01DE\x03\x02\x02\x02" + - "\u01DE\u01DF\x03\x02\x02\x02\u01DF\u01E0\x05&\x14\x02\u01E0W\x03\x02\x02" + - "\x024ciw\x83\x8C\x94\x98\xA0\xA2\xA7\xAE\xB3\xBA\xC0\xC8\xCA\xDA\xDD\xE1" + - "\xEB\xF3\xFB\xFF\u0108\u0112\u0116\u011D\u0127\u013B\u0146\u0151\u0156" + - "\u0161\u0166\u016A\u0172\u017B\u017E\u0186\u018F\u019A\u01A8\u01B3\u01B6" + - "\u01BB\u01C7\u01CD\u01D5\u01D8\u01DD"; + "R\x02T\x02V\x02X\x02\x02\n\x03\x02:;\x03\x02<>\x03\x02JK\x03\x02AB\x04" + + "\x02\x1D\x1D \x03\x02#$\x04\x02\"\"00\x03\x0249\x02\u0204\x02Z\x03\x02" + + "\x02\x02\x04]\x03\x02\x02\x02\x06k\x03\x02\x02\x02\by\x03\x02\x02\x02" + + "\n{\x03\x02\x02\x02\f\x9A\x03\x02\x02\x02\x0E\xB5\x03\x02\x02\x02\x10" + + "\xBC\x03\x02\x02\x02\x12\xC2\x03\x02\x02\x02\x14\xD6\x03\x02\x02\x02\x16" + + "\xD8\x03\x02\x02\x02\x18\xE7\x03\x02\x02\x02\x1A\xEA\x03\x02\x02\x02\x1C" + + "\xF7\x03\x02\x02\x02\x1E\xF9\x03\x02\x02\x02 \u0105\x03\x02\x02\x02\"" + + "\u0111\x03\x02\x02\x02$\u0114\x03\x02\x02\x02&\u011C\x03\x02\x02\x02(" + + "\u0124\x03\x02\x02\x02*\u0126\x03\x02\x02\x02,\u012E\x03\x02\x02\x02." + + "\u015A\x03\x02\x02\x020\u015C\x03\x02\x02\x022\u015F\x03\x02\x02\x024" + + "\u0168\x03\x02\x02\x026\u0182\x03\x02\x02\x028\u0184\x03\x02\x02\x02:" + + "\u018D\x03\x02\x02\x02<\u0196\x03\x02\x02\x02>\u019A\x03\x02\x02\x02@" + + "\u01A0\x03\x02\x02\x02B\u01A4\x03\x02\x02\x02D\u01A7\x03\x02\x02\x02F" + + "\u01AF\x03\x02\x02\x02H\u01B3\x03\x02\x02\x02J\u01B7\x03\x02\x02\x02L" + + "\u01BA\x03\x02\x02\x02N\u01BF\x03\x02\x02\x02P\u01C3\x03\x02\x02\x02R" + + "\u01C5\x03\x02\x02\x02T\u01CB\x03\x02\x02\x02V\u01CD\x03\x02\x02\x02X" + + "\u01E1\x03\x02\x02\x02Z[\x05\x04\x03\x02[\\\x07\x02\x02\x03\\\x03\x03" + + "\x02\x02\x02]^\b\x03\x01\x02^_\x05\x06\x04\x02_e\x03\x02\x02\x02`a\f\x03" + + "\x02\x02ab\x07\x17\x02\x02bd\x05\b\x05\x02c`\x03\x02\x02\x02dg\x03\x02" + + "\x02\x02ec\x03\x02\x02\x02ef\x03\x02\x02\x02f\x05\x03\x02\x02\x02ge\x03" + + "\x02\x02\x02hl\x05\x1E\x10\x02il\x05\x18\r\x02jl\x05T+\x02kh\x03\x02\x02" + + "\x02ki\x03\x02\x02\x02kj\x03\x02\x02\x02l\x07\x03\x02\x02\x02mz\x05\"" + + "\x12\x02nz\x050\x19\x02oz\x056\x1C\x02pz\x052\x1A\x02qz\x05$\x13\x02r" + + "z\x05\n\x06\x02sz\x058\x1D\x02tz\x05:\x1E\x02uz\x05> \x02vz\x05@!\x02" + + "wz\x05V,\x02xz\x05B\"\x02ym\x03\x02\x02\x02yn\x03\x02\x02\x02yo\x03\x02" + + "\x02\x02yp\x03\x02\x02\x02yq\x03\x02\x02\x02yr\x03\x02\x02\x02ys\x03\x02" + + "\x02\x02yt\x03\x02\x02\x02yu\x03\x02\x02\x02yv\x03\x02\x02\x02yw\x03\x02" + + "\x02\x02yx\x03\x02\x02\x02z\t\x03\x02\x02\x02{|\x07\x12\x02\x02|}\x05" + + "\f\x07\x02}\v\x03\x02\x02\x02~\x7F\b\x07\x01\x02\x7F\x80\x07)\x02\x02" + + "\x80\x9B\x05\f\x07\t\x81\x9B\x05\x10\t\x02\x82\x9B\x05\x0E\b\x02\x83\x85" + + "\x05\x10\t\x02\x84\x86\x07)\x02\x02\x85\x84\x03\x02\x02\x02\x85\x86\x03" + + "\x02\x02\x02\x86\x87\x03\x02\x02\x02\x87\x88\x07&\x02\x02\x88\x89\x07" + + "%\x02\x02\x89\x8E\x05\x10\t\x02\x8A\x8B\x07\x1F\x02\x02\x8B\x8D\x05\x10" + + "\t\x02\x8C\x8A\x03\x02\x02\x02\x8D\x90\x03\x02\x02\x02\x8E\x8C\x03\x02" + + "\x02\x02\x8E\x8F\x03\x02\x02\x02\x8F\x91\x03\x02\x02\x02\x90\x8E\x03\x02" + + "\x02\x02\x91\x92\x07/\x02\x02\x92\x9B\x03\x02\x02\x02\x93\x94\x05\x10" + + "\t\x02\x94\x96\x07\'\x02\x02\x95\x97\x07)\x02\x02\x96\x95\x03\x02\x02" + + "\x02\x96\x97\x03\x02\x02\x02\x97\x98\x03\x02\x02\x02\x98\x99\x07*\x02" + + "\x02\x99\x9B\x03\x02\x02\x02\x9A~\x03\x02\x02\x02\x9A\x81\x03\x02\x02" + + "\x02\x9A\x82\x03\x02\x02\x02\x9A\x83\x03\x02\x02\x02\x9A\x93\x03\x02\x02" + + "\x02\x9B\xA4\x03\x02\x02\x02\x9C\x9D\f\x06\x02\x02\x9D\x9E\x07\x1C\x02" + + "\x02\x9E\xA3\x05\f\x07\x07\x9F\xA0\f\x05\x02\x02\xA0\xA1\x07,\x02\x02" + + "\xA1\xA3\x05\f\x07\x06\xA2\x9C\x03\x02\x02\x02\xA2\x9F\x03\x02\x02\x02" + + "\xA3\xA6\x03\x02\x02\x02\xA4\xA2\x03\x02\x02\x02\xA4\xA5\x03\x02\x02\x02" + + "\xA5\r\x03\x02\x02\x02\xA6\xA4\x03\x02\x02\x02\xA7\xA9\x05\x10\t\x02\xA8" + + "\xAA\x07)\x02\x02\xA9\xA8\x03\x02\x02\x02\xA9\xAA\x03\x02\x02\x02\xAA" + + "\xAB\x03\x02\x02\x02\xAB\xAC\x07(\x02\x02\xAC\xAD\x05P)\x02\xAD\xB6\x03" + + "\x02\x02\x02\xAE\xB0\x05\x10\t\x02\xAF\xB1\x07)\x02\x02\xB0\xAF\x03\x02" + + "\x02\x02\xB0\xB1\x03\x02\x02\x02\xB1\xB2\x03\x02\x02\x02\xB2\xB3\x07." + + "\x02\x02\xB3\xB4\x05P)\x02\xB4\xB6\x03\x02\x02\x02\xB5\xA7\x03\x02\x02" + + "\x02\xB5\xAE\x03\x02\x02\x02\xB6\x0F\x03\x02\x02\x02\xB7\xBD\x05\x12\n" + + "\x02\xB8\xB9\x05\x12\n\x02\xB9\xBA\x05R*\x02\xBA\xBB\x05\x12\n\x02\xBB" + + "\xBD\x03\x02\x02\x02\xBC\xB7\x03\x02\x02\x02\xBC\xB8\x03\x02\x02\x02\xBD" + + "\x11\x03\x02\x02\x02\xBE\xBF\b\n\x01\x02\xBF\xC3\x05\x14\v\x02\xC0\xC1" + + "\t\x02\x02\x02\xC1\xC3\x05\x12\n\x05\xC2\xBE\x03\x02\x02\x02\xC2\xC0\x03" + + "\x02\x02\x02\xC3\xCC\x03\x02\x02\x02\xC4\xC5\f\x04\x02\x02\xC5\xC6\t\x03" + + "\x02\x02\xC6\xCB\x05\x12\n\x05\xC7\xC8\f\x03\x02\x02\xC8\xC9\t\x02\x02" + + "\x02\xC9\xCB\x05\x12\n\x04\xCA\xC4\x03\x02\x02\x02\xCA\xC7\x03\x02\x02" + + "\x02\xCB\xCE\x03\x02\x02\x02\xCC\xCA\x03\x02\x02\x02\xCC\xCD\x03\x02\x02" + + "\x02\xCD\x13\x03\x02\x02\x02\xCE\xCC\x03\x02\x02\x02\xCF\xD7\x05.\x18" + + "\x02\xD0\xD7\x05*\x16\x02\xD1\xD7\x05\x16\f\x02\xD2\xD3\x07%\x02\x02\xD3" + + "\xD4\x05\f\x07\x02\xD4\xD5\x07/\x02\x02\xD5\xD7\x03\x02\x02\x02\xD6\xCF" + + "\x03\x02\x02\x02\xD6\xD0\x03\x02\x02\x02\xD6\xD1\x03\x02\x02\x02\xD6\xD2" + + "\x03\x02\x02\x02\xD7\x15\x03\x02\x02\x02\xD8\xD9\x05,\x17\x02\xD9\xE3" + + "\x07%\x02\x02\xDA\xE4\x07<\x02\x02\xDB\xE0\x05\f\x07\x02\xDC\xDD\x07\x1F" + + "\x02\x02\xDD\xDF\x05\f\x07\x02\xDE\xDC\x03\x02\x02\x02\xDF\xE2\x03\x02" + + "\x02\x02\xE0\xDE\x03\x02\x02\x02\xE0\xE1\x03\x02\x02\x02\xE1\xE4\x03\x02" + + "\x02\x02\xE2\xE0\x03\x02\x02\x02\xE3\xDA\x03\x02\x02\x02\xE3\xDB\x03\x02" + + "\x02\x02\xE3\xE4\x03\x02\x02\x02\xE4\xE5\x03\x02\x02\x02\xE5\xE6\x07/" + + "\x02\x02\xE6\x17\x03\x02\x02\x02\xE7\xE8\x07\x0E\x02\x02\xE8\xE9\x05\x1A" + + "\x0E\x02\xE9\x19\x03\x02\x02\x02\xEA\xEF\x05\x1C\x0F\x02\xEB\xEC\x07\x1F" + + "\x02\x02\xEC\xEE\x05\x1C\x0F\x02\xED\xEB\x03\x02\x02\x02\xEE\xF1\x03\x02" + + "\x02\x02\xEF\xED\x03\x02\x02\x02\xEF\xF0\x03\x02\x02\x02\xF0\x1B\x03\x02" + + "\x02\x02\xF1\xEF\x03\x02\x02\x02\xF2\xF8\x05\f\x07\x02\xF3\xF4\x05*\x16" + + "\x02\xF4\xF5\x07\x1E\x02\x02\xF5\xF6\x05\f\x07\x02\xF6\xF8\x03\x02\x02" + + "\x02\xF7\xF2\x03\x02\x02\x02\xF7\xF3\x03\x02\x02\x02\xF8\x1D\x03\x02\x02" + + "\x02\xF9\xFA\x07\x07\x02\x02\xFA\xFF\x05(\x15\x02\xFB\xFC\x07\x1F\x02" + + "\x02\xFC\xFE\x05(\x15\x02\xFD\xFB\x03\x02\x02\x02\xFE\u0101\x03\x02\x02" + + "\x02\xFF\xFD\x03\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\u0103\x03" + + "\x02\x02\x02\u0101\xFF\x03\x02\x02\x02\u0102\u0104\x05 \x11\x02\u0103" + + "\u0102\x03\x02\x02\x02\u0103\u0104\x03\x02\x02\x02\u0104\x1F\x03\x02\x02" + + "\x02\u0105\u0106\x07?\x02\x02\u0106\u0107\x07G\x02\x02\u0107\u010C\x05" + + "(\x15\x02\u0108\u0109\x07\x1F\x02\x02\u0109\u010B\x05(\x15\x02\u010A\u0108" + + "\x03\x02\x02\x02\u010B\u010E\x03\x02\x02\x02\u010C\u010A\x03\x02\x02\x02" + + "\u010C\u010D\x03\x02\x02\x02\u010D\u010F\x03\x02\x02\x02\u010E\u010C\x03" + + "\x02\x02\x02\u010F\u0110\x07@\x02\x02\u0110!\x03\x02\x02\x02\u0111\u0112" + + "\x07\x06\x02\x02\u0112\u0113\x05\x1A\x0E\x02\u0113#\x03\x02\x02\x02\u0114" + + "\u0116\x07\x11\x02\x02\u0115\u0117\x05\x1A\x0E\x02\u0116\u0115\x03\x02" + + "\x02\x02\u0116\u0117\x03\x02\x02\x02\u0117\u011A\x03\x02\x02\x02\u0118" + + "\u0119\x07\x1B\x02\x02\u0119\u011B\x05&\x14\x02\u011A\u0118\x03\x02\x02" + + "\x02\u011A\u011B\x03\x02\x02\x02\u011B%\x03\x02\x02\x02\u011C\u0121\x05" + + "*\x16\x02\u011D\u011E\x07\x1F\x02\x02\u011E\u0120\x05*\x16\x02\u011F\u011D" + + "\x03\x02\x02\x02\u0120\u0123\x03\x02\x02\x02\u0121\u011F\x03\x02\x02\x02" + + "\u0121\u0122\x03\x02\x02\x02\u0122\'\x03\x02\x02\x02\u0123\u0121\x03\x02" + + "\x02\x02\u0124\u0125\t\x04\x02\x02\u0125)\x03\x02\x02\x02\u0126\u012B" + + "\x05,\x17\x02\u0127\u0128\x07!\x02\x02\u0128\u012A\x05,\x17\x02\u0129" + + "\u0127\x03\x02\x02\x02\u012A\u012D\x03\x02\x02\x02\u012B\u0129\x03\x02" + + "\x02\x02\u012B\u012C\x03\x02\x02\x02\u012C+\x03\x02\x02\x02\u012D\u012B" + + "\x03\x02\x02\x02\u012E\u012F\t\x05\x02\x02\u012F-\x03\x02\x02\x02\u0130" + + "\u015B\x07*\x02\x02\u0131\u0132\x05N(\x02\u0132\u0133\x07A\x02\x02\u0133" + + "\u015B\x03\x02\x02\x02\u0134\u015B\x05L\'\x02\u0135\u015B\x05N(\x02\u0136" + + "\u015B\x05H%\x02\u0137\u015B\x07-\x02\x02\u0138\u015B\x05P)\x02\u0139" + + "\u013A\x07?\x02\x02\u013A\u013F\x05J&\x02\u013B\u013C\x07\x1F\x02\x02" + + "\u013C\u013E\x05J&\x02\u013D\u013B\x03\x02\x02\x02\u013E\u0141\x03\x02" + + "\x02\x02\u013F\u013D\x03\x02\x02\x02\u013F\u0140\x03\x02\x02\x02\u0140" + + "\u0142\x03\x02\x02\x02\u0141\u013F\x03\x02\x02\x02\u0142\u0143\x07@\x02" + + "\x02\u0143\u015B\x03\x02\x02\x02\u0144\u0145\x07?\x02\x02\u0145\u014A" + + "\x05H%\x02\u0146\u0147\x07\x1F\x02\x02\u0147\u0149\x05H%\x02\u0148\u0146" + + "\x03\x02\x02\x02\u0149\u014C\x03\x02\x02\x02\u014A\u0148\x03\x02\x02\x02" + + "\u014A\u014B\x03\x02\x02\x02\u014B\u014D\x03\x02\x02\x02\u014C\u014A\x03" + + "\x02\x02\x02\u014D\u014E\x07@\x02\x02\u014E\u015B\x03\x02\x02\x02\u014F" + + "\u0150\x07?\x02\x02\u0150\u0155\x05P)\x02\u0151\u0152\x07\x1F\x02\x02" + + "\u0152\u0154\x05P)\x02\u0153\u0151\x03\x02\x02\x02\u0154\u0157\x03\x02" + + "\x02\x02\u0155\u0153\x03\x02\x02\x02\u0155\u0156\x03\x02\x02\x02\u0156" + + "\u0158\x03\x02\x02\x02\u0157\u0155\x03\x02\x02\x02\u0158\u0159\x07@\x02" + + "\x02\u0159\u015B\x03\x02\x02\x02\u015A\u0130\x03\x02\x02\x02\u015A\u0131" + + "\x03\x02\x02\x02\u015A\u0134\x03\x02\x02\x02\u015A\u0135\x03\x02\x02\x02" + + "\u015A\u0136\x03\x02\x02\x02\u015A\u0137\x03\x02\x02\x02\u015A\u0138\x03" + + "\x02\x02\x02\u015A\u0139\x03\x02\x02\x02\u015A\u0144\x03\x02\x02\x02\u015A" + + "\u014F\x03\x02\x02\x02\u015B/\x03\x02\x02\x02\u015C\u015D\x07\n\x02\x02" + + "\u015D\u015E\x07\x19\x02\x02\u015E1\x03\x02\x02\x02\u015F\u0160\x07\x10" + + "\x02\x02\u0160\u0165\x054\x1B\x02\u0161\u0162\x07\x1F\x02\x02\u0162\u0164" + + "\x054\x1B\x02\u0163\u0161\x03\x02\x02\x02\u0164\u0167\x03\x02\x02\x02" + + "\u0165\u0163\x03\x02\x02\x02\u0165\u0166\x03\x02\x02\x02\u01663\x03\x02" + + "\x02\x02\u0167\u0165\x03\x02\x02\x02\u0168\u016A\x05\f\x07\x02\u0169\u016B" + + "\t\x06\x02\x02\u016A\u0169\x03\x02\x02\x02\u016A\u016B\x03\x02\x02\x02" + + "\u016B\u016E\x03\x02\x02\x02\u016C\u016D\x07+\x02\x02\u016D\u016F\t\x07" + + "\x02\x02\u016E\u016C\x03\x02\x02\x02\u016E\u016F\x03\x02\x02\x02\u016F" + + "5\x03\x02\x02\x02\u0170\u0171\x07\t\x02\x02\u0171\u0176\x05(\x15\x02\u0172" + + "\u0173\x07\x1F\x02\x02\u0173\u0175\x05(\x15\x02\u0174\u0172\x03\x02\x02" + + "\x02\u0175\u0178\x03\x02\x02\x02\u0176\u0174\x03\x02\x02\x02\u0176\u0177" + + "\x03\x02\x02\x02\u0177\u0183\x03\x02\x02\x02\u0178\u0176\x03\x02\x02\x02" + + "\u0179\u017A\x07\f\x02\x02\u017A\u017F\x05(\x15\x02\u017B\u017C\x07\x1F" + + "\x02\x02\u017C\u017E\x05(\x15\x02\u017D\u017B\x03\x02\x02\x02\u017E\u0181" + + "\x03\x02\x02\x02\u017F\u017D\x03\x02\x02\x02\u017F\u0180\x03\x02\x02\x02" + + "\u0180\u0183\x03\x02\x02\x02\u0181\u017F\x03\x02\x02\x02\u0182\u0170\x03" + + "\x02\x02\x02\u0182\u0179\x03\x02\x02\x02\u01837\x03\x02\x02\x02\u0184" + + "\u0185\x07\x04\x02\x02\u0185\u018A\x05(\x15\x02\u0186\u0187\x07\x1F\x02" + + "\x02\u0187\u0189\x05(\x15\x02\u0188\u0186\x03\x02\x02\x02\u0189\u018C" + + "\x03\x02\x02\x02\u018A\u0188\x03\x02\x02\x02\u018A\u018B\x03\x02\x02\x02" + + "\u018B9\x03\x02\x02\x02\u018C\u018A\x03\x02\x02\x02\u018D\u018E\x07\r" + + "\x02\x02\u018E\u0193\x05<\x1F\x02\u018F\u0190\x07\x1F\x02\x02\u0190\u0192" + + "\x05<\x1F\x02\u0191\u018F\x03\x02\x02\x02\u0192\u0195\x03\x02\x02\x02" + + "\u0193\u0191\x03\x02\x02\x02\u0193\u0194\x03\x02\x02\x02\u0194;\x03\x02" + + "\x02\x02\u0195\u0193\x03\x02\x02\x02\u0196\u0197\x05(\x15\x02\u0197\u0198" + + "\x07F\x02\x02\u0198\u0199\x05(\x15\x02\u0199=\x03\x02\x02\x02\u019A\u019B" + + "\x07\x03\x02\x02\u019B\u019C\x05\x14\v\x02\u019C\u019E\x05P)\x02\u019D" + + "\u019F\x05D#\x02\u019E\u019D\x03\x02\x02\x02\u019E\u019F\x03\x02\x02\x02" + + "\u019F?\x03\x02\x02\x02\u01A0\u01A1\x07\b\x02\x02\u01A1\u01A2\x05\x14" + + "\v\x02\u01A2\u01A3\x05P)\x02\u01A3A\x03\x02\x02\x02\u01A4\u01A5\x07\v" + + "\x02\x02\u01A5\u01A6\x05(\x15\x02\u01A6C\x03\x02\x02\x02\u01A7\u01AC\x05" + + "F$\x02\u01A8\u01A9\x07\x1F\x02\x02\u01A9\u01AB\x05F$\x02\u01AA\u01A8\x03" + + "\x02\x02\x02\u01AB\u01AE\x03\x02\x02\x02\u01AC\u01AA\x03\x02\x02\x02\u01AC" + + "\u01AD\x03\x02\x02\x02\u01ADE\x03\x02\x02\x02\u01AE\u01AC\x03\x02\x02" + + "\x02\u01AF\u01B0\x05,\x17\x02\u01B0\u01B1\x07\x1E\x02\x02\u01B1\u01B2" + + "\x05.\x18\x02\u01B2G\x03\x02\x02\x02\u01B3\u01B4\t\b\x02\x02\u01B4I\x03" + + "\x02\x02\x02\u01B5\u01B8\x05L\'\x02\u01B6\u01B8\x05N(\x02\u01B7\u01B5" + + "\x03\x02\x02\x02\u01B7\u01B6\x03\x02\x02\x02\u01B8K\x03\x02\x02\x02\u01B9" + + "\u01BB\t\x02\x02\x02\u01BA\u01B9\x03\x02\x02\x02\u01BA\u01BB\x03\x02\x02" + + "\x02\u01BB\u01BC\x03\x02\x02\x02\u01BC\u01BD\x07\x1A\x02\x02\u01BDM\x03" + + "\x02\x02\x02\u01BE\u01C0\t\x02\x02\x02\u01BF\u01BE\x03\x02\x02\x02\u01BF" + + "\u01C0\x03\x02\x02\x02\u01C0\u01C1\x03\x02\x02\x02\u01C1\u01C2\x07\x19" + + "\x02\x02\u01C2O\x03\x02\x02\x02\u01C3\u01C4\x07\x18\x02\x02\u01C4Q\x03" + + "\x02\x02\x02\u01C5\u01C6\t\t\x02\x02\u01C6S\x03\x02\x02\x02\u01C7\u01C8" + + "\x07\x0F\x02\x02\u01C8\u01CC\x071\x02\x02\u01C9\u01CA\x07\x0F\x02\x02" + + "\u01CA\u01CC\x072\x02\x02\u01CB\u01C7\x03\x02\x02\x02\u01CB\u01C9\x03" + + "\x02\x02\x02\u01CCU\x03\x02\x02\x02\u01CD\u01CE\x07\x05\x02\x02\u01CE" + + "\u01D1\x05(\x15\x02\u01CF\u01D0\x07H\x02\x02\u01D0\u01D2\x05(\x15\x02" + + "\u01D1\u01CF\x03\x02\x02\x02\u01D1\u01D2\x03\x02\x02\x02\u01D2\u01DC\x03" + + "\x02\x02\x02\u01D3\u01D4\x07I\x02\x02\u01D4\u01D9\x05X-\x02\u01D5\u01D6" + + "\x07\x1F\x02\x02\u01D6\u01D8\x05X-\x02\u01D7\u01D5\x03\x02\x02\x02\u01D8" + + "\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01D9\u01DA\x03\x02" + + "\x02\x02\u01DA\u01DD\x03\x02\x02\x02\u01DB\u01D9\x03\x02\x02\x02\u01DC" + + "\u01D3\x03\x02\x02\x02\u01DC\u01DD\x03\x02\x02\x02\u01DDW\x03\x02\x02" + + "\x02\u01DE\u01DF\x05(\x15\x02\u01DF\u01E0\x07\x1E\x02\x02\u01E0\u01E2" + + "\x03\x02\x02\x02\u01E1\u01DE\x03\x02\x02\x02\u01E1\u01E2\x03\x02\x02\x02" + + "\u01E2\u01E3\x03\x02\x02\x02\u01E3\u01E4\x05(\x15\x02\u01E4Y\x03\x02\x02" + + "\x024eky\x85\x8E\x96\x9A\xA2\xA4\xA9\xB0\xB5\xBC\xC2\xCA\xCC\xD6\xE0\xE3" + + "\xEF\xF7\xFF\u0103\u010C\u0116\u011A\u0121\u012B\u013F\u014A\u0155\u015A" + + "\u0165\u016A\u016E\u0176\u017F\u0182\u018A\u0193\u019E\u01AC\u01B7\u01BA" + + "\u01BF\u01CB\u01D1\u01D9\u01DC\u01E1"; public static __ATN: ATN; public static get _ATN(): ATN { if (!esql_parser.__ATN) { @@ -3452,6 +3505,27 @@ export class DereferenceContext extends PrimaryExpressionContext { } } } +export class FunctionContext extends PrimaryExpressionContext { + public functionExpression(): FunctionExpressionContext { + return this.getRuleContext(0, FunctionExpressionContext); + } + constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: esql_parserListener): void { + if (listener.enterFunction) { + listener.enterFunction(this); + } + } + // @Override + public exitRule(listener: esql_parserListener): void { + if (listener.exitFunction) { + listener.exitFunction(this); + } + } +} export class ParenthesizedExpressionContext extends PrimaryExpressionContext { public LP(): TerminalNode { return this.getToken(esql_parser.LP, 0); } public booleanExpression(): BooleanExpressionContext { @@ -3475,12 +3549,15 @@ export class ParenthesizedExpressionContext extends PrimaryExpressionContext { } } } -export class FunctionExpressionContext extends PrimaryExpressionContext { + + +export class FunctionExpressionContext extends ParserRuleContext { public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } public LP(): TerminalNode { return this.getToken(esql_parser.LP, 0); } public RP(): TerminalNode { return this.getToken(esql_parser.RP, 0); } + public ASTERISK(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASTERISK, 0); } public booleanExpression(): BooleanExpressionContext[]; public booleanExpression(i: number): BooleanExpressionContext; public booleanExpression(i?: number): BooleanExpressionContext | BooleanExpressionContext[] { @@ -3499,11 +3576,12 @@ export class FunctionExpressionContext extends PrimaryExpressionContext { return this.getToken(esql_parser.COMMA, i); } } - constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); } // @Override + public get ruleIndex(): number { return esql_parser.RULE_functionExpression; } + // @Override public enterRule(listener: esql_parserListener): void { if (listener.enterFunctionExpression) { listener.enterFunctionExpression(this); diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts index 30696cf9b8aed..ff67f81aeab09 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts @@ -20,8 +20,8 @@ import { ShowInfoContext } from "./esql_parser"; import { ShowFunctionsContext } from "./esql_parser"; import { ConstantDefaultContext } from "./esql_parser"; import { DereferenceContext } from "./esql_parser"; +import { FunctionContext } from "./esql_parser"; import { ParenthesizedExpressionContext } from "./esql_parser"; -import { FunctionExpressionContext } from "./esql_parser"; import { SingleCommandQueryContext } from "./esql_parser"; import { CompositeQueryContext } from "./esql_parser"; import { LogicalNotContext } from "./esql_parser"; @@ -43,6 +43,7 @@ import { RegexBooleanExpressionContext } from "./esql_parser"; import { ValueExpressionContext } from "./esql_parser"; import { OperatorExpressionContext } from "./esql_parser"; import { PrimaryExpressionContext } from "./esql_parser"; +import { FunctionExpressionContext } from "./esql_parser"; import { RowCommandContext } from "./esql_parser"; import { FieldsContext } from "./esql_parser"; import { FieldContext } from "./esql_parser"; @@ -292,30 +293,30 @@ export interface esql_parserListener extends ParseTreeListener { exitDereference?: (ctx: DereferenceContext) => void; /** - * Enter a parse tree produced by the `parenthesizedExpression` + * Enter a parse tree produced by the `function` * labeled alternative in `esql_parser.primaryExpression`. * @param ctx the parse tree */ - enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + enterFunction?: (ctx: FunctionContext) => void; /** - * Exit a parse tree produced by the `parenthesizedExpression` + * Exit a parse tree produced by the `function` * labeled alternative in `esql_parser.primaryExpression`. * @param ctx the parse tree */ - exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + exitFunction?: (ctx: FunctionContext) => void; /** - * Enter a parse tree produced by the `functionExpression` + * Enter a parse tree produced by the `parenthesizedExpression` * labeled alternative in `esql_parser.primaryExpression`. * @param ctx the parse tree */ - enterFunctionExpression?: (ctx: FunctionExpressionContext) => void; + enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; /** - * Exit a parse tree produced by the `functionExpression` + * Exit a parse tree produced by the `parenthesizedExpression` * labeled alternative in `esql_parser.primaryExpression`. * @param ctx the parse tree */ - exitFunctionExpression?: (ctx: FunctionExpressionContext) => void; + exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; /** * Enter a parse tree produced by the `singleCommandQuery` @@ -570,6 +571,17 @@ export interface esql_parserListener extends ParseTreeListener { */ exitPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.functionExpression`. + * @param ctx the parse tree + */ + enterFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.functionExpression`. + * @param ctx the parse tree + */ + exitFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** * Enter a parse tree produced by `esql_parser.rowCommand`. * @param ctx the parse tree diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index b390d51d0451c..b69b9c5db6f57 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -198,6 +198,17 @@ export function createSource( }; } +export function createColumnStar(ctx: TerminalNode): ESQLColumn { + return { + type: 'column', + name: ctx.text, + text: ctx.text, + location: getPosition(ctx.symbol), + incomplete: ctx.text === '', + quoted: false, + }; +} + export function createColumn(ctx: ParserRuleContext): ESQLColumn { const text = sanifyIdentifierString(ctx); return { diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 2d060dac10230..677bc4694e05a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -28,7 +28,7 @@ import { type FieldContext, type FieldsContext, type FromCommandContext, - FunctionExpressionContext, + FunctionContext, type GrokCommandContext, IntegerLiteralContext, IsNullContext, @@ -70,6 +70,7 @@ import { createNumericLiteral, sanifyIdentifierString, computeLocationExtends, + createColumnStar, } from './ast_helpers'; import { getPosition } from './ast_position_utils'; import type { @@ -338,9 +339,16 @@ export function visitPrimaryExpression( if (ctx instanceof ParenthesizedExpressionContext) { return collectBooleanExpression(ctx.booleanExpression()); } - if (ctx instanceof FunctionExpressionContext) { - const fn = createFunction(ctx.identifier().text.toLowerCase(), ctx); - const functionArgs = ctx + if (ctx instanceof FunctionContext) { + const functionExpressionCtx = ctx.functionExpression(); + const fn = createFunction(functionExpressionCtx.identifier().text.toLowerCase(), ctx); + const asteriskArg = functionExpressionCtx.ASTERISK() + ? createColumnStar(functionExpressionCtx.ASTERISK()!) + : undefined; + if (asteriskArg) { + fn.args.push(asteriskArg); + } + const functionArgs = functionExpressionCtx .booleanExpression() .flatMap(collectBooleanExpression) .filter(nonNullable); diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts index 80f7006b79c83..91011a87a26a1 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts @@ -68,18 +68,6 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ defaultMessage: 'Returns the sum of the values in a field.', }), }, - { - name: 'count', - description: i18n.translate('monaco.esql.definitions.countDoc', { - defaultMessage: 'Returns the count of the values in a field.', - }), - }, - { - name: 'count_distinct', - description: i18n.translate('monaco.esql.definitions.countDistinctDoc', { - defaultMessage: 'Returns the count of distinct values in a field.', - }), - }, { name: 'median', description: i18n.translate('monaco.esql.definitions.medianDoc', { @@ -100,4 +88,40 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ }), args: [{ name: 'percentile', type: 'number', value: '90' }], }, -].map(createNumericAggDefinition); +] + .map(createNumericAggDefinition) + .concat([ + { + name: 'count', + description: i18n.translate('monaco.esql.definitions.countDoc', { + defaultMessage: 'Returns the count of the values in a field.', + }), + supportedCommands: ['stats'], + signatures: [ + { + params: [ + { name: 'column', type: 'any', noNestingFunctions: true, supportsWildcard: true }, + ], + returnType: 'number', + examples: [`from index | stats result = count(field)`, `from index | stats count(field)`], + }, + ], + }, + { + name: 'count_distinct', + description: i18n.translate('monaco.esql.definitions.countDistinctDoc', { + defaultMessage: 'Returns the count of distinct values in a field.', + }), + supportedCommands: ['stats'], + signatures: [ + { + params: [{ name: 'column', type: 'any', noNestingFunctions: true }], + returnType: 'number', + examples: [ + `from index | stats result = count_distinct(field)`, + `from index | stats count_distinct(field)`, + ], + }, + ], + }, + ]); diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts index f6241e63d3d51..c52f332f3f2eb 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts @@ -21,6 +21,7 @@ export interface FunctionDefinition { type: string; optional?: boolean; noNestingFunctions?: boolean; + supportsWildcard?: boolean; }>; infiniteParams?: boolean; minParams?: number; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts index c2b520ffd243a..2ac76a0b8a4d1 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts @@ -163,6 +163,15 @@ function getMessageAndTypeFromId({ }, }), }; + case 'noWildcardSupportAsArg': + return { + message: i18n.translate('monaco.esql.validation.wildcardNotSupportedForFunction', { + defaultMessage: 'Using wildcards (*) in {name} is not allowed', + values: { + name: out.name, + }, + }), + }; case 'ccsNotSupportedForCommand': return { message: i18n.translate('monaco.esql.validation.ccsNotSupportedForCommand', { diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts index 296ebc1bab492..707005d09525a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts @@ -103,6 +103,10 @@ export interface ValidationErrors { message: string; type: { command: string; value: string }; }; + noWildcardSupportAsArg: { + message: string; + type: { name: string }; + }; ccsNotSupportedForCommand: { message: string; type: { value: string }; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts index 52e24bd17ac3f..a5131d8fac6fe 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts @@ -941,6 +941,26 @@ describe('validation logic', () => { expectedErrors ); } + + // test that wildcard won't work as arg + if (fieldMapping.length === 1) { + const fieldMappingWithWildcard = [...fieldMapping]; + fieldMappingWithWildcard[0].name = '*'; + + testErrorsAndWarnings( + `from a | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithWildcard, returnType }], + }, + { withTypes: false } + )[0].declaration + }`, + [`Using wildcards (*) in ${name} is not allowed`] + ); + } } } for (const op of ['>', '>=', '<', '<=', '==']) { @@ -1123,6 +1143,10 @@ describe('validation logic', () => { 'SyntaxError: expected {, PIPE, COMMA, DOT} but found "("', ]); + testErrorsAndWarnings('from a | stats count(*)', []); + testErrorsAndWarnings('from a | stats var0 = count(*)', []); + testErrorsAndWarnings('from a | stats var0 = avg(numberField), count(*)', []); + for (const { name, alias, signatures, ...defRest } of statsAggregationFunctionDefinitions) { for (const { params, returnType } of signatures) { const fieldMapping = getFieldMapping(params); @@ -1208,6 +1232,27 @@ describe('validation logic', () => { }`, expectedErrors ); + + // test that only count() accepts wildcard as arg + // just check that the function accepts only 1 arg as the parser cannot handle multiple args with * as start arg + if (fieldMapping.length === 1) { + const fieldMappingWithWildcard = [...fieldMapping]; + fieldMappingWithWildcard[0].name = '*'; + + testErrorsAndWarnings( + `from a | stats var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithWildcard, returnType }], + }, + { withTypes: false } + )[0].declaration + }`, + name === 'count' ? [] : [`Using wildcards (*) in ${name} is not allowed`] + ); + } } } } diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts index d71d8f47779bb..195b9450c8e84 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts @@ -177,23 +177,39 @@ function validateFunctionColumnArg( }) ); } else { - // guaranteed by the check above - const columnHit = getColumnHit(nameHit!, references); - // check the type of the column hit - const typeHit = columnHit!.type; - if (!isEqualType(actualArg, argDef, references, parentCommand)) { - messages.push( - getMessageFromId({ - messageId: 'wrongArgumentType', - values: { - name: astFunction.name, - argType: argDef.type, - value: actualArg.name, - givenType: typeHit, - }, - locations: actualArg.location, - }) - ); + if (actualArg.name === '*') { + // if function does not support wildcards return a specific error + if (!('supportsWildcard' in argDef) || !argDef.supportsWildcard) { + messages.push( + getMessageFromId({ + messageId: 'noWildcardSupportAsArg', + values: { + name: astFunction.name, + }, + locations: actualArg.location, + }) + ); + } + // do not validate any further for now, only count() accepts wildcard as args... + } else { + // guaranteed by the check above + const columnHit = getColumnHit(nameHit!, references); + // check the type of the column hit + const typeHit = columnHit!.type; + if (!isEqualType(actualArg, argDef, references, parentCommand)) { + messages.push( + getMessageFromId({ + messageId: 'wrongArgumentType', + values: { + name: astFunction.name, + argType: argDef.type, + value: actualArg.name, + givenType: typeHit, + }, + locations: actualArg.location, + }) + ); + } } } }