diff options
author | Nicolas Williams <nico@cryptonector.com> | 2021-10-21 00:17:39 -0500 |
---|---|---|
committer | Nicolas Williams <nico@cryptonector.com> | 2021-10-24 16:23:26 -0500 |
commit | a9f97e9e61a910a374a5d768244e8ad63f407d3e (patch) | |
tree | 7883361d86bd97b1bcd2299fa5886182b27cee54 | |
parent | 0c3455d3290fa03da8c01c135dd7126a80ed28a8 (diff) | |
download | jq-a9f97e9e61a910a374a5d768244e8ad63f407d3e.tar.gz |
Fix accidentally quadratic behavior in _modify
We need to be careful to not grab an extra reference when mutating data
structures because that means we make extra copies. Doing that every
time in `_modify` is really painful, as that function implements `|=`
and all modify-assign operators.
`jv_setpath()` also grabs additional references, so this is not the only
fix needed for the modify-assign operators to not be accidentally
quadratic.
We have to use `LOADVN` in order to make this fix possible, so we should
really byte-code `_modify` rather than jq-code it. However, as a
stop-gap to make this fix easier, I'm adding syntax for referring to a
`$binding` such that you get `LOADVN` instead of `LOADV`.
This syntax is not meant to be used outside jq's internals! Therefore
it is not documented. I promise to break it later, so don't use it!
TBD, but later:
- Optimize `_modify` for the case where `update` outputs more than one
value.
This is trivial: add a `setpath($p; null)` in the middle of `_modify`
before calling `update`. But unfortunately the VM retains a
reference to `value_at_path` for path expression checking, and fixing
that will require more work.
-rw-r--r-- | src/builtin.jq | 20 | ||||
-rw-r--r-- | src/parser.c | 2169 | ||||
-rw-r--r-- | src/parser.h | 16 | ||||
-rw-r--r-- | src/parser.y | 19 |
4 files changed, 1122 insertions, 1102 deletions
diff --git a/src/builtin.jq b/src/builtin.jq index ee78017..a102fd5 100644 --- a/src/builtin.jq +++ b/src/builtin.jq @@ -11,7 +11,25 @@ def min_by(f): _min_by_impl(map([f])); def add: reduce .[] as $x (null; . + $x); def del(f): delpaths([path(f)]); def _assign(paths; $value): reduce path(paths) as $p (.; setpath($p; $value)); -def _modify(paths; update): reduce path(paths) as $p (.; label $out | (setpath($p; getpath($p) | update) | ., break $out), delpaths([$p])); +def _modify(paths; update): + reduce path(paths) as $p (.; + . as $dot + | null + | label $out + | ($dot | getpath($p)) as $v + | ( + ( $$$$v + | update + | (., break $out) as $v + | $$$$dot + | setpath($p; $v) + ), + ( + $$$$dot + | delpaths([$p]) + ) + ) + ); def map_values(f): .[] |= f; # recurse diff --git a/src/parser.c b/src/parser.c index b6574e5..82bf21d 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.3.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,8 +61,8 @@ -/* First part of user prologue. */ -#line 1 "src/parser.y" /* yacc.c:337 */ +/* Copy the first part of user declarations. */ +#line 1 "src/parser.y" /* yacc.c:339 */ #include <assert.h> #include <math.h> @@ -77,16 +73,13 @@ #define YYMALLOC jv_mem_alloc #define YYFREE jv_mem_free -#line 81 "src/parser.c" /* yacc.c:337 */ +#line 77 "src/parser.c" /* yacc.c:339 */ + # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -110,7 +103,7 @@ extern int yydebug; #endif /* "%code requires" blocks. */ -#line 11 "src/parser.y" /* yacc.c:352 */ +#line 11 "src/parser.y" /* yacc.c:355 */ #include "locfile.h" struct lexer_param; @@ -127,7 +120,7 @@ struct lexer_param; } \ } while (0) -#line 131 "src/parser.c" /* yacc.c:352 */ +#line 124 "src/parser.c" /* yacc.c:355 */ /* Token type. */ #ifndef YYTOKENTYPE @@ -233,12 +226,12 @@ struct lexer_param; union YYSTYPE { -#line 31 "src/parser.y" /* yacc.c:352 */ +#line 31 "src/parser.y" /* yacc.c:355 */ jv literal; block blk; -#line 242 "src/parser.c" /* yacc.c:352 */ +#line 235 "src/parser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -266,8 +259,8 @@ int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer #endif /* !YY_YY_SRC_PARSER_H_INCLUDED */ -/* Second part of user prologue. */ -#line 124 "src/parser.y" /* yacc.c:354 */ +/* Copy the second part of user declarations. */ +#line 124 "src/parser.y" /* yacc.c:358 */ #include "lexer.h" struct lexer_param { @@ -447,7 +440,7 @@ static block gen_update(block object, block val, int optype) { } -#line 451 "src/parser.c" /* yacc.c:354 */ +#line 444 "src/parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -468,13 +461,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -486,7 +479,7 @@ typedef short yytype_int16; # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -522,6 +515,15 @@ typedef short yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -529,7 +531,7 @@ typedef short yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -682,27 +684,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2220 +#define YYLAST 2143 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 69 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 169 +#define YYNRULES 170 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 322 +#define YYNSTATES 326 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 302 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -752,13 +754,14 @@ static const yytype_uint16 yyrline[] = 622, 627, 630, 633, 639, 642, 645, 653, 657, 660, 663, 666, 669, 672, 675, 678, 681, 685, 691, 694, 697, 700, 703, 706, 709, 712, 715, 718, 721, 724, - 727, 730, 733, 736, 739, 742, 745, 752, 756, 765, - 777, 782, 783, 784, 785, 788, 791, 796, 801, 804, - 809, 812, 817, 821, 824, 829, 832, 837, 840, 845, - 848, 851, 854, 857, 860, 868, 874, 877, 880, 883, - 886, 889, 892, 895, 898, 901, 904, 907, 910, 913, - 916, 919, 922, 925, 928, 933, 936, 937, 938, 941, - 944, 947, 950, 954, 958, 962, 966, 970, 974, 982 + 727, 730, 733, 736, 739, 742, 745, 767, 771, 775, + 784, 796, 801, 802, 803, 804, 807, 810, 815, 820, + 823, 828, 831, 836, 840, 843, 848, 851, 856, 859, + 864, 867, 870, 873, 876, 879, 887, 893, 896, 899, + 902, 905, 908, 911, 914, 917, 920, 923, 926, 929, + 932, 935, 938, 941, 944, 947, 952, 955, 956, 957, + 960, 963, 966, 969, 973, 977, 981, 985, 989, 993, + 1001 }; #endif @@ -801,53 +804,53 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -157 +#define YYPACT_NINF -120 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-157))) + (!!((Yystate) == (-120))) -#define YYTABLE_NINF -156 +#define YYTABLE_NINF -157 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-156))) + (!!((Yytable_value) == (-157))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 43, 838, 75, 28, 16, 22, -157, 66, -157, 108, - 838, 161, 161, 838, 63, 1, -157, 838, 588, 2133, - 288, 521, 354, 1406, 838, -157, 0, -157, 14, 14, - 838, 28, 746, 838, -157, -157, -9, 1812, 17, 55, - 99, 126, -157, 127, -157, -6, 72, 1236, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - 140, 66, 85, 78, -157, 983, -45, 82, 838, 2161, - 86, 87, 83, 105, 838, 838, 838, 838, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, -157, -157, - 1980, 96, -26, -3, 454, 142, -157, -157, -157, 1980, - 838, -157, -157, 1457, 1980, -19, -157, -157, 10, 838, - 653, -26, -26, 718, 109, -157, 24, -157, -157, -157, - -157, -157, -157, 411, 130, -157, 130, 1270, 94, -157, - 130, 130, -157, 411, 2048, 209, 209, 2014, 349, 2080, - 2048, 2048, 2048, 2048, 2048, 2048, 209, 209, 1980, 2014, - 2048, 209, 209, -6, -6, 101, 101, 101, -157, 157, - -26, 900, 122, 117, 132, 838, 112, 107, 838, 116, - 933, 11, -157, -157, 838, -157, 81, -157, 2189, -2, - -157, 1508, -157, 1712, 115, 118, -157, -157, 838, -157, - 838, -157, -20, -157, 130, 129, 51, 129, 114, 130, - 129, 129, -157, -157, -157, -13, 119, 125, 838, 175, - 133, -22, -157, 135, -26, 838, 1033, -157, -157, 1083, - -157, 810, 123, -157, 181, -157, -157, -157, -157, 10, - 136, -157, 838, 838, -157, -157, 838, 838, 1980, 1846, - -157, 130, 130, 129, -26, -157, -26, -26, 1304, 137, - -26, 900, -157, -26, 149, 1980, 143, 145, 146, 1133, - -157, -157, -157, 838, 1896, 1946, 1559, 1610, -157, 129, - 129, -157, -157, -157, 148, -26, -157, -157, -157, -157, - -157, -157, 147, 1661, -157, 838, 838, 838, -26, -157, - -157, -157, 1762, 1338, 1183, -157, -157, -157, 838, -157, - 1372, -157 + 13, 775, 14, 49, -55, 11, -120, 7, -120, 32, + 775, 508, 508, 775, 19, 2, -120, 775, 525, 887, + 292, 458, 358, 1391, 775, -120, 6, -120, -3, -3, + 775, 49, 683, 775, -120, -120, 52, 1797, 8, 10, + 48, 79, -120, 106, -120, 66, 50, 1221, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, 61, -120, + -120, 124, 7, 68, 62, -120, 968, -22, 64, 775, + 2084, 69, 71, 63, 87, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, -120, + -120, 1965, 78, -20, 15, 169, 125, -120, -120, -120, + 1965, 775, -120, -120, 1442, 1965, -10, -120, -120, -2, + 775, 590, -20, -20, 655, 90, -120, 12, -120, -120, + 77, -120, -120, -120, -120, 415, 443, -120, 443, 1255, + 81, -120, 443, 443, -120, 415, 1999, 353, 353, 214, + 571, 2031, 1999, 1999, 1999, 1999, 1999, 1999, 353, 353, + 1965, 214, 1999, 353, 353, 66, 66, 82, 82, 82, + -120, 138, -20, 837, 105, 99, 113, 775, 96, 93, + 775, 103, 918, 20, -120, -120, 775, -120, 16, -120, + 2112, 18, -120, 1493, -120, 1697, 102, 104, -120, -120, + 775, -120, 775, -120, 159, -11, -120, 443, 119, 3, + 119, 108, 443, 119, 119, -120, -120, -120, -13, 109, + 115, 775, 163, 116, -38, -120, 118, -20, 775, 1018, + -120, -120, 1068, -120, 747, 110, -120, 165, -120, -120, + -120, -120, -2, 121, -120, 775, 775, -120, -120, 775, + 775, 1965, 1831, -120, -120, 443, 443, 119, -20, -120, + -20, -20, 1289, 122, -20, 837, -120, -20, 150, 1965, + 136, 139, 142, 1118, -120, -120, -120, 775, 1881, 1931, + 1544, 1595, -120, 119, 119, -120, -120, -120, 140, -20, + -120, -120, -120, -120, -120, -120, 143, 1646, -120, 775, + 775, 775, -20, -120, -120, -120, 1747, 1323, 1168, -120, + -120, -120, 775, -120, 1357, -120 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -855,55 +858,55 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 109, 83, 100, 102, 75, 0, + 4, 0, 0, 6, 110, 83, 100, 102, 75, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 101, 48, 1, 0, 0, 8, 6, 0, 0, 79, 64, 0, 0, 0, 0, - 19, 0, 77, 0, 66, 33, 0, 0, 107, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 108, 86, - 0, 0, 85, 0, 105, 0, 0, 166, 0, 0, - 162, 167, 0, 156, 0, 0, 0, 0, 0, 0, + 19, 0, 77, 0, 66, 33, 0, 0, 108, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 0, 109, + 86, 0, 0, 85, 0, 105, 0, 0, 167, 0, + 0, 163, 168, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 5, - 10, 82, 0, 0, 0, 0, 54, 53, 3, 2, - 8, 7, 49, 0, 117, 0, 115, 66, 0, 0, - 0, 0, 0, 0, 0, 76, 0, 111, 103, 87, - 81, 112, 104, 0, 0, 114, 0, 0, 164, 165, - 0, 0, 106, 0, 41, 42, 43, 26, 25, 24, - 28, 32, 35, 37, 40, 27, 46, 47, 29, 30, - 23, 44, 45, 31, 34, 36, 38, 39, 78, 0, - 0, 0, 0, 0, 121, 0, 84, 0, 0, 93, - 0, 0, 9, 50, 0, 110, 0, 61, 0, 0, - 57, 0, 17, 0, 0, 0, 20, 18, 0, 67, - 0, 63, 0, 158, 0, 169, 73, 159, 0, 0, - 161, 160, 157, 122, 125, 0, 0, 0, 0, 0, - 0, 0, 127, 0, 0, 0, 0, 80, 113, 0, - 92, 0, 89, 52, 0, 116, 65, 59, 60, 0, - 0, 55, 0, 0, 16, 15, 0, 0, 21, 0, - 72, 0, 0, 163, 0, 123, 0, 0, 0, 129, - 0, 0, 124, 0, 120, 11, 91, 99, 98, 0, - 88, 51, 58, 0, 0, 0, 0, 0, 68, 71, - 168, 126, 135, 131, 0, 0, 133, 128, 132, 90, - 96, 95, 97, 0, 70, 0, 0, 0, 0, 130, - 94, 56, 0, 0, 0, 134, 69, 12, 0, 14, - 0, 13 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 5, 10, 82, 0, 0, 0, 0, 54, 53, 3, + 2, 8, 7, 49, 0, 118, 0, 116, 66, 0, + 0, 0, 0, 0, 0, 0, 76, 0, 112, 103, + 0, 87, 81, 113, 104, 0, 0, 115, 0, 0, + 165, 166, 0, 0, 106, 0, 41, 42, 43, 26, + 25, 24, 28, 32, 35, 37, 40, 27, 46, 47, + 29, 30, 23, 44, 45, 31, 34, 36, 38, 39, + 78, 0, 0, 0, 0, 0, 122, 0, 84, 0, + 0, 93, 0, 0, 9, 50, 0, 111, 0, 61, + 0, 0, 57, 0, 17, 0, 0, 0, 20, 18, + 0, 67, 0, 63, 0, 0, 159, 0, 170, 73, + 160, 0, 0, 162, 161, 158, 123, 126, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 80, 114, 0, 92, 0, 89, 52, 0, 117, 65, + 59, 60, 0, 0, 55, 0, 0, 16, 15, 0, + 0, 21, 0, 107, 72, 0, 0, 164, 0, 124, + 0, 0, 0, 130, 0, 0, 125, 0, 121, 11, + 91, 99, 98, 0, 88, 51, 58, 0, 0, 0, + 0, 0, 68, 71, 169, 127, 136, 132, 0, 0, + 134, 129, 133, 90, 96, 95, 97, 0, 70, 0, + 0, 0, 0, 131, 94, 56, 0, 0, 0, 135, + 69, 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -157, -157, -157, 177, 92, -1, -157, -157, 184, -11, - -157, -43, 5, -157, -157, 89, -98, -140, -4, -157, - 23, -157, -61, -156, -157, -157, -53, -18, -106, -157 + -120, -120, -120, 171, 83, -1, -120, -120, 176, -12, + -120, -46, 5, -120, -120, 80, -103, -109, -5, -120, + 22, -120, -16, -119, -120, -120, -68, -18, -105, -120 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 30, 118, 110, 31, 32, 115, 24, - 199, 200, 25, 44, 127, 136, 255, 215, 26, 125, - 126, 182, 183, 184, 225, 231, 232, 81, 82, 83 + -1, 2, 3, 30, 119, 111, 31, 32, 116, 24, + 201, 202, 25, 44, 128, 137, 258, 218, 26, 126, + 127, 184, 185, 186, 228, 234, 235, 82, 83, 84 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -911,456 +914,440 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 23, 68, 42, 143, 71, 111, 217, 38, 39, 37, - 220, 221, 40, 112, 197, 243, 45, 47, 144, 120, - 75, 71, 111, 145, 224, 72, 271, 80, 143, 119, - 131, 123, 124, 116, 116, 264, 179, 213, 16, 180, - 194, 181, 195, 144, 28, 29, 272, 222, 105, 106, - 107, 128, 108, 265, 129, 16, 111, 249, 1, 250, - 111, 149, 185, 43, 113, 114, 209, 210, 132, 211, - 204, 205, 198, 244, 260, 27, 33, 147, 274, 263, - 34, 113, 114, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 35, 291, 120, - 292, 293, 36, 190, 296, 113, 114, 298, 186, 113, - 114, 289, 290, 209, 210, 41, 246, 133, 201, 203, - 134, 135, 207, 137, 4, 5, 6, 7, 8, 309, - 216, 139, 216, 140, 141, 146, 216, 216, 80, 150, - 151, 152, 315, 153, 178, 191, 208, 219, 80, 108, - 15, 223, 234, 233, 235, 4, 5, 6, 7, 8, - 237, 16, -119, 238, 240, 256, 261, 262, 257, 269, - 248, 280, 266, 214, 236, 281, 230, 239, 267, -118, - 18, 15, 19, 124, 20, 21, 270, 22, 273, 283, - 295, 299, 16, 300, 301, 310, 282, 258, 121, 259, - 216, 308, 192, 117, 316, 216, 196, 245, 297, -156, - -156, 18, 0, 19, 0, 20, 21, 268, 22, 0, - 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, - 279, 0, 0, 0, 0, 0, 0, -156, -156, 0, - 0, 284, 285, 233, 0, 286, 287, 216, 216, -156, - -156, 103, 104, 105, 106, 107, 0, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 303, 0, 0, 0, 0, 0, -74, 69, - 0, 0, 70, -74, 0, 71, 0, -74, -74, -74, - -74, -74, 0, 0, 312, 313, 314, -74, -74, -74, - 0, 0, -74, -74, -74, 0, -74, 320, 0, 0, - -74, -74, -74, -74, -74, -74, -74, -74, 0, 16, - 0, 0, -74, 0, 0, -74, -74, -74, -74, -74, - -74, -74, -74, -74, -74, 0, -74, -74, 0, -74, - 0, -74, -74, -74, -74, 76, -74, 0, 77, 85, - 86, 71, 0, 0, 0, 0, 0, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 0, 96, 97, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 0, 0, - 0, 0, 212, 0, 78, 77, 79, 0, 71, 0, - 0, 0, -155, 0, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 187, 0, 0, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, - 0, 78, 10, 79, 0, 0, 11, 12, 0, -155, - 0, 13, 0, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 18, 0, 19, 188, 20, 21, - 189, 22, 73, 0, 0, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 10, - 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 18, 0, 19, 0, 20, 21, 74, 22, 46, + 23, 69, 199, 42, 72, 33, 38, 39, 112, 37, + 275, 112, 40, 112, 27, 112, 45, 47, 121, 113, + 76, 132, 72, 133, 246, 73, 145, 81, 1, 120, + 276, 124, 125, 117, 117, 268, 36, 145, 16, 220, + 216, 146, 181, 223, 224, 182, 147, 183, 35, 196, + 225, 197, 146, 269, 211, 212, 16, 213, 211, 212, + 200, 249, 151, 227, 43, 28, 29, 114, 115, 34, + 114, 115, 114, 115, 114, 115, 134, 252, 149, 253, + 187, 41, 247, 135, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 264, 121, + 136, 138, 129, 267, 192, 130, 206, 207, 278, 188, + 106, 107, 108, 140, 109, 141, 142, 148, 143, 203, + 205, 154, 152, 209, 153, 155, 180, 210, 193, 214, + 109, 219, 226, 219, 222, 237, 238, 219, 219, 295, + 81, 296, 297, -120, 240, 300, 293, 294, 302, 241, + 81, 243, 259, 263, 260, 236, 265, 273, 284, 285, + 189, 266, 270, 4, 5, 6, 7, 8, 271, 274, + 313, 277, 251, 9, 287, 299, 239, 10, 233, 242, + -119, 11, 12, 319, 303, 125, 13, 304, 14, 15, + 305, 314, 122, 312, 194, 118, 286, 301, 198, 261, + 16, 262, 219, 320, 0, 0, 0, 219, 248, 0, + 0, 0, 17, 85, 86, 87, 88, 0, 0, 18, + 272, 19, 190, 20, 21, 191, 22, 279, 0, 89, + 90, 0, 0, 283, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 288, 289, 0, 236, 290, 291, + 219, 219, 0, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 233, 0, 0, 0, 0, 0, 307, 0, 0, 0, + 0, 0, -74, 70, 0, 0, 71, -74, 0, 72, + 0, -74, -74, -74, -74, -74, 0, 0, 316, 317, + 318, -74, -74, -74, 0, 0, -74, -74, -74, 0, + -74, 324, 0, 0, -74, -74, -74, -74, -74, -74, + -74, -74, 0, 16, 0, 0, -74, 0, 0, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, 0, + -74, -74, 0, -74, 0, -74, -74, -74, -74, 77, + -74, 0, 78, -157, -157, 72, 0, 0, 0, 0, + 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 0, -157, -157, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, -157, -157, 104, 105, 106, 107, 108, + 0, 109, 0, 0, 0, 0, 215, 0, 79, 78, + 80, 0, 72, 0, 0, 0, -156, 0, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 0, 0, 74, 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 18, 0, - 19, 0, 20, 21, 202, 22, 0, 4, 5, 6, - 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, - 0, 10, 0, 0, 0, 11, 12, 0, 0, 0, - 13, 0, 14, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 9, 15, 0, 79, 10, 80, 0, 0, + 11, 12, 0, -156, 16, 13, 0, 14, 15, 0, + 0, 0, 0, 0, 0, 0, 217, 0, 0, 16, + 0, 0, 0, 18, 0, 19, 0, 20, 21, 0, + 22, 17, 4, 5, 6, 7, 8, 0, 18, 0, + 19, 0, 20, 21, 75, 22, 46, 0, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 15, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 16, + 0, 0, 13, 0, 14, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 18, 0, + 19, 0, 20, 21, 0, 22, 0, 0, 17, 0, + 0, 86, 87, 0, 0, 18, 0, 19, 0, 20, + 21, 204, 22, 0, 4, 5, 6, 7, 8, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 10, 97, + 98, 0, 11, 12, 0, 0, 0, 13, 0, 14, + 15, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 18, 0, 19, 0, 20, 21, 208, 22, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 0, + 0, 0, 13, 0, 14, 15, 0, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 0, 18, 0, 19, 0, 20, + 21, 0, 22, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 18, 0, 19, 0, 20, 21, 206, - 22, 0, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, - 4, 5, 6, 7, 8, 0, 0, 0, 0, 16, - 9, 0, 0, 0, 10, 0, 0, 0, 11, 12, - 0, 17, 0, 13, 0, 14, 15, 0, 18, 0, - 19, 0, 20, 21, 0, 22, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 122, 18, 0, 19, 0, - 20, 21, 0, 22, 4, 5, 6, 7, 8, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, - 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, - 15, 0, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 16, 9, 0, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 17, 0, 13, 0, 14, 15, 0, - 18, 0, 19, 0, 20, 21, 278, 22, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 18, 0, - 19, 226, 20, 21, 227, 22, 0, 71, 0, 0, - 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 84, 85, 86, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 228, 0, 229, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 84, 85, 86, 87, 241, 0, 0, 242, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 84, 85, 86, 87, 0, 0, 0, 142, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 84, 85, 86, 87, 0, 0, 0, 276, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 84, 85, 86, 87, 0, 0, 0, 277, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 84, 85, 86, 87, 0, 0, 0, 302, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 318, 0, 319, 84, 85, 86, 87, 0, + 0, 0, 123, 18, 0, 19, 0, 20, 21, 0, + 22, 4, 5, 6, 7, 8, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 12, 0, 0, 0, 13, 0, 14, 15, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 16, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 0, + 17, 0, 13, 0, 14, 15, 0, 18, 0, 19, + 0, 20, 21, 282, 22, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 18, 0, 19, 229, 20, + 21, 230, 22, 0, 72, 0, 0, 0, 0, 0, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 138, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, 84, 85, 86, 87, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 218, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 0, 0, 84, 85, 86, - 87, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 88, 89, 294, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 88, 89, 317, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 321, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 109, 84, 85, 86, 87, + 0, 48, 0, 0, 0, 0, 0, 231, 0, 232, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 68, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, + 88, 244, 0, 0, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, + 88, 0, 0, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, + 88, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, + 88, 0, 0, 0, 281, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, + 88, 0, 0, 0, 306, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 322, 0, 323, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 89, 90, 139, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, + 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 89, 90, 221, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, + 298, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 0, 109, 89, 90, 321, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 325, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 110, 85, 86, 87, 88, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, + 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, + 109, 195, 85, 86, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 0, 109, 254, 85, 86, 87, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 310, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, - 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 108, 193, 84, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 251, 84, 85, - 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 306, 84, - 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 307, - 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, - 311, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 252, 253, 0, 0, 254, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 252, 253, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 130, 0, 0, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, - 288, 0, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 84, 85, 86, 87, 0, + 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, + 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 311, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 84, 85, 86, 87, 0, - 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, 84, 85, 86, 87, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 0, 0, -156, 85, 86, - 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 88, 89, 0, 0, 0, 0, 0, - -156, -156, -156, -156, -156, -156, 96, 97, 0, 0, - 85, 86, 0, 0, 0, 0, 0, -156, 101, 102, - 103, 104, 105, 106, 107, 88, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 103, 104, 105, 106, 107, 48, 108, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 148, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 247, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67 + 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 109, 315, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 255, 256, 0, + 0, 257, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 255, 256, 0, + 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, + 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 292, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 308, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 309, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, -157, 86, + 87, 0, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, + 0, -157, -157, -157, -157, -157, -157, 97, 98, 0, + 0, 86, 87, 0, 0, 0, 0, 0, -157, 102, + 103, 104, 105, 106, 107, 108, 89, 109, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 102, 103, 104, 105, 106, 107, 108, 150, 109, + 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 250, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67 }; static const yytype_int16 yycheck[] = { - 1, 19, 1, 48, 7, 5, 146, 11, 12, 10, - 150, 151, 13, 13, 4, 4, 17, 18, 63, 30, - 21, 7, 5, 68, 180, 20, 48, 22, 48, 30, - 13, 32, 33, 28, 29, 48, 62, 143, 41, 65, - 59, 67, 61, 63, 16, 17, 68, 153, 54, 55, - 56, 60, 58, 66, 63, 41, 5, 59, 15, 61, - 5, 79, 65, 62, 64, 65, 42, 43, 13, 45, - 131, 132, 62, 62, 214, 0, 60, 78, 234, 219, - 58, 64, 65, 84, 85, 86, 87, 88, 89, 90, + 1, 19, 4, 1, 7, 60, 11, 12, 5, 10, + 48, 5, 13, 5, 0, 5, 17, 18, 30, 13, + 21, 13, 7, 13, 4, 20, 48, 22, 15, 30, + 68, 32, 33, 28, 29, 48, 4, 48, 41, 148, + 145, 63, 62, 152, 153, 65, 68, 67, 41, 59, + 155, 61, 63, 66, 42, 43, 41, 45, 42, 43, + 62, 45, 80, 182, 62, 16, 17, 64, 65, 58, + 64, 65, 64, 65, 64, 65, 28, 59, 79, 61, + 65, 62, 62, 4, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 41, 264, 120, - 266, 267, 4, 114, 270, 64, 65, 273, 113, 64, - 65, 261, 262, 42, 43, 62, 45, 28, 129, 130, - 4, 4, 133, 61, 4, 5, 6, 7, 8, 295, - 144, 1, 146, 58, 66, 63, 150, 151, 143, 63, - 63, 68, 308, 48, 58, 13, 47, 63, 153, 58, - 30, 4, 40, 181, 47, 4, 5, 6, 7, 8, - 58, 41, 40, 66, 58, 60, 47, 63, 60, 4, - 198, 58, 63, 53, 185, 4, 181, 188, 63, 40, - 60, 30, 62, 194, 64, 65, 63, 67, 63, 63, - 63, 58, 41, 58, 58, 58, 249, 208, 31, 210, - 214, 63, 120, 29, 312, 219, 127, 194, 271, 10, - 11, 60, -1, 62, -1, 64, 65, 228, 67, -1, - -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, - 241, -1, -1, -1, -1, -1, -1, 38, 39, -1, - -1, 252, 253, 271, -1, 256, 257, 261, 262, 50, - 51, 52, 53, 54, 55, 56, -1, 58, -1, -1, - -1, -1, -1, -1, -1, -1, 271, -1, -1, -1, - -1, -1, 283, -1, -1, -1, -1, -1, 0, 1, - -1, -1, 4, 5, -1, 7, -1, 9, 10, 11, - 12, 13, -1, -1, 305, 306, 307, 19, 20, 21, - -1, -1, 24, 25, 26, -1, 28, 318, -1, -1, - 32, 33, 34, 35, 36, 37, 38, 39, -1, 41, - -1, -1, 44, -1, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, -1, 61, - -1, 63, 64, 65, 66, 1, 68, -1, 4, 10, - 11, 7, -1, -1, -1, -1, -1, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, -1, 38, 39, -1, - -1, -1, -1, -1, -1, 41, -1, -1, -1, 50, - 51, 52, 53, 54, 55, 56, -1, 58, -1, -1, - -1, -1, 1, -1, 60, 4, 62, -1, 7, -1, - -1, -1, 68, -1, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, -1, -1, 1, -1, -1, 4, 5, - 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, - -1, 60, 18, 62, -1, -1, 22, 23, -1, 68, - -1, 27, -1, 29, 30, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, - -1, -1, -1, -1, 60, -1, 62, 63, 64, 65, - 66, 67, 1, -1, -1, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 14, -1, -1, -1, 18, - -1, -1, -1, 22, 23, -1, -1, -1, 27, -1, - 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, - -1, 60, -1, 62, -1, 64, 65, 66, 67, 1, + 101, 102, 103, 104, 105, 106, 107, 108, 217, 121, + 4, 61, 60, 222, 115, 63, 132, 133, 237, 114, + 54, 55, 56, 62, 58, 1, 58, 63, 66, 130, + 131, 68, 63, 134, 63, 48, 58, 47, 13, 62, + 58, 146, 4, 148, 63, 40, 47, 152, 153, 268, + 145, 270, 271, 40, 58, 274, 265, 266, 277, 66, + 155, 58, 60, 4, 60, 183, 47, 4, 58, 4, + 1, 63, 63, 4, 5, 6, 7, 8, 63, 63, + 299, 63, 200, 14, 63, 63, 187, 18, 183, 190, + 40, 22, 23, 312, 58, 196, 27, 58, 29, 30, + 58, 58, 31, 63, 121, 29, 252, 275, 128, 210, + 41, 212, 217, 316, -1, -1, -1, 222, 196, -1, + -1, -1, 53, 9, 10, 11, 12, -1, -1, 60, + 231, 62, 63, 64, 65, 66, 67, 238, -1, 25, + 26, -1, -1, 244, -1, -1, 32, 33, 34, 35, + 36, 37, 38, 39, 255, 256, -1, 275, 259, 260, + 265, 266, -1, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 275, -1, -1, -1, -1, -1, 287, -1, -1, -1, + -1, -1, 0, 1, -1, -1, 4, 5, -1, 7, + -1, 9, 10, 11, 12, 13, -1, -1, 309, 310, + 311, 19, 20, 21, -1, -1, 24, 25, 26, -1, + 28, 322, -1, -1, 32, 33, 34, 35, 36, 37, + 38, 39, -1, 41, -1, -1, 44, -1, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, + 58, 59, -1, 61, -1, 63, 64, 65, 66, 1, + 68, -1, 4, 10, 11, 7, -1, -1, -1, -1, + -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + -1, 38, 39, -1, -1, -1, -1, -1, -1, 41, + -1, -1, -1, 50, 51, 52, 53, 54, 55, 56, + -1, 58, -1, -1, -1, -1, 1, -1, 60, 4, + 62, -1, 7, -1, -1, -1, 68, -1, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 4, 5, 6, + 7, 8, -1, -1, -1, -1, 41, -1, -1, 1, -1, -1, 4, 5, 6, 7, 8, -1, -1, -1, - -1, -1, 14, -1, -1, -1, 18, -1, -1, -1, - 22, 23, -1, -1, -1, 27, -1, 29, 30, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 53, -1, -1, -1, -1, -1, -1, 60, -1, - 62, -1, 64, 65, 1, 67, -1, 4, 5, 6, - 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, - -1, 18, -1, -1, -1, 22, 23, -1, -1, -1, - 27, -1, 29, 30, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, + -1, -1, 14, 30, -1, 60, 18, 62, -1, -1, + 22, 23, -1, 68, 41, 27, -1, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 53, -1, -1, 41, + -1, -1, -1, 60, -1, 62, -1, 64, 65, -1, + 67, 53, 4, 5, 6, 7, 8, -1, 60, -1, + 62, -1, 64, 65, 66, 67, 1, -1, -1, 4, + 5, 6, 7, 8, -1, -1, -1, -1, 30, 14, + -1, -1, -1, 18, -1, -1, -1, 22, 23, 41, + -1, -1, 27, -1, 29, 30, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, 60, -1, + 62, -1, 64, 65, -1, 67, -1, -1, 53, -1, + -1, 10, 11, -1, -1, 60, -1, 62, -1, 64, + 65, 1, 67, -1, 4, 5, 6, 7, 8, -1, + -1, -1, -1, -1, 14, -1, -1, -1, 18, 38, + 39, -1, 22, 23, -1, -1, -1, 27, -1, 29, + 30, 50, 51, 52, 53, 54, 55, 56, -1, 58, + -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, + 60, -1, 62, -1, 64, 65, 1, 67, -1, 4, + 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, + -1, -1, -1, 18, -1, -1, -1, 22, 23, -1, + -1, -1, 27, -1, 29, 30, -1, 4, 5, 6, + 7, 8, -1, -1, -1, -1, 41, 14, -1, -1, + -1, 18, -1, -1, -1, 22, 23, -1, 53, -1, + 27, -1, 29, 30, -1, 60, -1, 62, -1, 64, + 65, -1, 67, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, - -1, -1, -1, 60, -1, 62, -1, 64, 65, 1, - 67, -1, 4, 5, 6, 7, 8, -1, -1, -1, - -1, -1, 14, -1, -1, -1, 18, -1, -1, -1, - 22, 23, -1, -1, -1, 27, -1, 29, 30, -1, - 4, 5, 6, 7, 8, -1, -1, -1, -1, 41, - 14, -1, -1, -1, 18, -1, -1, -1, 22, 23, - -1, 53, -1, 27, -1, 29, 30, -1, 60, -1, - 62, -1, 64, 65, -1, 67, -1, 41, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, - -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, - 64, 65, -1, 67, 4, 5, 6, 7, 8, -1, - -1, -1, -1, -1, 14, -1, -1, -1, 18, -1, - -1, -1, 22, 23, -1, -1, -1, 27, -1, 29, - 30, -1, 4, 5, 6, 7, 8, -1, -1, -1, - -1, 41, 14, -1, -1, -1, 18, -1, -1, -1, - 22, 23, -1, 53, -1, 27, -1, 29, 30, -1, - 60, -1, 62, -1, 64, 65, 66, 67, -1, 41, + -1, -1, 59, 60, -1, 62, -1, 64, 65, -1, + 67, 4, 5, 6, 7, 8, -1, -1, -1, -1, + -1, 14, -1, -1, -1, 18, -1, -1, -1, 22, + 23, -1, -1, -1, 27, -1, 29, 30, -1, 4, + 5, 6, 7, 8, -1, -1, -1, -1, 41, 14, + -1, -1, -1, 18, -1, -1, -1, 22, 23, -1, + 53, -1, 27, -1, 29, 30, -1, 60, -1, 62, + -1, 64, 65, 66, 67, -1, 41, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, + -1, -1, -1, -1, -1, 60, -1, 62, 1, 64, + 65, 4, 67, -1, 7, -1, -1, -1, -1, -1, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 53, -1, -1, -1, -1, -1, -1, 60, -1, - 62, 1, 64, 65, 4, 67, -1, 7, -1, -1, - -1, -1, -1, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 41, 9, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - 60, -1, 62, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 9, 10, 11, 12, 63, -1, -1, 66, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 9, 10, 11, 12, -1, -1, -1, 66, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 9, 10, 11, 12, -1, -1, -1, 66, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 9, 10, 11, 12, -1, -1, -1, 66, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 4, -1, -1, -1, -1, -1, 60, -1, 62, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, -1, -1, -1, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, 62, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, + 12, 63, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, + 12, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, + 12, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, + 12, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, + 12, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, -1, 61, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 25, 26, -1, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, -1, 9, 10, 11, 12, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 25, 26, 61, -1, -1, -1, -1, 32, 33, 34, + 35, 36, 37, 38, 39, -1, -1, -1, 9, 10, + 11, 12, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 25, 26, 61, -1, -1, -1, + -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, + -1, -1, 9, 10, 11, 12, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 25, 26, + 61, -1, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 38, 39, -1, -1, -1, 9, 10, 11, 12, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 9, 10, 11, 12, -1, -1, -1, 66, + -1, 58, 25, 26, 61, -1, -1, -1, -1, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + 9, 10, 11, 12, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 25, 26, 61, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, -1, -1, -1, -1, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 9, 10, 11, 12, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, 26, -1, + -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, + 58, 59, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, -1, 61, 9, 10, 11, 12, -1, + -1, 58, 59, 9, 10, 11, 12, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, + 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, + 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, + -1, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, -1, 9, - 10, 11, 12, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 25, 26, 61, -1, -1, - -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, 9, 10, 11, 12, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 25, - 26, 61, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, -1, 9, 10, 11, - 12, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 25, 26, 61, -1, -1, -1, -1, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - -1, 9, 10, 11, 12, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 25, 26, 61, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, 9, 10, 11, 12, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 25, 26, 61, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, + -1, 24, 25, 26, -1, -1, -1, -1, -1, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 9, 10, 11, - 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 26, -1, -1, -1, - -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, + 53, 54, 55, 56, -1, 58, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, + -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + 9, 10, 11, 12, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 25, 26, -1, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, -1, -1, 44, -1, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 25, 26, -1, -1, + -1, -1, -1, -1, -1, 24, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, 20, 21, -1, -1, 24, 25, 26, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, 20, 21, -1, -1, -1, 25, 26, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, 19, -1, -1, -1, -1, -1, 25, 26, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, 9, 10, 11, 12, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 25, 26, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, - 44, -1, -1, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 24, 25, 26, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, - -1, -1, -1, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, - -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, -1, 9, - 10, 11, 12, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 25, 26, -1, -1, -1, - -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, 9, 10, 11, 12, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 25, - 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, -1, 9, 10, 11, - -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 25, 26, -1, -1, -1, -1, -1, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 10, 11, -1, -1, -1, -1, -1, 49, 50, 51, - 52, 53, 54, 55, 56, 25, 58, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 4, 58, -1, - -1, -1, -1, -1, -1, -1, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 4, -1, -1, -1, -1, - -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 4, -1, -1, -1, -1, -1, -1, - -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31 + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + 19, -1, -1, -1, -1, -1, 25, 26, -1, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, -1, 9, 10, 11, 12, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, + 35, 36, 37, 38, 39, -1, -1, -1, 9, 10, + 11, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 25, 26, -1, -1, -1, -1, + -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, + -1, 10, 11, -1, -1, -1, -1, -1, 49, 50, + 51, 52, 53, 54, 55, 56, 25, 58, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, + 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 50, 51, 52, 53, 54, 55, 56, 4, 58, + -1, -1, -1, -1, -1, -1, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 4, -1, -1, -1, + -1, -1, -1, -1, -1, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1373,33 +1360,33 @@ static const yytype_uint8 yystos[] = 72, 75, 76, 60, 58, 41, 4, 74, 87, 87, 74, 62, 1, 62, 82, 74, 1, 74, 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 96, 1, - 4, 7, 81, 1, 66, 74, 1, 4, 60, 62, - 81, 96, 97, 98, 9, 10, 11, 12, 25, 26, - 32, 33, 34, 35, 36, 37, 38, 39, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, - 74, 5, 13, 64, 65, 77, 81, 77, 73, 74, - 78, 72, 59, 74, 74, 88, 89, 83, 60, 63, - 19, 13, 13, 28, 4, 4, 84, 61, 61, 1, - 58, 66, 66, 48, 63, 68, 63, 74, 4, 96, - 63, 63, 68, 48, 74, 74, 74, 74, 74, 74, + 24, 25, 26, 27, 28, 29, 30, 31, 62, 96, + 1, 4, 7, 81, 1, 66, 74, 1, 4, 60, + 62, 81, 96, 97, 98, 9, 10, 11, 12, 25, + 26, 32, 33, 34, 35, 36, 37, 38, 39, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, + 59, 74, 5, 13, 64, 65, 77, 81, 77, 73, + 74, 78, 72, 59, 74, 74, 88, 89, 83, 60, + 63, 19, 13, 13, 28, 4, 4, 84, 61, 61, + 62, 1, 58, 66, 66, 48, 63, 68, 63, 74, + 4, 96, 63, 63, 68, 48, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 58, 62, - 65, 67, 90, 91, 92, 65, 81, 1, 63, 66, - 74, 13, 73, 59, 59, 61, 84, 4, 62, 79, - 80, 74, 1, 74, 91, 91, 1, 74, 47, 42, - 43, 45, 1, 97, 53, 86, 87, 86, 61, 63, - 86, 86, 97, 4, 92, 93, 1, 4, 60, 62, - 81, 94, 95, 96, 40, 47, 74, 58, 66, 74, - 58, 63, 66, 4, 62, 89, 45, 4, 96, 59, - 61, 59, 20, 21, 24, 85, 60, 60, 74, 74, - 86, 47, 63, 86, 48, 66, 63, 63, 74, 4, - 63, 48, 68, 63, 92, 74, 66, 66, 66, 74, - 58, 4, 80, 63, 74, 74, 74, 74, 44, 86, - 86, 92, 92, 92, 61, 63, 92, 95, 92, 58, - 58, 58, 66, 74, 24, 19, 59, 59, 63, 92, - 58, 59, 74, 74, 74, 92, 85, 61, 59, 61, - 74, 61 + 58, 62, 65, 67, 90, 91, 92, 65, 81, 1, + 63, 66, 74, 13, 73, 59, 59, 61, 84, 4, + 62, 79, 80, 74, 1, 74, 91, 91, 1, 74, + 47, 42, 43, 45, 62, 1, 97, 53, 86, 87, + 86, 61, 63, 86, 86, 97, 4, 92, 93, 1, + 4, 60, 62, 81, 94, 95, 96, 40, 47, 74, + 58, 66, 74, 58, 63, 66, 4, 62, 89, 45, + 4, 96, 59, 61, 59, 20, 21, 24, 85, 60, + 60, 74, 74, 4, 86, 47, 63, 86, 48, 66, + 63, 63, 74, 4, 63, 48, 68, 63, 92, 74, + 66, 66, 66, 74, 58, 4, 80, 63, 74, 74, + 74, 74, 44, 86, 86, 92, 92, 92, 61, 63, + 92, 95, 92, 58, 58, 58, 66, 74, 24, 19, + 59, 59, 63, 92, 58, 59, 74, 74, 74, 92, + 85, 61, 59, 61, 74, 61 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1416,12 +1403,13 @@ static const yytype_uint8 yyr1[] = 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 88, 88, 89, 90, 90, - 91, 91, 92, 92, 92, 93, 93, 94, 94, 95, - 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, + 87, 87, 87, 87, 87, 87, 88, 88, 89, 90, + 90, 91, 91, 92, 92, 92, 93, 93, 94, 94, + 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 97, 97, 97, 97, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 + 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1437,13 +1425,14 @@ static const yytype_uint8 yyr2[] = 3, 3, 2, 1, 1, 1, 3, 2, 3, 2, 4, 3, 2, 1, 3, 2, 2, 3, 5, 4, 6, 5, 4, 3, 7, 6, 6, 6, 5, 5, - 1, 1, 1, 3, 3, 2, 3, 2, 2, 1, - 4, 3, 3, 4, 3, 1, 3, 1, 3, 1, - 3, 1, 2, 3, 3, 1, 3, 1, 3, 2, - 4, 3, 3, 3, 5, 3, 1, 1, 1, 1, + 1, 1, 1, 3, 3, 2, 3, 5, 2, 2, + 1, 4, 3, 3, 4, 3, 1, 3, 1, 3, + 1, 3, 1, 2, 3, 3, 1, 3, 1, 3, + 2, 4, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 3, 3, 3, - 3, 3, 1, 4, 2, 2, 1, 1, 5, 3 + 1, 1, 1, 1, 1, 1, 0, 1, 3, 3, + 3, 3, 3, 1, 4, 2, 2, 1, 1, 5, + 3 }; @@ -1459,22 +1448,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -1533,10 +1522,10 @@ do { \ /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ YY_ATTRIBUTE_UNUSED -static int +static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) { - int res = 0; + unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { @@ -1579,15 +1568,15 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); YYUSE (yylocationp); YYUSE (answer); YYUSE (errors); @@ -1597,26 +1586,26 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YY return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - YY_LOCATION_PRINT (yyo, *yylocationp); - YYFPRINTF (yyo, ": "); - yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, answer, errors, locations, lexer_param_ptr); - YYFPRINTF (yyo, ")"); + YY_LOCATION_PRINT (yyoutput, *yylocationp); + YYFPRINTF (yyoutput, ": "); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, answer, errors, locations, lexer_param_ptr); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -1650,7 +1639,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr) { - unsigned long yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -1661,7 +1650,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + &(yyvsp[(yyi + 1) - (yynrhs)]) , &(yylsp[(yyi + 1) - (yynrhs)]) , answer, errors, locations, lexer_param_ptr); YYFPRINTF (stderr, "\n"); } @@ -1765,10 +1754,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -1786,7 +1772,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -1864,10 +1850,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -1879,7 +1865,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break - default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1891,10 +1876,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -1948,192 +1932,193 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yytype) { - case 4: /* IDENT */ + case 4: /* IDENT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1955 "src/parser.c" /* yacc.c:1257 */ +#line 1939 "src/parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1961 "src/parser.c" /* yacc.c:1257 */ +#line 1945 "src/parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1967 "src/parser.c" /* yacc.c:1257 */ +#line 1951 "src/parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1973 "src/parser.c" /* yacc.c:1257 */ +#line 1957 "src/parser.c" /* yacc.c:1257 */ break; case 42: /* QQSTRING_TEXT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1979 "src/parser.c" /* yacc.c:1257 */ +#line 1963 "src/parser.c" /* yacc.c:1257 */ break; case 71: /* Module */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1985 "src/parser.c" /* yacc.c:1257 */ +#line 1969 "src/parser.c" /* yacc.c:1257 */ break; case 72: /* Imports */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1991 "src/parser.c" /* yacc.c:1257 */ +#line 1975 "src/parser.c" /* yacc.c:1257 */ break; case 73: /* FuncDefs */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1997 "src/parser.c" /* yacc.c:1257 */ +#line 1981 "src/parser.c" /* yacc.c:1257 */ break; case 74: /* Exp */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2003 "src/parser.c" /* yacc.c:1257 */ +#line 1987 "src/parser.c" /* yacc.c:1257 */ break; case 75: /* Import */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2009 "src/parser.c" /* yacc.c:1257 */ +#line 1993 "src/parser.c" /* yacc.c:1257 */ break; case 76: /* ImportWhat */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2015 "src/parser.c" /* yacc.c:1257 */ +#line 1999 "src/parser.c" /* yacc.c:1257 */ break; case 77: /* ImportFrom */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2021 "src/parser.c" /* yacc.c:1257 */ +#line 2005 "src/parser.c" /* yacc.c:1257 */ break; case 78: /* FuncDef */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2027 "src/parser.c" /* yacc.c:1257 */ +#line 2011 "src/parser.c" /* yacc.c:1257 */ break; case 79: /* Params */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2033 "src/parser.c" /* yacc.c:1257 */ +#line 2017 "src/parser.c" /* yacc.c:1257 */ break; case 80: /* Param */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2039 "src/parser.c" /* yacc.c:1257 */ +#line 2023 "src/parser.c" /* yacc.c:1257 */ break; case 81: /* String */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2045 "src/parser.c" /* yacc.c:1257 */ +#line 2029 "src/parser.c" /* yacc.c:1257 */ break; case 84: /* QQString */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2051 "src/parser.c" /* yacc.c:1257 */ +#line 2035 "src/parser.c" /* yacc.c:1257 */ break; case 85: /* ElseBody */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2057 "src/parser.c" /* yacc.c:1257 */ +#line 2041 "src/parser.c" /* yacc.c:1257 */ break; case 86: /* ExpD */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2063 "src/parser.c" /* yacc.c:1257 */ +#line 2047 "src/parser.c" /* yacc.c:1257 */ break; case 87: /* Term */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2069 "src/parser.c" /* yacc.c:1257 */ +#line 2053 "src/parser.c" /* yacc.c:1257 */ break; case 88: /* Args */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2075 "src/parser.c" /* yacc.c:1257 */ +#line 2059 "src/parser.c" /* yacc.c:1257 */ break; case 89: /* Arg */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2081 "src/parser.c" /* yacc.c:1257 */ +#line 2065 "src/parser.c" /* yacc.c:1257 */ break; case 90: /* RepPatterns */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2087 "src/parser.c" /* yacc.c:1257 */ +#line 2071 "src/parser.c" /* yacc.c:1257 */ break; case 91: /* Patterns */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2093 "src/parser.c" /* yacc.c:1257 */ +#line 2077 "src/parser.c" /* yacc.c:1257 */ break; case 92: /* Pattern */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2099 "src/parser.c" /* yacc.c:1257 */ +#line 2083 "src/parser.c" /* yacc.c:1257 */ break; case 93: /* ArrayPats */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2105 "src/parser.c" /* yacc.c:1257 */ +#line 2089 "src/parser.c" /* yacc.c:1257 */ break; case 94: /* ObjPats */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2111 "src/parser.c" /* yacc.c:1257 */ +#line 2095 "src/parser.c" /* yacc.c:1257 */ break; case 95: /* ObjPat */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2117 "src/parser.c" /* yacc.c:1257 */ +#line 2101 "src/parser.c" /* yacc.c:1257 */ break; case 96: /* Keyword */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 2123 "src/parser.c" /* yacc.c:1257 */ +#line 2107 "src/parser.c" /* yacc.c:1257 */ break; case 97: /* MkDict */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2129 "src/parser.c" /* yacc.c:1257 */ +#line 2113 "src/parser.c" /* yacc.c:1257 */ break; case 98: /* MkDictPair */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2135 "src/parser.c" /* yacc.c:1257 */ +#line 2119 "src/parser.c" /* yacc.c:1257 */ break; + default: break; } @@ -2239,31 +2224,23 @@ YYLTYPE yylloc = yyloc_default; yylsp[0] = yylloc; goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2281,11 +2258,15 @@ yysetstate: &yyvs1, yysize * sizeof (*yyvsp), &yyls1, yysize * sizeof (*yylsp), &yystacksize); + + yyls = yyls1; yyss = yyss1; yyvs = yyvs1; - yyls = yyls1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2302,23 +2283,23 @@ yysetstate: YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2327,11 +2308,11 @@ yysetstate: goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2404,7 +2385,7 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2420,38 +2401,37 @@ yyreduce: GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - /* Default location. */ + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); - yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: -#line 306 "src/parser.y" /* yacc.c:1667 */ +#line 306 "src/parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2435 "src/parser.c" /* yacc.c:1667 */ +#line 2415 "src/parser.c" /* yacc.c:1646 */ break; case 3: -#line 309 "src/parser.y" /* yacc.c:1667 */ +#line 309 "src/parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2443 "src/parser.c" /* yacc.c:1667 */ +#line 2423 "src/parser.c" /* yacc.c:1646 */ break; case 4: -#line 314 "src/parser.y" /* yacc.c:1667 */ +#line 314 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2451 "src/parser.c" /* yacc.c:1667 */ +#line 2431 "src/parser.c" /* yacc.c:1646 */ break; case 5: -#line 317 "src/parser.y" /* yacc.c:1667 */ +#line 317 "src/parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant"); @@ -2461,374 +2441,374 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2465 "src/parser.c" /* yacc.c:1667 */ +#line 2445 "src/parser.c" /* yacc.c:1646 */ break; case 6: -#line 328 "src/parser.y" /* yacc.c:1667 */ +#line 328 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2473 "src/parser.c" /* yacc.c:1667 */ +#line 2453 "src/parser.c" /* yacc.c:1646 */ break; case 7: -#line 331 "src/parser.y" /* yacc.c:1667 */ +#line 331 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2481 "src/parser.c" /* yacc.c:1667 */ +#line 2461 "src/parser.c" /* yacc.c:1646 */ break; case 8: -#line 336 "src/parser.y" /* yacc.c:1667 */ +#line 336 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2489 "src/parser.c" /* yacc.c:1667 */ +#line 2469 "src/parser.c" /* yacc.c:1646 */ break; case 9: -#line 339 "src/parser.y" /* yacc.c:1667 */ +#line 339 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2497 "src/parser.c" /* yacc.c:1667 */ +#line 2477 "src/parser.c" /* yacc.c:1646 */ break; case 10: -#line 344 "src/parser.y" /* yacc.c:1667 */ +#line 344 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2505 "src/parser.c" /* yacc.c:1667 */ +#line 2485 "src/parser.c" /* yacc.c:1646 */ break; case 11: -#line 348 "src/parser.y" /* yacc.c:1667 */ +#line 348 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2513 "src/parser.c" /* yacc.c:1667 */ +#line 2493 "src/parser.c" /* yacc.c:1646 */ break; case 12: -#line 351 "src/parser.y" /* yacc.c:1667 */ +#line 351 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2521 "src/parser.c" /* yacc.c:1667 */ +#line 2501 "src/parser.c" /* yacc.c:1646 */ break; case 13: -#line 355 "src/parser.y" /* yacc.c:1667 */ +#line 355 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2529 "src/parser.c" /* yacc.c:1667 */ +#line 2509 "src/parser.c" /* yacc.c:1646 */ break; case 14: -#line 359 "src/parser.y" /* yacc.c:1667 */ +#line 359 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2537 "src/parser.c" /* yacc.c:1667 */ +#line 2517 "src/parser.c" /* yacc.c:1646 */ break; case 15: -#line 363 "src/parser.y" /* yacc.c:1667 */ +#line 363 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2545 "src/parser.c" /* yacc.c:1667 */ +#line 2525 "src/parser.c" /* yacc.c:1646 */ break; case 16: -#line 366 "src/parser.y" /* yacc.c:1667 */ +#line 366 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2553 "src/parser.c" /* yacc.c:1667 */ +#line 2533 "src/parser.c" /* yacc.c:1646 */ break; case 17: -#line 369 "src/parser.y" /* yacc.c:1667 */ +#line 369 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2562 "src/parser.c" /* yacc.c:1667 */ +#line 2542 "src/parser.c" /* yacc.c:1646 */ break; case 18: -#line 374 "src/parser.y" /* yacc.c:1667 */ +#line 374 "src/parser.y" /* yacc.c:1646 */ { //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4); (yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk))); } -#line 2571 "src/parser.c" /* yacc.c:1667 */ +#line 2551 "src/parser.c" /* yacc.c:1646 */ break; case 19: -#line 378 "src/parser.y" /* yacc.c:1667 */ +#line 378 "src/parser.y" /* yacc.c:1646 */ { //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK)); (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); } -#line 2580 "src/parser.c" /* yacc.c:1667 */ +#line 2560 "src/parser.c" /* yacc.c:1646 */ break; case 20: -#line 382 "src/parser.y" /* yacc.c:1667 */ +#line 382 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2589 "src/parser.c" /* yacc.c:1667 */ +#line 2569 "src/parser.c" /* yacc.c:1646 */ break; case 21: -#line 387 "src/parser.y" /* yacc.c:1667 */ +#line 387 "src/parser.y" /* yacc.c:1646 */ { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[-2].literal))); (yyval.blk) = gen_location((yyloc), locations, gen_label(jv_string_value(v), (yyvsp[0].blk))); jv_free((yyvsp[-2].literal)); jv_free(v); } -#line 2600 "src/parser.c" /* yacc.c:1667 */ +#line 2580 "src/parser.c" /* yacc.c:1646 */ break; case 22: -#line 394 "src/parser.y" /* yacc.c:1667 */ +#line 394 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2608 "src/parser.c" /* yacc.c:1667 */ +#line 2588 "src/parser.c" /* yacc.c:1646 */ break; case 23: -#line 398 "src/parser.y" /* yacc.c:1667 */ +#line 398 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2616 "src/parser.c" /* yacc.c:1667 */ +#line 2596 "src/parser.c" /* yacc.c:1646 */ break; case 24: -#line 402 "src/parser.y" /* yacc.c:1667 */ +#line 402 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2624 "src/parser.c" /* yacc.c:1667 */ +#line 2604 "src/parser.c" /* yacc.c:1646 */ break; case 25: -#line 406 "src/parser.y" /* yacc.c:1667 */ +#line 406 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2632 "src/parser.c" /* yacc.c:1667 */ +#line 2612 "src/parser.c" /* yacc.c:1646 */ break; case 26: -#line 410 "src/parser.y" /* yacc.c:1667 */ +#line 410 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2640 "src/parser.c" /* yacc.c:1667 */ +#line 2620 "src/parser.c" /* yacc.c:1646 */ break; case 27: -#line 414 "src/parser.y" /* yacc.c:1667 */ +#line 414 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2648 "src/parser.c" /* yacc.c:1667 */ +#line 2628 "src/parser.c" /* yacc.c:1646 */ break; case 28: -#line 418 "src/parser.y" /* yacc.c:1667 */ +#line 418 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2656 "src/parser.c" /* yacc.c:1667 */ +#line 2636 "src/parser.c" /* yacc.c:1646 */ break; case 29: -#line 422 "src/parser.y" /* yacc.c:1667 */ +#line 422 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2664 "src/parser.c" /* yacc.c:1667 */ +#line 2644 "src/parser.c" /* yacc.c:1646 */ break; case 30: -#line 426 "src/parser.y" /* yacc.c:1667 */ +#line 426 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2672 "src/parser.c" /* yacc.c:1667 */ +#line 2652 "src/parser.c" /* yacc.c:1646 */ break; case 31: -#line 430 "src/parser.y" /* yacc.c:1667 */ +#line 430 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2680 "src/parser.c" /* yacc.c:1667 */ +#line 2660 "src/parser.c" /* yacc.c:1646 */ break; case 32: -#line 434 "src/parser.y" /* yacc.c:1667 */ +#line 434 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2688 "src/parser.c" /* yacc.c:1667 */ +#line 2668 "src/parser.c" /* yacc.c:1646 */ break; case 33: -#line 438 "src/parser.y" /* yacc.c:1667 */ +#line 438 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2696 "src/parser.c" /* yacc.c:1667 */ +#line 2676 "src/parser.c" /* yacc.c:1646 */ break; case 34: -#line 442 "src/parser.y" /* yacc.c:1667 */ +#line 442 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2704 "src/parser.c" /* yacc.c:1667 */ +#line 2684 "src/parser.c" /* yacc.c:1646 */ break; case 35: -#line 446 "src/parser.y" /* yacc.c:1667 */ +#line 446 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2712 "src/parser.c" /* yacc.c:1667 */ +#line 2692 "src/parser.c" /* yacc.c:1646 */ break; case 36: -#line 450 "src/parser.y" /* yacc.c:1667 */ +#line 450 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2720 "src/parser.c" /* yacc.c:1667 */ +#line 2700 "src/parser.c" /* yacc.c:1646 */ break; case 37: -#line 454 "src/parser.y" /* yacc.c:1667 */ +#line 454 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2728 "src/parser.c" /* yacc.c:1667 */ +#line 2708 "src/parser.c" /* yacc.c:1646 */ break; case 38: -#line 458 "src/parser.y" /* yacc.c:1667 */ +#line 458 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Division by zero?"); } -#line 2738 "src/parser.c" /* yacc.c:1667 */ +#line 2718 "src/parser.c" /* yacc.c:1646 */ break; case 39: -#line 464 "src/parser.y" /* yacc.c:1667 */ +#line 464 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Remainder by zero?"); } -#line 2748 "src/parser.c" /* yacc.c:1667 */ +#line 2728 "src/parser.c" /* yacc.c:1646 */ break; case 40: -#line 470 "src/parser.y" /* yacc.c:1667 */ +#line 470 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2756 "src/parser.c" /* yacc.c:1667 */ +#line 2736 "src/parser.c" /* yacc.c:1646 */ break; case 41: -#line 474 "src/parser.y" /* yacc.c:1667 */ +#line 474 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2764 "src/parser.c" /* yacc.c:1667 */ +#line 2744 "src/parser.c" /* yacc.c:1646 */ break; case 42: -#line 478 "src/parser.y" /* yacc.c:1667 */ +#line 478 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2772 "src/parser.c" /* yacc.c:1667 */ +#line 2752 "src/parser.c" /* yacc.c:1646 */ break; case 43: -#line 482 "src/parser.y" /* yacc.c:1667 */ +#line 482 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2780 "src/parser.c" /* yacc.c:1667 */ +#line 2760 "src/parser.c" /* yacc.c:1646 */ break; case 44: -#line 486 "src/parser.y" /* yacc.c:1667 */ +#line 486 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2788 "src/parser.c" /* yacc.c:1667 */ +#line 2768 "src/parser.c" /* yacc.c:1646 */ break; case 45: -#line 490 "src/parser.y" /* yacc.c:1667 */ +#line 490 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2796 "src/parser.c" /* yacc.c:1667 */ +#line 2776 "src/parser.c" /* yacc.c:1646 */ break; case 46: -#line 494 "src/parser.y" /* yacc.c:1667 */ +#line 494 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2804 "src/parser.c" /* yacc.c:1667 */ +#line 2784 "src/parser.c" /* yacc.c:1646 */ break; case 47: -#line 498 "src/parser.y" /* yacc.c:1667 */ +#line 498 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2812 "src/parser.c" /* yacc.c:1667 */ +#line 2792 "src/parser.c" /* yacc.c:1646 */ break; case 48: -#line 502 "src/parser.y" /* yacc.c:1667 */ +#line 502 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2820 "src/parser.c" /* yacc.c:1667 */ +#line 2800 "src/parser.c" /* yacc.c:1646 */ break; case 49: -#line 507 "src/parser.y" /* yacc.c:1667 */ +#line 507 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 2828 "src/parser.c" /* yacc.c:1667 */ +#line 2808 "src/parser.c" /* yacc.c:1646 */ break; case 50: -#line 510 "src/parser.y" /* yacc.c:1667 */ +#line 510 "src/parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant"); @@ -2844,11 +2824,11 @@ yyreduce: (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk)); } } -#line 2848 "src/parser.c" /* yacc.c:1667 */ +#line 2828 "src/parser.c" /* yacc.c:1646 */ break; case 51: -#line 527 "src/parser.y" /* yacc.c:1667 */ +#line 527 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-3].blk)); // XXX Make gen_import take only blocks and the int is_data so we @@ -2858,11 +2838,11 @@ yyreduce: jv_free((yyvsp[0].literal)); jv_free(v); } -#line 2862 "src/parser.c" /* yacc.c:1667 */ +#line 2842 "src/parser.c" /* yacc.c:1646 */ break; case 52: -#line 536 "src/parser.y" /* yacc.c:1667 */ +#line 536 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-2].blk)); (yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 0); @@ -2870,22 +2850,22 @@ yyreduce: jv_free((yyvsp[0].literal)); jv_free(v); } -#line 2874 "src/parser.c" /* yacc.c:1667 */ +#line 2854 "src/parser.c" /* yacc.c:1646 */ break; case 53: -#line 543 "src/parser.y" /* yacc.c:1667 */ +#line 543 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[0].blk)); (yyval.blk) = gen_import(jv_string_value(v), NULL, 0); block_free((yyvsp[0].blk)); jv_free(v); } -#line 2885 "src/parser.c" /* yacc.c:1667 */ +#line 2865 "src/parser.c" /* yacc.c:1646 */ break; case 54: -#line 551 "src/parser.y" /* yacc.c:1667 */ +#line 551 "src/parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[0].blk))) { FAIL((yyloc), "Import path must be constant"); @@ -2895,182 +2875,182 @@ yyreduce: (yyval.blk) = (yyvsp[0].blk); } } -#line 2899 "src/parser.c" /* yacc.c:1667 */ +#line 2879 "src/parser.c" /* yacc.c:1646 */ break; case 55: -#line 562 "src/parser.y" /* yacc.c:1667 */ +#line 562 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk)); jv_free((yyvsp[-3].literal)); } -#line 2908 "src/parser.c" /* yacc.c:1667 */ +#line 2888 "src/parser.c" /* yacc.c:1646 */ break; case 56: -#line 567 "src/parser.y" /* yacc.c:1667 */ +#line 567 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-6].literal)); } -#line 2917 "src/parser.c" /* yacc.c:1667 */ +#line 2897 "src/parser.c" /* yacc.c:1646 */ break; case 57: -#line 573 "src/parser.y" /* yacc.c:1667 */ +#line 573 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2925 "src/parser.c" /* yacc.c:1667 */ +#line 2905 "src/parser.c" /* yacc.c:1646 */ break; case 58: -#line 576 "src/parser.y" /* yacc.c:1667 */ +#line 576 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2933 "src/parser.c" /* yacc.c:1667 */ +#line 2913 "src/parser.c" /* yacc.c:1646 */ break; case 59: -#line 581 "src/parser.y" /* yacc.c:1667 */ +#line 581 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2942 "src/parser.c" /* yacc.c:1667 */ +#line 2922 "src/parser.c" /* yacc.c:1646 */ break; case 60: -#line 585 "src/parser.y" /* yacc.c:1667 */ +#line 585 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2951 "src/parser.c" /* yacc.c:1667 */ +#line 2931 "src/parser.c" /* yacc.c:1646 */ break; case 61: -#line 589 "src/parser.y" /* yacc.c:1667 */ +#line 589 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2960 "src/parser.c" /* yacc.c:1667 */ +#line 2940 "src/parser.c" /* yacc.c:1646 */ break; case 62: -#line 596 "src/parser.y" /* yacc.c:1667 */ +#line 596 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("text"); } -#line 2966 "src/parser.c" /* yacc.c:1667 */ +#line 2946 "src/parser.c" /* yacc.c:1646 */ break; case 63: -#line 596 "src/parser.y" /* yacc.c:1667 */ +#line 596 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2975 "src/parser.c" /* yacc.c:1667 */ +#line 2955 "src/parser.c" /* yacc.c:1646 */ break; case 64: -#line 600 "src/parser.y" /* yacc.c:1667 */ +#line 600 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = (yyvsp[-1].literal); } -#line 2981 "src/parser.c" /* yacc.c:1667 */ +#line 2961 "src/parser.c" /* yacc.c:1646 */ break; case 65: -#line 600 "src/parser.y" /* yacc.c:1667 */ +#line 600 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2990 "src/parser.c" /* yacc.c:1667 */ +#line 2970 "src/parser.c" /* yacc.c:1646 */ break; case 66: -#line 607 "src/parser.y" /* yacc.c:1667 */ +#line 607 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_string("")); } -#line 2998 "src/parser.c" /* yacc.c:1667 */ +#line 2978 "src/parser.c" /* yacc.c:1646 */ break; case 67: -#line 610 "src/parser.y" /* yacc.c:1667 */ +#line 610 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 3006 "src/parser.c" /* yacc.c:1667 */ +#line 2986 "src/parser.c" /* yacc.c:1646 */ break; case 68: -#line 613 "src/parser.y" /* yacc.c:1667 */ +#line 613 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 3014 "src/parser.c" /* yacc.c:1667 */ +#line 2994 "src/parser.c" /* yacc.c:1646 */ break; case 69: -#line 619 "src/parser.y" /* yacc.c:1667 */ +#line 619 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 3022 "src/parser.c" /* yacc.c:1667 */ +#line 3002 "src/parser.c" /* yacc.c:1646 */ break; case 70: -#line 622 "src/parser.y" /* yacc.c:1667 */ +#line 622 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3030 "src/parser.c" /* yacc.c:1667 */ +#line 3010 "src/parser.c" /* yacc.c:1646 */ break; case 71: -#line 627 "src/parser.y" /* yacc.c:1667 */ +#line 627 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3038 "src/parser.c" /* yacc.c:1667 */ +#line 3018 "src/parser.c" /* yacc.c:1646 */ break; case 72: -#line 630 "src/parser.y" /* yacc.c:1667 */ +#line 630 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 3046 "src/parser.c" /* yacc.c:1667 */ +#line 3026 "src/parser.c" /* yacc.c:1646 */ break; case 73: -#line 633 "src/parser.y" /* yacc.c:1667 */ +#line 633 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3054 "src/parser.c" /* yacc.c:1667 */ +#line 3034 "src/parser.c" /* yacc.c:1646 */ break; case 74: -#line 639 "src/parser.y" /* yacc.c:1667 */ +#line 639 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3062 "src/parser.c" /* yacc.c:1667 */ +#line 3042 "src/parser.c" /* yacc.c:1646 */ break; case 75: -#line 642 "src/parser.y" /* yacc.c:1667 */ +#line 642 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 3070 "src/parser.c" /* yacc.c:1667 */ +#line 3050 "src/parser.c" /* yacc.c:1646 */ break; case 76: -#line 645 "src/parser.y" /* yacc.c:1667 */ +#line 645 "src/parser.y" /* yacc.c:1646 */ { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); // impossible symbol (yyval.blk) = gen_location((yyloc), locations, @@ -3079,247 +3059,247 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 3083 "src/parser.c" /* yacc.c:1667 */ +#line 3063 "src/parser.c" /* yacc.c:1646 */ break; case 77: -#line 653 "src/parser.y" /* yacc.c:1667 */ +#line 653 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 3092 "src/parser.c" /* yacc.c:1667 */ +#line 3072 "src/parser.c" /* yacc.c:1646 */ break; case 78: -#line 657 "src/parser.y" /* yacc.c:1667 */ +#line 657 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 3100 "src/parser.c" /* yacc.c:1667 */ +#line 3080 "src/parser.c" /* yacc.c:1646 */ break; case 79: -#line 660 "src/parser.y" /* yacc.c:1667 */ +#line 660 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 3108 "src/parser.c" /* yacc.c:1667 */ +#line 3088 "src/parser.c" /* yacc.c:1646 */ break; case 80: -#line 663 "src/parser.y" /* yacc.c:1667 */ +#line 663 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3116 "src/parser.c" /* yacc.c:1667 */ +#line 3096 "src/parser.c" /* yacc.c:1646 */ break; case 81: -#line 666 "src/parser.y" /* yacc.c:1667 */ +#line 666 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 3124 "src/parser.c" /* yacc.c:1667 */ +#line 3104 "src/parser.c" /* yacc.c:1646 */ break; case 82: -#line 669 "src/parser.y" /* yacc.c:1667 */ +#line 669 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 3132 "src/parser.c" /* yacc.c:1667 */ +#line 3112 "src/parser.c" /* yacc.c:1646 */ break; case 83: -#line 672 "src/parser.y" /* yacc.c:1667 */ +#line 672 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 3140 "src/parser.c" /* yacc.c:1667 */ +#line 3120 "src/parser.c" /* yacc.c:1646 */ break; case 84: -#line 675 "src/parser.y" /* yacc.c:1667 */ +#line 675 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3148 "src/parser.c" /* yacc.c:1667 */ +#line 3128 "src/parser.c" /* yacc.c:1646 */ break; case 85: -#line 678 "src/parser.y" /* yacc.c:1667 */ +#line 678 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 3156 "src/parser.c" /* yacc.c:1667 */ +#line 3136 "src/parser.c" /* yacc.c:1646 */ break; case 86: -#line 681 "src/parser.y" /* yacc.c:1667 */ +#line 681 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3165 "src/parser.c" /* yacc.c:1667 */ +#line 3145 "src/parser.c" /* yacc.c:1646 */ break; case 87: -#line 685 "src/parser.y" /* yacc.c:1667 */ +#line 685 "src/parser.y" /* yacc.c:1646 */ { jv_free((yyvsp[-1].literal)); FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3175 "src/parser.c" /* yacc.c:1667 */ +#line 3155 "src/parser.c" /* yacc.c:1646 */ break; case 88: -#line 691 "src/parser.y" /* yacc.c:1667 */ +#line 691 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3183 "src/parser.c" /* yacc.c:1667 */ +#line 3163 "src/parser.c" /* yacc.c:1646 */ break; case 89: -#line 694 "src/parser.y" /* yacc.c:1667 */ +#line 694 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3191 "src/parser.c" /* yacc.c:1667 */ +#line 3171 "src/parser.c" /* yacc.c:1646 */ break; case 90: -#line 697 "src/parser.y" /* yacc.c:1667 */ +#line 697 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); } -#line 3199 "src/parser.c" /* yacc.c:1667 */ +#line 3179 "src/parser.c" /* yacc.c:1646 */ break; case 91: -#line 700 "src/parser.y" /* yacc.c:1667 */ +#line 700 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); } -#line 3207 "src/parser.c" /* yacc.c:1667 */ +#line 3187 "src/parser.c" /* yacc.c:1646 */ break; case 92: -#line 703 "src/parser.y" /* yacc.c:1667 */ +#line 703 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3215 "src/parser.c" /* yacc.c:1667 */ +#line 3195 "src/parser.c" /* yacc.c:1646 */ break; case 93: -#line 706 "src/parser.y" /* yacc.c:1667 */ +#line 706 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3223 "src/parser.c" /* yacc.c:1667 */ +#line 3203 "src/parser.c" /* yacc.c:1646 */ break; case 94: -#line 709 "src/parser.y" /* yacc.c:1667 */ +#line 709 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3231 "src/parser.c" /* yacc.c:1667 */ +#line 3211 "src/parser.c" /* yacc.c:1646 */ break; case 95: -#line 712 "src/parser.y" /* yacc.c:1667 */ +#line 712 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3239 "src/parser.c" /* yacc.c:1667 */ +#line 3219 "src/parser.c" /* yacc.c:1646 */ break; case 96: -#line 715 "src/parser.y" /* yacc.c:1667 */ +#line 715 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3247 "src/parser.c" /* yacc.c:1667 */ +#line 3227 "src/parser.c" /* yacc.c:1646 */ break; case 97: -#line 718 "src/parser.y" /* yacc.c:1667 */ +#line 718 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3255 "src/parser.c" /* yacc.c:1667 */ +#line 3235 "src/parser.c" /* yacc.c:1646 */ break; case 98: -#line 721 "src/parser.y" /* yacc.c:1667 */ +#line 721 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3263 "src/parser.c" /* yacc.c:1667 */ +#line 3243 "src/parser.c" /* yacc.c:1646 */ break; case 99: -#line 724 "src/parser.y" /* yacc.c:1667 */ +#line 724 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3271 "src/parser.c" /* yacc.c:1667 */ +#line 3251 "src/parser.c" /* yacc.c:1646 */ break; case 100: -#line 727 "src/parser.y" /* yacc.c:1667 */ +#line 727 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3279 "src/parser.c" /* yacc.c:1667 */ +#line 3259 "src/parser.c" /* yacc.c:1646 */ break; case 101: -#line 730 "src/parser.y" /* yacc.c:1667 */ +#line 730 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3287 "src/parser.c" /* yacc.c:1667 */ +#line 3267 "src/parser.c" /* yacc.c:1646 */ break; case 102: -#line 733 "src/parser.y" /* yacc.c:1667 */ +#line 733 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3295 "src/parser.c" /* yacc.c:1667 */ +#line 3275 "src/parser.c" /* yacc.c:1646 */ break; case 103: -#line 736 "src/parser.y" /* yacc.c:1667 */ +#line 736 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3303 "src/parser.c" /* yacc.c:1667 */ +#line 3283 "src/parser.c" /* yacc.c:1646 */ break; case 104: -#line 739 "src/parser.y" /* yacc.c:1667 */ +#line 739 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_collect((yyvsp[-1].blk)); } -#line 3311 "src/parser.c" /* yacc.c:1667 */ +#line 3291 "src/parser.c" /* yacc.c:1646 */ break; case 105: -#line 742 "src/parser.y" /* yacc.c:1667 */ +#line 742 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_array()); } -#line 3319 "src/parser.c" /* yacc.c:1667 */ +#line 3299 "src/parser.c" /* yacc.c:1646 */ break; case 106: -#line 745 "src/parser.y" /* yacc.c:1667 */ +#line 745 "src/parser.y" /* yacc.c:1646 */ { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3327,20 +3307,29 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3331 "src/parser.c" /* yacc.c:1667 */ +#line 3311 "src/parser.c" /* yacc.c:1646 */ break; case 107: -#line 752 "src/parser.y" /* yacc.c:1667 */ +#line 767 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))); + (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADVN, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3340 "src/parser.c" /* yacc.c:1667 */ +#line 3320 "src/parser.c" /* yacc.c:1646 */ break; case 108: -#line 756 "src/parser.y" /* yacc.c:1667 */ +#line 771 "src/parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))); + jv_free((yyvsp[0].literal)); +} +#line 3329 "src/parser.c" /* yacc.c:1646 */ + break; + + case 109: +#line 775 "src/parser.y" /* yacc.c:1646 */ { if (strcmp(jv_string_value((yyvsp[0].literal)), "__loc__") == 0) { (yyval.blk) = gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname), @@ -3350,11 +3339,11 @@ yyreduce: } jv_free((yyvsp[0].literal)); } -#line 3354 "src/parser.c" /* yacc.c:1667 */ +#line 3343 "src/parser.c" /* yacc.c:1646 */ break; - case 109: -#line 765 "src/parser.y" /* yacc.c:1667 */ + case 110: +#line 784 "src/parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3367,198 +3356,198 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3371 "src/parser.c" /* yacc.c:1667 */ +#line 3360 "src/parser.c" /* yacc.c:1646 */ break; - case 110: -#line 777 "src/parser.y" /* yacc.c:1667 */ + case 111: +#line 796 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call(jv_string_value((yyvsp[-3].literal)), (yyvsp[-1].blk)); (yyval.blk) = gen_location((yylsp[-3]), locations, (yyval.blk)); jv_free((yyvsp[-3].literal)); } -#line 3381 "src/parser.c" /* yacc.c:1667 */ +#line 3370 "src/parser.c" /* yacc.c:1646 */ break; - case 111: -#line 782 "src/parser.y" /* yacc.c:1667 */ + case 112: +#line 801 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3387 "src/parser.c" /* yacc.c:1667 */ +#line 3376 "src/parser.c" /* yacc.c:1646 */ break; - case 112: -#line 783 "src/parser.y" /* yacc.c:1667 */ + case 113: +#line 802 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3393 "src/parser.c" /* yacc.c:1667 */ +#line 3382 "src/parser.c" /* yacc.c:1646 */ break; - case 113: -#line 784 "src/parser.y" /* yacc.c:1667 */ + case 114: +#line 803 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-3].blk); } -#line 3399 "src/parser.c" /* yacc.c:1667 */ +#line 3388 "src/parser.c" /* yacc.c:1646 */ break; - case 114: -#line 785 "src/parser.y" /* yacc.c:1667 */ + case 115: +#line 804 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3405 "src/parser.c" /* yacc.c:1667 */ +#line 3394 "src/parser.c" /* yacc.c:1646 */ break; - case 115: -#line 788 "src/parser.y" /* yacc.c:1667 */ + case 116: +#line 807 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3413 "src/parser.c" /* yacc.c:1667 */ +#line 3402 "src/parser.c" /* yacc.c:1646 */ break; - case 116: -#line 791 "src/parser.y" /* yacc.c:1667 */ + case 117: +#line 810 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3421 "src/parser.c" /* yacc.c:1667 */ +#line 3410 "src/parser.c" /* yacc.c:1646 */ break; - case 117: -#line 796 "src/parser.y" /* yacc.c:1667 */ + case 118: +#line 815 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3429 "src/parser.c" /* yacc.c:1667 */ +#line 3418 "src/parser.c" /* yacc.c:1646 */ break; - case 118: -#line 801 "src/parser.y" /* yacc.c:1667 */ + case 119: +#line 820 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk))); } -#line 3437 "src/parser.c" /* yacc.c:1667 */ +#line 3426 "src/parser.c" /* yacc.c:1646 */ break; - case 119: -#line 804 "src/parser.y" /* yacc.c:1667 */ + case 120: +#line 823 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); } -#line 3445 "src/parser.c" /* yacc.c:1667 */ +#line 3434 "src/parser.c" /* yacc.c:1646 */ break; - case 120: -#line 809 "src/parser.y" /* yacc.c:1667 */ + case 121: +#line 828 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3453 "src/parser.c" /* yacc.c:1667 */ +#line 3442 "src/parser.c" /* yacc.c:1646 */ break; - case 121: -#line 812 "src/parser.y" /* yacc.c:1667 */ + case 122: +#line 831 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3461 "src/parser.c" /* yacc.c:1667 */ +#line 3450 "src/parser.c" /* yacc.c:1646 */ break; - case 122: -#line 817 "src/parser.y" /* yacc.c:1667 */ + case 123: +#line 836 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3470 "src/parser.c" /* yacc.c:1667 */ +#line 3459 "src/parser.c" /* yacc.c:1646 */ break; - case 123: -#line 821 "src/parser.y" /* yacc.c:1667 */ + case 124: +#line 840 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3478 "src/parser.c" /* yacc.c:1667 */ +#line 3467 "src/parser.c" /* yacc.c:1646 */ break; - case 124: -#line 824 "src/parser.y" /* yacc.c:1667 */ + case 125: +#line 843 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3486 "src/parser.c" /* yacc.c:1667 */ +#line 3475 "src/parser.c" /* yacc.c:1646 */ break; - case 125: -#line 829 "src/parser.y" /* yacc.c:1667 */ + case 126: +#line 848 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3494 "src/parser.c" /* yacc.c:1667 */ +#line 3483 "src/parser.c" /* yacc.c:1646 */ break; - case 126: -#line 832 "src/parser.y" /* yacc.c:1667 */ + case 127: +#line 851 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3502 "src/parser.c" /* yacc.c:1667 */ +#line 3491 "src/parser.c" /* yacc.c:1646 */ break; - case 127: -#line 837 "src/parser.y" /* yacc.c:1667 */ + case 128: +#line 856 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3510 "src/parser.c" /* yacc.c:1667 */ +#line 3499 "src/parser.c" /* yacc.c:1646 */ break; - case 128: -#line 840 "src/parser.y" /* yacc.c:1667 */ + case 129: +#line 859 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3518 "src/parser.c" /* yacc.c:1667 */ +#line 3507 "src/parser.c" /* yacc.c:1646 */ break; - case 129: -#line 845 "src/parser.y" /* yacc.c:1667 */ + case 130: +#line 864 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); } -#line 3526 "src/parser.c" /* yacc.c:1667 */ +#line 3515 "src/parser.c" /* yacc.c:1646 */ break; - case 130: -#line 848 "src/parser.y" /* yacc.c:1667 */ + case 131: +#line 867 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), BLOCK(gen_op_simple(DUP), gen_op_unbound(STOREV, jv_string_value((yyvsp[-2].literal))), (yyvsp[0].blk))); } -#line 3534 "src/parser.c" /* yacc.c:1667 */ +#line 3523 "src/parser.c" /* yacc.c:1646 */ break; - case 131: -#line 851 "src/parser.y" /* yacc.c:1667 */ + case 132: +#line 870 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3542 "src/parser.c" /* yacc.c:1667 */ +#line 3531 "src/parser.c" /* yacc.c:1646 */ break; - case 132: -#line 854 "src/parser.y" /* yacc.c:1667 */ + case 133: +#line 873 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3550 "src/parser.c" /* yacc.c:1667 */ +#line 3539 "src/parser.c" /* yacc.c:1646 */ break; - case 133: -#line 857 "src/parser.y" /* yacc.c:1667 */ + case 134: +#line 876 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3558 "src/parser.c" /* yacc.c:1667 */ +#line 3547 "src/parser.c" /* yacc.c:1646 */ break; - case 134: -#line 860 "src/parser.y" /* yacc.c:1667 */ + case 135: +#line 879 "src/parser.y" /* yacc.c:1646 */ { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3567,276 +3556,276 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3571 "src/parser.c" /* yacc.c:1667 */ +#line 3560 "src/parser.c" /* yacc.c:1646 */ break; - case 135: -#line 868 "src/parser.y" /* yacc.c:1667 */ + case 136: +#line 887 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3580 "src/parser.c" /* yacc.c:1667 */ +#line 3569 "src/parser.c" /* yacc.c:1646 */ break; - case 136: -#line 874 "src/parser.y" /* yacc.c:1667 */ + case 137: +#line 893 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("as"); } -#line 3588 "src/parser.c" /* yacc.c:1667 */ +#line 3577 "src/parser.c" /* yacc.c:1646 */ break; - case 137: -#line 877 "src/parser.y" /* yacc.c:1667 */ + case 138: +#line 896 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("def"); } -#line 3596 "src/parser.c" /* yacc.c:1667 */ +#line 3585 "src/parser.c" /* yacc.c:1646 */ break; - case 138: -#line 880 "src/parser.y" /* yacc.c:1667 */ + case 139: +#line 899 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("module"); } -#line 3604 "src/parser.c" /* yacc.c:1667 */ +#line 3593 "src/parser.c" /* yacc.c:1646 */ break; - case 139: -#line 883 "src/parser.y" /* yacc.c:1667 */ + case 140: +#line 902 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("import"); } -#line 3612 "src/parser.c" /* yacc.c:1667 */ +#line 3601 "src/parser.c" /* yacc.c:1646 */ break; - case 140: -#line 886 "src/parser.y" /* yacc.c:1667 */ + case 141: +#line 905 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("include"); } -#line 3620 "src/parser.c" /* yacc.c:1667 */ +#line 3609 "src/parser.c" /* yacc.c:1646 */ break; - case 141: -#line 889 "src/parser.y" /* yacc.c:1667 */ + case 142: +#line 908 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("if"); } -#line 3628 "src/parser.c" /* yacc.c:1667 */ +#line 3617 "src/parser.c" /* yacc.c:1646 */ break; - case 142: -#line 892 "src/parser.y" /* yacc.c:1667 */ + case 143: +#line 911 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("then"); } -#line 3636 "src/parser.c" /* yacc.c:1667 */ +#line 3625 "src/parser.c" /* yacc.c:1646 */ break; - case 143: -#line 895 "src/parser.y" /* yacc.c:1667 */ + case 144: +#line 914 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("else"); } -#line 3644 "src/parser.c" /* yacc.c:1667 */ +#line 3633 "src/parser.c" /* yacc.c:1646 */ break; - case 144: -#line 898 "src/parser.y" /* yacc.c:1667 */ + case 145: +#line 917 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("elif"); } -#line 3652 "src/parser.c" /* yacc.c:1667 */ +#line 3641 "src/parser.c" /* yacc.c:1646 */ break; - case 145: -#line 901 "src/parser.y" /* yacc.c:1667 */ + case 146: +#line 920 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("reduce"); } -#line 3660 "src/parser.c" /* yacc.c:1667 */ +#line 3649 "src/parser.c" /* yacc.c:1646 */ break; - case 146: -#line 904 "src/parser.y" /* yacc.c:1667 */ + case 147: +#line 923 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("foreach"); } -#line 3668 "src/parser.c" /* yacc.c:1667 */ +#line 3657 "src/parser.c" /* yacc.c:1646 */ break; - case 147: -#line 907 "src/parser.y" /* yacc.c:1667 */ + case 148: +#line 926 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("end"); } -#line 3676 "src/parser.c" /* yacc.c:1667 */ +#line 3665 "src/parser.c" /* yacc.c:1646 */ break; - case 148: -#line 910 "src/parser.y" /* yacc.c:1667 */ + case 149: +#line 929 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("and"); } -#line 3684 "src/parser.c" /* yacc.c:1667 */ +#line 3673 "src/parser.c" /* yacc.c:1646 */ break; - case 149: -#line 913 "src/parser.y" /* yacc.c:1667 */ + case 150: +#line 932 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("or"); } -#line 3692 "src/parser.c" /* yacc.c:1667 */ +#line 3681 "src/parser.c" /* yacc.c:1646 */ break; - case 150: -#line 916 "src/parser.y" /* yacc.c:1667 */ + case 151: +#line 935 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("try"); } -#line 3700 "src/parser.c" /* yacc.c:1667 */ +#line 3689 "src/parser.c" /* yacc.c:1646 */ break; - case 151: -#line 919 "src/parser.y" /* yacc.c:1667 */ + case 152: +#line 938 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("catch"); } -#line 3708 "src/parser.c" /* yacc.c:1667 */ +#line 3697 "src/parser.c" /* yacc.c:1646 */ break; - case 152: -#line 922 "src/parser.y" /* yacc.c:1667 */ + case 153: +#line 941 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("label"); } -#line 3716 "src/parser.c" /* yacc.c:1667 */ +#line 3705 "src/parser.c" /* yacc.c:1646 */ break; - case 153: -#line 925 "src/parser.y" /* yacc.c:1667 */ + case 154: +#line 944 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("break"); } -#line 3724 "src/parser.c" /* yacc.c:1667 */ +#line 3713 "src/parser.c" /* yacc.c:1646 */ break; - case 154: -#line 928 "src/parser.y" /* yacc.c:1667 */ + case 155: +#line 947 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("__loc__"); } -#line 3732 "src/parser.c" /* yacc.c:1667 */ +#line 3721 "src/parser.c" /* yacc.c:1646 */ break; - case 155: -#line 933 "src/parser.y" /* yacc.c:1667 */ + case 156: +#line 952 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk)=gen_noop(); } -#line 3740 "src/parser.c" /* yacc.c:1667 */ +#line 3729 "src/parser.c" /* yacc.c:1646 */ break; - case 156: -#line 936 "src/parser.y" /* yacc.c:1667 */ + case 157: +#line 955 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3746 "src/parser.c" /* yacc.c:1667 */ +#line 3735 "src/parser.c" /* yacc.c:1646 */ break; - case 157: -#line 937 "src/parser.y" /* yacc.c:1667 */ + case 158: +#line 956 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3752 "src/parser.c" /* yacc.c:1667 */ +#line 3741 "src/parser.c" /* yacc.c:1646 */ break; - case 158: -#line 938 "src/parser.y" /* yacc.c:1667 */ + case 159: +#line 957 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3758 "src/parser.c" /* yacc.c:1667 */ +#line 3747 "src/parser.c" /* yacc.c:1646 */ break; - case 159: -#line 941 "src/parser.y" /* yacc.c:1667 */ + case 160: +#line 960 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3766 "src/parser.c" /* yacc.c:1667 */ +#line 3755 "src/parser.c" /* yacc.c:1646 */ break; - case 160: -#line 944 "src/parser.y" /* yacc.c:1667 */ + case 161: +#line 963 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3774 "src/parser.c" /* yacc.c:1667 */ +#line 3763 "src/parser.c" /* yacc.c:1646 */ break; - case 161: -#line 947 "src/parser.y" /* yacc.c:1667 */ + case 162: +#line 966 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3782 "src/parser.c" /* yacc.c:1667 */ +#line 3771 "src/parser.c" /* yacc.c:1646 */ break; - case 162: -#line 950 "src/parser.y" /* yacc.c:1667 */ + case 163: +#line 969 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[0].blk), BLOCK(gen_op_simple(POP), gen_op_simple(DUP2), gen_op_simple(DUP2), gen_op_simple(INDEX))); } -#line 3791 "src/parser.c" /* yacc.c:1667 */ +#line 3780 "src/parser.c" /* yacc.c:1646 */ break; - case 163: -#line 954 "src/parser.y" /* yacc.c:1667 */ + case 164: +#line 973 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[-2].literal)))), (yyvsp[0].blk)); } -#line 3800 "src/parser.c" /* yacc.c:1667 */ +#line 3789 "src/parser.c" /* yacc.c:1646 */ break; - case 164: -#line 958 "src/parser.y" /* yacc.c:1667 */ + case 165: +#line 977 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 3809 "src/parser.c" /* yacc.c:1667 */ +#line 3798 "src/parser.c" /* yacc.c:1646 */ break; - case 165: -#line 962 "src/parser.y" /* yacc.c:1667 */ + case 166: +#line 981 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 3818 "src/parser.c" /* yacc.c:1667 */ +#line 3807 "src/parser.c" /* yacc.c:1646 */ break; - case 166: -#line 966 "src/parser.y" /* yacc.c:1667 */ + case 167: +#line 985 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3827 "src/parser.c" /* yacc.c:1667 */ +#line 3816 "src/parser.c" /* yacc.c:1646 */ break; - case 167: -#line 970 "src/parser.y" /* yacc.c:1667 */ + case 168: +#line 989 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3836 "src/parser.c" /* yacc.c:1667 */ +#line 3825 "src/parser.c" /* yacc.c:1646 */ break; - case 168: -#line 974 "src/parser.y" /* yacc.c:1667 */ + case 169: +#line 993 "src/parser.y" /* yacc.c:1646 */ { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3845,20 +3834,20 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3849 "src/parser.c" /* yacc.c:1667 */ +#line 3838 "src/parser.c" /* yacc.c:1646 */ break; - case 169: -#line 982 "src/parser.y" /* yacc.c:1667 */ + case 170: +#line 1001 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3858 "src/parser.c" /* yacc.c:1667 */ +#line 3847 "src/parser.c" /* yacc.c:1646 */ break; -#line 3862 "src/parser.c" /* yacc.c:1667 */ +#line 3851 "src/parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3884,13 +3873,14 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -3973,11 +3963,14 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + yyerror_range[1] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -4043,7 +4036,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -4051,7 +4043,6 @@ yyabortlab: yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -4062,10 +4053,6 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -4095,7 +4082,7 @@ yyreturn: #endif return yyresult; } -#line 986 "src/parser.y" /* yacc.c:1918 */ +#line 1005 "src/parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/src/parser.h b/src/parser.h index 4d14e95..b15c53a 100644 --- a/src/parser.h +++ b/src/parser.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_SRC_PARSER_H_INCLUDED # define YY_YY_SRC_PARSER_H_INCLUDED /* Debug traces. */ @@ -44,7 +40,7 @@ extern int yydebug; #endif /* "%code requires" blocks. */ -#line 11 "src/parser.y" /* yacc.c:1927 */ +#line 11 "src/parser.y" /* yacc.c:1909 */ #include "locfile.h" struct lexer_param; @@ -61,7 +57,7 @@ struct lexer_param; } \ } while (0) -#line 65 "src/parser.h" /* yacc.c:1927 */ +#line 61 "src/parser.h" /* yacc.c:1909 */ /* Token type. */ #ifndef YYTOKENTYPE @@ -167,12 +163,12 @@ struct lexer_param; union YYSTYPE { -#line 31 "src/parser.y" /* yacc.c:1927 */ +#line 31 "src/parser.y" /* yacc.c:1909 */ jv literal; block blk; -#line 176 "src/parser.h" /* yacc.c:1927 */ +#line 172 "src/parser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/src/parser.y b/src/parser.y index e223ada..f04853f 100644 --- a/src/parser.y +++ b/src/parser.y @@ -749,6 +749,25 @@ FORMAT { else $$ = BLOCK(gen_subexp(gen_const(jv_object())), $2, gen_op_simple(POP)); } | +/* + * This `$$$$varname` hack is strictly private to jq builtins. DO NOT USE!! + * + * This is used in `_modify`, in src/builtin.jq, to avoid holding on to a + * reference to `.`. + * + * We could just have the compiler emit bytecode for `_modify` so it can use + * LOADVN w/o needing jq syntax for LOADVN. + * + * This syntax, `$$$$varname`, violates referential transparency: it has + * side-effects that are surprising. + * + * DO NOT USE!! I will break your jq code if you do use this outside + * src/builtin.jq. + */ +'$' '$' '$' '$' IDENT { + $$ = gen_location(@$, locations, gen_op_unbound(LOADVN, jv_string_value($5))); + jv_free($5); +} | '$' IDENT { $$ = gen_location(@$, locations, gen_op_unbound(LOADV, jv_string_value($2))); jv_free($2); |