Kouhei Sutou
null+****@clear*****
Fri Oct 19 16:09:41 JST 2012
Kouhei Sutou 2012-10-19 16:09:41 +0900 (Fri, 19 Oct 2012) New Revision: 4ecb9c484159ff621cde6159621268ffee9f68c8 https://github.com/groonga/groonga/commit/4ecb9c484159ff621cde6159621268ffee9f68c8 Merged 2fbecbf: Merge pull request #36 from groonga/accept-star-in-output-columns Log: Allow * in output_columns Script syntax based output_columns doesn't accept "_id, _key, *" becuase "*" isn't valid script syntax. This change adds the new sytax "output_columns" that is similar to "expression" syntax but it accepts "*". Modified files: include/groonga.h lib/ecmascript.c lib/ecmascript.h lib/ecmascript.y lib/expr.c lib/proc.c Modified: include/groonga.h (+3 -1) =================================================================== --- include/groonga.h 2012-10-24 09:49:21 +0900 (b872f34) +++ include/groonga.h 2012-10-19 16:09:41 +0900 (a10fc5f) @@ -1178,7 +1178,8 @@ typedef enum { GRN_OP_TABLE_SELECT, GRN_OP_TABLE_SORT, GRN_OP_TABLE_GROUP, - GRN_OP_JSON_PUT + GRN_OP_JSON_PUT, + GRN_OP_ALL_COLUMNS } grn_operator; struct _grn_table_group_result { @@ -2597,6 +2598,7 @@ typedef unsigned int grn_expr_flags; #define GRN_EXPR_SYNTAX_QUERY (0x00) #define GRN_EXPR_SYNTAX_SCRIPT (0x01) +#define GRN_EXPR_SYNTAX_OUTPUT_COLUMNS (0x20) #define GRN_EXPR_ALLOW_PRAGMA (0x02) #define GRN_EXPR_ALLOW_COLUMN (0x04) #define GRN_EXPR_ALLOW_UPDATE (0x08) Modified: lib/ecmascript.c (+900 -859) =================================================================== --- lib/ecmascript.c 2012-10-24 09:49:21 +0900 (7405be0) +++ lib/ecmascript.c 2012-10-19 16:09:41 +0900 (abeedfb) @@ -58,7 +58,7 @@ ** defined, then do no error processing. */ #define YYCODETYPE unsigned char -#define YYNOCODE 104 +#define YYNOCODE 107 #define YYACTIONTYPE unsigned short int #define grn_expr_parserTOKENTYPE int typedef union { @@ -72,8 +72,8 @@ typedef union { #define grn_expr_parserARG_PDECL , efs_info *efsi #define grn_expr_parserARG_FETCH efs_info *efsi = yypParser->efsi #define grn_expr_parserARG_STORE yypParser->efsi = efsi -#define YYNSTATE 204 -#define YYNRULE 117 +#define YYNSTATE 211 +#define YYNRULE 122 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) #define YY_ERROR_ACTION (YYNSTATE+YYNRULE) @@ -142,404 +142,423 @@ static const YYMINORTYPE yyzerominor = { 0 }; ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. */ -#define YY_ACTTAB_COUNT (1683) +#define YY_ACTTAB_COUNT (1762) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 322, 72, 101, 200, 170, 173, 194, 80, 115, 114, - /* 10 */ 123, 122, 121, 109, 81, 94, 105, 95, 159, 190, - /* 20 */ 176, 70, 29, 28, 169, 165, 71, 107, 200, 170, - /* 30 */ 173, 194, 80, 115, 114, 123, 122, 121, 109, 81, - /* 40 */ 94, 105, 95, 159, 190, 176, 70, 34, 33, 169, - /* 50 */ 165, 201, 1, 74, 75, 117, 3, 116, 67, 170, - /* 60 */ 173, 194, 80, 115, 114, 123, 122, 121, 109, 81, - /* 70 */ 94, 105, 95, 159, 190, 176, 70, 52, 51, 169, - /* 80 */ 165, 201, 68, 104, 75, 128, 7, 4, 67, 50, - /* 90 */ 49, 48, 66, 54, 53, 62, 61, 196, 152, 26, - /* 100 */ 65, 64, 63, 60, 59, 58, 57, 56, 55, 164, - /* 110 */ 163, 162, 161, 160, 2, 5, 178, 177, 166, 79, - /* 120 */ 23, 155, 157, 69, 30, 170, 147, 194, 80, 115, - /* 130 */ 114, 123, 122, 121, 109, 81, 94, 105, 95, 159, - /* 140 */ 190, 176, 70, 154, 120, 169, 165, 9, 78, 6, - /* 150 */ 26, 119, 152, 31, 152, 168, 175, 174, 62, 61, - /* 160 */ 131, 26, 27, 65, 64, 63, 60, 59, 58, 57, - /* 170 */ 56, 55, 164, 163, 162, 161, 160, 2, 158, 5, - /* 180 */ 169, 165, 166, 79, 24, 116, 157, 170, 173, 194, - /* 190 */ 80, 115, 114, 123, 122, 121, 109, 81, 94, 105, - /* 200 */ 95, 159, 190, 176, 70, 32, 172, 169, 165, 47, - /* 210 */ 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, - /* 220 */ 36, 35, 62, 61, 71, 22, 200, 65, 64, 63, - /* 230 */ 60, 59, 58, 57, 56, 55, 164, 163, 162, 161, - /* 240 */ 160, 2, 151, 110, 146, 170, 173, 194, 80, 115, - /* 250 */ 114, 123, 122, 121, 109, 81, 94, 105, 95, 159, - /* 260 */ 190, 176, 70, 104, 8, 169, 165, 107, 148, 170, - /* 270 */ 173, 194, 80, 115, 114, 123, 122, 121, 109, 81, - /* 280 */ 94, 105, 95, 159, 190, 176, 70, 145, 5, 169, - /* 290 */ 165, 166, 79, 21, 202, 148, 199, 323, 170, 143, - /* 300 */ 194, 80, 115, 114, 123, 122, 121, 109, 81, 94, - /* 310 */ 105, 95, 159, 190, 176, 70, 205, 5, 169, 165, - /* 320 */ 166, 79, 198, 197, 149, 103, 130, 203, 26, 323, - /* 330 */ 323, 62, 61, 323, 323, 323, 65, 64, 63, 60, - /* 340 */ 59, 58, 57, 56, 55, 164, 163, 162, 161, 160, - /* 350 */ 2, 323, 323, 323, 323, 323, 323, 323, 323, 323, - /* 360 */ 62, 61, 323, 323, 323, 65, 64, 63, 60, 59, - /* 370 */ 58, 57, 56, 55, 164, 163, 162, 161, 160, 2, - /* 380 */ 170, 195, 194, 80, 115, 114, 123, 122, 121, 109, - /* 390 */ 81, 94, 105, 95, 159, 190, 176, 70, 323, 323, - /* 400 */ 169, 165, 323, 323, 323, 323, 323, 170, 193, 194, - /* 410 */ 80, 115, 114, 123, 122, 121, 109, 81, 94, 105, - /* 420 */ 95, 159, 190, 176, 70, 323, 323, 169, 165, 323, - /* 430 */ 323, 323, 323, 323, 323, 323, 170, 127, 194, 80, - /* 440 */ 115, 114, 123, 122, 121, 109, 81, 94, 105, 95, - /* 450 */ 159, 190, 176, 70, 323, 323, 169, 165, 170, 192, - /* 460 */ 194, 80, 115, 114, 123, 122, 121, 109, 81, 94, - /* 470 */ 105, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 480 */ 323, 323, 323, 170, 153, 194, 80, 115, 114, 123, - /* 490 */ 122, 121, 109, 81, 94, 105, 95, 159, 190, 176, - /* 500 */ 70, 323, 323, 169, 165, 323, 323, 323, 323, 323, - /* 510 */ 323, 323, 170, 144, 194, 80, 115, 114, 123, 122, - /* 520 */ 121, 109, 81, 94, 105, 95, 159, 190, 176, 70, - /* 530 */ 323, 323, 169, 165, 170, 142, 194, 80, 115, 114, - /* 540 */ 123, 122, 121, 109, 81, 94, 105, 95, 159, 190, - /* 550 */ 176, 70, 323, 323, 169, 165, 323, 323, 323, 170, - /* 560 */ 141, 194, 80, 115, 114, 123, 122, 121, 109, 81, - /* 570 */ 94, 105, 95, 159, 190, 176, 70, 323, 323, 169, - /* 580 */ 165, 323, 323, 323, 323, 323, 323, 323, 170, 140, - /* 590 */ 194, 80, 115, 114, 123, 122, 121, 109, 81, 94, - /* 600 */ 105, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 610 */ 170, 139, 194, 80, 115, 114, 123, 122, 121, 109, - /* 620 */ 81, 94, 105, 95, 159, 190, 176, 70, 323, 323, - /* 630 */ 169, 165, 323, 323, 323, 170, 138, 194, 80, 115, - /* 640 */ 114, 123, 122, 121, 109, 81, 94, 105, 95, 159, - /* 650 */ 190, 176, 70, 323, 323, 169, 165, 323, 323, 323, - /* 660 */ 323, 323, 323, 323, 170, 137, 194, 80, 115, 114, - /* 670 */ 123, 122, 121, 109, 81, 94, 105, 95, 159, 190, - /* 680 */ 176, 70, 323, 323, 169, 165, 170, 136, 194, 80, - /* 690 */ 115, 114, 123, 122, 121, 109, 81, 94, 105, 95, - /* 700 */ 159, 190, 176, 70, 323, 323, 169, 165, 323, 323, - /* 710 */ 323, 170, 135, 194, 80, 115, 114, 123, 122, 121, - /* 720 */ 109, 81, 94, 105, 95, 159, 190, 176, 70, 323, - /* 730 */ 323, 169, 165, 323, 323, 323, 323, 323, 323, 323, - /* 740 */ 170, 134, 194, 80, 115, 114, 123, 122, 121, 109, - /* 750 */ 81, 94, 105, 95, 159, 190, 176, 70, 323, 323, - /* 760 */ 169, 165, 170, 133, 194, 80, 115, 114, 123, 122, - /* 770 */ 121, 109, 81, 94, 105, 95, 159, 190, 176, 70, - /* 780 */ 323, 323, 169, 165, 323, 323, 323, 170, 132, 194, - /* 790 */ 80, 115, 114, 123, 122, 121, 109, 81, 94, 105, - /* 800 */ 95, 159, 190, 176, 70, 323, 323, 169, 165, 323, - /* 810 */ 323, 323, 323, 323, 323, 323, 170, 156, 194, 80, - /* 820 */ 115, 114, 123, 122, 121, 109, 81, 94, 105, 95, - /* 830 */ 159, 190, 176, 70, 323, 323, 169, 165, 170, 150, - /* 840 */ 194, 80, 115, 114, 123, 122, 121, 109, 81, 94, - /* 850 */ 105, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 860 */ 323, 323, 323, 170, 323, 323, 111, 323, 102, 123, - /* 870 */ 122, 121, 109, 81, 94, 105, 95, 159, 190, 176, - /* 880 */ 70, 323, 323, 169, 165, 323, 323, 323, 323, 323, - /* 890 */ 323, 323, 170, 323, 323, 111, 323, 323, 126, 122, - /* 900 */ 121, 109, 81, 94, 105, 95, 159, 190, 176, 70, - /* 910 */ 323, 323, 169, 165, 170, 323, 323, 111, 323, 323, - /* 920 */ 118, 122, 121, 109, 81, 94, 105, 95, 159, 190, - /* 930 */ 176, 70, 323, 323, 169, 165, 323, 323, 323, 170, - /* 940 */ 323, 323, 111, 323, 323, 323, 125, 121, 109, 81, - /* 950 */ 94, 105, 95, 159, 190, 176, 70, 323, 323, 169, - /* 960 */ 165, 25, 20, 19, 18, 17, 16, 15, 14, 13, - /* 970 */ 12, 11, 10, 323, 170, 323, 323, 111, 323, 323, - /* 980 */ 323, 323, 124, 109, 81, 94, 105, 95, 159, 190, - /* 990 */ 176, 70, 323, 323, 169, 165, 170, 323, 323, 111, - /* 1000 */ 323, 323, 178, 177, 323, 113, 81, 94, 105, 95, - /* 1010 */ 159, 190, 176, 70, 323, 170, 169, 165, 111, 323, - /* 1020 */ 323, 323, 323, 323, 323, 83, 94, 105, 95, 159, - /* 1030 */ 190, 176, 70, 323, 323, 169, 165, 170, 323, 323, - /* 1040 */ 111, 323, 323, 323, 323, 323, 323, 82, 94, 105, - /* 1050 */ 95, 159, 190, 176, 70, 323, 323, 169, 165, 170, - /* 1060 */ 323, 323, 111, 323, 323, 323, 323, 323, 323, 323, - /* 1070 */ 100, 105, 95, 159, 190, 176, 70, 323, 170, 169, - /* 1080 */ 165, 111, 323, 323, 323, 323, 323, 323, 323, 98, - /* 1090 */ 105, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 1100 */ 323, 170, 323, 323, 111, 323, 323, 323, 323, 323, - /* 1110 */ 323, 323, 96, 105, 95, 159, 190, 176, 70, 323, - /* 1120 */ 323, 169, 165, 170, 323, 323, 111, 323, 323, 323, - /* 1130 */ 323, 323, 323, 323, 93, 105, 95, 159, 190, 176, - /* 1140 */ 70, 323, 323, 169, 165, 323, 170, 323, 323, 111, - /* 1150 */ 323, 323, 323, 323, 323, 323, 323, 92, 105, 95, - /* 1160 */ 159, 190, 176, 70, 323, 170, 169, 165, 111, 323, - /* 1170 */ 323, 323, 323, 323, 323, 323, 91, 105, 95, 159, - /* 1180 */ 190, 176, 70, 323, 323, 169, 165, 323, 170, 323, - /* 1190 */ 323, 111, 323, 323, 323, 323, 323, 323, 323, 90, - /* 1200 */ 105, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 1210 */ 170, 323, 323, 111, 323, 323, 323, 323, 323, 323, - /* 1220 */ 323, 89, 105, 95, 159, 190, 176, 70, 323, 323, - /* 1230 */ 169, 165, 323, 170, 323, 323, 111, 323, 323, 323, - /* 1240 */ 323, 323, 323, 323, 88, 105, 95, 159, 190, 176, - /* 1250 */ 70, 323, 170, 169, 165, 111, 323, 323, 323, 323, - /* 1260 */ 323, 323, 323, 87, 105, 95, 159, 190, 176, 70, - /* 1270 */ 323, 323, 169, 165, 323, 170, 323, 323, 111, 323, - /* 1280 */ 323, 323, 323, 323, 323, 323, 86, 105, 95, 159, - /* 1290 */ 190, 176, 70, 323, 323, 169, 165, 170, 323, 323, - /* 1300 */ 111, 323, 323, 323, 323, 323, 323, 323, 85, 105, - /* 1310 */ 95, 159, 190, 176, 70, 323, 323, 169, 165, 323, - /* 1320 */ 170, 323, 323, 111, 323, 323, 323, 323, 323, 323, - /* 1330 */ 323, 84, 105, 95, 159, 190, 176, 70, 323, 323, - /* 1340 */ 169, 165, 204, 77, 76, 73, 201, 68, 323, 75, - /* 1350 */ 128, 7, 323, 67, 323, 77, 76, 73, 201, 68, - /* 1360 */ 129, 75, 128, 7, 170, 67, 323, 111, 323, 323, - /* 1370 */ 323, 323, 323, 323, 323, 323, 112, 95, 159, 190, - /* 1380 */ 176, 70, 323, 323, 169, 165, 170, 5, 323, 111, - /* 1390 */ 166, 79, 323, 323, 323, 323, 323, 323, 108, 95, - /* 1400 */ 159, 190, 176, 70, 323, 323, 169, 165, 170, 323, - /* 1410 */ 323, 111, 323, 323, 323, 323, 323, 323, 323, 323, - /* 1420 */ 106, 95, 159, 190, 176, 70, 323, 323, 169, 165, - /* 1430 */ 323, 323, 323, 323, 323, 323, 323, 170, 323, 323, - /* 1440 */ 111, 323, 323, 323, 164, 163, 162, 161, 160, 2, - /* 1450 */ 99, 159, 190, 176, 70, 323, 170, 169, 165, 111, - /* 1460 */ 323, 323, 323, 323, 323, 170, 323, 323, 111, 97, - /* 1470 */ 159, 190, 176, 70, 323, 170, 169, 165, 111, 191, - /* 1480 */ 190, 176, 70, 323, 170, 169, 165, 111, 323, 189, - /* 1490 */ 190, 176, 70, 323, 323, 169, 165, 323, 188, 190, - /* 1500 */ 176, 70, 323, 323, 169, 165, 323, 323, 323, 323, - /* 1510 */ 323, 323, 323, 170, 323, 323, 111, 323, 323, 323, - /* 1520 */ 323, 170, 323, 323, 111, 323, 323, 187, 190, 176, - /* 1530 */ 70, 323, 323, 169, 165, 186, 190, 176, 70, 323, - /* 1540 */ 323, 169, 165, 323, 170, 323, 323, 111, 323, 323, - /* 1550 */ 323, 323, 170, 323, 323, 111, 323, 323, 185, 190, - /* 1560 */ 176, 70, 323, 323, 169, 165, 184, 190, 176, 70, - /* 1570 */ 323, 170, 169, 165, 111, 323, 323, 323, 323, 323, - /* 1580 */ 170, 323, 323, 111, 323, 183, 190, 176, 70, 323, - /* 1590 */ 323, 169, 165, 323, 182, 190, 176, 70, 323, 323, - /* 1600 */ 169, 165, 323, 170, 323, 323, 111, 323, 323, 323, - /* 1610 */ 323, 170, 323, 323, 111, 323, 323, 181, 190, 176, - /* 1620 */ 70, 323, 323, 169, 165, 180, 190, 176, 70, 323, - /* 1630 */ 323, 169, 165, 323, 170, 323, 323, 111, 323, 323, - /* 1640 */ 323, 323, 170, 323, 323, 111, 323, 323, 179, 190, - /* 1650 */ 176, 70, 323, 323, 169, 165, 171, 190, 176, 70, - /* 1660 */ 323, 170, 169, 165, 111, 323, 323, 323, 323, 323, - /* 1670 */ 323, 323, 323, 323, 323, 167, 190, 176, 70, 323, - /* 1680 */ 323, 169, 165, + /* 0 */ 334, 74, 104, 76, 207, 177, 180, 201, 82, 118, + /* 10 */ 117, 126, 125, 124, 112, 83, 96, 108, 97, 166, + /* 20 */ 197, 183, 72, 2, 25, 176, 172, 208, 1, 32, + /* 30 */ 77, 120, 4, 33, 69, 73, 110, 138, 207, 177, + /* 40 */ 180, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 50 */ 96, 108, 97, 166, 197, 183, 72, 176, 172, 176, + /* 60 */ 172, 208, 1, 34, 77, 120, 4, 24, 69, 6, + /* 70 */ 29, 64, 63, 52, 51, 50, 67, 66, 65, 62, + /* 80 */ 61, 60, 59, 58, 57, 171, 170, 169, 168, 167, + /* 90 */ 3, 7, 26, 153, 173, 81, 208, 70, 164, 77, + /* 100 */ 131, 9, 175, 69, 107, 64, 63, 203, 28, 28, + /* 110 */ 67, 66, 65, 62, 61, 60, 59, 58, 57, 171, + /* 120 */ 170, 169, 168, 167, 3, 7, 31, 30, 173, 81, + /* 130 */ 152, 8, 164, 122, 64, 63, 23, 36, 35, 67, + /* 140 */ 66, 65, 62, 61, 60, 59, 58, 57, 171, 170, + /* 150 */ 169, 168, 167, 3, 165, 49, 48, 47, 46, 45, + /* 160 */ 44, 43, 42, 41, 40, 39, 38, 37, 64, 63, + /* 170 */ 54, 53, 10, 67, 66, 65, 62, 61, 60, 59, + /* 180 */ 58, 57, 171, 170, 169, 168, 167, 3, 158, 119, + /* 190 */ 185, 184, 177, 180, 201, 82, 118, 117, 126, 125, + /* 200 */ 124, 112, 83, 96, 108, 97, 166, 197, 183, 72, + /* 210 */ 161, 123, 176, 172, 159, 28, 107, 177, 154, 201, + /* 220 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 230 */ 97, 166, 197, 183, 72, 209, 206, 176, 172, 11, + /* 240 */ 80, 68, 56, 55, 103, 335, 177, 133, 201, 82, + /* 250 */ 118, 117, 126, 125, 124, 112, 83, 96, 108, 97, + /* 260 */ 166, 197, 183, 72, 155, 205, 176, 172, 159, 204, + /* 270 */ 159, 179, 119, 137, 132, 177, 180, 201, 82, 118, + /* 280 */ 117, 126, 125, 124, 112, 83, 96, 108, 97, 166, + /* 290 */ 197, 183, 72, 210, 113, 176, 172, 177, 180, 201, + /* 300 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 310 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 110, + /* 320 */ 156, 335, 177, 180, 201, 82, 118, 117, 126, 125, + /* 330 */ 124, 112, 83, 96, 108, 97, 166, 197, 183, 72, + /* 340 */ 335, 335, 176, 172, 177, 150, 201, 82, 118, 117, + /* 350 */ 126, 125, 124, 112, 83, 96, 108, 97, 166, 197, + /* 360 */ 183, 72, 335, 7, 176, 172, 173, 81, 182, 181, + /* 370 */ 335, 106, 177, 133, 201, 82, 118, 117, 126, 125, + /* 380 */ 124, 112, 83, 96, 108, 97, 166, 197, 183, 72, + /* 390 */ 212, 7, 176, 172, 173, 81, 213, 162, 155, 71, + /* 400 */ 135, 73, 335, 28, 207, 335, 64, 63, 134, 5, + /* 410 */ 335, 67, 66, 65, 62, 61, 60, 59, 58, 57, + /* 420 */ 171, 170, 169, 168, 167, 3, 7, 335, 335, 173, + /* 430 */ 81, 335, 335, 335, 64, 63, 335, 335, 335, 67, + /* 440 */ 66, 65, 62, 61, 60, 59, 58, 57, 171, 170, + /* 450 */ 169, 168, 167, 3, 211, 335, 79, 78, 75, 208, + /* 460 */ 70, 335, 77, 131, 9, 335, 69, 335, 335, 64, + /* 470 */ 63, 335, 335, 335, 67, 66, 65, 62, 61, 60, + /* 480 */ 59, 58, 57, 171, 170, 169, 168, 167, 3, 177, + /* 490 */ 202, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 500 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 510 */ 172, 335, 177, 200, 201, 82, 118, 117, 126, 125, + /* 520 */ 124, 112, 83, 96, 108, 97, 166, 197, 183, 72, + /* 530 */ 335, 335, 176, 172, 335, 79, 78, 75, 208, 70, + /* 540 */ 136, 77, 131, 9, 335, 69, 335, 177, 130, 201, + /* 550 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 560 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 570 */ 199, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 580 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 590 */ 172, 177, 160, 201, 82, 118, 117, 126, 125, 124, + /* 600 */ 112, 83, 96, 108, 97, 166, 197, 183, 72, 335, + /* 610 */ 335, 176, 172, 335, 335, 335, 335, 335, 335, 335, + /* 620 */ 335, 335, 335, 335, 335, 177, 151, 201, 82, 118, + /* 630 */ 117, 126, 125, 124, 112, 83, 96, 108, 97, 166, + /* 640 */ 197, 183, 72, 335, 335, 176, 172, 177, 149, 201, + /* 650 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 660 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 670 */ 148, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 680 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 690 */ 172, 335, 335, 335, 335, 335, 335, 335, 335, 335, + /* 700 */ 335, 335, 335, 177, 147, 201, 82, 118, 117, 126, + /* 710 */ 125, 124, 112, 83, 96, 108, 97, 166, 197, 183, + /* 720 */ 72, 335, 335, 176, 172, 177, 146, 201, 82, 118, + /* 730 */ 117, 126, 125, 124, 112, 83, 96, 108, 97, 166, + /* 740 */ 197, 183, 72, 335, 335, 176, 172, 177, 145, 201, + /* 750 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 760 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 335, + /* 770 */ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + /* 780 */ 335, 177, 144, 201, 82, 118, 117, 126, 125, 124, + /* 790 */ 112, 83, 96, 108, 97, 166, 197, 183, 72, 335, + /* 800 */ 335, 176, 172, 177, 143, 201, 82, 118, 117, 126, + /* 810 */ 125, 124, 112, 83, 96, 108, 97, 166, 197, 183, + /* 820 */ 72, 335, 335, 176, 172, 177, 142, 201, 82, 118, + /* 830 */ 117, 126, 125, 124, 112, 83, 96, 108, 97, 166, + /* 840 */ 197, 183, 72, 335, 335, 176, 172, 335, 335, 335, + /* 850 */ 335, 335, 335, 335, 335, 335, 335, 335, 335, 177, + /* 860 */ 141, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 870 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 880 */ 172, 177, 140, 201, 82, 118, 117, 126, 125, 124, + /* 890 */ 112, 83, 96, 108, 97, 166, 197, 183, 72, 335, + /* 900 */ 335, 176, 172, 177, 139, 201, 82, 118, 117, 126, + /* 910 */ 125, 124, 112, 83, 96, 108, 97, 166, 197, 183, + /* 920 */ 72, 335, 335, 176, 172, 335, 335, 335, 335, 335, + /* 930 */ 335, 335, 335, 335, 335, 335, 335, 177, 163, 201, + /* 940 */ 82, 118, 117, 126, 125, 124, 112, 83, 96, 108, + /* 950 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 960 */ 157, 201, 82, 118, 117, 126, 125, 124, 112, 83, + /* 970 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 980 */ 172, 177, 335, 335, 114, 335, 105, 126, 125, 124, + /* 990 */ 112, 83, 96, 108, 97, 166, 197, 183, 72, 335, + /* 1000 */ 335, 176, 172, 335, 335, 335, 335, 335, 335, 335, + /* 1010 */ 335, 335, 335, 335, 335, 177, 335, 335, 114, 335, + /* 1020 */ 335, 129, 125, 124, 112, 83, 96, 108, 97, 166, + /* 1030 */ 197, 183, 72, 335, 335, 176, 172, 177, 335, 335, + /* 1040 */ 114, 335, 335, 121, 125, 124, 112, 83, 96, 108, + /* 1050 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 1060 */ 335, 335, 114, 335, 335, 335, 128, 124, 112, 83, + /* 1070 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 1080 */ 172, 27, 22, 21, 20, 19, 18, 17, 16, 15, + /* 1090 */ 14, 13, 12, 177, 335, 335, 114, 335, 335, 335, + /* 1100 */ 335, 127, 112, 83, 96, 108, 97, 166, 197, 183, + /* 1110 */ 72, 335, 335, 176, 172, 177, 335, 335, 114, 335, + /* 1120 */ 335, 335, 185, 184, 116, 83, 96, 108, 97, 166, + /* 1130 */ 197, 183, 72, 335, 335, 176, 172, 177, 335, 335, + /* 1140 */ 114, 335, 335, 335, 335, 335, 335, 85, 96, 108, + /* 1150 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 1160 */ 335, 335, 114, 335, 335, 335, 335, 335, 335, 84, + /* 1170 */ 96, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 1180 */ 172, 177, 335, 335, 114, 335, 335, 335, 335, 335, + /* 1190 */ 335, 335, 102, 108, 97, 166, 197, 183, 72, 335, + /* 1200 */ 177, 176, 172, 114, 335, 335, 335, 335, 335, 335, + /* 1210 */ 335, 100, 108, 97, 166, 197, 183, 72, 335, 335, + /* 1220 */ 176, 172, 335, 335, 335, 177, 335, 335, 114, 335, + /* 1230 */ 335, 335, 335, 335, 335, 335, 98, 108, 97, 166, + /* 1240 */ 197, 183, 72, 335, 335, 176, 172, 177, 335, 335, + /* 1250 */ 114, 335, 335, 335, 335, 335, 335, 335, 95, 108, + /* 1260 */ 97, 166, 197, 183, 72, 335, 335, 176, 172, 335, + /* 1270 */ 177, 335, 335, 114, 335, 335, 335, 335, 335, 335, + /* 1280 */ 335, 94, 108, 97, 166, 197, 183, 72, 335, 177, + /* 1290 */ 176, 172, 114, 335, 335, 335, 335, 335, 335, 335, + /* 1300 */ 93, 108, 97, 166, 197, 183, 72, 335, 335, 176, + /* 1310 */ 172, 335, 335, 335, 177, 335, 335, 114, 335, 335, + /* 1320 */ 335, 335, 335, 335, 335, 92, 108, 97, 166, 197, + /* 1330 */ 183, 72, 335, 335, 176, 172, 177, 335, 335, 114, + /* 1340 */ 335, 335, 335, 335, 335, 335, 335, 91, 108, 97, + /* 1350 */ 166, 197, 183, 72, 335, 335, 176, 172, 335, 177, + /* 1360 */ 335, 335, 114, 335, 335, 335, 335, 335, 335, 335, + /* 1370 */ 90, 108, 97, 166, 197, 183, 72, 335, 177, 176, + /* 1380 */ 172, 114, 335, 335, 335, 335, 335, 335, 335, 89, + /* 1390 */ 108, 97, 166, 197, 183, 72, 335, 335, 176, 172, + /* 1400 */ 335, 335, 335, 177, 335, 335, 114, 335, 335, 335, + /* 1410 */ 335, 335, 335, 335, 88, 108, 97, 166, 197, 183, + /* 1420 */ 72, 335, 335, 176, 172, 177, 335, 335, 114, 335, + /* 1430 */ 335, 335, 335, 335, 335, 335, 87, 108, 97, 166, + /* 1440 */ 197, 183, 72, 335, 335, 176, 172, 335, 177, 335, + /* 1450 */ 335, 114, 335, 335, 335, 335, 335, 335, 335, 86, + /* 1460 */ 108, 97, 166, 197, 183, 72, 335, 177, 176, 172, + /* 1470 */ 114, 335, 335, 335, 335, 335, 335, 335, 335, 115, + /* 1480 */ 97, 166, 197, 183, 72, 335, 7, 176, 172, 173, + /* 1490 */ 81, 335, 177, 335, 335, 114, 335, 335, 335, 335, + /* 1500 */ 335, 335, 335, 335, 111, 97, 166, 197, 183, 72, + /* 1510 */ 335, 335, 176, 172, 177, 335, 335, 114, 335, 335, + /* 1520 */ 335, 335, 335, 335, 335, 335, 109, 97, 166, 197, + /* 1530 */ 183, 72, 335, 335, 176, 172, 335, 177, 335, 335, + /* 1540 */ 114, 335, 335, 171, 170, 169, 168, 167, 3, 335, + /* 1550 */ 101, 166, 197, 183, 72, 335, 335, 176, 172, 177, + /* 1560 */ 335, 335, 114, 335, 335, 335, 335, 177, 335, 335, + /* 1570 */ 114, 335, 99, 166, 197, 183, 72, 335, 335, 176, + /* 1580 */ 172, 198, 197, 183, 72, 335, 177, 176, 172, 114, + /* 1590 */ 335, 335, 335, 335, 335, 177, 335, 335, 114, 335, + /* 1600 */ 196, 197, 183, 72, 335, 177, 176, 172, 114, 195, + /* 1610 */ 197, 183, 72, 335, 335, 176, 172, 335, 335, 194, + /* 1620 */ 197, 183, 72, 335, 177, 176, 172, 114, 335, 335, + /* 1630 */ 335, 335, 177, 335, 335, 114, 335, 335, 193, 197, + /* 1640 */ 183, 72, 335, 335, 176, 172, 192, 197, 183, 72, + /* 1650 */ 335, 177, 176, 172, 114, 335, 335, 335, 335, 177, + /* 1660 */ 335, 335, 114, 335, 335, 191, 197, 183, 72, 335, + /* 1670 */ 335, 176, 172, 190, 197, 183, 72, 335, 177, 176, + /* 1680 */ 172, 114, 335, 335, 335, 335, 177, 335, 335, 114, + /* 1690 */ 335, 335, 189, 197, 183, 72, 335, 335, 176, 172, + /* 1700 */ 188, 197, 183, 72, 335, 177, 176, 172, 114, 335, + /* 1710 */ 335, 335, 335, 177, 335, 335, 114, 335, 335, 187, + /* 1720 */ 197, 183, 72, 335, 335, 176, 172, 186, 197, 183, + /* 1730 */ 72, 335, 177, 176, 172, 114, 335, 335, 335, 335, + /* 1740 */ 177, 335, 335, 114, 335, 335, 178, 197, 183, 72, + /* 1750 */ 335, 335, 176, 172, 174, 197, 183, 72, 335, 335, + /* 1760 */ 176, 172, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - /* 10 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 20 */ 91, 92, 1, 2, 95, 96, 72, 73, 74, 75, - /* 30 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 40 */ 86, 87, 88, 89, 90, 91, 92, 30, 31, 95, - /* 50 */ 96, 4, 5, 7, 7, 8, 9, 73, 11, 75, - /* 60 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 70 */ 86, 87, 88, 89, 90, 91, 92, 48, 49, 95, - /* 80 */ 96, 4, 5, 99, 7, 8, 9, 5, 11, 45, - /* 90 */ 46, 47, 50, 51, 52, 48, 49, 10, 8, 12, - /* 100 */ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - /* 110 */ 63, 64, 65, 66, 67, 5, 54, 55, 8, 9, - /* 120 */ 26, 10, 12, 12, 27, 75, 76, 77, 78, 79, - /* 130 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 140 */ 90, 91, 92, 100, 101, 95, 96, 97, 98, 67, - /* 150 */ 12, 69, 62, 28, 64, 6, 93, 94, 48, 49, - /* 160 */ 75, 12, 3, 53, 54, 55, 56, 57, 58, 59, - /* 170 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 5, - /* 180 */ 95, 96, 8, 9, 25, 73, 12, 75, 76, 77, - /* 190 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 200 */ 88, 89, 90, 91, 92, 29, 68, 95, 96, 32, - /* 210 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - /* 220 */ 43, 44, 48, 49, 72, 26, 74, 53, 54, 55, - /* 230 */ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - /* 240 */ 66, 67, 68, 73, 8, 75, 76, 77, 78, 79, - /* 250 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 260 */ 90, 91, 92, 99, 97, 95, 96, 73, 12, 75, - /* 270 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 280 */ 86, 87, 88, 89, 90, 91, 92, 6, 5, 95, - /* 290 */ 96, 8, 9, 12, 74, 12, 74, 103, 75, 76, - /* 300 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 310 */ 87, 88, 89, 90, 91, 92, 0, 5, 95, 96, - /* 320 */ 8, 9, 74, 74, 68, 102, 74, 74, 12, 103, - /* 330 */ 103, 48, 49, 103, 103, 103, 53, 54, 55, 56, - /* 340 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - /* 350 */ 67, 103, 103, 103, 103, 103, 103, 103, 103, 103, - /* 360 */ 48, 49, 103, 103, 103, 53, 54, 55, 56, 57, - /* 370 */ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - /* 380 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 390 */ 85, 86, 87, 88, 89, 90, 91, 92, 103, 103, - /* 400 */ 95, 96, 103, 103, 103, 103, 103, 75, 76, 77, - /* 410 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 420 */ 88, 89, 90, 91, 92, 103, 103, 95, 96, 103, - /* 430 */ 103, 103, 103, 103, 103, 103, 75, 76, 77, 78, - /* 440 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 450 */ 89, 90, 91, 92, 103, 103, 95, 96, 75, 76, - /* 460 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 470 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 480 */ 103, 103, 103, 75, 76, 77, 78, 79, 80, 81, - /* 490 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 500 */ 92, 103, 103, 95, 96, 103, 103, 103, 103, 103, - /* 510 */ 103, 103, 75, 76, 77, 78, 79, 80, 81, 82, - /* 520 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 530 */ 103, 103, 95, 96, 75, 76, 77, 78, 79, 80, - /* 540 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 550 */ 91, 92, 103, 103, 95, 96, 103, 103, 103, 75, - /* 560 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 570 */ 86, 87, 88, 89, 90, 91, 92, 103, 103, 95, - /* 580 */ 96, 103, 103, 103, 103, 103, 103, 103, 75, 76, - /* 590 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 600 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 610 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 620 */ 85, 86, 87, 88, 89, 90, 91, 92, 103, 103, - /* 630 */ 95, 96, 103, 103, 103, 75, 76, 77, 78, 79, - /* 640 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 650 */ 90, 91, 92, 103, 103, 95, 96, 103, 103, 103, - /* 660 */ 103, 103, 103, 103, 75, 76, 77, 78, 79, 80, - /* 670 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 680 */ 91, 92, 103, 103, 95, 96, 75, 76, 77, 78, - /* 690 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 700 */ 89, 90, 91, 92, 103, 103, 95, 96, 103, 103, - /* 710 */ 103, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 720 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 103, - /* 730 */ 103, 95, 96, 103, 103, 103, 103, 103, 103, 103, - /* 740 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 750 */ 85, 86, 87, 88, 89, 90, 91, 92, 103, 103, - /* 760 */ 95, 96, 75, 76, 77, 78, 79, 80, 81, 82, - /* 770 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 780 */ 103, 103, 95, 96, 103, 103, 103, 75, 76, 77, - /* 790 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 800 */ 88, 89, 90, 91, 92, 103, 103, 95, 96, 103, - /* 810 */ 103, 103, 103, 103, 103, 103, 75, 76, 77, 78, - /* 820 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 830 */ 89, 90, 91, 92, 103, 103, 95, 96, 75, 76, - /* 840 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 850 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 860 */ 103, 103, 103, 75, 103, 103, 78, 103, 80, 81, - /* 870 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 880 */ 92, 103, 103, 95, 96, 103, 103, 103, 103, 103, - /* 890 */ 103, 103, 75, 103, 103, 78, 103, 103, 81, 82, - /* 900 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 910 */ 103, 103, 95, 96, 75, 103, 103, 78, 103, 103, - /* 920 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 930 */ 91, 92, 103, 103, 95, 96, 103, 103, 103, 75, - /* 940 */ 103, 103, 78, 103, 103, 103, 82, 83, 84, 85, - /* 950 */ 86, 87, 88, 89, 90, 91, 92, 103, 103, 95, - /* 960 */ 96, 13, 14, 15, 16, 17, 18, 19, 20, 21, - /* 970 */ 22, 23, 24, 103, 75, 103, 103, 78, 103, 103, - /* 980 */ 103, 103, 83, 84, 85, 86, 87, 88, 89, 90, - /* 990 */ 91, 92, 103, 103, 95, 96, 75, 103, 103, 78, - /* 1000 */ 103, 103, 54, 55, 103, 84, 85, 86, 87, 88, - /* 1010 */ 89, 90, 91, 92, 103, 75, 95, 96, 78, 103, - /* 1020 */ 103, 103, 103, 103, 103, 85, 86, 87, 88, 89, - /* 1030 */ 90, 91, 92, 103, 103, 95, 96, 75, 103, 103, - /* 1040 */ 78, 103, 103, 103, 103, 103, 103, 85, 86, 87, - /* 1050 */ 88, 89, 90, 91, 92, 103, 103, 95, 96, 75, - /* 1060 */ 103, 103, 78, 103, 103, 103, 103, 103, 103, 103, - /* 1070 */ 86, 87, 88, 89, 90, 91, 92, 103, 75, 95, - /* 1080 */ 96, 78, 103, 103, 103, 103, 103, 103, 103, 86, - /* 1090 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 1100 */ 103, 75, 103, 103, 78, 103, 103, 103, 103, 103, - /* 1110 */ 103, 103, 86, 87, 88, 89, 90, 91, 92, 103, - /* 1120 */ 103, 95, 96, 75, 103, 103, 78, 103, 103, 103, - /* 1130 */ 103, 103, 103, 103, 86, 87, 88, 89, 90, 91, - /* 1140 */ 92, 103, 103, 95, 96, 103, 75, 103, 103, 78, - /* 1150 */ 103, 103, 103, 103, 103, 103, 103, 86, 87, 88, - /* 1160 */ 89, 90, 91, 92, 103, 75, 95, 96, 78, 103, - /* 1170 */ 103, 103, 103, 103, 103, 103, 86, 87, 88, 89, - /* 1180 */ 90, 91, 92, 103, 103, 95, 96, 103, 75, 103, - /* 1190 */ 103, 78, 103, 103, 103, 103, 103, 103, 103, 86, - /* 1200 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 1210 */ 75, 103, 103, 78, 103, 103, 103, 103, 103, 103, - /* 1220 */ 103, 86, 87, 88, 89, 90, 91, 92, 103, 103, - /* 1230 */ 95, 96, 103, 75, 103, 103, 78, 103, 103, 103, - /* 1240 */ 103, 103, 103, 103, 86, 87, 88, 89, 90, 91, - /* 1250 */ 92, 103, 75, 95, 96, 78, 103, 103, 103, 103, - /* 1260 */ 103, 103, 103, 86, 87, 88, 89, 90, 91, 92, - /* 1270 */ 103, 103, 95, 96, 103, 75, 103, 103, 78, 103, - /* 1280 */ 103, 103, 103, 103, 103, 103, 86, 87, 88, 89, - /* 1290 */ 90, 91, 92, 103, 103, 95, 96, 75, 103, 103, - /* 1300 */ 78, 103, 103, 103, 103, 103, 103, 103, 86, 87, - /* 1310 */ 88, 89, 90, 91, 92, 103, 103, 95, 96, 103, - /* 1320 */ 75, 103, 103, 78, 103, 103, 103, 103, 103, 103, - /* 1330 */ 103, 86, 87, 88, 89, 90, 91, 92, 103, 103, - /* 1340 */ 95, 96, 0, 1, 2, 3, 4, 5, 103, 7, - /* 1350 */ 8, 9, 103, 11, 103, 1, 2, 3, 4, 5, - /* 1360 */ 6, 7, 8, 9, 75, 11, 103, 78, 103, 103, - /* 1370 */ 103, 103, 103, 103, 103, 103, 87, 88, 89, 90, - /* 1380 */ 91, 92, 103, 103, 95, 96, 75, 5, 103, 78, - /* 1390 */ 8, 9, 103, 103, 103, 103, 103, 103, 87, 88, - /* 1400 */ 89, 90, 91, 92, 103, 103, 95, 96, 75, 103, - /* 1410 */ 103, 78, 103, 103, 103, 103, 103, 103, 103, 103, - /* 1420 */ 87, 88, 89, 90, 91, 92, 103, 103, 95, 96, - /* 1430 */ 103, 103, 103, 103, 103, 103, 103, 75, 103, 103, - /* 1440 */ 78, 103, 103, 103, 62, 63, 64, 65, 66, 67, - /* 1450 */ 88, 89, 90, 91, 92, 103, 75, 95, 96, 78, - /* 1460 */ 103, 103, 103, 103, 103, 75, 103, 103, 78, 88, - /* 1470 */ 89, 90, 91, 92, 103, 75, 95, 96, 78, 89, - /* 1480 */ 90, 91, 92, 103, 75, 95, 96, 78, 103, 89, - /* 1490 */ 90, 91, 92, 103, 103, 95, 96, 103, 89, 90, - /* 1500 */ 91, 92, 103, 103, 95, 96, 103, 103, 103, 103, - /* 1510 */ 103, 103, 103, 75, 103, 103, 78, 103, 103, 103, - /* 1520 */ 103, 75, 103, 103, 78, 103, 103, 89, 90, 91, - /* 1530 */ 92, 103, 103, 95, 96, 89, 90, 91, 92, 103, - /* 1540 */ 103, 95, 96, 103, 75, 103, 103, 78, 103, 103, - /* 1550 */ 103, 103, 75, 103, 103, 78, 103, 103, 89, 90, - /* 1560 */ 91, 92, 103, 103, 95, 96, 89, 90, 91, 92, - /* 1570 */ 103, 75, 95, 96, 78, 103, 103, 103, 103, 103, - /* 1580 */ 75, 103, 103, 78, 103, 89, 90, 91, 92, 103, - /* 1590 */ 103, 95, 96, 103, 89, 90, 91, 92, 103, 103, - /* 1600 */ 95, 96, 103, 75, 103, 103, 78, 103, 103, 103, - /* 1610 */ 103, 75, 103, 103, 78, 103, 103, 89, 90, 91, - /* 1620 */ 92, 103, 103, 95, 96, 89, 90, 91, 92, 103, - /* 1630 */ 103, 95, 96, 103, 75, 103, 103, 78, 103, 103, - /* 1640 */ 103, 103, 75, 103, 103, 78, 103, 103, 89, 90, - /* 1650 */ 91, 92, 103, 103, 95, 96, 89, 90, 91, 92, - /* 1660 */ 103, 75, 95, 96, 78, 103, 103, 103, 103, 103, - /* 1670 */ 103, 103, 103, 103, 103, 89, 90, 91, 92, 103, - /* 1680 */ 103, 95, 96, + /* 0 */ 72, 73, 74, 8, 76, 77, 78, 79, 80, 81, + /* 10 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 20 */ 92, 93, 94, 1, 27, 97, 98, 5, 6, 28, + /* 30 */ 8, 9, 10, 29, 12, 73, 74, 77, 76, 77, + /* 40 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 50 */ 88, 89, 90, 91, 92, 93, 94, 97, 98, 97, + /* 60 */ 98, 5, 6, 30, 8, 9, 10, 27, 12, 6, + /* 70 */ 4, 49, 50, 46, 47, 48, 54, 55, 56, 57, + /* 80 */ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + /* 90 */ 68, 6, 26, 9, 9, 10, 5, 6, 13, 8, + /* 100 */ 9, 10, 7, 12, 101, 49, 50, 11, 13, 13, + /* 110 */ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + /* 120 */ 64, 65, 66, 67, 68, 6, 2, 3, 9, 10, + /* 130 */ 7, 68, 13, 70, 49, 50, 13, 31, 32, 54, + /* 140 */ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + /* 150 */ 65, 66, 67, 68, 69, 33, 34, 35, 36, 37, + /* 160 */ 38, 39, 40, 41, 42, 43, 44, 45, 49, 50, + /* 170 */ 49, 50, 99, 54, 55, 56, 57, 58, 59, 60, + /* 180 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 74, + /* 190 */ 55, 56, 77, 78, 79, 80, 81, 82, 83, 84, + /* 200 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + /* 210 */ 102, 103, 97, 98, 9, 13, 101, 77, 78, 79, + /* 220 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 230 */ 90, 91, 92, 93, 94, 76, 76, 97, 98, 99, + /* 240 */ 100, 51, 52, 53, 75, 106, 77, 78, 79, 80, + /* 250 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + /* 260 */ 91, 92, 93, 94, 13, 76, 97, 98, 63, 76, + /* 270 */ 65, 69, 74, 76, 105, 77, 78, 79, 80, 81, + /* 280 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 290 */ 92, 93, 94, 76, 74, 97, 98, 77, 78, 79, + /* 300 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 310 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 74, + /* 320 */ 69, 106, 77, 78, 79, 80, 81, 82, 83, 84, + /* 330 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + /* 340 */ 106, 106, 97, 98, 77, 78, 79, 80, 81, 82, + /* 350 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + /* 360 */ 93, 94, 106, 6, 97, 98, 9, 10, 95, 96, + /* 370 */ 106, 104, 77, 78, 79, 80, 81, 82, 83, 84, + /* 380 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + /* 390 */ 0, 6, 97, 98, 9, 10, 0, 11, 13, 13, + /* 400 */ 105, 73, 106, 13, 76, 106, 49, 50, 51, 13, + /* 410 */ 106, 54, 55, 56, 57, 58, 59, 60, 61, 62, + /* 420 */ 63, 64, 65, 66, 67, 68, 6, 106, 106, 9, + /* 430 */ 10, 106, 106, 106, 49, 50, 106, 106, 106, 54, + /* 440 */ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + /* 450 */ 65, 66, 67, 68, 0, 106, 2, 3, 4, 5, + /* 460 */ 6, 106, 8, 9, 10, 106, 12, 106, 106, 49, + /* 470 */ 50, 106, 106, 106, 54, 55, 56, 57, 58, 59, + /* 480 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 77, + /* 490 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 500 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 510 */ 98, 106, 77, 78, 79, 80, 81, 82, 83, 84, + /* 520 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + /* 530 */ 106, 106, 97, 98, 106, 2, 3, 4, 5, 6, + /* 540 */ 7, 8, 9, 10, 106, 12, 106, 77, 78, 79, + /* 550 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 560 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 570 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 580 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 590 */ 98, 77, 78, 79, 80, 81, 82, 83, 84, 85, + /* 600 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 106, + /* 610 */ 106, 97, 98, 106, 106, 106, 106, 106, 106, 106, + /* 620 */ 106, 106, 106, 106, 106, 77, 78, 79, 80, 81, + /* 630 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 640 */ 92, 93, 94, 106, 106, 97, 98, 77, 78, 79, + /* 650 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 660 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 670 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 680 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 690 */ 98, 106, 106, 106, 106, 106, 106, 106, 106, 106, + /* 700 */ 106, 106, 106, 77, 78, 79, 80, 81, 82, 83, + /* 710 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + /* 720 */ 94, 106, 106, 97, 98, 77, 78, 79, 80, 81, + /* 730 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 740 */ 92, 93, 94, 106, 106, 97, 98, 77, 78, 79, + /* 750 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 760 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 106, + /* 770 */ 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + /* 780 */ 106, 77, 78, 79, 80, 81, 82, 83, 84, 85, + /* 790 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 106, + /* 800 */ 106, 97, 98, 77, 78, 79, 80, 81, 82, 83, + /* 810 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + /* 820 */ 94, 106, 106, 97, 98, 77, 78, 79, 80, 81, + /* 830 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 840 */ 92, 93, 94, 106, 106, 97, 98, 106, 106, 106, + /* 850 */ 106, 106, 106, 106, 106, 106, 106, 106, 106, 77, + /* 860 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 870 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 880 */ 98, 77, 78, 79, 80, 81, 82, 83, 84, 85, + /* 890 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 106, + /* 900 */ 106, 97, 98, 77, 78, 79, 80, 81, 82, 83, + /* 910 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + /* 920 */ 94, 106, 106, 97, 98, 106, 106, 106, 106, 106, + /* 930 */ 106, 106, 106, 106, 106, 106, 106, 77, 78, 79, + /* 940 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 950 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 960 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 970 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 980 */ 98, 77, 106, 106, 80, 106, 82, 83, 84, 85, + /* 990 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 106, + /* 1000 */ 106, 97, 98, 106, 106, 106, 106, 106, 106, 106, + /* 1010 */ 106, 106, 106, 106, 106, 77, 106, 106, 80, 106, + /* 1020 */ 106, 83, 84, 85, 86, 87, 88, 89, 90, 91, + /* 1030 */ 92, 93, 94, 106, 106, 97, 98, 77, 106, 106, + /* 1040 */ 80, 106, 106, 83, 84, 85, 86, 87, 88, 89, + /* 1050 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 1060 */ 106, 106, 80, 106, 106, 106, 84, 85, 86, 87, + /* 1070 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 1080 */ 98, 14, 15, 16, 17, 18, 19, 20, 21, 22, + /* 1090 */ 23, 24, 25, 77, 106, 106, 80, 106, 106, 106, + /* 1100 */ 106, 85, 86, 87, 88, 89, 90, 91, 92, 93, + /* 1110 */ 94, 106, 106, 97, 98, 77, 106, 106, 80, 106, + /* 1120 */ 106, 106, 55, 56, 86, 87, 88, 89, 90, 91, + /* 1130 */ 92, 93, 94, 106, 106, 97, 98, 77, 106, 106, + /* 1140 */ 80, 106, 106, 106, 106, 106, 106, 87, 88, 89, + /* 1150 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 1160 */ 106, 106, 80, 106, 106, 106, 106, 106, 106, 87, + /* 1170 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 1180 */ 98, 77, 106, 106, 80, 106, 106, 106, 106, 106, + /* 1190 */ 106, 106, 88, 89, 90, 91, 92, 93, 94, 106, + /* 1200 */ 77, 97, 98, 80, 106, 106, 106, 106, 106, 106, + /* 1210 */ 106, 88, 89, 90, 91, 92, 93, 94, 106, 106, + /* 1220 */ 97, 98, 106, 106, 106, 77, 106, 106, 80, 106, + /* 1230 */ 106, 106, 106, 106, 106, 106, 88, 89, 90, 91, + /* 1240 */ 92, 93, 94, 106, 106, 97, 98, 77, 106, 106, + /* 1250 */ 80, 106, 106, 106, 106, 106, 106, 106, 88, 89, + /* 1260 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 106, + /* 1270 */ 77, 106, 106, 80, 106, 106, 106, 106, 106, 106, + /* 1280 */ 106, 88, 89, 90, 91, 92, 93, 94, 106, 77, + /* 1290 */ 97, 98, 80, 106, 106, 106, 106, 106, 106, 106, + /* 1300 */ 88, 89, 90, 91, 92, 93, 94, 106, 106, 97, + /* 1310 */ 98, 106, 106, 106, 77, 106, 106, 80, 106, 106, + /* 1320 */ 106, 106, 106, 106, 106, 88, 89, 90, 91, 92, + /* 1330 */ 93, 94, 106, 106, 97, 98, 77, 106, 106, 80, + /* 1340 */ 106, 106, 106, 106, 106, 106, 106, 88, 89, 90, + /* 1350 */ 91, 92, 93, 94, 106, 106, 97, 98, 106, 77, + /* 1360 */ 106, 106, 80, 106, 106, 106, 106, 106, 106, 106, + /* 1370 */ 88, 89, 90, 91, 92, 93, 94, 106, 77, 97, + /* 1380 */ 98, 80, 106, 106, 106, 106, 106, 106, 106, 88, + /* 1390 */ 89, 90, 91, 92, 93, 94, 106, 106, 97, 98, + /* 1400 */ 106, 106, 106, 77, 106, 106, 80, 106, 106, 106, + /* 1410 */ 106, 106, 106, 106, 88, 89, 90, 91, 92, 93, + /* 1420 */ 94, 106, 106, 97, 98, 77, 106, 106, 80, 106, + /* 1430 */ 106, 106, 106, 106, 106, 106, 88, 89, 90, 91, + /* 1440 */ 92, 93, 94, 106, 106, 97, 98, 106, 77, 106, + /* 1450 */ 106, 80, 106, 106, 106, 106, 106, 106, 106, 88, + /* 1460 */ 89, 90, 91, 92, 93, 94, 106, 77, 97, 98, + /* 1470 */ 80, 106, 106, 106, 106, 106, 106, 106, 106, 89, + /* 1480 */ 90, 91, 92, 93, 94, 106, 6, 97, 98, 9, + /* 1490 */ 10, 106, 77, 106, 106, 80, 106, 106, 106, 106, + /* 1500 */ 106, 106, 106, 106, 89, 90, 91, 92, 93, 94, + /* 1510 */ 106, 106, 97, 98, 77, 106, 106, 80, 106, 106, + /* 1520 */ 106, 106, 106, 106, 106, 106, 89, 90, 91, 92, + /* 1530 */ 93, 94, 106, 106, 97, 98, 106, 77, 106, 106, + /* 1540 */ 80, 106, 106, 63, 64, 65, 66, 67, 68, 106, + /* 1550 */ 90, 91, 92, 93, 94, 106, 106, 97, 98, 77, + /* 1560 */ 106, 106, 80, 106, 106, 106, 106, 77, 106, 106, + /* 1570 */ 80, 106, 90, 91, 92, 93, 94, 106, 106, 97, + /* 1580 */ 98, 91, 92, 93, 94, 106, 77, 97, 98, 80, + /* 1590 */ 106, 106, 106, 106, 106, 77, 106, 106, 80, 106, + /* 1600 */ 91, 92, 93, 94, 106, 77, 97, 98, 80, 91, + /* 1610 */ 92, 93, 94, 106, 106, 97, 98, 106, 106, 91, + /* 1620 */ 92, 93, 94, 106, 77, 97, 98, 80, 106, 106, + /* 1630 */ 106, 106, 77, 106, 106, 80, 106, 106, 91, 92, + /* 1640 */ 93, 94, 106, 106, 97, 98, 91, 92, 93, 94, + /* 1650 */ 106, 77, 97, 98, 80, 106, 106, 106, 106, 77, + /* 1660 */ 106, 106, 80, 106, 106, 91, 92, 93, 94, 106, + /* 1670 */ 106, 97, 98, 91, 92, 93, 94, 106, 77, 97, + /* 1680 */ 98, 80, 106, 106, 106, 106, 77, 106, 106, 80, + /* 1690 */ 106, 106, 91, 92, 93, 94, 106, 106, 97, 98, + /* 1700 */ 91, 92, 93, 94, 106, 77, 97, 98, 80, 106, + /* 1710 */ 106, 106, 106, 77, 106, 106, 80, 106, 106, 91, + /* 1720 */ 92, 93, 94, 106, 106, 97, 98, 91, 92, 93, + /* 1730 */ 94, 106, 77, 97, 98, 80, 106, 106, 106, 106, + /* 1740 */ 77, 106, 106, 80, 106, 106, 91, 92, 93, 94, + /* 1750 */ 106, 106, 97, 98, 91, 92, 93, 94, 106, 106, + /* 1760 */ 97, 98, }; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_COUNT (128) -#define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (1382) +#define YY_SHIFT_USE_DFLT (-6) +#define YY_SHIFT_COUNT (131) +#define YY_SHIFT_MIN (-5) +#define YY_SHIFT_MAX (1480) static const short yy_shift_ofst[] = { - /* 0 */ 47, 47, 283, 312, 312, 312, 312, 312, 174, 110, - /* 10 */ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - /* 20 */ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - /* 30 */ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - /* 40 */ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - /* 50 */ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - /* 60 */ 312, 312, 312, 312, 312, 312, 312, 1382, 77, 90, - /* 70 */ 82, 1354, 1342, 77, 77, 77, 77, 77, 256, -1, - /* 80 */ 948, 177, 177, 177, 44, 44, 44, 44, 44, 44, - /* 90 */ 44, 44, 44, 44, 44, 42, 44, 42, 44, 42, - /* 100 */ 44, 316, 21, 281, 111, 29, 29, 149, 29, 17, - /* 110 */ 138, 62, 29, 17, 21, 159, 87, 46, 97, 236, - /* 120 */ 199, 176, 125, 97, 176, 125, 97, 94, 46, + /* 0 */ 22, 56, 357, 385, 420, 357, 420, 420, 420, 420, + /* 10 */ 119, 85, 420, 420, 420, 420, 420, 420, 420, 420, + /* 20 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + /* 30 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + /* 40 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + /* 50 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + /* 60 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 1480, + /* 70 */ 91, 205, 63, 533, 454, 91, 91, 91, 91, 91, + /* 80 */ 251, -6, 1067, 122, 122, 122, 27, 27, 27, 27, + /* 90 */ 27, 27, 27, 27, 27, 27, 27, 190, 27, 190, + /* 100 */ 27, 190, 27, 396, 390, 124, 123, 386, 121, 121, + /* 110 */ 95, 121, 106, 202, 135, 121, 106, 124, 66, 96, + /* 120 */ -5, 1, 84, 40, 33, 4, 1, 33, 4, 1, + /* 130 */ -3, -5, }; -#define YY_REDUCE_USE_DFLT (-72) -#define YY_REDUCE_COUNT (79) -#define YY_REDUCE_MIN (-71) -#define YY_REDUCE_MAX (1586) +#define YY_REDUCE_USE_DFLT (-73) +#define YY_REDUCE_COUNT (81) +#define YY_REDUCE_MIN (-72) +#define YY_REDUCE_MAX (1663) static const short yy_reduce_ofst[] = { - /* 0 */ -71, -46, 50, -16, 223, 194, 170, 112, 763, 741, - /* 10 */ 712, 687, 665, 636, 611, 589, 560, 535, 513, 484, - /* 20 */ 459, 437, 408, 383, 361, 332, 305, 788, 839, 817, - /* 30 */ 864, 899, 921, 962, 940, 1245, 1222, 1200, 1177, 1158, - /* 40 */ 1135, 1113, 1090, 1071, 1048, 1026, 1003, 984, 1333, 1311, - /* 50 */ 1289, 1381, 1362, 1586, 1567, 1559, 1536, 1528, 1505, 1496, - /* 60 */ 1477, 1469, 1446, 1438, 1409, 1400, 1390, 85, 152, 43, - /* 70 */ 63, 253, 253, 252, 249, 248, 222, 220, 167, 164, + /* 0 */ -72, -38, 169, 140, 115, 295, 267, 245, 220, 198, + /* 10 */ 882, 860, 826, 804, 782, 748, 726, 704, 670, 648, + /* 20 */ 626, 592, 570, 548, 514, 492, 470, 435, 412, 904, + /* 30 */ 960, 938, 982, 1016, 1038, 1082, 1060, 1371, 1348, 1326, + /* 40 */ 1301, 1282, 1259, 1237, 1212, 1193, 1170, 1148, 1123, 1104, + /* 50 */ 1437, 1415, 1390, 1482, 1460, 1663, 1655, 1636, 1628, 1609, + /* 60 */ 1601, 1582, 1574, 1555, 1547, 1528, 1518, 1509, 1490, -40, + /* 70 */ 328, 108, 273, 217, 217, 197, 193, 189, 160, 159, + /* 80 */ 73, 3, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 321, 321, 321, 311, 318, 321, 321, 321, 321, 321, - /* 10 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 20 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 30 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 40 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 50 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 60 */ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - /* 70 */ 289, 321, 321, 321, 321, 321, 321, 321, 321, 311, - /* 80 */ 285, 245, 247, 246, 261, 260, 259, 258, 257, 256, - /* 90 */ 255, 254, 253, 252, 248, 266, 251, 268, 250, 267, - /* 100 */ 249, 321, 235, 321, 321, 262, 265, 321, 264, 243, - /* 110 */ 321, 285, 263, 244, 234, 232, 321, 295, 238, 321, - /* 120 */ 321, 241, 239, 236, 242, 240, 237, 321, 321, 212, - /* 130 */ 210, 216, 231, 230, 229, 228, 227, 226, 225, 224, - /* 140 */ 223, 222, 221, 319, 320, 317, 316, 307, 305, 304, - /* 150 */ 309, 303, 314, 313, 312, 310, 308, 306, 302, 269, - /* 160 */ 301, 300, 299, 298, 297, 296, 295, 272, 294, 293, - /* 170 */ 291, 271, 315, 217, 292, 290, 288, 287, 286, 284, - /* 180 */ 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, - /* 190 */ 273, 270, 233, 220, 219, 218, 215, 214, 213, 209, - /* 200 */ 206, 211, 208, 207, + /* 0 */ 333, 333, 333, 333, 319, 333, 326, 333, 333, 333, + /* 10 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 20 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 30 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 40 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 50 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 60 */ 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + /* 70 */ 333, 333, 297, 333, 333, 333, 333, 333, 333, 333, + /* 80 */ 333, 319, 293, 253, 255, 254, 269, 268, 267, 266, + /* 90 */ 265, 264, 263, 262, 261, 260, 256, 274, 259, 276, + /* 100 */ 258, 275, 257, 333, 333, 243, 333, 333, 270, 273, + /* 110 */ 333, 272, 251, 333, 293, 271, 252, 242, 240, 333, + /* 120 */ 303, 246, 333, 333, 249, 247, 244, 250, 248, 245, + /* 130 */ 333, 333, 329, 332, 331, 330, 220, 218, 224, 239, + /* 140 */ 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, + /* 150 */ 327, 328, 325, 324, 315, 313, 312, 317, 311, 322, + /* 160 */ 321, 320, 318, 316, 314, 310, 277, 309, 308, 307, + /* 170 */ 306, 305, 304, 303, 280, 302, 301, 299, 279, 323, + /* 180 */ 225, 300, 298, 296, 295, 294, 292, 291, 290, 289, + /* 190 */ 288, 287, 286, 285, 284, 283, 282, 281, 278, 241, + /* 200 */ 228, 227, 226, 223, 222, 221, 217, 214, 219, 216, + /* 210 */ 215, }; /* The next table maps tokens into fallback tokens. If a construct @@ -632,32 +651,33 @@ void grn_expr_parserTrace(FILE *TraceFILE, char *zTracePrompt){ /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { - "$", "LOGICAL_AND", "LOGICAL_AND_NOT", "LOGICAL_OR", - "QSTRING", "PARENL", "PARENR", "RELATIVE_OP", - "IDENTIFIER", "BRACEL", "BRACER", "EVAL", - "COMMA", "ASSIGN", "STAR_ASSIGN", "SLASH_ASSIGN", - "MOD_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "SHIFTL_ASSIGN", - "SHIFTR_ASSIGN", "SHIFTRR_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", - "OR_ASSIGN", "QUESTION", "COLON", "BITWISE_OR", - "BITWISE_XOR", "BITWISE_AND", "EQUAL", "NOT_EQUAL", - "LESS", "GREATER", "LESS_EQUAL", "GREATER_EQUAL", - "IN", "MATCH", "NEAR", "NEAR2", - "SIMILAR", "TERM_EXTRACT", "LCP", "PREFIX", - "SUFFIX", "SHIFTL", "SHIFTR", "SHIFTRR", - "PLUS", "MINUS", "STAR", "SLASH", - "MOD", "DELETE", "INCR", "DECR", - "NOT", "BITWISE_NOT", "ADJUST", "EXACT", - "PARTIAL", "UNSPLIT", "DECIMAL", "HEX_INTEGER", - "STRING", "BOOLEAN", "NULL", "BRACKETL", - "BRACKETR", "DOT", "error", "input", - "query", "expression", "query_element", "primary_expression", - "assignment_expression", "conditional_expression", "lefthand_side_expression", "logical_or_expression", - "logical_and_expression", "bitwise_or_expression", "bitwise_xor_expression", "bitwise_and_expression", - "equality_expression", "relational_expression", "shift_expression", "additive_expression", - "multiplicative_expression", "unary_expression", "postfix_expression", "call_expression", - "member_expression", "arguments", "member_expression_part", "object_literal", - "array_literal", "elision", "element_list", "property_name_and_value_list", - "property_name_and_value", "property_name", "argument_list", + "$", "START_OUTPUT_COLUMNS", "LOGICAL_AND", "LOGICAL_AND_NOT", + "LOGICAL_OR", "QSTRING", "PARENL", "PARENR", + "RELATIVE_OP", "IDENTIFIER", "BRACEL", "BRACER", + "EVAL", "COMMA", "ASSIGN", "STAR_ASSIGN", + "SLASH_ASSIGN", "MOD_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", + "SHIFTL_ASSIGN", "SHIFTR_ASSIGN", "SHIFTRR_ASSIGN", "AND_ASSIGN", + "XOR_ASSIGN", "OR_ASSIGN", "QUESTION", "COLON", + "BITWISE_OR", "BITWISE_XOR", "BITWISE_AND", "EQUAL", + "NOT_EQUAL", "LESS", "GREATER", "LESS_EQUAL", + "GREATER_EQUAL", "IN", "MATCH", "NEAR", + "NEAR2", "SIMILAR", "TERM_EXTRACT", "LCP", + "PREFIX", "SUFFIX", "SHIFTL", "SHIFTR", + "SHIFTRR", "PLUS", "MINUS", "STAR", + "SLASH", "MOD", "DELETE", "INCR", + "DECR", "NOT", "BITWISE_NOT", "ADJUST", + "EXACT", "PARTIAL", "UNSPLIT", "DECIMAL", + "HEX_INTEGER", "STRING", "BOOLEAN", "NULL", + "BRACKETL", "BRACKETR", "DOT", "error", + "input", "query", "expression", "output_columns", + "query_element", "primary_expression", "assignment_expression", "conditional_expression", + "lefthand_side_expression", "logical_or_expression", "logical_and_expression", "bitwise_or_expression", + "bitwise_xor_expression", "bitwise_and_expression", "equality_expression", "relational_expression", + "shift_expression", "additive_expression", "multiplicative_expression", "unary_expression", + "postfix_expression", "call_expression", "member_expression", "arguments", + "member_expression_part", "object_literal", "array_literal", "elision", + "element_list", "property_name_and_value_list", "property_name_and_value", "property_name", + "argument_list", "output_column", }; #endif /* NDEBUG */ @@ -667,121 +687,126 @@ static const char *const yyTokenName[] = { static const char *const yyRuleName[] = { /* 0 */ "input ::= query", /* 1 */ "input ::= expression", - /* 2 */ "query ::= query_element", - /* 3 */ "query ::= query query_element", - /* 4 */ "query ::= query LOGICAL_AND query_element", - /* 5 */ "query ::= query LOGICAL_AND_NOT query_element", - /* 6 */ "query ::= query LOGICAL_OR query_element", - /* 7 */ "query_element ::= QSTRING", - /* 8 */ "query_element ::= PARENL query PARENR", - /* 9 */ "query_element ::= RELATIVE_OP query_element", - /* 10 */ "query_element ::= IDENTIFIER RELATIVE_OP query_element", - /* 11 */ "query_element ::= BRACEL expression BRACER", - /* 12 */ "query_element ::= EVAL primary_expression", - /* 13 */ "expression ::= assignment_expression", - /* 14 */ "expression ::= expression COMMA assignment_expression", - /* 15 */ "assignment_expression ::= conditional_expression", - /* 16 */ "assignment_expression ::= lefthand_side_expression ASSIGN assignment_expression", - /* 17 */ "assignment_expression ::= lefthand_side_expression STAR_ASSIGN assignment_expression", - /* 18 */ "assignment_expression ::= lefthand_side_expression SLASH_ASSIGN assignment_expression", - /* 19 */ "assignment_expression ::= lefthand_side_expression MOD_ASSIGN assignment_expression", - /* 20 */ "assignment_expression ::= lefthand_side_expression PLUS_ASSIGN assignment_expression", - /* 21 */ "assignment_expression ::= lefthand_side_expression MINUS_ASSIGN assignment_expression", - /* 22 */ "assignment_expression ::= lefthand_side_expression SHIFTL_ASSIGN assignment_expression", - /* 23 */ "assignment_expression ::= lefthand_side_expression SHIFTR_ASSIGN assignment_expression", - /* 24 */ "assignment_expression ::= lefthand_side_expression SHIFTRR_ASSIGN assignment_expression", - /* 25 */ "assignment_expression ::= lefthand_side_expression AND_ASSIGN assignment_expression", - /* 26 */ "assignment_expression ::= lefthand_side_expression XOR_ASSIGN assignment_expression", - /* 27 */ "assignment_expression ::= lefthand_side_expression OR_ASSIGN assignment_expression", - /* 28 */ "conditional_expression ::= logical_or_expression", - /* 29 */ "conditional_expression ::= logical_or_expression QUESTION assignment_expression COLON assignment_expression", - /* 30 */ "logical_or_expression ::= logical_and_expression", - /* 31 */ "logical_or_expression ::= logical_or_expression LOGICAL_OR logical_and_expression", - /* 32 */ "logical_and_expression ::= bitwise_or_expression", - /* 33 */ "logical_and_expression ::= logical_and_expression LOGICAL_AND bitwise_or_expression", - /* 34 */ "logical_and_expression ::= logical_and_expression LOGICAL_AND_NOT bitwise_or_expression", - /* 35 */ "bitwise_or_expression ::= bitwise_xor_expression", - /* 36 */ "bitwise_or_expression ::= bitwise_or_expression BITWISE_OR bitwise_xor_expression", - /* 37 */ "bitwise_xor_expression ::= bitwise_and_expression", - /* 38 */ "bitwise_xor_expression ::= bitwise_xor_expression BITWISE_XOR bitwise_and_expression", - /* 39 */ "bitwise_and_expression ::= equality_expression", - /* 40 */ "bitwise_and_expression ::= bitwise_and_expression BITWISE_AND equality_expression", - /* 41 */ "equality_expression ::= relational_expression", - /* 42 */ "equality_expression ::= equality_expression EQUAL relational_expression", - /* 43 */ "equality_expression ::= equality_expression NOT_EQUAL relational_expression", - /* 44 */ "relational_expression ::= shift_expression", - /* 45 */ "relational_expression ::= relational_expression LESS shift_expression", - /* 46 */ "relational_expression ::= relational_expression GREATER shift_expression", - /* 47 */ "relational_expression ::= relational_expression LESS_EQUAL shift_expression", - /* 48 */ "relational_expression ::= relational_expression GREATER_EQUAL shift_expression", - /* 49 */ "relational_expression ::= relational_expression IN shift_expression", - /* 50 */ "relational_expression ::= relational_expression MATCH shift_expression", - /* 51 */ "relational_expression ::= relational_expression NEAR shift_expression", - /* 52 */ "relational_expression ::= relational_expression NEAR2 shift_expression", - /* 53 */ "relational_expression ::= relational_expression SIMILAR shift_expression", - /* 54 */ "relational_expression ::= relational_expression TERM_EXTRACT shift_expression", - /* 55 */ "relational_expression ::= relational_expression LCP shift_expression", - /* 56 */ "relational_expression ::= relational_expression PREFIX shift_expression", - /* 57 */ "relational_expression ::= relational_expression SUFFIX shift_expression", - /* 58 */ "shift_expression ::= additive_expression", - /* 59 */ "shift_expression ::= shift_expression SHIFTL additive_expression", - /* 60 */ "shift_expression ::= shift_expression SHIFTR additive_expression", - /* 61 */ "shift_expression ::= shift_expression SHIFTRR additive_expression", - /* 62 */ "additive_expression ::= multiplicative_expression", - /* 63 */ "additive_expression ::= additive_expression PLUS multiplicative_expression", - /* 64 */ "additive_expression ::= additive_expression MINUS multiplicative_expression", - /* 65 */ "multiplicative_expression ::= unary_expression", - /* 66 */ "multiplicative_expression ::= multiplicative_expression STAR unary_expression", - /* 67 */ "multiplicative_expression ::= multiplicative_expression SLASH unary_expression", - /* 68 */ "multiplicative_expression ::= multiplicative_expression MOD unary_expression", - /* 69 */ "unary_expression ::= postfix_expression", - /* 70 */ "unary_expression ::= DELETE unary_expression", - /* 71 */ "unary_expression ::= INCR unary_expression", - /* 72 */ "unary_expression ::= DECR unary_expression", - /* 73 */ "unary_expression ::= PLUS unary_expression", - /* 74 */ "unary_expression ::= MINUS unary_expression", - /* 75 */ "unary_expression ::= NOT unary_expression", - /* 76 */ "unary_expression ::= BITWISE_NOT unary_expression", - /* 77 */ "unary_expression ::= ADJUST unary_expression", - /* 78 */ "unary_expression ::= EXACT unary_expression", - /* 79 */ "unary_expression ::= PARTIAL unary_expression", - /* 80 */ "unary_expression ::= UNSPLIT unary_expression", - /* 81 */ "postfix_expression ::= lefthand_side_expression", - /* 82 */ "postfix_expression ::= lefthand_side_expression INCR", - /* 83 */ "postfix_expression ::= lefthand_side_expression DECR", - /* 84 */ "lefthand_side_expression ::= call_expression", - /* 85 */ "lefthand_side_expression ::= member_expression", - /* 86 */ "call_expression ::= member_expression arguments", - /* 87 */ "member_expression ::= primary_expression", - /* 88 */ "member_expression ::= member_expression member_expression_part", - /* 89 */ "primary_expression ::= object_literal", - /* 90 */ "primary_expression ::= PARENL expression PARENR", - /* 91 */ "primary_expression ::= IDENTIFIER", - /* 92 */ "primary_expression ::= array_literal", - /* 93 */ "primary_expression ::= DECIMAL", - /* 94 */ "primary_expression ::= HEX_INTEGER", - /* 95 */ "primary_expression ::= STRING", - /* 96 */ "primary_expression ::= BOOLEAN", - /* 97 */ "primary_expression ::= NULL", - /* 98 */ "array_literal ::= BRACKETL elision BRACKETR", - /* 99 */ "array_literal ::= BRACKETL element_list elision BRACKETR", - /* 100 */ "array_literal ::= BRACKETL element_list BRACKETR", - /* 101 */ "elision ::= COMMA", - /* 102 */ "elision ::= elision COMMA", - /* 103 */ "element_list ::= assignment_expression", - /* 104 */ "element_list ::= elision assignment_expression", - /* 105 */ "element_list ::= element_list elision assignment_expression", - /* 106 */ "object_literal ::= BRACEL property_name_and_value_list BRACER", - /* 107 */ "property_name_and_value_list ::=", - /* 108 */ "property_name_and_value_list ::= property_name_and_value_list COMMA property_name_and_value", - /* 109 */ "property_name_and_value ::= property_name COLON assignment_expression", - /* 110 */ "property_name ::= IDENTIFIER|STRING|DECIMAL", - /* 111 */ "member_expression_part ::= BRACKETL expression BRACKETR", - /* 112 */ "member_expression_part ::= DOT IDENTIFIER", - /* 113 */ "arguments ::= PARENL argument_list PARENR", - /* 114 */ "argument_list ::=", - /* 115 */ "argument_list ::= assignment_expression", - /* 116 */ "argument_list ::= argument_list COMMA assignment_expression", + /* 2 */ "input ::= START_OUTPUT_COLUMNS output_columns", + /* 3 */ "query ::= query_element", + /* 4 */ "query ::= query query_element", + /* 5 */ "query ::= query LOGICAL_AND query_element", + /* 6 */ "query ::= query LOGICAL_AND_NOT query_element", + /* 7 */ "query ::= query LOGICAL_OR query_element", + /* 8 */ "query_element ::= QSTRING", + /* 9 */ "query_element ::= PARENL query PARENR", + /* 10 */ "query_element ::= RELATIVE_OP query_element", + /* 11 */ "query_element ::= IDENTIFIER RELATIVE_OP query_element", + /* 12 */ "query_element ::= BRACEL expression BRACER", + /* 13 */ "query_element ::= EVAL primary_expression", + /* 14 */ "expression ::= assignment_expression", + /* 15 */ "expression ::= expression COMMA assignment_expression", + /* 16 */ "assignment_expression ::= conditional_expression", + /* 17 */ "assignment_expression ::= lefthand_side_expression ASSIGN assignment_expression", + /* 18 */ "assignment_expression ::= lefthand_side_expression STAR_ASSIGN assignment_expression", + /* 19 */ "assignment_expression ::= lefthand_side_expression SLASH_ASSIGN assignment_expression", + /* 20 */ "assignment_expression ::= lefthand_side_expression MOD_ASSIGN assignment_expression", + /* 21 */ "assignment_expression ::= lefthand_side_expression PLUS_ASSIGN assignment_expression", + /* 22 */ "assignment_expression ::= lefthand_side_expression MINUS_ASSIGN assignment_expression", + /* 23 */ "assignment_expression ::= lefthand_side_expression SHIFTL_ASSIGN assignment_expression", + /* 24 */ "assignment_expression ::= lefthand_side_expression SHIFTR_ASSIGN assignment_expression", + /* 25 */ "assignment_expression ::= lefthand_side_expression SHIFTRR_ASSIGN assignment_expression", + /* 26 */ "assignment_expression ::= lefthand_side_expression AND_ASSIGN assignment_expression", + /* 27 */ "assignment_expression ::= lefthand_side_expression XOR_ASSIGN assignment_expression", + /* 28 */ "assignment_expression ::= lefthand_side_expression OR_ASSIGN assignment_expression", + /* 29 */ "conditional_expression ::= logical_or_expression", + /* 30 */ "conditional_expression ::= logical_or_expression QUESTION assignment_expression COLON assignment_expression", + /* 31 */ "logical_or_expression ::= logical_and_expression", + /* 32 */ "logical_or_expression ::= logical_or_expression LOGICAL_OR logical_and_expression", + /* 33 */ "logical_and_expression ::= bitwise_or_expression", + /* 34 */ "logical_and_expression ::= logical_and_expression LOGICAL_AND bitwise_or_expression", + /* 35 */ "logical_and_expression ::= logical_and_expression LOGICAL_AND_NOT bitwise_or_expression", + /* 36 */ "bitwise_or_expression ::= bitwise_xor_expression", + /* 37 */ "bitwise_or_expression ::= bitwise_or_expression BITWISE_OR bitwise_xor_expression", + /* 38 */ "bitwise_xor_expression ::= bitwise_and_expression", + /* 39 */ "bitwise_xor_expression ::= bitwise_xor_expression BITWISE_XOR bitwise_and_expression", + /* 40 */ "bitwise_and_expression ::= equality_expression", + /* 41 */ "bitwise_and_expression ::= bitwise_and_expression BITWISE_AND equality_expression", + /* 42 */ "equality_expression ::= relational_expression", + /* 43 */ "equality_expression ::= equality_expression EQUAL relational_expression", + /* 44 */ "equality_expression ::= equality_expression NOT_EQUAL relational_expression", + /* 45 */ "relational_expression ::= shift_expression", + /* 46 */ "relational_expression ::= relational_expression LESS shift_expression", + /* 47 */ "relational_expression ::= relational_expression GREATER shift_expression", + /* 48 */ "relational_expression ::= relational_expression LESS_EQUAL shift_expression", + /* 49 */ "relational_expression ::= relational_expression GREATER_EQUAL shift_expression", + /* 50 */ "relational_expression ::= relational_expression IN shift_expression", + /* 51 */ "relational_expression ::= relational_expression MATCH shift_expression", + /* 52 */ "relational_expression ::= relational_expression NEAR shift_expression", + /* 53 */ "relational_expression ::= relational_expression NEAR2 shift_expression", + /* 54 */ "relational_expression ::= relational_expression SIMILAR shift_expression", + /* 55 */ "relational_expression ::= relational_expression TERM_EXTRACT shift_expression", + /* 56 */ "relational_expression ::= relational_expression LCP shift_expression", + /* 57 */ "relational_expression ::= relational_expression PREFIX shift_expression", + /* 58 */ "relational_expression ::= relational_expression SUFFIX shift_expression", + /* 59 */ "shift_expression ::= additive_expression", + /* 60 */ "shift_expression ::= shift_expression SHIFTL additive_expression", + /* 61 */ "shift_expression ::= shift_expression SHIFTR additive_expression", + /* 62 */ "shift_expression ::= shift_expression SHIFTRR additive_expression", + /* 63 */ "additive_expression ::= multiplicative_expression", + /* 64 */ "additive_expression ::= additive_expression PLUS multiplicative_expression", + /* 65 */ "additive_expression ::= additive_expression MINUS multiplicative_expression", + /* 66 */ "multiplicative_expression ::= unary_expression", + /* 67 */ "multiplicative_expression ::= multiplicative_expression STAR unary_expression", + /* 68 */ "multiplicative_expression ::= multiplicative_expression SLASH unary_expression", + /* 69 */ "multiplicative_expression ::= multiplicative_expression MOD unary_expression", + /* 70 */ "unary_expression ::= postfix_expression", + /* 71 */ "unary_expression ::= DELETE unary_expression", + /* 72 */ "unary_expression ::= INCR unary_expression", + /* 73 */ "unary_expression ::= DECR unary_expression", + /* 74 */ "unary_expression ::= PLUS unary_expression", + /* 75 */ "unary_expression ::= MINUS unary_expression", + /* 76 */ "unary_expression ::= NOT unary_expression", + /* 77 */ "unary_expression ::= BITWISE_NOT unary_expression", + /* 78 */ "unary_expression ::= ADJUST unary_expression", + /* 79 */ "unary_expression ::= EXACT unary_expression", + /* 80 */ "unary_expression ::= PARTIAL unary_expression", + /* 81 */ "unary_expression ::= UNSPLIT unary_expression", + /* 82 */ "postfix_expression ::= lefthand_side_expression", + /* 83 */ "postfix_expression ::= lefthand_side_expression INCR", + /* 84 */ "postfix_expression ::= lefthand_side_expression DECR", + /* 85 */ "lefthand_side_expression ::= call_expression", + /* 86 */ "lefthand_side_expression ::= member_expression", + /* 87 */ "call_expression ::= member_expression arguments", + /* 88 */ "member_expression ::= primary_expression", + /* 89 */ "member_expression ::= member_expression member_expression_part", + /* 90 */ "primary_expression ::= object_literal", + /* 91 */ "primary_expression ::= PARENL expression PARENR", + /* 92 */ "primary_expression ::= IDENTIFIER", + /* 93 */ "primary_expression ::= array_literal", + /* 94 */ "primary_expression ::= DECIMAL", + /* 95 */ "primary_expression ::= HEX_INTEGER", + /* 96 */ "primary_expression ::= STRING", + /* 97 */ "primary_expression ::= BOOLEAN", + /* 98 */ "primary_expression ::= NULL", + /* 99 */ "array_literal ::= BRACKETL elision BRACKETR", + /* 100 */ "array_literal ::= BRACKETL element_list elision BRACKETR", + /* 101 */ "array_literal ::= BRACKETL element_list BRACKETR", + /* 102 */ "elision ::= COMMA", + /* 103 */ "elision ::= elision COMMA", + /* 104 */ "element_list ::= assignment_expression", + /* 105 */ "element_list ::= elision assignment_expression", + /* 106 */ "element_list ::= element_list elision assignment_expression", + /* 107 */ "object_literal ::= BRACEL property_name_and_value_list BRACER", + /* 108 */ "property_name_and_value_list ::=", + /* 109 */ "property_name_and_value_list ::= property_name_and_value_list COMMA property_name_and_value", + /* 110 */ "property_name_and_value ::= property_name COLON assignment_expression", + /* 111 */ "property_name ::= IDENTIFIER|STRING|DECIMAL", + /* 112 */ "member_expression_part ::= BRACKETL expression BRACKETR", + /* 113 */ "member_expression_part ::= DOT IDENTIFIER", + /* 114 */ "arguments ::= PARENL argument_list PARENR", + /* 115 */ "argument_list ::=", + /* 116 */ "argument_list ::= assignment_expression", + /* 117 */ "argument_list ::= argument_list COMMA assignment_expression", + /* 118 */ "output_columns ::= output_column", + /* 119 */ "output_columns ::= output_columns COMMA output_column", + /* 120 */ "output_column ::= STAR", + /* 121 */ "output_column ::= assignment_expression", }; #endif /* NDEBUG */ @@ -1095,123 +1120,128 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ unsigned char nrhs; /* Number of right-hand side symbols in the rule */ } yyRuleInfo[] = { - { 71, 1 }, - { 71, 1 }, + { 72, 1 }, { 72, 1 }, { 72, 2 }, - { 72, 3 }, - { 72, 3 }, - { 72, 3 }, - { 74, 1 }, - { 74, 3 }, - { 74, 2 }, - { 74, 3 }, - { 74, 3 }, - { 74, 2 }, { 73, 1 }, + { 73, 2 }, + { 73, 3 }, + { 73, 3 }, { 73, 3 }, { 76, 1 }, { 76, 3 }, + { 76, 2 }, { 76, 3 }, { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 77, 1 }, - { 77, 5 }, + { 76, 2 }, + { 74, 1 }, + { 74, 3 }, + { 78, 1 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, + { 78, 3 }, { 79, 1 }, - { 79, 3 }, - { 80, 1 }, - { 80, 3 }, - { 80, 3 }, + { 79, 5 }, { 81, 1 }, { 81, 3 }, { 82, 1 }, { 82, 3 }, + { 82, 3 }, { 83, 1 }, { 83, 3 }, { 84, 1 }, { 84, 3 }, - { 84, 3 }, { 85, 1 }, { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, - { 85, 3 }, { 86, 1 }, { 86, 3 }, { 86, 3 }, - { 86, 3 }, { 87, 1 }, { 87, 3 }, { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, + { 87, 3 }, { 88, 1 }, { 88, 3 }, { 88, 3 }, { 88, 3 }, { 89, 1 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, - { 89, 2 }, + { 89, 3 }, + { 89, 3 }, { 90, 1 }, - { 90, 2 }, - { 90, 2 }, - { 78, 1 }, - { 78, 1 }, + { 90, 3 }, + { 90, 3 }, + { 90, 3 }, + { 91, 1 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, + { 91, 2 }, { 91, 2 }, { 92, 1 }, { 92, 2 }, - { 75, 1 }, - { 75, 3 }, - { 75, 1 }, - { 75, 1 }, - { 75, 1 }, - { 75, 1 }, - { 75, 1 }, - { 75, 1 }, - { 75, 1 }, - { 96, 3 }, - { 96, 4 }, - { 96, 3 }, - { 97, 1 }, - { 97, 2 }, - { 98, 1 }, - { 98, 2 }, + { 92, 2 }, + { 80, 1 }, + { 80, 1 }, + { 93, 2 }, + { 94, 1 }, + { 94, 2 }, + { 77, 1 }, + { 77, 3 }, + { 77, 1 }, + { 77, 1 }, + { 77, 1 }, + { 77, 1 }, + { 77, 1 }, + { 77, 1 }, + { 77, 1 }, { 98, 3 }, - { 95, 3 }, - { 99, 0 }, - { 99, 3 }, + { 98, 4 }, + { 98, 3 }, + { 99, 1 }, + { 99, 2 }, + { 100, 1 }, + { 100, 2 }, { 100, 3 }, - { 101, 1 }, - { 94, 3 }, - { 94, 2 }, - { 93, 3 }, - { 102, 0 }, - { 102, 1 }, + { 97, 3 }, + { 101, 0 }, + { 101, 3 }, { 102, 3 }, + { 103, 1 }, + { 96, 3 }, + { 96, 2 }, + { 95, 3 }, + { 104, 0 }, + { 104, 1 }, + { 104, 3 }, + { 75, 1 }, + { 75, 3 }, + { 105, 1 }, + { 105, 1 }, }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1266,354 +1296,355 @@ static void yy_reduce( ** #line <lineno> <thisfile> ** break; */ - case 3: /* query ::= query query_element */ -#line 29 "ecmascript.y" + case 4: /* query ::= query query_element */ +#line 30 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, grn_int32_value_at(&efsi->op_stack, -1), 2); } -#line 1275 "ecmascript.c" +#line 1305 "ecmascript.c" break; - case 4: /* query ::= query LOGICAL_AND query_element */ - case 33: /* logical_and_expression ::= logical_and_expression LOGICAL_AND bitwise_or_expression */ yytestcase(yyruleno==33); -#line 32 "ecmascript.y" + case 5: /* query ::= query LOGICAL_AND query_element */ + case 34: /* logical_and_expression ::= logical_and_expression LOGICAL_AND bitwise_or_expression */ yytestcase(yyruleno==34); +#line 33 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_AND, 2); } -#line 1283 "ecmascript.c" +#line 1313 "ecmascript.c" break; - case 5: /* query ::= query LOGICAL_AND_NOT query_element */ - case 34: /* logical_and_expression ::= logical_and_expression LOGICAL_AND_NOT bitwise_or_expression */ yytestcase(yyruleno==34); -#line 35 "ecmascript.y" + case 6: /* query ::= query LOGICAL_AND_NOT query_element */ + case 35: /* logical_and_expression ::= logical_and_expression LOGICAL_AND_NOT bitwise_or_expression */ yytestcase(yyruleno==35); +#line 36 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_AND_NOT, 2); } -#line 1291 "ecmascript.c" +#line 1321 "ecmascript.c" break; - case 6: /* query ::= query LOGICAL_OR query_element */ - case 31: /* logical_or_expression ::= logical_or_expression LOGICAL_OR logical_and_expression */ yytestcase(yyruleno==31); -#line 38 "ecmascript.y" + case 7: /* query ::= query LOGICAL_OR query_element */ + case 32: /* logical_or_expression ::= logical_or_expression LOGICAL_OR logical_and_expression */ yytestcase(yyruleno==32); +#line 39 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_OR, 2); } -#line 1299 "ecmascript.c" +#line 1329 "ecmascript.c" break; - case 9: /* query_element ::= RELATIVE_OP query_element */ -#line 45 "ecmascript.y" + case 10: /* query_element ::= RELATIVE_OP query_element */ +#line 46 "ecmascript.y" { int mode; GRN_UINT32_POP(&efsi->mode_stack, mode); } -#line 1307 "ecmascript.c" +#line 1337 "ecmascript.c" break; - case 10: /* query_element ::= IDENTIFIER RELATIVE_OP query_element */ -#line 49 "ecmascript.y" + case 11: /* query_element ::= IDENTIFIER RELATIVE_OP query_element */ +#line 50 "ecmascript.y" { int mode; grn_obj *c; GRN_PTR_POP(&efsi->column_stack, c); GRN_UINT32_POP(&efsi->mode_stack, mode); } -#line 1317 "ecmascript.c" +#line 1347 "ecmascript.c" break; - case 11: /* query_element ::= BRACEL expression BRACER */ - case 12: /* query_element ::= EVAL primary_expression */ yytestcase(yyruleno==12); -#line 55 "ecmascript.y" + case 12: /* query_element ::= BRACEL expression BRACER */ + case 13: /* query_element ::= EVAL primary_expression */ yytestcase(yyruleno==13); +#line 56 "ecmascript.y" { efsi->flags = efsi->default_flags; } -#line 1325 "ecmascript.c" +#line 1355 "ecmascript.c" break; - case 14: /* expression ::= expression COMMA assignment_expression */ -#line 63 "ecmascript.y" + case 15: /* expression ::= expression COMMA assignment_expression */ + case 119: /* output_columns ::= output_columns COMMA output_column */ yytestcase(yyruleno==119); +#line 64 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_COMMA, 2); } -#line 1332 "ecmascript.c" +#line 1363 "ecmascript.c" break; - case 16: /* assignment_expression ::= lefthand_side_expression ASSIGN assignment_expression */ -#line 68 "ecmascript.y" + case 17: /* assignment_expression ::= lefthand_side_expression ASSIGN assignment_expression */ +#line 69 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ASSIGN, 2); } -#line 1339 "ecmascript.c" +#line 1370 "ecmascript.c" break; - case 17: /* assignment_expression ::= lefthand_side_expression STAR_ASSIGN assignment_expression */ -#line 71 "ecmascript.y" + case 18: /* assignment_expression ::= lefthand_side_expression STAR_ASSIGN assignment_expression */ +#line 72 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_STAR_ASSIGN, 2); } -#line 1346 "ecmascript.c" +#line 1377 "ecmascript.c" break; - case 18: /* assignment_expression ::= lefthand_side_expression SLASH_ASSIGN assignment_expression */ -#line 74 "ecmascript.y" + case 19: /* assignment_expression ::= lefthand_side_expression SLASH_ASSIGN assignment_expression */ +#line 75 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SLASH_ASSIGN, 2); } -#line 1353 "ecmascript.c" +#line 1384 "ecmascript.c" break; - case 19: /* assignment_expression ::= lefthand_side_expression MOD_ASSIGN assignment_expression */ -#line 77 "ecmascript.y" + case 20: /* assignment_expression ::= lefthand_side_expression MOD_ASSIGN assignment_expression */ +#line 78 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MOD_ASSIGN, 2); } -#line 1360 "ecmascript.c" +#line 1391 "ecmascript.c" break; - case 20: /* assignment_expression ::= lefthand_side_expression PLUS_ASSIGN assignment_expression */ -#line 80 "ecmascript.y" + case 21: /* assignment_expression ::= lefthand_side_expression PLUS_ASSIGN assignment_expression */ +#line 81 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS_ASSIGN, 2); } -#line 1367 "ecmascript.c" +#line 1398 "ecmascript.c" break; - case 21: /* assignment_expression ::= lefthand_side_expression MINUS_ASSIGN assignment_expression */ -#line 83 "ecmascript.y" + case 22: /* assignment_expression ::= lefthand_side_expression MINUS_ASSIGN assignment_expression */ +#line 84 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS_ASSIGN, 2); } -#line 1374 "ecmascript.c" +#line 1405 "ecmascript.c" break; - case 22: /* assignment_expression ::= lefthand_side_expression SHIFTL_ASSIGN assignment_expression */ -#line 86 "ecmascript.y" + case 23: /* assignment_expression ::= lefthand_side_expression SHIFTL_ASSIGN assignment_expression */ +#line 87 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTL_ASSIGN, 2); } -#line 1381 "ecmascript.c" +#line 1412 "ecmascript.c" break; - case 23: /* assignment_expression ::= lefthand_side_expression SHIFTR_ASSIGN assignment_expression */ -#line 89 "ecmascript.y" + case 24: /* assignment_expression ::= lefthand_side_expression SHIFTR_ASSIGN assignment_expression */ +#line 90 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTR_ASSIGN, 2); } -#line 1388 "ecmascript.c" +#line 1419 "ecmascript.c" break; - case 24: /* assignment_expression ::= lefthand_side_expression SHIFTRR_ASSIGN assignment_expression */ -#line 92 "ecmascript.y" + case 25: /* assignment_expression ::= lefthand_side_expression SHIFTRR_ASSIGN assignment_expression */ +#line 93 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTRR_ASSIGN, 2); } -#line 1395 "ecmascript.c" +#line 1426 "ecmascript.c" break; - case 25: /* assignment_expression ::= lefthand_side_expression AND_ASSIGN assignment_expression */ -#line 95 "ecmascript.y" + case 26: /* assignment_expression ::= lefthand_side_expression AND_ASSIGN assignment_expression */ +#line 96 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_AND_ASSIGN, 2); } -#line 1402 "ecmascript.c" +#line 1433 "ecmascript.c" break; - case 26: /* assignment_expression ::= lefthand_side_expression XOR_ASSIGN assignment_expression */ -#line 98 "ecmascript.y" + case 27: /* assignment_expression ::= lefthand_side_expression XOR_ASSIGN assignment_expression */ +#line 99 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_XOR_ASSIGN, 2); } -#line 1409 "ecmascript.c" +#line 1440 "ecmascript.c" break; - case 27: /* assignment_expression ::= lefthand_side_expression OR_ASSIGN assignment_expression */ -#line 101 "ecmascript.y" + case 28: /* assignment_expression ::= lefthand_side_expression OR_ASSIGN assignment_expression */ +#line 102 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_OR_ASSIGN, 2); } -#line 1416 "ecmascript.c" +#line 1447 "ecmascript.c" break; - case 29: /* conditional_expression ::= logical_or_expression QUESTION assignment_expression COLON assignment_expression */ -#line 106 "ecmascript.y" + case 30: /* conditional_expression ::= logical_or_expression QUESTION assignment_expression COLON assignment_expression */ +#line 107 "ecmascript.y" { grn_expr *e = (grn_expr *)efsi->e; e->codes[yymsp[-3].minor.yy0].nargs = yymsp[-1].minor.yy0 - yymsp[-3].minor.yy0; e->codes[yymsp[-1].minor.yy0].nargs = e->codes_curr - yymsp[-1].minor.yy0 - 1; } -#line 1425 "ecmascript.c" +#line 1456 "ecmascript.c" break; - case 36: /* bitwise_or_expression ::= bitwise_or_expression BITWISE_OR bitwise_xor_expression */ -#line 126 "ecmascript.y" + case 37: /* bitwise_or_expression ::= bitwise_or_expression BITWISE_OR bitwise_xor_expression */ +#line 127 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_OR, 2); } -#line 1432 "ecmascript.c" +#line 1463 "ecmascript.c" break; - case 38: /* bitwise_xor_expression ::= bitwise_xor_expression BITWISE_XOR bitwise_and_expression */ -#line 131 "ecmascript.y" + case 39: /* bitwise_xor_expression ::= bitwise_xor_expression BITWISE_XOR bitwise_and_expression */ +#line 132 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_XOR, 2); } -#line 1439 "ecmascript.c" +#line 1470 "ecmascript.c" break; - case 40: /* bitwise_and_expression ::= bitwise_and_expression BITWISE_AND equality_expression */ -#line 136 "ecmascript.y" + case 41: /* bitwise_and_expression ::= bitwise_and_expression BITWISE_AND equality_expression */ +#line 137 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_AND, 2); } -#line 1446 "ecmascript.c" +#line 1477 "ecmascript.c" break; - case 42: /* equality_expression ::= equality_expression EQUAL relational_expression */ -#line 141 "ecmascript.y" + case 43: /* equality_expression ::= equality_expression EQUAL relational_expression */ +#line 142 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_EQUAL, 2); } -#line 1453 "ecmascript.c" +#line 1484 "ecmascript.c" break; - case 43: /* equality_expression ::= equality_expression NOT_EQUAL relational_expression */ -#line 144 "ecmascript.y" + case 44: /* equality_expression ::= equality_expression NOT_EQUAL relational_expression */ +#line 145 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NOT_EQUAL, 2); } -#line 1460 "ecmascript.c" +#line 1491 "ecmascript.c" break; - case 45: /* relational_expression ::= relational_expression LESS shift_expression */ -#line 149 "ecmascript.y" + case 46: /* relational_expression ::= relational_expression LESS shift_expression */ +#line 150 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LESS, 2); } -#line 1467 "ecmascript.c" +#line 1498 "ecmascript.c" break; - case 46: /* relational_expression ::= relational_expression GREATER shift_expression */ -#line 152 "ecmascript.y" + case 47: /* relational_expression ::= relational_expression GREATER shift_expression */ +#line 153 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_GREATER, 2); } -#line 1474 "ecmascript.c" +#line 1505 "ecmascript.c" break; - case 47: /* relational_expression ::= relational_expression LESS_EQUAL shift_expression */ -#line 155 "ecmascript.y" + case 48: /* relational_expression ::= relational_expression LESS_EQUAL shift_expression */ +#line 156 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LESS_EQUAL, 2); } -#line 1481 "ecmascript.c" +#line 1512 "ecmascript.c" break; - case 48: /* relational_expression ::= relational_expression GREATER_EQUAL shift_expression */ -#line 158 "ecmascript.y" + case 49: /* relational_expression ::= relational_expression GREATER_EQUAL shift_expression */ +#line 159 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_GREATER_EQUAL, 2); } -#line 1488 "ecmascript.c" +#line 1519 "ecmascript.c" break; - case 49: /* relational_expression ::= relational_expression IN shift_expression */ -#line 161 "ecmascript.y" + case 50: /* relational_expression ::= relational_expression IN shift_expression */ +#line 162 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_IN, 2); } -#line 1495 "ecmascript.c" +#line 1526 "ecmascript.c" break; - case 50: /* relational_expression ::= relational_expression MATCH shift_expression */ -#line 164 "ecmascript.y" + case 51: /* relational_expression ::= relational_expression MATCH shift_expression */ +#line 165 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MATCH, 2); } -#line 1502 "ecmascript.c" +#line 1533 "ecmascript.c" break; - case 51: /* relational_expression ::= relational_expression NEAR shift_expression */ -#line 167 "ecmascript.y" + case 52: /* relational_expression ::= relational_expression NEAR shift_expression */ +#line 168 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NEAR, 2); } -#line 1509 "ecmascript.c" +#line 1540 "ecmascript.c" break; - case 52: /* relational_expression ::= relational_expression NEAR2 shift_expression */ -#line 170 "ecmascript.y" + case 53: /* relational_expression ::= relational_expression NEAR2 shift_expression */ +#line 171 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NEAR2, 2); } -#line 1516 "ecmascript.c" +#line 1547 "ecmascript.c" break; - case 53: /* relational_expression ::= relational_expression SIMILAR shift_expression */ -#line 173 "ecmascript.y" + case 54: /* relational_expression ::= relational_expression SIMILAR shift_expression */ +#line 174 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SIMILAR, 2); } -#line 1523 "ecmascript.c" +#line 1554 "ecmascript.c" break; - case 54: /* relational_expression ::= relational_expression TERM_EXTRACT shift_expression */ -#line 176 "ecmascript.y" + case 55: /* relational_expression ::= relational_expression TERM_EXTRACT shift_expression */ +#line 177 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_TERM_EXTRACT, 2); } -#line 1530 "ecmascript.c" +#line 1561 "ecmascript.c" break; - case 55: /* relational_expression ::= relational_expression LCP shift_expression */ -#line 179 "ecmascript.y" + case 56: /* relational_expression ::= relational_expression LCP shift_expression */ +#line 180 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LCP, 2); } -#line 1537 "ecmascript.c" +#line 1568 "ecmascript.c" break; - case 56: /* relational_expression ::= relational_expression PREFIX shift_expression */ -#line 182 "ecmascript.y" + case 57: /* relational_expression ::= relational_expression PREFIX shift_expression */ +#line 183 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PREFIX, 2); } -#line 1544 "ecmascript.c" +#line 1575 "ecmascript.c" break; - case 57: /* relational_expression ::= relational_expression SUFFIX shift_expression */ -#line 185 "ecmascript.y" + case 58: /* relational_expression ::= relational_expression SUFFIX shift_expression */ +#line 186 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SUFFIX, 2); } -#line 1551 "ecmascript.c" +#line 1582 "ecmascript.c" break; - case 59: /* shift_expression ::= shift_expression SHIFTL additive_expression */ -#line 190 "ecmascript.y" + case 60: /* shift_expression ::= shift_expression SHIFTL additive_expression */ +#line 191 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTL, 2); } -#line 1558 "ecmascript.c" +#line 1589 "ecmascript.c" break; - case 60: /* shift_expression ::= shift_expression SHIFTR additive_expression */ -#line 193 "ecmascript.y" + case 61: /* shift_expression ::= shift_expression SHIFTR additive_expression */ +#line 194 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTR, 2); } -#line 1565 "ecmascript.c" +#line 1596 "ecmascript.c" break; - case 61: /* shift_expression ::= shift_expression SHIFTRR additive_expression */ -#line 196 "ecmascript.y" + case 62: /* shift_expression ::= shift_expression SHIFTRR additive_expression */ +#line 197 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTRR, 2); } -#line 1572 "ecmascript.c" +#line 1603 "ecmascript.c" break; - case 63: /* additive_expression ::= additive_expression PLUS multiplicative_expression */ -#line 201 "ecmascript.y" + case 64: /* additive_expression ::= additive_expression PLUS multiplicative_expression */ +#line 202 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS, 2); } -#line 1579 "ecmascript.c" +#line 1610 "ecmascript.c" break; - case 64: /* additive_expression ::= additive_expression MINUS multiplicative_expression */ -#line 204 "ecmascript.y" + case 65: /* additive_expression ::= additive_expression MINUS multiplicative_expression */ +#line 205 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS, 2); } -#line 1586 "ecmascript.c" +#line 1617 "ecmascript.c" break; - case 66: /* multiplicative_expression ::= multiplicative_expression STAR unary_expression */ -#line 209 "ecmascript.y" + case 67: /* multiplicative_expression ::= multiplicative_expression STAR unary_expression */ +#line 210 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_STAR, 2); } -#line 1593 "ecmascript.c" +#line 1624 "ecmascript.c" break; - case 67: /* multiplicative_expression ::= multiplicative_expression SLASH unary_expression */ -#line 212 "ecmascript.y" + case 68: /* multiplicative_expression ::= multiplicative_expression SLASH unary_expression */ +#line 213 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SLASH, 2); } -#line 1600 "ecmascript.c" +#line 1631 "ecmascript.c" break; - case 68: /* multiplicative_expression ::= multiplicative_expression MOD unary_expression */ -#line 215 "ecmascript.y" + case 69: /* multiplicative_expression ::= multiplicative_expression MOD unary_expression */ +#line 216 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MOD, 2); } -#line 1607 "ecmascript.c" +#line 1638 "ecmascript.c" break; - case 70: /* unary_expression ::= DELETE unary_expression */ -#line 220 "ecmascript.y" + case 71: /* unary_expression ::= DELETE unary_expression */ +#line 221 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DELETE, 1); } -#line 1614 "ecmascript.c" +#line 1645 "ecmascript.c" break; - case 71: /* unary_expression ::= INCR unary_expression */ -#line 223 "ecmascript.y" + case 72: /* unary_expression ::= INCR unary_expression */ +#line 224 "ecmascript.y" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1631,10 +1662,10 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_INCR, 1); } } -#line 1635 "ecmascript.c" +#line 1666 "ecmascript.c" break; - case 72: /* unary_expression ::= DECR unary_expression */ -#line 240 "ecmascript.y" + case 73: /* unary_expression ::= DECR unary_expression */ +#line 241 "ecmascript.y" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1652,66 +1683,66 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DECR, 1); } } -#line 1656 "ecmascript.c" +#line 1687 "ecmascript.c" break; - case 73: /* unary_expression ::= PLUS unary_expression */ -#line 257 "ecmascript.y" + case 74: /* unary_expression ::= PLUS unary_expression */ +#line 258 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS, 1); } -#line 1663 "ecmascript.c" +#line 1694 "ecmascript.c" break; - case 74: /* unary_expression ::= MINUS unary_expression */ -#line 260 "ecmascript.y" + case 75: /* unary_expression ::= MINUS unary_expression */ +#line 261 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS, 1); } -#line 1670 "ecmascript.c" +#line 1701 "ecmascript.c" break; - case 75: /* unary_expression ::= NOT unary_expression */ -#line 263 "ecmascript.y" + case 76: /* unary_expression ::= NOT unary_expression */ +#line 264 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NOT, 1); } -#line 1677 "ecmascript.c" +#line 1708 "ecmascript.c" break; - case 76: /* unary_expression ::= BITWISE_NOT unary_expression */ -#line 266 "ecmascript.y" + case 77: /* unary_expression ::= BITWISE_NOT unary_expression */ +#line 267 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_NOT, 1); } -#line 1684 "ecmascript.c" +#line 1715 "ecmascript.c" break; - case 77: /* unary_expression ::= ADJUST unary_expression */ -#line 269 "ecmascript.y" + case 78: /* unary_expression ::= ADJUST unary_expression */ +#line 270 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ADJUST, 1); } -#line 1691 "ecmascript.c" +#line 1722 "ecmascript.c" break; - case 78: /* unary_expression ::= EXACT unary_expression */ -#line 272 "ecmascript.y" + case 79: /* unary_expression ::= EXACT unary_expression */ +#line 273 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_EXACT, 1); } -#line 1698 "ecmascript.c" +#line 1729 "ecmascript.c" break; - case 79: /* unary_expression ::= PARTIAL unary_expression */ -#line 275 "ecmascript.y" + case 80: /* unary_expression ::= PARTIAL unary_expression */ +#line 276 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PARTIAL, 1); } -#line 1705 "ecmascript.c" +#line 1736 "ecmascript.c" break; - case 80: /* unary_expression ::= UNSPLIT unary_expression */ -#line 278 "ecmascript.y" + case 81: /* unary_expression ::= UNSPLIT unary_expression */ +#line 279 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_UNSPLIT, 1); } -#line 1712 "ecmascript.c" +#line 1743 "ecmascript.c" break; - case 82: /* postfix_expression ::= lefthand_side_expression INCR */ -#line 283 "ecmascript.y" + case 83: /* postfix_expression ::= lefthand_side_expression INCR */ +#line 284 "ecmascript.y" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1729,10 +1760,10 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_INCR_POST, 1); } } -#line 1733 "ecmascript.c" +#line 1764 "ecmascript.c" break; - case 83: /* postfix_expression ::= lefthand_side_expression DECR */ -#line 300 "ecmascript.y" + case 84: /* postfix_expression ::= lefthand_side_expression DECR */ +#line 301 "ecmascript.y" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1750,84 +1781,94 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DECR_POST, 1); } } -#line 1754 "ecmascript.c" +#line 1785 "ecmascript.c" break; - case 86: /* call_expression ::= member_expression arguments */ -#line 321 "ecmascript.y" + case 87: /* call_expression ::= member_expression arguments */ +#line 322 "ecmascript.y" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_CALL, yymsp[0].minor.yy0); } -#line 1761 "ecmascript.c" +#line 1792 "ecmascript.c" break; - case 113: /* arguments ::= PARENL argument_list PARENR */ -#line 360 "ecmascript.y" + case 114: /* arguments ::= PARENL argument_list PARENR */ +#line 361 "ecmascript.y" { yygotominor.yy0 = yymsp[-1].minor.yy0; } -#line 1766 "ecmascript.c" +#line 1797 "ecmascript.c" break; - case 114: /* argument_list ::= */ -#line 361 "ecmascript.y" + case 115: /* argument_list ::= */ +#line 362 "ecmascript.y" { yygotominor.yy0 = 0; } -#line 1771 "ecmascript.c" +#line 1802 "ecmascript.c" break; - case 115: /* argument_list ::= assignment_expression */ -#line 362 "ecmascript.y" + case 116: /* argument_list ::= assignment_expression */ +#line 363 "ecmascript.y" { yygotominor.yy0 = 1; } -#line 1776 "ecmascript.c" +#line 1807 "ecmascript.c" break; - case 116: /* argument_list ::= argument_list COMMA assignment_expression */ -#line 363 "ecmascript.y" + case 117: /* argument_list ::= argument_list COMMA assignment_expression */ +#line 364 "ecmascript.y" { yygotominor.yy0 = yymsp[-2].minor.yy0 + 1; } -#line 1781 "ecmascript.c" +#line 1812 "ecmascript.c" + break; + case 120: /* output_column ::= STAR */ +#line 371 "ecmascript.y" +{ + grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ALL_COLUMNS, 0); +} +#line 1819 "ecmascript.c" break; default: /* (0) input ::= query */ yytestcase(yyruleno==0); /* (1) input ::= expression */ yytestcase(yyruleno==1); - /* (2) query ::= query_element */ yytestcase(yyruleno==2); - /* (7) query_element ::= QSTRING */ yytestcase(yyruleno==7); - /* (8) query_element ::= PARENL query PARENR */ yytestcase(yyruleno==8); - /* (13) expression ::= assignment_expression */ yytestcase(yyruleno==13); - /* (15) assignment_expression ::= conditional_expression */ yytestcase(yyruleno==15); - /* (28) conditional_expression ::= logical_or_expression */ yytestcase(yyruleno==28); - /* (30) logical_or_expression ::= logical_and_expression */ yytestcase(yyruleno==30); - /* (32) logical_and_expression ::= bitwise_or_expression */ yytestcase(yyruleno==32); - /* (35) bitwise_or_expression ::= bitwise_xor_expression */ yytestcase(yyruleno==35); - /* (37) bitwise_xor_expression ::= bitwise_and_expression */ yytestcase(yyruleno==37); - /* (39) bitwise_and_expression ::= equality_expression */ yytestcase(yyruleno==39); - /* (41) equality_expression ::= relational_expression */ yytestcase(yyruleno==41); - /* (44) relational_expression ::= shift_expression */ yytestcase(yyruleno==44); - /* (58) shift_expression ::= additive_expression */ yytestcase(yyruleno==58); - /* (62) additive_expression ::= multiplicative_expression */ yytestcase(yyruleno==62); - /* (65) multiplicative_expression ::= unary_expression */ yytestcase(yyruleno==65); - /* (69) unary_expression ::= postfix_expression */ yytestcase(yyruleno==69); - /* (81) postfix_expression ::= lefthand_side_expression */ yytestcase(yyruleno==81); - /* (84) lefthand_side_expression ::= call_expression */ yytestcase(yyruleno==84); - /* (85) lefthand_side_expression ::= member_expression */ yytestcase(yyruleno==85); - /* (87) member_expression ::= primary_expression */ yytestcase(yyruleno==87); - /* (88) member_expression ::= member_expression member_expression_part */ yytestcase(yyruleno==88); - /* (89) primary_expression ::= object_literal */ yytestcase(yyruleno==89); - /* (90) primary_expression ::= PARENL expression PARENR */ yytestcase(yyruleno==90); - /* (91) primary_expression ::= IDENTIFIER */ yytestcase(yyruleno==91); - /* (92) primary_expression ::= array_literal */ yytestcase(yyruleno==92); - /* (93) primary_expression ::= DECIMAL */ yytestcase(yyruleno==93); - /* (94) primary_expression ::= HEX_INTEGER */ yytestcase(yyruleno==94); - /* (95) primary_expression ::= STRING */ yytestcase(yyruleno==95); - /* (96) primary_expression ::= BOOLEAN */ yytestcase(yyruleno==96); - /* (97) primary_expression ::= NULL */ yytestcase(yyruleno==97); - /* (98) array_literal ::= BRACKETL elision BRACKETR */ yytestcase(yyruleno==98); - /* (99) array_literal ::= BRACKETL element_list elision BRACKETR */ yytestcase(yyruleno==99); - /* (100) array_literal ::= BRACKETL element_list BRACKETR */ yytestcase(yyruleno==100); - /* (101) elision ::= COMMA */ yytestcase(yyruleno==101); - /* (102) elision ::= elision COMMA */ yytestcase(yyruleno==102); - /* (103) element_list ::= assignment_expression */ yytestcase(yyruleno==103); - /* (104) element_list ::= elision assignment_expression */ yytestcase(yyruleno==104); - /* (105) element_list ::= element_list elision assignment_expression */ yytestcase(yyruleno==105); - /* (106) object_literal ::= BRACEL property_name_and_value_list BRACER */ yytestcase(yyruleno==106); - /* (107) property_name_and_value_list ::= */ yytestcase(yyruleno==107); - /* (108) property_name_and_value_list ::= property_name_and_value_list COMMA property_name_and_value */ yytestcase(yyruleno==108); - /* (109) property_name_and_value ::= property_name COLON assignment_expression */ yytestcase(yyruleno==109); - /* (110) property_name ::= IDENTIFIER|STRING|DECIMAL */ yytestcase(yyruleno==110); - /* (111) member_expression_part ::= BRACKETL expression BRACKETR */ yytestcase(yyruleno==111); - /* (112) member_expression_part ::= DOT IDENTIFIER */ yytestcase(yyruleno==112); + /* (2) input ::= START_OUTPUT_COLUMNS output_columns */ yytestcase(yyruleno==2); + /* (3) query ::= query_element */ yytestcase(yyruleno==3); + /* (8) query_element ::= QSTRING */ yytestcase(yyruleno==8); + /* (9) query_element ::= PARENL query PARENR */ yytestcase(yyruleno==9); + /* (14) expression ::= assignment_expression */ yytestcase(yyruleno==14); + /* (16) assignment_expression ::= conditional_expression */ yytestcase(yyruleno==16); + /* (29) conditional_expression ::= logical_or_expression */ yytestcase(yyruleno==29); + /* (31) logical_or_expression ::= logical_and_expression */ yytestcase(yyruleno==31); + /* (33) logical_and_expression ::= bitwise_or_expression */ yytestcase(yyruleno==33); + /* (36) bitwise_or_expression ::= bitwise_xor_expression */ yytestcase(yyruleno==36); + /* (38) bitwise_xor_expression ::= bitwise_and_expression */ yytestcase(yyruleno==38); + /* (40) bitwise_and_expression ::= equality_expression */ yytestcase(yyruleno==40); + /* (42) equality_expression ::= relational_expression */ yytestcase(yyruleno==42); + /* (45) relational_expression ::= shift_expression */ yytestcase(yyruleno==45); + /* (59) shift_expression ::= additive_expression */ yytestcase(yyruleno==59); + /* (63) additive_expression ::= multiplicative_expression */ yytestcase(yyruleno==63); + /* (66) multiplicative_expression ::= unary_expression */ yytestcase(yyruleno==66); + /* (70) unary_expression ::= postfix_expression */ yytestcase(yyruleno==70); + /* (82) postfix_expression ::= lefthand_side_expression */ yytestcase(yyruleno==82); + /* (85) lefthand_side_expression ::= call_expression */ yytestcase(yyruleno==85); + /* (86) lefthand_side_expression ::= member_expression */ yytestcase(yyruleno==86); + /* (88) member_expression ::= primary_expression */ yytestcase(yyruleno==88); + /* (89) member_expression ::= member_expression member_expression_part */ yytestcase(yyruleno==89); + /* (90) primary_expression ::= object_literal */ yytestcase(yyruleno==90); + /* (91) primary_expression ::= PARENL expression PARENR */ yytestcase(yyruleno==91); + /* (92) primary_expression ::= IDENTIFIER */ yytestcase(yyruleno==92); + /* (93) primary_expression ::= array_literal */ yytestcase(yyruleno==93); + /* (94) primary_expression ::= DECIMAL */ yytestcase(yyruleno==94); + /* (95) primary_expression ::= HEX_INTEGER */ yytestcase(yyruleno==95); + /* (96) primary_expression ::= STRING */ yytestcase(yyruleno==96); + /* (97) primary_expression ::= BOOLEAN */ yytestcase(yyruleno==97); + /* (98) primary_expression ::= NULL */ yytestcase(yyruleno==98); + /* (99) array_literal ::= BRACKETL elision BRACKETR */ yytestcase(yyruleno==99); + /* (100) array_literal ::= BRACKETL element_list elision BRACKETR */ yytestcase(yyruleno==100); + /* (101) array_literal ::= BRACKETL element_list BRACKETR */ yytestcase(yyruleno==101); + /* (102) elision ::= COMMA */ yytestcase(yyruleno==102); + /* (103) elision ::= elision COMMA */ yytestcase(yyruleno==103); + /* (104) element_list ::= assignment_expression */ yytestcase(yyruleno==104); + /* (105) element_list ::= elision assignment_expression */ yytestcase(yyruleno==105); + /* (106) element_list ::= element_list elision assignment_expression */ yytestcase(yyruleno==106); + /* (107) object_literal ::= BRACEL property_name_and_value_list BRACER */ yytestcase(yyruleno==107); + /* (108) property_name_and_value_list ::= */ yytestcase(yyruleno==108); + /* (109) property_name_and_value_list ::= property_name_and_value_list COMMA property_name_and_value */ yytestcase(yyruleno==109); + /* (110) property_name_and_value ::= property_name COLON assignment_expression */ yytestcase(yyruleno==110); + /* (111) property_name ::= IDENTIFIER|STRING|DECIMAL */ yytestcase(yyruleno==111); + /* (112) member_expression_part ::= BRACKETL expression BRACKETR */ yytestcase(yyruleno==112); + /* (113) member_expression_part ::= DOT IDENTIFIER */ yytestcase(yyruleno==113); + /* (118) output_columns ::= output_column */ yytestcase(yyruleno==118); + /* (121) output_column ::= assignment_expression */ yytestcase(yyruleno==121); break; }; yygoto = yyRuleInfo[yyruleno].lhs; @@ -1900,7 +1941,7 @@ static void yy_syntax_error( GRN_OBJ_FIN(ctx, &buf); } } -#line 1904 "ecmascript.c" +#line 1945 "ecmascript.c" grn_expr_parserARG_STORE; /* Suppress warning about unused %extra_argument variable */ } Modified: lib/ecmascript.h (+70 -69) =================================================================== --- lib/ecmascript.h 2012-10-24 09:49:21 +0900 (fecc0e4) +++ lib/ecmascript.h 2012-10-19 16:09:41 +0900 (77a434f) @@ -1,69 +1,70 @@ -#define GRN_EXPR_TOKEN_LOGICAL_AND 1 -#define GRN_EXPR_TOKEN_LOGICAL_AND_NOT 2 -#define GRN_EXPR_TOKEN_LOGICAL_OR 3 -#define GRN_EXPR_TOKEN_QSTRING 4 -#define GRN_EXPR_TOKEN_PARENL 5 -#define GRN_EXPR_TOKEN_PARENR 6 -#define GRN_EXPR_TOKEN_RELATIVE_OP 7 -#define GRN_EXPR_TOKEN_IDENTIFIER 8 -#define GRN_EXPR_TOKEN_BRACEL 9 -#define GRN_EXPR_TOKEN_BRACER 10 -#define GRN_EXPR_TOKEN_EVAL 11 -#define GRN_EXPR_TOKEN_COMMA 12 -#define GRN_EXPR_TOKEN_ASSIGN 13 -#define GRN_EXPR_TOKEN_STAR_ASSIGN 14 -#define GRN_EXPR_TOKEN_SLASH_ASSIGN 15 -#define GRN_EXPR_TOKEN_MOD_ASSIGN 16 -#define GRN_EXPR_TOKEN_PLUS_ASSIGN 17 -#define GRN_EXPR_TOKEN_MINUS_ASSIGN 18 -#define GRN_EXPR_TOKEN_SHIFTL_ASSIGN 19 -#define GRN_EXPR_TOKEN_SHIFTR_ASSIGN 20 -#define GRN_EXPR_TOKEN_SHIFTRR_ASSIGN 21 -#define GRN_EXPR_TOKEN_AND_ASSIGN 22 -#define GRN_EXPR_TOKEN_XOR_ASSIGN 23 -#define GRN_EXPR_TOKEN_OR_ASSIGN 24 -#define GRN_EXPR_TOKEN_QUESTION 25 -#define GRN_EXPR_TOKEN_COLON 26 -#define GRN_EXPR_TOKEN_BITWISE_OR 27 -#define GRN_EXPR_TOKEN_BITWISE_XOR 28 -#define GRN_EXPR_TOKEN_BITWISE_AND 29 -#define GRN_EXPR_TOKEN_EQUAL 30 -#define GRN_EXPR_TOKEN_NOT_EQUAL 31 -#define GRN_EXPR_TOKEN_LESS 32 -#define GRN_EXPR_TOKEN_GREATER 33 -#define GRN_EXPR_TOKEN_LESS_EQUAL 34 -#define GRN_EXPR_TOKEN_GREATER_EQUAL 35 -#define GRN_EXPR_TOKEN_IN 36 -#define GRN_EXPR_TOKEN_MATCH 37 -#define GRN_EXPR_TOKEN_NEAR 38 -#define GRN_EXPR_TOKEN_NEAR2 39 -#define GRN_EXPR_TOKEN_SIMILAR 40 -#define GRN_EXPR_TOKEN_TERM_EXTRACT 41 -#define GRN_EXPR_TOKEN_LCP 42 -#define GRN_EXPR_TOKEN_PREFIX 43 -#define GRN_EXPR_TOKEN_SUFFIX 44 -#define GRN_EXPR_TOKEN_SHIFTL 45 -#define GRN_EXPR_TOKEN_SHIFTR 46 -#define GRN_EXPR_TOKEN_SHIFTRR 47 -#define GRN_EXPR_TOKEN_PLUS 48 -#define GRN_EXPR_TOKEN_MINUS 49 -#define GRN_EXPR_TOKEN_STAR 50 -#define GRN_EXPR_TOKEN_SLASH 51 -#define GRN_EXPR_TOKEN_MOD 52 -#define GRN_EXPR_TOKEN_DELETE 53 -#define GRN_EXPR_TOKEN_INCR 54 -#define GRN_EXPR_TOKEN_DECR 55 -#define GRN_EXPR_TOKEN_NOT 56 -#define GRN_EXPR_TOKEN_BITWISE_NOT 57 -#define GRN_EXPR_TOKEN_ADJUST 58 -#define GRN_EXPR_TOKEN_EXACT 59 -#define GRN_EXPR_TOKEN_PARTIAL 60 -#define GRN_EXPR_TOKEN_UNSPLIT 61 -#define GRN_EXPR_TOKEN_DECIMAL 62 -#define GRN_EXPR_TOKEN_HEX_INTEGER 63 -#define GRN_EXPR_TOKEN_STRING 64 -#define GRN_EXPR_TOKEN_BOOLEAN 65 -#define GRN_EXPR_TOKEN_NULL 66 -#define GRN_EXPR_TOKEN_BRACKETL 67 -#define GRN_EXPR_TOKEN_BRACKETR 68 -#define GRN_EXPR_TOKEN_DOT 69 +#define GRN_EXPR_TOKEN_START_OUTPUT_COLUMNS 1 +#define GRN_EXPR_TOKEN_LOGICAL_AND 2 +#define GRN_EXPR_TOKEN_LOGICAL_AND_NOT 3 +#define GRN_EXPR_TOKEN_LOGICAL_OR 4 +#define GRN_EXPR_TOKEN_QSTRING 5 +#define GRN_EXPR_TOKEN_PARENL 6 +#define GRN_EXPR_TOKEN_PARENR 7 +#define GRN_EXPR_TOKEN_RELATIVE_OP 8 +#define GRN_EXPR_TOKEN_IDENTIFIER 9 +#define GRN_EXPR_TOKEN_BRACEL 10 +#define GRN_EXPR_TOKEN_BRACER 11 +#define GRN_EXPR_TOKEN_EVAL 12 +#define GRN_EXPR_TOKEN_COMMA 13 +#define GRN_EXPR_TOKEN_ASSIGN 14 +#define GRN_EXPR_TOKEN_STAR_ASSIGN 15 +#define GRN_EXPR_TOKEN_SLASH_ASSIGN 16 +#define GRN_EXPR_TOKEN_MOD_ASSIGN 17 +#define GRN_EXPR_TOKEN_PLUS_ASSIGN 18 +#define GRN_EXPR_TOKEN_MINUS_ASSIGN 19 +#define GRN_EXPR_TOKEN_SHIFTL_ASSIGN 20 +#define GRN_EXPR_TOKEN_SHIFTR_ASSIGN 21 +#define GRN_EXPR_TOKEN_SHIFTRR_ASSIGN 22 +#define GRN_EXPR_TOKEN_AND_ASSIGN 23 +#define GRN_EXPR_TOKEN_XOR_ASSIGN 24 +#define GRN_EXPR_TOKEN_OR_ASSIGN 25 +#define GRN_EXPR_TOKEN_QUESTION 26 +#define GRN_EXPR_TOKEN_COLON 27 +#define GRN_EXPR_TOKEN_BITWISE_OR 28 +#define GRN_EXPR_TOKEN_BITWISE_XOR 29 +#define GRN_EXPR_TOKEN_BITWISE_AND 30 +#define GRN_EXPR_TOKEN_EQUAL 31 +#define GRN_EXPR_TOKEN_NOT_EQUAL 32 +#define GRN_EXPR_TOKEN_LESS 33 +#define GRN_EXPR_TOKEN_GREATER 34 +#define GRN_EXPR_TOKEN_LESS_EQUAL 35 +#define GRN_EXPR_TOKEN_GREATER_EQUAL 36 +#define GRN_EXPR_TOKEN_IN 37 +#define GRN_EXPR_TOKEN_MATCH 38 +#define GRN_EXPR_TOKEN_NEAR 39 +#define GRN_EXPR_TOKEN_NEAR2 40 +#define GRN_EXPR_TOKEN_SIMILAR 41 +#define GRN_EXPR_TOKEN_TERM_EXTRACT 42 +#define GRN_EXPR_TOKEN_LCP 43 +#define GRN_EXPR_TOKEN_PREFIX 44 +#define GRN_EXPR_TOKEN_SUFFIX 45 +#define GRN_EXPR_TOKEN_SHIFTL 46 +#define GRN_EXPR_TOKEN_SHIFTR 47 +#define GRN_EXPR_TOKEN_SHIFTRR 48 +#define GRN_EXPR_TOKEN_PLUS 49 +#define GRN_EXPR_TOKEN_MINUS 50 +#define GRN_EXPR_TOKEN_STAR 51 +#define GRN_EXPR_TOKEN_SLASH 52 +#define GRN_EXPR_TOKEN_MOD 53 +#define GRN_EXPR_TOKEN_DELETE 54 +#define GRN_EXPR_TOKEN_INCR 55 +#define GRN_EXPR_TOKEN_DECR 56 +#define GRN_EXPR_TOKEN_NOT 57 +#define GRN_EXPR_TOKEN_BITWISE_NOT 58 +#define GRN_EXPR_TOKEN_ADJUST 59 +#define GRN_EXPR_TOKEN_EXACT 60 +#define GRN_EXPR_TOKEN_PARTIAL 61 +#define GRN_EXPR_TOKEN_UNSPLIT 62 +#define GRN_EXPR_TOKEN_DECIMAL 63 +#define GRN_EXPR_TOKEN_HEX_INTEGER 64 +#define GRN_EXPR_TOKEN_STRING 65 +#define GRN_EXPR_TOKEN_BOOLEAN 66 +#define GRN_EXPR_TOKEN_NULL 67 +#define GRN_EXPR_TOKEN_BRACKETL 68 +#define GRN_EXPR_TOKEN_BRACKETR 69 +#define GRN_EXPR_TOKEN_DOT 70 Modified: lib/ecmascript.y (+11 -0) =================================================================== --- lib/ecmascript.y 2012-10-24 09:49:21 +0900 (5ac13ed) +++ lib/ecmascript.y 2012-10-19 16:09:41 +0900 (55a390b) @@ -24,6 +24,7 @@ input ::= query. input ::= expression. +input ::= START_OUTPUT_COLUMNS output_columns. query ::= query_element. query ::= query query_element. { @@ -361,3 +362,13 @@ arguments(A) ::= PARENL argument_list(B) PARENR. { A = B; } argument_list(A) ::= . { A = 0; } argument_list(A) ::= assignment_expression. { A = 1; } argument_list(A) ::= argument_list(B) COMMA assignment_expression. { A = B + 1; } + +output_columns ::= output_column. +output_columns ::= output_columns COMMA output_column. { + grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_COMMA, 2); +} + +output_column ::= STAR. { + grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ALL_COLUMNS, 0); +} +output_column ::= assignment_expression. Modified: lib/expr.c (+45 -2) =================================================================== --- lib/expr.c 2012-10-24 09:49:21 +0900 (e21e901) +++ lib/expr.c 2012-10-19 16:09:41 +0900 (e16bac0) @@ -236,7 +236,8 @@ static const char *opstrs[] = { "TABLE_SELECT", "TABLE_SORT", "TABLE_GROUP", - "JSON_PUT" + "JSON_PUT", + "ALL_COLUMNS" }; static void @@ -1193,6 +1194,44 @@ grn_expr_append_obj(grn_ctx *ctx, grn_obj *expr, grn_obj *obj, grn_operator op, case GRN_OP_COMMA : PUSH_CODE(e, op, obj, nargs, code); break; + case GRN_OP_ALL_COLUMNS : + if (nargs == 0) { + grn_obj *variable = grn_expr_get_var_by_offset(ctx, expr, 0); + if (variable) { + grn_id table_id = GRN_OBJ_GET_DOMAIN(variable); + grn_obj *table = grn_ctx_at(ctx, table_id); + grn_obj columns_buffer; + grn_obj **columns; + int i, n_columns; + + GRN_PTR_INIT(&columns_buffer, GRN_OBJ_VECTOR, GRN_ID_NIL); + grn_obj_columns(ctx, table, "*", strlen("*"), &columns_buffer); + n_columns = GRN_BULK_VSIZE(&columns_buffer) / sizeof(grn_obj *); + columns = (grn_obj **)GRN_BULK_HEAD(&columns_buffer); + + if (n_columns == 0) { + if (e->codes_curr > 0 && + e->codes[e->codes_curr - 1].op == GRN_OP_COMMA) { + e->codes_curr--; + } + } else { + for (i = 0; i < n_columns; i++) { + if (i > 0) { + grn_expr_append_op(ctx, expr, GRN_OP_COMMA, 2); + } + grn_expr_append_const(ctx, expr, columns[i], GRN_OP_GET_VALUE, 1); + GRN_PTR_PUT(ctx, &e->objs, columns[i]); + } + } + + GRN_OBJ_FIN(ctx, &columns_buffer); + } else { + /* TODO: report error */ + } + } else { + /* TODO: report error */ + } + break; default : break; } @@ -5760,7 +5799,11 @@ grn_expr_parse(grn_ctx *ctx, grn_obj *expr, efsi.opt.weight_vector = NULL; efsi.weight_set = NULL; - if (flags & GRN_EXPR_SYNTAX_SCRIPT) { + if (flags & (GRN_EXPR_SYNTAX_SCRIPT | GRN_EXPR_SYNTAX_OUTPUT_COLUMNS)) { + if (flags & GRN_EXPR_SYNTAX_OUTPUT_COLUMNS) { + efs_info *q = &efsi; + PARSE(GRN_EXPR_TOKEN_START_OUTPUT_COLUMNS); + } parse_script(ctx, &efsi); } else { parse_query(ctx, &efsi); Modified: lib/proc.c (+2 -15) =================================================================== --- lib/proc.c 2012-10-24 09:49:21 +0900 (73cec59) +++ lib/proc.c 2012-10-19 16:09:41 +0900 (a8c6579) @@ -414,19 +414,6 @@ is_output_columns_format_v1(const char *output_columns, { unsigned int i; - /* TODO: We should enable function support in output_columns again. - We always treat all output_columns as old style for now. */ - return GRN_TRUE; - - /* TODO: We should support "_id, _key, *" as new output coumns format. */ - for (i = 0; i < output_columns_len; i++) { - switch (output_columns[i]) { - case '*' : - return GRN_TRUE; - break; - } - } - for (i = 0; i < output_columns_len; i++) { switch (output_columns[i]) { case ',' : @@ -657,7 +644,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned int table_len, grn_expr_parse(ctx, format.expression, output_columns, output_columns_len, NULL, GRN_OP_MATCH, GRN_OP_AND, - GRN_EXPR_SYNTAX_SCRIPT); + GRN_EXPR_SYNTAX_OUTPUT_COLUMNS); } GRN_OUTPUT_OBJ(sorted, &format); GRN_OBJ_FORMAT_FIN(ctx, &format); @@ -679,7 +666,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned int table_len, grn_expr_parse(ctx, format.expression, output_columns, output_columns_len, NULL, GRN_OP_MATCH, GRN_OP_AND, - GRN_EXPR_SYNTAX_SCRIPT); + GRN_EXPR_SYNTAX_OUTPUT_COLUMNS); } GRN_OUTPUT_OBJ(res, &format); GRN_OBJ_FORMAT_FIN(ctx, &format);