Some updates
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/02005508 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/02005508 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/02005508 Branch: refs/heads/refactor-type Commit: 02005508dd4b6813ecc494e2cdfed842b4c93dc4 Parents: cb56450 Author: Jianqiao Zhu <[email protected]> Authored: Wed Sep 27 21:12:59 2017 -0500 Committer: Jianqiao Zhu <[email protected]> Committed: Wed Oct 11 13:37:54 2017 -0500 ---------------------------------------------------------------------- parser/SqlLexer.lpp | 1 + parser/SqlParser.ypp | 26 +- parser/preprocessed/SqlLexer_gen.cpp | 1143 +++--- parser/preprocessed/SqlLexer_gen.hpp | 2 +- parser/preprocessed/SqlParser_gen.cpp | 3247 +++++++++--------- parser/preprocessed/SqlParser_gen.hpp | 167 +- query_optimizer/rules/CMakeLists.txt | 4 +- query_optimizer/rules/Partition.cpp | 16 +- types/CMakeLists.txt | 1 + types/NullLit.hpp | 38 + types/NullType.hpp | 2 +- types/TypeFactory.cpp | 2 +- types/TypeID.hpp | 10 +- types/TypeRegistrar.hpp | 38 +- types/TypeSynthesizer.hpp | 47 +- types/TypeUtil.hpp | 4 +- types/containers/ColumnVector.hpp | 57 +- types/containers/ColumnVectorsValueAccessor.hpp | 3 +- types/operations/OperationUtil.hpp | 6 +- .../BinaryOperationWrapper.hpp | 6 +- .../unary_operations/UnaryOperationWrapper.hpp | 2 +- 21 files changed, 2463 insertions(+), 2359 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/02005508/parser/SqlLexer.lpp ---------------------------------------------------------------------- diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp index 92268e8..020673c 100644 --- a/parser/SqlLexer.lpp +++ b/parser/SqlLexer.lpp @@ -301,6 +301,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal} ">" return TOKEN_GT; "<=" return TOKEN_LEQ; ">=" return TOKEN_GEQ; + "::" return TOKEN_DOUBLECOLON; [-+*/%(),.;] return yytext[0]; [\[\]] return yytext[0]; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/02005508/parser/SqlParser.ypp ---------------------------------------------------------------------- diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp index af79fe3..0d19a4c 100644 --- a/parser/SqlParser.ypp +++ b/parser/SqlParser.ypp @@ -272,6 +272,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string %token TOKEN_DESC; %token TOKEN_DISTINCT; %token TOKEN_DOUBLE; +%token TOKEN_DOUBLECOLON; %token TOKEN_DROP; %token TOKEN_ELSE; %token TOKEN_END; @@ -1776,7 +1777,30 @@ cast_function: auto *name = new quickstep::ParseString(@1.first_line, @1.first_column, "cast"); $$ = new quickstep::ParseFunctionCall( @1.first_line, @1.first_column, false, name, arguments); - }; + } + | expression_base TOKEN_DOUBLECOLON data_type { + auto *arguments = new quickstep::PtrList<quickstep::ParseExpression>(); + arguments->push_back($1); + arguments->push_back(new quickstep::ParseScalarLiteral( + new quickstep::StringParseLiteralValue( + new quickstep::ParseString(@3.first_line, + @3.first_column, + $3->getType().getName()), + nullptr))); + delete $3; + auto *name = new quickstep::ParseString(@2.first_line, @2.first_column, "cast"); + $$ = new quickstep::ParseFunctionCall( + @2.first_line, @2.first_column, false, name, arguments); + } + | expression_base TOKEN_DOUBLECOLON any_name { + auto *arguments = new quickstep::PtrList<quickstep::ParseExpression>(); + arguments->push_back($1); + arguments->push_back(new quickstep::ParseScalarLiteral( + new quickstep::StringParseLiteralValue($3, nullptr))); + auto *name = new quickstep::ParseString(@2.first_line, @2.first_column, "cast"); + $$ = new quickstep::ParseFunctionCall( + @2.first_line, @2.first_column, false, name, arguments); + } extract_function: TOKEN_EXTRACT '(' datetime_unit TOKEN_FROM add_expression ')' { http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/02005508/parser/preprocessed/SqlLexer_gen.cpp ---------------------------------------------------------------------- diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp index b1ea67f..0904d7c 100644 --- a/parser/preprocessed/SqlLexer_gen.cpp +++ b/parser/preprocessed/SqlLexer_gen.cpp @@ -592,8 +592,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 165 -#define YY_END_OF_BUFFER 166 +#define YY_NUM_RULES 166 +#define YY_END_OF_BUFFER 167 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -601,72 +601,74 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[590] = +static const flex_int16_t yy_accept[592] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 166, 2, 2, 164, 164, 163, 162, 164, - 141, 137, 140, 137, 137, 160, 133, 130, 134, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 138, 4, 5, 5, 3, 156, - 156, 153, 157, 157, 151, 158, 158, 155, 1, 163, - 131, 161, 160, 160, 160, 0, 135, 132, 136, 159, - 159, 159, 159, 10, 159, 159, 159, 23, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 139, - - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 59, 68, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 82, 83, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 114, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 4, 5, 3, 156, 152, 157, - 150, 150, 142, 144, 145, 146, 147, 148, 149, 150, - 158, 154, 161, 160, 0, 160, 6, 7, 159, 9, - 11, 159, 159, 15, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 34, 159, 159, 159, 159, - - 159, 159, 159, 159, 44, 159, 159, 159, 159, 159, - 159, 51, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 63, 159, 70, 159, 159, 159, 159, 159, 159, - 159, 78, 159, 81, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 99, 159, 159, - 104, 105, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 142, - 144, 143, 159, 159, 159, 159, 159, 159, 159, 20, - 21, 24, 159, 159, 159, 29, 159, 159, 159, 32, - 159, 159, 159, 38, 159, 159, 42, 43, 159, 159, - - 159, 159, 159, 159, 159, 53, 54, 159, 56, 159, - 58, 159, 159, 159, 159, 67, 69, 71, 72, 73, - 159, 75, 159, 159, 79, 159, 159, 86, 159, 159, - 159, 159, 159, 93, 159, 95, 159, 159, 159, 101, - 159, 159, 159, 159, 159, 159, 159, 159, 111, 112, - 115, 159, 159, 159, 159, 159, 159, 159, 159, 124, - 159, 159, 127, 128, 142, 143, 8, 159, 159, 159, - 159, 159, 159, 159, 26, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 47, - 48, 49, 159, 159, 55, 159, 60, 61, 159, 159, - - 159, 74, 159, 77, 80, 84, 85, 159, 159, 159, - 159, 159, 94, 159, 159, 98, 159, 159, 159, 159, - 159, 159, 159, 110, 159, 159, 159, 118, 159, 159, - 121, 159, 159, 125, 159, 159, 159, 159, 14, 159, - 159, 159, 159, 159, 27, 159, 30, 159, 159, 159, - 159, 159, 37, 159, 159, 41, 45, 159, 159, 159, - 57, 62, 159, 159, 159, 76, 159, 159, 159, 159, - 159, 159, 97, 159, 102, 103, 159, 107, 108, 159, - 159, 159, 159, 119, 120, 122, 159, 126, 159, 159, - 13, 159, 159, 159, 159, 159, 159, 22, 31, 159, - - 35, 36, 159, 159, 46, 159, 52, 64, 159, 159, - 159, 89, 159, 91, 159, 159, 159, 159, 159, 159, - 159, 159, 123, 159, 159, 159, 159, 159, 159, 159, - 159, 33, 159, 40, 159, 159, 66, 159, 159, 92, - 159, 159, 106, 159, 159, 159, 159, 159, 12, 159, - 159, 159, 159, 25, 159, 159, 50, 65, 87, 90, - 159, 159, 109, 113, 159, 117, 129, 16, 159, 159, - 159, 28, 39, 88, 96, 159, 159, 159, 18, 19, - 159, 116, 159, 159, 159, 100, 159, 17, 0 + 0, 0, 167, 2, 2, 165, 165, 164, 163, 165, + 142, 138, 141, 138, 138, 161, 165, 133, 130, 134, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 139, 4, 5, 5, 3, + 157, 157, 154, 158, 158, 152, 159, 159, 156, 1, + 164, 131, 162, 161, 161, 161, 0, 137, 135, 132, + 136, 160, 160, 160, 160, 10, 160, 160, 160, 23, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 140, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 59, 68, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 82, 83, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 114, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 4, 5, 3, 157, + 153, 158, 151, 151, 143, 145, 146, 147, 148, 149, + 150, 151, 159, 155, 162, 161, 0, 161, 6, 7, + 160, 9, 11, 160, 160, 15, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 34, 160, 160, + + 160, 160, 160, 160, 160, 160, 44, 160, 160, 160, + 160, 160, 160, 51, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 63, 160, 70, 160, 160, 160, 160, + 160, 160, 160, 78, 160, 81, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 99, + 160, 160, 104, 105, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 143, 145, 144, 160, 160, 160, 160, 160, 160, + 160, 20, 21, 24, 160, 160, 160, 29, 160, 160, + 160, 32, 160, 160, 160, 38, 160, 160, 42, 43, + + 160, 160, 160, 160, 160, 160, 160, 53, 54, 160, + 56, 160, 58, 160, 160, 160, 160, 67, 69, 71, + 72, 73, 160, 75, 160, 160, 79, 160, 160, 86, + 160, 160, 160, 160, 160, 93, 160, 95, 160, 160, + 160, 101, 160, 160, 160, 160, 160, 160, 160, 160, + 111, 112, 115, 160, 160, 160, 160, 160, 160, 160, + 160, 124, 160, 160, 127, 128, 143, 144, 8, 160, + 160, 160, 160, 160, 160, 160, 26, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 47, 48, 49, 160, 160, 55, 160, 60, 61, + + 160, 160, 160, 74, 160, 77, 80, 84, 85, 160, + 160, 160, 160, 160, 94, 160, 160, 98, 160, 160, + 160, 160, 160, 160, 160, 110, 160, 160, 160, 118, + 160, 160, 121, 160, 160, 125, 160, 160, 160, 160, + 14, 160, 160, 160, 160, 160, 27, 160, 30, 160, + 160, 160, 160, 160, 37, 160, 160, 41, 45, 160, + 160, 160, 57, 62, 160, 160, 160, 76, 160, 160, + 160, 160, 160, 160, 97, 160, 102, 103, 160, 107, + 108, 160, 160, 160, 160, 119, 120, 122, 160, 126, + 160, 160, 13, 160, 160, 160, 160, 160, 160, 22, + + 31, 160, 35, 36, 160, 160, 46, 160, 52, 64, + 160, 160, 160, 89, 160, 91, 160, 160, 160, 160, + 160, 160, 160, 160, 123, 160, 160, 160, 160, 160, + 160, 160, 160, 33, 160, 40, 160, 160, 66, 160, + 160, 92, 160, 160, 106, 160, 160, 160, 160, 160, + 12, 160, 160, 160, 160, 25, 160, 160, 50, 65, + 87, 90, 160, 160, 109, 113, 160, 117, 129, 16, + 160, 160, 160, 28, 39, 88, 96, 160, 160, 160, + 18, 19, 160, 116, 160, 160, 160, 100, 160, 17, + 0 + } ; static const YY_CHAR yy_ec[256] = @@ -713,311 +715,311 @@ static const YY_CHAR yy_meta[72] = 8 } ; -static const flex_int16_t yy_base[605] = +static const flex_int16_t yy_base[607] = { 0, 0, 1, 46, 0, 117, 162, 2, 3, 127, 128, - 6, 10, 147, 1317, 1317, 0, 1317, 13, 1317, 130, - 1317, 1317, 1317, 129, 6, 129, 4, 1317, 28, 124, - 159, 213, 165, 167, 263, 92, 158, 163, 96, 107, - 214, 160, 186, 219, 221, 155, 281, 274, 325, 257, - 186, 209, 0, 219, 1317, 27, 4, 19, 0, 0, - 0, 17, 0, 0, 389, 0, 0, 8, 0, 22, - 1317, 0, 293, 325, 343, 18, 1317, 1317, 1317, 0, - 223, 265, 234, 242, 260, 292, 288, 0, 299, 330, - 337, 324, 334, 324, 325, 380, 325, 331, 346, 1317, - - 348, 364, 378, 376, 371, 378, 382, 386, 390, 389, - 386, 385, 435, 0, 402, 389, 400, 435, 433, 431, - 433, 436, 431, 440, 447, 0, 452, 437, 453, 441, - 442, 456, 453, 449, 465, 457, 444, 494, 468, 495, - 500, 501, 499, 492, 0, 486, 492, 507, 506, 502, - 500, 508, 501, 516, 0, 29, 0, 0, 1317, 0, - 1317, 1317, 22, 24, 1317, 1317, 1317, 1317, 1317, 0, - 0, 1317, 0, 524, 26, 28, 0, 0, 517, 0, - 518, 501, 516, 504, 545, 544, 512, 552, 536, 542, - 537, 562, 545, 548, 562, 0, 559, 568, 565, 568, - - 552, 571, 558, 570, 0, 557, 561, 561, 562, 581, - 571, 580, 574, 576, 585, 599, 604, 597, 613, 614, - 615, 616, 608, 0, 603, 604, 620, 617, 620, 607, - 609, 0, 618, 0, 627, 628, 616, 617, 635, 636, - 628, 620, 638, 634, 659, 660, 663, 654, 661, 672, - 0, 666, 674, 661, 669, 668, 679, 680, 674, 672, - 673, 690, 678, 674, 693, 683, 694, 691, 685, 30, - 125, 0, 686, 698, 717, 709, 724, 720, 721, 0, - 0, 734, 725, 724, 718, 0, 719, 722, 737, 723, - 731, 724, 726, 742, 739, 737, 0, 0, 730, 752, - - 749, 735, 736, 742, 750, 0, 0, 745, 0, 748, - 0, 746, 762, 763, 780, 0, 0, 0, 0, 0, - 769, 0, 772, 785, 775, 777, 778, 0, 788, 795, - 796, 801, 785, 0, 799, 0, 787, 782, 787, 0, - 804, 797, 809, 801, 796, 794, 797, 814, 0, 801, - 0, 823, 817, 825, 824, 827, 843, 846, 844, 0, - 848, 839, 0, 842, 131, 1317, 0, 852, 853, 839, - 859, 845, 856, 860, 0, 851, 848, 864, 865, 857, - 863, 872, 863, 872, 864, 872, 891, 878, 900, 0, - 0, 0, 882, 901, 0, 902, 0, 0, 890, 906, - - 894, 0, 907, 0, 0, 0, 0, 894, 903, 914, - 901, 911, 0, 916, 906, 0, 918, 920, 907, 919, - 911, 910, 913, 0, 913, 916, 922, 0, 939, 949, - 0, 936, 960, 0, 940, 951, 958, 954, 0, 947, - 952, 970, 963, 954, 0, 974, 0, 971, 957, 965, - 967, 960, 0, 977, 979, 0, 0, 965, 977, 973, - 0, 0, 970, 984, 990, 0, 984, 974, 993, 987, - 993, 1005, 0, 1009, 0, 0, 1010, 0, 0, 1016, - 1025, 1026, 1024, 0, 0, 0, 1011, 0, 1016, 1018, - 0, 1024, 1019, 1022, 1024, 1032, 1029, 0, 0, 1034, - - 0, 0, 1031, 1023, 0, 1030, 0, 0, 1042, 1034, - 1032, 0, 1035, 0, 1026, 1049, 1051, 1050, 1057, 1064, - 1066, 1077, 0, 1063, 1077, 1071, 1070, 1071, 1068, 1072, - 1077, 0, 1078, 0, 1086, 1074, 0, 1081, 1089, 0, - 1092, 1085, 0, 1094, 1086, 1087, 1100, 1097, 0, 1100, - 1104, 1098, 1113, 0, 1108, 1122, 0, 0, 1116, 0, - 1118, 1131, 0, 0, 1129, 0, 0, 0, 1124, 1138, - 1126, 0, 0, 0, 0, 1125, 1141, 1128, 0, 0, - 1144, 0, 1141, 1133, 1147, 0, 1134, 0, 1317, 1199, - 1209, 1219, 1229, 1239, 1243, 1246, 1252, 1262, 1272, 1282, - - 1292, 1302, 1307, 1309 + 6, 10, 148, 1317, 1317, 0, 1317, 13, 1317, 131, + 1317, 1317, 1317, 136, 6, 129, 125, 4, 1317, 28, + 124, 159, 213, 165, 167, 263, 92, 158, 163, 96, + 107, 214, 160, 186, 219, 221, 155, 281, 274, 325, + 257, 186, 209, 0, 219, 1317, 27, 4, 19, 0, + 0, 0, 17, 0, 0, 389, 0, 0, 8, 0, + 22, 1317, 0, 293, 325, 343, 18, 1317, 1317, 1317, + 1317, 0, 223, 265, 234, 242, 260, 292, 288, 0, + 299, 330, 337, 324, 334, 324, 325, 380, 325, 331, + + 346, 1317, 348, 364, 378, 376, 371, 378, 382, 386, + 390, 389, 386, 385, 435, 0, 402, 389, 400, 435, + 433, 431, 433, 436, 431, 440, 447, 0, 452, 437, + 453, 441, 442, 456, 453, 449, 465, 457, 444, 494, + 468, 495, 500, 501, 499, 492, 0, 486, 492, 507, + 506, 502, 500, 508, 501, 516, 0, 29, 0, 0, + 1317, 0, 1317, 1317, 22, 24, 1317, 1317, 1317, 1317, + 1317, 0, 0, 1317, 0, 524, 26, 28, 0, 0, + 517, 0, 518, 501, 516, 504, 545, 544, 512, 552, + 536, 542, 537, 562, 545, 548, 562, 0, 559, 568, + + 565, 568, 552, 571, 558, 570, 0, 557, 561, 561, + 562, 581, 571, 580, 574, 576, 585, 599, 604, 597, + 613, 614, 615, 616, 608, 0, 603, 604, 620, 617, + 620, 607, 609, 0, 618, 0, 627, 628, 616, 617, + 635, 636, 628, 620, 638, 634, 659, 660, 663, 654, + 661, 672, 0, 666, 674, 661, 669, 668, 679, 680, + 674, 672, 673, 690, 678, 674, 693, 683, 694, 691, + 685, 30, 125, 0, 686, 698, 717, 709, 724, 720, + 721, 0, 0, 734, 725, 724, 718, 0, 719, 722, + 737, 723, 731, 724, 726, 742, 739, 737, 0, 0, + + 730, 752, 749, 735, 736, 742, 750, 0, 0, 745, + 0, 748, 0, 746, 762, 763, 780, 0, 0, 0, + 0, 0, 769, 0, 772, 785, 775, 777, 778, 0, + 788, 795, 796, 801, 785, 0, 799, 0, 787, 782, + 787, 0, 804, 797, 809, 801, 796, 794, 797, 814, + 0, 801, 0, 823, 817, 825, 824, 827, 843, 846, + 844, 0, 848, 839, 0, 842, 131, 1317, 0, 852, + 853, 839, 859, 845, 856, 860, 0, 851, 848, 864, + 865, 857, 863, 872, 863, 872, 864, 872, 891, 878, + 900, 0, 0, 0, 882, 901, 0, 902, 0, 0, + + 890, 906, 894, 0, 907, 0, 0, 0, 0, 894, + 903, 914, 901, 911, 0, 916, 906, 0, 918, 920, + 907, 919, 911, 910, 913, 0, 913, 916, 922, 0, + 939, 949, 0, 936, 960, 0, 940, 951, 958, 954, + 0, 947, 952, 970, 963, 954, 0, 974, 0, 971, + 957, 965, 967, 960, 0, 977, 979, 0, 0, 965, + 977, 973, 0, 0, 970, 984, 990, 0, 984, 974, + 993, 987, 993, 1005, 0, 1009, 0, 0, 1010, 0, + 0, 1016, 1025, 1026, 1024, 0, 0, 0, 1011, 0, + 1016, 1018, 0, 1024, 1019, 1022, 1024, 1032, 1029, 0, + + 0, 1034, 0, 0, 1031, 1023, 0, 1030, 0, 0, + 1042, 1034, 1032, 0, 1035, 0, 1026, 1049, 1051, 1050, + 1057, 1064, 1066, 1077, 0, 1063, 1077, 1071, 1070, 1071, + 1068, 1072, 1077, 0, 1078, 0, 1086, 1074, 0, 1081, + 1089, 0, 1092, 1085, 0, 1094, 1086, 1087, 1100, 1097, + 0, 1100, 1104, 1098, 1113, 0, 1108, 1122, 0, 0, + 1116, 0, 1118, 1131, 0, 0, 1129, 0, 0, 0, + 1124, 1138, 1126, 0, 0, 0, 0, 1125, 1141, 1128, + 0, 0, 1144, 0, 1141, 1133, 1147, 0, 1134, 0, + 1317, 1199, 1209, 1219, 1229, 1239, 1243, 1246, 1252, 1262, + + 1272, 1282, 1292, 1302, 1307, 1309 } ; -static const flex_int16_t yy_def[605] = +static const flex_int16_t yy_def[607] = { 0, - 590, 590, 589, 3, 591, 591, 592, 592, 593, 593, - 594, 594, 589, 589, 589, 595, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 589, 589, 589, 589, 597, 598, - 598, 589, 599, 599, 600, 601, 601, 589, 595, 589, - 589, 602, 589, 589, 589, 589, 589, 589, 589, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 589, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 589, 589, 597, 598, 589, 599, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 603, - 601, 589, 602, 589, 589, 589, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 589, - 589, 604, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 589, 589, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 0, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589 + 592, 592, 591, 3, 593, 593, 594, 594, 595, 595, + 596, 596, 591, 591, 591, 597, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 591, 591, 591, 591, 599, + 600, 600, 591, 601, 601, 602, 603, 603, 591, 597, + 591, 591, 604, 591, 591, 591, 591, 591, 591, 591, + 591, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 591, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 591, 591, 599, 600, + 591, 601, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 605, 603, 591, 604, 591, 591, 591, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 591, 591, 606, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 591, 591, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 0, 591, 591, 591, 591, 591, 591, 591, 591, 591, + + 591, 591, 591, 591, 591, 591 } ; static const flex_int16_t yy_nxt[1389] = { 0, - 589, 155, 15, 15, 61, 61, 156, 156, 67, 62, - 62, 68, 67, 172, 70, 68, 70, 73, 73, 77, - 78, 156, 156, 70, 159, 70, 175, 175, 155, 176, - 176, 156, 156, 270, 271, 271, 271, 176, 176, 176, - 176, 365, 271, 79, 16, 16, 17, 18, 19, 18, - 20, 21, 22, 23, 22, 24, 25, 26, 26, 17, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 53, 55, - 17, 17, 30, 31, 32, 33, 34, 35, 36, 37, - + 591, 157, 15, 15, 62, 62, 158, 158, 68, 63, + 63, 69, 68, 174, 71, 69, 71, 74, 74, 79, + 80, 158, 158, 71, 161, 71, 177, 177, 157, 178, + 178, 158, 158, 272, 273, 273, 273, 178, 178, 178, + 178, 367, 273, 81, 16, 16, 17, 18, 19, 18, + 20, 21, 22, 23, 22, 24, 25, 26, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 17, 56, 57, - 58, 17, 17, 17, 17, 17, 110, 115, 116, 64, - 64, 17, 17, 17, 62, 62, 271, 271, 72, 74, - 75, 75, 271, 271, 81, 71, 589, 589, 589, 589, - 76, 589, 82, 589, 83, 110, 115, 116, 589, 84, - 17, 17, 17, 56, 57, 58, 17, 17, 17, 17, - 17, 65, 65, 81, 100, 111, 17, 17, 17, 76, - 85, 82, 95, 83, 86, 121, 96, 87, 84, 112, - 97, 122, 133, 113, 589, 101, 98, 102, 114, 99, - - 88, 589, 589, 151, 111, 17, 17, 103, 589, 85, - 589, 95, 589, 86, 121, 96, 87, 123, 112, 97, - 122, 133, 113, 124, 101, 98, 102, 114, 99, 88, - 89, 117, 151, 152, 153, 118, 103, 90, 130, 119, - 154, 125, 131, 177, 91, 120, 123, 92, 93, 126, - 94, 589, 124, 127, 180, 132, 128, 129, 589, 89, - 117, 181, 152, 153, 118, 589, 90, 130, 119, 154, - 125, 131, 177, 91, 120, 589, 92, 93, 126, 94, - 104, 589, 127, 180, 132, 128, 129, 148, 105, 149, - 181, 106, 150, 178, 107, 138, 182, 108, 134, 589, - - 109, 179, 135, 139, 73, 73, 136, 589, 589, 104, - 140, 141, 137, 589, 76, 183, 148, 105, 149, 185, - 106, 150, 178, 107, 138, 182, 108, 134, 184, 109, - 179, 135, 139, 589, 186, 136, 174, 174, 589, 140, - 141, 137, 142, 76, 183, 192, 76, 187, 185, 143, - 144, 188, 193, 74, 75, 75, 145, 184, 194, 146, - 201, 195, 147, 186, 76, 189, 196, 190, 202, 191, - 589, 142, 589, 589, 192, 76, 187, 203, 143, 144, - 188, 193, 589, 204, 205, 145, 589, 194, 146, 201, - 195, 147, 162, 76, 189, 196, 190, 202, 191, 197, - - 163, 164, 198, 206, 208, 209, 203, 165, 199, 210, - 211, 166, 204, 205, 207, 200, 212, 213, 214, 167, - 215, 216, 218, 168, 217, 169, 589, 223, 197, 170, - 224, 198, 206, 208, 209, 225, 165, 199, 210, 211, - 166, 589, 589, 207, 200, 212, 213, 214, 167, 215, - 216, 218, 168, 217, 169, 219, 223, 226, 170, 224, - 227, 229, 228, 230, 225, 220, 231, 232, 233, 234, - 221, 222, 235, 236, 237, 238, 239, 240, 242, 243, - 247, 241, 244, 248, 219, 252, 226, 245, 246, 227, - 229, 228, 230, 589, 220, 231, 232, 233, 234, 221, - - 222, 235, 236, 237, 238, 239, 240, 242, 243, 247, - 241, 244, 248, 249, 252, 253, 245, 246, 254, 255, - 256, 257, 250, 258, 259, 260, 262, 263, 264, 266, - 251, 267, 261, 269, 265, 174, 174, 268, 273, 274, - 275, 276, 249, 277, 253, 76, 282, 254, 255, 256, - 257, 250, 258, 259, 260, 262, 263, 264, 266, 251, - 267, 261, 269, 265, 278, 280, 268, 273, 274, 275, - 276, 283, 277, 284, 76, 282, 279, 285, 286, 287, - 281, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 278, 280, 300, 301, 302, 303, 304, - - 283, 305, 284, 306, 307, 279, 285, 286, 287, 281, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 308, 309, 300, 301, 302, 303, 304, 310, - 305, 311, 306, 307, 312, 313, 314, 315, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 316, 326, 327, - 328, 308, 309, 329, 330, 331, 334, 332, 310, 333, - 311, 335, 336, 312, 313, 314, 315, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 316, 326, 327, 328, - 337, 338, 329, 330, 331, 334, 332, 339, 333, 340, - 335, 336, 342, 343, 344, 345, 347, 348, 349, 341, - - 350, 351, 352, 353, 354, 346, 355, 356, 357, 337, - 338, 358, 359, 360, 362, 363, 339, 361, 340, 364, - 367, 342, 343, 344, 345, 347, 348, 349, 368, 350, - 351, 352, 353, 354, 346, 355, 356, 357, 369, 370, - 358, 359, 360, 362, 363, 371, 361, 372, 364, 367, - 373, 374, 375, 376, 377, 378, 379, 368, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 369, 370, 389, - 390, 391, 392, 393, 371, 394, 372, 395, 396, 373, - 374, 375, 376, 377, 378, 379, 397, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 398, 399, 389, 390, - - 391, 392, 393, 400, 394, 402, 395, 396, 403, 404, - 405, 406, 407, 408, 401, 397, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 398, 399, 418, 419, 420, - 421, 422, 400, 423, 402, 424, 425, 403, 404, 405, - 406, 407, 408, 401, 426, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 427, 428, 418, 419, 420, 421, - 422, 429, 423, 430, 424, 425, 431, 432, 433, 434, - 435, 436, 437, 426, 438, 439, 440, 441, 443, 444, - 442, 445, 446, 427, 428, 447, 448, 449, 450, 451, - 429, 452, 430, 453, 454, 431, 432, 433, 434, 435, - - 436, 437, 455, 438, 439, 440, 441, 443, 444, 442, - 445, 446, 456, 457, 447, 448, 449, 450, 451, 458, - 452, 459, 453, 454, 460, 461, 462, 463, 466, 464, - 467, 455, 465, 468, 469, 470, 471, 472, 473, 474, - 475, 456, 457, 476, 477, 478, 479, 480, 458, 481, - 459, 482, 483, 460, 461, 462, 463, 466, 464, 467, - 484, 465, 468, 469, 470, 471, 472, 473, 474, 475, - 485, 486, 476, 477, 478, 479, 480, 487, 481, 488, - 482, 483, 489, 490, 491, 492, 493, 494, 495, 484, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 485, - - 486, 505, 506, 507, 508, 509, 487, 510, 488, 511, - 512, 489, 490, 491, 492, 493, 494, 495, 513, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 514, 515, - 505, 506, 507, 508, 509, 516, 510, 517, 511, 512, - 518, 519, 520, 521, 522, 523, 524, 513, 525, 526, - 527, 528, 529, 530, 531, 532, 533, 514, 515, 534, - 535, 536, 537, 538, 516, 539, 517, 540, 541, 518, - 519, 520, 521, 522, 523, 524, 542, 525, 526, 527, - 528, 529, 530, 531, 532, 533, 543, 544, 534, 535, - 536, 537, 538, 545, 539, 546, 540, 541, 547, 548, - - 549, 550, 551, 552, 553, 542, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 543, 544, 563, 564, 565, - 566, 567, 545, 568, 546, 569, 570, 547, 548, 549, - 550, 551, 552, 553, 571, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 572, 573, 563, 564, 565, 566, - 567, 574, 568, 575, 569, 570, 576, 577, 578, 579, - 580, 581, 582, 571, 583, 584, 585, 586, 587, 588, - 589, 589, 589, 572, 573, 589, 589, 589, 589, 589, - 574, 589, 575, 589, 589, 576, 577, 578, 579, 580, - 581, 582, 589, 583, 584, 585, 586, 587, 588, 14, - - 14, 14, 14, 14, 14, 14, 14, 14, 14, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 69, - 69, 80, 80, 80, 589, 80, 157, 157, 157, 157, - 589, 157, 158, 158, 158, 589, 158, 158, 158, 158, - 158, 158, 160, 160, 160, 589, 160, 160, 160, 160, - 589, 160, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 171, 171, 589, 171, 171, 171, 171, 171, - - 171, 171, 173, 589, 173, 173, 173, 173, 173, 173, - 173, 173, 272, 272, 366, 366, 13, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589 + 48, 49, 50, 51, 52, 53, 54, 55, 54, 56, + 17, 17, 31, 32, 33, 34, 35, 36, 37, 38, + + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 17, 57, 58, + 59, 17, 17, 17, 17, 17, 112, 117, 118, 65, + 65, 17, 17, 17, 63, 63, 273, 273, 78, 75, + 76, 76, 273, 273, 83, 73, 72, 591, 591, 591, + 77, 591, 84, 591, 85, 112, 117, 118, 591, 86, + 17, 17, 17, 57, 58, 59, 17, 17, 17, 17, + 17, 66, 66, 83, 102, 113, 17, 17, 17, 77, + 87, 84, 97, 85, 88, 123, 98, 89, 86, 114, + 99, 124, 135, 115, 591, 103, 100, 104, 116, 101, + + 90, 591, 591, 153, 113, 17, 17, 105, 591, 87, + 591, 97, 591, 88, 123, 98, 89, 125, 114, 99, + 124, 135, 115, 126, 103, 100, 104, 116, 101, 90, + 91, 119, 153, 154, 155, 120, 105, 92, 132, 121, + 156, 127, 133, 179, 93, 122, 125, 94, 95, 128, + 96, 591, 126, 129, 182, 134, 130, 131, 591, 91, + 119, 183, 154, 155, 120, 591, 92, 132, 121, 156, + 127, 133, 179, 93, 122, 591, 94, 95, 128, 96, + 106, 591, 129, 182, 134, 130, 131, 150, 107, 151, + 183, 108, 152, 180, 109, 140, 184, 110, 136, 591, + + 111, 181, 137, 141, 74, 74, 138, 591, 591, 106, + 142, 143, 139, 591, 77, 185, 150, 107, 151, 187, + 108, 152, 180, 109, 140, 184, 110, 136, 186, 111, + 181, 137, 141, 591, 188, 138, 176, 176, 591, 142, + 143, 139, 144, 77, 185, 194, 77, 189, 187, 145, + 146, 190, 195, 75, 76, 76, 147, 186, 196, 148, + 203, 197, 149, 188, 77, 191, 198, 192, 204, 193, + 591, 144, 591, 591, 194, 77, 189, 205, 145, 146, + 190, 195, 591, 206, 207, 147, 591, 196, 148, 203, + 197, 149, 164, 77, 191, 198, 192, 204, 193, 199, + + 165, 166, 200, 208, 210, 211, 205, 167, 201, 212, + 213, 168, 206, 207, 209, 202, 214, 215, 216, 169, + 217, 218, 220, 170, 219, 171, 591, 225, 199, 172, + 226, 200, 208, 210, 211, 227, 167, 201, 212, 213, + 168, 591, 591, 209, 202, 214, 215, 216, 169, 217, + 218, 220, 170, 219, 171, 221, 225, 228, 172, 226, + 229, 231, 230, 232, 227, 222, 233, 234, 235, 236, + 223, 224, 237, 238, 239, 240, 241, 242, 244, 245, + 249, 243, 246, 250, 221, 254, 228, 247, 248, 229, + 231, 230, 232, 591, 222, 233, 234, 235, 236, 223, + + 224, 237, 238, 239, 240, 241, 242, 244, 245, 249, + 243, 246, 250, 251, 254, 255, 247, 248, 256, 257, + 258, 259, 252, 260, 261, 262, 264, 265, 266, 268, + 253, 269, 263, 271, 267, 176, 176, 270, 275, 276, + 277, 278, 251, 279, 255, 77, 284, 256, 257, 258, + 259, 252, 260, 261, 262, 264, 265, 266, 268, 253, + 269, 263, 271, 267, 280, 282, 270, 275, 276, 277, + 278, 285, 279, 286, 77, 284, 281, 287, 288, 289, + 283, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 280, 282, 302, 303, 304, 305, 306, + + 285, 307, 286, 308, 309, 281, 287, 288, 289, 283, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 310, 311, 302, 303, 304, 305, 306, 312, + 307, 313, 308, 309, 314, 315, 316, 317, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 318, 328, 329, + 330, 310, 311, 331, 332, 333, 336, 334, 312, 335, + 313, 337, 338, 314, 315, 316, 317, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 318, 328, 329, 330, + 339, 340, 331, 332, 333, 336, 334, 341, 335, 342, + 337, 338, 344, 345, 346, 347, 349, 350, 351, 343, + + 352, 353, 354, 355, 356, 348, 357, 358, 359, 339, + 340, 360, 361, 362, 364, 365, 341, 363, 342, 366, + 369, 344, 345, 346, 347, 349, 350, 351, 370, 352, + 353, 354, 355, 356, 348, 357, 358, 359, 371, 372, + 360, 361, 362, 364, 365, 373, 363, 374, 366, 369, + 375, 376, 377, 378, 379, 380, 381, 370, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 371, 372, 391, + 392, 393, 394, 395, 373, 396, 374, 397, 398, 375, + 376, 377, 378, 379, 380, 381, 399, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 400, 401, 391, 392, + + 393, 394, 395, 402, 396, 404, 397, 398, 405, 406, + 407, 408, 409, 410, 403, 399, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 400, 401, 420, 421, 422, + 423, 424, 402, 425, 404, 426, 427, 405, 406, 407, + 408, 409, 410, 403, 428, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 429, 430, 420, 421, 422, 423, + 424, 431, 425, 432, 426, 427, 433, 434, 435, 436, + 437, 438, 439, 428, 440, 441, 442, 443, 445, 446, + 444, 447, 448, 429, 430, 449, 450, 451, 452, 453, + 431, 454, 432, 455, 456, 433, 434, 435, 436, 437, + + 438, 439, 457, 440, 441, 442, 443, 445, 446, 444, + 447, 448, 458, 459, 449, 450, 451, 452, 453, 460, + 454, 461, 455, 456, 462, 463, 464, 465, 468, 466, + 469, 457, 467, 470, 471, 472, 473, 474, 475, 476, + 477, 458, 459, 478, 479, 480, 481, 482, 460, 483, + 461, 484, 485, 462, 463, 464, 465, 468, 466, 469, + 486, 467, 470, 471, 472, 473, 474, 475, 476, 477, + 487, 488, 478, 479, 480, 481, 482, 489, 483, 490, + 484, 485, 491, 492, 493, 494, 495, 496, 497, 486, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 487, + + 488, 507, 508, 509, 510, 511, 489, 512, 490, 513, + 514, 491, 492, 493, 494, 495, 496, 497, 515, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 516, 517, + 507, 508, 509, 510, 511, 518, 512, 519, 513, 514, + 520, 521, 522, 523, 524, 525, 526, 515, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 516, 517, 536, + 537, 538, 539, 540, 518, 541, 519, 542, 543, 520, + 521, 522, 523, 524, 525, 526, 544, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 545, 546, 536, 537, + 538, 539, 540, 547, 541, 548, 542, 543, 549, 550, + + 551, 552, 553, 554, 555, 544, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 545, 546, 565, 566, 567, + 568, 569, 547, 570, 548, 571, 572, 549, 550, 551, + 552, 553, 554, 555, 573, 556, 557, 558, 559, 560, + 561, 562, 563, 564, 574, 575, 565, 566, 567, 568, + 569, 576, 570, 577, 571, 572, 578, 579, 580, 581, + 582, 583, 584, 573, 585, 586, 587, 588, 589, 590, + 591, 591, 591, 574, 575, 591, 591, 591, 591, 591, + 576, 591, 577, 591, 591, 578, 579, 580, 581, 582, + 583, 584, 591, 585, 586, 587, 588, 589, 590, 14, + + 14, 14, 14, 14, 14, 14, 14, 14, 14, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 70, + 70, 82, 82, 82, 591, 82, 159, 159, 159, 159, + 591, 159, 160, 160, 160, 591, 160, 160, 160, 160, + 160, 160, 162, 162, 162, 591, 162, 162, 162, 162, + 591, 162, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 173, 173, 591, 173, 173, 173, 173, 173, + + 173, 173, 175, 591, 175, 175, 175, 175, 175, 175, + 175, 175, 274, 274, 368, 368, 13, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591 } ; static const flex_int16_t yy_chk[1389] = { 0, - 0, 155, 1, 2, 7, 8, 57, 57, 11, 7, - 8, 11, 12, 68, 18, 12, 18, 25, 25, 27, - 27, 58, 58, 70, 62, 70, 76, 76, 56, 76, - 76, 156, 156, 163, 163, 164, 164, 175, 175, 176, - 176, 270, 270, 29, 1, 2, 3, 3, 3, 3, + 0, 157, 1, 2, 7, 8, 58, 58, 11, 7, + 8, 11, 12, 69, 18, 12, 18, 25, 25, 28, + 28, 59, 59, 71, 63, 71, 77, 77, 57, 77, + 77, 158, 158, 165, 165, 166, 166, 177, 177, 178, + 178, 272, 272, 30, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -1026,149 +1028,149 @@ static const flex_int16_t yy_chk[1389] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 36, 39, 40, 9, - 10, 5, 5, 5, 9, 10, 271, 271, 24, 26, - 26, 26, 365, 365, 30, 20, 13, 0, 0, 0, - 26, 0, 30, 0, 30, 36, 39, 40, 0, 30, + 5, 5, 5, 5, 5, 5, 37, 40, 41, 9, + 10, 5, 5, 5, 9, 10, 273, 273, 27, 26, + 26, 26, 367, 367, 31, 24, 20, 13, 0, 0, + 26, 0, 31, 0, 31, 37, 40, 41, 0, 31, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 9, 10, 30, 34, 37, 6, 6, 6, 26, - 31, 30, 33, 30, 31, 42, 33, 31, 30, 37, - 33, 42, 46, 38, 0, 34, 33, 34, 38, 33, - - 31, 0, 0, 51, 37, 6, 6, 34, 0, 31, - 0, 33, 0, 31, 42, 33, 31, 43, 37, 33, - 42, 46, 38, 43, 34, 33, 34, 38, 33, 31, - 32, 41, 51, 52, 52, 41, 34, 32, 45, 41, - 54, 44, 45, 81, 32, 41, 43, 32, 32, 44, - 32, 0, 43, 44, 83, 45, 44, 44, 0, 32, - 41, 84, 52, 52, 41, 0, 32, 45, 41, 54, - 44, 45, 81, 32, 41, 0, 32, 32, 44, 32, - 35, 0, 44, 83, 45, 44, 44, 50, 35, 50, - 84, 35, 50, 82, 35, 48, 85, 35, 47, 0, - - 35, 82, 47, 48, 73, 73, 47, 0, 0, 35, - 48, 48, 47, 0, 73, 86, 50, 35, 50, 87, - 35, 50, 82, 35, 48, 85, 35, 47, 86, 35, - 82, 47, 48, 0, 89, 47, 74, 74, 0, 48, - 48, 47, 49, 73, 86, 92, 74, 90, 87, 49, - 49, 90, 93, 75, 75, 75, 49, 86, 94, 49, - 97, 95, 49, 89, 75, 91, 95, 91, 98, 91, - 0, 49, 0, 0, 92, 74, 90, 99, 49, 49, - 90, 93, 0, 101, 102, 49, 0, 94, 49, 97, - 95, 49, 65, 75, 91, 95, 91, 98, 91, 96, - - 65, 65, 96, 103, 104, 105, 99, 65, 96, 106, - 107, 65, 101, 102, 103, 96, 107, 108, 109, 65, - 110, 111, 112, 65, 111, 65, 0, 115, 96, 65, - 116, 96, 103, 104, 105, 117, 65, 96, 106, 107, - 65, 0, 0, 103, 96, 107, 108, 109, 65, 110, - 111, 112, 65, 111, 65, 113, 115, 118, 65, 116, - 119, 120, 119, 121, 117, 113, 122, 123, 124, 125, - 113, 113, 127, 128, 129, 130, 131, 132, 133, 134, - 136, 132, 135, 137, 113, 139, 118, 135, 135, 119, - 120, 119, 121, 0, 113, 122, 123, 124, 125, 113, - - 113, 127, 128, 129, 130, 131, 132, 133, 134, 136, - 132, 135, 137, 138, 139, 140, 135, 135, 141, 142, - 143, 144, 138, 146, 147, 148, 149, 150, 151, 152, - 138, 153, 148, 154, 151, 174, 174, 153, 179, 181, - 182, 183, 138, 184, 140, 174, 187, 141, 142, 143, - 144, 138, 146, 147, 148, 149, 150, 151, 152, 138, - 153, 148, 154, 151, 185, 186, 153, 179, 181, 182, - 183, 188, 184, 189, 174, 187, 185, 190, 191, 192, - 186, 193, 194, 195, 197, 198, 199, 200, 201, 202, - 203, 204, 206, 185, 186, 207, 208, 209, 210, 211, - - 188, 212, 189, 213, 214, 185, 190, 191, 192, 186, - 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, - 204, 206, 215, 216, 207, 208, 209, 210, 211, 217, - 212, 218, 213, 214, 219, 220, 221, 222, 223, 225, - 226, 227, 228, 229, 230, 231, 233, 222, 235, 236, - 237, 215, 216, 238, 239, 240, 242, 241, 217, 241, - 218, 243, 244, 219, 220, 221, 222, 223, 225, 226, - 227, 228, 229, 230, 231, 233, 222, 235, 236, 237, - 245, 246, 238, 239, 240, 242, 241, 247, 241, 248, - 243, 244, 249, 250, 252, 253, 254, 255, 256, 248, - - 257, 258, 259, 260, 261, 253, 261, 262, 263, 245, - 246, 264, 265, 266, 267, 268, 247, 266, 248, 269, - 273, 249, 250, 252, 253, 254, 255, 256, 274, 257, - 258, 259, 260, 261, 253, 261, 262, 263, 275, 276, - 264, 265, 266, 267, 268, 277, 266, 278, 269, 273, - 279, 282, 283, 284, 285, 287, 288, 274, 289, 290, - 291, 292, 293, 294, 295, 296, 299, 275, 276, 300, - 301, 302, 303, 304, 277, 305, 278, 308, 310, 279, - 282, 283, 284, 285, 287, 288, 312, 289, 290, 291, - 292, 293, 294, 295, 296, 299, 313, 314, 300, 301, - - 302, 303, 304, 315, 305, 321, 308, 310, 323, 324, - 325, 326, 327, 329, 315, 312, 330, 331, 332, 333, - 335, 337, 338, 339, 341, 313, 314, 342, 343, 344, - 345, 346, 315, 347, 321, 348, 350, 323, 324, 325, - 326, 327, 329, 315, 352, 330, 331, 332, 333, 335, - 337, 338, 339, 341, 353, 354, 342, 343, 344, 345, - 346, 355, 347, 356, 348, 350, 357, 358, 359, 361, - 362, 364, 368, 352, 369, 370, 371, 372, 373, 374, - 372, 376, 377, 353, 354, 378, 379, 380, 381, 382, - 355, 383, 356, 384, 385, 357, 358, 359, 361, 362, - - 364, 368, 386, 369, 370, 371, 372, 373, 374, 372, - 376, 377, 387, 388, 378, 379, 380, 381, 382, 389, - 383, 393, 384, 385, 394, 396, 399, 400, 403, 401, - 408, 386, 401, 409, 410, 411, 412, 414, 415, 417, - 418, 387, 388, 419, 420, 421, 422, 423, 389, 425, - 393, 426, 427, 394, 396, 399, 400, 403, 401, 408, - 429, 401, 409, 410, 411, 412, 414, 415, 417, 418, - 430, 432, 419, 420, 421, 422, 423, 433, 425, 435, - 426, 427, 436, 437, 438, 440, 441, 442, 443, 429, - 444, 446, 448, 449, 450, 451, 452, 454, 455, 430, - - 432, 458, 459, 460, 463, 464, 433, 465, 435, 467, - 468, 436, 437, 438, 440, 441, 442, 443, 469, 444, - 446, 448, 449, 450, 451, 452, 454, 455, 470, 471, - 458, 459, 460, 463, 464, 472, 465, 474, 467, 468, - 477, 480, 481, 482, 483, 487, 489, 469, 490, 492, - 493, 494, 495, 496, 497, 500, 503, 470, 471, 504, - 506, 509, 510, 511, 472, 513, 474, 515, 516, 477, - 480, 481, 482, 483, 487, 489, 517, 490, 492, 493, - 494, 495, 496, 497, 500, 503, 518, 519, 504, 506, - 509, 510, 511, 520, 513, 521, 515, 516, 522, 524, - - 525, 526, 527, 528, 529, 517, 530, 531, 533, 535, - 536, 538, 539, 541, 542, 518, 519, 544, 545, 546, - 547, 548, 520, 550, 521, 551, 552, 522, 524, 525, - 526, 527, 528, 529, 553, 530, 531, 533, 535, 536, - 538, 539, 541, 542, 555, 556, 544, 545, 546, 547, - 548, 559, 550, 561, 551, 552, 562, 565, 569, 570, - 571, 576, 577, 553, 578, 581, 583, 584, 585, 587, - 0, 0, 0, 555, 556, 0, 0, 0, 0, 0, - 559, 0, 561, 0, 0, 562, 565, 569, 570, 571, - 576, 577, 0, 578, 581, 583, 584, 585, 587, 590, - - 590, 590, 590, 590, 590, 590, 590, 590, 590, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 592, + 6, 9, 10, 31, 35, 38, 6, 6, 6, 26, + 32, 31, 34, 31, 32, 43, 34, 32, 31, 38, + 34, 43, 47, 39, 0, 35, 34, 35, 39, 34, + + 32, 0, 0, 52, 38, 6, 6, 35, 0, 32, + 0, 34, 0, 32, 43, 34, 32, 44, 38, 34, + 43, 47, 39, 44, 35, 34, 35, 39, 34, 32, + 33, 42, 52, 53, 53, 42, 35, 33, 46, 42, + 55, 45, 46, 83, 33, 42, 44, 33, 33, 45, + 33, 0, 44, 45, 85, 46, 45, 45, 0, 33, + 42, 86, 53, 53, 42, 0, 33, 46, 42, 55, + 45, 46, 83, 33, 42, 0, 33, 33, 45, 33, + 36, 0, 45, 85, 46, 45, 45, 51, 36, 51, + 86, 36, 51, 84, 36, 49, 87, 36, 48, 0, + + 36, 84, 48, 49, 74, 74, 48, 0, 0, 36, + 49, 49, 48, 0, 74, 88, 51, 36, 51, 89, + 36, 51, 84, 36, 49, 87, 36, 48, 88, 36, + 84, 48, 49, 0, 91, 48, 75, 75, 0, 49, + 49, 48, 50, 74, 88, 94, 75, 92, 89, 50, + 50, 92, 95, 76, 76, 76, 50, 88, 96, 50, + 99, 97, 50, 91, 76, 93, 97, 93, 100, 93, + 0, 50, 0, 0, 94, 75, 92, 101, 50, 50, + 92, 95, 0, 103, 104, 50, 0, 96, 50, 99, + 97, 50, 66, 76, 93, 97, 93, 100, 93, 98, + + 66, 66, 98, 105, 106, 107, 101, 66, 98, 108, + 109, 66, 103, 104, 105, 98, 109, 110, 111, 66, + 112, 113, 114, 66, 113, 66, 0, 117, 98, 66, + 118, 98, 105, 106, 107, 119, 66, 98, 108, 109, + 66, 0, 0, 105, 98, 109, 110, 111, 66, 112, + 113, 114, 66, 113, 66, 115, 117, 120, 66, 118, + 121, 122, 121, 123, 119, 115, 124, 125, 126, 127, + 115, 115, 129, 130, 131, 132, 133, 134, 135, 136, + 138, 134, 137, 139, 115, 141, 120, 137, 137, 121, + 122, 121, 123, 0, 115, 124, 125, 126, 127, 115, + + 115, 129, 130, 131, 132, 133, 134, 135, 136, 138, + 134, 137, 139, 140, 141, 142, 137, 137, 143, 144, + 145, 146, 140, 148, 149, 150, 151, 152, 153, 154, + 140, 155, 150, 156, 153, 176, 176, 155, 181, 183, + 184, 185, 140, 186, 142, 176, 189, 143, 144, 145, + 146, 140, 148, 149, 150, 151, 152, 153, 154, 140, + 155, 150, 156, 153, 187, 188, 155, 181, 183, 184, + 185, 190, 186, 191, 176, 189, 187, 192, 193, 194, + 188, 195, 196, 197, 199, 200, 201, 202, 203, 204, + 205, 206, 208, 187, 188, 209, 210, 211, 212, 213, + + 190, 214, 191, 215, 216, 187, 192, 193, 194, 188, + 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, + 206, 208, 217, 218, 209, 210, 211, 212, 213, 219, + 214, 220, 215, 216, 221, 222, 223, 224, 225, 227, + 228, 229, 230, 231, 232, 233, 235, 224, 237, 238, + 239, 217, 218, 240, 241, 242, 244, 243, 219, 243, + 220, 245, 246, 221, 222, 223, 224, 225, 227, 228, + 229, 230, 231, 232, 233, 235, 224, 237, 238, 239, + 247, 248, 240, 241, 242, 244, 243, 249, 243, 250, + 245, 246, 251, 252, 254, 255, 256, 257, 258, 250, + + 259, 260, 261, 262, 263, 255, 263, 264, 265, 247, + 248, 266, 267, 268, 269, 270, 249, 268, 250, 271, + 275, 251, 252, 254, 255, 256, 257, 258, 276, 259, + 260, 261, 262, 263, 255, 263, 264, 265, 277, 278, + 266, 267, 268, 269, 270, 279, 268, 280, 271, 275, + 281, 284, 285, 286, 287, 289, 290, 276, 291, 292, + 293, 294, 295, 296, 297, 298, 301, 277, 278, 302, + 303, 304, 305, 306, 279, 307, 280, 310, 312, 281, + 284, 285, 286, 287, 289, 290, 314, 291, 292, 293, + 294, 295, 296, 297, 298, 301, 315, 316, 302, 303, + + 304, 305, 306, 317, 307, 323, 310, 312, 325, 326, + 327, 328, 329, 331, 317, 314, 332, 333, 334, 335, + 337, 339, 340, 341, 343, 315, 316, 344, 345, 346, + 347, 348, 317, 349, 323, 350, 352, 325, 326, 327, + 328, 329, 331, 317, 354, 332, 333, 334, 335, 337, + 339, 340, 341, 343, 355, 356, 344, 345, 346, 347, + 348, 357, 349, 358, 350, 352, 359, 360, 361, 363, + 364, 366, 370, 354, 371, 372, 373, 374, 375, 376, + 374, 378, 379, 355, 356, 380, 381, 382, 383, 384, + 357, 385, 358, 386, 387, 359, 360, 361, 363, 364, + + 366, 370, 388, 371, 372, 373, 374, 375, 376, 374, + 378, 379, 389, 390, 380, 381, 382, 383, 384, 391, + 385, 395, 386, 387, 396, 398, 401, 402, 405, 403, + 410, 388, 403, 411, 412, 413, 414, 416, 417, 419, + 420, 389, 390, 421, 422, 423, 424, 425, 391, 427, + 395, 428, 429, 396, 398, 401, 402, 405, 403, 410, + 431, 403, 411, 412, 413, 414, 416, 417, 419, 420, + 432, 434, 421, 422, 423, 424, 425, 435, 427, 437, + 428, 429, 438, 439, 440, 442, 443, 444, 445, 431, + 446, 448, 450, 451, 452, 453, 454, 456, 457, 432, + + 434, 460, 461, 462, 465, 466, 435, 467, 437, 469, + 470, 438, 439, 440, 442, 443, 444, 445, 471, 446, + 448, 450, 451, 452, 453, 454, 456, 457, 472, 473, + 460, 461, 462, 465, 466, 474, 467, 476, 469, 470, + 479, 482, 483, 484, 485, 489, 491, 471, 492, 494, + 495, 496, 497, 498, 499, 502, 505, 472, 473, 506, + 508, 511, 512, 513, 474, 515, 476, 517, 518, 479, + 482, 483, 484, 485, 489, 491, 519, 492, 494, 495, + 496, 497, 498, 499, 502, 505, 520, 521, 506, 508, + 511, 512, 513, 522, 515, 523, 517, 518, 524, 526, + + 527, 528, 529, 530, 531, 519, 532, 533, 535, 537, + 538, 540, 541, 543, 544, 520, 521, 546, 547, 548, + 549, 550, 522, 552, 523, 553, 554, 524, 526, 527, + 528, 529, 530, 531, 555, 532, 533, 535, 537, 538, + 540, 541, 543, 544, 557, 558, 546, 547, 548, 549, + 550, 561, 552, 563, 553, 554, 564, 567, 571, 572, + 573, 578, 579, 555, 580, 583, 585, 586, 587, 589, + 0, 0, 0, 557, 558, 0, 0, 0, 0, 0, + 561, 0, 563, 0, 0, 564, 567, 571, 572, 573, + 578, 579, 0, 580, 583, 585, 586, 587, 589, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 595, - 595, 596, 596, 596, 0, 596, 597, 597, 597, 597, - 0, 597, 598, 598, 598, 0, 598, 598, 598, 598, - 598, 598, 599, 599, 599, 0, 599, 599, 599, 599, - 0, 599, 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 601, 601, 0, 601, 601, 601, 601, 601, - - 601, 601, 602, 0, 602, 602, 602, 602, 602, 602, - 602, 602, 603, 603, 604, 604, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589 + 595, 595, 595, 595, 595, 595, 595, 595, 595, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, + 597, 598, 598, 598, 0, 598, 599, 599, 599, 599, + 0, 599, 600, 600, 600, 0, 600, 600, 600, 600, + 600, 600, 601, 601, 601, 0, 601, 601, 601, 601, + 0, 601, 602, 602, 602, 602, 602, 602, 602, 602, + 602, 602, 603, 603, 0, 603, 603, 603, 603, 603, + + 603, 603, 604, 0, 604, 604, 604, 604, 604, 604, + 604, 604, 605, 605, 606, 606, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591 } ; /* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[166] = +static const flex_int32_t yy_rule_can_match_eol[167] = { 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1177,8 +1179,8 @@ static const flex_int32_t yy_rule_can_match_eol[166] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, - 0, 0, 1, 0, 0, 0, }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, }; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -1289,14 +1291,14 @@ class UnaryOperation; yycolumn += yyleng; \ } -#line 1292 "SqlLexer_gen.cpp" +#line 1294 "SqlLexer_gen.cpp" /* FIXME(chasseur, qzeng): Add support for hexadecimal literals. */ /** * These patterns are based on the SQL-2011 standard for syntax of numeric * literals (Part 2, Section 5.3 of the standard). **/ -#line 1299 "SqlLexer_gen.cpp" +#line 1301 "SqlLexer_gen.cpp" #define INITIAL 0 #define CONDITION_SQL 1 @@ -1586,7 +1588,7 @@ YY_DECL #line 132 "../SqlLexer.lpp" -#line 1589 "SqlLexer_gen.cpp" +#line 1591 "SqlLexer_gen.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1613,13 +1615,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 590 ) + if ( yy_current_state >= 592 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 589 ); + while ( yy_current_state != 591 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2362,37 +2364,42 @@ return TOKEN_GEQ; YY_BREAK case 137: YY_RULE_SETUP -#line 305 "../SqlLexer.lpp" -return yytext[0]; +#line 304 "../SqlLexer.lpp" +return TOKEN_DOUBLECOLON; YY_BREAK case 138: YY_RULE_SETUP #line 306 "../SqlLexer.lpp" return yytext[0]; YY_BREAK +case 139: +YY_RULE_SETUP +#line 307 "../SqlLexer.lpp" +return yytext[0]; + YY_BREAK /** * Quoted strings. Prefacing a string with an 'e' or 'E' causes escape * sequences to be processed (as in PostgreSQL). **/ -case 139: +case 140: YY_RULE_SETUP -#line 312 "../SqlLexer.lpp" +#line 313 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_SINGLE_QUOTED_ESCAPED); } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 317 "../SqlLexer.lpp" +#line 318 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_SINGLE_QUOTED); } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 322 "../SqlLexer.lpp" +#line 323 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_DOUBLE_QUOTED); @@ -2404,7 +2411,7 @@ YY_RULE_SETUP case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED): case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED_ESCAPED): case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED): -#line 331 "../SqlLexer.lpp" +#line 332 "../SqlLexer.lpp" { delete yylval->string_value_; BEGIN(INITIAL); @@ -2415,9 +2422,9 @@ case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED): /* Process escape sequences. */ -case 142: +case 143: YY_RULE_SETUP -#line 341 "../SqlLexer.lpp" +#line 342 "../SqlLexer.lpp" { /* Octal code */ unsigned int code; @@ -2431,9 +2438,9 @@ YY_RULE_SETUP yylval->string_value_->push_back(code); } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 353 "../SqlLexer.lpp" +#line 354 "../SqlLexer.lpp" { /* Hexadecimal code */ unsigned int code; @@ -2441,9 +2448,9 @@ YY_RULE_SETUP yylval->string_value_->push_back(code); } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 359 "../SqlLexer.lpp" +#line 360 "../SqlLexer.lpp" { /* A numeric escape sequence that isn't correctly specified. */ delete yylval->string_value_; @@ -2452,58 +2459,58 @@ YY_RULE_SETUP return TOKEN_LEX_ERROR; } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 366 "../SqlLexer.lpp" +#line 367 "../SqlLexer.lpp" { /* Backspace */ yylval->string_value_->push_back('\b'); } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 370 "../SqlLexer.lpp" +#line 371 "../SqlLexer.lpp" { /* Form-feed */ yylval->string_value_->push_back('\f'); } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 374 "../SqlLexer.lpp" +#line 375 "../SqlLexer.lpp" { /* Newline */ yylval->string_value_->push_back('\n'); } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 378 "../SqlLexer.lpp" +#line 379 "../SqlLexer.lpp" { /* Carriage-return */ yylval->string_value_->push_back('\r'); } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 382 "../SqlLexer.lpp" +#line 383 "../SqlLexer.lpp" { /* Horizontal Tab */ yylval->string_value_->push_back('\t'); } YY_BREAK -case 150: -/* rule 150 can match eol */ +case 151: +/* rule 151 can match eol */ YY_RULE_SETUP -#line 386 "../SqlLexer.lpp" +#line 387 "../SqlLexer.lpp" { /* Any other character (including actual newline or carriage return) */ yylval->string_value_->push_back(yytext[1]); } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 390 "../SqlLexer.lpp" +#line 391 "../SqlLexer.lpp" { /* This should only be encountered right before an EOF. */ delete yylval->string_value_; @@ -2514,17 +2521,17 @@ YY_RULE_SETUP YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 400 "../SqlLexer.lpp" +#line 401 "../SqlLexer.lpp" { /* Two quotes in a row become a single quote (this is specified by the SQL standard). */ yylval->string_value_->push_back('\''); } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 404 "../SqlLexer.lpp" +#line 405 "../SqlLexer.lpp" { /* End string */ BEGIN(CONDITION_SQL); @@ -2533,17 +2540,17 @@ YY_RULE_SETUP YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 412 "../SqlLexer.lpp" +#line 413 "../SqlLexer.lpp" { /* Two quotes in a row become a single quote (this is specified by the SQL standard). */ yylval->string_value_->push_back('"'); } YY_BREAK -case 155: +case 156: YY_RULE_SETUP -#line 416 "../SqlLexer.lpp" +#line 417 "../SqlLexer.lpp" { /* End string */ BEGIN(CONDITION_SQL); @@ -2551,94 +2558,94 @@ YY_RULE_SETUP } YY_BREAK -case 156: -/* rule 156 can match eol */ +case 157: +/* rule 157 can match eol */ YY_RULE_SETUP -#line 423 "../SqlLexer.lpp" +#line 424 "../SqlLexer.lpp" { /* Scan up to a quote. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 157: -/* rule 157 can match eol */ +case 158: +/* rule 158 can match eol */ YY_RULE_SETUP -#line 428 "../SqlLexer.lpp" +#line 429 "../SqlLexer.lpp" { /* Scan up to a quote or escape sequence. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 158: -/* rule 158 can match eol */ +case 159: +/* rule 159 can match eol */ YY_RULE_SETUP -#line 433 "../SqlLexer.lpp" +#line 434 "../SqlLexer.lpp" { /* Scan up to a quote. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 439 "../SqlLexer.lpp" +#line 440 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString( yylloc->first_line, yylloc->first_column, std::string(yytext, yyleng)); return TOKEN_NAME; } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 445 "../SqlLexer.lpp" +#line 446 "../SqlLexer.lpp" { yylval->numeric_literal_value_ = new quickstep::NumericParseLiteralValue( yylloc->first_line, yylloc->first_column, yytext); return TOKEN_UNSIGNED_NUMVAL; } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 451 "../SqlLexer.lpp" +#line 452 "../SqlLexer.lpp" /* comment */ YY_BREAK -case 162: -/* rule 162 can match eol */ +case 163: +/* rule 163 can match eol */ YY_RULE_SETUP -#line 453 "../SqlLexer.lpp" +#line 454 "../SqlLexer.lpp" { yycolumn = 0; } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 455 "../SqlLexer.lpp" +#line 456 "../SqlLexer.lpp" ; /* ignore white space */ YY_BREAK /* CONDITION_SQL */ case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(CONDITION_COMMAND): case YY_STATE_EOF(CONDITION_SQL): -#line 459 "../SqlLexer.lpp" +#line 460 "../SqlLexer.lpp" { /* All conditions except for mutli-state string extracting conditions. */ BEGIN(INITIAL); return TOKEN_EOF; } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 465 "../SqlLexer.lpp" +#line 466 "../SqlLexer.lpp" { BEGIN(INITIAL); quickstep_yyerror(NULL, yyscanner, NULL, "illegal character"); return TOKEN_LEX_ERROR; } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 471 "../SqlLexer.lpp" +#line 472 "../SqlLexer.lpp" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2641 "SqlLexer_gen.cpp" +#line 2648 "SqlLexer_gen.cpp" case YY_END_OF_BUFFER: { @@ -2936,7 +2943,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 590 ) + if ( yy_current_state >= 592 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2965,11 +2972,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 590 ) + if ( yy_current_state >= 592 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 589); + yy_is_jam = (yy_current_state == 591); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -3799,6 +3806,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 471 "../SqlLexer.lpp" +#line 472 "../SqlLexer.lpp" http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/02005508/parser/preprocessed/SqlLexer_gen.hpp ---------------------------------------------------------------------- diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp index 479b72d..9990de6 100644 --- a/parser/preprocessed/SqlLexer_gen.hpp +++ b/parser/preprocessed/SqlLexer_gen.hpp @@ -733,7 +733,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 471 "../SqlLexer.lpp" +#line 472 "../SqlLexer.lpp" #line 739 "SqlLexer_gen.hpp"
