From 7df5fc7cd689af829aa19ef02f33fb92c72b33b4 Mon Sep 17 00:00:00 2001 From: ahrefabhi Date: Wed, 25 Jun 2025 15:09:45 +0530 Subject: [PATCH] feat: added IS_NULL and IS_NOT_NULL operators and fixed support for not value operators --- frontend/src/parser/FilterQuery.interp | 6 +- frontend/src/parser/FilterQuery.tokens | 38 +- frontend/src/parser/FilterQueryLexer.interp | 8 +- frontend/src/parser/FilterQueryLexer.tokens | 38 +- frontend/src/parser/FilterQueryLexer.ts | 3684 +--------------- frontend/src/parser/FilterQueryListener.ts | 41 +- frontend/src/parser/FilterQueryParser.ts | 3817 ++++------------- frontend/src/parser/FilterQueryVisitor.ts | 45 +- .../query-grammar/.antlr/FilterQuery.interp | 6 +- .../query-grammar/.antlr/FilterQuery.tokens | 38 +- .../.antlr/FilterQueryLexer.interp | 8 +- .../.antlr/FilterQueryLexer.java | 476 +- .../.antlr/FilterQueryLexer.tokens | 38 +- .../.antlr/FilterQueryParser.java | 390 +- frontend/src/query-grammar/FilterQuery.g4 | 19 +- frontend/src/utils/queryContextUtils.ts | 6 +- frontend/src/utils/tokenUtils.ts | 11 + 17 files changed, 1747 insertions(+), 6922 deletions(-) diff --git a/frontend/src/parser/FilterQuery.interp b/frontend/src/parser/FilterQuery.interp index 59028e95f718..e08cdb1df715 100644 --- a/frontend/src/parser/FilterQuery.interp +++ b/frontend/src/parser/FilterQuery.interp @@ -38,6 +38,8 @@ null null null null +null +null token symbolic names: null @@ -61,6 +63,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -101,4 +105,4 @@ key atn: -[4, 1, 38, 213, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 151, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 175, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 180, 8, 9, 10, 9, 12, 9, 183, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 195, 8, 12, 10, 12, 12, 12, 198, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 203, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 28, 29, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 30, 33, 1, 0, 34, 37, 227, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, 162, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 184, 1, 0, 0, 0, 22, 186, 1, 0, 0, 0, 24, 191, 1, 0, 0, 0, 26, 202, 1, 0, 0, 0, 28, 204, 1, 0, 0, 0, 30, 208, 1, 0, 0, 0, 32, 210, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 29, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 28, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 27, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 151, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 151, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 151, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 151, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 151, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 151, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 151, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 151, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 28, 0, 0, 114, 115, 3, 30, 15, 0, 115, 151, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 28, 0, 0, 120, 121, 3, 30, 15, 0, 121, 151, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 151, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 151, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 151, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 151, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 137, 3, 30, 15, 0, 137, 151, 1, 0, 0, 0, 138, 139, 3, 32, 16, 0, 139, 140, 5, 22, 0, 0, 140, 141, 3, 30, 15, 0, 141, 151, 1, 0, 0, 0, 142, 143, 3, 32, 16, 0, 143, 144, 5, 23, 0, 0, 144, 145, 3, 30, 15, 0, 145, 151, 1, 0, 0, 0, 146, 147, 3, 32, 16, 0, 147, 148, 5, 24, 0, 0, 148, 149, 3, 30, 15, 0, 149, 151, 1, 0, 0, 0, 150, 78, 1, 0, 0, 0, 150, 82, 1, 0, 0, 0, 150, 86, 1, 0, 0, 0, 150, 90, 1, 0, 0, 0, 150, 94, 1, 0, 0, 0, 150, 98, 1, 0, 0, 0, 150, 102, 1, 0, 0, 0, 150, 106, 1, 0, 0, 0, 150, 110, 1, 0, 0, 0, 150, 116, 1, 0, 0, 0, 150, 122, 1, 0, 0, 0, 150, 125, 1, 0, 0, 0, 150, 128, 1, 0, 0, 0, 150, 131, 1, 0, 0, 0, 150, 134, 1, 0, 0, 0, 150, 138, 1, 0, 0, 0, 150, 142, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 151, 13, 1, 0, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 5, 1, 0, 0, 154, 155, 3, 18, 9, 0, 155, 156, 5, 2, 0, 0, 156, 163, 1, 0, 0, 0, 157, 158, 5, 25, 0, 0, 158, 159, 5, 3, 0, 0, 159, 160, 3, 18, 9, 0, 160, 161, 5, 4, 0, 0, 161, 163, 1, 0, 0, 0, 162, 152, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 163, 15, 1, 0, 0, 0, 164, 165, 5, 26, 0, 0, 165, 166, 5, 1, 0, 0, 166, 167, 3, 18, 9, 0, 167, 168, 5, 2, 0, 0, 168, 175, 1, 0, 0, 0, 169, 170, 5, 26, 0, 0, 170, 171, 5, 3, 0, 0, 171, 172, 3, 18, 9, 0, 172, 173, 5, 4, 0, 0, 173, 175, 1, 0, 0, 0, 174, 164, 1, 0, 0, 0, 174, 169, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 181, 3, 30, 15, 0, 177, 178, 5, 5, 0, 0, 178, 180, 3, 30, 15, 0, 179, 177, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 19, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 185, 5, 36, 0, 0, 185, 21, 1, 0, 0, 0, 186, 187, 7, 4, 0, 0, 187, 188, 5, 1, 0, 0, 188, 189, 3, 24, 12, 0, 189, 190, 5, 2, 0, 0, 190, 23, 1, 0, 0, 0, 191, 196, 3, 26, 13, 0, 192, 193, 5, 5, 0, 0, 193, 195, 3, 26, 13, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 25, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 203, 3, 32, 16, 0, 200, 203, 3, 30, 15, 0, 201, 203, 3, 28, 14, 0, 202, 199, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 27, 1, 0, 0, 0, 204, 205, 5, 3, 0, 0, 205, 206, 3, 18, 9, 0, 206, 207, 5, 4, 0, 0, 207, 29, 1, 0, 0, 0, 208, 209, 7, 5, 0, 0, 209, 31, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 150, 162, 174, 181, 196, 202] \ No newline at end of file +[4, 1, 40, 219, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 157, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 169, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 181, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 186, 8, 9, 10, 9, 12, 9, 189, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 201, 8, 12, 10, 12, 12, 12, 204, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 209, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 30, 31, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 32, 35, 1, 0, 36, 39, 235, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 156, 1, 0, 0, 0, 14, 168, 1, 0, 0, 0, 16, 180, 1, 0, 0, 0, 18, 182, 1, 0, 0, 0, 20, 190, 1, 0, 0, 0, 22, 192, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 208, 1, 0, 0, 0, 28, 210, 1, 0, 0, 0, 30, 214, 1, 0, 0, 0, 32, 216, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 31, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 30, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 29, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 157, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 157, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 157, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 157, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 157, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 157, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 157, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 157, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 30, 0, 0, 114, 115, 3, 30, 15, 0, 115, 157, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 30, 0, 0, 120, 121, 3, 30, 15, 0, 121, 157, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 157, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 157, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 157, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 157, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 157, 1, 0, 0, 0, 137, 138, 3, 32, 16, 0, 138, 139, 5, 22, 0, 0, 139, 157, 1, 0, 0, 0, 140, 141, 3, 32, 16, 0, 141, 142, 5, 23, 0, 0, 142, 143, 3, 30, 15, 0, 143, 157, 1, 0, 0, 0, 144, 145, 3, 32, 16, 0, 145, 146, 5, 24, 0, 0, 146, 147, 3, 30, 15, 0, 147, 157, 1, 0, 0, 0, 148, 149, 3, 32, 16, 0, 149, 150, 5, 25, 0, 0, 150, 151, 3, 30, 15, 0, 151, 157, 1, 0, 0, 0, 152, 153, 3, 32, 16, 0, 153, 154, 5, 26, 0, 0, 154, 155, 3, 30, 15, 0, 155, 157, 1, 0, 0, 0, 156, 78, 1, 0, 0, 0, 156, 82, 1, 0, 0, 0, 156, 86, 1, 0, 0, 0, 156, 90, 1, 0, 0, 0, 156, 94, 1, 0, 0, 0, 156, 98, 1, 0, 0, 0, 156, 102, 1, 0, 0, 0, 156, 106, 1, 0, 0, 0, 156, 110, 1, 0, 0, 0, 156, 116, 1, 0, 0, 0, 156, 122, 1, 0, 0, 0, 156, 125, 1, 0, 0, 0, 156, 128, 1, 0, 0, 0, 156, 131, 1, 0, 0, 0, 156, 134, 1, 0, 0, 0, 156, 137, 1, 0, 0, 0, 156, 140, 1, 0, 0, 0, 156, 144, 1, 0, 0, 0, 156, 148, 1, 0, 0, 0, 156, 152, 1, 0, 0, 0, 157, 13, 1, 0, 0, 0, 158, 159, 5, 27, 0, 0, 159, 160, 5, 1, 0, 0, 160, 161, 3, 18, 9, 0, 161, 162, 5, 2, 0, 0, 162, 169, 1, 0, 0, 0, 163, 164, 5, 27, 0, 0, 164, 165, 5, 3, 0, 0, 165, 166, 3, 18, 9, 0, 166, 167, 5, 4, 0, 0, 167, 169, 1, 0, 0, 0, 168, 158, 1, 0, 0, 0, 168, 163, 1, 0, 0, 0, 169, 15, 1, 0, 0, 0, 170, 171, 5, 28, 0, 0, 171, 172, 5, 1, 0, 0, 172, 173, 3, 18, 9, 0, 173, 174, 5, 2, 0, 0, 174, 181, 1, 0, 0, 0, 175, 176, 5, 28, 0, 0, 176, 177, 5, 3, 0, 0, 177, 178, 3, 18, 9, 0, 178, 179, 5, 4, 0, 0, 179, 181, 1, 0, 0, 0, 180, 170, 1, 0, 0, 0, 180, 175, 1, 0, 0, 0, 181, 17, 1, 0, 0, 0, 182, 187, 3, 30, 15, 0, 183, 184, 5, 5, 0, 0, 184, 186, 3, 30, 15, 0, 185, 183, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 19, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 5, 38, 0, 0, 191, 21, 1, 0, 0, 0, 192, 193, 7, 4, 0, 0, 193, 194, 5, 1, 0, 0, 194, 195, 3, 24, 12, 0, 195, 196, 5, 2, 0, 0, 196, 23, 1, 0, 0, 0, 197, 202, 3, 26, 13, 0, 198, 199, 5, 5, 0, 0, 199, 201, 3, 26, 13, 0, 200, 198, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 25, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 209, 3, 32, 16, 0, 206, 209, 3, 30, 15, 0, 207, 209, 3, 28, 14, 0, 208, 205, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209, 27, 1, 0, 0, 0, 210, 211, 5, 3, 0, 0, 211, 212, 3, 18, 9, 0, 212, 213, 5, 4, 0, 0, 213, 29, 1, 0, 0, 0, 214, 215, 7, 5, 0, 0, 215, 31, 1, 0, 0, 0, 216, 217, 5, 39, 0, 0, 217, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 156, 168, 180, 187, 202, 208] \ No newline at end of file diff --git a/frontend/src/parser/FilterQuery.tokens b/frontend/src/parser/FilterQuery.tokens index 58b4f992a113..685911112d34 100644 --- a/frontend/src/parser/FilterQuery.tokens +++ b/frontend/src/parser/FilterQuery.tokens @@ -18,24 +18,26 @@ BETWEEN=17 NOT_BETWEEN=18 EXISTS=19 NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +IS_NULL=21 +IS_NOT_NULL=22 +REGEXP=23 +NOT_REGEXP=24 +CONTAINS=25 +NOT_CONTAINS=26 +IN=27 +NOT_IN=28 +NOT=29 +AND=30 +OR=31 +HAS=32 +HASANY=33 +HASALL=34 +HASNONE=35 +BOOL=36 +NUMBER=37 +QUOTED_TEXT=38 +KEY=39 +WS=40 '('=1 ')'=2 '['=3 diff --git a/frontend/src/parser/FilterQueryLexer.interp b/frontend/src/parser/FilterQueryLexer.interp index 127061871d87..bf779763b386 100644 --- a/frontend/src/parser/FilterQueryLexer.interp +++ b/frontend/src/parser/FilterQueryLexer.interp @@ -38,6 +38,8 @@ null null null null +null +null token symbolic names: null @@ -61,6 +63,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -101,6 +105,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -129,4 +135,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 38, 359, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 93, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 120, 8, 13, 11, 13, 12, 13, 121, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 139, 8, 15, 11, 15, 12, 15, 140, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 161, 8, 17, 11, 17, 12, 17, 162, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 179, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 4, 19, 185, 8, 19, 11, 19, 12, 19, 186, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 195, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4, 21, 208, 8, 21, 11, 21, 12, 21, 209, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 227, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 4, 23, 233, 8, 23, 11, 23, 12, 23, 234, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 245, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 4, 25, 254, 8, 25, 11, 25, 12, 25, 255, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 307, 8, 33, 1, 34, 4, 34, 310, 8, 34, 11, 34, 12, 34, 311, 1, 34, 1, 34, 4, 34, 316, 8, 34, 11, 34, 12, 34, 317, 3, 34, 320, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 326, 8, 35, 10, 35, 12, 35, 329, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 336, 8, 35, 10, 35, 12, 35, 339, 9, 35, 1, 35, 3, 35, 342, 8, 35, 1, 36, 1, 36, 5, 36, 346, 8, 36, 10, 36, 12, 36, 349, 9, 36, 1, 37, 4, 37, 352, 8, 37, 11, 37, 12, 37, 353, 1, 37, 1, 37, 1, 38, 1, 38, 0, 0, 39, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 1, 0, 28, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 9, 9, 32, 32, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 380, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 79, 1, 0, 0, 0, 3, 81, 1, 0, 0, 0, 5, 83, 1, 0, 0, 0, 7, 85, 1, 0, 0, 0, 9, 87, 1, 0, 0, 0, 11, 92, 1, 0, 0, 0, 13, 94, 1, 0, 0, 0, 15, 97, 1, 0, 0, 0, 17, 100, 1, 0, 0, 0, 19, 102, 1, 0, 0, 0, 21, 105, 1, 0, 0, 0, 23, 107, 1, 0, 0, 0, 25, 110, 1, 0, 0, 0, 27, 115, 1, 0, 0, 0, 29, 128, 1, 0, 0, 0, 31, 134, 1, 0, 0, 0, 33, 148, 1, 0, 0, 0, 35, 156, 1, 0, 0, 0, 37, 172, 1, 0, 0, 0, 39, 180, 1, 0, 0, 0, 41, 196, 1, 0, 0, 0, 43, 203, 1, 0, 0, 0, 45, 218, 1, 0, 0, 0, 47, 228, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 249, 1, 0, 0, 0, 53, 260, 1, 0, 0, 0, 55, 264, 1, 0, 0, 0, 57, 268, 1, 0, 0, 0, 59, 271, 1, 0, 0, 0, 61, 275, 1, 0, 0, 0, 63, 282, 1, 0, 0, 0, 65, 289, 1, 0, 0, 0, 67, 306, 1, 0, 0, 0, 69, 309, 1, 0, 0, 0, 71, 341, 1, 0, 0, 0, 73, 343, 1, 0, 0, 0, 75, 351, 1, 0, 0, 0, 77, 357, 1, 0, 0, 0, 79, 80, 5, 40, 0, 0, 80, 2, 1, 0, 0, 0, 81, 82, 5, 41, 0, 0, 82, 4, 1, 0, 0, 0, 83, 84, 5, 91, 0, 0, 84, 6, 1, 0, 0, 0, 85, 86, 5, 93, 0, 0, 86, 8, 1, 0, 0, 0, 87, 88, 5, 44, 0, 0, 88, 10, 1, 0, 0, 0, 89, 93, 5, 61, 0, 0, 90, 91, 5, 61, 0, 0, 91, 93, 5, 61, 0, 0, 92, 89, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 12, 1, 0, 0, 0, 94, 95, 5, 33, 0, 0, 95, 96, 5, 61, 0, 0, 96, 14, 1, 0, 0, 0, 97, 98, 5, 60, 0, 0, 98, 99, 5, 62, 0, 0, 99, 16, 1, 0, 0, 0, 100, 101, 5, 60, 0, 0, 101, 18, 1, 0, 0, 0, 102, 103, 5, 60, 0, 0, 103, 104, 5, 61, 0, 0, 104, 20, 1, 0, 0, 0, 105, 106, 5, 62, 0, 0, 106, 22, 1, 0, 0, 0, 107, 108, 5, 62, 0, 0, 108, 109, 5, 61, 0, 0, 109, 24, 1, 0, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 26, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 5, 0, 0, 117, 119, 7, 6, 0, 0, 118, 120, 7, 7, 0, 0, 119, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 2, 0, 0, 126, 127, 7, 3, 0, 0, 127, 28, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 7, 1, 0, 0, 131, 132, 7, 2, 0, 0, 132, 133, 7, 3, 0, 0, 133, 30, 1, 0, 0, 0, 134, 135, 7, 4, 0, 0, 135, 136, 7, 5, 0, 0, 136, 138, 7, 6, 0, 0, 137, 139, 7, 7, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 7, 1, 0, 0, 143, 144, 7, 0, 0, 0, 144, 145, 7, 1, 0, 0, 145, 146, 7, 2, 0, 0, 146, 147, 7, 3, 0, 0, 147, 32, 1, 0, 0, 0, 148, 149, 7, 8, 0, 0, 149, 150, 7, 3, 0, 0, 150, 151, 7, 6, 0, 0, 151, 152, 7, 9, 0, 0, 152, 153, 7, 3, 0, 0, 153, 154, 7, 3, 0, 0, 154, 155, 7, 4, 0, 0, 155, 34, 1, 0, 0, 0, 156, 157, 7, 4, 0, 0, 157, 158, 7, 5, 0, 0, 158, 160, 7, 6, 0, 0, 159, 161, 7, 7, 0, 0, 160, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 7, 8, 0, 0, 165, 166, 7, 3, 0, 0, 166, 167, 7, 6, 0, 0, 167, 168, 7, 9, 0, 0, 168, 169, 7, 3, 0, 0, 169, 170, 7, 3, 0, 0, 170, 171, 7, 4, 0, 0, 171, 36, 1, 0, 0, 0, 172, 173, 7, 3, 0, 0, 173, 174, 7, 10, 0, 0, 174, 175, 7, 1, 0, 0, 175, 176, 7, 11, 0, 0, 176, 178, 7, 6, 0, 0, 177, 179, 7, 11, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 38, 1, 0, 0, 0, 180, 181, 7, 4, 0, 0, 181, 182, 7, 5, 0, 0, 182, 184, 7, 6, 0, 0, 183, 185, 7, 7, 0, 0, 184, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 189, 7, 3, 0, 0, 189, 190, 7, 10, 0, 0, 190, 191, 7, 1, 0, 0, 191, 192, 7, 11, 0, 0, 192, 194, 7, 6, 0, 0, 193, 195, 7, 11, 0, 0, 194, 193, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 40, 1, 0, 0, 0, 196, 197, 7, 12, 0, 0, 197, 198, 7, 3, 0, 0, 198, 199, 7, 13, 0, 0, 199, 200, 7, 3, 0, 0, 200, 201, 7, 10, 0, 0, 201, 202, 7, 14, 0, 0, 202, 42, 1, 0, 0, 0, 203, 204, 7, 4, 0, 0, 204, 205, 7, 5, 0, 0, 205, 207, 7, 6, 0, 0, 206, 208, 7, 7, 0, 0, 207, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 207, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 212, 7, 12, 0, 0, 212, 213, 7, 3, 0, 0, 213, 214, 7, 13, 0, 0, 214, 215, 7, 3, 0, 0, 215, 216, 7, 10, 0, 0, 216, 217, 7, 14, 0, 0, 217, 44, 1, 0, 0, 0, 218, 219, 7, 15, 0, 0, 219, 220, 7, 5, 0, 0, 220, 221, 7, 4, 0, 0, 221, 222, 7, 6, 0, 0, 222, 223, 7, 16, 0, 0, 223, 224, 7, 1, 0, 0, 224, 226, 7, 4, 0, 0, 225, 227, 7, 11, 0, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 46, 1, 0, 0, 0, 228, 229, 7, 4, 0, 0, 229, 230, 7, 5, 0, 0, 230, 232, 7, 6, 0, 0, 231, 233, 7, 7, 0, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 5, 0, 0, 238, 239, 7, 4, 0, 0, 239, 240, 7, 6, 0, 0, 240, 241, 7, 16, 0, 0, 241, 242, 7, 1, 0, 0, 242, 244, 7, 4, 0, 0, 243, 245, 7, 11, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 48, 1, 0, 0, 0, 246, 247, 7, 1, 0, 0, 247, 248, 7, 4, 0, 0, 248, 50, 1, 0, 0, 0, 249, 250, 7, 4, 0, 0, 250, 251, 7, 5, 0, 0, 251, 253, 7, 6, 0, 0, 252, 254, 7, 7, 0, 0, 253, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 7, 1, 0, 0, 258, 259, 7, 4, 0, 0, 259, 52, 1, 0, 0, 0, 260, 261, 7, 4, 0, 0, 261, 262, 7, 5, 0, 0, 262, 263, 7, 6, 0, 0, 263, 54, 1, 0, 0, 0, 264, 265, 7, 16, 0, 0, 265, 266, 7, 4, 0, 0, 266, 267, 7, 17, 0, 0, 267, 56, 1, 0, 0, 0, 268, 269, 7, 5, 0, 0, 269, 270, 7, 12, 0, 0, 270, 58, 1, 0, 0, 0, 271, 272, 7, 18, 0, 0, 272, 273, 7, 16, 0, 0, 273, 274, 7, 11, 0, 0, 274, 60, 1, 0, 0, 0, 275, 276, 7, 18, 0, 0, 276, 277, 7, 16, 0, 0, 277, 278, 7, 11, 0, 0, 278, 279, 7, 16, 0, 0, 279, 280, 7, 4, 0, 0, 280, 281, 7, 19, 0, 0, 281, 62, 1, 0, 0, 0, 282, 283, 7, 18, 0, 0, 283, 284, 7, 16, 0, 0, 284, 285, 7, 11, 0, 0, 285, 286, 7, 16, 0, 0, 286, 287, 7, 0, 0, 0, 287, 288, 7, 0, 0, 0, 288, 64, 1, 0, 0, 0, 289, 290, 7, 18, 0, 0, 290, 291, 7, 16, 0, 0, 291, 292, 7, 11, 0, 0, 292, 293, 7, 4, 0, 0, 293, 294, 7, 5, 0, 0, 294, 295, 7, 4, 0, 0, 295, 296, 7, 3, 0, 0, 296, 66, 1, 0, 0, 0, 297, 298, 7, 6, 0, 0, 298, 299, 7, 12, 0, 0, 299, 300, 7, 20, 0, 0, 300, 307, 7, 3, 0, 0, 301, 302, 7, 21, 0, 0, 302, 303, 7, 16, 0, 0, 303, 304, 7, 0, 0, 0, 304, 305, 7, 11, 0, 0, 305, 307, 7, 3, 0, 0, 306, 297, 1, 0, 0, 0, 306, 301, 1, 0, 0, 0, 307, 68, 1, 0, 0, 0, 308, 310, 3, 77, 38, 0, 309, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 319, 1, 0, 0, 0, 313, 315, 5, 46, 0, 0, 314, 316, 3, 77, 38, 0, 315, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 313, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 70, 1, 0, 0, 0, 321, 327, 5, 34, 0, 0, 322, 326, 8, 22, 0, 0, 323, 324, 5, 92, 0, 0, 324, 326, 9, 0, 0, 0, 325, 322, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 342, 5, 34, 0, 0, 331, 337, 5, 39, 0, 0, 332, 336, 8, 23, 0, 0, 333, 334, 5, 92, 0, 0, 334, 336, 9, 0, 0, 0, 335, 332, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, 342, 5, 39, 0, 0, 341, 321, 1, 0, 0, 0, 341, 331, 1, 0, 0, 0, 342, 72, 1, 0, 0, 0, 343, 347, 7, 24, 0, 0, 344, 346, 7, 25, 0, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 74, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 352, 7, 26, 0, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 6, 37, 0, 0, 356, 76, 1, 0, 0, 0, 357, 358, 7, 27, 0, 0, 358, 78, 1, 0, 0, 0, 24, 0, 92, 121, 140, 162, 178, 186, 194, 209, 226, 234, 244, 255, 306, 311, 317, 319, 325, 327, 335, 337, 341, 347, 353, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 40, 355, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 97, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 171, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 183, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 231, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 245, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 303, 8, 35, 1, 36, 4, 36, 306, 8, 36, 11, 36, 12, 36, 307, 1, 36, 1, 36, 4, 36, 312, 8, 36, 11, 36, 12, 36, 313, 3, 36, 316, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 322, 8, 37, 10, 37, 12, 37, 325, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, 9, 37, 1, 37, 3, 37, 338, 8, 37, 1, 38, 1, 38, 5, 38, 342, 8, 38, 10, 38, 12, 38, 345, 9, 38, 1, 39, 4, 39, 348, 8, 39, 11, 39, 12, 39, 349, 1, 39, 1, 39, 1, 40, 1, 40, 0, 0, 41, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 0, 1, 0, 27, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 85, 85, 117, 117, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 369, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 3, 85, 1, 0, 0, 0, 5, 87, 1, 0, 0, 0, 7, 89, 1, 0, 0, 0, 9, 91, 1, 0, 0, 0, 11, 96, 1, 0, 0, 0, 13, 98, 1, 0, 0, 0, 15, 101, 1, 0, 0, 0, 17, 104, 1, 0, 0, 0, 19, 106, 1, 0, 0, 0, 21, 109, 1, 0, 0, 0, 23, 111, 1, 0, 0, 0, 25, 114, 1, 0, 0, 0, 27, 119, 1, 0, 0, 0, 29, 128, 1, 0, 0, 0, 31, 134, 1, 0, 0, 0, 33, 144, 1, 0, 0, 0, 35, 152, 1, 0, 0, 0, 37, 164, 1, 0, 0, 0, 39, 172, 1, 0, 0, 0, 41, 184, 1, 0, 0, 0, 43, 192, 1, 0, 0, 0, 45, 204, 1, 0, 0, 0, 47, 211, 1, 0, 0, 0, 49, 222, 1, 0, 0, 0, 51, 232, 1, 0, 0, 0, 53, 246, 1, 0, 0, 0, 55, 249, 1, 0, 0, 0, 57, 256, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, 1, 0, 0, 0, 63, 267, 1, 0, 0, 0, 65, 271, 1, 0, 0, 0, 67, 278, 1, 0, 0, 0, 69, 285, 1, 0, 0, 0, 71, 302, 1, 0, 0, 0, 73, 305, 1, 0, 0, 0, 75, 337, 1, 0, 0, 0, 77, 339, 1, 0, 0, 0, 79, 347, 1, 0, 0, 0, 81, 353, 1, 0, 0, 0, 83, 84, 5, 40, 0, 0, 84, 2, 1, 0, 0, 0, 85, 86, 5, 41, 0, 0, 86, 4, 1, 0, 0, 0, 87, 88, 5, 91, 0, 0, 88, 6, 1, 0, 0, 0, 89, 90, 5, 93, 0, 0, 90, 8, 1, 0, 0, 0, 91, 92, 5, 44, 0, 0, 92, 10, 1, 0, 0, 0, 93, 97, 5, 61, 0, 0, 94, 95, 5, 61, 0, 0, 95, 97, 5, 61, 0, 0, 96, 93, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 97, 12, 1, 0, 0, 0, 98, 99, 5, 33, 0, 0, 99, 100, 5, 61, 0, 0, 100, 14, 1, 0, 0, 0, 101, 102, 5, 60, 0, 0, 102, 103, 5, 62, 0, 0, 103, 16, 1, 0, 0, 0, 104, 105, 5, 60, 0, 0, 105, 18, 1, 0, 0, 0, 106, 107, 5, 60, 0, 0, 107, 108, 5, 61, 0, 0, 108, 20, 1, 0, 0, 0, 109, 110, 5, 62, 0, 0, 110, 22, 1, 0, 0, 0, 111, 112, 5, 62, 0, 0, 112, 113, 5, 61, 0, 0, 113, 24, 1, 0, 0, 0, 114, 115, 7, 0, 0, 0, 115, 116, 7, 1, 0, 0, 116, 117, 7, 2, 0, 0, 117, 118, 7, 3, 0, 0, 118, 26, 1, 0, 0, 0, 119, 120, 7, 4, 0, 0, 120, 121, 7, 5, 0, 0, 121, 122, 7, 6, 0, 0, 122, 123, 5, 95, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 2, 0, 0, 126, 127, 7, 3, 0, 0, 127, 28, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 7, 1, 0, 0, 131, 132, 7, 2, 0, 0, 132, 133, 7, 3, 0, 0, 133, 30, 1, 0, 0, 0, 134, 135, 7, 4, 0, 0, 135, 136, 7, 5, 0, 0, 136, 137, 7, 6, 0, 0, 137, 138, 5, 95, 0, 0, 138, 139, 7, 1, 0, 0, 139, 140, 7, 0, 0, 0, 140, 141, 7, 1, 0, 0, 141, 142, 7, 2, 0, 0, 142, 143, 7, 3, 0, 0, 143, 32, 1, 0, 0, 0, 144, 145, 7, 7, 0, 0, 145, 146, 7, 3, 0, 0, 146, 147, 7, 6, 0, 0, 147, 148, 7, 8, 0, 0, 148, 149, 7, 3, 0, 0, 149, 150, 7, 3, 0, 0, 150, 151, 7, 4, 0, 0, 151, 34, 1, 0, 0, 0, 152, 153, 7, 4, 0, 0, 153, 154, 7, 5, 0, 0, 154, 155, 7, 6, 0, 0, 155, 156, 5, 95, 0, 0, 156, 157, 7, 7, 0, 0, 157, 158, 7, 3, 0, 0, 158, 159, 7, 6, 0, 0, 159, 160, 7, 8, 0, 0, 160, 161, 7, 3, 0, 0, 161, 162, 7, 3, 0, 0, 162, 163, 7, 4, 0, 0, 163, 36, 1, 0, 0, 0, 164, 165, 7, 3, 0, 0, 165, 166, 7, 9, 0, 0, 166, 167, 7, 1, 0, 0, 167, 168, 7, 10, 0, 0, 168, 170, 7, 6, 0, 0, 169, 171, 7, 10, 0, 0, 170, 169, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 38, 1, 0, 0, 0, 172, 173, 7, 4, 0, 0, 173, 174, 7, 5, 0, 0, 174, 175, 7, 6, 0, 0, 175, 176, 5, 45, 0, 0, 176, 177, 7, 3, 0, 0, 177, 178, 7, 9, 0, 0, 178, 179, 7, 1, 0, 0, 179, 180, 7, 10, 0, 0, 180, 182, 7, 6, 0, 0, 181, 183, 7, 10, 0, 0, 182, 181, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 40, 1, 0, 0, 0, 184, 185, 7, 1, 0, 0, 185, 186, 7, 10, 0, 0, 186, 187, 5, 95, 0, 0, 187, 188, 7, 4, 0, 0, 188, 189, 7, 11, 0, 0, 189, 190, 7, 0, 0, 0, 190, 191, 7, 0, 0, 0, 191, 42, 1, 0, 0, 0, 192, 193, 7, 1, 0, 0, 193, 194, 7, 10, 0, 0, 194, 195, 5, 95, 0, 0, 195, 196, 7, 4, 0, 0, 196, 197, 7, 5, 0, 0, 197, 198, 7, 6, 0, 0, 198, 199, 5, 95, 0, 0, 199, 200, 7, 4, 0, 0, 200, 201, 7, 11, 0, 0, 201, 202, 7, 0, 0, 0, 202, 203, 7, 0, 0, 0, 203, 44, 1, 0, 0, 0, 204, 205, 7, 12, 0, 0, 205, 206, 7, 3, 0, 0, 206, 207, 7, 13, 0, 0, 207, 208, 7, 3, 0, 0, 208, 209, 7, 9, 0, 0, 209, 210, 7, 14, 0, 0, 210, 46, 1, 0, 0, 0, 211, 212, 7, 4, 0, 0, 212, 213, 7, 5, 0, 0, 213, 214, 7, 6, 0, 0, 214, 215, 5, 95, 0, 0, 215, 216, 7, 12, 0, 0, 216, 217, 7, 3, 0, 0, 217, 218, 7, 13, 0, 0, 218, 219, 7, 3, 0, 0, 219, 220, 7, 9, 0, 0, 220, 221, 7, 14, 0, 0, 221, 48, 1, 0, 0, 0, 222, 223, 7, 15, 0, 0, 223, 224, 7, 5, 0, 0, 224, 225, 7, 4, 0, 0, 225, 226, 7, 6, 0, 0, 226, 227, 7, 16, 0, 0, 227, 228, 7, 1, 0, 0, 228, 230, 7, 4, 0, 0, 229, 231, 7, 10, 0, 0, 230, 229, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 50, 1, 0, 0, 0, 232, 233, 7, 4, 0, 0, 233, 234, 7, 5, 0, 0, 234, 235, 7, 6, 0, 0, 235, 236, 5, 95, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 5, 0, 0, 238, 239, 7, 4, 0, 0, 239, 240, 7, 6, 0, 0, 240, 241, 7, 16, 0, 0, 241, 242, 7, 1, 0, 0, 242, 244, 7, 4, 0, 0, 243, 245, 7, 10, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 52, 1, 0, 0, 0, 246, 247, 7, 1, 0, 0, 247, 248, 7, 4, 0, 0, 248, 54, 1, 0, 0, 0, 249, 250, 7, 4, 0, 0, 250, 251, 7, 5, 0, 0, 251, 252, 7, 6, 0, 0, 252, 253, 5, 95, 0, 0, 253, 254, 7, 1, 0, 0, 254, 255, 7, 4, 0, 0, 255, 56, 1, 0, 0, 0, 256, 257, 7, 4, 0, 0, 257, 258, 7, 5, 0, 0, 258, 259, 7, 6, 0, 0, 259, 58, 1, 0, 0, 0, 260, 261, 7, 16, 0, 0, 261, 262, 7, 4, 0, 0, 262, 263, 7, 17, 0, 0, 263, 60, 1, 0, 0, 0, 264, 265, 7, 5, 0, 0, 265, 266, 7, 12, 0, 0, 266, 62, 1, 0, 0, 0, 267, 268, 7, 18, 0, 0, 268, 269, 7, 16, 0, 0, 269, 270, 7, 10, 0, 0, 270, 64, 1, 0, 0, 0, 271, 272, 7, 18, 0, 0, 272, 273, 7, 16, 0, 0, 273, 274, 7, 10, 0, 0, 274, 275, 7, 16, 0, 0, 275, 276, 7, 4, 0, 0, 276, 277, 7, 19, 0, 0, 277, 66, 1, 0, 0, 0, 278, 279, 7, 18, 0, 0, 279, 280, 7, 16, 0, 0, 280, 281, 7, 10, 0, 0, 281, 282, 7, 16, 0, 0, 282, 283, 7, 0, 0, 0, 283, 284, 7, 0, 0, 0, 284, 68, 1, 0, 0, 0, 285, 286, 7, 18, 0, 0, 286, 287, 7, 16, 0, 0, 287, 288, 7, 10, 0, 0, 288, 289, 7, 4, 0, 0, 289, 290, 7, 5, 0, 0, 290, 291, 7, 4, 0, 0, 291, 292, 7, 3, 0, 0, 292, 70, 1, 0, 0, 0, 293, 294, 7, 6, 0, 0, 294, 295, 7, 12, 0, 0, 295, 296, 7, 11, 0, 0, 296, 303, 7, 3, 0, 0, 297, 298, 7, 20, 0, 0, 298, 299, 7, 16, 0, 0, 299, 300, 7, 0, 0, 0, 300, 301, 7, 10, 0, 0, 301, 303, 7, 3, 0, 0, 302, 293, 1, 0, 0, 0, 302, 297, 1, 0, 0, 0, 303, 72, 1, 0, 0, 0, 304, 306, 3, 81, 40, 0, 305, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 315, 1, 0, 0, 0, 309, 311, 5, 46, 0, 0, 310, 312, 3, 81, 40, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 74, 1, 0, 0, 0, 317, 323, 5, 34, 0, 0, 318, 322, 8, 21, 0, 0, 319, 320, 5, 92, 0, 0, 320, 322, 9, 0, 0, 0, 321, 318, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 338, 5, 34, 0, 0, 327, 333, 5, 39, 0, 0, 328, 332, 8, 22, 0, 0, 329, 330, 5, 92, 0, 0, 330, 332, 9, 0, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 338, 5, 39, 0, 0, 337, 317, 1, 0, 0, 0, 337, 327, 1, 0, 0, 0, 338, 76, 1, 0, 0, 0, 339, 343, 7, 23, 0, 0, 340, 342, 7, 24, 0, 0, 341, 340, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 78, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 348, 7, 25, 0, 0, 347, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 6, 39, 0, 0, 352, 80, 1, 0, 0, 0, 353, 354, 7, 26, 0, 0, 354, 82, 1, 0, 0, 0, 17, 0, 96, 170, 182, 230, 244, 302, 307, 313, 315, 321, 323, 331, 333, 337, 343, 349, 1, 6, 0, 0] \ No newline at end of file diff --git a/frontend/src/parser/FilterQueryLexer.tokens b/frontend/src/parser/FilterQueryLexer.tokens index 58b4f992a113..685911112d34 100644 --- a/frontend/src/parser/FilterQueryLexer.tokens +++ b/frontend/src/parser/FilterQueryLexer.tokens @@ -18,24 +18,26 @@ BETWEEN=17 NOT_BETWEEN=18 EXISTS=19 NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +IS_NULL=21 +IS_NOT_NULL=22 +REGEXP=23 +NOT_REGEXP=24 +CONTAINS=25 +NOT_CONTAINS=26 +IN=27 +NOT_IN=28 +NOT=29 +AND=30 +OR=31 +HAS=32 +HASANY=33 +HASALL=34 +HASNONE=35 +BOOL=36 +NUMBER=37 +QUOTED_TEXT=38 +KEY=39 +WS=40 '('=1 ')'=2 '['=3 diff --git a/frontend/src/parser/FilterQueryLexer.ts b/frontend/src/parser/FilterQueryLexer.ts index 4eff211d3086..79d9387f5eb3 100644 --- a/frontend/src/parser/FilterQueryLexer.ts +++ b/frontend/src/parser/FilterQueryLexer.ts @@ -1,17 +1,16 @@ -// Generated from src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from FilterQuery.g4 by ANTLR 4.13.1 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { ATN, ATNDeserializer, CharStream, - DecisionState, - DFA, + DecisionState, DFA, Lexer, LexerATNSimulator, RuleContext, PredictionContextCache, - Token, -} from 'antlr4'; + Token +} from "antlr4"; export default class FilterQueryLexer extends Lexer { public static readonly LPAREN = 1; public static readonly RPAREN = 2; @@ -33,3511 +32,218 @@ export default class FilterQueryLexer extends Lexer { public static readonly NOT_BETWEEN = 18; public static readonly EXISTS = 19; public static readonly NOT_EXISTS = 20; - public static readonly REGEXP = 21; - public static readonly NOT_REGEXP = 22; - public static readonly CONTAINS = 23; - public static readonly NOT_CONTAINS = 24; - public static readonly IN = 25; - public static readonly NOT_IN = 26; - public static readonly NOT = 27; - public static readonly AND = 28; - public static readonly OR = 29; - public static readonly HAS = 30; - public static readonly HASANY = 31; - public static readonly HASALL = 32; - public static readonly HASNONE = 33; - public static readonly BOOL = 34; - public static readonly NUMBER = 35; - public static readonly QUOTED_TEXT = 36; - public static readonly KEY = 37; - public static readonly WS = 38; + public static readonly IS_NULL = 21; + public static readonly IS_NOT_NULL = 22; + public static readonly REGEXP = 23; + public static readonly NOT_REGEXP = 24; + public static readonly CONTAINS = 25; + public static readonly NOT_CONTAINS = 26; + public static readonly IN = 27; + public static readonly NOT_IN = 28; + public static readonly NOT = 29; + public static readonly AND = 30; + public static readonly OR = 31; + public static readonly HAS = 32; + public static readonly HASANY = 33; + public static readonly HASALL = 34; + public static readonly HASNONE = 35; + public static readonly BOOL = 36; + public static readonly NUMBER = 37; + public static readonly QUOTED_TEXT = 38; + public static readonly KEY = 39; + public static readonly WS = 40; public static readonly EOF = Token.EOF; - public static readonly channelNames: string[] = [ - 'DEFAULT_TOKEN_CHANNEL', - 'HIDDEN', - ]; - public static readonly literalNames: (string | null)[] = [ - null, - "'('", - "')'", - "'['", - "']'", - "','", - null, - "'!='", - "'<>'", - "'<'", - "'<='", - "'>'", - "'>='", - ]; - public static readonly symbolicNames: (string | null)[] = [ - null, - 'LPAREN', - 'RPAREN', - 'LBRACK', - 'RBRACK', - 'COMMA', - 'EQUALS', - 'NOT_EQUALS', - 'NEQ', - 'LT', - 'LE', - 'GT', - 'GE', - 'LIKE', - 'NOT_LIKE', - 'ILIKE', - 'NOT_ILIKE', - 'BETWEEN', - 'NOT_BETWEEN', - 'EXISTS', - 'NOT_EXISTS', - 'REGEXP', - 'NOT_REGEXP', - 'CONTAINS', - 'NOT_CONTAINS', - 'IN', - 'NOT_IN', - 'NOT', - 'AND', - 'OR', - 'HAS', - 'HASANY', - 'HASALL', - 'HASNONE', - 'BOOL', - 'NUMBER', - 'QUOTED_TEXT', - 'KEY', - 'WS', - ]; - public static readonly modeNames: string[] = ['DEFAULT_MODE']; + public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; + public static readonly literalNames: (string | null)[] = [ null, "'('", + "')'", "'['", + "']'", "','", + null, "'!='", + "'<>'", "'<'", + "'<='", "'>'", + "'>='" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "LPAREN", + "RPAREN", "LBRACK", + "RBRACK", "COMMA", + "EQUALS", "NOT_EQUALS", + "NEQ", "LT", + "LE", "GT", + "GE", "LIKE", + "NOT_LIKE", + "ILIKE", "NOT_ILIKE", + "BETWEEN", + "NOT_BETWEEN", + "EXISTS", "NOT_EXISTS", + "IS_NULL", + "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", + "CONTAINS", + "NOT_CONTAINS", + "IN", "NOT_IN", + "NOT", "AND", + "OR", "HAS", + "HASANY", "HASALL", + "HASNONE", + "BOOL", "NUMBER", + "QUOTED_TEXT", + "KEY", "WS" ]; + public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; public static readonly ruleNames: string[] = [ - 'LPAREN', - 'RPAREN', - 'LBRACK', - 'RBRACK', - 'COMMA', - 'EQUALS', - 'NOT_EQUALS', - 'NEQ', - 'LT', - 'LE', - 'GT', - 'GE', - 'LIKE', - 'NOT_LIKE', - 'ILIKE', - 'NOT_ILIKE', - 'BETWEEN', - 'NOT_BETWEEN', - 'EXISTS', - 'NOT_EXISTS', - 'REGEXP', - 'NOT_REGEXP', - 'CONTAINS', - 'NOT_CONTAINS', - 'IN', - 'NOT_IN', - 'NOT', - 'AND', - 'OR', - 'HAS', - 'HASANY', - 'HASALL', - 'HASNONE', - 'BOOL', - 'NUMBER', - 'QUOTED_TEXT', - 'KEY', - 'WS', - 'DIGIT', + "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", + "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", + "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "IS_NULL", "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", + "AND", "OR", "HAS", "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", + "KEY", "WS", "DIGIT", ]; + constructor(input: CharStream) { super(input); - this._interp = new LexerATNSimulator( - this, - FilterQueryLexer._ATN, - FilterQueryLexer.DecisionsToDFA, - new PredictionContextCache(), - ); + this._interp = new LexerATNSimulator(this, FilterQueryLexer._ATN, FilterQueryLexer.DecisionsToDFA, new PredictionContextCache()); } - public get grammarFileName(): string { - return 'FilterQuery.g4'; - } + public get grammarFileName(): string { return "FilterQuery.g4"; } - public get literalNames(): (string | null)[] { - return FilterQueryLexer.literalNames; - } - public get symbolicNames(): (string | null)[] { - return FilterQueryLexer.symbolicNames; - } - public get ruleNames(): string[] { - return FilterQueryLexer.ruleNames; - } + public get literalNames(): (string | null)[] { return FilterQueryLexer.literalNames; } + public get symbolicNames(): (string | null)[] { return FilterQueryLexer.symbolicNames; } + public get ruleNames(): string[] { return FilterQueryLexer.ruleNames; } - public get serializedATN(): number[] { - return FilterQueryLexer._serializedATN; - } + public get serializedATN(): number[] { return FilterQueryLexer._serializedATN; } - public get channelNames(): string[] { - return FilterQueryLexer.channelNames; - } + public get channelNames(): string[] { return FilterQueryLexer.channelNames; } - public get modeNames(): string[] { - return FilterQueryLexer.modeNames; - } + public get modeNames(): string[] { return FilterQueryLexer.modeNames; } - public static readonly _serializedATN: number[] = [ - 4, - 0, - 38, - 359, - 6, - -1, - 2, - 0, - 7, - 0, - 2, - 1, - 7, - 1, - 2, - 2, - 7, - 2, - 2, - 3, - 7, - 3, - 2, - 4, - 7, - 4, - 2, - 5, - 7, - 5, - 2, - 6, - 7, - 6, - 2, - 7, - 7, - 7, - 2, - 8, - 7, - 8, - 2, - 9, - 7, - 9, - 2, - 10, - 7, - 10, - 2, - 11, - 7, - 11, - 2, - 12, - 7, - 12, - 2, - 13, - 7, - 13, - 2, - 14, - 7, - 14, - 2, - 15, - 7, - 15, - 2, - 16, - 7, - 16, - 2, - 17, - 7, - 17, - 2, - 18, - 7, - 18, - 2, - 19, - 7, - 19, - 2, - 20, - 7, - 20, - 2, - 21, - 7, - 21, - 2, - 22, - 7, - 22, - 2, - 23, - 7, - 23, - 2, - 24, - 7, - 24, - 2, - 25, - 7, - 25, - 2, - 26, - 7, - 26, - 2, - 27, - 7, - 27, - 2, - 28, - 7, - 28, - 2, - 29, - 7, - 29, - 2, - 30, - 7, - 30, - 2, - 31, - 7, - 31, - 2, - 32, - 7, - 32, - 2, - 33, - 7, - 33, - 2, - 34, - 7, - 34, - 2, - 35, - 7, - 35, - 2, - 36, - 7, - 36, - 2, - 37, - 7, - 37, - 2, - 38, - 7, - 38, - 1, - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 2, - 1, - 3, - 1, - 3, - 1, - 4, - 1, - 4, - 1, - 5, - 1, - 5, - 1, - 5, - 3, - 5, - 93, - 8, - 5, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 8, - 1, - 8, - 1, - 9, - 1, - 9, - 1, - 9, - 1, - 10, - 1, - 10, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 4, - 13, - 120, - 8, - 13, - 11, - 13, - 12, - 13, - 121, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 4, - 15, - 139, - 8, - 15, - 11, - 15, - 12, - 15, - 140, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 4, - 17, - 161, - 8, - 17, - 11, - 17, - 12, - 17, - 162, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 3, - 18, - 179, - 8, - 18, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 4, - 19, - 185, - 8, - 19, - 11, - 19, - 12, - 19, - 186, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 195, - 8, - 19, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 4, - 21, - 208, - 8, - 21, - 11, - 21, - 12, - 21, - 209, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 3, - 22, - 227, - 8, - 22, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 4, - 23, - 233, - 8, - 23, - 11, - 23, - 12, - 23, - 234, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 3, - 23, - 245, - 8, - 23, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 4, - 25, - 254, - 8, - 25, - 11, - 25, - 12, - 25, - 255, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 3, - 33, - 307, - 8, - 33, - 1, - 34, - 4, - 34, - 310, - 8, - 34, - 11, - 34, - 12, - 34, - 311, - 1, - 34, - 1, - 34, - 4, - 34, - 316, - 8, - 34, - 11, - 34, - 12, - 34, - 317, - 3, - 34, - 320, - 8, - 34, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 5, - 35, - 326, - 8, - 35, - 10, - 35, - 12, - 35, - 329, - 9, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 5, - 35, - 336, - 8, - 35, - 10, - 35, - 12, - 35, - 339, - 9, - 35, - 1, - 35, - 3, - 35, - 342, - 8, - 35, - 1, - 36, - 1, - 36, - 5, - 36, - 346, - 8, - 36, - 10, - 36, - 12, - 36, - 349, - 9, - 36, - 1, - 37, - 4, - 37, - 352, - 8, - 37, - 11, - 37, - 12, - 37, - 353, - 1, - 37, - 1, - 37, - 1, - 38, - 1, - 38, - 0, - 0, - 39, - 1, - 1, - 3, - 2, - 5, - 3, - 7, - 4, - 9, - 5, - 11, - 6, - 13, - 7, - 15, - 8, - 17, - 9, - 19, - 10, - 21, - 11, - 23, - 12, - 25, - 13, - 27, - 14, - 29, - 15, - 31, - 16, - 33, - 17, - 35, - 18, - 37, - 19, - 39, - 20, - 41, - 21, - 43, - 22, - 45, - 23, - 47, - 24, - 49, - 25, - 51, - 26, - 53, - 27, - 55, - 28, - 57, - 29, - 59, - 30, - 61, - 31, - 63, - 32, - 65, - 33, - 67, - 34, - 69, - 35, - 71, - 36, - 73, - 37, - 75, - 38, - 77, - 0, - 1, - 0, - 28, - 2, - 0, - 76, - 76, - 108, - 108, - 2, - 0, - 73, - 73, - 105, - 105, - 2, - 0, - 75, - 75, - 107, - 107, - 2, - 0, - 69, - 69, - 101, - 101, - 2, - 0, - 78, - 78, - 110, - 110, - 2, - 0, - 79, - 79, - 111, - 111, - 2, - 0, - 84, - 84, - 116, - 116, - 2, - 0, - 9, - 9, - 32, - 32, - 2, - 0, - 66, - 66, - 98, - 98, - 2, - 0, - 87, - 87, - 119, - 119, - 2, - 0, - 88, - 88, - 120, - 120, - 2, - 0, - 83, - 83, - 115, - 115, - 2, - 0, - 82, - 82, - 114, - 114, - 2, - 0, - 71, - 71, - 103, - 103, - 2, - 0, - 80, - 80, - 112, - 112, - 2, - 0, - 67, - 67, - 99, - 99, - 2, - 0, - 65, - 65, - 97, - 97, - 2, - 0, - 68, - 68, - 100, - 100, - 2, - 0, - 72, - 72, - 104, - 104, - 2, - 0, - 89, - 89, - 121, - 121, - 2, - 0, - 85, - 85, - 117, - 117, - 2, - 0, - 70, - 70, - 102, - 102, - 2, - 0, - 34, - 34, - 92, - 92, - 2, - 0, - 39, - 39, - 92, - 92, - 4, - 0, - 48, - 57, - 65, - 90, - 95, - 95, - 97, - 122, - 6, - 0, - 46, - 46, - 48, - 57, - 65, - 91, - 93, - 93, - 95, - 95, - 97, - 122, - 3, - 0, - 9, - 10, - 13, - 13, - 32, - 32, - 1, - 0, - 48, - 57, - 380, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 3, - 1, - 0, - 0, - 0, - 0, - 5, - 1, - 0, - 0, - 0, - 0, - 7, - 1, - 0, - 0, - 0, - 0, - 9, - 1, - 0, - 0, - 0, - 0, - 11, - 1, - 0, - 0, - 0, - 0, - 13, - 1, - 0, - 0, - 0, - 0, - 15, - 1, - 0, - 0, - 0, - 0, - 17, - 1, - 0, - 0, - 0, - 0, - 19, - 1, - 0, - 0, - 0, - 0, - 21, - 1, - 0, - 0, - 0, - 0, - 23, - 1, - 0, - 0, - 0, - 0, - 25, - 1, - 0, - 0, - 0, - 0, - 27, - 1, - 0, - 0, - 0, - 0, - 29, - 1, - 0, - 0, - 0, - 0, - 31, - 1, - 0, - 0, - 0, - 0, - 33, - 1, - 0, - 0, - 0, - 0, - 35, - 1, - 0, - 0, - 0, - 0, - 37, - 1, - 0, - 0, - 0, - 0, - 39, - 1, - 0, - 0, - 0, - 0, - 41, - 1, - 0, - 0, - 0, - 0, - 43, - 1, - 0, - 0, - 0, - 0, - 45, - 1, - 0, - 0, - 0, - 0, - 47, - 1, - 0, - 0, - 0, - 0, - 49, - 1, - 0, - 0, - 0, - 0, - 51, - 1, - 0, - 0, - 0, - 0, - 53, - 1, - 0, - 0, - 0, - 0, - 55, - 1, - 0, - 0, - 0, - 0, - 57, - 1, - 0, - 0, - 0, - 0, - 59, - 1, - 0, - 0, - 0, - 0, - 61, - 1, - 0, - 0, - 0, - 0, - 63, - 1, - 0, - 0, - 0, - 0, - 65, - 1, - 0, - 0, - 0, - 0, - 67, - 1, - 0, - 0, - 0, - 0, - 69, - 1, - 0, - 0, - 0, - 0, - 71, - 1, - 0, - 0, - 0, - 0, - 73, - 1, - 0, - 0, - 0, - 0, - 75, - 1, - 0, - 0, - 0, - 1, - 79, - 1, - 0, - 0, - 0, - 3, - 81, - 1, - 0, - 0, - 0, - 5, - 83, - 1, - 0, - 0, - 0, - 7, - 85, - 1, - 0, - 0, - 0, - 9, - 87, - 1, - 0, - 0, - 0, - 11, - 92, - 1, - 0, - 0, - 0, - 13, - 94, - 1, - 0, - 0, - 0, - 15, - 97, - 1, - 0, - 0, - 0, - 17, - 100, - 1, - 0, - 0, - 0, - 19, - 102, - 1, - 0, - 0, - 0, - 21, - 105, - 1, - 0, - 0, - 0, - 23, - 107, - 1, - 0, - 0, - 0, - 25, - 110, - 1, - 0, - 0, - 0, - 27, - 115, - 1, - 0, - 0, - 0, - 29, - 128, - 1, - 0, - 0, - 0, - 31, - 134, - 1, - 0, - 0, - 0, - 33, - 148, - 1, - 0, - 0, - 0, - 35, - 156, - 1, - 0, - 0, - 0, - 37, - 172, - 1, - 0, - 0, - 0, - 39, - 180, - 1, - 0, - 0, - 0, - 41, - 196, - 1, - 0, - 0, - 0, - 43, - 203, - 1, - 0, - 0, - 0, - 45, - 218, - 1, - 0, - 0, - 0, - 47, - 228, - 1, - 0, - 0, - 0, - 49, - 246, - 1, - 0, - 0, - 0, - 51, - 249, - 1, - 0, - 0, - 0, - 53, - 260, - 1, - 0, - 0, - 0, - 55, - 264, - 1, - 0, - 0, - 0, - 57, - 268, - 1, - 0, - 0, - 0, - 59, - 271, - 1, - 0, - 0, - 0, - 61, - 275, - 1, - 0, - 0, - 0, - 63, - 282, - 1, - 0, - 0, - 0, - 65, - 289, - 1, - 0, - 0, - 0, - 67, - 306, - 1, - 0, - 0, - 0, - 69, - 309, - 1, - 0, - 0, - 0, - 71, - 341, - 1, - 0, - 0, - 0, - 73, - 343, - 1, - 0, - 0, - 0, - 75, - 351, - 1, - 0, - 0, - 0, - 77, - 357, - 1, - 0, - 0, - 0, - 79, - 80, - 5, - 40, - 0, - 0, - 80, - 2, - 1, - 0, - 0, - 0, - 81, - 82, - 5, - 41, - 0, - 0, - 82, - 4, - 1, - 0, - 0, - 0, - 83, - 84, - 5, - 91, - 0, - 0, - 84, - 6, - 1, - 0, - 0, - 0, - 85, - 86, - 5, - 93, - 0, - 0, - 86, - 8, - 1, - 0, - 0, - 0, - 87, - 88, - 5, - 44, - 0, - 0, - 88, - 10, - 1, - 0, - 0, - 0, - 89, - 93, - 5, - 61, - 0, - 0, - 90, - 91, - 5, - 61, - 0, - 0, - 91, - 93, - 5, - 61, - 0, - 0, - 92, - 89, - 1, - 0, - 0, - 0, - 92, - 90, - 1, - 0, - 0, - 0, - 93, - 12, - 1, - 0, - 0, - 0, - 94, - 95, - 5, - 33, - 0, - 0, - 95, - 96, - 5, - 61, - 0, - 0, - 96, - 14, - 1, - 0, - 0, - 0, - 97, - 98, - 5, - 60, - 0, - 0, - 98, - 99, - 5, - 62, - 0, - 0, - 99, - 16, - 1, - 0, - 0, - 0, - 100, - 101, - 5, - 60, - 0, - 0, - 101, - 18, - 1, - 0, - 0, - 0, - 102, - 103, - 5, - 60, - 0, - 0, - 103, - 104, - 5, - 61, - 0, - 0, - 104, - 20, - 1, - 0, - 0, - 0, - 105, - 106, - 5, - 62, - 0, - 0, - 106, - 22, - 1, - 0, - 0, - 0, - 107, - 108, - 5, - 62, - 0, - 0, - 108, - 109, - 5, - 61, - 0, - 0, - 109, - 24, - 1, - 0, - 0, - 0, - 110, - 111, - 7, - 0, - 0, - 0, - 111, - 112, - 7, - 1, - 0, - 0, - 112, - 113, - 7, - 2, - 0, - 0, - 113, - 114, - 7, - 3, - 0, - 0, - 114, - 26, - 1, - 0, - 0, - 0, - 115, - 116, - 7, - 4, - 0, - 0, - 116, - 117, - 7, - 5, - 0, - 0, - 117, - 119, - 7, - 6, - 0, - 0, - 118, - 120, - 7, - 7, - 0, - 0, - 119, - 118, - 1, - 0, - 0, - 0, - 120, - 121, - 1, - 0, - 0, - 0, - 121, - 119, - 1, - 0, - 0, - 0, - 121, - 122, - 1, - 0, - 0, - 0, - 122, - 123, - 1, - 0, - 0, - 0, - 123, - 124, - 7, - 0, - 0, - 0, - 124, - 125, - 7, - 1, - 0, - 0, - 125, - 126, - 7, - 2, - 0, - 0, - 126, - 127, - 7, - 3, - 0, - 0, - 127, - 28, - 1, - 0, - 0, - 0, - 128, - 129, - 7, - 1, - 0, - 0, - 129, - 130, - 7, - 0, - 0, - 0, - 130, - 131, - 7, - 1, - 0, - 0, - 131, - 132, - 7, - 2, - 0, - 0, - 132, - 133, - 7, - 3, - 0, - 0, - 133, - 30, - 1, - 0, - 0, - 0, - 134, - 135, - 7, - 4, - 0, - 0, - 135, - 136, - 7, - 5, - 0, - 0, - 136, - 138, - 7, - 6, - 0, - 0, - 137, - 139, - 7, - 7, - 0, - 0, - 138, - 137, - 1, - 0, - 0, - 0, - 139, - 140, - 1, - 0, - 0, - 0, - 140, - 138, - 1, - 0, - 0, - 0, - 140, - 141, - 1, - 0, - 0, - 0, - 141, - 142, - 1, - 0, - 0, - 0, - 142, - 143, - 7, - 1, - 0, - 0, - 143, - 144, - 7, - 0, - 0, - 0, - 144, - 145, - 7, - 1, - 0, - 0, - 145, - 146, - 7, - 2, - 0, - 0, - 146, - 147, - 7, - 3, - 0, - 0, - 147, - 32, - 1, - 0, - 0, - 0, - 148, - 149, - 7, - 8, - 0, - 0, - 149, - 150, - 7, - 3, - 0, - 0, - 150, - 151, - 7, - 6, - 0, - 0, - 151, - 152, - 7, - 9, - 0, - 0, - 152, - 153, - 7, - 3, - 0, - 0, - 153, - 154, - 7, - 3, - 0, - 0, - 154, - 155, - 7, - 4, - 0, - 0, - 155, - 34, - 1, - 0, - 0, - 0, - 156, - 157, - 7, - 4, - 0, - 0, - 157, - 158, - 7, - 5, - 0, - 0, - 158, - 160, - 7, - 6, - 0, - 0, - 159, - 161, - 7, - 7, - 0, - 0, - 160, - 159, - 1, - 0, - 0, - 0, - 161, - 162, - 1, - 0, - 0, - 0, - 162, - 160, - 1, - 0, - 0, - 0, - 162, - 163, - 1, - 0, - 0, - 0, - 163, - 164, - 1, - 0, - 0, - 0, - 164, - 165, - 7, - 8, - 0, - 0, - 165, - 166, - 7, - 3, - 0, - 0, - 166, - 167, - 7, - 6, - 0, - 0, - 167, - 168, - 7, - 9, - 0, - 0, - 168, - 169, - 7, - 3, - 0, - 0, - 169, - 170, - 7, - 3, - 0, - 0, - 170, - 171, - 7, - 4, - 0, - 0, - 171, - 36, - 1, - 0, - 0, - 0, - 172, - 173, - 7, - 3, - 0, - 0, - 173, - 174, - 7, - 10, - 0, - 0, - 174, - 175, - 7, - 1, - 0, - 0, - 175, - 176, - 7, - 11, - 0, - 0, - 176, - 178, - 7, - 6, - 0, - 0, - 177, - 179, - 7, - 11, - 0, - 0, - 178, - 177, - 1, - 0, - 0, - 0, - 178, - 179, - 1, - 0, - 0, - 0, - 179, - 38, - 1, - 0, - 0, - 0, - 180, - 181, - 7, - 4, - 0, - 0, - 181, - 182, - 7, - 5, - 0, - 0, - 182, - 184, - 7, - 6, - 0, - 0, - 183, - 185, - 7, - 7, - 0, - 0, - 184, - 183, - 1, - 0, - 0, - 0, - 185, - 186, - 1, - 0, - 0, - 0, - 186, - 184, - 1, - 0, - 0, - 0, - 186, - 187, - 1, - 0, - 0, - 0, - 187, - 188, - 1, - 0, - 0, - 0, - 188, - 189, - 7, - 3, - 0, - 0, - 189, - 190, - 7, - 10, - 0, - 0, - 190, - 191, - 7, - 1, - 0, - 0, - 191, - 192, - 7, - 11, - 0, - 0, - 192, - 194, - 7, - 6, - 0, - 0, - 193, - 195, - 7, - 11, - 0, - 0, - 194, - 193, - 1, - 0, - 0, - 0, - 194, - 195, - 1, - 0, - 0, - 0, - 195, - 40, - 1, - 0, - 0, - 0, - 196, - 197, - 7, - 12, - 0, - 0, - 197, - 198, - 7, - 3, - 0, - 0, - 198, - 199, - 7, - 13, - 0, - 0, - 199, - 200, - 7, - 3, - 0, - 0, - 200, - 201, - 7, - 10, - 0, - 0, - 201, - 202, - 7, - 14, - 0, - 0, - 202, - 42, - 1, - 0, - 0, - 0, - 203, - 204, - 7, - 4, - 0, - 0, - 204, - 205, - 7, - 5, - 0, - 0, - 205, - 207, - 7, - 6, - 0, - 0, - 206, - 208, - 7, - 7, - 0, - 0, - 207, - 206, - 1, - 0, - 0, - 0, - 208, - 209, - 1, - 0, - 0, - 0, - 209, - 207, - 1, - 0, - 0, - 0, - 209, - 210, - 1, - 0, - 0, - 0, - 210, - 211, - 1, - 0, - 0, - 0, - 211, - 212, - 7, - 12, - 0, - 0, - 212, - 213, - 7, - 3, - 0, - 0, - 213, - 214, - 7, - 13, - 0, - 0, - 214, - 215, - 7, - 3, - 0, - 0, - 215, - 216, - 7, - 10, - 0, - 0, - 216, - 217, - 7, - 14, - 0, - 0, - 217, - 44, - 1, - 0, - 0, - 0, - 218, - 219, - 7, - 15, - 0, - 0, - 219, - 220, - 7, - 5, - 0, - 0, - 220, - 221, - 7, - 4, - 0, - 0, - 221, - 222, - 7, - 6, - 0, - 0, - 222, - 223, - 7, - 16, - 0, - 0, - 223, - 224, - 7, - 1, - 0, - 0, - 224, - 226, - 7, - 4, - 0, - 0, - 225, - 227, - 7, - 11, - 0, - 0, - 226, - 225, - 1, - 0, - 0, - 0, - 226, - 227, - 1, - 0, - 0, - 0, - 227, - 46, - 1, - 0, - 0, - 0, - 228, - 229, - 7, - 4, - 0, - 0, - 229, - 230, - 7, - 5, - 0, - 0, - 230, - 232, - 7, - 6, - 0, - 0, - 231, - 233, - 7, - 7, - 0, - 0, - 232, - 231, - 1, - 0, - 0, - 0, - 233, - 234, - 1, - 0, - 0, - 0, - 234, - 232, - 1, - 0, - 0, - 0, - 234, - 235, - 1, - 0, - 0, - 0, - 235, - 236, - 1, - 0, - 0, - 0, - 236, - 237, - 7, - 15, - 0, - 0, - 237, - 238, - 7, - 5, - 0, - 0, - 238, - 239, - 7, - 4, - 0, - 0, - 239, - 240, - 7, - 6, - 0, - 0, - 240, - 241, - 7, - 16, - 0, - 0, - 241, - 242, - 7, - 1, - 0, - 0, - 242, - 244, - 7, - 4, - 0, - 0, - 243, - 245, - 7, - 11, - 0, - 0, - 244, - 243, - 1, - 0, - 0, - 0, - 244, - 245, - 1, - 0, - 0, - 0, - 245, - 48, - 1, - 0, - 0, - 0, - 246, - 247, - 7, - 1, - 0, - 0, - 247, - 248, - 7, - 4, - 0, - 0, - 248, - 50, - 1, - 0, - 0, - 0, - 249, - 250, - 7, - 4, - 0, - 0, - 250, - 251, - 7, - 5, - 0, - 0, - 251, - 253, - 7, - 6, - 0, - 0, - 252, - 254, - 7, - 7, - 0, - 0, - 253, - 252, - 1, - 0, - 0, - 0, - 254, - 255, - 1, - 0, - 0, - 0, - 255, - 253, - 1, - 0, - 0, - 0, - 255, - 256, - 1, - 0, - 0, - 0, - 256, - 257, - 1, - 0, - 0, - 0, - 257, - 258, - 7, - 1, - 0, - 0, - 258, - 259, - 7, - 4, - 0, - 0, - 259, - 52, - 1, - 0, - 0, - 0, - 260, - 261, - 7, - 4, - 0, - 0, - 261, - 262, - 7, - 5, - 0, - 0, - 262, - 263, - 7, - 6, - 0, - 0, - 263, - 54, - 1, - 0, - 0, - 0, - 264, - 265, - 7, - 16, - 0, - 0, - 265, - 266, - 7, - 4, - 0, - 0, - 266, - 267, - 7, - 17, - 0, - 0, - 267, - 56, - 1, - 0, - 0, - 0, - 268, - 269, - 7, - 5, - 0, - 0, - 269, - 270, - 7, - 12, - 0, - 0, - 270, - 58, - 1, - 0, - 0, - 0, - 271, - 272, - 7, - 18, - 0, - 0, - 272, - 273, - 7, - 16, - 0, - 0, - 273, - 274, - 7, - 11, - 0, - 0, - 274, - 60, - 1, - 0, - 0, - 0, - 275, - 276, - 7, - 18, - 0, - 0, - 276, - 277, - 7, - 16, - 0, - 0, - 277, - 278, - 7, - 11, - 0, - 0, - 278, - 279, - 7, - 16, - 0, - 0, - 279, - 280, - 7, - 4, - 0, - 0, - 280, - 281, - 7, - 19, - 0, - 0, - 281, - 62, - 1, - 0, - 0, - 0, - 282, - 283, - 7, - 18, - 0, - 0, - 283, - 284, - 7, - 16, - 0, - 0, - 284, - 285, - 7, - 11, - 0, - 0, - 285, - 286, - 7, - 16, - 0, - 0, - 286, - 287, - 7, - 0, - 0, - 0, - 287, - 288, - 7, - 0, - 0, - 0, - 288, - 64, - 1, - 0, - 0, - 0, - 289, - 290, - 7, - 18, - 0, - 0, - 290, - 291, - 7, - 16, - 0, - 0, - 291, - 292, - 7, - 11, - 0, - 0, - 292, - 293, - 7, - 4, - 0, - 0, - 293, - 294, - 7, - 5, - 0, - 0, - 294, - 295, - 7, - 4, - 0, - 0, - 295, - 296, - 7, - 3, - 0, - 0, - 296, - 66, - 1, - 0, - 0, - 0, - 297, - 298, - 7, - 6, - 0, - 0, - 298, - 299, - 7, - 12, - 0, - 0, - 299, - 300, - 7, - 20, - 0, - 0, - 300, - 307, - 7, - 3, - 0, - 0, - 301, - 302, - 7, - 21, - 0, - 0, - 302, - 303, - 7, - 16, - 0, - 0, - 303, - 304, - 7, - 0, - 0, - 0, - 304, - 305, - 7, - 11, - 0, - 0, - 305, - 307, - 7, - 3, - 0, - 0, - 306, - 297, - 1, - 0, - 0, - 0, - 306, - 301, - 1, - 0, - 0, - 0, - 307, - 68, - 1, - 0, - 0, - 0, - 308, - 310, - 3, - 77, - 38, - 0, - 309, - 308, - 1, - 0, - 0, - 0, - 310, - 311, - 1, - 0, - 0, - 0, - 311, - 309, - 1, - 0, - 0, - 0, - 311, - 312, - 1, - 0, - 0, - 0, - 312, - 319, - 1, - 0, - 0, - 0, - 313, - 315, - 5, - 46, - 0, - 0, - 314, - 316, - 3, - 77, - 38, - 0, - 315, - 314, - 1, - 0, - 0, - 0, - 316, - 317, - 1, - 0, - 0, - 0, - 317, - 315, - 1, - 0, - 0, - 0, - 317, - 318, - 1, - 0, - 0, - 0, - 318, - 320, - 1, - 0, - 0, - 0, - 319, - 313, - 1, - 0, - 0, - 0, - 319, - 320, - 1, - 0, - 0, - 0, - 320, - 70, - 1, - 0, - 0, - 0, - 321, - 327, - 5, - 34, - 0, - 0, - 322, - 326, - 8, - 22, - 0, - 0, - 323, - 324, - 5, - 92, - 0, - 0, - 324, - 326, - 9, - 0, - 0, - 0, - 325, - 322, - 1, - 0, - 0, - 0, - 325, - 323, - 1, - 0, - 0, - 0, - 326, - 329, - 1, - 0, - 0, - 0, - 327, - 325, - 1, - 0, - 0, - 0, - 327, - 328, - 1, - 0, - 0, - 0, - 328, - 330, - 1, - 0, - 0, - 0, - 329, - 327, - 1, - 0, - 0, - 0, - 330, - 342, - 5, - 34, - 0, - 0, - 331, - 337, - 5, - 39, - 0, - 0, - 332, - 336, - 8, - 23, - 0, - 0, - 333, - 334, - 5, - 92, - 0, - 0, - 334, - 336, - 9, - 0, - 0, - 0, - 335, - 332, - 1, - 0, - 0, - 0, - 335, - 333, - 1, - 0, - 0, - 0, - 336, - 339, - 1, - 0, - 0, - 0, - 337, - 335, - 1, - 0, - 0, - 0, - 337, - 338, - 1, - 0, - 0, - 0, - 338, - 340, - 1, - 0, - 0, - 0, - 339, - 337, - 1, - 0, - 0, - 0, - 340, - 342, - 5, - 39, - 0, - 0, - 341, - 321, - 1, - 0, - 0, - 0, - 341, - 331, - 1, - 0, - 0, - 0, - 342, - 72, - 1, - 0, - 0, - 0, - 343, - 347, - 7, - 24, - 0, - 0, - 344, - 346, - 7, - 25, - 0, - 0, - 345, - 344, - 1, - 0, - 0, - 0, - 346, - 349, - 1, - 0, - 0, - 0, - 347, - 345, - 1, - 0, - 0, - 0, - 347, - 348, - 1, - 0, - 0, - 0, - 348, - 74, - 1, - 0, - 0, - 0, - 349, - 347, - 1, - 0, - 0, - 0, - 350, - 352, - 7, - 26, - 0, - 0, - 351, - 350, - 1, - 0, - 0, - 0, - 352, - 353, - 1, - 0, - 0, - 0, - 353, - 351, - 1, - 0, - 0, - 0, - 353, - 354, - 1, - 0, - 0, - 0, - 354, - 355, - 1, - 0, - 0, - 0, - 355, - 356, - 6, - 37, - 0, - 0, - 356, - 76, - 1, - 0, - 0, - 0, - 357, - 358, - 7, - 27, - 0, - 0, - 358, - 78, - 1, - 0, - 0, - 0, - 24, - 0, - 92, - 121, - 140, - 162, - 178, - 186, - 194, - 209, - 226, - 234, - 244, - 255, - 306, - 311, - 317, - 319, - 325, - 327, - 335, - 337, - 341, - 347, - 353, - 1, - 6, - 0, - 0, - ]; + public static readonly _serializedATN: number[] = [4,0,40,355,6,-1,2,0, + 7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9, + 7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7, + 16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23, + 2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2, + 31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38, + 7,38,2,39,7,39,2,40,7,40,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1, + 5,1,5,3,5,97,8,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,9,1,9,1,9,1,10,1,10, + 1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18, + 1,18,3,18,171,8,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3, + 19,183,8,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1, + 22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,3,24,231,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1, + 25,1,25,1,25,1,25,1,25,1,25,3,25,245,8,25,1,26,1,26,1,26,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,30,1,30,1, + 30,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33, + 1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,303,8,35,1,36,4,36,306,8,36,11,36, + 12,36,307,1,36,1,36,4,36,312,8,36,11,36,12,36,313,3,36,316,8,36,1,37,1, + 37,1,37,1,37,5,37,322,8,37,10,37,12,37,325,9,37,1,37,1,37,1,37,1,37,1,37, + 5,37,332,8,37,10,37,12,37,335,9,37,1,37,3,37,338,8,37,1,38,1,38,5,38,342, + 8,38,10,38,12,38,345,9,38,1,39,4,39,348,8,39,11,39,12,39,349,1,39,1,39, + 1,40,1,40,0,0,41,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23, + 12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47, + 24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, + 36,73,37,75,38,77,39,79,40,81,0,1,0,27,2,0,76,76,108,108,2,0,73,73,105, + 105,2,0,75,75,107,107,2,0,69,69,101,101,2,0,78,78,110,110,2,0,79,79,111, + 111,2,0,84,84,116,116,2,0,66,66,98,98,2,0,87,87,119,119,2,0,88,88,120,120, + 2,0,83,83,115,115,2,0,85,85,117,117,2,0,82,82,114,114,2,0,71,71,103,103, + 2,0,80,80,112,112,2,0,67,67,99,99,2,0,65,65,97,97,2,0,68,68,100,100,2,0, + 72,72,104,104,2,0,89,89,121,121,2,0,70,70,102,102,2,0,34,34,92,92,2,0,39, + 39,92,92,4,0,48,57,65,90,95,95,97,122,6,0,46,46,48,57,65,91,93,93,95,95, + 97,122,3,0,9,10,13,13,32,32,1,0,48,57,369,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1, + 0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0, + 17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0, + 0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0, + 39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0, + 0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0, + 61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0, + 0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,1,83,1,0,0,0,3, + 85,1,0,0,0,5,87,1,0,0,0,7,89,1,0,0,0,9,91,1,0,0,0,11,96,1,0,0,0,13,98,1, + 0,0,0,15,101,1,0,0,0,17,104,1,0,0,0,19,106,1,0,0,0,21,109,1,0,0,0,23,111, + 1,0,0,0,25,114,1,0,0,0,27,119,1,0,0,0,29,128,1,0,0,0,31,134,1,0,0,0,33, + 144,1,0,0,0,35,152,1,0,0,0,37,164,1,0,0,0,39,172,1,0,0,0,41,184,1,0,0,0, + 43,192,1,0,0,0,45,204,1,0,0,0,47,211,1,0,0,0,49,222,1,0,0,0,51,232,1,0, + 0,0,53,246,1,0,0,0,55,249,1,0,0,0,57,256,1,0,0,0,59,260,1,0,0,0,61,264, + 1,0,0,0,63,267,1,0,0,0,65,271,1,0,0,0,67,278,1,0,0,0,69,285,1,0,0,0,71, + 302,1,0,0,0,73,305,1,0,0,0,75,337,1,0,0,0,77,339,1,0,0,0,79,347,1,0,0,0, + 81,353,1,0,0,0,83,84,5,40,0,0,84,2,1,0,0,0,85,86,5,41,0,0,86,4,1,0,0,0, + 87,88,5,91,0,0,88,6,1,0,0,0,89,90,5,93,0,0,90,8,1,0,0,0,91,92,5,44,0,0, + 92,10,1,0,0,0,93,97,5,61,0,0,94,95,5,61,0,0,95,97,5,61,0,0,96,93,1,0,0, + 0,96,94,1,0,0,0,97,12,1,0,0,0,98,99,5,33,0,0,99,100,5,61,0,0,100,14,1,0, + 0,0,101,102,5,60,0,0,102,103,5,62,0,0,103,16,1,0,0,0,104,105,5,60,0,0,105, + 18,1,0,0,0,106,107,5,60,0,0,107,108,5,61,0,0,108,20,1,0,0,0,109,110,5,62, + 0,0,110,22,1,0,0,0,111,112,5,62,0,0,112,113,5,61,0,0,113,24,1,0,0,0,114, + 115,7,0,0,0,115,116,7,1,0,0,116,117,7,2,0,0,117,118,7,3,0,0,118,26,1,0, + 0,0,119,120,7,4,0,0,120,121,7,5,0,0,121,122,7,6,0,0,122,123,5,95,0,0,123, + 124,7,0,0,0,124,125,7,1,0,0,125,126,7,2,0,0,126,127,7,3,0,0,127,28,1,0, + 0,0,128,129,7,1,0,0,129,130,7,0,0,0,130,131,7,1,0,0,131,132,7,2,0,0,132, + 133,7,3,0,0,133,30,1,0,0,0,134,135,7,4,0,0,135,136,7,5,0,0,136,137,7,6, + 0,0,137,138,5,95,0,0,138,139,7,1,0,0,139,140,7,0,0,0,140,141,7,1,0,0,141, + 142,7,2,0,0,142,143,7,3,0,0,143,32,1,0,0,0,144,145,7,7,0,0,145,146,7,3, + 0,0,146,147,7,6,0,0,147,148,7,8,0,0,148,149,7,3,0,0,149,150,7,3,0,0,150, + 151,7,4,0,0,151,34,1,0,0,0,152,153,7,4,0,0,153,154,7,5,0,0,154,155,7,6, + 0,0,155,156,5,95,0,0,156,157,7,7,0,0,157,158,7,3,0,0,158,159,7,6,0,0,159, + 160,7,8,0,0,160,161,7,3,0,0,161,162,7,3,0,0,162,163,7,4,0,0,163,36,1,0, + 0,0,164,165,7,3,0,0,165,166,7,9,0,0,166,167,7,1,0,0,167,168,7,10,0,0,168, + 170,7,6,0,0,169,171,7,10,0,0,170,169,1,0,0,0,170,171,1,0,0,0,171,38,1,0, + 0,0,172,173,7,4,0,0,173,174,7,5,0,0,174,175,7,6,0,0,175,176,5,45,0,0,176, + 177,7,3,0,0,177,178,7,9,0,0,178,179,7,1,0,0,179,180,7,10,0,0,180,182,7, + 6,0,0,181,183,7,10,0,0,182,181,1,0,0,0,182,183,1,0,0,0,183,40,1,0,0,0,184, + 185,7,1,0,0,185,186,7,10,0,0,186,187,5,95,0,0,187,188,7,4,0,0,188,189,7, + 11,0,0,189,190,7,0,0,0,190,191,7,0,0,0,191,42,1,0,0,0,192,193,7,1,0,0,193, + 194,7,10,0,0,194,195,5,95,0,0,195,196,7,4,0,0,196,197,7,5,0,0,197,198,7, + 6,0,0,198,199,5,95,0,0,199,200,7,4,0,0,200,201,7,11,0,0,201,202,7,0,0,0, + 202,203,7,0,0,0,203,44,1,0,0,0,204,205,7,12,0,0,205,206,7,3,0,0,206,207, + 7,13,0,0,207,208,7,3,0,0,208,209,7,9,0,0,209,210,7,14,0,0,210,46,1,0,0, + 0,211,212,7,4,0,0,212,213,7,5,0,0,213,214,7,6,0,0,214,215,5,95,0,0,215, + 216,7,12,0,0,216,217,7,3,0,0,217,218,7,13,0,0,218,219,7,3,0,0,219,220,7, + 9,0,0,220,221,7,14,0,0,221,48,1,0,0,0,222,223,7,15,0,0,223,224,7,5,0,0, + 224,225,7,4,0,0,225,226,7,6,0,0,226,227,7,16,0,0,227,228,7,1,0,0,228,230, + 7,4,0,0,229,231,7,10,0,0,230,229,1,0,0,0,230,231,1,0,0,0,231,50,1,0,0,0, + 232,233,7,4,0,0,233,234,7,5,0,0,234,235,7,6,0,0,235,236,5,95,0,0,236,237, + 7,15,0,0,237,238,7,5,0,0,238,239,7,4,0,0,239,240,7,6,0,0,240,241,7,16,0, + 0,241,242,7,1,0,0,242,244,7,4,0,0,243,245,7,10,0,0,244,243,1,0,0,0,244, + 245,1,0,0,0,245,52,1,0,0,0,246,247,7,1,0,0,247,248,7,4,0,0,248,54,1,0,0, + 0,249,250,7,4,0,0,250,251,7,5,0,0,251,252,7,6,0,0,252,253,5,95,0,0,253, + 254,7,1,0,0,254,255,7,4,0,0,255,56,1,0,0,0,256,257,7,4,0,0,257,258,7,5, + 0,0,258,259,7,6,0,0,259,58,1,0,0,0,260,261,7,16,0,0,261,262,7,4,0,0,262, + 263,7,17,0,0,263,60,1,0,0,0,264,265,7,5,0,0,265,266,7,12,0,0,266,62,1,0, + 0,0,267,268,7,18,0,0,268,269,7,16,0,0,269,270,7,10,0,0,270,64,1,0,0,0,271, + 272,7,18,0,0,272,273,7,16,0,0,273,274,7,10,0,0,274,275,7,16,0,0,275,276, + 7,4,0,0,276,277,7,19,0,0,277,66,1,0,0,0,278,279,7,18,0,0,279,280,7,16,0, + 0,280,281,7,10,0,0,281,282,7,16,0,0,282,283,7,0,0,0,283,284,7,0,0,0,284, + 68,1,0,0,0,285,286,7,18,0,0,286,287,7,16,0,0,287,288,7,10,0,0,288,289,7, + 4,0,0,289,290,7,5,0,0,290,291,7,4,0,0,291,292,7,3,0,0,292,70,1,0,0,0,293, + 294,7,6,0,0,294,295,7,12,0,0,295,296,7,11,0,0,296,303,7,3,0,0,297,298,7, + 20,0,0,298,299,7,16,0,0,299,300,7,0,0,0,300,301,7,10,0,0,301,303,7,3,0, + 0,302,293,1,0,0,0,302,297,1,0,0,0,303,72,1,0,0,0,304,306,3,81,40,0,305, + 304,1,0,0,0,306,307,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308,315,1,0, + 0,0,309,311,5,46,0,0,310,312,3,81,40,0,311,310,1,0,0,0,312,313,1,0,0,0, + 313,311,1,0,0,0,313,314,1,0,0,0,314,316,1,0,0,0,315,309,1,0,0,0,315,316, + 1,0,0,0,316,74,1,0,0,0,317,323,5,34,0,0,318,322,8,21,0,0,319,320,5,92,0, + 0,320,322,9,0,0,0,321,318,1,0,0,0,321,319,1,0,0,0,322,325,1,0,0,0,323,321, + 1,0,0,0,323,324,1,0,0,0,324,326,1,0,0,0,325,323,1,0,0,0,326,338,5,34,0, + 0,327,333,5,39,0,0,328,332,8,22,0,0,329,330,5,92,0,0,330,332,9,0,0,0,331, + 328,1,0,0,0,331,329,1,0,0,0,332,335,1,0,0,0,333,331,1,0,0,0,333,334,1,0, + 0,0,334,336,1,0,0,0,335,333,1,0,0,0,336,338,5,39,0,0,337,317,1,0,0,0,337, + 327,1,0,0,0,338,76,1,0,0,0,339,343,7,23,0,0,340,342,7,24,0,0,341,340,1, + 0,0,0,342,345,1,0,0,0,343,341,1,0,0,0,343,344,1,0,0,0,344,78,1,0,0,0,345, + 343,1,0,0,0,346,348,7,25,0,0,347,346,1,0,0,0,348,349,1,0,0,0,349,347,1, + 0,0,0,349,350,1,0,0,0,350,351,1,0,0,0,351,352,6,39,0,0,352,80,1,0,0,0,353, + 354,7,26,0,0,354,82,1,0,0,0,17,0,96,170,182,230,244,302,307,313,315,321, + 323,331,333,337,343,349,1,6,0,0]; private static __ATN: ATN; public static get _ATN(): ATN { if (!FilterQueryLexer.__ATN) { - FilterQueryLexer.__ATN = new ATNDeserializer().deserialize( - FilterQueryLexer._serializedATN, - ); + FilterQueryLexer.__ATN = new ATNDeserializer().deserialize(FilterQueryLexer._serializedATN); } return FilterQueryLexer.__ATN; } - static DecisionsToDFA = FilterQueryLexer._ATN.decisionToState.map( - (ds: DecisionState, index: number) => new DFA(ds, index), - ); -} + + static DecisionsToDFA = FilterQueryLexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); +} \ No newline at end of file diff --git a/frontend/src/parser/FilterQueryListener.ts b/frontend/src/parser/FilterQueryListener.ts index 31cdb19c9644..8fd9bf9c28f8 100644 --- a/frontend/src/parser/FilterQueryListener.ts +++ b/frontend/src/parser/FilterQueryListener.ts @@ -1,24 +1,26 @@ -// Generated from src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from FilterQuery.g4 by ANTLR 4.13.1 -import { ParseTreeListener } from 'antlr4'; +import {ParseTreeListener} from "antlr4"; + + +import { QueryContext } from "./FilterQueryParser"; +import { ExpressionContext } from "./FilterQueryParser"; +import { OrExpressionContext } from "./FilterQueryParser"; +import { AndExpressionContext } from "./FilterQueryParser"; +import { UnaryExpressionContext } from "./FilterQueryParser"; +import { PrimaryContext } from "./FilterQueryParser"; +import { ComparisonContext } from "./FilterQueryParser"; +import { InClauseContext } from "./FilterQueryParser"; +import { NotInClauseContext } from "./FilterQueryParser"; +import { ValueListContext } from "./FilterQueryParser"; +import { FullTextContext } from "./FilterQueryParser"; +import { FunctionCallContext } from "./FilterQueryParser"; +import { FunctionParamListContext } from "./FilterQueryParser"; +import { FunctionParamContext } from "./FilterQueryParser"; +import { ArrayContext } from "./FilterQueryParser"; +import { ValueContext } from "./FilterQueryParser"; +import { KeyContext } from "./FilterQueryParser"; -import { QueryContext } from './FilterQueryParser'; -import { ExpressionContext } from './FilterQueryParser'; -import { OrExpressionContext } from './FilterQueryParser'; -import { AndExpressionContext } from './FilterQueryParser'; -import { UnaryExpressionContext } from './FilterQueryParser'; -import { PrimaryContext } from './FilterQueryParser'; -import { ComparisonContext } from './FilterQueryParser'; -import { InClauseContext } from './FilterQueryParser'; -import { NotInClauseContext } from './FilterQueryParser'; -import { ValueListContext } from './FilterQueryParser'; -import { FullTextContext } from './FilterQueryParser'; -import { FunctionCallContext } from './FilterQueryParser'; -import { FunctionParamListContext } from './FilterQueryParser'; -import { FunctionParamContext } from './FilterQueryParser'; -import { ArrayContext } from './FilterQueryParser'; -import { ValueContext } from './FilterQueryParser'; -import { KeyContext } from './FilterQueryParser'; /** * This interface defines a complete listener for a parse tree produced by @@ -196,3 +198,4 @@ export default class FilterQueryListener extends ParseTreeListener { */ exitKey?: (ctx: KeyContext) => void; } + diff --git a/frontend/src/parser/FilterQueryParser.ts b/frontend/src/parser/FilterQueryParser.ts index 7cdcc52d0ecf..bd8669c16de6 100644 --- a/frontend/src/parser/FilterQueryParser.ts +++ b/frontend/src/parser/FilterQueryParser.ts @@ -1,30 +1,18 @@ -// Generated from src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from FilterQuery.g4 by ANTLR 4.13.1 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { ATN, - ATNDeserializer, - DecisionState, - DFA, - FailedPredicateException, - RecognitionException, - NoViableAltException, - BailErrorStrategy, - Parser, - ParserATNSimulator, - RuleContext, - ParserRuleContext, - PredictionMode, - PredictionContextCache, - TerminalNode, - RuleNode, - Token, - TokenStream, - Interval, - IntervalSet, + ATNDeserializer, DecisionState, DFA, FailedPredicateException, + RecognitionException, NoViableAltException, BailErrorStrategy, + Parser, ParserATNSimulator, + RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, + TerminalNode, RuleNode, + Token, TokenStream, + Interval, IntervalSet } from 'antlr4'; -import FilterQueryListener from './FilterQueryListener.js'; -import FilterQueryVisitor from './FilterQueryVisitor.js'; +import FilterQueryListener from "./FilterQueryListener.js"; +import FilterQueryVisitor from "./FilterQueryVisitor.js"; // for running tests with parameters, TODO: discuss strategy for typed parameters in CI // eslint-disable-next-line no-unused-vars @@ -51,24 +39,26 @@ export default class FilterQueryParser extends Parser { public static readonly NOT_BETWEEN = 18; public static readonly EXISTS = 19; public static readonly NOT_EXISTS = 20; - public static readonly REGEXP = 21; - public static readonly NOT_REGEXP = 22; - public static readonly CONTAINS = 23; - public static readonly NOT_CONTAINS = 24; - public static readonly IN = 25; - public static readonly NOT_IN = 26; - public static readonly NOT = 27; - public static readonly AND = 28; - public static readonly OR = 29; - public static readonly HAS = 30; - public static readonly HASANY = 31; - public static readonly HASALL = 32; - public static readonly HASNONE = 33; - public static readonly BOOL = 34; - public static readonly NUMBER = 35; - public static readonly QUOTED_TEXT = 36; - public static readonly KEY = 37; - public static readonly WS = 38; + public static readonly IS_NULL = 21; + public static readonly IS_NOT_NULL = 22; + public static readonly REGEXP = 23; + public static readonly NOT_REGEXP = 24; + public static readonly CONTAINS = 25; + public static readonly NOT_CONTAINS = 26; + public static readonly IN = 27; + public static readonly NOT_IN = 28; + public static readonly NOT = 29; + public static readonly AND = 30; + public static readonly OR = 31; + public static readonly HAS = 32; + public static readonly HASANY = 33; + public static readonly HASALL = 34; + public static readonly HASNONE = 35; + public static readonly BOOL = 36; + public static readonly NUMBER = 37; + public static readonly QUOTED_TEXT = 38; + public static readonly KEY = 39; + public static readonly WS = 40; public static readonly EOF = Token.EOF; public static readonly RULE_query = 0; public static readonly RULE_expression = 1; @@ -87,113 +77,58 @@ export default class FilterQueryParser extends Parser { public static readonly RULE_array = 14; public static readonly RULE_value = 15; public static readonly RULE_key = 16; - public static readonly literalNames: (string | null)[] = [ - null, - "'('", - "')'", - "'['", - "']'", - "','", - null, - "'!='", - "'<>'", - "'<'", - "'<='", - "'>'", - "'>='", - ]; - public static readonly symbolicNames: (string | null)[] = [ - null, - 'LPAREN', - 'RPAREN', - 'LBRACK', - 'RBRACK', - 'COMMA', - 'EQUALS', - 'NOT_EQUALS', - 'NEQ', - 'LT', - 'LE', - 'GT', - 'GE', - 'LIKE', - 'NOT_LIKE', - 'ILIKE', - 'NOT_ILIKE', - 'BETWEEN', - 'NOT_BETWEEN', - 'EXISTS', - 'NOT_EXISTS', - 'REGEXP', - 'NOT_REGEXP', - 'CONTAINS', - 'NOT_CONTAINS', - 'IN', - 'NOT_IN', - 'NOT', - 'AND', - 'OR', - 'HAS', - 'HASANY', - 'HASALL', - 'HASNONE', - 'BOOL', - 'NUMBER', - 'QUOTED_TEXT', - 'KEY', - 'WS', - ]; + public static readonly literalNames: (string | null)[] = [ null, "'('", + "')'", "'['", + "']'", "','", + null, "'!='", + "'<>'", "'<'", + "'<='", "'>'", + "'>='" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "LPAREN", + "RPAREN", "LBRACK", + "RBRACK", "COMMA", + "EQUALS", "NOT_EQUALS", + "NEQ", "LT", + "LE", "GT", + "GE", "LIKE", + "NOT_LIKE", + "ILIKE", "NOT_ILIKE", + "BETWEEN", + "NOT_BETWEEN", + "EXISTS", "NOT_EXISTS", + "IS_NULL", + "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", + "CONTAINS", + "NOT_CONTAINS", + "IN", "NOT_IN", + "NOT", "AND", + "OR", "HAS", + "HASANY", "HASALL", + "HASNONE", + "BOOL", "NUMBER", + "QUOTED_TEXT", + "KEY", "WS" ]; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ - 'query', - 'expression', - 'orExpression', - 'andExpression', - 'unaryExpression', - 'primary', - 'comparison', - 'inClause', - 'notInClause', - 'valueList', - 'fullText', - 'functionCall', - 'functionParamList', - 'functionParam', - 'array', - 'value', - 'key', + "query", "expression", "orExpression", "andExpression", "unaryExpression", + "primary", "comparison", "inClause", "notInClause", "valueList", "fullText", + "functionCall", "functionParamList", "functionParam", "array", "value", + "key", ]; - public get grammarFileName(): string { - return 'FilterQuery.g4'; - } - public get literalNames(): (string | null)[] { - return FilterQueryParser.literalNames; - } - public get symbolicNames(): (string | null)[] { - return FilterQueryParser.symbolicNames; - } - public get ruleNames(): string[] { - return FilterQueryParser.ruleNames; - } - public get serializedATN(): number[] { - return FilterQueryParser._serializedATN; - } + public get grammarFileName(): string { return "FilterQuery.g4"; } + public get literalNames(): (string | null)[] { return FilterQueryParser.literalNames; } + public get symbolicNames(): (string | null)[] { return FilterQueryParser.symbolicNames; } + public get ruleNames(): string[] { return FilterQueryParser.ruleNames; } + public get serializedATN(): number[] { return FilterQueryParser._serializedATN; } - protected createFailedPredicateException( - predicate?: string, - message?: string, - ): FailedPredicateException { + protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { return new FailedPredicateException(this, predicate, message); } constructor(input: TokenStream) { super(input); - this._interp = new ParserATNSimulator( - this, - FilterQueryParser._ATN, - FilterQueryParser.DecisionsToDFA, - new PredictionContextCache(), - ); + this._interp = new ParserATNSimulator(this, FilterQueryParser._ATN, FilterQueryParser.DecisionsToDFA, new PredictionContextCache()); } // @RuleVersion(0) public query(): QueryContext { @@ -203,59 +138,58 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 34; - this.expression(); - this.state = 40; + this.state = 34; + this.expression(); + this.state = 40; + this._errHandler.sync(this); + _la = this._input.LA(1); + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3758096386) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 207) !== 0)) { + { + this.state = 38; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 30: + case 31: + { + this.state = 35; + _la = this._input.LA(1); + if(!(_la===30 || _la===31)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 36; + this.expression(); + } + break; + case 1: + case 29: + case 32: + case 33: + case 34: + case 35: + case 38: + case 39: + { + this.state = 37; + this.expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + this.state = 42; this._errHandler.sync(this); _la = this._input.LA(1); - while ( - ((_la & ~0x1f) === 0 && ((1 << _la) & 4160749570) !== 0) || - (((_la - 32) & ~0x1f) === 0 && ((1 << (_la - 32)) & 51) !== 0) - ) { - { - this.state = 38; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 28: - case 29: - { - this.state = 35; - _la = this._input.LA(1); - if (!(_la === 28 || _la === 29)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 36; - this.expression(); - } - break; - case 1: - case 27: - case 30: - case 31: - case 32: - case 33: - case 36: - case 37: - { - this.state = 37; - this.expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - this.state = 42; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 43; - this.match(FilterQueryParser.EOF); } - } catch (re) { + this.state = 43; + this.match(FilterQueryParser.EOF); + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -263,26 +197,24 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public expression(): ExpressionContext { - let localctx: ExpressionContext = new ExpressionContext( - this, - this._ctx, - this.state, - ); + let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 2, FilterQueryParser.RULE_expression); try { this.enterOuterAlt(localctx, 1); { - this.state = 45; - this.orExpression(); + this.state = 45; + this.orExpression(); } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -290,45 +222,43 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public orExpression(): OrExpressionContext { - let localctx: OrExpressionContext = new OrExpressionContext( - this, - this._ctx, - this.state, - ); + let localctx: OrExpressionContext = new OrExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 4, FilterQueryParser.RULE_orExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 47; - this.andExpression(); - this.state = 52; + this.state = 47; + this.andExpression(); + this.state = 52; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 48; + this.match(FilterQueryParser.OR); + this.state = 49; + this.andExpression(); + } + } + } + this.state = 54; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 48; - this.match(FilterQueryParser.OR); - this.state = 49; - this.andExpression(); - } - } - } - this.state = 54; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); - } } - } catch (re) { + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -336,66 +266,64 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public andExpression(): AndExpressionContext { - let localctx: AndExpressionContext = new AndExpressionContext( - this, - this._ctx, - this.state, - ); + let localctx: AndExpressionContext = new AndExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 6, FilterQueryParser.RULE_andExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 55; - this.unaryExpression(); - this.state = 61; + this.state = 55; + this.unaryExpression(); + this.state = 61; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + this.state = 59; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 30: + { + this.state = 56; + this.match(FilterQueryParser.AND); + this.state = 57; + this.unaryExpression(); + } + break; + case 1: + case 29: + case 32: + case 33: + case 34: + case 35: + case 38: + case 39: + { + this.state = 58; + this.unaryExpression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + this.state = 63; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - this.state = 59; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 28: - { - this.state = 56; - this.match(FilterQueryParser.AND); - this.state = 57; - this.unaryExpression(); - } - break; - case 1: - case 27: - case 30: - case 31: - case 32: - case 33: - case 36: - case 37: - { - this.state = 58; - this.unaryExpression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - this.state = 63; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); - } } - } catch (re) { + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -403,37 +331,35 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public unaryExpression(): UnaryExpressionContext { - let localctx: UnaryExpressionContext = new UnaryExpressionContext( - this, - this._ctx, - this.state, - ); + let localctx: UnaryExpressionContext = new UnaryExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 8, FilterQueryParser.RULE_unaryExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 65; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === 27) { - { - this.state = 64; - this.match(FilterQueryParser.NOT); - } + this.state = 65; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===29) { + { + this.state = 64; + this.match(FilterQueryParser.NOT); } - - this.state = 67; - this.primary(); } - } catch (re) { + + this.state = 67; + this.primary(); + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -441,62 +367,60 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public primary(): PrimaryContext { - let localctx: PrimaryContext = new PrimaryContext( - this, - this._ctx, - this.state, - ); + let localctx: PrimaryContext = new PrimaryContext(this, this._ctx, this.state); this.enterRule(localctx, 10, FilterQueryParser.RULE_primary); try { this.state = 76; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 69; - this.match(FilterQueryParser.LPAREN); - this.state = 70; - this.orExpression(); - this.state = 71; - this.match(FilterQueryParser.RPAREN); - } - break; - case 37: - this.enterOuterAlt(localctx, 2); - { - this.state = 73; - this.comparison(); - } - break; - case 30: - case 31: - case 32: - case 33: - this.enterOuterAlt(localctx, 3); - { - this.state = 74; - this.functionCall(); - } - break; - case 36: - this.enterOuterAlt(localctx, 4); - { - this.state = 75; - this.fullText(); - } - break; - default: - throw new NoViableAltException(this); + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 69; + this.match(FilterQueryParser.LPAREN); + this.state = 70; + this.orExpression(); + this.state = 71; + this.match(FilterQueryParser.RPAREN); + } + break; + case 39: + this.enterOuterAlt(localctx, 2); + { + this.state = 73; + this.comparison(); + } + break; + case 32: + case 33: + case 34: + case 35: + this.enterOuterAlt(localctx, 3); + { + this.state = 74; + this.functionCall(); + } + break; + case 38: + this.enterOuterAlt(localctx, 4); + { + this.state = 75; + this.fullText(); + } + break; + default: + throw new NoViableAltException(this); } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -504,242 +428,261 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public comparison(): ComparisonContext { - let localctx: ComparisonContext = new ComparisonContext( - this, - this._ctx, - this.state, - ); + let localctx: ComparisonContext = new ComparisonContext(this, this._ctx, this.state); this.enterRule(localctx, 12, FilterQueryParser.RULE_comparison); let _la: number; try { - this.state = 150; + this.state = 156; this._errHandler.sync(this); - switch (this._interp.adaptivePredict(this._input, 7, this._ctx)) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 78; - this.key(); - this.state = 79; - this.match(FilterQueryParser.EQUALS); - this.state = 80; - this.value(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 82; - this.key(); - this.state = 83; - _la = this._input.LA(1); - if (!(_la === 7 || _la === 8)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 84; - this.value(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 86; - this.key(); - this.state = 87; - this.match(FilterQueryParser.LT); - this.state = 88; - this.value(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 90; - this.key(); - this.state = 91; - this.match(FilterQueryParser.LE); - this.state = 92; - this.value(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 94; - this.key(); - this.state = 95; - this.match(FilterQueryParser.GT); - this.state = 96; - this.value(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 98; - this.key(); - this.state = 99; - this.match(FilterQueryParser.GE); - this.state = 100; - this.value(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 102; - this.key(); - this.state = 103; - _la = this._input.LA(1); - if (!(_la === 13 || _la === 15)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 104; - this.value(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 106; - this.key(); - this.state = 107; - _la = this._input.LA(1); - if (!(_la === 14 || _la === 16)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 108; - this.value(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 110; - this.key(); - this.state = 111; - this.match(FilterQueryParser.BETWEEN); - this.state = 112; - this.value(); - this.state = 113; - this.match(FilterQueryParser.AND); - this.state = 114; - this.value(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 116; - this.key(); - this.state = 117; - this.match(FilterQueryParser.NOT_BETWEEN); - this.state = 118; - this.value(); - this.state = 119; - this.match(FilterQueryParser.AND); - this.state = 120; - this.value(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 122; - this.key(); - this.state = 123; - this.inClause(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 125; - this.key(); - this.state = 126; - this.notInClause(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 128; - this.key(); - this.state = 129; - this.match(FilterQueryParser.EXISTS); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 131; - this.key(); - this.state = 132; - this.match(FilterQueryParser.NOT_EXISTS); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 134; - this.key(); - this.state = 135; - this.match(FilterQueryParser.REGEXP); - this.state = 136; - this.value(); - } - break; - case 16: - this.enterOuterAlt(localctx, 16); - { - this.state = 138; - this.key(); - this.state = 139; - this.match(FilterQueryParser.NOT_REGEXP); - this.state = 140; - this.value(); - } - break; - case 17: - this.enterOuterAlt(localctx, 17); - { - this.state = 142; - this.key(); - this.state = 143; - this.match(FilterQueryParser.CONTAINS); - this.state = 144; - this.value(); - } - break; - case 18: - this.enterOuterAlt(localctx, 18); - { - this.state = 146; - this.key(); - this.state = 147; - this.match(FilterQueryParser.NOT_CONTAINS); - this.state = 148; - this.value(); - } - break; + switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 78; + this.key(); + this.state = 79; + this.match(FilterQueryParser.EQUALS); + this.state = 80; + this.value(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 82; + this.key(); + this.state = 83; + _la = this._input.LA(1); + if(!(_la===7 || _la===8)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 84; + this.value(); + } + break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 86; + this.key(); + this.state = 87; + this.match(FilterQueryParser.LT); + this.state = 88; + this.value(); + } + break; + case 4: + this.enterOuterAlt(localctx, 4); + { + this.state = 90; + this.key(); + this.state = 91; + this.match(FilterQueryParser.LE); + this.state = 92; + this.value(); + } + break; + case 5: + this.enterOuterAlt(localctx, 5); + { + this.state = 94; + this.key(); + this.state = 95; + this.match(FilterQueryParser.GT); + this.state = 96; + this.value(); + } + break; + case 6: + this.enterOuterAlt(localctx, 6); + { + this.state = 98; + this.key(); + this.state = 99; + this.match(FilterQueryParser.GE); + this.state = 100; + this.value(); + } + break; + case 7: + this.enterOuterAlt(localctx, 7); + { + this.state = 102; + this.key(); + this.state = 103; + _la = this._input.LA(1); + if(!(_la===13 || _la===15)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 104; + this.value(); + } + break; + case 8: + this.enterOuterAlt(localctx, 8); + { + this.state = 106; + this.key(); + this.state = 107; + _la = this._input.LA(1); + if(!(_la===14 || _la===16)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 108; + this.value(); + } + break; + case 9: + this.enterOuterAlt(localctx, 9); + { + this.state = 110; + this.key(); + this.state = 111; + this.match(FilterQueryParser.BETWEEN); + this.state = 112; + this.value(); + this.state = 113; + this.match(FilterQueryParser.AND); + this.state = 114; + this.value(); + } + break; + case 10: + this.enterOuterAlt(localctx, 10); + { + this.state = 116; + this.key(); + this.state = 117; + this.match(FilterQueryParser.NOT_BETWEEN); + this.state = 118; + this.value(); + this.state = 119; + this.match(FilterQueryParser.AND); + this.state = 120; + this.value(); + } + break; + case 11: + this.enterOuterAlt(localctx, 11); + { + this.state = 122; + this.key(); + this.state = 123; + this.inClause(); + } + break; + case 12: + this.enterOuterAlt(localctx, 12); + { + this.state = 125; + this.key(); + this.state = 126; + this.notInClause(); + } + break; + case 13: + this.enterOuterAlt(localctx, 13); + { + this.state = 128; + this.key(); + this.state = 129; + this.match(FilterQueryParser.EXISTS); + } + break; + case 14: + this.enterOuterAlt(localctx, 14); + { + this.state = 131; + this.key(); + this.state = 132; + this.match(FilterQueryParser.NOT_EXISTS); + } + break; + case 15: + this.enterOuterAlt(localctx, 15); + { + this.state = 134; + this.key(); + this.state = 135; + this.match(FilterQueryParser.IS_NULL); + } + break; + case 16: + this.enterOuterAlt(localctx, 16); + { + this.state = 137; + this.key(); + this.state = 138; + this.match(FilterQueryParser.IS_NOT_NULL); + } + break; + case 17: + this.enterOuterAlt(localctx, 17); + { + this.state = 140; + this.key(); + this.state = 141; + this.match(FilterQueryParser.REGEXP); + this.state = 142; + this.value(); + } + break; + case 18: + this.enterOuterAlt(localctx, 18); + { + this.state = 144; + this.key(); + this.state = 145; + this.match(FilterQueryParser.NOT_REGEXP); + this.state = 146; + this.value(); + } + break; + case 19: + this.enterOuterAlt(localctx, 19); + { + this.state = 148; + this.key(); + this.state = 149; + this.match(FilterQueryParser.CONTAINS); + this.state = 150; + this.value(); + } + break; + case 20: + this.enterOuterAlt(localctx, 20); + { + this.state = 152; + this.key(); + this.state = 153; + this.match(FilterQueryParser.NOT_CONTAINS); + this.state = 154; + this.value(); + } + break; } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -747,51 +690,49 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public inClause(): InClauseContext { - let localctx: InClauseContext = new InClauseContext( - this, - this._ctx, - this.state, - ); + let localctx: InClauseContext = new InClauseContext(this, this._ctx, this.state); this.enterRule(localctx, 14, FilterQueryParser.RULE_inClause); try { - this.state = 162; + this.state = 168; this._errHandler.sync(this); - switch (this._interp.adaptivePredict(this._input, 8, this._ctx)) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 152; - this.match(FilterQueryParser.IN); - this.state = 153; - this.match(FilterQueryParser.LPAREN); - this.state = 154; - this.valueList(); - this.state = 155; - this.match(FilterQueryParser.RPAREN); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 157; - this.match(FilterQueryParser.IN); - this.state = 158; - this.match(FilterQueryParser.LBRACK); - this.state = 159; - this.valueList(); - this.state = 160; - this.match(FilterQueryParser.RBRACK); - } - break; + switch ( this._interp.adaptivePredict(this._input, 8, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 158; + this.match(FilterQueryParser.IN); + this.state = 159; + this.match(FilterQueryParser.LPAREN); + this.state = 160; + this.valueList(); + this.state = 161; + this.match(FilterQueryParser.RPAREN); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 163; + this.match(FilterQueryParser.IN); + this.state = 164; + this.match(FilterQueryParser.LBRACK); + this.state = 165; + this.valueList(); + this.state = 166; + this.match(FilterQueryParser.RBRACK); + } + break; } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -799,51 +740,49 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public notInClause(): NotInClauseContext { - let localctx: NotInClauseContext = new NotInClauseContext( - this, - this._ctx, - this.state, - ); + let localctx: NotInClauseContext = new NotInClauseContext(this, this._ctx, this.state); this.enterRule(localctx, 16, FilterQueryParser.RULE_notInClause); try { - this.state = 174; + this.state = 180; this._errHandler.sync(this); - switch (this._interp.adaptivePredict(this._input, 9, this._ctx)) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 164; - this.match(FilterQueryParser.NOT_IN); - this.state = 165; - this.match(FilterQueryParser.LPAREN); - this.state = 166; - this.valueList(); - this.state = 167; - this.match(FilterQueryParser.RPAREN); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 169; - this.match(FilterQueryParser.NOT_IN); - this.state = 170; - this.match(FilterQueryParser.LBRACK); - this.state = 171; - this.valueList(); - this.state = 172; - this.match(FilterQueryParser.RBRACK); - } - break; + switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 170; + this.match(FilterQueryParser.NOT_IN); + this.state = 171; + this.match(FilterQueryParser.LPAREN); + this.state = 172; + this.valueList(); + this.state = 173; + this.match(FilterQueryParser.RPAREN); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 175; + this.match(FilterQueryParser.NOT_IN); + this.state = 176; + this.match(FilterQueryParser.LBRACK); + this.state = 177; + this.valueList(); + this.state = 178; + this.match(FilterQueryParser.RBRACK); + } + break; } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -851,43 +790,41 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public valueList(): ValueListContext { - let localctx: ValueListContext = new ValueListContext( - this, - this._ctx, - this.state, - ); + let localctx: ValueListContext = new ValueListContext(this, this._ctx, this.state); this.enterRule(localctx, 18, FilterQueryParser.RULE_valueList); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 176; + this.state = 182; + this.value(); + this.state = 187; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===5) { + { + { + this.state = 183; + this.match(FilterQueryParser.COMMA); + this.state = 184; this.value(); - this.state = 181; + } + } + this.state = 189; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === 5) { - { - { - this.state = 177; - this.match(FilterQueryParser.COMMA); - this.state = 178; - this.value(); - } - } - this.state = 183; - this._errHandler.sync(this); - _la = this._input.LA(1); - } } - } catch (re) { + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -895,26 +832,24 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public fullText(): FullTextContext { - let localctx: FullTextContext = new FullTextContext( - this, - this._ctx, - this.state, - ); + let localctx: FullTextContext = new FullTextContext(this, this._ctx, this.state); this.enterRule(localctx, 20, FilterQueryParser.RULE_fullText); try { this.enterOuterAlt(localctx, 1); { - this.state = 184; - this.match(FilterQueryParser.QUOTED_TEXT); + this.state = 190; + this.match(FilterQueryParser.QUOTED_TEXT); } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -922,39 +857,38 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public functionCall(): FunctionCallContext { - let localctx: FunctionCallContext = new FunctionCallContext( - this, - this._ctx, - this.state, - ); + let localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state); this.enterRule(localctx, 22, FilterQueryParser.RULE_functionCall); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 186; - _la = this._input.LA(1); - if (!(((_la - 30) & ~0x1f) === 0 && ((1 << (_la - 30)) & 15) !== 0)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 187; - this.match(FilterQueryParser.LPAREN); - this.state = 188; - this.functionParamList(); - this.state = 189; - this.match(FilterQueryParser.RPAREN); + this.state = 192; + _la = this._input.LA(1); + if(!(((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 15) !== 0))) { + this._errHandler.recoverInline(this); } - } catch (re) { + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 193; + this.match(FilterQueryParser.LPAREN); + this.state = 194; + this.functionParamList(); + this.state = 195; + this.match(FilterQueryParser.RPAREN); + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -962,43 +896,41 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public functionParamList(): FunctionParamListContext { - let localctx: FunctionParamListContext = new FunctionParamListContext( - this, - this._ctx, - this.state, - ); + let localctx: FunctionParamListContext = new FunctionParamListContext(this, this._ctx, this.state); this.enterRule(localctx, 24, FilterQueryParser.RULE_functionParamList); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 191; + this.state = 197; + this.functionParam(); + this.state = 202; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===5) { + { + { + this.state = 198; + this.match(FilterQueryParser.COMMA); + this.state = 199; this.functionParam(); - this.state = 196; + } + } + this.state = 204; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === 5) { - { - { - this.state = 192; - this.match(FilterQueryParser.COMMA); - this.state = 193; - this.functionParam(); - } - } - this.state = 198; - this._errHandler.sync(this); - _la = this._input.LA(1); - } } - } catch (re) { + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -1006,46 +938,44 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } // @RuleVersion(0) public functionParam(): FunctionParamContext { - let localctx: FunctionParamContext = new FunctionParamContext( - this, - this._ctx, - this.state, - ); + let localctx: FunctionParamContext = new FunctionParamContext(this, this._ctx, this.state); this.enterRule(localctx, 26, FilterQueryParser.RULE_functionParam); try { - this.state = 202; + this.state = 208; this._errHandler.sync(this); - switch (this._interp.adaptivePredict(this._input, 12, this._ctx)) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 199; - this.key(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 200; - this.value(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 201; - this.array(); - } - break; + switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 205; + this.key(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 206; + this.value(); + } + break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 207; + this.array(); + } + break; } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -1053,7 +983,8 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; @@ -1065,14 +996,15 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 204; - this.match(FilterQueryParser.LBRACK); - this.state = 205; - this.valueList(); - this.state = 206; - this.match(FilterQueryParser.RBRACK); + this.state = 210; + this.match(FilterQueryParser.LBRACK); + this.state = 211; + this.valueList(); + this.state = 212; + this.match(FilterQueryParser.RBRACK); } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -1080,7 +1012,8 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; @@ -1093,16 +1026,18 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 208; - _la = this._input.LA(1); - if (!(((_la - 34) & ~0x1f) === 0 && ((1 << (_la - 34)) & 15) !== 0)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } + this.state = 214; + _la = this._input.LA(1); + if(!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 15) !== 0))) { + this._errHandler.recoverInline(this); } - } catch (re) { + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -1110,7 +1045,8 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; @@ -1122,10 +1058,11 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 210; - this.match(FilterQueryParser.KEY); + this.state = 216; + this.match(FilterQueryParser.KEY); } - } catch (re) { + } + catch (re) { if (re instanceof RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); @@ -1133,1912 +1070,101 @@ export default class FilterQueryParser extends Parser { } else { throw re; } - } finally { + } + finally { this.exitRule(); } return localctx; } - public static readonly _serializedATN: number[] = [ - 4, - 1, - 38, - 213, - 2, - 0, - 7, - 0, - 2, - 1, - 7, - 1, - 2, - 2, - 7, - 2, - 2, - 3, - 7, - 3, - 2, - 4, - 7, - 4, - 2, - 5, - 7, - 5, - 2, - 6, - 7, - 6, - 2, - 7, - 7, - 7, - 2, - 8, - 7, - 8, - 2, - 9, - 7, - 9, - 2, - 10, - 7, - 10, - 2, - 11, - 7, - 11, - 2, - 12, - 7, - 12, - 2, - 13, - 7, - 13, - 2, - 14, - 7, - 14, - 2, - 15, - 7, - 15, - 2, - 16, - 7, - 16, - 1, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 5, - 0, - 39, - 8, - 0, - 10, - 0, - 12, - 0, - 42, - 9, - 0, - 1, - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 2, - 1, - 2, - 5, - 2, - 51, - 8, - 2, - 10, - 2, - 12, - 2, - 54, - 9, - 2, - 1, - 3, - 1, - 3, - 1, - 3, - 1, - 3, - 5, - 3, - 60, - 8, - 3, - 10, - 3, - 12, - 3, - 63, - 9, - 3, - 1, - 4, - 3, - 4, - 66, - 8, - 4, - 1, - 4, - 1, - 4, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 3, - 5, - 77, - 8, - 5, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 3, - 6, - 151, - 8, - 6, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 3, - 7, - 163, - 8, - 7, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 3, - 8, - 175, - 8, - 8, - 1, - 9, - 1, - 9, - 1, - 9, - 5, - 9, - 180, - 8, - 9, - 10, - 9, - 12, - 9, - 183, - 9, - 9, - 1, - 10, - 1, - 10, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 12, - 1, - 12, - 1, - 12, - 5, - 12, - 195, - 8, - 12, - 10, - 12, - 12, - 12, - 198, - 9, - 12, - 1, - 13, - 1, - 13, - 1, - 13, - 3, - 13, - 203, - 8, - 13, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 15, - 1, - 15, - 1, - 16, - 1, - 16, - 1, - 16, - 0, - 0, - 17, - 0, - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 0, - 6, - 1, - 0, - 28, - 29, - 1, - 0, - 7, - 8, - 2, - 0, - 13, - 13, - 15, - 15, - 2, - 0, - 14, - 14, - 16, - 16, - 1, - 0, - 30, - 33, - 1, - 0, - 34, - 37, - 227, - 0, - 34, - 1, - 0, - 0, - 0, - 2, - 45, - 1, - 0, - 0, - 0, - 4, - 47, - 1, - 0, - 0, - 0, - 6, - 55, - 1, - 0, - 0, - 0, - 8, - 65, - 1, - 0, - 0, - 0, - 10, - 76, - 1, - 0, - 0, - 0, - 12, - 150, - 1, - 0, - 0, - 0, - 14, - 162, - 1, - 0, - 0, - 0, - 16, - 174, - 1, - 0, - 0, - 0, - 18, - 176, - 1, - 0, - 0, - 0, - 20, - 184, - 1, - 0, - 0, - 0, - 22, - 186, - 1, - 0, - 0, - 0, - 24, - 191, - 1, - 0, - 0, - 0, - 26, - 202, - 1, - 0, - 0, - 0, - 28, - 204, - 1, - 0, - 0, - 0, - 30, - 208, - 1, - 0, - 0, - 0, - 32, - 210, - 1, - 0, - 0, - 0, - 34, - 40, - 3, - 2, - 1, - 0, - 35, - 36, - 7, - 0, - 0, - 0, - 36, - 39, - 3, - 2, - 1, - 0, - 37, - 39, - 3, - 2, - 1, - 0, - 38, - 35, - 1, - 0, - 0, - 0, - 38, - 37, - 1, - 0, - 0, - 0, - 39, - 42, - 1, - 0, - 0, - 0, - 40, - 38, - 1, - 0, - 0, - 0, - 40, - 41, - 1, - 0, - 0, - 0, - 41, - 43, - 1, - 0, - 0, - 0, - 42, - 40, - 1, - 0, - 0, - 0, - 43, - 44, - 5, - 0, - 0, - 1, - 44, - 1, - 1, - 0, - 0, - 0, - 45, - 46, - 3, - 4, - 2, - 0, - 46, - 3, - 1, - 0, - 0, - 0, - 47, - 52, - 3, - 6, - 3, - 0, - 48, - 49, - 5, - 29, - 0, - 0, - 49, - 51, - 3, - 6, - 3, - 0, - 50, - 48, - 1, - 0, - 0, - 0, - 51, - 54, - 1, - 0, - 0, - 0, - 52, - 50, - 1, - 0, - 0, - 0, - 52, - 53, - 1, - 0, - 0, - 0, - 53, - 5, - 1, - 0, - 0, - 0, - 54, - 52, - 1, - 0, - 0, - 0, - 55, - 61, - 3, - 8, - 4, - 0, - 56, - 57, - 5, - 28, - 0, - 0, - 57, - 60, - 3, - 8, - 4, - 0, - 58, - 60, - 3, - 8, - 4, - 0, - 59, - 56, - 1, - 0, - 0, - 0, - 59, - 58, - 1, - 0, - 0, - 0, - 60, - 63, - 1, - 0, - 0, - 0, - 61, - 59, - 1, - 0, - 0, - 0, - 61, - 62, - 1, - 0, - 0, - 0, - 62, - 7, - 1, - 0, - 0, - 0, - 63, - 61, - 1, - 0, - 0, - 0, - 64, - 66, - 5, - 27, - 0, - 0, - 65, - 64, - 1, - 0, - 0, - 0, - 65, - 66, - 1, - 0, - 0, - 0, - 66, - 67, - 1, - 0, - 0, - 0, - 67, - 68, - 3, - 10, - 5, - 0, - 68, - 9, - 1, - 0, - 0, - 0, - 69, - 70, - 5, - 1, - 0, - 0, - 70, - 71, - 3, - 4, - 2, - 0, - 71, - 72, - 5, - 2, - 0, - 0, - 72, - 77, - 1, - 0, - 0, - 0, - 73, - 77, - 3, - 12, - 6, - 0, - 74, - 77, - 3, - 22, - 11, - 0, - 75, - 77, - 3, - 20, - 10, - 0, - 76, - 69, - 1, - 0, - 0, - 0, - 76, - 73, - 1, - 0, - 0, - 0, - 76, - 74, - 1, - 0, - 0, - 0, - 76, - 75, - 1, - 0, - 0, - 0, - 77, - 11, - 1, - 0, - 0, - 0, - 78, - 79, - 3, - 32, - 16, - 0, - 79, - 80, - 5, - 6, - 0, - 0, - 80, - 81, - 3, - 30, - 15, - 0, - 81, - 151, - 1, - 0, - 0, - 0, - 82, - 83, - 3, - 32, - 16, - 0, - 83, - 84, - 7, - 1, - 0, - 0, - 84, - 85, - 3, - 30, - 15, - 0, - 85, - 151, - 1, - 0, - 0, - 0, - 86, - 87, - 3, - 32, - 16, - 0, - 87, - 88, - 5, - 9, - 0, - 0, - 88, - 89, - 3, - 30, - 15, - 0, - 89, - 151, - 1, - 0, - 0, - 0, - 90, - 91, - 3, - 32, - 16, - 0, - 91, - 92, - 5, - 10, - 0, - 0, - 92, - 93, - 3, - 30, - 15, - 0, - 93, - 151, - 1, - 0, - 0, - 0, - 94, - 95, - 3, - 32, - 16, - 0, - 95, - 96, - 5, - 11, - 0, - 0, - 96, - 97, - 3, - 30, - 15, - 0, - 97, - 151, - 1, - 0, - 0, - 0, - 98, - 99, - 3, - 32, - 16, - 0, - 99, - 100, - 5, - 12, - 0, - 0, - 100, - 101, - 3, - 30, - 15, - 0, - 101, - 151, - 1, - 0, - 0, - 0, - 102, - 103, - 3, - 32, - 16, - 0, - 103, - 104, - 7, - 2, - 0, - 0, - 104, - 105, - 3, - 30, - 15, - 0, - 105, - 151, - 1, - 0, - 0, - 0, - 106, - 107, - 3, - 32, - 16, - 0, - 107, - 108, - 7, - 3, - 0, - 0, - 108, - 109, - 3, - 30, - 15, - 0, - 109, - 151, - 1, - 0, - 0, - 0, - 110, - 111, - 3, - 32, - 16, - 0, - 111, - 112, - 5, - 17, - 0, - 0, - 112, - 113, - 3, - 30, - 15, - 0, - 113, - 114, - 5, - 28, - 0, - 0, - 114, - 115, - 3, - 30, - 15, - 0, - 115, - 151, - 1, - 0, - 0, - 0, - 116, - 117, - 3, - 32, - 16, - 0, - 117, - 118, - 5, - 18, - 0, - 0, - 118, - 119, - 3, - 30, - 15, - 0, - 119, - 120, - 5, - 28, - 0, - 0, - 120, - 121, - 3, - 30, - 15, - 0, - 121, - 151, - 1, - 0, - 0, - 0, - 122, - 123, - 3, - 32, - 16, - 0, - 123, - 124, - 3, - 14, - 7, - 0, - 124, - 151, - 1, - 0, - 0, - 0, - 125, - 126, - 3, - 32, - 16, - 0, - 126, - 127, - 3, - 16, - 8, - 0, - 127, - 151, - 1, - 0, - 0, - 0, - 128, - 129, - 3, - 32, - 16, - 0, - 129, - 130, - 5, - 19, - 0, - 0, - 130, - 151, - 1, - 0, - 0, - 0, - 131, - 132, - 3, - 32, - 16, - 0, - 132, - 133, - 5, - 20, - 0, - 0, - 133, - 151, - 1, - 0, - 0, - 0, - 134, - 135, - 3, - 32, - 16, - 0, - 135, - 136, - 5, - 21, - 0, - 0, - 136, - 137, - 3, - 30, - 15, - 0, - 137, - 151, - 1, - 0, - 0, - 0, - 138, - 139, - 3, - 32, - 16, - 0, - 139, - 140, - 5, - 22, - 0, - 0, - 140, - 141, - 3, - 30, - 15, - 0, - 141, - 151, - 1, - 0, - 0, - 0, - 142, - 143, - 3, - 32, - 16, - 0, - 143, - 144, - 5, - 23, - 0, - 0, - 144, - 145, - 3, - 30, - 15, - 0, - 145, - 151, - 1, - 0, - 0, - 0, - 146, - 147, - 3, - 32, - 16, - 0, - 147, - 148, - 5, - 24, - 0, - 0, - 148, - 149, - 3, - 30, - 15, - 0, - 149, - 151, - 1, - 0, - 0, - 0, - 150, - 78, - 1, - 0, - 0, - 0, - 150, - 82, - 1, - 0, - 0, - 0, - 150, - 86, - 1, - 0, - 0, - 0, - 150, - 90, - 1, - 0, - 0, - 0, - 150, - 94, - 1, - 0, - 0, - 0, - 150, - 98, - 1, - 0, - 0, - 0, - 150, - 102, - 1, - 0, - 0, - 0, - 150, - 106, - 1, - 0, - 0, - 0, - 150, - 110, - 1, - 0, - 0, - 0, - 150, - 116, - 1, - 0, - 0, - 0, - 150, - 122, - 1, - 0, - 0, - 0, - 150, - 125, - 1, - 0, - 0, - 0, - 150, - 128, - 1, - 0, - 0, - 0, - 150, - 131, - 1, - 0, - 0, - 0, - 150, - 134, - 1, - 0, - 0, - 0, - 150, - 138, - 1, - 0, - 0, - 0, - 150, - 142, - 1, - 0, - 0, - 0, - 150, - 146, - 1, - 0, - 0, - 0, - 151, - 13, - 1, - 0, - 0, - 0, - 152, - 153, - 5, - 25, - 0, - 0, - 153, - 154, - 5, - 1, - 0, - 0, - 154, - 155, - 3, - 18, - 9, - 0, - 155, - 156, - 5, - 2, - 0, - 0, - 156, - 163, - 1, - 0, - 0, - 0, - 157, - 158, - 5, - 25, - 0, - 0, - 158, - 159, - 5, - 3, - 0, - 0, - 159, - 160, - 3, - 18, - 9, - 0, - 160, - 161, - 5, - 4, - 0, - 0, - 161, - 163, - 1, - 0, - 0, - 0, - 162, - 152, - 1, - 0, - 0, - 0, - 162, - 157, - 1, - 0, - 0, - 0, - 163, - 15, - 1, - 0, - 0, - 0, - 164, - 165, - 5, - 26, - 0, - 0, - 165, - 166, - 5, - 1, - 0, - 0, - 166, - 167, - 3, - 18, - 9, - 0, - 167, - 168, - 5, - 2, - 0, - 0, - 168, - 175, - 1, - 0, - 0, - 0, - 169, - 170, - 5, - 26, - 0, - 0, - 170, - 171, - 5, - 3, - 0, - 0, - 171, - 172, - 3, - 18, - 9, - 0, - 172, - 173, - 5, - 4, - 0, - 0, - 173, - 175, - 1, - 0, - 0, - 0, - 174, - 164, - 1, - 0, - 0, - 0, - 174, - 169, - 1, - 0, - 0, - 0, - 175, - 17, - 1, - 0, - 0, - 0, - 176, - 181, - 3, - 30, - 15, - 0, - 177, - 178, - 5, - 5, - 0, - 0, - 178, - 180, - 3, - 30, - 15, - 0, - 179, - 177, - 1, - 0, - 0, - 0, - 180, - 183, - 1, - 0, - 0, - 0, - 181, - 179, - 1, - 0, - 0, - 0, - 181, - 182, - 1, - 0, - 0, - 0, - 182, - 19, - 1, - 0, - 0, - 0, - 183, - 181, - 1, - 0, - 0, - 0, - 184, - 185, - 5, - 36, - 0, - 0, - 185, - 21, - 1, - 0, - 0, - 0, - 186, - 187, - 7, - 4, - 0, - 0, - 187, - 188, - 5, - 1, - 0, - 0, - 188, - 189, - 3, - 24, - 12, - 0, - 189, - 190, - 5, - 2, - 0, - 0, - 190, - 23, - 1, - 0, - 0, - 0, - 191, - 196, - 3, - 26, - 13, - 0, - 192, - 193, - 5, - 5, - 0, - 0, - 193, - 195, - 3, - 26, - 13, - 0, - 194, - 192, - 1, - 0, - 0, - 0, - 195, - 198, - 1, - 0, - 0, - 0, - 196, - 194, - 1, - 0, - 0, - 0, - 196, - 197, - 1, - 0, - 0, - 0, - 197, - 25, - 1, - 0, - 0, - 0, - 198, - 196, - 1, - 0, - 0, - 0, - 199, - 203, - 3, - 32, - 16, - 0, - 200, - 203, - 3, - 30, - 15, - 0, - 201, - 203, - 3, - 28, - 14, - 0, - 202, - 199, - 1, - 0, - 0, - 0, - 202, - 200, - 1, - 0, - 0, - 0, - 202, - 201, - 1, - 0, - 0, - 0, - 203, - 27, - 1, - 0, - 0, - 0, - 204, - 205, - 5, - 3, - 0, - 0, - 205, - 206, - 3, - 18, - 9, - 0, - 206, - 207, - 5, - 4, - 0, - 0, - 207, - 29, - 1, - 0, - 0, - 0, - 208, - 209, - 7, - 5, - 0, - 0, - 209, - 31, - 1, - 0, - 0, - 0, - 210, - 211, - 5, - 37, - 0, - 0, - 211, - 33, - 1, - 0, - 0, - 0, - 13, - 38, - 40, - 52, - 59, - 61, - 65, - 76, - 150, - 162, - 174, - 181, - 196, - 202, - ]; + public static readonly _serializedATN: number[] = [4,1,40,219,2,0,7,0,2, + 1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2, + 10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,1,0, + 1,0,1,0,1,0,5,0,39,8,0,10,0,12,0,42,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,5,2, + 51,8,2,10,2,12,2,54,9,2,1,3,1,3,1,3,1,3,5,3,60,8,3,10,3,12,3,63,9,3,1,4, + 3,4,66,8,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,77,8,5,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,3,6,157,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,169,8, + 7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,181,8,8,1,9,1,9,1,9,5,9,186, + 8,9,10,9,12,9,189,9,9,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12, + 5,12,201,8,12,10,12,12,12,204,9,12,1,13,1,13,1,13,3,13,209,8,13,1,14,1, + 14,1,14,1,14,1,15,1,15,1,16,1,16,1,16,0,0,17,0,2,4,6,8,10,12,14,16,18,20, + 22,24,26,28,30,32,0,6,1,0,30,31,1,0,7,8,2,0,13,13,15,15,2,0,14,14,16,16, + 1,0,32,35,1,0,36,39,235,0,34,1,0,0,0,2,45,1,0,0,0,4,47,1,0,0,0,6,55,1,0, + 0,0,8,65,1,0,0,0,10,76,1,0,0,0,12,156,1,0,0,0,14,168,1,0,0,0,16,180,1,0, + 0,0,18,182,1,0,0,0,20,190,1,0,0,0,22,192,1,0,0,0,24,197,1,0,0,0,26,208, + 1,0,0,0,28,210,1,0,0,0,30,214,1,0,0,0,32,216,1,0,0,0,34,40,3,2,1,0,35,36, + 7,0,0,0,36,39,3,2,1,0,37,39,3,2,1,0,38,35,1,0,0,0,38,37,1,0,0,0,39,42,1, + 0,0,0,40,38,1,0,0,0,40,41,1,0,0,0,41,43,1,0,0,0,42,40,1,0,0,0,43,44,5,0, + 0,1,44,1,1,0,0,0,45,46,3,4,2,0,46,3,1,0,0,0,47,52,3,6,3,0,48,49,5,31,0, + 0,49,51,3,6,3,0,50,48,1,0,0,0,51,54,1,0,0,0,52,50,1,0,0,0,52,53,1,0,0,0, + 53,5,1,0,0,0,54,52,1,0,0,0,55,61,3,8,4,0,56,57,5,30,0,0,57,60,3,8,4,0,58, + 60,3,8,4,0,59,56,1,0,0,0,59,58,1,0,0,0,60,63,1,0,0,0,61,59,1,0,0,0,61,62, + 1,0,0,0,62,7,1,0,0,0,63,61,1,0,0,0,64,66,5,29,0,0,65,64,1,0,0,0,65,66,1, + 0,0,0,66,67,1,0,0,0,67,68,3,10,5,0,68,9,1,0,0,0,69,70,5,1,0,0,70,71,3,4, + 2,0,71,72,5,2,0,0,72,77,1,0,0,0,73,77,3,12,6,0,74,77,3,22,11,0,75,77,3, + 20,10,0,76,69,1,0,0,0,76,73,1,0,0,0,76,74,1,0,0,0,76,75,1,0,0,0,77,11,1, + 0,0,0,78,79,3,32,16,0,79,80,5,6,0,0,80,81,3,30,15,0,81,157,1,0,0,0,82,83, + 3,32,16,0,83,84,7,1,0,0,84,85,3,30,15,0,85,157,1,0,0,0,86,87,3,32,16,0, + 87,88,5,9,0,0,88,89,3,30,15,0,89,157,1,0,0,0,90,91,3,32,16,0,91,92,5,10, + 0,0,92,93,3,30,15,0,93,157,1,0,0,0,94,95,3,32,16,0,95,96,5,11,0,0,96,97, + 3,30,15,0,97,157,1,0,0,0,98,99,3,32,16,0,99,100,5,12,0,0,100,101,3,30,15, + 0,101,157,1,0,0,0,102,103,3,32,16,0,103,104,7,2,0,0,104,105,3,30,15,0,105, + 157,1,0,0,0,106,107,3,32,16,0,107,108,7,3,0,0,108,109,3,30,15,0,109,157, + 1,0,0,0,110,111,3,32,16,0,111,112,5,17,0,0,112,113,3,30,15,0,113,114,5, + 30,0,0,114,115,3,30,15,0,115,157,1,0,0,0,116,117,3,32,16,0,117,118,5,18, + 0,0,118,119,3,30,15,0,119,120,5,30,0,0,120,121,3,30,15,0,121,157,1,0,0, + 0,122,123,3,32,16,0,123,124,3,14,7,0,124,157,1,0,0,0,125,126,3,32,16,0, + 126,127,3,16,8,0,127,157,1,0,0,0,128,129,3,32,16,0,129,130,5,19,0,0,130, + 157,1,0,0,0,131,132,3,32,16,0,132,133,5,20,0,0,133,157,1,0,0,0,134,135, + 3,32,16,0,135,136,5,21,0,0,136,157,1,0,0,0,137,138,3,32,16,0,138,139,5, + 22,0,0,139,157,1,0,0,0,140,141,3,32,16,0,141,142,5,23,0,0,142,143,3,30, + 15,0,143,157,1,0,0,0,144,145,3,32,16,0,145,146,5,24,0,0,146,147,3,30,15, + 0,147,157,1,0,0,0,148,149,3,32,16,0,149,150,5,25,0,0,150,151,3,30,15,0, + 151,157,1,0,0,0,152,153,3,32,16,0,153,154,5,26,0,0,154,155,3,30,15,0,155, + 157,1,0,0,0,156,78,1,0,0,0,156,82,1,0,0,0,156,86,1,0,0,0,156,90,1,0,0,0, + 156,94,1,0,0,0,156,98,1,0,0,0,156,102,1,0,0,0,156,106,1,0,0,0,156,110,1, + 0,0,0,156,116,1,0,0,0,156,122,1,0,0,0,156,125,1,0,0,0,156,128,1,0,0,0,156, + 131,1,0,0,0,156,134,1,0,0,0,156,137,1,0,0,0,156,140,1,0,0,0,156,144,1,0, + 0,0,156,148,1,0,0,0,156,152,1,0,0,0,157,13,1,0,0,0,158,159,5,27,0,0,159, + 160,5,1,0,0,160,161,3,18,9,0,161,162,5,2,0,0,162,169,1,0,0,0,163,164,5, + 27,0,0,164,165,5,3,0,0,165,166,3,18,9,0,166,167,5,4,0,0,167,169,1,0,0,0, + 168,158,1,0,0,0,168,163,1,0,0,0,169,15,1,0,0,0,170,171,5,28,0,0,171,172, + 5,1,0,0,172,173,3,18,9,0,173,174,5,2,0,0,174,181,1,0,0,0,175,176,5,28,0, + 0,176,177,5,3,0,0,177,178,3,18,9,0,178,179,5,4,0,0,179,181,1,0,0,0,180, + 170,1,0,0,0,180,175,1,0,0,0,181,17,1,0,0,0,182,187,3,30,15,0,183,184,5, + 5,0,0,184,186,3,30,15,0,185,183,1,0,0,0,186,189,1,0,0,0,187,185,1,0,0,0, + 187,188,1,0,0,0,188,19,1,0,0,0,189,187,1,0,0,0,190,191,5,38,0,0,191,21, + 1,0,0,0,192,193,7,4,0,0,193,194,5,1,0,0,194,195,3,24,12,0,195,196,5,2,0, + 0,196,23,1,0,0,0,197,202,3,26,13,0,198,199,5,5,0,0,199,201,3,26,13,0,200, + 198,1,0,0,0,201,204,1,0,0,0,202,200,1,0,0,0,202,203,1,0,0,0,203,25,1,0, + 0,0,204,202,1,0,0,0,205,209,3,32,16,0,206,209,3,30,15,0,207,209,3,28,14, + 0,208,205,1,0,0,0,208,206,1,0,0,0,208,207,1,0,0,0,209,27,1,0,0,0,210,211, + 5,3,0,0,211,212,3,18,9,0,212,213,5,4,0,0,213,29,1,0,0,0,214,215,7,5,0,0, + 215,31,1,0,0,0,216,217,5,39,0,0,217,33,1,0,0,0,13,38,40,52,59,61,65,76, + 156,168,180,187,202,208]; private static __ATN: ATN; public static get _ATN(): ATN { if (!FilterQueryParser.__ATN) { - FilterQueryParser.__ATN = new ATNDeserializer().deserialize( - FilterQueryParser._serializedATN, - ); + FilterQueryParser.__ATN = new ATNDeserializer().deserialize(FilterQueryParser._serializedATN); } return FilterQueryParser.__ATN; } - static DecisionsToDFA = FilterQueryParser._ATN.decisionToState.map( - (ds: DecisionState, index: number) => new DFA(ds, index), - ); + + static DecisionsToDFA = FilterQueryParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); + } export class QueryContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public expression_list(): ExpressionContext[] { return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; @@ -3050,28 +1176,28 @@ export class QueryContext extends ParserRuleContext { return this.getToken(FilterQueryParser.EOF, 0); } public AND_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.AND); + return this.getTokens(FilterQueryParser.AND); } public AND(i: number): TerminalNode { return this.getToken(FilterQueryParser.AND, i); } public OR_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.OR); + return this.getTokens(FilterQueryParser.OR); } public OR(i: number): TerminalNode { return this.getToken(FilterQueryParser.OR, i); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_query; + public get ruleIndex(): number { + return FilterQueryParser.RULE_query; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterQuery) { - listener.enterQuery(this); + if(listener.enterQuery) { + listener.enterQuery(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitQuery) { - listener.exitQuery(this); + if(listener.exitQuery) { + listener.exitQuery(this); } } // @Override @@ -3084,32 +1210,26 @@ export class QueryContext extends ParserRuleContext { } } + export class ExpressionContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public orExpression(): OrExpressionContext { - return this.getTypedRuleContext( - OrExpressionContext, - 0, - ) as OrExpressionContext; + return this.getTypedRuleContext(OrExpressionContext, 0) as OrExpressionContext; } - public get ruleIndex(): number { - return FilterQueryParser.RULE_expression; + public get ruleIndex(): number { + return FilterQueryParser.RULE_expression; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterExpression) { - listener.enterExpression(this); + if(listener.enterExpression) { + listener.enterExpression(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitExpression) { - listener.exitExpression(this); + if(listener.exitExpression) { + listener.exitExpression(this); } } // @Override @@ -3122,43 +1242,35 @@ export class ExpressionContext extends ParserRuleContext { } } + export class OrExpressionContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public andExpression_list(): AndExpressionContext[] { - return this.getTypedRuleContexts( - AndExpressionContext, - ) as AndExpressionContext[]; + return this.getTypedRuleContexts(AndExpressionContext) as AndExpressionContext[]; } public andExpression(i: number): AndExpressionContext { - return this.getTypedRuleContext( - AndExpressionContext, - i, - ) as AndExpressionContext; + return this.getTypedRuleContext(AndExpressionContext, i) as AndExpressionContext; } public OR_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.OR); + return this.getTokens(FilterQueryParser.OR); } public OR(i: number): TerminalNode { return this.getToken(FilterQueryParser.OR, i); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_orExpression; + public get ruleIndex(): number { + return FilterQueryParser.RULE_orExpression; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterOrExpression) { - listener.enterOrExpression(this); + if(listener.enterOrExpression) { + listener.enterOrExpression(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitOrExpression) { - listener.exitOrExpression(this); + if(listener.exitOrExpression) { + listener.exitOrExpression(this); } } // @Override @@ -3171,43 +1283,35 @@ export class OrExpressionContext extends ParserRuleContext { } } + export class AndExpressionContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public unaryExpression_list(): UnaryExpressionContext[] { - return this.getTypedRuleContexts( - UnaryExpressionContext, - ) as UnaryExpressionContext[]; + return this.getTypedRuleContexts(UnaryExpressionContext) as UnaryExpressionContext[]; } public unaryExpression(i: number): UnaryExpressionContext { - return this.getTypedRuleContext( - UnaryExpressionContext, - i, - ) as UnaryExpressionContext; + return this.getTypedRuleContext(UnaryExpressionContext, i) as UnaryExpressionContext; } public AND_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.AND); + return this.getTokens(FilterQueryParser.AND); } public AND(i: number): TerminalNode { return this.getToken(FilterQueryParser.AND, i); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_andExpression; + public get ruleIndex(): number { + return FilterQueryParser.RULE_andExpression; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterAndExpression) { - listener.enterAndExpression(this); + if(listener.enterAndExpression) { + listener.enterAndExpression(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitAndExpression) { - listener.exitAndExpression(this); + if(listener.exitAndExpression) { + listener.exitAndExpression(this); } } // @Override @@ -3220,14 +1324,11 @@ export class AndExpressionContext extends ParserRuleContext { } } + export class UnaryExpressionContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public primary(): PrimaryContext { return this.getTypedRuleContext(PrimaryContext, 0) as PrimaryContext; @@ -3235,17 +1336,17 @@ export class UnaryExpressionContext extends ParserRuleContext { public NOT(): TerminalNode { return this.getToken(FilterQueryParser.NOT, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_unaryExpression; + public get ruleIndex(): number { + return FilterQueryParser.RULE_unaryExpression; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterUnaryExpression) { - listener.enterUnaryExpression(this); + if(listener.enterUnaryExpression) { + listener.enterUnaryExpression(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitUnaryExpression) { - listener.exitUnaryExpression(this); + if(listener.exitUnaryExpression) { + listener.exitUnaryExpression(this); } } // @Override @@ -3258,23 +1359,17 @@ export class UnaryExpressionContext extends ParserRuleContext { } } + export class PrimaryContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public LPAREN(): TerminalNode { return this.getToken(FilterQueryParser.LPAREN, 0); } public orExpression(): OrExpressionContext { - return this.getTypedRuleContext( - OrExpressionContext, - 0, - ) as OrExpressionContext; + return this.getTypedRuleContext(OrExpressionContext, 0) as OrExpressionContext; } public RPAREN(): TerminalNode { return this.getToken(FilterQueryParser.RPAREN, 0); @@ -3283,25 +1378,22 @@ export class PrimaryContext extends ParserRuleContext { return this.getTypedRuleContext(ComparisonContext, 0) as ComparisonContext; } public functionCall(): FunctionCallContext { - return this.getTypedRuleContext( - FunctionCallContext, - 0, - ) as FunctionCallContext; + return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext; } public fullText(): FullTextContext { return this.getTypedRuleContext(FullTextContext, 0) as FullTextContext; } - public get ruleIndex(): number { - return FilterQueryParser.RULE_primary; + public get ruleIndex(): number { + return FilterQueryParser.RULE_primary; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterPrimary) { - listener.enterPrimary(this); + if(listener.enterPrimary) { + listener.enterPrimary(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitPrimary) { - listener.exitPrimary(this); + if(listener.exitPrimary) { + listener.exitPrimary(this); } } // @Override @@ -3314,14 +1406,11 @@ export class PrimaryContext extends ParserRuleContext { } } + export class ComparisonContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public key(): KeyContext { return this.getTypedRuleContext(KeyContext, 0) as KeyContext; @@ -3386,6 +1475,12 @@ export class ComparisonContext extends ParserRuleContext { public NOT_EXISTS(): TerminalNode { return this.getToken(FilterQueryParser.NOT_EXISTS, 0); } + public IS_NULL(): TerminalNode { + return this.getToken(FilterQueryParser.IS_NULL, 0); + } + public IS_NOT_NULL(): TerminalNode { + return this.getToken(FilterQueryParser.IS_NOT_NULL, 0); + } public REGEXP(): TerminalNode { return this.getToken(FilterQueryParser.REGEXP, 0); } @@ -3398,17 +1493,17 @@ export class ComparisonContext extends ParserRuleContext { public NOT_CONTAINS(): TerminalNode { return this.getToken(FilterQueryParser.NOT_CONTAINS, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_comparison; + public get ruleIndex(): number { + return FilterQueryParser.RULE_comparison; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterComparison) { - listener.enterComparison(this); + if(listener.enterComparison) { + listener.enterComparison(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitComparison) { - listener.exitComparison(this); + if(listener.exitComparison) { + listener.exitComparison(this); } } // @Override @@ -3421,14 +1516,11 @@ export class ComparisonContext extends ParserRuleContext { } } + export class InClauseContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public IN(): TerminalNode { return this.getToken(FilterQueryParser.IN, 0); @@ -3448,17 +1540,17 @@ export class InClauseContext extends ParserRuleContext { public RBRACK(): TerminalNode { return this.getToken(FilterQueryParser.RBRACK, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_inClause; + public get ruleIndex(): number { + return FilterQueryParser.RULE_inClause; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterInClause) { - listener.enterInClause(this); + if(listener.enterInClause) { + listener.enterInClause(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitInClause) { - listener.exitInClause(this); + if(listener.exitInClause) { + listener.exitInClause(this); } } // @Override @@ -3471,14 +1563,11 @@ export class InClauseContext extends ParserRuleContext { } } + export class NotInClauseContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public NOT_IN(): TerminalNode { return this.getToken(FilterQueryParser.NOT_IN, 0); @@ -3498,17 +1587,17 @@ export class NotInClauseContext extends ParserRuleContext { public RBRACK(): TerminalNode { return this.getToken(FilterQueryParser.RBRACK, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_notInClause; + public get ruleIndex(): number { + return FilterQueryParser.RULE_notInClause; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterNotInClause) { - listener.enterNotInClause(this); + if(listener.enterNotInClause) { + listener.enterNotInClause(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitNotInClause) { - listener.exitNotInClause(this); + if(listener.exitNotInClause) { + listener.exitNotInClause(this); } } // @Override @@ -3521,14 +1610,11 @@ export class NotInClauseContext extends ParserRuleContext { } } + export class ValueListContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public value_list(): ValueContext[] { return this.getTypedRuleContexts(ValueContext) as ValueContext[]; @@ -3537,22 +1623,22 @@ export class ValueListContext extends ParserRuleContext { return this.getTypedRuleContext(ValueContext, i) as ValueContext; } public COMMA_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.COMMA); + return this.getTokens(FilterQueryParser.COMMA); } public COMMA(i: number): TerminalNode { return this.getToken(FilterQueryParser.COMMA, i); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_valueList; + public get ruleIndex(): number { + return FilterQueryParser.RULE_valueList; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterValueList) { - listener.enterValueList(this); + if(listener.enterValueList) { + listener.enterValueList(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitValueList) { - listener.exitValueList(this); + if(listener.exitValueList) { + listener.exitValueList(this); } } // @Override @@ -3565,29 +1651,26 @@ export class ValueListContext extends ParserRuleContext { } } + export class FullTextContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public QUOTED_TEXT(): TerminalNode { return this.getToken(FilterQueryParser.QUOTED_TEXT, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_fullText; + public get ruleIndex(): number { + return FilterQueryParser.RULE_fullText; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterFullText) { - listener.enterFullText(this); + if(listener.enterFullText) { + listener.enterFullText(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitFullText) { - listener.exitFullText(this); + if(listener.exitFullText) { + listener.exitFullText(this); } } // @Override @@ -3600,23 +1683,17 @@ export class FullTextContext extends ParserRuleContext { } } + export class FunctionCallContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public LPAREN(): TerminalNode { return this.getToken(FilterQueryParser.LPAREN, 0); } public functionParamList(): FunctionParamListContext { - return this.getTypedRuleContext( - FunctionParamListContext, - 0, - ) as FunctionParamListContext; + return this.getTypedRuleContext(FunctionParamListContext, 0) as FunctionParamListContext; } public RPAREN(): TerminalNode { return this.getToken(FilterQueryParser.RPAREN, 0); @@ -3633,17 +1710,17 @@ export class FunctionCallContext extends ParserRuleContext { public HASNONE(): TerminalNode { return this.getToken(FilterQueryParser.HASNONE, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_functionCall; + public get ruleIndex(): number { + return FilterQueryParser.RULE_functionCall; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterFunctionCall) { - listener.enterFunctionCall(this); + if(listener.enterFunctionCall) { + listener.enterFunctionCall(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitFunctionCall) { - listener.exitFunctionCall(this); + if(listener.exitFunctionCall) { + listener.exitFunctionCall(this); } } // @Override @@ -3656,43 +1733,35 @@ export class FunctionCallContext extends ParserRuleContext { } } + export class FunctionParamListContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public functionParam_list(): FunctionParamContext[] { - return this.getTypedRuleContexts( - FunctionParamContext, - ) as FunctionParamContext[]; + return this.getTypedRuleContexts(FunctionParamContext) as FunctionParamContext[]; } public functionParam(i: number): FunctionParamContext { - return this.getTypedRuleContext( - FunctionParamContext, - i, - ) as FunctionParamContext; + return this.getTypedRuleContext(FunctionParamContext, i) as FunctionParamContext; } public COMMA_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.COMMA); + return this.getTokens(FilterQueryParser.COMMA); } public COMMA(i: number): TerminalNode { return this.getToken(FilterQueryParser.COMMA, i); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_functionParamList; + public get ruleIndex(): number { + return FilterQueryParser.RULE_functionParamList; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterFunctionParamList) { - listener.enterFunctionParamList(this); + if(listener.enterFunctionParamList) { + listener.enterFunctionParamList(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitFunctionParamList) { - listener.exitFunctionParamList(this); + if(listener.exitFunctionParamList) { + listener.exitFunctionParamList(this); } } // @Override @@ -3705,14 +1774,11 @@ export class FunctionParamListContext extends ParserRuleContext { } } + export class FunctionParamContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public key(): KeyContext { return this.getTypedRuleContext(KeyContext, 0) as KeyContext; @@ -3723,17 +1789,17 @@ export class FunctionParamContext extends ParserRuleContext { public array(): ArrayContext { return this.getTypedRuleContext(ArrayContext, 0) as ArrayContext; } - public get ruleIndex(): number { - return FilterQueryParser.RULE_functionParam; + public get ruleIndex(): number { + return FilterQueryParser.RULE_functionParam; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterFunctionParam) { - listener.enterFunctionParam(this); + if(listener.enterFunctionParam) { + listener.enterFunctionParam(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitFunctionParam) { - listener.exitFunctionParam(this); + if(listener.exitFunctionParam) { + listener.exitFunctionParam(this); } } // @Override @@ -3746,14 +1812,11 @@ export class FunctionParamContext extends ParserRuleContext { } } + export class ArrayContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public LBRACK(): TerminalNode { return this.getToken(FilterQueryParser.LBRACK, 0); @@ -3764,17 +1827,17 @@ export class ArrayContext extends ParserRuleContext { public RBRACK(): TerminalNode { return this.getToken(FilterQueryParser.RBRACK, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_array; + public get ruleIndex(): number { + return FilterQueryParser.RULE_array; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterArray) { - listener.enterArray(this); + if(listener.enterArray) { + listener.enterArray(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitArray) { - listener.exitArray(this); + if(listener.exitArray) { + listener.exitArray(this); } } // @Override @@ -3787,14 +1850,11 @@ export class ArrayContext extends ParserRuleContext { } } + export class ValueContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public QUOTED_TEXT(): TerminalNode { return this.getToken(FilterQueryParser.QUOTED_TEXT, 0); @@ -3808,17 +1868,17 @@ export class ValueContext extends ParserRuleContext { public KEY(): TerminalNode { return this.getToken(FilterQueryParser.KEY, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_value; + public get ruleIndex(): number { + return FilterQueryParser.RULE_value; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterValue) { - listener.enterValue(this); + if(listener.enterValue) { + listener.enterValue(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitValue) { - listener.exitValue(this); + if(listener.exitValue) { + listener.exitValue(this); } } // @Override @@ -3831,29 +1891,26 @@ export class ValueContext extends ParserRuleContext { } } + export class KeyContext extends ParserRuleContext { - constructor( - parser?: FilterQueryParser, - parent?: ParserRuleContext, - invokingState?: number, - ) { + constructor(parser?: FilterQueryParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); - this.parser = parser; + this.parser = parser; } public KEY(): TerminalNode { return this.getToken(FilterQueryParser.KEY, 0); } - public get ruleIndex(): number { - return FilterQueryParser.RULE_key; + public get ruleIndex(): number { + return FilterQueryParser.RULE_key; } public enterRule(listener: FilterQueryListener): void { - if (listener.enterKey) { - listener.enterKey(this); + if(listener.enterKey) { + listener.enterKey(this); } } public exitRule(listener: FilterQueryListener): void { - if (listener.exitKey) { - listener.exitKey(this); + if(listener.exitKey) { + listener.exitKey(this); } } // @Override diff --git a/frontend/src/parser/FilterQueryVisitor.ts b/frontend/src/parser/FilterQueryVisitor.ts index 2f9a868d69cd..50578ecb7a7f 100644 --- a/frontend/src/parser/FilterQueryVisitor.ts +++ b/frontend/src/parser/FilterQueryVisitor.ts @@ -1,24 +1,26 @@ -// Generated from src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from FilterQuery.g4 by ANTLR 4.13.1 -import { ParseTreeVisitor } from 'antlr4'; +import {ParseTreeVisitor} from 'antlr4'; + + +import { QueryContext } from "./FilterQueryParser"; +import { ExpressionContext } from "./FilterQueryParser"; +import { OrExpressionContext } from "./FilterQueryParser"; +import { AndExpressionContext } from "./FilterQueryParser"; +import { UnaryExpressionContext } from "./FilterQueryParser"; +import { PrimaryContext } from "./FilterQueryParser"; +import { ComparisonContext } from "./FilterQueryParser"; +import { InClauseContext } from "./FilterQueryParser"; +import { NotInClauseContext } from "./FilterQueryParser"; +import { ValueListContext } from "./FilterQueryParser"; +import { FullTextContext } from "./FilterQueryParser"; +import { FunctionCallContext } from "./FilterQueryParser"; +import { FunctionParamListContext } from "./FilterQueryParser"; +import { FunctionParamContext } from "./FilterQueryParser"; +import { ArrayContext } from "./FilterQueryParser"; +import { ValueContext } from "./FilterQueryParser"; +import { KeyContext } from "./FilterQueryParser"; -import { QueryContext } from './FilterQueryParser'; -import { ExpressionContext } from './FilterQueryParser'; -import { OrExpressionContext } from './FilterQueryParser'; -import { AndExpressionContext } from './FilterQueryParser'; -import { UnaryExpressionContext } from './FilterQueryParser'; -import { PrimaryContext } from './FilterQueryParser'; -import { ComparisonContext } from './FilterQueryParser'; -import { InClauseContext } from './FilterQueryParser'; -import { NotInClauseContext } from './FilterQueryParser'; -import { ValueListContext } from './FilterQueryParser'; -import { FullTextContext } from './FilterQueryParser'; -import { FunctionCallContext } from './FilterQueryParser'; -import { FunctionParamListContext } from './FilterQueryParser'; -import { FunctionParamContext } from './FilterQueryParser'; -import { ArrayContext } from './FilterQueryParser'; -import { ValueContext } from './FilterQueryParser'; -import { KeyContext } from './FilterQueryParser'; /** * This interface defines a complete generic visitor for a parse tree produced @@ -27,9 +29,7 @@ import { KeyContext } from './FilterQueryParser'; * @param The return type of the visit operation. Use `void` for * operations with no return type. */ -export default class FilterQueryVisitor< - Result -> extends ParseTreeVisitor { +export default class FilterQueryVisitor extends ParseTreeVisitor { /** * Visit a parse tree produced by `FilterQueryParser.query`. * @param ctx the parse tree @@ -133,3 +133,4 @@ export default class FilterQueryVisitor< */ visitKey?: (ctx: KeyContext) => Result; } + diff --git a/frontend/src/query-grammar/.antlr/FilterQuery.interp b/frontend/src/query-grammar/.antlr/FilterQuery.interp index 59028e95f718..e08cdb1df715 100644 --- a/frontend/src/query-grammar/.antlr/FilterQuery.interp +++ b/frontend/src/query-grammar/.antlr/FilterQuery.interp @@ -38,6 +38,8 @@ null null null null +null +null token symbolic names: null @@ -61,6 +63,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -101,4 +105,4 @@ key atn: -[4, 1, 38, 213, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 151, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 175, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 180, 8, 9, 10, 9, 12, 9, 183, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 195, 8, 12, 10, 12, 12, 12, 198, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 203, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 28, 29, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 30, 33, 1, 0, 34, 37, 227, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, 162, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 184, 1, 0, 0, 0, 22, 186, 1, 0, 0, 0, 24, 191, 1, 0, 0, 0, 26, 202, 1, 0, 0, 0, 28, 204, 1, 0, 0, 0, 30, 208, 1, 0, 0, 0, 32, 210, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 29, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 28, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 27, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 151, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 151, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 151, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 151, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 151, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 151, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 151, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 151, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 28, 0, 0, 114, 115, 3, 30, 15, 0, 115, 151, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 28, 0, 0, 120, 121, 3, 30, 15, 0, 121, 151, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 151, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 151, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 151, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 151, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 137, 3, 30, 15, 0, 137, 151, 1, 0, 0, 0, 138, 139, 3, 32, 16, 0, 139, 140, 5, 22, 0, 0, 140, 141, 3, 30, 15, 0, 141, 151, 1, 0, 0, 0, 142, 143, 3, 32, 16, 0, 143, 144, 5, 23, 0, 0, 144, 145, 3, 30, 15, 0, 145, 151, 1, 0, 0, 0, 146, 147, 3, 32, 16, 0, 147, 148, 5, 24, 0, 0, 148, 149, 3, 30, 15, 0, 149, 151, 1, 0, 0, 0, 150, 78, 1, 0, 0, 0, 150, 82, 1, 0, 0, 0, 150, 86, 1, 0, 0, 0, 150, 90, 1, 0, 0, 0, 150, 94, 1, 0, 0, 0, 150, 98, 1, 0, 0, 0, 150, 102, 1, 0, 0, 0, 150, 106, 1, 0, 0, 0, 150, 110, 1, 0, 0, 0, 150, 116, 1, 0, 0, 0, 150, 122, 1, 0, 0, 0, 150, 125, 1, 0, 0, 0, 150, 128, 1, 0, 0, 0, 150, 131, 1, 0, 0, 0, 150, 134, 1, 0, 0, 0, 150, 138, 1, 0, 0, 0, 150, 142, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 151, 13, 1, 0, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 5, 1, 0, 0, 154, 155, 3, 18, 9, 0, 155, 156, 5, 2, 0, 0, 156, 163, 1, 0, 0, 0, 157, 158, 5, 25, 0, 0, 158, 159, 5, 3, 0, 0, 159, 160, 3, 18, 9, 0, 160, 161, 5, 4, 0, 0, 161, 163, 1, 0, 0, 0, 162, 152, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 163, 15, 1, 0, 0, 0, 164, 165, 5, 26, 0, 0, 165, 166, 5, 1, 0, 0, 166, 167, 3, 18, 9, 0, 167, 168, 5, 2, 0, 0, 168, 175, 1, 0, 0, 0, 169, 170, 5, 26, 0, 0, 170, 171, 5, 3, 0, 0, 171, 172, 3, 18, 9, 0, 172, 173, 5, 4, 0, 0, 173, 175, 1, 0, 0, 0, 174, 164, 1, 0, 0, 0, 174, 169, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 181, 3, 30, 15, 0, 177, 178, 5, 5, 0, 0, 178, 180, 3, 30, 15, 0, 179, 177, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 19, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 185, 5, 36, 0, 0, 185, 21, 1, 0, 0, 0, 186, 187, 7, 4, 0, 0, 187, 188, 5, 1, 0, 0, 188, 189, 3, 24, 12, 0, 189, 190, 5, 2, 0, 0, 190, 23, 1, 0, 0, 0, 191, 196, 3, 26, 13, 0, 192, 193, 5, 5, 0, 0, 193, 195, 3, 26, 13, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 25, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 203, 3, 32, 16, 0, 200, 203, 3, 30, 15, 0, 201, 203, 3, 28, 14, 0, 202, 199, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 27, 1, 0, 0, 0, 204, 205, 5, 3, 0, 0, 205, 206, 3, 18, 9, 0, 206, 207, 5, 4, 0, 0, 207, 29, 1, 0, 0, 0, 208, 209, 7, 5, 0, 0, 209, 31, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 150, 162, 174, 181, 196, 202] \ No newline at end of file +[4, 1, 40, 219, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 157, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 169, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 181, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 186, 8, 9, 10, 9, 12, 9, 189, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 201, 8, 12, 10, 12, 12, 12, 204, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 209, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 30, 31, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 32, 35, 1, 0, 36, 39, 235, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 156, 1, 0, 0, 0, 14, 168, 1, 0, 0, 0, 16, 180, 1, 0, 0, 0, 18, 182, 1, 0, 0, 0, 20, 190, 1, 0, 0, 0, 22, 192, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 208, 1, 0, 0, 0, 28, 210, 1, 0, 0, 0, 30, 214, 1, 0, 0, 0, 32, 216, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 31, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 30, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 29, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 157, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 157, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 157, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 157, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 157, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 157, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 157, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 157, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 30, 0, 0, 114, 115, 3, 30, 15, 0, 115, 157, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 30, 0, 0, 120, 121, 3, 30, 15, 0, 121, 157, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 157, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 157, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 157, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 157, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 157, 1, 0, 0, 0, 137, 138, 3, 32, 16, 0, 138, 139, 5, 22, 0, 0, 139, 157, 1, 0, 0, 0, 140, 141, 3, 32, 16, 0, 141, 142, 5, 23, 0, 0, 142, 143, 3, 30, 15, 0, 143, 157, 1, 0, 0, 0, 144, 145, 3, 32, 16, 0, 145, 146, 5, 24, 0, 0, 146, 147, 3, 30, 15, 0, 147, 157, 1, 0, 0, 0, 148, 149, 3, 32, 16, 0, 149, 150, 5, 25, 0, 0, 150, 151, 3, 30, 15, 0, 151, 157, 1, 0, 0, 0, 152, 153, 3, 32, 16, 0, 153, 154, 5, 26, 0, 0, 154, 155, 3, 30, 15, 0, 155, 157, 1, 0, 0, 0, 156, 78, 1, 0, 0, 0, 156, 82, 1, 0, 0, 0, 156, 86, 1, 0, 0, 0, 156, 90, 1, 0, 0, 0, 156, 94, 1, 0, 0, 0, 156, 98, 1, 0, 0, 0, 156, 102, 1, 0, 0, 0, 156, 106, 1, 0, 0, 0, 156, 110, 1, 0, 0, 0, 156, 116, 1, 0, 0, 0, 156, 122, 1, 0, 0, 0, 156, 125, 1, 0, 0, 0, 156, 128, 1, 0, 0, 0, 156, 131, 1, 0, 0, 0, 156, 134, 1, 0, 0, 0, 156, 137, 1, 0, 0, 0, 156, 140, 1, 0, 0, 0, 156, 144, 1, 0, 0, 0, 156, 148, 1, 0, 0, 0, 156, 152, 1, 0, 0, 0, 157, 13, 1, 0, 0, 0, 158, 159, 5, 27, 0, 0, 159, 160, 5, 1, 0, 0, 160, 161, 3, 18, 9, 0, 161, 162, 5, 2, 0, 0, 162, 169, 1, 0, 0, 0, 163, 164, 5, 27, 0, 0, 164, 165, 5, 3, 0, 0, 165, 166, 3, 18, 9, 0, 166, 167, 5, 4, 0, 0, 167, 169, 1, 0, 0, 0, 168, 158, 1, 0, 0, 0, 168, 163, 1, 0, 0, 0, 169, 15, 1, 0, 0, 0, 170, 171, 5, 28, 0, 0, 171, 172, 5, 1, 0, 0, 172, 173, 3, 18, 9, 0, 173, 174, 5, 2, 0, 0, 174, 181, 1, 0, 0, 0, 175, 176, 5, 28, 0, 0, 176, 177, 5, 3, 0, 0, 177, 178, 3, 18, 9, 0, 178, 179, 5, 4, 0, 0, 179, 181, 1, 0, 0, 0, 180, 170, 1, 0, 0, 0, 180, 175, 1, 0, 0, 0, 181, 17, 1, 0, 0, 0, 182, 187, 3, 30, 15, 0, 183, 184, 5, 5, 0, 0, 184, 186, 3, 30, 15, 0, 185, 183, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 19, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 5, 38, 0, 0, 191, 21, 1, 0, 0, 0, 192, 193, 7, 4, 0, 0, 193, 194, 5, 1, 0, 0, 194, 195, 3, 24, 12, 0, 195, 196, 5, 2, 0, 0, 196, 23, 1, 0, 0, 0, 197, 202, 3, 26, 13, 0, 198, 199, 5, 5, 0, 0, 199, 201, 3, 26, 13, 0, 200, 198, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 25, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 209, 3, 32, 16, 0, 206, 209, 3, 30, 15, 0, 207, 209, 3, 28, 14, 0, 208, 205, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209, 27, 1, 0, 0, 0, 210, 211, 5, 3, 0, 0, 211, 212, 3, 18, 9, 0, 212, 213, 5, 4, 0, 0, 213, 29, 1, 0, 0, 0, 214, 215, 7, 5, 0, 0, 215, 31, 1, 0, 0, 0, 216, 217, 5, 39, 0, 0, 217, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 156, 168, 180, 187, 202, 208] \ No newline at end of file diff --git a/frontend/src/query-grammar/.antlr/FilterQuery.tokens b/frontend/src/query-grammar/.antlr/FilterQuery.tokens index 58b4f992a113..685911112d34 100644 --- a/frontend/src/query-grammar/.antlr/FilterQuery.tokens +++ b/frontend/src/query-grammar/.antlr/FilterQuery.tokens @@ -18,24 +18,26 @@ BETWEEN=17 NOT_BETWEEN=18 EXISTS=19 NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +IS_NULL=21 +IS_NOT_NULL=22 +REGEXP=23 +NOT_REGEXP=24 +CONTAINS=25 +NOT_CONTAINS=26 +IN=27 +NOT_IN=28 +NOT=29 +AND=30 +OR=31 +HAS=32 +HASANY=33 +HASALL=34 +HASNONE=35 +BOOL=36 +NUMBER=37 +QUOTED_TEXT=38 +KEY=39 +WS=40 '('=1 ')'=2 '['=3 diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp b/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp index 127061871d87..bf779763b386 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp @@ -38,6 +38,8 @@ null null null null +null +null token symbolic names: null @@ -61,6 +63,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -101,6 +105,8 @@ BETWEEN NOT_BETWEEN EXISTS NOT_EXISTS +IS_NULL +IS_NOT_NULL REGEXP NOT_REGEXP CONTAINS @@ -129,4 +135,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 38, 359, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 93, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 120, 8, 13, 11, 13, 12, 13, 121, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 139, 8, 15, 11, 15, 12, 15, 140, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 161, 8, 17, 11, 17, 12, 17, 162, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 179, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 4, 19, 185, 8, 19, 11, 19, 12, 19, 186, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 195, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4, 21, 208, 8, 21, 11, 21, 12, 21, 209, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 227, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 4, 23, 233, 8, 23, 11, 23, 12, 23, 234, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 245, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 4, 25, 254, 8, 25, 11, 25, 12, 25, 255, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 307, 8, 33, 1, 34, 4, 34, 310, 8, 34, 11, 34, 12, 34, 311, 1, 34, 1, 34, 4, 34, 316, 8, 34, 11, 34, 12, 34, 317, 3, 34, 320, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 326, 8, 35, 10, 35, 12, 35, 329, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 336, 8, 35, 10, 35, 12, 35, 339, 9, 35, 1, 35, 3, 35, 342, 8, 35, 1, 36, 1, 36, 5, 36, 346, 8, 36, 10, 36, 12, 36, 349, 9, 36, 1, 37, 4, 37, 352, 8, 37, 11, 37, 12, 37, 353, 1, 37, 1, 37, 1, 38, 1, 38, 0, 0, 39, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 1, 0, 28, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 9, 9, 32, 32, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 380, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 79, 1, 0, 0, 0, 3, 81, 1, 0, 0, 0, 5, 83, 1, 0, 0, 0, 7, 85, 1, 0, 0, 0, 9, 87, 1, 0, 0, 0, 11, 92, 1, 0, 0, 0, 13, 94, 1, 0, 0, 0, 15, 97, 1, 0, 0, 0, 17, 100, 1, 0, 0, 0, 19, 102, 1, 0, 0, 0, 21, 105, 1, 0, 0, 0, 23, 107, 1, 0, 0, 0, 25, 110, 1, 0, 0, 0, 27, 115, 1, 0, 0, 0, 29, 128, 1, 0, 0, 0, 31, 134, 1, 0, 0, 0, 33, 148, 1, 0, 0, 0, 35, 156, 1, 0, 0, 0, 37, 172, 1, 0, 0, 0, 39, 180, 1, 0, 0, 0, 41, 196, 1, 0, 0, 0, 43, 203, 1, 0, 0, 0, 45, 218, 1, 0, 0, 0, 47, 228, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 249, 1, 0, 0, 0, 53, 260, 1, 0, 0, 0, 55, 264, 1, 0, 0, 0, 57, 268, 1, 0, 0, 0, 59, 271, 1, 0, 0, 0, 61, 275, 1, 0, 0, 0, 63, 282, 1, 0, 0, 0, 65, 289, 1, 0, 0, 0, 67, 306, 1, 0, 0, 0, 69, 309, 1, 0, 0, 0, 71, 341, 1, 0, 0, 0, 73, 343, 1, 0, 0, 0, 75, 351, 1, 0, 0, 0, 77, 357, 1, 0, 0, 0, 79, 80, 5, 40, 0, 0, 80, 2, 1, 0, 0, 0, 81, 82, 5, 41, 0, 0, 82, 4, 1, 0, 0, 0, 83, 84, 5, 91, 0, 0, 84, 6, 1, 0, 0, 0, 85, 86, 5, 93, 0, 0, 86, 8, 1, 0, 0, 0, 87, 88, 5, 44, 0, 0, 88, 10, 1, 0, 0, 0, 89, 93, 5, 61, 0, 0, 90, 91, 5, 61, 0, 0, 91, 93, 5, 61, 0, 0, 92, 89, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 12, 1, 0, 0, 0, 94, 95, 5, 33, 0, 0, 95, 96, 5, 61, 0, 0, 96, 14, 1, 0, 0, 0, 97, 98, 5, 60, 0, 0, 98, 99, 5, 62, 0, 0, 99, 16, 1, 0, 0, 0, 100, 101, 5, 60, 0, 0, 101, 18, 1, 0, 0, 0, 102, 103, 5, 60, 0, 0, 103, 104, 5, 61, 0, 0, 104, 20, 1, 0, 0, 0, 105, 106, 5, 62, 0, 0, 106, 22, 1, 0, 0, 0, 107, 108, 5, 62, 0, 0, 108, 109, 5, 61, 0, 0, 109, 24, 1, 0, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 26, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 5, 0, 0, 117, 119, 7, 6, 0, 0, 118, 120, 7, 7, 0, 0, 119, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 2, 0, 0, 126, 127, 7, 3, 0, 0, 127, 28, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 7, 1, 0, 0, 131, 132, 7, 2, 0, 0, 132, 133, 7, 3, 0, 0, 133, 30, 1, 0, 0, 0, 134, 135, 7, 4, 0, 0, 135, 136, 7, 5, 0, 0, 136, 138, 7, 6, 0, 0, 137, 139, 7, 7, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 7, 1, 0, 0, 143, 144, 7, 0, 0, 0, 144, 145, 7, 1, 0, 0, 145, 146, 7, 2, 0, 0, 146, 147, 7, 3, 0, 0, 147, 32, 1, 0, 0, 0, 148, 149, 7, 8, 0, 0, 149, 150, 7, 3, 0, 0, 150, 151, 7, 6, 0, 0, 151, 152, 7, 9, 0, 0, 152, 153, 7, 3, 0, 0, 153, 154, 7, 3, 0, 0, 154, 155, 7, 4, 0, 0, 155, 34, 1, 0, 0, 0, 156, 157, 7, 4, 0, 0, 157, 158, 7, 5, 0, 0, 158, 160, 7, 6, 0, 0, 159, 161, 7, 7, 0, 0, 160, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 7, 8, 0, 0, 165, 166, 7, 3, 0, 0, 166, 167, 7, 6, 0, 0, 167, 168, 7, 9, 0, 0, 168, 169, 7, 3, 0, 0, 169, 170, 7, 3, 0, 0, 170, 171, 7, 4, 0, 0, 171, 36, 1, 0, 0, 0, 172, 173, 7, 3, 0, 0, 173, 174, 7, 10, 0, 0, 174, 175, 7, 1, 0, 0, 175, 176, 7, 11, 0, 0, 176, 178, 7, 6, 0, 0, 177, 179, 7, 11, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 38, 1, 0, 0, 0, 180, 181, 7, 4, 0, 0, 181, 182, 7, 5, 0, 0, 182, 184, 7, 6, 0, 0, 183, 185, 7, 7, 0, 0, 184, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 189, 7, 3, 0, 0, 189, 190, 7, 10, 0, 0, 190, 191, 7, 1, 0, 0, 191, 192, 7, 11, 0, 0, 192, 194, 7, 6, 0, 0, 193, 195, 7, 11, 0, 0, 194, 193, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 40, 1, 0, 0, 0, 196, 197, 7, 12, 0, 0, 197, 198, 7, 3, 0, 0, 198, 199, 7, 13, 0, 0, 199, 200, 7, 3, 0, 0, 200, 201, 7, 10, 0, 0, 201, 202, 7, 14, 0, 0, 202, 42, 1, 0, 0, 0, 203, 204, 7, 4, 0, 0, 204, 205, 7, 5, 0, 0, 205, 207, 7, 6, 0, 0, 206, 208, 7, 7, 0, 0, 207, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 207, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 212, 7, 12, 0, 0, 212, 213, 7, 3, 0, 0, 213, 214, 7, 13, 0, 0, 214, 215, 7, 3, 0, 0, 215, 216, 7, 10, 0, 0, 216, 217, 7, 14, 0, 0, 217, 44, 1, 0, 0, 0, 218, 219, 7, 15, 0, 0, 219, 220, 7, 5, 0, 0, 220, 221, 7, 4, 0, 0, 221, 222, 7, 6, 0, 0, 222, 223, 7, 16, 0, 0, 223, 224, 7, 1, 0, 0, 224, 226, 7, 4, 0, 0, 225, 227, 7, 11, 0, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 46, 1, 0, 0, 0, 228, 229, 7, 4, 0, 0, 229, 230, 7, 5, 0, 0, 230, 232, 7, 6, 0, 0, 231, 233, 7, 7, 0, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 5, 0, 0, 238, 239, 7, 4, 0, 0, 239, 240, 7, 6, 0, 0, 240, 241, 7, 16, 0, 0, 241, 242, 7, 1, 0, 0, 242, 244, 7, 4, 0, 0, 243, 245, 7, 11, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 48, 1, 0, 0, 0, 246, 247, 7, 1, 0, 0, 247, 248, 7, 4, 0, 0, 248, 50, 1, 0, 0, 0, 249, 250, 7, 4, 0, 0, 250, 251, 7, 5, 0, 0, 251, 253, 7, 6, 0, 0, 252, 254, 7, 7, 0, 0, 253, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 7, 1, 0, 0, 258, 259, 7, 4, 0, 0, 259, 52, 1, 0, 0, 0, 260, 261, 7, 4, 0, 0, 261, 262, 7, 5, 0, 0, 262, 263, 7, 6, 0, 0, 263, 54, 1, 0, 0, 0, 264, 265, 7, 16, 0, 0, 265, 266, 7, 4, 0, 0, 266, 267, 7, 17, 0, 0, 267, 56, 1, 0, 0, 0, 268, 269, 7, 5, 0, 0, 269, 270, 7, 12, 0, 0, 270, 58, 1, 0, 0, 0, 271, 272, 7, 18, 0, 0, 272, 273, 7, 16, 0, 0, 273, 274, 7, 11, 0, 0, 274, 60, 1, 0, 0, 0, 275, 276, 7, 18, 0, 0, 276, 277, 7, 16, 0, 0, 277, 278, 7, 11, 0, 0, 278, 279, 7, 16, 0, 0, 279, 280, 7, 4, 0, 0, 280, 281, 7, 19, 0, 0, 281, 62, 1, 0, 0, 0, 282, 283, 7, 18, 0, 0, 283, 284, 7, 16, 0, 0, 284, 285, 7, 11, 0, 0, 285, 286, 7, 16, 0, 0, 286, 287, 7, 0, 0, 0, 287, 288, 7, 0, 0, 0, 288, 64, 1, 0, 0, 0, 289, 290, 7, 18, 0, 0, 290, 291, 7, 16, 0, 0, 291, 292, 7, 11, 0, 0, 292, 293, 7, 4, 0, 0, 293, 294, 7, 5, 0, 0, 294, 295, 7, 4, 0, 0, 295, 296, 7, 3, 0, 0, 296, 66, 1, 0, 0, 0, 297, 298, 7, 6, 0, 0, 298, 299, 7, 12, 0, 0, 299, 300, 7, 20, 0, 0, 300, 307, 7, 3, 0, 0, 301, 302, 7, 21, 0, 0, 302, 303, 7, 16, 0, 0, 303, 304, 7, 0, 0, 0, 304, 305, 7, 11, 0, 0, 305, 307, 7, 3, 0, 0, 306, 297, 1, 0, 0, 0, 306, 301, 1, 0, 0, 0, 307, 68, 1, 0, 0, 0, 308, 310, 3, 77, 38, 0, 309, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 319, 1, 0, 0, 0, 313, 315, 5, 46, 0, 0, 314, 316, 3, 77, 38, 0, 315, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 313, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 70, 1, 0, 0, 0, 321, 327, 5, 34, 0, 0, 322, 326, 8, 22, 0, 0, 323, 324, 5, 92, 0, 0, 324, 326, 9, 0, 0, 0, 325, 322, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 342, 5, 34, 0, 0, 331, 337, 5, 39, 0, 0, 332, 336, 8, 23, 0, 0, 333, 334, 5, 92, 0, 0, 334, 336, 9, 0, 0, 0, 335, 332, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, 342, 5, 39, 0, 0, 341, 321, 1, 0, 0, 0, 341, 331, 1, 0, 0, 0, 342, 72, 1, 0, 0, 0, 343, 347, 7, 24, 0, 0, 344, 346, 7, 25, 0, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 74, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 352, 7, 26, 0, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 6, 37, 0, 0, 356, 76, 1, 0, 0, 0, 357, 358, 7, 27, 0, 0, 358, 78, 1, 0, 0, 0, 24, 0, 92, 121, 140, 162, 178, 186, 194, 209, 226, 234, 244, 255, 306, 311, 317, 319, 325, 327, 335, 337, 341, 347, 353, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 40, 355, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 97, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 171, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 183, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 231, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 245, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 303, 8, 35, 1, 36, 4, 36, 306, 8, 36, 11, 36, 12, 36, 307, 1, 36, 1, 36, 4, 36, 312, 8, 36, 11, 36, 12, 36, 313, 3, 36, 316, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 322, 8, 37, 10, 37, 12, 37, 325, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, 9, 37, 1, 37, 3, 37, 338, 8, 37, 1, 38, 1, 38, 5, 38, 342, 8, 38, 10, 38, 12, 38, 345, 9, 38, 1, 39, 4, 39, 348, 8, 39, 11, 39, 12, 39, 349, 1, 39, 1, 39, 1, 40, 1, 40, 0, 0, 41, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 0, 1, 0, 27, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 85, 85, 117, 117, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 369, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 3, 85, 1, 0, 0, 0, 5, 87, 1, 0, 0, 0, 7, 89, 1, 0, 0, 0, 9, 91, 1, 0, 0, 0, 11, 96, 1, 0, 0, 0, 13, 98, 1, 0, 0, 0, 15, 101, 1, 0, 0, 0, 17, 104, 1, 0, 0, 0, 19, 106, 1, 0, 0, 0, 21, 109, 1, 0, 0, 0, 23, 111, 1, 0, 0, 0, 25, 114, 1, 0, 0, 0, 27, 119, 1, 0, 0, 0, 29, 128, 1, 0, 0, 0, 31, 134, 1, 0, 0, 0, 33, 144, 1, 0, 0, 0, 35, 152, 1, 0, 0, 0, 37, 164, 1, 0, 0, 0, 39, 172, 1, 0, 0, 0, 41, 184, 1, 0, 0, 0, 43, 192, 1, 0, 0, 0, 45, 204, 1, 0, 0, 0, 47, 211, 1, 0, 0, 0, 49, 222, 1, 0, 0, 0, 51, 232, 1, 0, 0, 0, 53, 246, 1, 0, 0, 0, 55, 249, 1, 0, 0, 0, 57, 256, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, 1, 0, 0, 0, 63, 267, 1, 0, 0, 0, 65, 271, 1, 0, 0, 0, 67, 278, 1, 0, 0, 0, 69, 285, 1, 0, 0, 0, 71, 302, 1, 0, 0, 0, 73, 305, 1, 0, 0, 0, 75, 337, 1, 0, 0, 0, 77, 339, 1, 0, 0, 0, 79, 347, 1, 0, 0, 0, 81, 353, 1, 0, 0, 0, 83, 84, 5, 40, 0, 0, 84, 2, 1, 0, 0, 0, 85, 86, 5, 41, 0, 0, 86, 4, 1, 0, 0, 0, 87, 88, 5, 91, 0, 0, 88, 6, 1, 0, 0, 0, 89, 90, 5, 93, 0, 0, 90, 8, 1, 0, 0, 0, 91, 92, 5, 44, 0, 0, 92, 10, 1, 0, 0, 0, 93, 97, 5, 61, 0, 0, 94, 95, 5, 61, 0, 0, 95, 97, 5, 61, 0, 0, 96, 93, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 97, 12, 1, 0, 0, 0, 98, 99, 5, 33, 0, 0, 99, 100, 5, 61, 0, 0, 100, 14, 1, 0, 0, 0, 101, 102, 5, 60, 0, 0, 102, 103, 5, 62, 0, 0, 103, 16, 1, 0, 0, 0, 104, 105, 5, 60, 0, 0, 105, 18, 1, 0, 0, 0, 106, 107, 5, 60, 0, 0, 107, 108, 5, 61, 0, 0, 108, 20, 1, 0, 0, 0, 109, 110, 5, 62, 0, 0, 110, 22, 1, 0, 0, 0, 111, 112, 5, 62, 0, 0, 112, 113, 5, 61, 0, 0, 113, 24, 1, 0, 0, 0, 114, 115, 7, 0, 0, 0, 115, 116, 7, 1, 0, 0, 116, 117, 7, 2, 0, 0, 117, 118, 7, 3, 0, 0, 118, 26, 1, 0, 0, 0, 119, 120, 7, 4, 0, 0, 120, 121, 7, 5, 0, 0, 121, 122, 7, 6, 0, 0, 122, 123, 5, 95, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 2, 0, 0, 126, 127, 7, 3, 0, 0, 127, 28, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 7, 1, 0, 0, 131, 132, 7, 2, 0, 0, 132, 133, 7, 3, 0, 0, 133, 30, 1, 0, 0, 0, 134, 135, 7, 4, 0, 0, 135, 136, 7, 5, 0, 0, 136, 137, 7, 6, 0, 0, 137, 138, 5, 95, 0, 0, 138, 139, 7, 1, 0, 0, 139, 140, 7, 0, 0, 0, 140, 141, 7, 1, 0, 0, 141, 142, 7, 2, 0, 0, 142, 143, 7, 3, 0, 0, 143, 32, 1, 0, 0, 0, 144, 145, 7, 7, 0, 0, 145, 146, 7, 3, 0, 0, 146, 147, 7, 6, 0, 0, 147, 148, 7, 8, 0, 0, 148, 149, 7, 3, 0, 0, 149, 150, 7, 3, 0, 0, 150, 151, 7, 4, 0, 0, 151, 34, 1, 0, 0, 0, 152, 153, 7, 4, 0, 0, 153, 154, 7, 5, 0, 0, 154, 155, 7, 6, 0, 0, 155, 156, 5, 95, 0, 0, 156, 157, 7, 7, 0, 0, 157, 158, 7, 3, 0, 0, 158, 159, 7, 6, 0, 0, 159, 160, 7, 8, 0, 0, 160, 161, 7, 3, 0, 0, 161, 162, 7, 3, 0, 0, 162, 163, 7, 4, 0, 0, 163, 36, 1, 0, 0, 0, 164, 165, 7, 3, 0, 0, 165, 166, 7, 9, 0, 0, 166, 167, 7, 1, 0, 0, 167, 168, 7, 10, 0, 0, 168, 170, 7, 6, 0, 0, 169, 171, 7, 10, 0, 0, 170, 169, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 38, 1, 0, 0, 0, 172, 173, 7, 4, 0, 0, 173, 174, 7, 5, 0, 0, 174, 175, 7, 6, 0, 0, 175, 176, 5, 45, 0, 0, 176, 177, 7, 3, 0, 0, 177, 178, 7, 9, 0, 0, 178, 179, 7, 1, 0, 0, 179, 180, 7, 10, 0, 0, 180, 182, 7, 6, 0, 0, 181, 183, 7, 10, 0, 0, 182, 181, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 40, 1, 0, 0, 0, 184, 185, 7, 1, 0, 0, 185, 186, 7, 10, 0, 0, 186, 187, 5, 95, 0, 0, 187, 188, 7, 4, 0, 0, 188, 189, 7, 11, 0, 0, 189, 190, 7, 0, 0, 0, 190, 191, 7, 0, 0, 0, 191, 42, 1, 0, 0, 0, 192, 193, 7, 1, 0, 0, 193, 194, 7, 10, 0, 0, 194, 195, 5, 95, 0, 0, 195, 196, 7, 4, 0, 0, 196, 197, 7, 5, 0, 0, 197, 198, 7, 6, 0, 0, 198, 199, 5, 95, 0, 0, 199, 200, 7, 4, 0, 0, 200, 201, 7, 11, 0, 0, 201, 202, 7, 0, 0, 0, 202, 203, 7, 0, 0, 0, 203, 44, 1, 0, 0, 0, 204, 205, 7, 12, 0, 0, 205, 206, 7, 3, 0, 0, 206, 207, 7, 13, 0, 0, 207, 208, 7, 3, 0, 0, 208, 209, 7, 9, 0, 0, 209, 210, 7, 14, 0, 0, 210, 46, 1, 0, 0, 0, 211, 212, 7, 4, 0, 0, 212, 213, 7, 5, 0, 0, 213, 214, 7, 6, 0, 0, 214, 215, 5, 95, 0, 0, 215, 216, 7, 12, 0, 0, 216, 217, 7, 3, 0, 0, 217, 218, 7, 13, 0, 0, 218, 219, 7, 3, 0, 0, 219, 220, 7, 9, 0, 0, 220, 221, 7, 14, 0, 0, 221, 48, 1, 0, 0, 0, 222, 223, 7, 15, 0, 0, 223, 224, 7, 5, 0, 0, 224, 225, 7, 4, 0, 0, 225, 226, 7, 6, 0, 0, 226, 227, 7, 16, 0, 0, 227, 228, 7, 1, 0, 0, 228, 230, 7, 4, 0, 0, 229, 231, 7, 10, 0, 0, 230, 229, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 50, 1, 0, 0, 0, 232, 233, 7, 4, 0, 0, 233, 234, 7, 5, 0, 0, 234, 235, 7, 6, 0, 0, 235, 236, 5, 95, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 5, 0, 0, 238, 239, 7, 4, 0, 0, 239, 240, 7, 6, 0, 0, 240, 241, 7, 16, 0, 0, 241, 242, 7, 1, 0, 0, 242, 244, 7, 4, 0, 0, 243, 245, 7, 10, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 52, 1, 0, 0, 0, 246, 247, 7, 1, 0, 0, 247, 248, 7, 4, 0, 0, 248, 54, 1, 0, 0, 0, 249, 250, 7, 4, 0, 0, 250, 251, 7, 5, 0, 0, 251, 252, 7, 6, 0, 0, 252, 253, 5, 95, 0, 0, 253, 254, 7, 1, 0, 0, 254, 255, 7, 4, 0, 0, 255, 56, 1, 0, 0, 0, 256, 257, 7, 4, 0, 0, 257, 258, 7, 5, 0, 0, 258, 259, 7, 6, 0, 0, 259, 58, 1, 0, 0, 0, 260, 261, 7, 16, 0, 0, 261, 262, 7, 4, 0, 0, 262, 263, 7, 17, 0, 0, 263, 60, 1, 0, 0, 0, 264, 265, 7, 5, 0, 0, 265, 266, 7, 12, 0, 0, 266, 62, 1, 0, 0, 0, 267, 268, 7, 18, 0, 0, 268, 269, 7, 16, 0, 0, 269, 270, 7, 10, 0, 0, 270, 64, 1, 0, 0, 0, 271, 272, 7, 18, 0, 0, 272, 273, 7, 16, 0, 0, 273, 274, 7, 10, 0, 0, 274, 275, 7, 16, 0, 0, 275, 276, 7, 4, 0, 0, 276, 277, 7, 19, 0, 0, 277, 66, 1, 0, 0, 0, 278, 279, 7, 18, 0, 0, 279, 280, 7, 16, 0, 0, 280, 281, 7, 10, 0, 0, 281, 282, 7, 16, 0, 0, 282, 283, 7, 0, 0, 0, 283, 284, 7, 0, 0, 0, 284, 68, 1, 0, 0, 0, 285, 286, 7, 18, 0, 0, 286, 287, 7, 16, 0, 0, 287, 288, 7, 10, 0, 0, 288, 289, 7, 4, 0, 0, 289, 290, 7, 5, 0, 0, 290, 291, 7, 4, 0, 0, 291, 292, 7, 3, 0, 0, 292, 70, 1, 0, 0, 0, 293, 294, 7, 6, 0, 0, 294, 295, 7, 12, 0, 0, 295, 296, 7, 11, 0, 0, 296, 303, 7, 3, 0, 0, 297, 298, 7, 20, 0, 0, 298, 299, 7, 16, 0, 0, 299, 300, 7, 0, 0, 0, 300, 301, 7, 10, 0, 0, 301, 303, 7, 3, 0, 0, 302, 293, 1, 0, 0, 0, 302, 297, 1, 0, 0, 0, 303, 72, 1, 0, 0, 0, 304, 306, 3, 81, 40, 0, 305, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 315, 1, 0, 0, 0, 309, 311, 5, 46, 0, 0, 310, 312, 3, 81, 40, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 74, 1, 0, 0, 0, 317, 323, 5, 34, 0, 0, 318, 322, 8, 21, 0, 0, 319, 320, 5, 92, 0, 0, 320, 322, 9, 0, 0, 0, 321, 318, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 338, 5, 34, 0, 0, 327, 333, 5, 39, 0, 0, 328, 332, 8, 22, 0, 0, 329, 330, 5, 92, 0, 0, 330, 332, 9, 0, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 338, 5, 39, 0, 0, 337, 317, 1, 0, 0, 0, 337, 327, 1, 0, 0, 0, 338, 76, 1, 0, 0, 0, 339, 343, 7, 23, 0, 0, 340, 342, 7, 24, 0, 0, 341, 340, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 78, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 348, 7, 25, 0, 0, 347, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 6, 39, 0, 0, 352, 80, 1, 0, 0, 0, 353, 354, 7, 26, 0, 0, 354, 82, 1, 0, 0, 0, 17, 0, 96, 170, 182, 230, 244, 302, 307, 313, 315, 321, 323, 331, 333, 337, 343, 349, 1, 6, 0, 0] \ No newline at end of file diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.java b/frontend/src/query-grammar/.antlr/FilterQueryLexer.java index fc5bd5751e65..cb86151781ec 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.java +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.java @@ -1,4 +1,4 @@ -// Generated from /Users/younix/Documents/SigNoz-Repos/signoz/frontend/src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from /Users/abhikumar/Documents/Projects/signoz/frontend/src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.Token; @@ -18,10 +18,10 @@ public class FilterQueryLexer extends Lexer { public static final int LPAREN=1, RPAREN=2, LBRACK=3, RBRACK=4, COMMA=5, EQUALS=6, NOT_EQUALS=7, NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, NOT_LIKE=14, ILIKE=15, NOT_ILIKE=16, - BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, REGEXP=21, NOT_REGEXP=22, - CONTAINS=23, NOT_CONTAINS=24, IN=25, NOT_IN=26, NOT=27, AND=28, OR=29, - HAS=30, HASANY=31, HASALL=32, HASNONE=33, BOOL=34, NUMBER=35, QUOTED_TEXT=36, - KEY=37, WS=38; + BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, IS_NULL=21, IS_NOT_NULL=22, + REGEXP=23, NOT_REGEXP=24, CONTAINS=25, NOT_CONTAINS=26, IN=27, NOT_IN=28, + NOT=29, AND=30, OR=31, HAS=32, HASANY=33, HASALL=34, HASNONE=35, BOOL=36, + NUMBER=37, QUOTED_TEXT=38, KEY=39, WS=40; public static String[] channelNames = { "DEFAULT_TOKEN_CHANNEL", "HIDDEN" }; @@ -34,10 +34,10 @@ public class FilterQueryLexer extends Lexer { return new String[] { "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS", "DIGIT" + "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "IS_NULL", "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", + "AND", "OR", "HAS", "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", + "QUOTED_TEXT", "KEY", "WS", "DIGIT" }; } public static final String[] ruleNames = makeRuleNames(); @@ -53,10 +53,10 @@ public class FilterQueryLexer extends Lexer { return new String[] { null, "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS" + "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "IS_NULL", "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", + "AND", "OR", "HAS", "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", + "QUOTED_TEXT", "KEY", "WS" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -118,7 +118,7 @@ public class FilterQueryLexer extends Lexer { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\u0004\u0000&\u0167\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0004\u0000(\u0163\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ @@ -130,236 +130,226 @@ public class FilterQueryLexer extends Lexer { "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ - "&\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0003\u0005]\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001"+ - "\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0004\rx\b\r"+ - "\u000b\r\f\ry\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001"+ - "\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0004\u000f\u008b\b\u000f\u000b\u000f\f"+ - "\u000f\u008c\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+ - "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011"+ - "\u0001\u0011\u0004\u0011\u00a1\b\u0011\u000b\u0011\f\u0011\u00a2\u0001"+ - "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ - "\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u00b3\b\u0012\u0001\u0013\u0001\u0013\u0001"+ - "\u0013\u0001\u0013\u0004\u0013\u00b9\b\u0013\u000b\u0013\f\u0013\u00ba"+ + "&\u0002\'\u0007\'\u0002(\u0007(\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+ + "\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0004\u0001"+ + "\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005a\b\u0005\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+ + "\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e"+ + "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+ + "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011"+ + "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+ + "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u00ab\b\u0012"+ "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+ - "\u0003\u0013\u00c3\b\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0004\u0015\u00d0\b\u0015\u000b\u0015\f\u0015\u00d1\u0001"+ - "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ - "\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ - "\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u00e3\b\u0016\u0001\u0017\u0001"+ - "\u0017\u0001\u0017\u0001\u0017\u0004\u0017\u00e9\b\u0017\u000b\u0017\f"+ - "\u0017\u00ea\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+ - "\u0001\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u00f5\b\u0017\u0001\u0018"+ - "\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ - "\u0004\u0019\u00fe\b\u0019\u000b\u0019\f\u0019\u00ff\u0001\u0019\u0001"+ - "\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+ - "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001"+ - "\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+ - "\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+ - "\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ - "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001!"+ - "\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u0133"+ - "\b!\u0001\"\u0004\"\u0136\b\"\u000b\"\f\"\u0137\u0001\"\u0001\"\u0004"+ - "\"\u013c\b\"\u000b\"\f\"\u013d\u0003\"\u0140\b\"\u0001#\u0001#\u0001#"+ - "\u0001#\u0005#\u0146\b#\n#\f#\u0149\t#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0005#\u0150\b#\n#\f#\u0153\t#\u0001#\u0003#\u0156\b#\u0001$\u0001$"+ - "\u0005$\u015a\b$\n$\f$\u015d\t$\u0001%\u0004%\u0160\b%\u000b%\f%\u0161"+ - "\u0001%\u0001%\u0001&\u0001&\u0000\u0000\'\u0001\u0001\u0003\u0002\u0005"+ - "\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n"+ - "\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011"+ - "#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b"+ - "7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\u0000\u0001\u0000\u001c\u0002"+ - "\u0000LLll\u0002\u0000IIii\u0002\u0000KKkk\u0002\u0000EEee\u0002\u0000"+ - "NNnn\u0002\u0000OOoo\u0002\u0000TTtt\u0002\u0000\t\t \u0002\u0000BBb"+ - "b\u0002\u0000WWww\u0002\u0000XXxx\u0002\u0000SSss\u0002\u0000RRrr\u0002"+ - "\u0000GGgg\u0002\u0000PPpp\u0002\u0000CCcc\u0002\u0000AAaa\u0002\u0000"+ - "DDdd\u0002\u0000HHhh\u0002\u0000YYyy\u0002\u0000UUuu\u0002\u0000FFff\u0002"+ - "\u0000\"\"\\\\\u0002\u0000\'\'\\\\\u0004\u000009AZ__az\u0006\u0000..0"+ - "9A[]]__az\u0003\u0000\t\n\r\r \u0001\u000009\u017c\u0000\u0001\u0001"+ - "\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001"+ - "\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000"+ - "\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000"+ - "\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000"+ - "\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000"+ - "\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000"+ - "\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000"+ - "\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000"+ - "\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'"+ - "\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000"+ - "\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000"+ - "\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005"+ - "\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000"+ - "\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000"+ - "\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C"+ - "\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000"+ - "\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000"+ - "\u0001O\u0001\u0000\u0000\u0000\u0003Q\u0001\u0000\u0000\u0000\u0005S"+ - "\u0001\u0000\u0000\u0000\u0007U\u0001\u0000\u0000\u0000\tW\u0001\u0000"+ - "\u0000\u0000\u000b\\\u0001\u0000\u0000\u0000\r^\u0001\u0000\u0000\u0000"+ - "\u000fa\u0001\u0000\u0000\u0000\u0011d\u0001\u0000\u0000\u0000\u0013f"+ - "\u0001\u0000\u0000\u0000\u0015i\u0001\u0000\u0000\u0000\u0017k\u0001\u0000"+ - "\u0000\u0000\u0019n\u0001\u0000\u0000\u0000\u001bs\u0001\u0000\u0000\u0000"+ - "\u001d\u0080\u0001\u0000\u0000\u0000\u001f\u0086\u0001\u0000\u0000\u0000"+ - "!\u0094\u0001\u0000\u0000\u0000#\u009c\u0001\u0000\u0000\u0000%\u00ac"+ - "\u0001\u0000\u0000\u0000\'\u00b4\u0001\u0000\u0000\u0000)\u00c4\u0001"+ - "\u0000\u0000\u0000+\u00cb\u0001\u0000\u0000\u0000-\u00da\u0001\u0000\u0000"+ - "\u0000/\u00e4\u0001\u0000\u0000\u00001\u00f6\u0001\u0000\u0000\u00003"+ - "\u00f9\u0001\u0000\u0000\u00005\u0104\u0001\u0000\u0000\u00007\u0108\u0001"+ - "\u0000\u0000\u00009\u010c\u0001\u0000\u0000\u0000;\u010f\u0001\u0000\u0000"+ - "\u0000=\u0113\u0001\u0000\u0000\u0000?\u011a\u0001\u0000\u0000\u0000A"+ - "\u0121\u0001\u0000\u0000\u0000C\u0132\u0001\u0000\u0000\u0000E\u0135\u0001"+ - "\u0000\u0000\u0000G\u0155\u0001\u0000\u0000\u0000I\u0157\u0001\u0000\u0000"+ - "\u0000K\u015f\u0001\u0000\u0000\u0000M\u0165\u0001\u0000\u0000\u0000O"+ - "P\u0005(\u0000\u0000P\u0002\u0001\u0000\u0000\u0000QR\u0005)\u0000\u0000"+ - "R\u0004\u0001\u0000\u0000\u0000ST\u0005[\u0000\u0000T\u0006\u0001\u0000"+ - "\u0000\u0000UV\u0005]\u0000\u0000V\b\u0001\u0000\u0000\u0000WX\u0005,"+ - "\u0000\u0000X\n\u0001\u0000\u0000\u0000Y]\u0005=\u0000\u0000Z[\u0005="+ - "\u0000\u0000[]\u0005=\u0000\u0000\\Y\u0001\u0000\u0000\u0000\\Z\u0001"+ - "\u0000\u0000\u0000]\f\u0001\u0000\u0000\u0000^_\u0005!\u0000\u0000_`\u0005"+ - "=\u0000\u0000`\u000e\u0001\u0000\u0000\u0000ab\u0005<\u0000\u0000bc\u0005"+ - ">\u0000\u0000c\u0010\u0001\u0000\u0000\u0000de\u0005<\u0000\u0000e\u0012"+ - "\u0001\u0000\u0000\u0000fg\u0005<\u0000\u0000gh\u0005=\u0000\u0000h\u0014"+ - "\u0001\u0000\u0000\u0000ij\u0005>\u0000\u0000j\u0016\u0001\u0000\u0000"+ - "\u0000kl\u0005>\u0000\u0000lm\u0005=\u0000\u0000m\u0018\u0001\u0000\u0000"+ - "\u0000no\u0007\u0000\u0000\u0000op\u0007\u0001\u0000\u0000pq\u0007\u0002"+ - "\u0000\u0000qr\u0007\u0003\u0000\u0000r\u001a\u0001\u0000\u0000\u0000"+ - "st\u0007\u0004\u0000\u0000tu\u0007\u0005\u0000\u0000uw\u0007\u0006\u0000"+ - "\u0000vx\u0007\u0007\u0000\u0000wv\u0001\u0000\u0000\u0000xy\u0001\u0000"+ - "\u0000\u0000yw\u0001\u0000\u0000\u0000yz\u0001\u0000\u0000\u0000z{\u0001"+ - "\u0000\u0000\u0000{|\u0007\u0000\u0000\u0000|}\u0007\u0001\u0000\u0000"+ - "}~\u0007\u0002\u0000\u0000~\u007f\u0007\u0003\u0000\u0000\u007f\u001c"+ - "\u0001\u0000\u0000\u0000\u0080\u0081\u0007\u0001\u0000\u0000\u0081\u0082"+ - "\u0007\u0000\u0000\u0000\u0082\u0083\u0007\u0001\u0000\u0000\u0083\u0084"+ - "\u0007\u0002\u0000\u0000\u0084\u0085\u0007\u0003\u0000\u0000\u0085\u001e"+ - "\u0001\u0000\u0000\u0000\u0086\u0087\u0007\u0004\u0000\u0000\u0087\u0088"+ - "\u0007\u0005\u0000\u0000\u0088\u008a\u0007\u0006\u0000\u0000\u0089\u008b"+ - "\u0007\u0007\u0000\u0000\u008a\u0089\u0001\u0000\u0000\u0000\u008b\u008c"+ - "\u0001\u0000\u0000\u0000\u008c\u008a\u0001\u0000\u0000\u0000\u008c\u008d"+ - "\u0001\u0000\u0000\u0000\u008d\u008e\u0001\u0000\u0000\u0000\u008e\u008f"+ - "\u0007\u0001\u0000\u0000\u008f\u0090\u0007\u0000\u0000\u0000\u0090\u0091"+ - "\u0007\u0001\u0000\u0000\u0091\u0092\u0007\u0002\u0000\u0000\u0092\u0093"+ - "\u0007\u0003\u0000\u0000\u0093 \u0001\u0000\u0000\u0000\u0094\u0095\u0007"+ - "\b\u0000\u0000\u0095\u0096\u0007\u0003\u0000\u0000\u0096\u0097\u0007\u0006"+ - "\u0000\u0000\u0097\u0098\u0007\t\u0000\u0000\u0098\u0099\u0007\u0003\u0000"+ - "\u0000\u0099\u009a\u0007\u0003\u0000\u0000\u009a\u009b\u0007\u0004\u0000"+ - "\u0000\u009b\"\u0001\u0000\u0000\u0000\u009c\u009d\u0007\u0004\u0000\u0000"+ - "\u009d\u009e\u0007\u0005\u0000\u0000\u009e\u00a0\u0007\u0006\u0000\u0000"+ - "\u009f\u00a1\u0007\u0007\u0000\u0000\u00a0\u009f\u0001\u0000\u0000\u0000"+ - "\u00a1\u00a2\u0001\u0000\u0000\u0000\u00a2\u00a0\u0001\u0000\u0000\u0000"+ - "\u00a2\u00a3\u0001\u0000\u0000\u0000\u00a3\u00a4\u0001\u0000\u0000\u0000"+ - "\u00a4\u00a5\u0007\b\u0000\u0000\u00a5\u00a6\u0007\u0003\u0000\u0000\u00a6"+ - "\u00a7\u0007\u0006\u0000\u0000\u00a7\u00a8\u0007\t\u0000\u0000\u00a8\u00a9"+ - "\u0007\u0003\u0000\u0000\u00a9\u00aa\u0007\u0003\u0000\u0000\u00aa\u00ab"+ - "\u0007\u0004\u0000\u0000\u00ab$\u0001\u0000\u0000\u0000\u00ac\u00ad\u0007"+ - "\u0003\u0000\u0000\u00ad\u00ae\u0007\n\u0000\u0000\u00ae\u00af\u0007\u0001"+ - "\u0000\u0000\u00af\u00b0\u0007\u000b\u0000\u0000\u00b0\u00b2\u0007\u0006"+ - "\u0000\u0000\u00b1\u00b3\u0007\u000b\u0000\u0000\u00b2\u00b1\u0001\u0000"+ - "\u0000\u0000\u00b2\u00b3\u0001\u0000\u0000\u0000\u00b3&\u0001\u0000\u0000"+ - "\u0000\u00b4\u00b5\u0007\u0004\u0000\u0000\u00b5\u00b6\u0007\u0005\u0000"+ - "\u0000\u00b6\u00b8\u0007\u0006\u0000\u0000\u00b7\u00b9\u0007\u0007\u0000"+ - "\u0000\u00b8\u00b7\u0001\u0000\u0000\u0000\u00b9\u00ba\u0001\u0000\u0000"+ - "\u0000\u00ba\u00b8\u0001\u0000\u0000\u0000\u00ba\u00bb\u0001\u0000\u0000"+ - "\u0000\u00bb\u00bc\u0001\u0000\u0000\u0000\u00bc\u00bd\u0007\u0003\u0000"+ - "\u0000\u00bd\u00be\u0007\n\u0000\u0000\u00be\u00bf\u0007\u0001\u0000\u0000"+ - "\u00bf\u00c0\u0007\u000b\u0000\u0000\u00c0\u00c2\u0007\u0006\u0000\u0000"+ - "\u00c1\u00c3\u0007\u000b\u0000\u0000\u00c2\u00c1\u0001\u0000\u0000\u0000"+ - "\u00c2\u00c3\u0001\u0000\u0000\u0000\u00c3(\u0001\u0000\u0000\u0000\u00c4"+ - "\u00c5\u0007\f\u0000\u0000\u00c5\u00c6\u0007\u0003\u0000\u0000\u00c6\u00c7"+ - "\u0007\r\u0000\u0000\u00c7\u00c8\u0007\u0003\u0000\u0000\u00c8\u00c9\u0007"+ - "\n\u0000\u0000\u00c9\u00ca\u0007\u000e\u0000\u0000\u00ca*\u0001\u0000"+ - "\u0000\u0000\u00cb\u00cc\u0007\u0004\u0000\u0000\u00cc\u00cd\u0007\u0005"+ - "\u0000\u0000\u00cd\u00cf\u0007\u0006\u0000\u0000\u00ce\u00d0\u0007\u0007"+ - "\u0000\u0000\u00cf\u00ce\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001\u0000"+ - "\u0000\u0000\u00d1\u00cf\u0001\u0000\u0000\u0000\u00d1\u00d2\u0001\u0000"+ - "\u0000\u0000\u00d2\u00d3\u0001\u0000\u0000\u0000\u00d3\u00d4\u0007\f\u0000"+ - "\u0000\u00d4\u00d5\u0007\u0003\u0000\u0000\u00d5\u00d6\u0007\r\u0000\u0000"+ - "\u00d6\u00d7\u0007\u0003\u0000\u0000\u00d7\u00d8\u0007\n\u0000\u0000\u00d8"+ - "\u00d9\u0007\u000e\u0000\u0000\u00d9,\u0001\u0000\u0000\u0000\u00da\u00db"+ - "\u0007\u000f\u0000\u0000\u00db\u00dc\u0007\u0005\u0000\u0000\u00dc\u00dd"+ - "\u0007\u0004\u0000\u0000\u00dd\u00de\u0007\u0006\u0000\u0000\u00de\u00df"+ - "\u0007\u0010\u0000\u0000\u00df\u00e0\u0007\u0001\u0000\u0000\u00e0\u00e2"+ - "\u0007\u0004\u0000\u0000\u00e1\u00e3\u0007\u000b\u0000\u0000\u00e2\u00e1"+ - "\u0001\u0000\u0000\u0000\u00e2\u00e3\u0001\u0000\u0000\u0000\u00e3.\u0001"+ - "\u0000\u0000\u0000\u00e4\u00e5\u0007\u0004\u0000\u0000\u00e5\u00e6\u0007"+ - "\u0005\u0000\u0000\u00e6\u00e8\u0007\u0006\u0000\u0000\u00e7\u00e9\u0007"+ - "\u0007\u0000\u0000\u00e8\u00e7\u0001\u0000\u0000\u0000\u00e9\u00ea\u0001"+ - "\u0000\u0000\u0000\u00ea\u00e8\u0001\u0000\u0000\u0000\u00ea\u00eb\u0001"+ - "\u0000\u0000\u0000\u00eb\u00ec\u0001\u0000\u0000\u0000\u00ec\u00ed\u0007"+ - "\u000f\u0000\u0000\u00ed\u00ee\u0007\u0005\u0000\u0000\u00ee\u00ef\u0007"+ - "\u0004\u0000\u0000\u00ef\u00f0\u0007\u0006\u0000\u0000\u00f0\u00f1\u0007"+ - "\u0010\u0000\u0000\u00f1\u00f2\u0007\u0001\u0000\u0000\u00f2\u00f4\u0007"+ - "\u0004\u0000\u0000\u00f3\u00f5\u0007\u000b\u0000\u0000\u00f4\u00f3\u0001"+ - "\u0000\u0000\u0000\u00f4\u00f5\u0001\u0000\u0000\u0000\u00f50\u0001\u0000"+ - "\u0000\u0000\u00f6\u00f7\u0007\u0001\u0000\u0000\u00f7\u00f8\u0007\u0004"+ - "\u0000\u0000\u00f82\u0001\u0000\u0000\u0000\u00f9\u00fa\u0007\u0004\u0000"+ - "\u0000\u00fa\u00fb\u0007\u0005\u0000\u0000\u00fb\u00fd\u0007\u0006\u0000"+ - "\u0000\u00fc\u00fe\u0007\u0007\u0000\u0000\u00fd\u00fc\u0001\u0000\u0000"+ - "\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff\u00fd\u0001\u0000\u0000"+ - "\u0000\u00ff\u0100\u0001\u0000\u0000\u0000\u0100\u0101\u0001\u0000\u0000"+ - "\u0000\u0101\u0102\u0007\u0001\u0000\u0000\u0102\u0103\u0007\u0004\u0000"+ - "\u0000\u01034\u0001\u0000\u0000\u0000\u0104\u0105\u0007\u0004\u0000\u0000"+ - "\u0105\u0106\u0007\u0005\u0000\u0000\u0106\u0107\u0007\u0006\u0000\u0000"+ - "\u01076\u0001\u0000\u0000\u0000\u0108\u0109\u0007\u0010\u0000\u0000\u0109"+ - "\u010a\u0007\u0004\u0000\u0000\u010a\u010b\u0007\u0011\u0000\u0000\u010b"+ - "8\u0001\u0000\u0000\u0000\u010c\u010d\u0007\u0005\u0000\u0000\u010d\u010e"+ - "\u0007\f\u0000\u0000\u010e:\u0001\u0000\u0000\u0000\u010f\u0110\u0007"+ - "\u0012\u0000\u0000\u0110\u0111\u0007\u0010\u0000\u0000\u0111\u0112\u0007"+ - "\u000b\u0000\u0000\u0112<\u0001\u0000\u0000\u0000\u0113\u0114\u0007\u0012"+ - "\u0000\u0000\u0114\u0115\u0007\u0010\u0000\u0000\u0115\u0116\u0007\u000b"+ - "\u0000\u0000\u0116\u0117\u0007\u0010\u0000\u0000\u0117\u0118\u0007\u0004"+ - "\u0000\u0000\u0118\u0119\u0007\u0013\u0000\u0000\u0119>\u0001\u0000\u0000"+ - "\u0000\u011a\u011b\u0007\u0012\u0000\u0000\u011b\u011c\u0007\u0010\u0000"+ - "\u0000\u011c\u011d\u0007\u000b\u0000\u0000\u011d\u011e\u0007\u0010\u0000"+ - "\u0000\u011e\u011f\u0007\u0000\u0000\u0000\u011f\u0120\u0007\u0000\u0000"+ - "\u0000\u0120@\u0001\u0000\u0000\u0000\u0121\u0122\u0007\u0012\u0000\u0000"+ - "\u0122\u0123\u0007\u0010\u0000\u0000\u0123\u0124\u0007\u000b\u0000\u0000"+ - "\u0124\u0125\u0007\u0004\u0000\u0000\u0125\u0126\u0007\u0005\u0000\u0000"+ - "\u0126\u0127\u0007\u0004\u0000\u0000\u0127\u0128\u0007\u0003\u0000\u0000"+ - "\u0128B\u0001\u0000\u0000\u0000\u0129\u012a\u0007\u0006\u0000\u0000\u012a"+ - "\u012b\u0007\f\u0000\u0000\u012b\u012c\u0007\u0014\u0000\u0000\u012c\u0133"+ - "\u0007\u0003\u0000\u0000\u012d\u012e\u0007\u0015\u0000\u0000\u012e\u012f"+ - "\u0007\u0010\u0000\u0000\u012f\u0130\u0007\u0000\u0000\u0000\u0130\u0131"+ - "\u0007\u000b\u0000\u0000\u0131\u0133\u0007\u0003\u0000\u0000\u0132\u0129"+ - "\u0001\u0000\u0000\u0000\u0132\u012d\u0001\u0000\u0000\u0000\u0133D\u0001"+ - "\u0000\u0000\u0000\u0134\u0136\u0003M&\u0000\u0135\u0134\u0001\u0000\u0000"+ - "\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u0135\u0001\u0000\u0000"+ - "\u0000\u0137\u0138\u0001\u0000\u0000\u0000\u0138\u013f\u0001\u0000\u0000"+ - "\u0000\u0139\u013b\u0005.\u0000\u0000\u013a\u013c\u0003M&\u0000\u013b"+ - "\u013a\u0001\u0000\u0000\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013d"+ - "\u013b\u0001\u0000\u0000\u0000\u013d\u013e\u0001\u0000\u0000\u0000\u013e"+ - "\u0140\u0001\u0000\u0000\u0000\u013f\u0139\u0001\u0000\u0000\u0000\u013f"+ - "\u0140\u0001\u0000\u0000\u0000\u0140F\u0001\u0000\u0000\u0000\u0141\u0147"+ - "\u0005\"\u0000\u0000\u0142\u0146\b\u0016\u0000\u0000\u0143\u0144\u0005"+ - "\\\u0000\u0000\u0144\u0146\t\u0000\u0000\u0000\u0145\u0142\u0001\u0000"+ - "\u0000\u0000\u0145\u0143\u0001\u0000\u0000\u0000\u0146\u0149\u0001\u0000"+ - "\u0000\u0000\u0147\u0145\u0001\u0000\u0000\u0000\u0147\u0148\u0001\u0000"+ - "\u0000\u0000\u0148\u014a\u0001\u0000\u0000\u0000\u0149\u0147\u0001\u0000"+ - "\u0000\u0000\u014a\u0156\u0005\"\u0000\u0000\u014b\u0151\u0005\'\u0000"+ - "\u0000\u014c\u0150\b\u0017\u0000\u0000\u014d\u014e\u0005\\\u0000\u0000"+ - "\u014e\u0150\t\u0000\u0000\u0000\u014f\u014c\u0001\u0000\u0000\u0000\u014f"+ - "\u014d\u0001\u0000\u0000\u0000\u0150\u0153\u0001\u0000\u0000\u0000\u0151"+ - "\u014f\u0001\u0000\u0000\u0000\u0151\u0152\u0001\u0000\u0000\u0000\u0152"+ - "\u0154\u0001\u0000\u0000\u0000\u0153\u0151\u0001\u0000\u0000\u0000\u0154"+ - "\u0156\u0005\'\u0000\u0000\u0155\u0141\u0001\u0000\u0000\u0000\u0155\u014b"+ - "\u0001\u0000\u0000\u0000\u0156H\u0001\u0000\u0000\u0000\u0157\u015b\u0007"+ - "\u0018\u0000\u0000\u0158\u015a\u0007\u0019\u0000\u0000\u0159\u0158\u0001"+ - "\u0000\u0000\u0000\u015a\u015d\u0001\u0000\u0000\u0000\u015b\u0159\u0001"+ - "\u0000\u0000\u0000\u015b\u015c\u0001\u0000\u0000\u0000\u015cJ\u0001\u0000"+ - "\u0000\u0000\u015d\u015b\u0001\u0000\u0000\u0000\u015e\u0160\u0007\u001a"+ - "\u0000\u0000\u015f\u015e\u0001\u0000\u0000\u0000\u0160\u0161\u0001\u0000"+ - "\u0000\u0000\u0161\u015f\u0001\u0000\u0000\u0000\u0161\u0162\u0001\u0000"+ - "\u0000\u0000\u0162\u0163\u0001\u0000\u0000\u0000\u0163\u0164\u0006%\u0000"+ - "\u0000\u0164L\u0001\u0000\u0000\u0000\u0165\u0166\u0007\u001b\u0000\u0000"+ - "\u0166N\u0001\u0000\u0000\u0000\u0018\u0000\\y\u008c\u00a2\u00b2\u00ba"+ - "\u00c2\u00d1\u00e2\u00ea\u00f4\u00ff\u0132\u0137\u013d\u013f\u0145\u0147"+ - "\u014f\u0151\u0155\u015b\u0161\u0001\u0006\u0000\u0000"; + "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u00b7\b\u0013"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ + "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ + "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+ + "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017"+ + "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+ + "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+ + "\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0003\u0018\u00e7\b\u0018"+ + "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ + "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ + "\u0003\u0019\u00f5\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+ + "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+ + "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d"+ + "\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f"+ + "\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001"+ + " \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+ + "\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001"+ + "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0003#\u012f\b#\u0001"+ + "$\u0004$\u0132\b$\u000b$\f$\u0133\u0001$\u0001$\u0004$\u0138\b$\u000b"+ + "$\f$\u0139\u0003$\u013c\b$\u0001%\u0001%\u0001%\u0001%\u0005%\u0142\b"+ + "%\n%\f%\u0145\t%\u0001%\u0001%\u0001%\u0001%\u0001%\u0005%\u014c\b%\n"+ + "%\f%\u014f\t%\u0001%\u0003%\u0152\b%\u0001&\u0001&\u0005&\u0156\b&\n&"+ + "\f&\u0159\t&\u0001\'\u0004\'\u015c\b\'\u000b\'\f\'\u015d\u0001\'\u0001"+ + "\'\u0001(\u0001(\u0000\u0000)\u0001\u0001\u0003\u0002\u0005\u0003\u0007"+ + "\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b"+ + "\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013"+ + "\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d"+ + ";\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q\u0000\u0001\u0000\u001b\u0002\u0000"+ + "LLll\u0002\u0000IIii\u0002\u0000KKkk\u0002\u0000EEee\u0002\u0000NNnn\u0002"+ + "\u0000OOoo\u0002\u0000TTtt\u0002\u0000BBbb\u0002\u0000WWww\u0002\u0000"+ + "XXxx\u0002\u0000SSss\u0002\u0000UUuu\u0002\u0000RRrr\u0002\u0000GGgg\u0002"+ + "\u0000PPpp\u0002\u0000CCcc\u0002\u0000AAaa\u0002\u0000DDdd\u0002\u0000"+ + "HHhh\u0002\u0000YYyy\u0002\u0000FFff\u0002\u0000\"\"\\\\\u0002\u0000\'"+ + "\'\\\\\u0004\u000009AZ__az\u0006\u0000..09A[]]__az\u0003\u0000\t\n\r\r"+ + " \u0001\u000009\u0171\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003"+ + "\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007"+ + "\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001"+ + "\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000"+ + "\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000"+ + "\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000"+ + "\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000"+ + "\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000"+ + "\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000"+ + "\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000"+ + ")\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001"+ + "\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000"+ + "\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u0000"+ + "7\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001"+ + "\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000"+ + "\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000\u0000\u0000"+ + "E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001"+ + "\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000"+ + "\u0000\u0000O\u0001\u0000\u0000\u0000\u0001S\u0001\u0000\u0000\u0000\u0003"+ + "U\u0001\u0000\u0000\u0000\u0005W\u0001\u0000\u0000\u0000\u0007Y\u0001"+ + "\u0000\u0000\u0000\t[\u0001\u0000\u0000\u0000\u000b`\u0001\u0000\u0000"+ + "\u0000\rb\u0001\u0000\u0000\u0000\u000fe\u0001\u0000\u0000\u0000\u0011"+ + "h\u0001\u0000\u0000\u0000\u0013j\u0001\u0000\u0000\u0000\u0015m\u0001"+ + "\u0000\u0000\u0000\u0017o\u0001\u0000\u0000\u0000\u0019r\u0001\u0000\u0000"+ + "\u0000\u001bw\u0001\u0000\u0000\u0000\u001d\u0080\u0001\u0000\u0000\u0000"+ + "\u001f\u0086\u0001\u0000\u0000\u0000!\u0090\u0001\u0000\u0000\u0000#\u0098"+ + "\u0001\u0000\u0000\u0000%\u00a4\u0001\u0000\u0000\u0000\'\u00ac\u0001"+ + "\u0000\u0000\u0000)\u00b8\u0001\u0000\u0000\u0000+\u00c0\u0001\u0000\u0000"+ + "\u0000-\u00cc\u0001\u0000\u0000\u0000/\u00d3\u0001\u0000\u0000\u00001"+ + "\u00de\u0001\u0000\u0000\u00003\u00e8\u0001\u0000\u0000\u00005\u00f6\u0001"+ + "\u0000\u0000\u00007\u00f9\u0001\u0000\u0000\u00009\u0100\u0001\u0000\u0000"+ + "\u0000;\u0104\u0001\u0000\u0000\u0000=\u0108\u0001\u0000\u0000\u0000?"+ + "\u010b\u0001\u0000\u0000\u0000A\u010f\u0001\u0000\u0000\u0000C\u0116\u0001"+ + "\u0000\u0000\u0000E\u011d\u0001\u0000\u0000\u0000G\u012e\u0001\u0000\u0000"+ + "\u0000I\u0131\u0001\u0000\u0000\u0000K\u0151\u0001\u0000\u0000\u0000M"+ + "\u0153\u0001\u0000\u0000\u0000O\u015b\u0001\u0000\u0000\u0000Q\u0161\u0001"+ + "\u0000\u0000\u0000ST\u0005(\u0000\u0000T\u0002\u0001\u0000\u0000\u0000"+ + "UV\u0005)\u0000\u0000V\u0004\u0001\u0000\u0000\u0000WX\u0005[\u0000\u0000"+ + "X\u0006\u0001\u0000\u0000\u0000YZ\u0005]\u0000\u0000Z\b\u0001\u0000\u0000"+ + "\u0000[\\\u0005,\u0000\u0000\\\n\u0001\u0000\u0000\u0000]a\u0005=\u0000"+ + "\u0000^_\u0005=\u0000\u0000_a\u0005=\u0000\u0000`]\u0001\u0000\u0000\u0000"+ + "`^\u0001\u0000\u0000\u0000a\f\u0001\u0000\u0000\u0000bc\u0005!\u0000\u0000"+ + "cd\u0005=\u0000\u0000d\u000e\u0001\u0000\u0000\u0000ef\u0005<\u0000\u0000"+ + "fg\u0005>\u0000\u0000g\u0010\u0001\u0000\u0000\u0000hi\u0005<\u0000\u0000"+ + "i\u0012\u0001\u0000\u0000\u0000jk\u0005<\u0000\u0000kl\u0005=\u0000\u0000"+ + "l\u0014\u0001\u0000\u0000\u0000mn\u0005>\u0000\u0000n\u0016\u0001\u0000"+ + "\u0000\u0000op\u0005>\u0000\u0000pq\u0005=\u0000\u0000q\u0018\u0001\u0000"+ + "\u0000\u0000rs\u0007\u0000\u0000\u0000st\u0007\u0001\u0000\u0000tu\u0007"+ + "\u0002\u0000\u0000uv\u0007\u0003\u0000\u0000v\u001a\u0001\u0000\u0000"+ + "\u0000wx\u0007\u0004\u0000\u0000xy\u0007\u0005\u0000\u0000yz\u0007\u0006"+ + "\u0000\u0000z{\u0005_\u0000\u0000{|\u0007\u0000\u0000\u0000|}\u0007\u0001"+ + "\u0000\u0000}~\u0007\u0002\u0000\u0000~\u007f\u0007\u0003\u0000\u0000"+ + "\u007f\u001c\u0001\u0000\u0000\u0000\u0080\u0081\u0007\u0001\u0000\u0000"+ + "\u0081\u0082\u0007\u0000\u0000\u0000\u0082\u0083\u0007\u0001\u0000\u0000"+ + "\u0083\u0084\u0007\u0002\u0000\u0000\u0084\u0085\u0007\u0003\u0000\u0000"+ + "\u0085\u001e\u0001\u0000\u0000\u0000\u0086\u0087\u0007\u0004\u0000\u0000"+ + "\u0087\u0088\u0007\u0005\u0000\u0000\u0088\u0089\u0007\u0006\u0000\u0000"+ + "\u0089\u008a\u0005_\u0000\u0000\u008a\u008b\u0007\u0001\u0000\u0000\u008b"+ + "\u008c\u0007\u0000\u0000\u0000\u008c\u008d\u0007\u0001\u0000\u0000\u008d"+ + "\u008e\u0007\u0002\u0000\u0000\u008e\u008f\u0007\u0003\u0000\u0000\u008f"+ + " \u0001\u0000\u0000\u0000\u0090\u0091\u0007\u0007\u0000\u0000\u0091\u0092"+ + "\u0007\u0003\u0000\u0000\u0092\u0093\u0007\u0006\u0000\u0000\u0093\u0094"+ + "\u0007\b\u0000\u0000\u0094\u0095\u0007\u0003\u0000\u0000\u0095\u0096\u0007"+ + "\u0003\u0000\u0000\u0096\u0097\u0007\u0004\u0000\u0000\u0097\"\u0001\u0000"+ + "\u0000\u0000\u0098\u0099\u0007\u0004\u0000\u0000\u0099\u009a\u0007\u0005"+ + "\u0000\u0000\u009a\u009b\u0007\u0006\u0000\u0000\u009b\u009c\u0005_\u0000"+ + "\u0000\u009c\u009d\u0007\u0007\u0000\u0000\u009d\u009e\u0007\u0003\u0000"+ + "\u0000\u009e\u009f\u0007\u0006\u0000\u0000\u009f\u00a0\u0007\b\u0000\u0000"+ + "\u00a0\u00a1\u0007\u0003\u0000\u0000\u00a1\u00a2\u0007\u0003\u0000\u0000"+ + "\u00a2\u00a3\u0007\u0004\u0000\u0000\u00a3$\u0001\u0000\u0000\u0000\u00a4"+ + "\u00a5\u0007\u0003\u0000\u0000\u00a5\u00a6\u0007\t\u0000\u0000\u00a6\u00a7"+ + "\u0007\u0001\u0000\u0000\u00a7\u00a8\u0007\n\u0000\u0000\u00a8\u00aa\u0007"+ + "\u0006\u0000\u0000\u00a9\u00ab\u0007\n\u0000\u0000\u00aa\u00a9\u0001\u0000"+ + "\u0000\u0000\u00aa\u00ab\u0001\u0000\u0000\u0000\u00ab&\u0001\u0000\u0000"+ + "\u0000\u00ac\u00ad\u0007\u0004\u0000\u0000\u00ad\u00ae\u0007\u0005\u0000"+ + "\u0000\u00ae\u00af\u0007\u0006\u0000\u0000\u00af\u00b0\u0005-\u0000\u0000"+ + "\u00b0\u00b1\u0007\u0003\u0000\u0000\u00b1\u00b2\u0007\t\u0000\u0000\u00b2"+ + "\u00b3\u0007\u0001\u0000\u0000\u00b3\u00b4\u0007\n\u0000\u0000\u00b4\u00b6"+ + "\u0007\u0006\u0000\u0000\u00b5\u00b7\u0007\n\u0000\u0000\u00b6\u00b5\u0001"+ + "\u0000\u0000\u0000\u00b6\u00b7\u0001\u0000\u0000\u0000\u00b7(\u0001\u0000"+ + "\u0000\u0000\u00b8\u00b9\u0007\u0001\u0000\u0000\u00b9\u00ba\u0007\n\u0000"+ + "\u0000\u00ba\u00bb\u0005_\u0000\u0000\u00bb\u00bc\u0007\u0004\u0000\u0000"+ + "\u00bc\u00bd\u0007\u000b\u0000\u0000\u00bd\u00be\u0007\u0000\u0000\u0000"+ + "\u00be\u00bf\u0007\u0000\u0000\u0000\u00bf*\u0001\u0000\u0000\u0000\u00c0"+ + "\u00c1\u0007\u0001\u0000\u0000\u00c1\u00c2\u0007\n\u0000\u0000\u00c2\u00c3"+ + "\u0005_\u0000\u0000\u00c3\u00c4\u0007\u0004\u0000\u0000\u00c4\u00c5\u0007"+ + "\u0005\u0000\u0000\u00c5\u00c6\u0007\u0006\u0000\u0000\u00c6\u00c7\u0005"+ + "_\u0000\u0000\u00c7\u00c8\u0007\u0004\u0000\u0000\u00c8\u00c9\u0007\u000b"+ + "\u0000\u0000\u00c9\u00ca\u0007\u0000\u0000\u0000\u00ca\u00cb\u0007\u0000"+ + "\u0000\u0000\u00cb,\u0001\u0000\u0000\u0000\u00cc\u00cd\u0007\f\u0000"+ + "\u0000\u00cd\u00ce\u0007\u0003\u0000\u0000\u00ce\u00cf\u0007\r\u0000\u0000"+ + "\u00cf\u00d0\u0007\u0003\u0000\u0000\u00d0\u00d1\u0007\t\u0000\u0000\u00d1"+ + "\u00d2\u0007\u000e\u0000\u0000\u00d2.\u0001\u0000\u0000\u0000\u00d3\u00d4"+ + "\u0007\u0004\u0000\u0000\u00d4\u00d5\u0007\u0005\u0000\u0000\u00d5\u00d6"+ + "\u0007\u0006\u0000\u0000\u00d6\u00d7\u0005_\u0000\u0000\u00d7\u00d8\u0007"+ + "\f\u0000\u0000\u00d8\u00d9\u0007\u0003\u0000\u0000\u00d9\u00da\u0007\r"+ + "\u0000\u0000\u00da\u00db\u0007\u0003\u0000\u0000\u00db\u00dc\u0007\t\u0000"+ + "\u0000\u00dc\u00dd\u0007\u000e\u0000\u0000\u00dd0\u0001\u0000\u0000\u0000"+ + "\u00de\u00df\u0007\u000f\u0000\u0000\u00df\u00e0\u0007\u0005\u0000\u0000"+ + "\u00e0\u00e1\u0007\u0004\u0000\u0000\u00e1\u00e2\u0007\u0006\u0000\u0000"+ + "\u00e2\u00e3\u0007\u0010\u0000\u0000\u00e3\u00e4\u0007\u0001\u0000\u0000"+ + "\u00e4\u00e6\u0007\u0004\u0000\u0000\u00e5\u00e7\u0007\n\u0000\u0000\u00e6"+ + "\u00e5\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000\u0000\u0000\u00e7"+ + "2\u0001\u0000\u0000\u0000\u00e8\u00e9\u0007\u0004\u0000\u0000\u00e9\u00ea"+ + "\u0007\u0005\u0000\u0000\u00ea\u00eb\u0007\u0006\u0000\u0000\u00eb\u00ec"+ + "\u0005_\u0000\u0000\u00ec\u00ed\u0007\u000f\u0000\u0000\u00ed\u00ee\u0007"+ + "\u0005\u0000\u0000\u00ee\u00ef\u0007\u0004\u0000\u0000\u00ef\u00f0\u0007"+ + "\u0006\u0000\u0000\u00f0\u00f1\u0007\u0010\u0000\u0000\u00f1\u00f2\u0007"+ + "\u0001\u0000\u0000\u00f2\u00f4\u0007\u0004\u0000\u0000\u00f3\u00f5\u0007"+ + "\n\u0000\u0000\u00f4\u00f3\u0001\u0000\u0000\u0000\u00f4\u00f5\u0001\u0000"+ + "\u0000\u0000\u00f54\u0001\u0000\u0000\u0000\u00f6\u00f7\u0007\u0001\u0000"+ + "\u0000\u00f7\u00f8\u0007\u0004\u0000\u0000\u00f86\u0001\u0000\u0000\u0000"+ + "\u00f9\u00fa\u0007\u0004\u0000\u0000\u00fa\u00fb\u0007\u0005\u0000\u0000"+ + "\u00fb\u00fc\u0007\u0006\u0000\u0000\u00fc\u00fd\u0005_\u0000\u0000\u00fd"+ + "\u00fe\u0007\u0001\u0000\u0000\u00fe\u00ff\u0007\u0004\u0000\u0000\u00ff"+ + "8\u0001\u0000\u0000\u0000\u0100\u0101\u0007\u0004\u0000\u0000\u0101\u0102"+ + "\u0007\u0005\u0000\u0000\u0102\u0103\u0007\u0006\u0000\u0000\u0103:\u0001"+ + "\u0000\u0000\u0000\u0104\u0105\u0007\u0010\u0000\u0000\u0105\u0106\u0007"+ + "\u0004\u0000\u0000\u0106\u0107\u0007\u0011\u0000\u0000\u0107<\u0001\u0000"+ + "\u0000\u0000\u0108\u0109\u0007\u0005\u0000\u0000\u0109\u010a\u0007\f\u0000"+ + "\u0000\u010a>\u0001\u0000\u0000\u0000\u010b\u010c\u0007\u0012\u0000\u0000"+ + "\u010c\u010d\u0007\u0010\u0000\u0000\u010d\u010e\u0007\n\u0000\u0000\u010e"+ + "@\u0001\u0000\u0000\u0000\u010f\u0110\u0007\u0012\u0000\u0000\u0110\u0111"+ + "\u0007\u0010\u0000\u0000\u0111\u0112\u0007\n\u0000\u0000\u0112\u0113\u0007"+ + "\u0010\u0000\u0000\u0113\u0114\u0007\u0004\u0000\u0000\u0114\u0115\u0007"+ + "\u0013\u0000\u0000\u0115B\u0001\u0000\u0000\u0000\u0116\u0117\u0007\u0012"+ + "\u0000\u0000\u0117\u0118\u0007\u0010\u0000\u0000\u0118\u0119\u0007\n\u0000"+ + "\u0000\u0119\u011a\u0007\u0010\u0000\u0000\u011a\u011b\u0007\u0000\u0000"+ + "\u0000\u011b\u011c\u0007\u0000\u0000\u0000\u011cD\u0001\u0000\u0000\u0000"+ + "\u011d\u011e\u0007\u0012\u0000\u0000\u011e\u011f\u0007\u0010\u0000\u0000"+ + "\u011f\u0120\u0007\n\u0000\u0000\u0120\u0121\u0007\u0004\u0000\u0000\u0121"+ + "\u0122\u0007\u0005\u0000\u0000\u0122\u0123\u0007\u0004\u0000\u0000\u0123"+ + "\u0124\u0007\u0003\u0000\u0000\u0124F\u0001\u0000\u0000\u0000\u0125\u0126"+ + "\u0007\u0006\u0000\u0000\u0126\u0127\u0007\f\u0000\u0000\u0127\u0128\u0007"+ + "\u000b\u0000\u0000\u0128\u012f\u0007\u0003\u0000\u0000\u0129\u012a\u0007"+ + "\u0014\u0000\u0000\u012a\u012b\u0007\u0010\u0000\u0000\u012b\u012c\u0007"+ + "\u0000\u0000\u0000\u012c\u012d\u0007\n\u0000\u0000\u012d\u012f\u0007\u0003"+ + "\u0000\u0000\u012e\u0125\u0001\u0000\u0000\u0000\u012e\u0129\u0001\u0000"+ + "\u0000\u0000\u012fH\u0001\u0000\u0000\u0000\u0130\u0132\u0003Q(\u0000"+ + "\u0131\u0130\u0001\u0000\u0000\u0000\u0132\u0133\u0001\u0000\u0000\u0000"+ + "\u0133\u0131\u0001\u0000\u0000\u0000\u0133\u0134\u0001\u0000\u0000\u0000"+ + "\u0134\u013b\u0001\u0000\u0000\u0000\u0135\u0137\u0005.\u0000\u0000\u0136"+ + "\u0138\u0003Q(\u0000\u0137\u0136\u0001\u0000\u0000\u0000\u0138\u0139\u0001"+ + "\u0000\u0000\u0000\u0139\u0137\u0001\u0000\u0000\u0000\u0139\u013a\u0001"+ + "\u0000\u0000\u0000\u013a\u013c\u0001\u0000\u0000\u0000\u013b\u0135\u0001"+ + "\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000\u013cJ\u0001\u0000"+ + "\u0000\u0000\u013d\u0143\u0005\"\u0000\u0000\u013e\u0142\b\u0015\u0000"+ + "\u0000\u013f\u0140\u0005\\\u0000\u0000\u0140\u0142\t\u0000\u0000\u0000"+ + "\u0141\u013e\u0001\u0000\u0000\u0000\u0141\u013f\u0001\u0000\u0000\u0000"+ + "\u0142\u0145\u0001\u0000\u0000\u0000\u0143\u0141\u0001\u0000\u0000\u0000"+ + "\u0143\u0144\u0001\u0000\u0000\u0000\u0144\u0146\u0001\u0000\u0000\u0000"+ + "\u0145\u0143\u0001\u0000\u0000\u0000\u0146\u0152\u0005\"\u0000\u0000\u0147"+ + "\u014d\u0005\'\u0000\u0000\u0148\u014c\b\u0016\u0000\u0000\u0149\u014a"+ + "\u0005\\\u0000\u0000\u014a\u014c\t\u0000\u0000\u0000\u014b\u0148\u0001"+ + "\u0000\u0000\u0000\u014b\u0149\u0001\u0000\u0000\u0000\u014c\u014f\u0001"+ + "\u0000\u0000\u0000\u014d\u014b\u0001\u0000\u0000\u0000\u014d\u014e\u0001"+ + "\u0000\u0000\u0000\u014e\u0150\u0001\u0000\u0000\u0000\u014f\u014d\u0001"+ + "\u0000\u0000\u0000\u0150\u0152\u0005\'\u0000\u0000\u0151\u013d\u0001\u0000"+ + "\u0000\u0000\u0151\u0147\u0001\u0000\u0000\u0000\u0152L\u0001\u0000\u0000"+ + "\u0000\u0153\u0157\u0007\u0017\u0000\u0000\u0154\u0156\u0007\u0018\u0000"+ + "\u0000\u0155\u0154\u0001\u0000\u0000\u0000\u0156\u0159\u0001\u0000\u0000"+ + "\u0000\u0157\u0155\u0001\u0000\u0000\u0000\u0157\u0158\u0001\u0000\u0000"+ + "\u0000\u0158N\u0001\u0000\u0000\u0000\u0159\u0157\u0001\u0000\u0000\u0000"+ + "\u015a\u015c\u0007\u0019\u0000\u0000\u015b\u015a\u0001\u0000\u0000\u0000"+ + "\u015c\u015d\u0001\u0000\u0000\u0000\u015d\u015b\u0001\u0000\u0000\u0000"+ + "\u015d\u015e\u0001\u0000\u0000\u0000\u015e\u015f\u0001\u0000\u0000\u0000"+ + "\u015f\u0160\u0006\'\u0000\u0000\u0160P\u0001\u0000\u0000\u0000\u0161"+ + "\u0162\u0007\u001a\u0000\u0000\u0162R\u0001\u0000\u0000\u0000\u0011\u0000"+ + "`\u00aa\u00b6\u00e6\u00f4\u012e\u0133\u0139\u013b\u0141\u0143\u014b\u014d"+ + "\u0151\u0157\u015d\u0001\u0006\u0000\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens b/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens index 58b4f992a113..685911112d34 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens @@ -18,24 +18,26 @@ BETWEEN=17 NOT_BETWEEN=18 EXISTS=19 NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +IS_NULL=21 +IS_NOT_NULL=22 +REGEXP=23 +NOT_REGEXP=24 +CONTAINS=25 +NOT_CONTAINS=26 +IN=27 +NOT_IN=28 +NOT=29 +AND=30 +OR=31 +HAS=32 +HASANY=33 +HASALL=34 +HASNONE=35 +BOOL=36 +NUMBER=37 +QUOTED_TEXT=38 +KEY=39 +WS=40 '('=1 ')'=2 '['=3 diff --git a/frontend/src/query-grammar/.antlr/FilterQueryParser.java b/frontend/src/query-grammar/.antlr/FilterQueryParser.java index cadd9fe33d7c..b218c497af4d 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryParser.java +++ b/frontend/src/query-grammar/.antlr/FilterQueryParser.java @@ -1,4 +1,4 @@ -// Generated from /Users/younix/Documents/SigNoz-Repos/signoz/frontend/src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 +// Generated from /Users/abhikumar/Documents/Projects/signoz/frontend/src/query-grammar/FilterQuery.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.*; @@ -18,10 +18,10 @@ public class FilterQueryParser extends Parser { public static final int LPAREN=1, RPAREN=2, LBRACK=3, RBRACK=4, COMMA=5, EQUALS=6, NOT_EQUALS=7, NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, NOT_LIKE=14, ILIKE=15, NOT_ILIKE=16, - BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, REGEXP=21, NOT_REGEXP=22, - CONTAINS=23, NOT_CONTAINS=24, IN=25, NOT_IN=26, NOT=27, AND=28, OR=29, - HAS=30, HASANY=31, HASALL=32, HASNONE=33, BOOL=34, NUMBER=35, QUOTED_TEXT=36, - KEY=37, WS=38; + BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, IS_NULL=21, IS_NOT_NULL=22, + REGEXP=23, NOT_REGEXP=24, CONTAINS=25, NOT_CONTAINS=26, IN=27, NOT_IN=28, + NOT=29, AND=30, OR=31, HAS=32, HASANY=33, HASALL=34, HASNONE=35, BOOL=36, + NUMBER=37, QUOTED_TEXT=38, KEY=39, WS=40; public static final int RULE_query = 0, RULE_expression = 1, RULE_orExpression = 2, RULE_andExpression = 3, RULE_unaryExpression = 4, RULE_primary = 5, RULE_comparison = 6, RULE_inClause = 7, @@ -49,10 +49,10 @@ public class FilterQueryParser extends Parser { return new String[] { null, "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS" + "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "IS_NULL", "IS_NOT_NULL", + "REGEXP", "NOT_REGEXP", "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", + "AND", "OR", "HAS", "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", + "QUOTED_TEXT", "KEY", "WS" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -141,7 +141,7 @@ public class FilterQueryParser extends Parser { setState(40); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 223204081666L) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 892816326658L) != 0)) { { setState(38); _errHandler.sync(this); @@ -524,6 +524,8 @@ public class FilterQueryParser extends Parser { } public TerminalNode EXISTS() { return getToken(FilterQueryParser.EXISTS, 0); } public TerminalNode NOT_EXISTS() { return getToken(FilterQueryParser.NOT_EXISTS, 0); } + public TerminalNode IS_NULL() { return getToken(FilterQueryParser.IS_NULL, 0); } + public TerminalNode IS_NOT_NULL() { return getToken(FilterQueryParser.IS_NOT_NULL, 0); } public TerminalNode REGEXP() { return getToken(FilterQueryParser.REGEXP, 0); } public TerminalNode NOT_REGEXP() { return getToken(FilterQueryParser.NOT_REGEXP, 0); } public TerminalNode CONTAINS() { return getToken(FilterQueryParser.CONTAINS, 0); } @@ -539,7 +541,7 @@ public class FilterQueryParser extends Parser { enterRule(_localctx, 12, RULE_comparison); int _la; try { - setState(150); + setState(156); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: @@ -726,41 +728,59 @@ public class FilterQueryParser extends Parser { setState(134); key(); setState(135); - match(REGEXP); - setState(136); - value(); + match(IS_NULL); } break; case 16: enterOuterAlt(_localctx, 16); { - setState(138); + setState(137); key(); - setState(139); - match(NOT_REGEXP); - setState(140); - value(); + setState(138); + match(IS_NOT_NULL); } break; case 17: enterOuterAlt(_localctx, 17); { - setState(142); + setState(140); key(); - setState(143); - match(CONTAINS); - setState(144); + setState(141); + match(REGEXP); + setState(142); value(); } break; case 18: enterOuterAlt(_localctx, 18); { - setState(146); + setState(144); key(); - setState(147); - match(NOT_CONTAINS); + setState(145); + match(NOT_REGEXP); + setState(146); + value(); + } + break; + case 19: + enterOuterAlt(_localctx, 19); + { setState(148); + key(); + setState(149); + match(CONTAINS); + setState(150); + value(); + } + break; + case 20: + enterOuterAlt(_localctx, 20); + { + setState(152); + key(); + setState(153); + match(NOT_CONTAINS); + setState(154); value(); } break; @@ -797,32 +817,32 @@ public class FilterQueryParser extends Parser { InClauseContext _localctx = new InClauseContext(_ctx, getState()); enterRule(_localctx, 14, RULE_inClause); try { - setState(162); + setState(168); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(152); + setState(158); match(IN); - setState(153); + setState(159); match(LPAREN); - setState(154); + setState(160); valueList(); - setState(155); + setState(161); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(157); + setState(163); match(IN); - setState(158); + setState(164); match(LBRACK); - setState(159); + setState(165); valueList(); - setState(160); + setState(166); match(RBRACK); } break; @@ -859,32 +879,32 @@ public class FilterQueryParser extends Parser { NotInClauseContext _localctx = new NotInClauseContext(_ctx, getState()); enterRule(_localctx, 16, RULE_notInClause); try { - setState(174); + setState(180); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(164); + setState(170); match(NOT_IN); - setState(165); + setState(171); match(LPAREN); - setState(166); + setState(172); valueList(); - setState(167); + setState(173); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(169); + setState(175); match(NOT_IN); - setState(170); + setState(176); match(LBRACK); - setState(171); + setState(177); valueList(); - setState(172); + setState(178); match(RBRACK); } break; @@ -926,21 +946,21 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(176); + setState(182); value(); - setState(181); + setState(187); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(177); + setState(183); match(COMMA); - setState(178); + setState(184); value(); } } - setState(183); + setState(189); _errHandler.sync(this); _la = _input.LA(1); } @@ -972,7 +992,7 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(184); + setState(190); match(QUOTED_TEXT); } } @@ -1011,9 +1031,9 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(186); + setState(192); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 16106127360L) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 64424509440L) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -1021,11 +1041,11 @@ public class FilterQueryParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(187); + setState(193); match(LPAREN); - setState(188); + setState(194); functionParamList(); - setState(189); + setState(195); match(RPAREN); } } @@ -1065,21 +1085,21 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(191); + setState(197); functionParam(); - setState(196); + setState(202); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(192); + setState(198); match(COMMA); - setState(193); + setState(199); functionParam(); } } - setState(198); + setState(204); _errHandler.sync(this); _la = _input.LA(1); } @@ -1117,34 +1137,30 @@ public class FilterQueryParser extends Parser { FunctionParamContext _localctx = new FunctionParamContext(_ctx, getState()); enterRule(_localctx, 26, RULE_functionParam); try { - setState(202); + setState(208); _errHandler.sync(this); - switch (_input.LA(1)) { - case KEY: + switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) { + case 1: enterOuterAlt(_localctx, 1); { - setState(199); + setState(205); key(); } break; - case BOOL: - case NUMBER: - case QUOTED_TEXT: + case 2: enterOuterAlt(_localctx, 2); { - setState(200); + setState(206); value(); } break; - case LBRACK: + case 3: enterOuterAlt(_localctx, 3); { - setState(201); + setState(207); array(); } break; - default: - throw new NoViableAltException(this); } } catch (RecognitionException re) { @@ -1177,11 +1193,11 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(204); + setState(210); match(LBRACK); - setState(205); + setState(211); valueList(); - setState(206); + setState(212); match(RBRACK); } } @@ -1201,6 +1217,7 @@ public class FilterQueryParser extends Parser { public TerminalNode QUOTED_TEXT() { return getToken(FilterQueryParser.QUOTED_TEXT, 0); } public TerminalNode NUMBER() { return getToken(FilterQueryParser.NUMBER, 0); } public TerminalNode BOOL() { return getToken(FilterQueryParser.BOOL, 0); } + public TerminalNode KEY() { return getToken(FilterQueryParser.KEY, 0); } public ValueContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -1214,9 +1231,9 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(208); + setState(214); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 120259084288L) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1030792151040L) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -1252,7 +1269,7 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(210); + setState(216); match(KEY); } } @@ -1268,7 +1285,7 @@ public class FilterQueryParser extends Parser { } public static final String _serializedATN = - "\u0004\u0001&\u00d5\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ + "\u0004\u0001(\u00db\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ @@ -1292,116 +1309,121 @@ public class FilterQueryParser extends Parser { "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0003\u0006\u0097\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ + "\u0001\u0006\u0003\u0006\u009d\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0003\u0007\u00a3\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b"+ - "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u00af\b\b\u0001"+ - "\t\u0001\t\u0001\t\u0005\t\u00b4\b\t\n\t\f\t\u00b7\t\t\u0001\n\u0001\n"+ + "\u0001\u0007\u0003\u0007\u00a9\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b"+ + "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u00b5\b\b\u0001"+ + "\t\u0001\t\u0001\t\u0005\t\u00ba\b\t\n\t\f\t\u00bd\t\t\u0001\n\u0001\n"+ "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001"+ - "\f\u0001\f\u0005\f\u00c3\b\f\n\f\f\f\u00c6\t\f\u0001\r\u0001\r\u0001\r"+ - "\u0003\r\u00cb\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+ + "\f\u0001\f\u0005\f\u00c9\b\f\n\f\f\f\u00cc\t\f\u0001\r\u0001\r\u0001\r"+ + "\u0003\r\u00d1\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+ "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0000\u0000\u0011"+ "\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+ - "\u001c\u001e \u0000\u0006\u0001\u0000\u001c\u001d\u0001\u0000\u0007\b"+ + "\u001c\u001e \u0000\u0006\u0001\u0000\u001e\u001f\u0001\u0000\u0007\b"+ "\u0002\u0000\r\r\u000f\u000f\u0002\u0000\u000e\u000e\u0010\u0010\u0001"+ - "\u0000\u001e!\u0001\u0000\"$\u00e3\u0000\"\u0001\u0000\u0000\u0000\u0002"+ - "-\u0001\u0000\u0000\u0000\u0004/\u0001\u0000\u0000\u0000\u00067\u0001"+ - "\u0000\u0000\u0000\bA\u0001\u0000\u0000\u0000\nL\u0001\u0000\u0000\u0000"+ - "\f\u0096\u0001\u0000\u0000\u0000\u000e\u00a2\u0001\u0000\u0000\u0000\u0010"+ - "\u00ae\u0001\u0000\u0000\u0000\u0012\u00b0\u0001\u0000\u0000\u0000\u0014"+ - "\u00b8\u0001\u0000\u0000\u0000\u0016\u00ba\u0001\u0000\u0000\u0000\u0018"+ - "\u00bf\u0001\u0000\u0000\u0000\u001a\u00ca\u0001\u0000\u0000\u0000\u001c"+ - "\u00cc\u0001\u0000\u0000\u0000\u001e\u00d0\u0001\u0000\u0000\u0000 \u00d2"+ - "\u0001\u0000\u0000\u0000\"(\u0003\u0002\u0001\u0000#$\u0007\u0000\u0000"+ - "\u0000$\'\u0003\u0002\u0001\u0000%\'\u0003\u0002\u0001\u0000&#\u0001\u0000"+ - "\u0000\u0000&%\u0001\u0000\u0000\u0000\'*\u0001\u0000\u0000\u0000(&\u0001"+ - "\u0000\u0000\u0000()\u0001\u0000\u0000\u0000)+\u0001\u0000\u0000\u0000"+ - "*(\u0001\u0000\u0000\u0000+,\u0005\u0000\u0000\u0001,\u0001\u0001\u0000"+ - "\u0000\u0000-.\u0003\u0004\u0002\u0000.\u0003\u0001\u0000\u0000\u0000"+ - "/4\u0003\u0006\u0003\u000001\u0005\u001d\u0000\u000013\u0003\u0006\u0003"+ - "\u000020\u0001\u0000\u0000\u000036\u0001\u0000\u0000\u000042\u0001\u0000"+ - "\u0000\u000045\u0001\u0000\u0000\u00005\u0005\u0001\u0000\u0000\u0000"+ - "64\u0001\u0000\u0000\u00007=\u0003\b\u0004\u000089\u0005\u001c\u0000\u0000"+ - "9<\u0003\b\u0004\u0000:<\u0003\b\u0004\u0000;8\u0001\u0000\u0000\u0000"+ - ";:\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000>\u0007\u0001\u0000\u0000\u0000?=\u0001"+ - "\u0000\u0000\u0000@B\u0005\u001b\u0000\u0000A@\u0001\u0000\u0000\u0000"+ - "AB\u0001\u0000\u0000\u0000BC\u0001\u0000\u0000\u0000CD\u0003\n\u0005\u0000"+ - "D\t\u0001\u0000\u0000\u0000EF\u0005\u0001\u0000\u0000FG\u0003\u0004\u0002"+ - "\u0000GH\u0005\u0002\u0000\u0000HM\u0001\u0000\u0000\u0000IM\u0003\f\u0006"+ - "\u0000JM\u0003\u0016\u000b\u0000KM\u0003\u0014\n\u0000LE\u0001\u0000\u0000"+ - "\u0000LI\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LK\u0001\u0000"+ - "\u0000\u0000M\u000b\u0001\u0000\u0000\u0000NO\u0003 \u0010\u0000OP\u0005"+ - "\u0006\u0000\u0000PQ\u0003\u001e\u000f\u0000Q\u0097\u0001\u0000\u0000"+ - "\u0000RS\u0003 \u0010\u0000ST\u0007\u0001\u0000\u0000TU\u0003\u001e\u000f"+ - "\u0000U\u0097\u0001\u0000\u0000\u0000VW\u0003 \u0010\u0000WX\u0005\t\u0000"+ - "\u0000XY\u0003\u001e\u000f\u0000Y\u0097\u0001\u0000\u0000\u0000Z[\u0003"+ - " \u0010\u0000[\\\u0005\n\u0000\u0000\\]\u0003\u001e\u000f\u0000]\u0097"+ - "\u0001\u0000\u0000\u0000^_\u0003 \u0010\u0000_`\u0005\u000b\u0000\u0000"+ - "`a\u0003\u001e\u000f\u0000a\u0097\u0001\u0000\u0000\u0000bc\u0003 \u0010"+ - "\u0000cd\u0005\f\u0000\u0000de\u0003\u001e\u000f\u0000e\u0097\u0001\u0000"+ - "\u0000\u0000fg\u0003 \u0010\u0000gh\u0007\u0002\u0000\u0000hi\u0003\u001e"+ - "\u000f\u0000i\u0097\u0001\u0000\u0000\u0000jk\u0003 \u0010\u0000kl\u0007"+ - "\u0003\u0000\u0000lm\u0003\u001e\u000f\u0000m\u0097\u0001\u0000\u0000"+ - "\u0000no\u0003 \u0010\u0000op\u0005\u0011\u0000\u0000pq\u0003\u001e\u000f"+ - "\u0000qr\u0005\u001c\u0000\u0000rs\u0003\u001e\u000f\u0000s\u0097\u0001"+ - "\u0000\u0000\u0000tu\u0003 \u0010\u0000uv\u0005\u0012\u0000\u0000vw\u0003"+ - "\u001e\u000f\u0000wx\u0005\u001c\u0000\u0000xy\u0003\u001e\u000f\u0000"+ - "y\u0097\u0001\u0000\u0000\u0000z{\u0003 \u0010\u0000{|\u0003\u000e\u0007"+ - "\u0000|\u0097\u0001\u0000\u0000\u0000}~\u0003 \u0010\u0000~\u007f\u0003"+ - "\u0010\b\u0000\u007f\u0097\u0001\u0000\u0000\u0000\u0080\u0081\u0003 "+ - "\u0010\u0000\u0081\u0082\u0005\u0013\u0000\u0000\u0082\u0097\u0001\u0000"+ - "\u0000\u0000\u0083\u0084\u0003 \u0010\u0000\u0084\u0085\u0005\u0014\u0000"+ - "\u0000\u0085\u0097\u0001\u0000\u0000\u0000\u0086\u0087\u0003 \u0010\u0000"+ - "\u0087\u0088\u0005\u0015\u0000\u0000\u0088\u0089\u0003\u001e\u000f\u0000"+ - "\u0089\u0097\u0001\u0000\u0000\u0000\u008a\u008b\u0003 \u0010\u0000\u008b"+ - "\u008c\u0005\u0016\u0000\u0000\u008c\u008d\u0003\u001e\u000f\u0000\u008d"+ - "\u0097\u0001\u0000\u0000\u0000\u008e\u008f\u0003 \u0010\u0000\u008f\u0090"+ - "\u0005\u0017\u0000\u0000\u0090\u0091\u0003\u001e\u000f\u0000\u0091\u0097"+ - "\u0001\u0000\u0000\u0000\u0092\u0093\u0003 \u0010\u0000\u0093\u0094\u0005"+ - "\u0018\u0000\u0000\u0094\u0095\u0003\u001e\u000f\u0000\u0095\u0097\u0001"+ - "\u0000\u0000\u0000\u0096N\u0001\u0000\u0000\u0000\u0096R\u0001\u0000\u0000"+ - "\u0000\u0096V\u0001\u0000\u0000\u0000\u0096Z\u0001\u0000\u0000\u0000\u0096"+ - "^\u0001\u0000\u0000\u0000\u0096b\u0001\u0000\u0000\u0000\u0096f\u0001"+ - "\u0000\u0000\u0000\u0096j\u0001\u0000\u0000\u0000\u0096n\u0001\u0000\u0000"+ - "\u0000\u0096t\u0001\u0000\u0000\u0000\u0096z\u0001\u0000\u0000\u0000\u0096"+ - "}\u0001\u0000\u0000\u0000\u0096\u0080\u0001\u0000\u0000\u0000\u0096\u0083"+ - "\u0001\u0000\u0000\u0000\u0096\u0086\u0001\u0000\u0000\u0000\u0096\u008a"+ - "\u0001\u0000\u0000\u0000\u0096\u008e\u0001\u0000\u0000\u0000\u0096\u0092"+ - "\u0001\u0000\u0000\u0000\u0097\r\u0001\u0000\u0000\u0000\u0098\u0099\u0005"+ - "\u0019\u0000\u0000\u0099\u009a\u0005\u0001\u0000\u0000\u009a\u009b\u0003"+ - "\u0012\t\u0000\u009b\u009c\u0005\u0002\u0000\u0000\u009c\u00a3\u0001\u0000"+ - "\u0000\u0000\u009d\u009e\u0005\u0019\u0000\u0000\u009e\u009f\u0005\u0003"+ - "\u0000\u0000\u009f\u00a0\u0003\u0012\t\u0000\u00a0\u00a1\u0005\u0004\u0000"+ - "\u0000\u00a1\u00a3\u0001\u0000\u0000\u0000\u00a2\u0098\u0001\u0000\u0000"+ - "\u0000\u00a2\u009d\u0001\u0000\u0000\u0000\u00a3\u000f\u0001\u0000\u0000"+ - "\u0000\u00a4\u00a5\u0005\u001a\u0000\u0000\u00a5\u00a6\u0005\u0001\u0000"+ - "\u0000\u00a6\u00a7\u0003\u0012\t\u0000\u00a7\u00a8\u0005\u0002\u0000\u0000"+ - "\u00a8\u00af\u0001\u0000\u0000\u0000\u00a9\u00aa\u0005\u001a\u0000\u0000"+ - "\u00aa\u00ab\u0005\u0003\u0000\u0000\u00ab\u00ac\u0003\u0012\t\u0000\u00ac"+ - "\u00ad\u0005\u0004\u0000\u0000\u00ad\u00af\u0001\u0000\u0000\u0000\u00ae"+ - "\u00a4\u0001\u0000\u0000\u0000\u00ae\u00a9\u0001\u0000\u0000\u0000\u00af"+ - "\u0011\u0001\u0000\u0000\u0000\u00b0\u00b5\u0003\u001e\u000f\u0000\u00b1"+ - "\u00b2\u0005\u0005\u0000\u0000\u00b2\u00b4\u0003\u001e\u000f\u0000\u00b3"+ - "\u00b1\u0001\u0000\u0000\u0000\u00b4\u00b7\u0001\u0000\u0000\u0000\u00b5"+ - "\u00b3\u0001\u0000\u0000\u0000\u00b5\u00b6\u0001\u0000\u0000\u0000\u00b6"+ - "\u0013\u0001\u0000\u0000\u0000\u00b7\u00b5\u0001\u0000\u0000\u0000\u00b8"+ - "\u00b9\u0005$\u0000\u0000\u00b9\u0015\u0001\u0000\u0000\u0000\u00ba\u00bb"+ - "\u0007\u0004\u0000\u0000\u00bb\u00bc\u0005\u0001\u0000\u0000\u00bc\u00bd"+ - "\u0003\u0018\f\u0000\u00bd\u00be\u0005\u0002\u0000\u0000\u00be\u0017\u0001"+ - "\u0000\u0000\u0000\u00bf\u00c4\u0003\u001a\r\u0000\u00c0\u00c1\u0005\u0005"+ - "\u0000\u0000\u00c1\u00c3\u0003\u001a\r\u0000\u00c2\u00c0\u0001\u0000\u0000"+ - "\u0000\u00c3\u00c6\u0001\u0000\u0000\u0000\u00c4\u00c2\u0001\u0000\u0000"+ - "\u0000\u00c4\u00c5\u0001\u0000\u0000\u0000\u00c5\u0019\u0001\u0000\u0000"+ - "\u0000\u00c6\u00c4\u0001\u0000\u0000\u0000\u00c7\u00cb\u0003 \u0010\u0000"+ - "\u00c8\u00cb\u0003\u001e\u000f\u0000\u00c9\u00cb\u0003\u001c\u000e\u0000"+ - "\u00ca\u00c7\u0001\u0000\u0000\u0000\u00ca\u00c8\u0001\u0000\u0000\u0000"+ - "\u00ca\u00c9\u0001\u0000\u0000\u0000\u00cb\u001b\u0001\u0000\u0000\u0000"+ - "\u00cc\u00cd\u0005\u0003\u0000\u0000\u00cd\u00ce\u0003\u0012\t\u0000\u00ce"+ - "\u00cf\u0005\u0004\u0000\u0000\u00cf\u001d\u0001\u0000\u0000\u0000\u00d0"+ - "\u00d1\u0007\u0005\u0000\u0000\u00d1\u001f\u0001\u0000\u0000\u0000\u00d2"+ - "\u00d3\u0005%\u0000\u0000\u00d3!\u0001\u0000\u0000\u0000\r&(4;=AL\u0096"+ - "\u00a2\u00ae\u00b5\u00c4\u00ca"; + "\u0000 #\u0001\u0000$\'\u00eb\u0000\"\u0001\u0000\u0000\u0000\u0002-\u0001"+ + "\u0000\u0000\u0000\u0004/\u0001\u0000\u0000\u0000\u00067\u0001\u0000\u0000"+ + "\u0000\bA\u0001\u0000\u0000\u0000\nL\u0001\u0000\u0000\u0000\f\u009c\u0001"+ + "\u0000\u0000\u0000\u000e\u00a8\u0001\u0000\u0000\u0000\u0010\u00b4\u0001"+ + "\u0000\u0000\u0000\u0012\u00b6\u0001\u0000\u0000\u0000\u0014\u00be\u0001"+ + "\u0000\u0000\u0000\u0016\u00c0\u0001\u0000\u0000\u0000\u0018\u00c5\u0001"+ + "\u0000\u0000\u0000\u001a\u00d0\u0001\u0000\u0000\u0000\u001c\u00d2\u0001"+ + "\u0000\u0000\u0000\u001e\u00d6\u0001\u0000\u0000\u0000 \u00d8\u0001\u0000"+ + "\u0000\u0000\"(\u0003\u0002\u0001\u0000#$\u0007\u0000\u0000\u0000$\'\u0003"+ + "\u0002\u0001\u0000%\'\u0003\u0002\u0001\u0000&#\u0001\u0000\u0000\u0000"+ + "&%\u0001\u0000\u0000\u0000\'*\u0001\u0000\u0000\u0000(&\u0001\u0000\u0000"+ + "\u0000()\u0001\u0000\u0000\u0000)+\u0001\u0000\u0000\u0000*(\u0001\u0000"+ + "\u0000\u0000+,\u0005\u0000\u0000\u0001,\u0001\u0001\u0000\u0000\u0000"+ + "-.\u0003\u0004\u0002\u0000.\u0003\u0001\u0000\u0000\u0000/4\u0003\u0006"+ + "\u0003\u000001\u0005\u001f\u0000\u000013\u0003\u0006\u0003\u000020\u0001"+ + "\u0000\u0000\u000036\u0001\u0000\u0000\u000042\u0001\u0000\u0000\u0000"+ + "45\u0001\u0000\u0000\u00005\u0005\u0001\u0000\u0000\u000064\u0001\u0000"+ + "\u0000\u00007=\u0003\b\u0004\u000089\u0005\u001e\u0000\u00009<\u0003\b"+ + "\u0004\u0000:<\u0003\b\u0004\u0000;8\u0001\u0000\u0000\u0000;:\u0001\u0000"+ + "\u0000\u0000\u0001"+ + "\u0000\u0000\u0000>\u0007\u0001\u0000\u0000\u0000?=\u0001\u0000\u0000"+ + "\u0000@B\u0005\u001d\u0000\u0000A@\u0001\u0000\u0000\u0000AB\u0001\u0000"+ + "\u0000\u0000BC\u0001\u0000\u0000\u0000CD\u0003\n\u0005\u0000D\t\u0001"+ + "\u0000\u0000\u0000EF\u0005\u0001\u0000\u0000FG\u0003\u0004\u0002\u0000"+ + "GH\u0005\u0002\u0000\u0000HM\u0001\u0000\u0000\u0000IM\u0003\f\u0006\u0000"+ + "JM\u0003\u0016\u000b\u0000KM\u0003\u0014\n\u0000LE\u0001\u0000\u0000\u0000"+ + "LI\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LK\u0001\u0000\u0000"+ + "\u0000M\u000b\u0001\u0000\u0000\u0000NO\u0003 \u0010\u0000OP\u0005\u0006"+ + "\u0000\u0000PQ\u0003\u001e\u000f\u0000Q\u009d\u0001\u0000\u0000\u0000"+ + "RS\u0003 \u0010\u0000ST\u0007\u0001\u0000\u0000TU\u0003\u001e\u000f\u0000"+ + "U\u009d\u0001\u0000\u0000\u0000VW\u0003 \u0010\u0000WX\u0005\t\u0000\u0000"+ + "XY\u0003\u001e\u000f\u0000Y\u009d\u0001\u0000\u0000\u0000Z[\u0003 \u0010"+ + "\u0000[\\\u0005\n\u0000\u0000\\]\u0003\u001e\u000f\u0000]\u009d\u0001"+ + "\u0000\u0000\u0000^_\u0003 \u0010\u0000_`\u0005\u000b\u0000\u0000`a\u0003"+ + "\u001e\u000f\u0000a\u009d\u0001\u0000\u0000\u0000bc\u0003 \u0010\u0000"+ + "cd\u0005\f\u0000\u0000de\u0003\u001e\u000f\u0000e\u009d\u0001\u0000\u0000"+ + "\u0000fg\u0003 \u0010\u0000gh\u0007\u0002\u0000\u0000hi\u0003\u001e\u000f"+ + "\u0000i\u009d\u0001\u0000\u0000\u0000jk\u0003 \u0010\u0000kl\u0007\u0003"+ + "\u0000\u0000lm\u0003\u001e\u000f\u0000m\u009d\u0001\u0000\u0000\u0000"+ + "no\u0003 \u0010\u0000op\u0005\u0011\u0000\u0000pq\u0003\u001e\u000f\u0000"+ + "qr\u0005\u001e\u0000\u0000rs\u0003\u001e\u000f\u0000s\u009d\u0001\u0000"+ + "\u0000\u0000tu\u0003 \u0010\u0000uv\u0005\u0012\u0000\u0000vw\u0003\u001e"+ + "\u000f\u0000wx\u0005\u001e\u0000\u0000xy\u0003\u001e\u000f\u0000y\u009d"+ + "\u0001\u0000\u0000\u0000z{\u0003 \u0010\u0000{|\u0003\u000e\u0007\u0000"+ + "|\u009d\u0001\u0000\u0000\u0000}~\u0003 \u0010\u0000~\u007f\u0003\u0010"+ + "\b\u0000\u007f\u009d\u0001\u0000\u0000\u0000\u0080\u0081\u0003 \u0010"+ + "\u0000\u0081\u0082\u0005\u0013\u0000\u0000\u0082\u009d\u0001\u0000\u0000"+ + "\u0000\u0083\u0084\u0003 \u0010\u0000\u0084\u0085\u0005\u0014\u0000\u0000"+ + "\u0085\u009d\u0001\u0000\u0000\u0000\u0086\u0087\u0003 \u0010\u0000\u0087"+ + "\u0088\u0005\u0015\u0000\u0000\u0088\u009d\u0001\u0000\u0000\u0000\u0089"+ + "\u008a\u0003 \u0010\u0000\u008a\u008b\u0005\u0016\u0000\u0000\u008b\u009d"+ + "\u0001\u0000\u0000\u0000\u008c\u008d\u0003 \u0010\u0000\u008d\u008e\u0005"+ + "\u0017\u0000\u0000\u008e\u008f\u0003\u001e\u000f\u0000\u008f\u009d\u0001"+ + "\u0000\u0000\u0000\u0090\u0091\u0003 \u0010\u0000\u0091\u0092\u0005\u0018"+ + "\u0000\u0000\u0092\u0093\u0003\u001e\u000f\u0000\u0093\u009d\u0001\u0000"+ + "\u0000\u0000\u0094\u0095\u0003 \u0010\u0000\u0095\u0096\u0005\u0019\u0000"+ + "\u0000\u0096\u0097\u0003\u001e\u000f\u0000\u0097\u009d\u0001\u0000\u0000"+ + "\u0000\u0098\u0099\u0003 \u0010\u0000\u0099\u009a\u0005\u001a\u0000\u0000"+ + "\u009a\u009b\u0003\u001e\u000f\u0000\u009b\u009d\u0001\u0000\u0000\u0000"+ + "\u009cN\u0001\u0000\u0000\u0000\u009cR\u0001\u0000\u0000\u0000\u009cV"+ + "\u0001\u0000\u0000\u0000\u009cZ\u0001\u0000\u0000\u0000\u009c^\u0001\u0000"+ + "\u0000\u0000\u009cb\u0001\u0000\u0000\u0000\u009cf\u0001\u0000\u0000\u0000"+ + "\u009cj\u0001\u0000\u0000\u0000\u009cn\u0001\u0000\u0000\u0000\u009ct"+ + "\u0001\u0000\u0000\u0000\u009cz\u0001\u0000\u0000\u0000\u009c}\u0001\u0000"+ + "\u0000\u0000\u009c\u0080\u0001\u0000\u0000\u0000\u009c\u0083\u0001\u0000"+ + "\u0000\u0000\u009c\u0086\u0001\u0000\u0000\u0000\u009c\u0089\u0001\u0000"+ + "\u0000\u0000\u009c\u008c\u0001\u0000\u0000\u0000\u009c\u0090\u0001\u0000"+ + "\u0000\u0000\u009c\u0094\u0001\u0000\u0000\u0000\u009c\u0098\u0001\u0000"+ + "\u0000\u0000\u009d\r\u0001\u0000\u0000\u0000\u009e\u009f\u0005\u001b\u0000"+ + "\u0000\u009f\u00a0\u0005\u0001\u0000\u0000\u00a0\u00a1\u0003\u0012\t\u0000"+ + "\u00a1\u00a2\u0005\u0002\u0000\u0000\u00a2\u00a9\u0001\u0000\u0000\u0000"+ + "\u00a3\u00a4\u0005\u001b\u0000\u0000\u00a4\u00a5\u0005\u0003\u0000\u0000"+ + "\u00a5\u00a6\u0003\u0012\t\u0000\u00a6\u00a7\u0005\u0004\u0000\u0000\u00a7"+ + "\u00a9\u0001\u0000\u0000\u0000\u00a8\u009e\u0001\u0000\u0000\u0000\u00a8"+ + "\u00a3\u0001\u0000\u0000\u0000\u00a9\u000f\u0001\u0000\u0000\u0000\u00aa"+ + "\u00ab\u0005\u001c\u0000\u0000\u00ab\u00ac\u0005\u0001\u0000\u0000\u00ac"+ + "\u00ad\u0003\u0012\t\u0000\u00ad\u00ae\u0005\u0002\u0000\u0000\u00ae\u00b5"+ + "\u0001\u0000\u0000\u0000\u00af\u00b0\u0005\u001c\u0000\u0000\u00b0\u00b1"+ + "\u0005\u0003\u0000\u0000\u00b1\u00b2\u0003\u0012\t\u0000\u00b2\u00b3\u0005"+ + "\u0004\u0000\u0000\u00b3\u00b5\u0001\u0000\u0000\u0000\u00b4\u00aa\u0001"+ + "\u0000\u0000\u0000\u00b4\u00af\u0001\u0000\u0000\u0000\u00b5\u0011\u0001"+ + "\u0000\u0000\u0000\u00b6\u00bb\u0003\u001e\u000f\u0000\u00b7\u00b8\u0005"+ + "\u0005\u0000\u0000\u00b8\u00ba\u0003\u001e\u000f\u0000\u00b9\u00b7\u0001"+ + "\u0000\u0000\u0000\u00ba\u00bd\u0001\u0000\u0000\u0000\u00bb\u00b9\u0001"+ + "\u0000\u0000\u0000\u00bb\u00bc\u0001\u0000\u0000\u0000\u00bc\u0013\u0001"+ + "\u0000\u0000\u0000\u00bd\u00bb\u0001\u0000\u0000\u0000\u00be\u00bf\u0005"+ + "&\u0000\u0000\u00bf\u0015\u0001\u0000\u0000\u0000\u00c0\u00c1\u0007\u0004"+ + "\u0000\u0000\u00c1\u00c2\u0005\u0001\u0000\u0000\u00c2\u00c3\u0003\u0018"+ + "\f\u0000\u00c3\u00c4\u0005\u0002\u0000\u0000\u00c4\u0017\u0001\u0000\u0000"+ + "\u0000\u00c5\u00ca\u0003\u001a\r\u0000\u00c6\u00c7\u0005\u0005\u0000\u0000"+ + "\u00c7\u00c9\u0003\u001a\r\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000\u00c9"+ + "\u00cc\u0001\u0000\u0000\u0000\u00ca\u00c8\u0001\u0000\u0000\u0000\u00ca"+ + "\u00cb\u0001\u0000\u0000\u0000\u00cb\u0019\u0001\u0000\u0000\u0000\u00cc"+ + "\u00ca\u0001\u0000\u0000\u0000\u00cd\u00d1\u0003 \u0010\u0000\u00ce\u00d1"+ + "\u0003\u001e\u000f\u0000\u00cf\u00d1\u0003\u001c\u000e\u0000\u00d0\u00cd"+ + "\u0001\u0000\u0000\u0000\u00d0\u00ce\u0001\u0000\u0000\u0000\u00d0\u00cf"+ + "\u0001\u0000\u0000\u0000\u00d1\u001b\u0001\u0000\u0000\u0000\u00d2\u00d3"+ + "\u0005\u0003\u0000\u0000\u00d3\u00d4\u0003\u0012\t\u0000\u00d4\u00d5\u0005"+ + "\u0004\u0000\u0000\u00d5\u001d\u0001\u0000\u0000\u0000\u00d6\u00d7\u0007"+ + "\u0005\u0000\u0000\u00d7\u001f\u0001\u0000\u0000\u0000\u00d8\u00d9\u0005"+ + "\'\u0000\u0000\u00d9!\u0001\u0000\u0000\u0000\r&(4;=AL\u009c\u00a8\u00b4"+ + "\u00bb\u00ca\u00d0"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/frontend/src/query-grammar/FilterQuery.g4 b/frontend/src/query-grammar/FilterQuery.g4 index e2f504bb6cf8..67542a60500e 100644 --- a/frontend/src/query-grammar/FilterQuery.g4 +++ b/frontend/src/query-grammar/FilterQuery.g4 @@ -47,6 +47,8 @@ comparison | key notInClause | key EXISTS | key NOT_EXISTS + | key IS_NULL + | key IS_NOT_NULL | key REGEXP value | key NOT_REGEXP value | key CONTAINS value @@ -121,23 +123,26 @@ GE : '>=' ; // Multi-keyword operators LIKE : [Ll][Ii][Kk][Ee] ; -NOT_LIKE : [Nn][Oo][Tt] [ \t]+ [Ll][Ii][Kk][Ee] ; +NOT_LIKE : [Nn][Oo][Tt] '_' [Ll][Ii][Kk][Ee] ; ILIKE : [Ii][Ll][Ii][Kk][Ee] ; -NOT_ILIKE : [Nn][Oo][Tt] [ \t]+ [Ii][Ll][Ii][Kk][Ee] ; +NOT_ILIKE : [Nn][Oo][Tt] '_' [Ii][Ll][Ii][Kk][Ee] ; BETWEEN : [Bb][Ee][Tt][Ww][Ee][Ee][Nn] ; -NOT_BETWEEN : [Nn][Oo][Tt] [ \t]+ [Bb][Ee][Tt][Ww][Ee][Ee][Nn] ; +NOT_BETWEEN : [Nn][Oo][Tt] '_' [Bb][Ee][Tt][Ww][Ee][Ee][Nn] ; EXISTS : [Ee][Xx][Ii][Ss][Tt][Ss]? ; -NOT_EXISTS : [Nn][Oo][Tt] [ \t]+ [Ee][Xx][Ii][Ss][Tt][Ss]? ; +NOT_EXISTS : [Nn][Oo][Tt] '-' [Ee][Xx][Ii][Ss][Tt][Ss]? ; + +IS_NULL : [Ii][Ss] '_' [Nn][Uu][Ll][Ll] ; +IS_NOT_NULL : [Ii][Ss] '_' [Nn][Oo][Tt] '_' [Nn][Uu][Ll][Ll] ; REGEXP : [Rr][Ee][Gg][Ee][Xx][Pp] ; -NOT_REGEXP : [Nn][Oo][Tt] [ \t]+ [Rr][Ee][Gg][Ee][Xx][Pp] ; +NOT_REGEXP : [Nn][Oo][Tt] '_' [Rr][Ee][Gg][Ee][Xx][Pp] ; CONTAINS : [Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]? ; -NOT_CONTAINS: [Nn][Oo][Tt] [ \t]+ [Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]? ; +NOT_CONTAINS: [Nn][Oo][Tt] '_' [Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]? ; IN : [Ii][Nn] ; -NOT_IN : [Nn][Oo][Tt] [ \t]+ [Ii][Nn] ; +NOT_IN : [Nn][Oo][Tt] '_' [Ii][Nn] ; // Boolean logic NOT : [Nn][Oo][Tt] ; diff --git a/frontend/src/utils/queryContextUtils.ts b/frontend/src/utils/queryContextUtils.ts index e44b865ba13a..240e8d809997 100644 --- a/frontend/src/utils/queryContextUtils.ts +++ b/frontend/src/utils/queryContextUtils.ts @@ -10,6 +10,7 @@ import { isFunctionToken, isKeyToken, isMultiValueOperator, + isNonValueOperatorToken, isOperatorToken, isValueToken, } from './tokenUtils'; @@ -863,6 +864,7 @@ export function getQueryContextAtCursor( if (lastTokenContext.isInOperator) { // If we just typed an operator and then a space, we move to value context const keyFromPair = currentPair?.key || ''; + const isNonValueToken = isNonValueOperatorToken(lastTokenBeforeCursor.type); return { tokenType: lastTokenBeforeCursor.type, text: lastTokenBeforeCursor.text, @@ -871,9 +873,9 @@ export function getQueryContextAtCursor( currentToken: lastTokenBeforeCursor.text, isInKey: false, isInOperator: false, - isInValue: true, // After operator + space, should be value context + isInValue: !isNonValueToken, // After operator + space, should be value context isInFunction: false, - isInConjunction: false, + isInConjunction: isNonValueToken, isInParenthesis: false, isInBracketList: false, operatorToken: lastTokenBeforeCursor.text, diff --git a/frontend/src/utils/tokenUtils.ts b/frontend/src/utils/tokenUtils.ts index bbe331ca9045..bb69fe0b8eb8 100644 --- a/frontend/src/utils/tokenUtils.ts +++ b/frontend/src/utils/tokenUtils.ts @@ -24,6 +24,17 @@ export function isOperatorToken(tokenType: number): boolean { FilterQueryLexer.CONTAINS, FilterQueryLexer.IN, FilterQueryLexer.NOT, + FilterQueryLexer.IS_NOT_NULL, + FilterQueryLexer.IS_NULL, + ].includes(tokenType); +} + +// Helper function to check if a token is an operator which doesn't require a value +export function isNonValueOperatorToken(tokenType: number): boolean { + return [ + FilterQueryLexer.IS_NOT_NULL, + FilterQueryLexer.IS_NULL, + FilterQueryLexer.EXISTS, ].includes(tokenType); }