diff options
author | Chance Zibolski <czibolsk@redhat.com> | 2019-02-14 19:59:59 -0800 |
---|---|---|
committer | Nico Williams <nico@cryptonector.com> | 2019-02-20 20:03:26 -0600 |
commit | 4f6045a94e0519ec58210bbd58ece442c32468e1 (patch) | |
tree | f25f29a668901b784ac78ed46223c145ab662c46 | |
parent | 1ef90acb3814d85d59e5d1502d0ced6287b83408 (diff) |
Support "if" without "else" clause
Defaults the else clause to the identity filter "." if an else clause is
missing.
The following two jq programs are considered equivalent:
```
if .foo then
.foo = "bar"
else
.
end
```
```
if .foo then
.foo = "bar"
end
```
-rw-r--r-- | src/parser.c | 1997 | ||||
-rw-r--r-- | src/parser.h | 12 | ||||
-rw-r--r-- | src/parser.y | 3 | ||||
-rw-r--r-- | tests/jq.test | 13 |
4 files changed, 1030 insertions, 995 deletions
diff --git a/src/parser.c b/src/parser.c index f82bdd1a..93a924ae 100644 --- a/src/parser.c +++ b/src/parser.c @@ -678,16 +678,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1964 +#define YYLAST 2015 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 69 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 163 +#define YYNRULES 164 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 315 +#define YYNSTATES 316 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -739,22 +739,22 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint16 yyrline[] = { 0, 300, 300, 303, 308, 311, 322, 325, 330, 333, - 338, 342, 345, 349, 353, 357, 360, 365, 369, 373, - 378, 385, 389, 393, 397, 401, 405, 409, 413, 417, - 421, 425, 429, 433, 437, 441, 445, 449, 455, 461, - 465, 469, 473, 477, 481, 485, 489, 493, 498, 501, - 518, 527, 534, 542, 553, 558, 564, 567, 572, 577, - 584, 584, 588, 588, 595, 598, 601, 607, 610, 615, - 618, 621, 627, 630, 633, 641, 645, 648, 651, 654, - 657, 660, 663, 666, 669, 673, 679, 682, 685, 688, + 338, 342, 345, 349, 353, 357, 360, 363, 368, 372, + 376, 381, 388, 392, 396, 400, 404, 408, 412, 416, + 420, 424, 428, 432, 436, 440, 444, 448, 452, 458, + 464, 468, 472, 476, 480, 484, 488, 492, 496, 501, + 504, 521, 530, 537, 545, 556, 561, 567, 570, 575, + 580, 587, 587, 591, 591, 598, 601, 604, 610, 613, + 618, 621, 624, 630, 633, 636, 644, 648, 651, 654, + 657, 660, 663, 666, 669, 672, 676, 682, 685, 688, 691, 694, 697, 700, 703, 706, 709, 712, 715, 718, - 721, 724, 727, 734, 738, 742, 754, 759, 760, 761, - 762, 765, 768, 773, 778, 781, 786, 789, 794, 798, - 801, 806, 809, 814, 817, 822, 825, 828, 831, 834, - 837, 845, 851, 854, 857, 860, 863, 866, 869, 872, + 721, 724, 727, 730, 737, 741, 745, 757, 762, 763, + 764, 765, 768, 771, 776, 781, 784, 789, 792, 797, + 801, 804, 809, 812, 817, 820, 825, 828, 831, 834, + 837, 840, 848, 854, 857, 860, 863, 866, 869, 872, 875, 878, 881, 884, 887, 890, 893, 896, 899, 902, - 905, 910, 913, 914, 915, 918, 921, 924, 927, 931, - 935, 939, 943, 951 + 905, 908, 913, 916, 917, 918, 921, 924, 927, 930, + 934, 938, 942, 946, 954 }; #endif @@ -797,52 +797,52 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -160 +#define YYPACT_NINF -158 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-160))) + (!!((Yystate) == (-158))) -#define YYTABLE_NINF -152 +#define YYTABLE_NINF -153 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-152))) + (!!((Yytable_value) == (-153))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 29, 764, 3, 59, -7, -10, -160, 16, -160, 57, - 764, 432, 432, 764, 18, 1, -160, 764, 514, 2, - 281, 174, 347, 1282, 764, -160, 5, -160, 4, 4, - 764, 59, 672, 764, -160, -160, -22, 1638, 9, 51, - 43, 74, -160, 75, -160, 66, 49, 1112, -160, -160, - -160, 113, 16, 72, 65, -160, 909, -21, 70, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, 764, 130, - 73, 76, 79, 95, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, -160, -160, - 1806, 90, -13, 4, 447, 137, -160, -160, -160, 1806, - 764, -160, -160, 1333, 1806, -46, -160, -160, 19, 764, - 579, -13, -13, 644, 104, -160, 17, -160, -160, -160, - -160, -160, -160, 404, 213, -160, 213, 1146, 89, 213, - 213, -160, 404, 1874, 116, 116, 1840, 342, 1906, 1874, - 1874, 1874, 1874, 1874, 1874, 116, 116, 1806, 1840, 1874, - 116, 116, 66, 66, 98, 98, 98, -160, 149, -13, - 826, 117, 112, 120, 103, 96, 764, 105, 859, 20, - -160, -160, 764, -160, 23, -160, 160, 64, -160, 1384, - -160, 1588, 123, 124, -160, -160, 764, -160, 764, -160, - -12, -160, 213, 126, 53, 126, 127, 213, 126, 126, - -160, -160, -160, -23, 131, 132, 764, 172, 135, -18, - -160, 136, -13, 764, -160, -160, 959, -160, 736, 129, - -160, 185, -160, -160, -160, 19, 139, -160, 764, 764, - -160, 764, 764, 1806, 1672, -160, 213, 213, 126, -13, - -160, -13, -13, 1180, 143, -13, 826, -160, -13, 153, - 1806, 142, 151, 1009, -160, -160, -160, 764, 1722, 1772, - 1435, 1486, -160, 126, 126, -160, -160, -160, 147, -13, - -160, -160, -160, -160, -160, 154, 1537, -160, 764, 764, - 764, -13, -160, -160, -160, 1588, 1214, 1059, -160, -160, - -160, 764, -160, 1248, -160 + 18, 765, 40, 48, -6, 10, -158, 31, -158, 76, + 765, 433, 433, 765, 20, 0, -158, 765, 515, 17, + 282, 146, 348, 1283, 765, -158, 2, -158, -5, -5, + 765, 48, 673, 765, -158, -158, -10, 1689, 14, 47, + 79, 112, -158, 119, -158, 3, 63, 1113, -158, -158, + -158, 124, 31, 68, 61, -158, 910, -26, 67, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, 765, 127, + 70, 71, 77, 87, 765, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 765, 765, 765, -158, -158, + 1857, 86, -16, -5, 448, 135, -158, -158, -158, 1857, + 765, -158, -158, 1334, 1857, -53, -158, -158, 1, 765, + 580, -16, -16, 645, 108, -158, 28, -158, -158, -158, + -158, -158, -158, 405, 214, -158, 214, 1147, 93, 214, + 214, -158, 405, 1925, 343, 343, 1891, 496, 1957, 1925, + 1925, 1925, 1925, 1925, 1925, 343, 343, 1857, 1891, 1925, + 343, 343, 3, 3, 99, 99, 99, -158, 155, -16, + 827, 121, 115, 123, 107, 100, 765, 113, 860, 7, + -158, -158, 765, -158, 75, -158, 166, -20, -158, 1385, + -158, 1589, 114, 117, -158, -158, 765, -158, 765, -158, + -18, -158, 214, 125, 50, 125, 118, 214, 125, 125, + -158, -158, -158, -23, 120, 126, 765, 174, 129, -24, + -158, 130, -16, 765, -158, -158, 960, -158, 737, 122, + -158, 178, -158, -158, -158, 1, 131, -158, 765, 765, + -158, -158, 765, 765, 1857, 1723, -158, 214, 214, 125, + -16, -158, -16, -16, 1181, 132, -16, 827, -158, -16, + 144, 1857, 138, 139, 1010, -158, -158, -158, 765, 1773, + 1823, 1436, 1487, -158, 125, 125, -158, -158, -158, 137, + -16, -158, -158, -158, -158, -158, 140, 1538, -158, 765, + 765, 765, -16, -158, -158, -158, 1639, 1215, 1060, -158, + -158, -158, 765, -158, 1249, -158 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -850,53 +850,53 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 105, 81, 96, 98, 73, 0, - 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 97, 47, 1, 0, 0, - 8, 6, 0, 0, 77, 62, 0, 0, 0, 0, - 18, 0, 75, 0, 64, 32, 0, 0, 104, 103, - 84, 0, 0, 83, 0, 101, 0, 0, 161, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 0, 0, - 158, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 6, 106, 82, 97, 99, 74, 0, + 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 98, 48, 1, 0, 0, + 8, 6, 0, 0, 78, 63, 0, 0, 0, 0, + 19, 0, 76, 0, 65, 33, 0, 0, 105, 104, + 85, 0, 0, 84, 0, 102, 0, 0, 162, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 0, 0, + 159, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 5, - 10, 80, 0, 0, 0, 0, 53, 52, 3, 2, - 8, 7, 48, 0, 113, 0, 111, 64, 0, 0, - 0, 0, 0, 0, 0, 74, 0, 107, 99, 85, - 79, 108, 100, 0, 0, 110, 0, 0, 160, 0, - 0, 102, 0, 40, 41, 42, 25, 24, 23, 27, - 31, 34, 36, 39, 26, 45, 46, 28, 29, 22, - 43, 44, 30, 33, 35, 37, 38, 76, 0, 0, - 0, 0, 0, 117, 82, 0, 0, 89, 0, 0, - 9, 49, 0, 106, 0, 59, 0, 0, 56, 0, - 16, 0, 0, 0, 19, 17, 0, 65, 0, 61, - 0, 154, 0, 163, 71, 155, 0, 0, 157, 156, - 153, 118, 121, 0, 0, 0, 0, 0, 0, 0, - 123, 0, 0, 0, 78, 109, 0, 88, 0, 87, - 51, 0, 112, 63, 58, 0, 0, 54, 0, 0, - 15, 0, 0, 20, 0, 70, 0, 0, 159, 0, - 119, 0, 0, 0, 125, 0, 0, 120, 0, 116, - 11, 95, 94, 0, 86, 50, 57, 0, 0, 0, - 0, 0, 66, 69, 162, 122, 131, 127, 0, 0, - 129, 124, 128, 92, 91, 93, 0, 68, 0, 0, - 0, 0, 126, 90, 55, 0, 0, 0, 130, 67, - 12, 0, 14, 0, 13 + 0, 0, 0, 0, 0, 0, 0, 0, 22, 5, + 10, 81, 0, 0, 0, 0, 54, 53, 3, 2, + 8, 7, 49, 0, 114, 0, 112, 65, 0, 0, + 0, 0, 0, 0, 0, 75, 0, 108, 100, 86, + 80, 109, 101, 0, 0, 111, 0, 0, 161, 0, + 0, 103, 0, 41, 42, 43, 26, 25, 24, 28, + 32, 35, 37, 40, 27, 46, 47, 29, 30, 23, + 44, 45, 31, 34, 36, 38, 39, 77, 0, 0, + 0, 0, 0, 118, 83, 0, 0, 90, 0, 0, + 9, 50, 0, 107, 0, 60, 0, 0, 57, 0, + 17, 0, 0, 0, 20, 18, 0, 66, 0, 62, + 0, 155, 0, 164, 72, 156, 0, 0, 158, 157, + 154, 119, 122, 0, 0, 0, 0, 0, 0, 0, + 124, 0, 0, 0, 79, 110, 0, 89, 0, 88, + 52, 0, 113, 64, 59, 0, 0, 55, 0, 0, + 16, 15, 0, 0, 21, 0, 71, 0, 0, 160, + 0, 120, 0, 0, 0, 126, 0, 0, 121, 0, + 117, 11, 96, 95, 0, 87, 51, 58, 0, 0, + 0, 0, 0, 67, 70, 163, 123, 132, 128, 0, + 0, 130, 125, 129, 93, 92, 94, 0, 69, 0, + 0, 0, 0, 127, 91, 56, 0, 0, 0, 131, + 68, 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -160, -160, -160, 180, 94, -1, -160, -160, 187, -11, - -160, -19, 6, -160, -160, 97, -83, -145, -4, -160, - 31, -160, -92, -124, -160, -160, -38, -159, -106, -160 + -158, -158, -158, 157, 81, -1, -158, -158, 161, -12, + -158, -43, 6, -158, -158, 88, -103, -136, -8, -158, + 22, -158, -57, -123, -158, -158, -51, -157, -105, -158 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 2, 3, 30, 118, 110, 31, 32, 115, 24, - 197, 198, 25, 44, 127, 136, 250, 213, 26, 125, + 197, 198, 25, 44, 127, 136, 251, 213, 26, 125, 126, 181, 182, 183, 223, 229, 230, 81, 82, 83 }; @@ -905,156 +905,151 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 23, 215, 42, 27, 218, 219, 48, 38, 39, 37, - 111, 52, 40, 192, 111, 193, 45, 47, 112, 120, - 56, 231, 131, 195, 240, 259, 53, 143, 80, 119, - 266, 123, 124, 49, 116, 116, 143, 211, 128, 202, - 203, 129, 144, 260, 1, 16, 220, 145, 34, 178, - 267, 144, 179, 33, 180, 222, 111, 35, 111, 207, - 208, 36, 209, 43, 132, 207, 208, 255, 243, 113, - 114, 133, 258, 113, 114, 28, 29, 147, 134, 135, - 41, 196, 241, 153, 154, 155, 156, 157, 158, 159, + 23, 42, 52, 38, 39, 195, 192, 111, 193, 37, + 215, 240, 40, 218, 219, 112, 45, 47, 120, 111, + 56, 48, 143, 231, 267, 260, 53, 131, 80, 119, + 143, 123, 124, 1, 116, 116, 16, 144, 211, 245, + 27, 246, 145, 261, 268, 144, 178, 220, 49, 179, + 128, 180, 111, 129, 33, 111, 222, 105, 106, 107, + 132, 108, 43, 196, 28, 29, 113, 114, 34, 241, + 207, 208, 35, 209, 202, 203, 256, 147, 113, 114, + 36, 259, 41, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 231, 269, 120, - 137, 283, 284, 188, 139, 113, 114, 113, 114, 184, - 105, 106, 107, 245, 108, 246, -152, -152, 199, 201, - 140, 141, 205, 146, 148, 285, 149, 286, 287, 150, - 214, 290, 214, 152, 292, 214, 214, 151, 177, 80, - 189, 206, 217, 221, -152, -152, 108, 232, 80, 233, - -115, 234, 235, 237, 244, 302, -152, -152, 103, 104, - 105, 106, 107, 256, 108, 54, 264, 308, 4, 5, - 6, 7, 8, 251, 252, 236, 228, 274, 9, 275, - 257, 124, 10, -114, 261, 262, 11, 12, 265, 268, - 293, 13, 277, 14, 15, 253, 289, 254, 214, 294, - 301, 121, 303, 214, 190, 16, 117, 4, 5, 6, - 7, 8, 309, 242, 194, 263, 276, 17, 291, 0, - 0, 0, 270, 0, 18, 0, 19, 273, 20, 21, - 55, 22, 0, 15, 0, 0, 0, 278, 279, 0, - 280, 281, 214, 214, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, - 0, 0, 228, 18, 0, 19, 296, 20, 21, 0, - 22, -72, 50, 0, 0, 51, -72, 0, 52, 0, - -72, -72, -72, -72, -72, 0, 0, 305, 306, 307, - -72, -72, -72, 0, 0, -72, -72, -72, 0, -72, - 313, 0, 0, -72, -72, -72, -72, -72, -72, -72, - -72, 0, 16, 0, 0, -72, 0, 0, -72, -72, - -72, -72, -72, -72, -72, -72, -72, -72, 0, -72, - -72, 0, -72, 0, -72, -72, -72, -72, 57, -72, - 0, 58, 85, 86, 52, 0, 0, 0, 0, 0, + 170, 171, 172, 173, 174, 175, 176, 133, 120, 270, + 231, 113, 114, 188, 113, 114, 134, 207, 208, 184, + 243, 284, 285, 135, 137, 139, 140, 141, 199, 201, + 146, 148, 205, 149, 150, 152, 214, 286, 214, 287, + 288, 214, 214, 291, 177, 151, 293, 54, 189, 80, + 4, 5, 6, 7, 8, 206, 217, 108, 80, 221, + 9, 232, 233, -116, 10, 234, 235, 303, 11, 12, + 244, 237, 257, 13, 252, 14, 15, 253, 265, 309, + 275, 258, 276, 262, -115, 236, 228, 16, 121, 263, + 117, 124, 266, 269, 278, 290, 294, 295, 304, 17, + 302, 190, 277, 310, 214, 254, 18, 255, 19, 214, + 20, 21, 55, 22, 242, 194, 292, 0, 4, 5, + 6, 7, 8, 0, 0, 264, 0, 0, 0, 0, + 0, 0, 271, 0, 0, 0, 0, 274, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 279, 280, 214, + 214, 281, 282, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, + 0, 0, 0, 228, 18, 0, 19, 297, 20, 21, + 0, 22, -73, 50, 0, 0, 51, -73, 0, 52, + 0, -73, -73, -73, -73, -73, 0, 0, 306, 307, + 308, -73, -73, -73, 0, 0, -73, -73, -73, 0, + -73, 314, 0, 0, -73, -73, -73, -73, -73, -73, + -73, -73, 0, 16, 0, 0, -73, 0, 0, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, 0, + -73, -73, 0, -73, 0, -73, -73, -73, -73, 57, + -73, 0, 58, -153, -153, 52, 0, 0, 0, 0, + 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 0, -153, -153, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, -153, -153, 103, 104, 105, 106, 107, + 0, 108, 0, 0, 0, 0, 210, 0, 78, 58, + 79, 0, 52, 0, 0, 0, -152, 0, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 0, 0, 185, + 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 0, 9, 15, 0, 78, 10, 79, 0, 0, + 11, 12, 0, -152, 16, 13, 0, 14, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 18, 0, 19, 0, 20, 21, 0, + 22, 17, 0, 0, 0, 0, 85, 86, 18, 0, + 19, 186, 20, 21, 187, 22, 46, 0, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 10, 96, 97, 0, 11, 12, 0, + 0, 0, 13, 0, 14, 15, 101, 102, 103, 104, + 105, 106, 107, 0, 108, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, + 21, 200, 22, 0, 4, 5, 6, 7, 8, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, + 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 18, 0, 19, 0, 20, 21, 204, 22, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 0, + 0, 0, 13, 0, 14, 15, 0, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 0, 18, 0, 19, 0, 20, + 21, 0, 22, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 122, 18, 0, 19, 0, 20, 21, 0, + 22, 4, 5, 6, 7, 8, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 12, 0, 0, 0, 13, 0, 14, 15, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 16, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 0, + 17, 0, 13, 0, 14, 15, 0, 18, 0, 19, + 0, 20, 21, 273, 22, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 18, 0, 19, 224, 20, + 21, 225, 22, 0, 52, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 0, - 96, 97, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 0, 0, 0, 0, 210, 0, 78, 58, 79, - 0, 52, 0, 0, 0, -151, 0, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 4, 5, 6, 7, - 8, 0, 0, 0, 0, 16, 0, 0, 185, 0, - 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, - 0, 9, 15, 0, 78, 10, 79, 0, 0, 11, - 12, 0, -151, 16, 13, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 18, 0, 19, 0, 20, 21, 0, 22, - 17, 0, 0, 0, 0, 0, 0, 18, 0, 19, - 186, 20, 21, 187, 22, 46, 0, 0, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, - 0, 13, 0, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 18, 0, 19, 0, 20, 21, - 200, 22, 0, 4, 5, 6, 7, 8, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, - 0, 11, 12, 0, 0, 0, 13, 0, 14, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 18, - 0, 19, 0, 20, 21, 204, 22, 0, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, - 0, 13, 0, 14, 15, 0, 4, 5, 6, 7, - 8, 0, 0, 0, 0, 16, 9, 0, 0, 0, - 10, 0, 0, 0, 11, 12, 0, 17, 0, 13, - 0, 14, 15, 0, 18, 0, 19, 0, 20, 21, - 0, 22, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 122, 18, 0, 19, 0, 20, 21, 0, 22, - 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 10, 0, 0, 0, 11, 12, - 0, 0, 0, 13, 0, 14, 15, 0, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 16, 9, 0, - 0, 0, 10, 0, 0, 0, 11, 12, 0, 17, - 0, 13, 0, 14, 15, 0, 18, 0, 19, 0, - 20, 21, 272, 22, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 18, 0, 19, 224, 20, 21, - 225, 22, 0, 52, 0, 0, 0, 0, 0, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 84, 85, - 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 226, 0, 227, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, - 86, 87, 238, 0, 0, 239, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, - 86, 87, 0, 0, 0, 142, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, - 86, 87, 0, 0, 0, 271, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, - 86, 87, 0, 0, 0, 295, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 311, 0, - 312, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 138, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 216, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 84, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 89, 226, 0, 227, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, 84, 85, 86, 87, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 288, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 0, 0, 84, 85, 86, - 87, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 88, 89, 310, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 88, 89, 314, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 109, 84, 85, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 84, + 85, 86, 87, 238, 0, 0, 239, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 84, + 85, 86, 87, 0, 0, 0, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 84, + 85, 86, 87, 0, 0, 0, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 84, + 85, 86, 87, 0, 0, 0, 296, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 312, + 0, 313, 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, + 95, 96, 97, 0, 0, 0, 84, 85, 86, 87, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 88, 89, 138, 0, 0, 0, 0, 90, + 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, + 84, 85, 86, 87, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 0, 108, 88, 89, 216, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 84, 85, 86, 87, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, + 88, 89, 289, 0, 0, 0, 0, 90, 91, 92, + 93, 94, 95, 96, 97, 0, 0, 0, 84, 85, + 86, 87, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 0, 108, 88, 89, 311, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, + 0, 0, 84, 85, 86, 87, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 88, 89, + 315, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 191, 84, 85, 86, 87, 0, 0, 0, + 0, 108, 109, 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 247, 84, 85, 86, 87, 0, 0, + 107, 0, 108, 191, 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 0, 108, 299, 84, 85, 86, 87, 0, + 106, 107, 0, 108, 247, 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, @@ -1064,185 +1059,190 @@ static const yytype_int16 yytable[] = 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 108, 304, 84, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 248, 249, + 104, 105, 106, 107, 0, 108, 301, 84, 85, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 84, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 130, 0, 0, - 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 282, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 297, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 298, 0, 0, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, -152, 85, 86, 0, 0, 0, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 0, 0, 0, 0, 0, -152, -152, -152, -152, - -152, -152, 96, 97, 0, 0, 85, 86, 0, 0, - 0, 0, 0, -152, 101, 102, 103, 104, 105, 106, - 107, 88, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 103, 104, - 105, 106, 107, 0, 108 + 103, 104, 105, 106, 107, 0, 108, 305, 84, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 248, + 249, 0, 0, 250, 88, 89, 0, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, + 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 248, + 249, 0, 0, 0, 88, 89, 0, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, + 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 84, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 130, 0, + 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, + 0, 0, 84, 85, 86, 87, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 88, 89, + 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, + 95, 96, 97, 0, 0, 0, 0, 283, 0, 0, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 84, 85, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 298, 88, 89, + 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, + 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 84, 85, 86, 87, 0, 0, 0, 0, + 0, 0, 299, 0, 0, 0, 0, 0, 88, 89, + 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, + 95, 96, 97, 0, 0, 0, 84, 85, 86, 87, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 88, 89, 0, 0, 0, 0, 0, 90, + 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, + 84, 85, 86, 87, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 0, 108, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, -153, 85, 86, 0, 0, 0, + 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, + 88, 89, 0, 0, 0, 0, 0, -153, -153, -153, + -153, -153, -153, 96, 97, 0, 0, 85, 86, 0, + 0, 0, 0, 0, -153, 101, 102, 103, 104, 105, + 106, 107, 88, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, + 104, 105, 106, 107, 0, 108 }; static const yytype_int16 yycheck[] = { - 1, 146, 1, 0, 149, 150, 4, 11, 12, 10, - 5, 7, 13, 59, 5, 61, 17, 18, 13, 30, - 21, 180, 13, 4, 4, 48, 20, 48, 22, 30, - 48, 32, 33, 31, 28, 29, 48, 143, 60, 131, - 132, 63, 63, 66, 15, 41, 152, 68, 58, 62, - 68, 63, 65, 60, 67, 179, 5, 41, 5, 42, - 43, 4, 45, 62, 13, 42, 43, 212, 45, 64, - 65, 28, 217, 64, 65, 16, 17, 78, 4, 4, - 62, 62, 62, 84, 85, 86, 87, 88, 89, 90, + 1, 1, 7, 11, 12, 4, 59, 5, 61, 10, + 146, 4, 13, 149, 150, 13, 17, 18, 30, 5, + 21, 4, 48, 180, 48, 48, 20, 13, 22, 30, + 48, 32, 33, 15, 28, 29, 41, 63, 143, 59, + 0, 61, 68, 66, 68, 63, 62, 152, 31, 65, + 60, 67, 5, 63, 60, 5, 179, 54, 55, 56, + 13, 58, 62, 62, 16, 17, 64, 65, 58, 62, + 42, 43, 41, 45, 131, 132, 212, 78, 64, 65, + 4, 217, 62, 84, 85, 86, 87, 88, 89, 90, 91, 92, |